static BOOL NPC_SimpleShopProcessBuyMsg(char *msg, int shopindex, int playerindex ) { int shopwindowindex, itemtableindex,itemind; int price, tmpgold; char buf[64]; if(!CHAR_CHECKINDEX(shopindex)||!CHAR_CHECKINDEX(playerindex)) return -1; if( !getStringFromIndexWithDelim( msg,"|",4,buf,sizeof(buf) )){ return -1; } shopwindowindex = atoi(buf); itemtableindex=NPC_ShopWindowIndexToItemTableIndex( shopindex, shopwindowindex ); itemind = CHAR_getItemIndex(shopindex,itemtableindex ); if( ! ITEM_CHECKINDEX(itemind) ) return -1; price = ITEM_getInt( itemind, ITEM_COST ) * NPC_Util_buyRate(playerindex); tmpgold = CHAR_getInt(playerindex,CHAR_GOLD); if( tmpgold < price ){ return -2; } if( ! NPC_Util_moveItemToChar(playerindex,itemind,TRUE ) ){ return -3; } CHAR_AddGold( playerindex, price ); CHAR_sendStatusString( playerindex , "P"); return 1; }
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_PAItemShop_SellDo( int meindex, int toindex, char *npcarg, int select) { int itemindex = CHAR_getItemIndex( toindex , select ); if( ITEM_CHECKINDEX( itemindex) ){ int cost = ITEM_getInt( itemindex, ITEM_COST); saacproto_ACItemAuction_send( acfd, ITEM_getChar( itemindex, ITEM_NAME), "TEST嘿嘿嘿", ITEM_getInt( itemindex, ITEM_ID), 0/*ret*/,AUCTION_ADD); CHAR_DelItem( toindex, select); CHAR_AddGold( toindex, cost); }else { CHAR_talkToCli( toindex, -1, "沒有這樣物品!", CHAR_COLORYELLOW); return FALSE; } return TRUE; }
static BOOL NPC_LimitBuyInShopProcessSellMsg(char *msg, int shopindex, int playerindex ) { int sellwindowindex, itemtableindex,itemind, id,i,buyokflag, setid; int price, tmpgold; char buf[BUFSIZ]; char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX]; 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; id = ITEM_getInt(itemind,ITEM_ID); NPC_Util_GetArgStr( shopindex, npcarg, sizeof(npcarg)); getStringFromIndexWithDelim( npcarg, "|", BUYINITEMLISTTOKEN, token, sizeof( token) ); buyokflag = FALSE; for( i=1;getStringFromIndexWithDelim(token,",",i,buf,sizeof(buf)); i++){ char *tok1 = NULL; char *tok2 = NULL; int no1=0, no2=0; tok1 = strtok( buf, "-" ); tok2 = strtok( NULL, "-" ); setid = atoi(buf); if( tok1 == NULL || tok2 == NULL ){ if( setid == 0 ) return -2; if( setid == id ) buyokflag = TRUE; } else { no1 = atoi( tok1 ); no2 = atoi( tok2 ); if( no1 <= id && id <= no2 ){ buyokflag = TRUE; } } } if( buyokflag == FALSE ) return -2; price = ITEM_getInt( itemind, ITEM_COST ); price *= NPC_Util_sellRate(playerindex); CHAR_AddGold( playerindex, price ); CHAR_sendStatusString( playerindex , "P"); if( ! NPC_Util_moveItemToChar( shopindex,itemind,TRUE ) ){ return -1; } { 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) ); } NPC_Util_RemoveItemByID(shopindex,id,FALSE); return 1; }
void NPC_PetDel(int meindex, int talker,int select,char* token) { int petindex; int petsel; char szPet[128]; int cost; int defpet; int fd = getfdFromCharaIndex( talker ); NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_THANKS, token); petsel=(CHAR_getWorkInt(talker,CHAR_WORKSHOPRELEVANT)-1); petindex = CHAR_getCharPet( talker, petsel); if( !CHAR_CHECKINDEX(petindex) ) return; // CoolFish: Family 2001/6/14 if (CHAR_getInt(petindex, CHAR_PETFAMILY) == 1){ /* char buf[1024]; lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n\nºÜ±§Ç¸¡«ÊØ»¤ÊÞÎÞ·¨··Âôร¡\nÇë×Ô¼ººÃºÃÕչˣ¡", buf, sizeof(buf))); */ sprintf(token,"\n\nºÜ±§Ç¸¡«ÊØ»¤ÊÞÎÞ·¨··Âôร¡\nÇë×Ô¼ººÃºÃÕչˣ¡"); return; } // Robin 0725 if (CHAR_getInt( talker, CHAR_RIDEPET ) == petsel ){ /* char buf[1024]; lssproto_WN_send(fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, -1, -1, makeEscapeString("\n\nÆï³ËÖеijèÎïÎÞ·¨··Âôร¡", buf, sizeof(buf))); */ sprintf(token,"\n\nÆï³ËÖеijèÎïÎÞ·¨··Âôร¡"); return; } if( CHAR_getWorkInt( CONNECT_getCharaindex(fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ; defpet=CHAR_getInt(talker,CHAR_DEFAULTPET); if(defpet==petsel){ CHAR_setInt(talker,CHAR_DEFAULTPET,-1); lssproto_KS_send( fd, -1, TRUE); } CHAR_setCharPet( talker, petsel, -1); LogPet( CHAR_getChar( talker, CHAR_NAME ), /* ƽÅÒ·Â */ CHAR_getChar( talker, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "sell(Âô³è)", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); CHAR_endCharOneArray( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", petsel); CHAR_sendStatusString( talker, szPet ); cost=NPC_GetCost(meindex,talker,petindex); CHAR_AddGold( talker, cost); }