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; }
/* * TK¤ÇÁ÷¤ë¤¿¤á¤Î »ú ¤ò¤Ä¤¯¤ë¡e */ static void NPC_SimpleShopGetEscapedItemString( int shopindex, int cliindex, char *str ) { int i, cost, cl, imageno, itemindex; char *itemname; char tmp[1024]; char escapedname[256]; // char *oli; /* oli means onelineinfo */ str[0] = '\0'; /* ¤Þ¤ºÅ¹¤Î ¤Á ¤Î¥ê¥¹¥È */ for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){ itemindex=CHAR_getItemIndex( shopindex , i ); if( ITEM_CHECKINDEX(itemindex) ){ itemname = ITEM_getChar( itemindex, ITEM_SECRETNAME ); makeEscapeString( itemname, escapedname, sizeof(escapedname)); cost = ITEM_getInt( itemindex, ITEM_COST ); /* ¶â³Û¤ÎÄ´À°¡eMERCHANTLEVEL¤Ë¤è¤Ã¤Æ ¤ï¤ë¡e */ cost *= NPC_Util_buyRate(cliindex); cl = ITEM_getInt( itemindex, ITEM_LEVEL ); imageno = ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER ); //oli = ITEM_getMemo( itemindex ); #if 0 snprintf( tmp, sizeof(tmp), "|%s|%d|%d|%d|%s", escapedname, cost, cl, imageno, oli ); #endif snprintf( tmp, sizeof(tmp), "|%s|%d|%d|%d|", escapedname, cost, cl, imageno ); strcat( str, tmp ); } } /* ±¤Ë¡bµÒ¤Î ¤Á ¤Î¥ê¥¹¥È */ for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){ itemindex=CHAR_getItemIndex( cliindex , i ); if( ITEM_CHECKINDEX(itemindex) ){ cost = ITEM_getInt( itemindex, ITEM_COST ); /* ¶â³Û¤ÎÄ´À°¡eMERCHANTLEVEL¤Ë¤è¤Ã¤Æ ¤ï¤ë¡e */ cost *=NPC_Util_sellRate(cliindex); snprintf( tmp, sizeof(tmp), "|%d", cost ); strcat( str, tmp ); }else{ /* ¥¢¥¤ ¥à¤ò ¤Ã¤Æ¤Ê¤¤¾ì½ê¤Ë¤Ï0¤ò¤¤¤ì¤ë */ strcat( str, "|0" ); } } }
static void NPC_SimpleShopGetEscapedItemString( int shopindex, int cliindex, char *str ) { int i, cost, cl, imageno, itemindex; char *itemname; char tmp[1024]; char escapedname[256]; // char *oli; /* oli means onelineinfo */ str[0] = '\0'; for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){ itemindex=CHAR_getItemIndex( shopindex , i ); if( ITEM_CHECKINDEX(itemindex) ){ itemname = ITEM_getChar( itemindex, ITEM_SECRETNAME ); makeEscapeString( itemname, escapedname, sizeof(escapedname)); cost = ITEM_getInt( itemindex, ITEM_COST ); cost *= NPC_Util_buyRate(cliindex); cl = ITEM_getInt( itemindex, ITEM_LEVEL ); imageno = ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER ); //oli = ITEM_getMemo( itemindex ); snprintf( tmp, sizeof(tmp), "|%s|%d|%d|%d|", escapedname, cost, cl, imageno ); strcat( str, tmp ); } } for( i=CHAR_STARTITEMARRAY;i<CHAR_MAXITEMHAVE;i++ ){ itemindex=CHAR_getItemIndex( cliindex , i ); if( ITEM_CHECKINDEX(itemindex) ){ cost = ITEM_getInt( itemindex, ITEM_COST ); cost *=NPC_Util_sellRate(cliindex); snprintf( tmp, sizeof(tmp), "|%d", cost ); strcat( str, tmp ); }else{ strcat( str, "|0" ); } } }