void PET_CHECKFreePetIsIt( int petindex) { int petputtime, defmaxtime; defmaxtime = getPetdeletetime(); petputtime = CHAR_getInt( petindex, CHAR_PUTPETTIME); if( NowTime.tv_sec < ( petputtime + getPetdeletetime() ) ) return; #ifdef _PET_LOSTPET // CHAR_CharSaveLostPet( petindex, 0); #endif LogPet( "系统", "Watchfunc", CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "timeout_lost(系统清除-地上自由宠)", CHAR_getInt( petindex, CHAR_FLOOR), CHAR_getInt( petindex,CHAR_X ), CHAR_getInt( petindex,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); CHAR_CharaDelete(petindex); }
int PET_CleanPetdeletetime( int objmeindex) { int pindex; if( OBJECT_getType(objmeindex) != OBJTYPE_CHARA ) return 0; pindex = OBJECT_getIndex( objmeindex); if( CHAR_getInt( pindex, CHAR_WHICHTYPE) != CHAR_TYPEPET) return 0; if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) { }else if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){ }else { #ifdef _PET_LOSTPET // CHAR_CharSaveLostPet( pindex, 0); #endif LogPet( "系统", "Watchfunc", CHAR_getChar( pindex, CHAR_NAME), CHAR_getInt( pindex, CHAR_LV), "timeout_lost(系统清除-地上自由宠)", CHAR_getInt( pindex, CHAR_FLOOR), CHAR_getInt( pindex,CHAR_X ), CHAR_getInt( pindex,CHAR_Y ), CHAR_getChar( pindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); CHAR_CharaDelete(pindex); return 1; } return 0; }
BOOL ADDRESSBOOK_AutoaddAddressBook( int meindex, int toindex) { int hisblank; int myblank; int myaddindex, toaddindex; char *cdkey; myblank = ADDRESSBOOK_findBlankEntry( meindex ); hisblank = ADDRESSBOOK_findBlankEntry( toindex ); if( hisblank < 0 || myblank < 0) { //"¦W¤ù§X¤wº¡¡C" return FALSE; } cdkey = CHAR_getChar( toindex, CHAR_CDKEY); myaddindex = ADDRESSBOOK_getIndexInAddressbook( meindex, cdkey, CHAR_getChar( toindex, CHAR_NAME)); cdkey = CHAR_getChar( meindex, CHAR_CDKEY); toaddindex = ADDRESSBOOK_getIndexInAddressbook( toindex, cdkey, CHAR_getChar(meindex, CHAR_NAME)); if( myaddindex < 0 ){ ADDRESSBOOK_entry meae; ADDRESSBOOK_entry hisentry; if( ADDRESSBOOK_makeEntryFromCharaindex(toindex,&hisentry) == FALSE || ADDRESSBOOK_makeEntryFromCharaindex(meindex,&meae) == FALSE ){ return FALSE; } CHAR_setAddressbookEntry( meindex, myblank,&hisentry ); CHAR_setAddressbookEntry( toindex, hisblank,&meae ); ADDRESSBOOK_sendAddressbookTableOne( meindex, myblank); ADDRESSBOOK_sendAddressbookTableOne( toindex , hisblank); } return TRUE; }
void mproto_Que_Send( int fd, int uid, int index, char* question) { char buffer[65500], wheres[256]; int checksum=0, floor, x, y; char *cdkey = CHAR_getChar( index, CHAR_CDKEY); char *charname = CHAR_getChar( index, CHAR_NAME); if( strlen( question) <= 0 ){ CHAR_talkToCli( index, -1, "字串长度不足!", CHAR_COLORYELLOW); return; } memset( wheres, 0, sizeof( wheres)); floor = CHAR_getInt( index, CHAR_FLOOR); x = CHAR_getInt( index, CHAR_X); y = CHAR_getInt( index, CHAR_Y); sprintf( wheres, "%d,%d,%d", floor, x, y); memset( buffer, 0, sizeof( buffer)); strcpy(PersonalKey, MSPERSIONALKEY); checksum += util_mkint(buffer, uid); checksum += util_mkstring(buffer, cdkey); checksum += util_mkstring(buffer, charname); checksum += util_mkstring(buffer, question); checksum += util_mkstring(buffer, wheres); util_mkint(buffer, checksum); util_SendMesg(fd, MPROTO_QUE_SEND, buffer); }
BOOL NPC_PairRegister( int toindex) { char *cdKey = CHAR_getChar( toindex, CHAR_CDKEY); char *name = CHAR_getChar( toindex, CHAR_NAME); int space=-1,i; int Psex = CHAR_getSexInt( CHAR_getInt( toindex, CHAR_BASEBASEIMAGENUMBER) ); Psex = (Psex==1)?0:1; for( i=0; i<MAXPAIRNUMS; i++) { if( PairList[Psex][i].use <= 0 ){ if( space == -1 ) space = i; continue; } if( !strcmp( cdKey, PairList[Psex][i].cdKey) ) break; } if( i>=MAXPAIRNUMS){ if( space != -1 && CHAR_getWorkInt( toindex, CHAR_MYPAIRCODE) > 0 ){ PairList[Psex][space].use = 1; PairList[Psex][space].forindex = -1; sprintf( PairList[Psex][space].cdKey, "%s", cdKey); sprintf( PairList[Psex][space].name, "%s", name); PairList[Psex][space].pindex = toindex; PairList[Psex][space].code = CHAR_getWorkInt( toindex, CHAR_MYPAIRCODE); CHAR_talkToCli( toindex, -1, "新增至配对名单。", CHAR_COLORYELLOW); return TRUE; } } return FALSE; }
int BATTLE_ItemUseDelete( int charaindex, int haveitemindex ) { int itemindex; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if( ITEM_CHECKINDEX( itemindex ) == FALSE ) return 0; { LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD ¦bitemªºlog¤¤¼W¥[item¦WºÙ itemindex, #else ITEM_getInt( itemindex, ITEM_ID ), #endif "BattleUse(¾Ô°«¤¤¨Ï¥Î±¼ªº¹D¨ã)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); } CHAR_DelItemMess( charaindex, haveitemindex, 0); return 0; }
/*----------------------------------------------- * ¼¡²ó³«ºÅ»þ´Ö¡¤Éô²°¤ò¸À¤¦ *----------------------------------------------*/ static void NPC_RoomAdminNew_DspNextAuction( int meindex, int talkerindex) { char msgbuf[2048]; time_t closetime; closetime = CHAR_getWorkInt( meindex, CHAR_WORKINT_NEXTTIME); /* ¼¡¤Î³«ºÅ»þ´Ö¤¬·è¤Þ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡Ö·è¤Þ¤Ã¤Æ¤Þ¤»¤ó¡£¡×¥á¥Ã¥»¡¼¥¸*/ if( closetime == 0 ) { snprintf( msgbuf, sizeof( msgbuf), NPC_ROOMADMINNEW_MSG_DSPNEXTAUCTION_NONE ); CHAR_talkToCli( talkerindex, meindex,msgbuf, NPC_ROOMADMINNEW_MSGCOLOR); } else { int doorindex; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char explain[1024]; /*ÀâÌÀ*/ char buff[16]; struct tm tmwk; int difftime; /* Éô²°¾ðÊó¤ò¼èÆÀ */ doorindex = NPC_DoorSearchByName( CHAR_getWorkChar( meindex, CHAR_WORKCHAR_NEXTROOM)); NPC_Util_GetArgStr( doorindex, argstr, sizeof( argstr)); getStringFromIndexWithDelim(argstr, "|" , 9 , explain,sizeof(explain)); /* Éô²°¾ðÊó*/ if( strlen(CHAR_getChar( doorindex, CHAR_NAME) ) != 0 ) { strcpy( buff, "¸¹«Ç"); } else { buff[0] = '\0'; } snprintf( msgbuf, sizeof( msgbuf), NPC_ROOMADMINNEW_MSG_DSPNEXTAUCTION1, explain, CHAR_getChar( doorindex, CHAR_NAME), buff ); CHAR_talkToCli( talkerindex, meindex,msgbuf, NPC_ROOMADMINNEW_MSGCOLOR); /* Äù¤áÀÚ¤ê»þ´Ö */ memcpy( &tmwk, localtime( &closetime), sizeof( tmwk)); difftime = closetime - NowTime.tv_sec; snprintf( msgbuf, sizeof( msgbuf), NPC_ROOMADMINNEW_MSG_DSPNEXTAUCTION2, tmwk.tm_hour, tmwk.tm_min, difftime / 3600, (difftime % 3600) / 60 ); CHAR_talkToCli( talkerindex, meindex,msgbuf, NPC_ROOMADMINNEW_MSGCOLOR); /* ²¼¸Â¶â³Û */ snprintf( msgbuf, sizeof( msgbuf), NPC_ROOMADMINNEW_MSG_DSPNEXTAUCTION3, CHAR_getWorkChar( doorindex, CHAR_WORKDOORGOLDLIMIT) ); CHAR_talkToCli( talkerindex, meindex,msgbuf, NPC_ROOMADMINNEW_MSGCOLOR); } }
static BOOL ADDRESSBOOK_makeEntryFromCharaindex( int charaindex, ADDRESSBOOK_entry* ae) { char *cdkey; if( !CHAR_CHECKINDEX(charaindex) ) return FALSE; memset( ae,0,sizeof(ADDRESSBOOK_entry) ); cdkey = CHAR_getChar( charaindex, CHAR_CDKEY); if( cdkey == NULL ){ print( "ADDRESSBOOK_makeEntryFromCharaindex:" " strange! getcdkeyFromCharaIndex returns NULL!" " charaindex: %d\n" , charaindex ); return FALSE; } strcpysafe( ae->cdkey , sizeof( ae->cdkey ),cdkey); strcpysafe( ae->charname,sizeof( ae->charname), CHAR_getChar(charaindex,CHAR_NAME) ); ae->level = CHAR_getInt( charaindex , CHAR_LV ); ae->duelpoint = CHAR_getInt( charaindex, CHAR_DUELPOINT); ae->graphicsno = CHAR_getInt( charaindex , CHAR_FACEIMAGENUMBER ); ae->online = getServernumber(); ae->use = TRUE; ae->transmigration = CHAR_getInt( charaindex, CHAR_TRANSMIGRATION); return TRUE; }
int BATTLE_ItemUseDelete( int charaindex, int haveitemindex ) { int itemindex; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if( ITEM_CHECKINDEX( itemindex ) == FALSE ) return 0; { LogItem( CHAR_getChar( charaindex, CHAR_NAME ), CHAR_getChar( charaindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD ��item��log������item���� itemindex, #else ITEM_getInt( itemindex, ITEM_ID ), #endif "BattleUse(ս����ʹ�õ��ĵ���)", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); } CHAR_DelItemMess( charaindex, haveitemindex, 0); return 0; }
void ChatRoom_Refresh ( int Num ) { int fd , i , RoomLeader = -1 ; char token[2048] ; char token2[2096] ; char buf[64] ; if ( ChatRoom[ Num ].useFlag == TRUE ) { sprintf ( token , "R|r%d|%s|%d|%s|p%d|" , Num , ChatRoom[ Num ].RoomName , ChatRoom[ Num ].Maker , CHAR_getChar ( ChatRoom[ Num ].Maker , CHAR_NAME ) , ChatRoom[ Num ].NowPeople ); for ( i = 0 ; i < MAX_PPLINROOM ; i ++ ) { if ( ChatRoom[ Num ].MemberList[ i ] != -1 ) { sprintf( buf , "I%d|%s|%s|" , ChatRoom[ Num ].MemberList[ i ] , CHAR_getChar ( ChatRoom[ Num ].MemberList[ i ] , CHAR_NAME ) , CHAR_getChar ( ChatRoom[ Num ].MemberList[ i ] , CHAR_OWNTITLE ) ); strncat ( token , buf , sizeof ( buf ) ) ; } } } for ( i = 0 ; i < MAX_PPLINROOM ; i ++ ) { if ( ChatRoom[ Num ].MemberList[ i ] != -1 ) { if ( CHAR_getWorkInt ( ChatRoom[ Num ].MemberList[ i ] , CHAR_WORKCHATROOMTYPE ) == 1 ) RoomLeader = 1; else RoomLeader = 0 ; sprintf ( token2 , "%s%d|" , token , RoomLeader ) ; fd= getfdFromCharaIndex ( ChatRoom[ Num ].MemberList[ i ] ); lssproto_CHATROOM_send ( fd , token2 ) ; } } }
BOOL NPC_PairForage( int meindex, int toindex, char *arg, char *token) { char buf1[256]; int i; int codes = CHAR_getWorkInt( toindex, CHAR_MYPAIRCODE); int Psex = CHAR_getSexInt( CHAR_getInt( toindex, CHAR_BASEBASEIMAGENUMBER) ); Psex = (Psex==1)?1:0; for( i=0; i<MAXPAIRNUMS; i++) {//forindex char *name; char *cdKey; int fd; char buf[256]; if( PairList[Psex][i].use <= 0 ) continue; if( !CHAR_CHECKINDEX( PairList[Psex][i].pindex) ) continue; if( CHAR_getWorkInt( PairList[Psex][i].pindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ) continue; if( codes != CHAR_getWorkInt( PairList[Psex][i].pindex, CHAR_MYPAIRCODE) ) continue; if( CHAR_getWorkInt( PairList[Psex][i].pindex, CHAR_MYPAIRFLG) > 0 ) continue; name = CHAR_getChar( PairList[Psex][i].pindex, CHAR_NAME); cdKey = CHAR_getChar( PairList[Psex][i].pindex, CHAR_CDKEY); if( strcmp( PairList[Psex][i].name, name) || strcmp( PairList[Psex][i].cdKey, cdKey) ){ PairList[Psex][i].use = -1; PairList[Psex][i].forindex = -1; continue; } sprintf( token, "你的配对对象为: %s\n已送出邀请,请等候对方回应。", name); if( NPC_Util_GetStrFromStrWithDelim( arg, "InviteMsg", buf1, sizeof( buf1) ) == NULL){ break; } PairList[Psex][i].forindex = toindex; fd = getfdFromCharaIndex( PairList[Psex][i].pindex); CHAR_setWorkInt( toindex, CHAR_MYPAIRFLG, 1); CHAR_setWorkInt( toindex, CHAR_MYPAIRINDEX, PairList[Psex][i].pindex); CHAR_setWorkInt( PairList[Psex][i].pindex, CHAR_MYPAIRFLG, 2); CHAR_setWorkInt( PairList[Psex][i].pindex, CHAR_MYPAIRINDEX, toindex); name = CHAR_getChar( toindex, CHAR_NAME); sprintf( buf, "%s:\n玩家%s\n%s", CHAR_getChar( meindex, CHAR_NAME),name, buf1); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OKCANCEL, WINDOW_TALKPAIR, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), buf); break; } if( i>= MAXPAIRNUMS ) { if( NPC_Util_GetStrFromStrWithDelim( arg, "NoPairMsg", buf1, sizeof( buf1) ) != NULL){ sprintf( token, "%s",buf1); }else { sprintf( token, "没有找到对象。"); } if( CHAR_getWorkInt( toindex, CHAR_MYPAIRFLG) <= 0 ) { NPC_PairRegister( toindex); } return FALSE; } return TRUE; }
void NPC_DepotPet_Get( int meindex, int talker, int select, char *token) { int petindex; int selectpet; int emptyindex; char szPet[128]; int workindex[CHAR_MAXPOOLPETHAVE]; int i; int cnt; selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) ; petindex = CHAR_getDepotPetIndex( talker, selectpet); if( !CHAR_CHECKINDEX( petindex) ) return; emptyindex = CHAR_getCharPetElement( talker); if( emptyindex == -1 ) { fprint( "err\n"); return; } CHAR_setCharPet( talker, emptyindex, petindex); CHAR_setChar( petindex, CHAR_OWNERCHARANAME, CHAR_getChar( talker, CHAR_NAME)); CHAR_setDepotPetIndex( talker, selectpet, -1); NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_POOLTHANKS, token); snprintf( szPet, sizeof( szPet ), "K%d", emptyindex); CHAR_sendStatusString( talker, szPet ); snprintf( szPet, sizeof( szPet), "W%d",emptyindex); CHAR_sendStatusString( talker, szPet ); for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { workindex[i] = -1; } cnt = 0; for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { int petindex = CHAR_getDepotPetIndex( talker, i); if( CHAR_CHECKINDEX( petindex) ) { workindex[cnt++] = petindex; } } for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { CHAR_setDepotPetIndex( talker, i, workindex[i]); } LogPet( CHAR_getChar( talker, CHAR_NAME ), CHAR_getChar( talker, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "draw(ÁìÈ¡²Ö¿â³èÎï)", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); #ifdef _PET_EVOLUTION if( CHAR_getInt( petindex, CHAR_FUSIONBEIT) == 1 && CHAR_getInt( petindex, CHAR_FUSIONRAISE) > 0 ){//¼ì²éÊÇ·ñΪÈںϳè CHAR_setInt( petindex, CHAR_FUSIONTIMELIMIT, (int)time( NULL)); } #endif }
void ITEM_useAddexp_Effect( charaindex, toindex, haveitemindex) { int itemindex,power,vtime; //,pindex char *p = NULL, *arg; char szBuffer[1024]=""; itemindex = CHAR_getItemIndex(charaindex,haveitemindex); // Àˬdª««~ if(!ITEM_CHECKINDEX(itemindex)) return; arg = ITEM_getChar(itemindex, ITEM_ARGUMENT ); if( (p = strstr( arg, "¼W" )) != NULL ){ sscanf( p+2, "%d", &power ); } if( (p = strstr( arg, "¤À" )) != NULL ){ sscanf( p+2, "%d", &vtime ); } if( p == NULL )return; #ifdef _ITEM_ADDEXP2 // ´¼ªG®É¶¡¥i¥H²Ö¥[ { int point; point = CHAR_getWorkInt( charaindex, CHAR_WORKITEM_ADDEXP) * (int)(CHAR_getWorkInt( charaindex, CHAR_WORKITEM_ADDEXPTIME)/60); if( point >= 72000) { CHAR_talkToCli( charaindex, -1, "´¼¼z¤§ªG²Öp®É¶¡¤Î®ÄªG¤w¹F¤W¡C", CHAR_COLORYELLOW); return; } point += (power * vtime); point = min( point, 72000); vtime = (int)(point / power); #ifdef _LOG_OTHER sprintf( szBuffer, "¨Ï¥Î´¼¼z¤§ªG %d\t²Ö¿n®ÄªG= ¤À¼Æ%d ¯à¤O%d¢H ®É¶¡%d¤À ", ITEM_getInt( itemindex, ITEM_ID ), point, power, vtime); LogOther( CHAR_getChar( charaindex, CHAR_CDKEY), CHAR_getChar( charaindex, CHAR_NAME), szBuffer ); #endif //CHAR_setInt( charaindex, CHAR_ADDEXPPOWER, power); //CHAR_setInt( charaindex, CHAR_ADDEXPTIME,vtime*60 ); //sprintf(szBuffer, "´ú¸Õ°T®§¡G¥Ø«e¤À¼Æ%d ®É¶¡%d¬í¡C", point, vtime*60); //CHAR_talkToCli(charaindex,-1,szBuffer,CHAR_COLORRED); } #endif CHAR_setWorkInt( charaindex, CHAR_WORKITEM_ADDEXP, power); CHAR_setWorkInt( charaindex, CHAR_WORKITEM_ADDEXPTIME,vtime*60 ); //²M°£¹D¨ã BATTLE_ItemUseDelete(charaindex,haveitemindex); //sprintf(szBuffer, "¾Ç²ß¸gÅ窺¯à¤O´£¤É¤F%d¢H", power); sprintf(szBuffer, "¾Ç²ß¸gÅ窺¯à¤O´£¤É¤F%d¢H¡A®É®Ä³Ñ¾l%d¤ÀÄÁ¡C", power, vtime); CHAR_talkToCli(charaindex,-1,szBuffer,CHAR_COLORYELLOW); }
void ITEM_useAddexp_Effect( charaindex, toindex, haveitemindex) { int itemindex,power,vtime; //,pindex char *p = NULL, *arg; char szBuffer[1024]=""; itemindex = CHAR_getItemIndex(charaindex,haveitemindex); // �����Ʒ if(!ITEM_CHECKINDEX(itemindex)) return; arg = ITEM_getChar(itemindex, ITEM_ARGUMENT ); if( (p = strstr( arg, "��" )) != NULL ){ sscanf( p+2, "%d", &power ); } if( (p = strstr( arg, "��" )) != NULL ){ sscanf( p+2, "%d", &vtime ); } if( p == NULL )return; #ifdef _ITEM_ADDEXP2 // �ǹ�ʱ������ۼ� { int point; point = CHAR_getWorkInt( charaindex, CHAR_WORKITEM_ADDEXP) * (int)(CHAR_getWorkInt( charaindex, CHAR_WORKITEM_ADDEXPTIME)/60); if( point >= 72000) { CHAR_talkToCli( charaindex, -1, "�ǻ�֮���ۼ�ʱ�估Ч���Ѵ����ޡ�", CHAR_COLORYELLOW); return; } point += (power * vtime); point = min( point, 72000); vtime = (int)(point / power); #ifdef _LOG_OTHER sprintf( szBuffer, "ʹ���ǻ�֮�� %d\t�ۻ�Ч��= ����%d ����%d�� ʱ��%d�� ", ITEM_getInt( itemindex, ITEM_ID ), point, power, vtime); LogOther( CHAR_getChar( charaindex, CHAR_CDKEY), CHAR_getChar( charaindex, CHAR_NAME), szBuffer ); #endif //CHAR_setInt( charaindex, CHAR_ADDEXPPOWER, power); //CHAR_setInt( charaindex, CHAR_ADDEXPTIME,vtime*60 ); //sprintf(szBuffer, "����ѶϢ��Ŀǰ����%d ʱ��%d�롣", point, vtime*60); //CHAR_talkToCli(charaindex,-1,szBuffer,CHAR_COLORRED); } #endif CHAR_setWorkInt( charaindex, CHAR_WORKITEM_ADDEXP, power); CHAR_setWorkInt( charaindex, CHAR_WORKITEM_ADDEXPTIME,vtime*60 ); //������� BATTLE_ItemUseDelete(charaindex,haveitemindex); //sprintf(szBuffer, "ѧϰ���������������%d��", power); sprintf(szBuffer, "ѧϰ���������������%d����ʱЧʣ��%d���ӡ�", power, vtime); CHAR_talkToCli(charaindex,-1,szBuffer,CHAR_COLORYELLOW); }
BOOL NPC_CHECKFREEPETSKILL( int toindex, int petindex, int skillID) { int skillindex=-1; char SCode[256]; char Free[256]; int i, petID; skillindex = PETSKILL_getPetskillArray( skillID ); memset( Free, 0, sizeof( Free)); if( !PETSKILL_CHECKINDEX( skillindex) ) { return FALSE; } petID = CHAR_getInt( petindex, CHAR_PETID); sprintf( SCode, "%s", PETSKILL_getChar( skillindex, PETSKILL_KINDCODE)); sprintf( Free, "%s", PETSKILL_getChar( skillindex, PETSKILL_FREE)); //CHECK CODE if( !strcmp( SCode, "\0")) { return TRUE; } for( i=0; i<arraysizeof( Code_skill); i++) { if( Code_skill[i].PetId == petID ) { break; } } //找不到這只寵物 if( i == arraysizeof( Code_skill) ) { { char buff1[256]; sprintf( buff1, "%s不能學特殊技能!!", CHAR_getChar( petindex, CHAR_NAME)); CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW); } return FALSE; } if( strstr( Code_skill[i].Code, SCode ) != NULL ) { if( NPC_SkillShopPetCheck( toindex, petindex, skillID) == FALSE ) { char buff1[256]; sprintf( buff1, "%s現在還不能學%s!", CHAR_getChar( petindex, CHAR_NAME), PETSKILL_getChar( skillindex, PETSKILL_NAME) ); CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW); return FALSE; } return TRUE; }else { char buff1[256]; sprintf( buff1, "%s不能學%s!!", CHAR_getChar( petindex, CHAR_NAME), PETSKILL_getChar( skillindex, PETSKILL_NAME) ); CHAR_talkToCli( toindex, -1, buff1, CHAR_COLORYELLOW); } return FALSE; }
static BOOL NPC_SimpleShopProcessSellMsg(char *msg, int shopindex, int playerindex ) { int sellwindowindex, itemtableindex,itemind, id; int price, tmpgold; char buf[64]; if(!CHAR_CHECKINDEX(shopindex)||!CHAR_CHECKINDEX(playerindex)) return -1; if( !getStringFromIndexWithDelim( msg,"|",4,buf,sizeof(buf) )){ return -1; } sellwindowindex = atoi(buf); itemtableindex = sellwindowindex + CHAR_STARTITEMARRAY; itemind = CHAR_getItemIndex(playerindex,itemtableindex ); if( ! ITEM_CHECKINDEX(itemind) ) return -1; price = ITEM_getInt( itemind, ITEM_COST ); if( price <= 0 || price > NPC_SIMPLESHOPMAXBUYPRICE ){ return -2; } price *= NPC_Util_sellRate(playerindex); CHAR_AddGold( playerindex, price ); CHAR_sendStatusString( playerindex , "P"); id = ITEM_getInt(itemind,ITEM_ID); { LogItem( CHAR_getChar( playerindex, CHAR_NAME ), /* ƽÅÒ·Â */ CHAR_getChar( playerindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD ÔÚitemµÄlogÖÐÔö¼ÓitemÃû³Æ itemind, #else ITEM_getInt( itemind, ITEM_ID ), /* ʧÄÌ Ø© į */ #endif "Sell", CHAR_getInt( playerindex,CHAR_FLOOR), CHAR_getInt( playerindex,CHAR_X ), CHAR_getInt( playerindex,CHAR_Y ), ITEM_getChar( itemind, ITEM_UNIQUECODE), ITEM_getChar( itemind, ITEM_NAME), ITEM_getInt( itemind, ITEM_ID) ); } if( ! NPC_Util_moveItemToChar( shopindex,itemind,TRUE ) ){ return -1; } NPC_Util_RemoveItemByID(shopindex,id,FALSE); return 1; }
BOOL NPC_DepotItem_gettItem( int meindex, int talkerindex, int num) { int emptyindex; int itemindex; if( !CHAR_CheckDepotItem( talkerindex) ) return FALSE; if( (emptyindex=CHAR_findEmptyItemBox( talkerindex)) == -1 ) return FALSE; itemindex = CHAR_getDepotItemIndex( talkerindex, num); if( !ITEM_CHECKINDEX( itemindex) )return FALSE; CHAR_setDepotItemIndex( talkerindex, num, -1); CHAR_setItemIndex( talkerindex, emptyindex, itemindex); CHAR_sendItemDataOne( talkerindex, emptyindex); CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD); LogItem( CHAR_getChar( talkerindex, CHAR_NAME ), CHAR_getChar( talkerindex, CHAR_CDKEY ), #ifdef _add_item_log_name itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "Depot(取出道具)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); { int i, cnt=0; int work[CHAR_MAXDEPOTITEMHAVE]; for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { work[i] = -1; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { itemindex = CHAR_getDepotItemIndex( talkerindex, i); if( !ITEM_CHECKINDEX( itemindex)) continue; work[ cnt++] = itemindex; } for( i = 0; i < CHAR_MAXDEPOTITEMHAVE; i ++ ) { CHAR_setDepotItemIndex( talkerindex, i, work[i]); } } return TRUE; }
void NPC_reCheckMyPetUnusual( int meindex, int toindex)//¼ì²é³èÎïÒì³£ { char *buf=NULL; int petindex,i; for( i=0; i<CHAR_MAXPETHAVE; i++) { petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; if( (buf=CHAR_getChar( petindex, CHAR_NAME)) == NULL || strlen( buf) <= 0 ){ char *PetNAME; int array, parry, petID; petID = CHAR_getInt( petindex, CHAR_PETID); array = ENEMY_getEnemyArrayFromTempNo( petID); if( !ENEMY_CHECKINDEX( array)){ print("ANDY Pet(ID:%d) err Array:%d (file:%s %d) !! \n", petID, array, __FILE__, __LINE__ ); continue; } parry = ENEMYTEMP_getEnemyTempArray( array); if( (PetNAME = ENEMYTEMP_getChar( parry, E_T_NAME)) == NULL || strlen( PetNAME) <= 0 ){ print("ANDY Pet(ID:%d) Array:%d err Name:%s (file:%s %d) !! \n", petID, array, (PetNAME==NULL)?"NULL":PetNAME, __FILE__, __LINE__ ); continue; } char tempname[128]; if(strstr(CHAR_getChar(petindex,CHAR_NAME),"*")!=NULL) sprintf(tempname,"*%s",ENEMYTEMP_getChar( parry, E_T_NAME)); else sprintf(tempname,"%s",ENEMYTEMP_getChar( parry, E_T_NAME)); CHAR_setChar( petindex, CHAR_NAME, tempname); CHAR_setChar( petindex, CHAR_USERPETNAME , ""); //andy_log print("ANDY Pet(ID:%d) Name -> %s (%s:%s)(file:%s %d) !! \n", petID, PetNAME, CHAR_getUseName( toindex), CHAR_getChar( toindex, CHAR_CDKEY), __FILE__, __LINE__ ); } } for( i=0; i<CHAR_MAXPETHAVE; i++){ char szPet[256]; petindex = CHAR_getCharPet(toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; CHAR_complianceParameter( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", i); CHAR_sendStatusString( toindex, szPet ); snprintf( szPet, sizeof( szPet ), "W%d", i); CHAR_sendStatusString( toindex, szPet ); } }
void pet_make( int charaindex, char* message ) { int ret; char msgbuf[64]; int enemynum; int enemyid; int i; enemyid = atoi(message); enemynum = ENEMY_getEnemyNum(); for( i=0; i<enemynum; i++ ){ if( ENEMY_getInt( i, ENEMY_ID) == enemyid){ break; } } if(i==enemynum) return; ret = ENEMY_createPetFromEnemyIndex( charaindex, i); snprintf( msgbuf, sizeof( msgbuf), "哦~以你的能力足以配得上一只传说宠物,好吧!就是你了。"); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); for( i=0; i<CHAR_MAXPETHAVE; i++ ){ if( CHAR_getCharPet( charaindex, i) == ret )break; } if( i==CHAR_MAXPETHAVE) i = 0; if( CHAR_CHECKINDEX( ret ) == TRUE ){ CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV )); } snprintf( msgbuf, sizeof( msgbuf ), "K%d", i ); CHAR_sendStatusString( charaindex, msgbuf ); snprintf( msgbuf, sizeof( msgbuf ), "W%d", i ); CHAR_sendStatusString( charaindex, msgbuf ); for( i=0; i<CHAR_MAXPETHAVE; i++ ) if( CHAR_getCharPet(charaindex, i) == ret ) CHAR_send_K_StatusString(charaindex, i, CHAR_K_STRING_HP|CHAR_K_STRING_AI); LogPet( CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), "凯恩",1,"PetMaker", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), CHAR_getChar( ret, CHAR_UNIQUECODE) // shan 2001/12/14 ); }
BOOL NPC_reFindMyLostPet( int meindex, int toindex, char *buf) { //µØÉÏ0 Áï³è 1 ³èÓÊ 2 FILE *fp = NULL; char *CdKey=NULL; int lv=0, cost, ltime, count=0, i, type; char filename[256], line[2048], buf1[256]; char petname[256], typebuf[256]; char buf2[10][256]={"\n","\n","\n","\n","\n", "\n","\n","\n","\n","\n" }; CdKey = CHAR_getChar( toindex, CHAR_CDKEY ); if( CdKey == NULL ) return FALSE; sprintf( filename, "lostpet/%s.txt", CdKey); strcpy( buf, "==³èÎïÒÅʧ¼Í¼==\n"); if( (fp=fopen( filename, "r")) == NULL ) return FALSE; while( fgets( line , sizeof( line ) , fp ) && count < 7){ if( line == NULL ) continue; if( getStringFromIndexWithDelim( line, "|", 1, buf1, sizeof( buf1)) == FALSE ) continue; if( strcmp( CHAR_getChar( toindex, CHAR_CDKEY ), buf1 )) continue; if( getStringFromIndexWithDelim( line, "|", 6, buf1, sizeof( buf1)) == FALSE ) continue; ltime = atoi(buf1); ltime = time( NULL) - ltime; ltime = ltime/(60*60*24); if( ltime > 14 ) continue;//Ðø·Å14Ìì if( getStringFromIndexWithDelim( line, "|", 2, petname, sizeof( petname)) == FALSE ) continue; if( getStringFromIndexWithDelim( line, "|", 3, buf1, sizeof( buf1)) == FALSE ) continue; lv = atoi( buf1); if( getStringFromIndexWithDelim( line, "|", 4, buf1, sizeof( buf1)) == FALSE ) continue; cost = atoi( buf1); if( getStringFromIndexWithDelim( line, "#", 3, buf1, sizeof( buf1)) == FALSE ) continue; type = atoi( buf1); if( type == 1 ){ strcpy( typebuf, "Áï³è"); }else if( type == 2 ){ strcpy( typebuf, "³èÓÊ"); }else{ strcpy( typebuf, "µØÉÏ"); } sprintf( buf2[count++], "%s LV:%dʯ±Ò:%d(%dÌì%s)\n", petname, lv, cost, ltime, typebuf); } fclose( fp); for( i=0; i<7; i++){ strcat( buf, buf2[i]); } if( count == 0 ) return FALSE; return TRUE; }
// CoolFish: Family Adv 2001/7/29 void AddFMAdv(int talker, int shiftbit) { int fmadv = 0; char buf[256]; #ifdef _FMVER21 #else if (CHAR_getInt(talker, CHAR_FMINDEX) < 0) return; if (CHAR_getInt(talker, CHAR_FMLEADERFLAG) <= 0) return; if (strcmp(CHAR_getChar(talker, CHAR_FMNAME), "") == 0) return; #endif if (shiftbit >= arraysizeof(FMAdvTbl)) return; else fmadv = FMAdvTbl[shiftbit]; if (fmadv <= 0) return; sprintf(buf, "%d", fmadv); #ifdef _PERSONAL_FAME // Arminius 8.30: 家族个人声望 CHAR_earnFame(talker, fmadv); #endif #ifdef _FMVER21 if (CHAR_getInt(talker, CHAR_FMLEADERFLAG) > 0 && CHAR_getInt(talker, CHAR_FMLEADERFLAG) != FMMEMBER_APPLY) { // CoolFish: 2001/10/03 int fd = getfdFromCharaIndex(talker); saacproto_ACFixFMData_send(acfd, CHAR_getChar(talker, CHAR_FMNAME), CHAR_getInt(talker, CHAR_FMINDEX), CHAR_getWorkInt(talker, CHAR_WORKFMINDEXI), FM_FIX_FMADV, buf, "", // CoolFish: 2001/10/03 CHAR_getWorkInt(talker, CHAR_WORKFMCHARINDEX), CONNECT_getFdid(fd)); // CHAR_getWorkInt(talker, CHAR_WORKFMCHARINDEX), 0); } #else saacproto_ACFixFMData_send(acfd, CHAR_getChar(talker, CHAR_FMNAME), CHAR_getInt(talker, CHAR_FMINDEX), CHAR_getWorkInt(talker, CHAR_WORKFMINDEXI), FM_FIX_FMADV, buf, "", CHAR_getWorkInt(talker, CHAR_WORKFMCHARINDEX), 0); #endif }
static BOOL NPC_PoolItemShop_DrawItem( int meindex, int talkerindex, int num) { int emptyindex; int itemindex; int i; int cnt; int work[CHAR_MAXPOOLITEMHAVE]; emptyindex = CHAR_findEmptyItemBox( talkerindex); if( emptyindex == -1 ) return FALSE; itemindex = CHAR_getPoolItemIndex( talkerindex, num); if( !ITEM_CHECKINDEX( itemindex)) { fprint( "err\n"); return FALSE; } CHAR_setItemIndex( talkerindex, emptyindex, itemindex); CHAR_setPoolItemIndex( talkerindex, num, -1); CHAR_sendItemDataOne( talkerindex, emptyindex); for( i = 0; i < CHAR_MAXPOOLITEMHAVE; i ++ ) { work[i] = -1; } cnt = 0; for( i = 0; i < CHAR_MAXPOOLITEMHAVE; i ++ ) { itemindex = CHAR_getPoolItemIndex( talkerindex, i); if( ITEM_CHECKINDEX( itemindex)) { work[ cnt++] = itemindex; } } for( i = 0; i < CHAR_MAXPOOLITEMHAVE; i ++ ) { CHAR_setPoolItemIndex( talkerindex, i, work[i]); } LogItem( CHAR_getChar( talkerindex, CHAR_NAME ), CHAR_getChar( talkerindex, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD 在item的log中增加item名稱 itemindex, #else ITEM_getInt( itemindex, ITEM_ID), #endif "draw(領取道具)", CHAR_getInt( talkerindex,CHAR_FLOOR), CHAR_getInt( talkerindex,CHAR_X ), CHAR_getInt( talkerindex,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); return TRUE; }
/*----------------------------------------------- * ´ÉÍý¿ÍÍѤΥե¡¥¤¥ë¤Ë¥Ç¡¼¥¿¤ò½ñ¤¹þ¤à * * ¥Õ¥¡¥¤¥ë̾¤Ï"©Ð¶¡ªº¦W¦r.room" * ¤ò»È¤¦¡£ * * ¥Õ¥¡¥¤¥ë¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¡¤ * cdkey|charaname|passwd|expiretime * * * °ú¿ô¤Îflg ¤¬£±¤À¤Ã¤¿¤é½ñ¤¹þ¤ß¡¤£°¤À¤Ã¤¿¤é¥Õ¥¡¥¤¥ëºï½ü * Ìá¤êÃÍ¡§TRUE¡§À®¸ù * FALSE:²¿¤é¤«¤Î¼ºÇÔ *----------------------------------------------*/ static BOOL NPC_RoomAdminNew_WriteDataFile( int meindex, int pindex, char *roomname, char *passwd, int flg) { char *cdkey; char charaname[32*2]; char expiretime[64]; char filename[128]; char outbuf[1024]; FILE *fp_src; /* ¥Õ¥¡¥¤¥ë̾¤òÀ¸À® */ strcpy( filename, NPC_ROOMADMINNEW_DATADIR); /*strcat( filename, CHAR_getWorkChar( meindex, CHAR_WORKCHAR_NEXTROOM));*/ strcat( filename, roomname); strcat( filename, NPC_ROOMADMINNEW_EXTENSION); if( flg) { /* Í¤·¤¿¿Í¤Î£Ã£Ä¥¡¼ */ //getcdkeyFromCharaIndex( pindex, cdkey, sizeof(cdkey )); cdkey = CHAR_getChar( pindex, CHAR_CDKEY); /* Í¤·¤¿¿Í¤Î¥¥ã¥é̾ */ makeEscapeString( CHAR_getChar( pindex, CHAR_NAME), charaname, sizeof( charaname)); /* ´ü¸ÂÀÚ¤ì»þ´Ö */ snprintf( expiretime, sizeof( expiretime), "%d", CHAR_getWorkInt( meindex, CHAR_WORKINT_NEXTTIME) + NPC_ROOMADMINNEW_2WEEK /* £²½µ´Ö¸å */ ); /* ¥Ç¥ê¥ß¥¿¤Ç¤¯¤¯¤ë */ snprintf( outbuf, sizeof( outbuf), "%s|%s|%s|%s|", cdkey, charaname, passwd, expiretime); fp_src = fopen( filename, "w"); if( !fp_src) { print( "[%s:%d] File Open Error\n", __FILE__, __LINE__); return FALSE; } fputs( outbuf, fp_src); fclose( fp_src); } else { unlink( filename); } return TRUE; }
int NPC_DepotPet_CheckRepeat( int charaindex) { int petindex1, petindex2; int i, j, find, ret = FALSE; int workindex[CHAR_MAXDEPOTPETHAVE], cnt =0; for( i =0; i <(CHAR_MAXDEPOTPETHAVE-1); i++) { petindex1 = CHAR_getDepotPetIndex( charaindex, i); if( !CHAR_CHECKINDEX( petindex1)) continue; find = 0; for( j =(i+1); j <CHAR_MAXDEPOTPETHAVE; j++) { petindex2 = CHAR_getDepotPetIndex( charaindex, j); if( !CHAR_CHECKINDEX( petindex2)) continue; if( petindex1 == petindex2 ) continue; if( !strcmp( CHAR_getChar( petindex1, CHAR_UNIQUECODE), CHAR_getChar( petindex2, CHAR_UNIQUECODE) ) ) { print(" ÔÚ²Ö¿âÕÒµ½·Ç·¨³èÁË "); CHAR_setDepotPetIndex( charaindex, j, -1); NPC_DepotPet_CheckRepeat_del( charaindex, petindex2); find ++; ret = TRUE; } } if( find >0) { CHAR_setDepotPetIndex( charaindex, i, -1); NPC_DepotPet_CheckRepeat_del( charaindex, petindex1); } } for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { workindex[i] = -1; } for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { int pindex = CHAR_getDepotPetIndex( charaindex, i); if( CHAR_CHECKINDEX( pindex) ) { workindex[cnt++] = pindex; } } for( i = 0; i < CHAR_MAXDEPOTPETHAVE; i ++ ) { CHAR_setDepotPetIndex( charaindex, i, workindex[i]); } return ret; }
static void NPC_DengonWriteString( int meindex, int talker, int id, char *str ) { char buf[256]; FILE *f; int line; struct tm tm1; snprintf( buf,sizeof(buf), "%s%d_%d_%d", DENGONFILEDIR, CHAR_getInt( meindex, CHAR_FLOOR ), CHAR_getInt( meindex, CHAR_X ), CHAR_getInt( meindex, CHAR_Y ) ); f = fopen( buf, "r+" ); if( !f ) return; line = id%DENGONFILELINENUM; fseek( f, line*DENGONFILEENTRYSIZE, SEEK_SET ); fprintf( f, "%010d:",id ); memcpy( &tm1, localtime( (time_t *)&NowTime.tv_sec), sizeof( tm1)); fprintf( f, "%s\n %2d/%02d %2d:%02d %s%c", str, tm1.tm_mon +1, tm1.tm_mday, tm1.tm_hour, tm1.tm_min, CHAR_getChar( talker, CHAR_NAME), '\0'); fclose(f); }
BOOL NPC_getLostPetString( int meindex, int toindex) { FILE *fp = NULL; char *CdKey=NULL; int count=0, i, ltime; char filename[256], line[2048], buf1[256]; for( i=0; i<7; i++) strcpy( petstring[i], ""); CdKey = CHAR_getChar( toindex, CHAR_CDKEY ); if( CdKey == NULL ) return FALSE; sprintf( filename, "lostpet/%s.txt", CdKey); if( (fp=fopen( filename, "r")) == NULL ) return FALSE; while( fgets( line , sizeof( line ) , fp ) && count < 7){ if(strlen( line) <= 0 ) continue; // if( getStringFromIndexWithDelim( line, "#", 2, buf1, sizeof( buf1)) == FALSE ) return FALSE; // Terry fix ¶ÁȡʱûÓÐÅжÏʱ¼ä 2004/09/22 if(getStringFromIndexWithDelim(line,"|",6,buf1,sizeof(buf1)) == FALSE) continue; ltime = atoi(buf1); ltime = time( NULL) - ltime; ltime = ltime/(60*60*24); if(ltime > 14) continue;//Ðø·Å14Ìì // Terry end strcpy( petstring[count++], line); } fclose( fp); return TRUE; }
BOOL NPC_QuizItemFullCheck(int meindex,int talker) { int i; int itemindex; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf2[32]; for( i = CHAR_STARTITEMARRAY ; i < CHAR_MAXITEMHAVE ; i++ ) { itemindex = CHAR_getItemIndex( talker , i ); if( !ITEM_CHECKINDEX( itemindex) ) { return TRUE; } } if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL) { print("GetArgstrErr:Quiz %s",CHAR_getChar( meindex, CHAR_NAME)); } if(NPC_Util_GetStrFromStrWithDelim( argstr,"EntryItem", buf2, sizeof( buf2)) != NULL) { if(NPC_EntryItemCheck( talker, buf2) == FALSE) { NPC_Quiz_selectWindow( meindex, talker, 3); return FALSE; } else { return TRUE; } } return FALSE; }
void NPC_DepotItem_Depot_printWindow( int meindex, int talkerindex) { char itemstring[65536-1024]; char sendstring[65536]; char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; char buff[1024]; char buff2[1024]; char buff3[1024]; int fd; if( (fd = getfdFromCharaIndex( talkerindex)) == -1 )return; argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); snprintf( sendstring, sizeof( sendstring), "1|%s|%s|%s|%s|", CHAR_getChar( meindex, CHAR_NAME), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_DRAW, argstr, buff2, sizeof( buff2)), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_ITEMFULL, argstr, buff, sizeof( buff)), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_REALY, argstr, buff3, sizeof( buff3)) ); NPC_DepotItem_MakeDepotString( meindex, talkerindex, itemstring, sizeof( itemstring)); strcat( sendstring, itemstring); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_POOLITEMSHOPMAIN, WINDOW_BUTTONTYPE_NONE, CHAR_WINDOWTYPE_DEPOTITEMSHOP_GET, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), sendstring); //print("\n NPC_DepotItem_Depot_printWindow:%s size:%d ", sendstring, strlen(sendstring)); }
void NPC_DepotItem_Item_printWindow( int meindex, int talkerindex) { char itemstring[65536-1024]; char sendstring[65536]; char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; char buff2[1024]; char buff3[1024]; char buff4[1024]; int fd; if( (fd = getfdFromCharaIndex( talkerindex)) == -1 ){ fprint( "err\n"); return; } argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); snprintf( sendstring, sizeof( sendstring), "0|%d|%s|%s|%s|%s|", CHAR_getfindEmptyDepotItem( talkerindex), CHAR_getChar( meindex, CHAR_NAME), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_POOL, argstr, buff2, sizeof( buff2)), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_POOLFULL, argstr, buff3, sizeof( buff3)), NPC_PoolItemShop_getMsg_noarg( NPC_POOLITEMSHOP_MSG_REALY, argstr, buff4, sizeof( buff4)) ); NPC_DepotItem_MakeItemString( meindex, talkerindex, itemstring, sizeof( itemstring)); strcat( sendstring, itemstring); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_POOLITEMSHOPMAIN, WINDOW_BUTTONTYPE_NONE, CHAR_WINDOWTYPE_DEPOTITEMSHOP_ADD, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), sendstring); }
/********************************* * Øƾ®ØêÈÕľÐ×Áݼ°ÖÊ *********************************/ void NPC_LuckyManTalked( int meindex , int talkerindex , char *szMes ,int color ) { char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[256]; char token[512]; int cost; /*-- ¼°ó¡±åÖÐÔ¾®Éýµ¤¾®£¢--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2) == FALSE) { /* ¨àºëØøÓÀÓñ¶¯ ¼°ÐÄ */ if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } /*--ɬÀð×ÑëÄÌ»ïë ÐÄ ÐÄ--*/ if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL) { print("NPC_ExChange.c TypeCheck: GetArgStrErr\n"); print("NPCName=%s\n", CHAR_getChar( meindex, CHAR_NAME)); return; } NPC_Util_GetStrFromStrWithDelim( argstr,"Stone", buf, sizeof( buf)); cost = NPC_GetMoney( meindex, talkerindex, buf); NPC_Util_GetStrFromStrWithDelim( argstr,"main_msg", buf, sizeof( buf)); sprintf( token, buf, cost); NPC_LuckyMan_selectWindow( meindex, talkerindex, 2, token); }