chuyiwen_gmsv/npc/npc_itemvippointshop.c
chuyiwen bea5ac05b3 sq_gmsv_chuyiwen
sa_sever
2016-12-24 09:45:52 +09:00

1166 lines
34 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "version.h"
#include <string.h>
#include "char.h"
#include "object.h"
#include "char_base.h"
#include "npcutil.h"
#include "lssproto_serv.h"
#include "pet_skill.h"
#include "npc_eventaction.h"
#include "readmap.h"
#include "log.h"
#include "family.h"
#define MAXSHOPITEM 33
static void NPC_ItemVippointShop_selectWindow( int meindex, int talker, int num,int select);
void NPC_ItemVippointShop_BuyMain(int meindex,int talker,int before );
void NPC_GetItemVippointList(char *argstr,char * argtoken2);
#ifdef _NEW_MANOR_LAW
void NPC_ItemVippointStrStr(int itemID,double rate,char *name,char *token2,int iCostVippoint,int iChangeItemCost);
#else
void NPC_ItemVippointStrStr(int itemID,double rate,char *name,char *token2);
#endif
BOOL NPC_SetNewItemVippoint(int meindex,int talker,char *data);
BOOL NPC_SellNewItemVippoint(int meindex,int talker,char *data);
void NPC_ItemVippointShop_Menu(int meindex,int talker);
int NPC_GetLimtItemVippointList(int talker,char *argstr,char *token2,int sell);
void NPC_ItemVippointShop_SellMain(int meindex,int talker,int select);
int NPC_GetSellItemVippointList(int itemindex,int flg,char *argstr,char *argtoken,int select,int sell);
#ifdef _NEW_MANOR_LAW
BOOL NPC_AddItemVippointBuy(int meindex, int talker,int itemID,int kosuu,double rate,int iCostVippoint,int iChangeItemCost);
#else
BOOL NPC_AddItemVippointBuy(int meindex, int talker,int itemID,int kosuu,double rate);
#endif
int NPC_SellItemVippointstrsStr(int itemindex,int flg,double rate,char *argtoken,int select,int sell);
void NPC_LimitItemVippointShop(int meindex,int talker,int select);
void NPC_VippointExpressmanCheck(int meindex,int talker);
enum{
NPC_SHOP_WORK_NO = CHAR_NPCWORKINT1,
NPC_SHOP_WORK_EV = CHAR_NPCWORKINT2,
NPC_SHOP_WORK_EXPRESS = CHAR_NPCWORKINT3,
};
typedef struct {
char arg[32];
int type;
}NPC_Shop;
static NPC_Shop TypeTable[] = {
{ "FIST", 0 }, //È­
{ "AXE", 1 }, //¸«
{ "CLUB", 2 }, //¹÷°ô
{ "SPEAR", 3}, //ì
{ "BOW", 4}, //¹­
{ "SHIELD", 5}, //¶Ü
{ "HELM", 6 }, //Í·¿ø
{ "ARMOUR", 7 }, //¿ø¼×
{ "BRACELET", 8}, //ÊÖïí
{ "ANCLET", 9 }, //õ×ÊÎ
{ "NECKLACE", 10}, //ÏîÁ´
{ "RING", 11}, //½äÖ¸
{ "BELT", 12}, //Ñü´ø
{ "EARRING", 13}, //¶ú»·
{ "NOSERING", 14}, //±Ç»·
{ "AMULET", 15}, //»¤Éí·û
{ "OTHER", 16},
{ "BOOMERANG", 17}, //»ØÁ¦±ê
{ "BOUNDTHROW", 18},
{ "BREAKTHROW", 19}, //ͶÖÀÎï
#ifdef _ITEM_TYPETABLE
{ "DISH", 20},
{ "METAL", 21},
{ "JEWEL", 22},
{ "WARES", 23},
{ "WBELT", 24},
{ "WSHIELD", 25},
{ "WSHOES", 26},
{ "WGLOVE", 27},
{ "ANGELTOKEN", 28},
{ "HEROTOKEN", 29},
#endif
{ "ACCESSORY", 30}, //Åä¼þ
{ "OFFENCE", 40}, //¹¥»÷
{ "DEFENCE", 50}, //·ÀÓù
};
BOOL NPC_ItemVippointShopInit( int meindex )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEITEMSHOP );
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("GetArgStrErr");
return FALSE;
}
if(strstr(argstr,"LIMITSHOP") != NULL) {
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_NO, 1);
}else{
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_NO, 0);
}
if(strstr( argstr, "EVENT") != NULL) {
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_EV, 1);
}else{
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_EV, 0);
}
if(strstr( argstr, "EXPRESS") != NULL) {
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_EXPRESS, 1);
}else{
CHAR_setWorkInt( meindex, NPC_SHOP_WORK_EXPRESS, 0);
}
return TRUE;
}
void NPC_ItemVippointShopTalked( int meindex , int talker , char *szMes ,int color )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buff[1024];
char buf2[256];
char token[1024];
int i = 1;
BOOL sellonlyflg = FALSE;
char sellmsg[1024];
if( CHAR_getInt( talker , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {
return;
}
if(NPC_Util_isFaceToFace( meindex, talker, 2) == FALSE) {//½»Ì¸Ê±¼ì²éÊÇ·ñÃæ¶ÔÃæ
if( NPC_Util_CharDistance( talker, meindex ) > 1) return; //Èô¾àÀë´óì¶1Ìø³ö
}
//È¡µÃnpcÂòÂôÉ趨µµÄÚµÄÄÚÈÝ,ÈôΪNULL,Ôò´íÎó
if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL){
print("itemshopGetArgStrErr");
return;
}
//È¡µÃNPCÖ»ÄÜÂôµÄѶϢ
if( NPC_Util_GetStrFromStrWithDelim( argstr, "sellonly_msg", token, sizeof( token)) != NULL){
sellonlyflg = TRUE; //NPC²»ÄÜÂòÍæ¼ÒµÄ¶«Î÷
strcpysafe(sellmsg, sizeof( sellmsg), token);//ÀýÈç:sellmsgµÄÖµ¿ÉÄÜÊÇ->²¢²»ÊÇרÃÅÊÕÂò¶«Î÷µÄµê¡£
}
//È¡µÃÍæ¼ÒÂò¶«Î÷µÄÖ¸Áî. buffΪһ´®Âò¶«Î÷Ö¸ÁîµÄ×Ö´®,ÀýÈç:Âò,¹ºÂò,¸ÐлÄú,kau,buy,menu,лл,Âò¶«Î÷,µ±Íæ¼Ò´ò³öÕâЩ×Ö¾äʱ,¾Í¿ÉÒÔÂò¶«Î÷ÁË
if( NPC_Util_GetStrFromStrWithDelim( argstr, "buy_msg", buff, sizeof( buff)) != NULL ){
while(getStringFromIndexWithDelim(buff,",",i,buf2,sizeof(buf2)) != FALSE ){
i++; //ÈôÂò¶«Î÷µÄÖ¸ÁîÓÐ8¸ö,i¾Í»á¼Óµ½8
if( strstr( szMes, buf2) != NULL) {
if( CHAR_getWorkInt( meindex, NPC_SHOP_WORK_EV) == 0) {
if( CHAR_getWorkInt( meindex, NPC_SHOP_WORK_NO) == 1) {
if( sellonlyflg ) {
NPC_ItemVippointShop_selectWindow( meindex, talker, 3, -1);
return;
}
}else{
NPC_ItemVippointShop_selectWindow( meindex, talker, 1, -1);
return;
}
}else{
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_NO) == 1) {
if( sellonlyflg) {
NPC_ItemVippointShop_selectWindow( meindex, talker, 3, -1);
return;
}
}else{
NPC_ItemVippointShop_selectWindow( meindex, talker, 1, -1);
return;
}
return;
}
}
}
}
i=1;
//È¡µÃÍæ¼ÒÂô¶«Î÷µÄÖ¸Áî. buffΪһ´®Âô¶«Î÷Ö¸ÁîµÄ×Ö´®,ÀýÈç:Âô¶«Î÷,Âô,sell,uru µ±Íæ¼Ò´ò³öÕâЩ×Ö¾äʱ,¾Í¿ÉÒÔÂô¶«Î÷ÁË
if( NPC_Util_GetStrFromStrWithDelim( argstr, "sell_msg", buff, sizeof( buff)) != NULL ){
while( getStringFromIndexWithDelim(buff,",", i,buf2,sizeof(buf2)) != FALSE ){
i++;
if(strstr(szMes,buf2) != NULL) {
NPC_ItemVippointShop_selectWindow( meindex, talker, 2, -1);
return;
}
}
}
i = 1;
//ÆäËüѶϢ
if( NPC_Util_GetStrFromStrWithDelim( argstr, "other_msg", buff, sizeof( buff)) != NULL ){
while(getStringFromIndexWithDelim( buff, ",", i, buf2, sizeof( buf2)) != FALSE ){
i++;
if(strstr(szMes,buf2) != NULL) {
if(NPC_Util_GetStrFromStrWithDelim( argstr, "hint_msg",
token, sizeof( token)) != NULL)
{
CHAR_talkToCli( talker, meindex, token, CHAR_COLORWHITE);
return;
}
}
}
}
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_NO) == 1) {
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_EV) == 1) {
if( sellonlyflg) {
CHAR_talkToCli( talker, meindex, sellmsg, CHAR_COLORWHITE);
return;
}
}else{
if( sellonlyflg) {
NPC_ItemVippointShop_selectWindow( meindex, talker, 3, -1);
return;
}
}
}else{
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_EV) == 1) {
if( sellonlyflg) {
CHAR_talkToCli( talker, meindex, sellmsg, CHAR_COLORWHITE);
return;
}
}else{
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_EXPRESS) == 1) {
NPC_VippointExpressmanCheck( meindex, talker);
}else{
NPC_ItemVippointShop_selectWindow( meindex, talker, 0, -1);
}
}
}
}
static void NPC_ItemVippointShop_selectWindow( int meindex, int talker, int num,int select)
{
switch( num) {
case 0:
CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);//´«ËͽðÇ®,Èô100Ôª ËͳöÈ¥µÄ×ÊÁϸñʽ¿ÉÄÜΪ P8Nz2|100|
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_EXPRESS) == 1 ) {
if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_NO) ==0 ) {
NPC_VippointExpressmanCheck( meindex, talker);//³¤Ã«Ïó¿ìµÝ
}
}else if(CHAR_getWorkInt( meindex, NPC_SHOP_WORK_NO) == 1) {
}else{
NPC_ItemVippointShop_Menu( meindex, talker);//Ñ¡Ôñ(Âò,Âô,À뿪)µÄСÊÓ´°
}
break;
case 1://½øÈëÂòÊÓ´°
CHAR_sendStatusString( talker,"I");//´«ËÍÍæ¼ÒÉíÉÏËùÓеĵÀ¾ß¸øClient
NPC_ItemVippointShop_BuyMain( meindex, talker, select);
break;
case 2://½øÈëÂôÊÓ´°
//CHAR_sendStatusString( talker,"I");
//NPC_ItemVippointShop_SellMain( meindex, talker, select);
CHAR_talkToCli( talker, meindex, "´ËNPCÎ޴˹¦ÄÜ£¡",CHAR_COLORWHITE);
break;
case 3:
NPC_LimitItemVippointShop( meindex, talker, select);
break;
}
}
void NPC_ItemVippointShopWindowTalked( int meindex, int talkerindex,
int seqno, int select, char *data)
{
if( NPC_Util_CharDistance( talkerindex, meindex ) > 3) {
CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD);
return;
}
makeStringFromEscaped( data);
switch( seqno){
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_STARTMSG:
if(atoi( data) == 1 ) NPC_ItemVippointShop_selectWindow(meindex, talkerindex, 1, -1);
if(atoi( data) == 2) NPC_ItemVippointShop_selectWindow(meindex, talkerindex, 2, -1);
if(atoi( data) == 3) return;/*--ÖÏÊÖØÆئÖÐ--*/
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_BUY_MSG:
if(NPC_SetNewItemVippoint(meindex , talkerindex, data) == TRUE) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 1, 0);
}else{
NPC_ItemVippointShop_selectWindow( meindex, talkerindex ,0, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_SELL_MSG:
if(NPC_SellNewItemVippoint(meindex , talkerindex, data) == TRUE) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 2, 0);
}else{
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 0, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_LIMIT:
if(select == WINDOW_BUTTONTYPE_YES) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex ,2, -1);
}else if(select == WINDOW_BUTTONTYPE_NO) {
return;
}else if(select == WINDOW_BUTTONTYPE_OK) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 2, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_EXPRESS:
if(atoi(data) == 2) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 1, -1);
}else if(atoi( data) == 4) {
NPC_ItemVippointShop_selectWindow( meindex, talkerindex, 2, -1);
}
}
}
void NPC_ItemVippointShop_BuyMain(int meindex,int talker,int before )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[NPC_UTIL_GETARGSTR_BUFSIZE];
int fd = getfdFromCharaIndex( talker);
char token2[NPC_UTIL_GETARGSTR_BUFSIZE];
char buff2[256];
char buff[256];
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("itemshop_GetArgStr_Err");
return;
}
#ifdef _ADD_STATUS_2
sprintf(token,"FAME|%d",CHAR_getInt(talker,CHAR_FAME)/100);
lssproto_S2_send(fd,token);
#endif
if(before != -1) {
sprintf(token,"0|0");
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN,
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_BUY_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}else{
NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", buff, sizeof( buff));
NPC_Util_GetStrFromStrWithDelim( argstr, "buy_main", buff2, sizeof( buff2));
sprintf(buff2,"%s\n¡¾»áÔ±µãÊý£º%d¡¿",buff2,sasql_vippoint(CHAR_getUseID(talker),0,0));
sprintf(token,"0|1|%d|%s|%s|%s|", CHAR_WINDOWTYPE_WINDOWITEMSHOP_STARTMSG,
CHAR_getChar( meindex, CHAR_NAME), buff, buff2);
NPC_Util_GetStrFromStrWithDelim( argstr, "what_msg", buff, sizeof( buff));
NPC_Util_GetStrFromStrWithDelim( argstr, "level_msg", buff2, sizeof( buff));
snprintf( token2, sizeof( token2), "%s|%s", buff, buff2);
strncat( token, token2, sizeof( token));
NPC_Util_GetStrFromStrWithDelim( argstr, "realy_msg", buff, sizeof( buff));
NPC_Util_GetStrFromStrWithDelim( argstr, "itemfull_msg", buff2, sizeof( buff2));
sprintf( token2, "|%s|%s", buff, buff2);
strncat(token , token2,sizeof(token));
strcpy(token2, "|");
NPC_GetItemVippointList( argstr, token2);
strncat( token, token2, sizeof( token));
}
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN,
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_BUY_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
void NPC_GetItemVippointList(char *argstr,char *argtoken)
{
int i = 1;
int tmp;
char *name ="\0";
char buff2[256];
#ifdef _NEW_MANOR_LAW
char buff3[NPC_UTIL_GETARGSTR_LINEMAX];
char buff4[256];
char buff5[NPC_UTIL_GETARGSTR_LINEMAX];
char buff6[256];
int iCostVippoint = 0;
int iChangeItemCost = 0;
#endif
char buff[NPC_UTIL_GETARGSTR_LINEMAX];
char token2[NPC_UTIL_GETARGSTR_BUFSIZE];
double rate = 1.0;
int loopcnt = 0;
if(NPC_Util_GetStrFromStrWithDelim( argstr, "buy_rate", buff2, sizeof( buff2))
!= NULL){
rate = atof( buff2);
}
#ifdef _NEW_MANOR_LAW
memset(buff3,0,sizeof(buff3));
memset(buff5,0,sizeof(buff5));
if(NPC_Util_GetStrFromStrWithDelim(argstr,"CostVippoint",buff3,sizeof(buff3)) == NULL) iCostVippoint = -1;
if(NPC_Util_GetStrFromStrWithDelim(argstr,"ChangeItemCost",buff5,sizeof(buff5)) == NULL) iChangeItemCost = -1;
#endif
if( NPC_Util_GetStrFromStrWithDelim( argstr, "ItemList", buff, sizeof( buff)) != NULL ){
while( getStringFromIndexWithDelim(buff,",",i,buff2,sizeof(buff2)) !=FALSE ) {
#ifdef _NEW_MANOR_LAW
if(iCostVippoint > -1){
if(getStringFromIndexWithDelim(buff3,",",i,buff4,sizeof(buff4)) != FALSE) iCostVippoint = atoi(buff4);
}
if(iChangeItemCost > -1){
if(getStringFromIndexWithDelim(buff5,",",i,buff6,sizeof(buff6)) != FALSE) iChangeItemCost = atoi(buff6);
}
#endif
i++;
if(strstr( buff2, "-") == NULL) {
name = ITEM_getNameFromNumber( atoi(buff2));
if(name == "\0") continue;
loopcnt++;
if(loopcnt == MAXSHOPITEM) break;
#ifdef _NEW_MANOR_LAW
NPC_ItemVippointStrStr( atoi( buff2), rate, name, token2,iCostVippoint,iChangeItemCost);
#else
NPC_ItemVippointStrStr( atoi( buff2), rate, name, token2);
#endif
strncat( argtoken, token2, sizeof(token2));
}else{
int start;
int end;
getStringFromIndexWithDelim( buff2, "-", 1, token2, sizeof(token2));
start = atoi( token2);
getStringFromIndexWithDelim( buff2, "-", 2 ,token2, sizeof(token2));
end = atoi( token2);
if(start > end){
tmp = start;
start = end;
end = tmp;
}
end++;
for(; start < end ; start++ ) {
/*--ÒýÄÚoó¡???--*/
name = ITEM_getNameFromNumber( start );
if(name == "\0") continue;
loopcnt++;
if(loopcnt == MAXSHOPITEM) break;
#ifdef _NEW_MANOR_LAW
NPC_ItemVippointStrStr( start, rate, name, token2,iCostVippoint,iChangeItemCost);
#else
NPC_ItemVippointStrStr( start, rate, name, token2);
#endif
strncat( argtoken, token2, sizeof(token2));
}
}
}
}
}
#ifdef _NEW_MANOR_LAW
void NPC_ItemVippointStrStr(int itemID,double rate,char *name,char *token2,int iCostVippoint,int iChangeItemCost)
#else
void NPC_ItemVippointStrStr(int itemID,double rate,char *name,char *token2)
#endif
{
int gold;
int level;
int graNo;
char info[1024];
char escape[256];
#ifdef _NEW_MANOR_LAW
if(iChangeItemCost > -1) gold = iChangeItemCost;
else
#endif
gold = ITEM_getcostFromITEMtabl( itemID);
level = ITEM_getlevelFromITEMtabl( itemID);
graNo = ITEM_getgraNoFromITEMtabl( itemID);
strcpy(escape,ITEM_getItemInfoFromNumber( itemID));
gold=(int)(gold * rate);
makeEscapeString( escape, info, sizeof( info));
makeEscapeString( name, escape, sizeof( escape));
char tempbuf[64];
if(iCostVippoint==0) sprintf(tempbuf,"Ãâ·ÑÁìÈ¡ ");
else if(iCostVippoint<10) sprintf(tempbuf," %dµã ",iCostVippoint);
else if(iCostVippoint<100) sprintf(tempbuf," %dµã ",iCostVippoint);
else if(iCostVippoint<1000) sprintf(tempbuf," %dµã ",iCostVippoint);
else if(iCostVippoint<10000) sprintf(tempbuf," %dµã ",iCostVippoint);
else if(iCostVippoint<100000) sprintf(tempbuf," %dµã ",iCostVippoint);
else sprintf(tempbuf,"%dµã ",iCostVippoint);
char newescape[256];
sprintf(newescape,"%s%s",tempbuf,escape);
#ifdef _NEW_MANOR_LAW
sprintf(token2,"%s|0|%d|%d|%d|%s|%d|",newescape,level,gold,graNo,info,-1);
#else
sprintf( token2, "%s|0|%d|%d|%d|%s|", newescape, level, gold, graNo, info);
#endif
}
BOOL NPC_SetNewItemVippoint(int meindex,int talker,char *data)
{
char buf[1024];
char buff2[128];
#ifdef _NEW_MANOR_LAW
char buff3[1024];
char buff4[128];
char buff5[1024];
char buff6[128];
int iCostVippoint = 0;
int iChangeItemCost = 0;
#endif
int i = 1, j = 1;
int select;
int kosuu = 0;
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
double rate = 1.0;
int gold = 0;
int kosuucnt = 0;
int itemindex;
/*--߯ÔÈ»¯ÎåÐ×·¸¡õÕýë±¾ÒÁÛÍÐþÎçòÛÐѱåÛÐÝ©--*/
getStringFromIndexWithDelim( data, "|", 1, buf, sizeof( buf));
select = atoi(buf);
if(select == 0) return FALSE;
getStringFromIndexWithDelim( data, "|", 2, buf, sizeof( buf));
kosuu = atoi(buf);
if( kosuu <= 0 ) return FALSE;
/*--òÛÐѼ°ÃñÄáÓÀÛÍ ñ²±åòå Ô¾®£¢-*/
for( i = CHAR_STARTITEMARRAY ; i < CHAR_MAXITEMHAVE ; i++ ) {
itemindex = CHAR_getItemIndex( talker , i );
if( !ITEM_CHECKINDEX( itemindex) ) {
kosuucnt++;
}
}
/*--߯ÔÈ»¯ Ð×òÛÐѼ° »¥ ¶Ë¼°òÛÐÑ ÈÓ¡õÌï´¡ ·½Ô»ÄôÖÐÎçÔƾ®ØÆÖм°Æ¥--*/
/*--ÈÓ¡õÌï¡õ´¡¼° ë ľÔÂ--*/
if( kosuucnt < kosuu) kosuu = kosuucnt;
/*--δ·ò¼°èëÄþ·´¾Þ·Â¡õ--*/
if(kosuucnt == 0 ) return FALSE;
i = 1;
/*--ÔÆ÷Ò¼°°×ÑëÄÌ»ï ÖÐÛè·´°×ÑëÄ̻ﻥ·°Øêئ¾®ÔÈÐ×ÎçÎå·´±Î --*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return FALSE;
}
/*---ÒÁ¡õÐþëäú ئØêľÈÉ1.0)-*/
if(NPC_Util_GetStrFromStrWithDelim( argstr, "buy_rate", buf, sizeof( buf)) != NULL) {
rate= atof( buf);
}
#ifdef _NEW_MANOR_LAW
memset(buff3,0,sizeof(buff3));
memset(buff5,0,sizeof(buff5));
if(NPC_Util_GetStrFromStrWithDelim(argstr,"CostVippoint",buff3,sizeof(buff3)) == NULL) iCostVippoint = -1;
if(NPC_Util_GetStrFromStrWithDelim(argstr,"ChangeItemCost",buff5,sizeof(buff5)) == NULL) iChangeItemCost = -1;
#endif
/*--ʧÄÌ Ø©¼°Ü°µÑëµæµ¤Îç³ðÇ·-*/
if( NPC_Util_GetStrFromStrWithDelim( argstr, "ItemList", buf, sizeof( buf)) != NULL ){
while(getStringFromIndexWithDelim(buf , "," , j, buff2, sizeof(buff2)) != FALSE ){
#ifdef _NEW_MANOR_LAW
if(iCostVippoint > -1){
if(getStringFromIndexWithDelim(buff3,",",j,buff4,sizeof(buff4)) != FALSE) iCostVippoint = atoi(buff4);
}
if(iChangeItemCost > -1){
if(getStringFromIndexWithDelim(buff5,",",j,buff6,sizeof(buff6)) != FALSE) iChangeItemCost = atoi(buff6);
}
#endif
j++;
/*-- "-"»¥Ö³Òýľ»¯ÖÐÔ¾®Éýµ¤¾®--*/
if(strstr( buff2, "-") == NULL) {
if( ITEM_getcostFromITEMtabl(atoi(buff2)) !=-1) {
if ( i == select) {
/*---ʧÄÌ Ø©¼°×ÛÔÀ---*/
/*--òÛÐÑÛÐ×ÛÔÀ--*/
#ifdef _NEW_MANOR_LAW
if(NPC_AddItemVippointBuy(meindex, talker,atoi(buff2),kosuu,rate,iCostVippoint,iChangeItemCost) != TRUE)
#else
if(NPC_AddItemVippointBuy(meindex, talker,atoi(buff2),kosuu,rate) != TRUE)
#endif
{
return FALSE;
}
return TRUE;
}
i++;
}
}else{
/*--ʧÄÌ Ø©»¥ 15-25 ¼°äßƥ˪ÈÕľÐ×èëÄþ--*/
int start;
int end;
/* "-"Æ¥à¼å©ÈÕľÐ×炙§¼°ÐÑ°ÀÎç ¼°ÐÑ°Àëäú --*/
getStringFromIndexWithDelim( buff2, "-", 1, argstr, sizeof(argstr));
start = atoi( argstr);
getStringFromIndexWithDelim( buff2, "-", 2 ,argstr, sizeof(argstr));
end = atoi( argstr);
end++;
/*-- į»¥ÝѱåئÔÈ»¯ÖÐÐ×ÈÕ£ý ľ׸ÒüÔÂ**/
if(start > end){
gold = start;
start = end;
end = gold;
}
/*--"-"Æ¥à¼å©ÈÕľÐ×Ûм°Ê§ÄÌ Ø©Ã«Ê÷ ë ÔÂ--*/
for(; start < end ; start++ ) {
if( ITEM_getcostFromITEMtabl( start) != -1) {
if ( i == select) {
/*---ʧÄÌ Ø©¼°×ÛÔÀ---*/
/*--òÛÐÑÛÐ×ÛÔÀ--*/
#ifdef _NEW_MANOR_LAW
if(NPC_AddItemVippointBuy(meindex, talker, start, kosuu, rate,iCostVippoint,iChangeItemCost) != TRUE)
#else
if(NPC_AddItemVippointBuy(meindex, talker, start, kosuu, rate) != TRUE)
#endif
{
return FALSE;
}
return TRUE;
}
i++;
}
}
}
}
}
return FALSE;
}
/*---------------------------------------------
*ʧÄÌ Ø©¼°Ü°µÑëµæµ¤
*--------------------------------------------*/
#ifdef _NEW_MANOR_LAW
BOOL NPC_AddItemVippointBuy(int meindex, int talker,int itemID,int kosuu,double rate,int iCostVippoint,int iChangeItemCost)
#else
BOOL NPC_AddItemVippointBuy(int meindex, int talker,int itemID,int kosuu,double rate)
#endif
{
int itemindex;
int i;
int gold;
int ret;
int maxgold;
#ifdef _NEW_MANOR_LAW
int iTotalCostVippoint = -1;
#endif
#ifdef _NEW_MANOR_LAW
if(iChangeItemCost > -1) gold = iChangeItemCost;
else
#endif
gold = ITEM_getcostFromITEMtabl( itemID);
gold = (int)(gold * rate);
maxgold = gold * kosuu;
if(CHAR_getInt( talker, CHAR_GOLD) < maxgold ) return FALSE;
#ifdef _NEW_MANOR_LAW
if(iCostVippoint > 0){
iTotalCostVippoint= iCostVippoint * kosuu;
if(sasql_vippoint(CHAR_getUseID(talker),0,0) < iTotalCostVippoint){
CHAR_talkToCli( talker, meindex, "ÄúµÄ»áÔ±µã²»×ã¡£",CHAR_COLORWHITE);
return FALSE;
}
}
#endif
// if( addNpcFamilyTax( meindex, talker, maxgold*0.4 ) )
// print(" FamilyTaxDone! ");
// else
// print(" FamilyTaxError!");
addNpcFamilyTax( meindex, talker, maxgold*0.4 );
for(i = 0 ; i < kosuu ; i++){
itemindex = ITEM_makeItemAndRegist( itemID);
if(itemindex == -1) return FALSE;
ret = CHAR_addItemSpecificItemIndex( talker, itemindex);
if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) {
print( "npc_itemshop.c: additem error itemindex[%d]\n", itemindex);
ITEM_endExistItemsOne( itemindex);
return FALSE;
}
CHAR_sendItemDataOne( talker, ret);
}
CHAR_DelGold( talker, maxgold);
#ifdef _NEW_MANOR_LAW
if(iTotalCostVippoint > 0){
sasql_vippoint( CHAR_getUseID(talker), -iTotalCostVippoint,1);
char tmpbuf[128];
sprintf( tmpbuf, "¿Û³ý%d»áÔ±µã", iTotalCostVippoint);
CHAR_talkToCli( talker, -1, tmpbuf, CHAR_COLORYELLOW);
}
//int fd = getfdFromCharaIndex( talker);
CHAR_charSaveFromConnect(talker, FALSE);
CHAR_talkToCli(talker, -1, "ϵͳΪÄã×Ô¶¯´æµµ£¡", CHAR_COLORRED);
#endif
//CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);
return TRUE;
}
//Ñ¡Ôñ (Âò,Âô,³öÈ¥) µÄСÊÓ´°
void NPC_ItemVippointShop_Menu(int meindex,int talker)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[NPC_UTIL_GETARGSTR_LINEMAX];
char buff[256];
int fd = getfdFromCharaIndex( talker);
//argstrÈ¡µÃÕû¸öÉ趨µµµÄѶϢ: ÀýÈç->buy_rate:1.0|sell_rate:0.2|buy_msg:Âò,¹ºÂò,¸ÐлÄú,kau,buy............. (ÖмäµÄ·Ö¸ñºÅÊǶÁÈëʱ¼ÓÈëµÄ)
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return;
}
//tokenΪÊÓ´°ÉÏÃæµÄtitleÎÄ×Ö ÀýÈç: ÈøÄ·¼ª¶ûµÄ·À¾ßµê|»¶Ó­¹âÁÙ
NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", buff, sizeof( buff));
#ifdef _NEW_MANOR_LAW
snprintf(token, sizeof(token),"%s|%s|%d",CHAR_getChar(meindex,CHAR_NAME),buff,CHAR_getInt(talker,CHAR_FAME)/100);
#else
snprintf(token, sizeof(token),"%s|%s",CHAR_getChar( meindex, CHAR_NAME), buff);
#endif
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMENU,
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_STARTMSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
void NPC_ItemVippointShop_SellMain(int meindex,int talker,int before)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[NPC_UTIL_GETARGSTR_BUFSIZE];
int fd = getfdFromCharaIndex( talker);
//È¡µÃnpcÉ趨×ÊÁÏ
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return;
}
#ifdef _ADD_STATUS_2
sprintf(token,"FAME|%d",CHAR_getInt(talker,CHAR_FAME)/100);
lssproto_S2_send(fd,token);
#endif
if(before != -1) {
sprintf(token,"1|0");
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN
+CHAR_getWorkInt(meindex,NPC_SHOP_WORK_NO),
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_SELL_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}else{
char token2[NPC_UTIL_GETARGSTR_BUFSIZE];
char buff2[256];
char buff[256];
NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", buff, sizeof( buff));
NPC_Util_GetStrFromStrWithDelim( argstr, "sell_main", buff2, sizeof( buff));
sprintf( token, "1|1|%d|%s|%s|%s|", CHAR_WINDOWTYPE_WINDOWITEMSHOP_STARTMSG,
CHAR_getChar( meindex, CHAR_NAME), buff, buff2);
NPC_Util_GetStrFromStrWithDelim( argstr, "stone_msg", buff, sizeof( buff));
if(CHAR_getWorkInt(meindex,NPC_SHOP_WORK_EXPRESS) == 1 ) {
NPC_Util_GetStrFromStrWithDelim( argstr, "exrealy_msg", buff2, sizeof(buff2));
}else{
NPC_Util_GetStrFromStrWithDelim( argstr, "realy_msg", buff2, sizeof( buff2));
}
sprintf( token2,"%s|%s|", buff, buff2);
NPC_GetLimtItemVippointList( talker,argstr, token2, -1);//ÏêϸÍæ¼ÒÒªÂô³öµÄµÀ¾ß×ÊÁÏ
strncat( token, token2, sizeof( token));
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN+
CHAR_getWorkInt(meindex,NPC_SHOP_WORK_NO),
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_SELL_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
}
int NPC_GetLimtItemVippointList(int talker, char *argstr, char* token2,int sell)
{
char token[NPC_UTIL_GETARGSTR_LINEMAX];
char buff[NPC_UTIL_GETARGSTR_LINEMAX];
char token3[NPC_UTIL_GETARGSTR_LINEMAX];
int k = 0 , i = 1 , j = 0;
int imax;
int itemtype = 0;
int itemindex;
int okflg = 0;
char buf[256];
int flg=0;
int cost;
if(sell == -1 ){
i = CHAR_STARTITEMARRAY;
imax = CHAR_MAXITEMHAVE;
flg = -1;
}else{
i= sell;
imax= sell + 1;
flg = 1;
}
for( ; i < imax ; i++ ){
okflg=0;
itemindex = CHAR_getItemIndex( talker , i );
if( ITEM_CHECKINDEX( itemindex) ){
if( NPC_Util_GetStrFromStrWithDelim( argstr,"LimitItemType", buff, sizeof( buff)) != NULL ){
k = 1;
while(getStringFromIndexWithDelim(buff , "," , k, token, sizeof(token)) != FALSE ){
#ifdef _ITEM_TYPETABLE
int cmpmaxitem = sizeof(TypeTable)/sizeof(TypeTable[0]);
#endif
k++;
#ifdef _ITEM_TYPETABLE
for(j = 0 ; j < cmpmaxitem ; j++){
#else
for(j = 0 ; j < ITEM_CATEGORYNUM+3 ; j++){
#endif
if(strcmp( TypeTable[ j].arg , token) == 0 ) {
itemtype = TypeTable[ j].type;
if(ITEM_getInt(itemindex,ITEM_TYPE) == itemtype) {
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat( token2, token3, sizeof( token3));
okflg = 1;
}else if(itemtype == 30){
if( 8 <= ITEM_getInt(itemindex,ITEM_TYPE)
&& (ITEM_getInt(itemindex,ITEM_TYPE) <= 15) ){
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat(token2,token3,sizeof(token3));
okflg = 1;
}
}else if(itemtype == 40){
if(( 0 <= ITEM_getInt(itemindex,ITEM_TYPE)
&& (ITEM_getInt(itemindex,ITEM_TYPE) <= 4))
|| (17 <= ITEM_getInt(itemindex,ITEM_TYPE)
&& (ITEM_getInt(itemindex,ITEM_TYPE) <= 19))) {
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat(token2,token3,sizeof(token3));
okflg = 1;
}
}else if(itemtype == 50){
if( 5 <= ITEM_getInt(itemindex,ITEM_TYPE)
&& (ITEM_getInt(itemindex,ITEM_TYPE) <= 7) ){
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat(token2,token3,sizeof(token3));
okflg = 1;
}
}
break;
}
}
if(okflg == 1) break;
}
}
if( (NPC_Util_GetStrFromStrWithDelim( argstr, "LimitItemNo", buff,sizeof( buff))!= NULL) && okflg == 0 ){
k = 1;
while(getStringFromIndexWithDelim(buff , "," , k, token, sizeof(token)) != FALSE ){
k++;
if(strstr( token, "-")==NULL && strcmp(token,"") != 0) {
if(ITEM_getInt(itemindex,ITEM_ID) == atoi(token)) {
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat(token2,token3,sizeof(token3));
okflg=1;
}
}else if (strstr( token, "-") != NULL){
int start, end;
int work;
if( getStringFromIndexWithDelim( token, "-", 1, buf, sizeof(buf)) == FALSE )
return -1;
start = atoi( buf);
if( getStringFromIndexWithDelim( token, "-", 2 ,buf, sizeof(buf)) == FALSE )
return -1;
end = atoi( buf);
if(start > end){
work = start;
start = end;
end = work;
}
end++;
if( (start <= ITEM_getInt(itemindex,ITEM_ID)) && (ITEM_getInt(itemindex,ITEM_ID) < end) ){
cost = NPC_GetSellItemVippointList(itemindex,0,argstr,token3,i,sell);
if(cost != -1) return cost;
strncat(token2,token3,sizeof(token3));
okflg = 1;
}
}
}
}
if(okflg == 0) {
cost = NPC_GetSellItemVippointList(itemindex, 1, argstr, token3, i, sell);
if(sell != -1) return -1;
strncat( token2, token3, sizeof( token3));
}
}
}
return -1;
}
/*----------------------------------------------------------
ÛÍ·ÂÄÌʧ¼þÐþ±å˪ññÔÊÔÂÃó·òÐþÎì»ï¼°×ÛÔÀ
*----------------------------------------------------------*/
int NPC_GetSellItemVippointList(int itemindex,int flg, char *argstr,char *argtoken,int select,int sell)
{
char buff[256];
double rate = 0.2;
char buff2[256];
char buff3[64];
int k = 1;
int cost = -1;
if(NPC_Util_GetStrFromStrWithDelim( argstr,"special_item",buff, sizeof( buff)) != NULL){
if(NPC_Util_GetStrFromStrWithDelim( argstr,"special_rate",buff2, sizeof( buff2)) != NULL ){
rate = atof(buff2);
}else{
rate = 1.2;
}
while(getStringFromIndexWithDelim(buff , "," , k, buff2, sizeof(buff2)) !=FALSE ){
k++;
if(strstr( buff2, "-") == NULL && strcmp(buff2,"") != 0) {
if(ITEM_getInt(itemindex,ITEM_ID) == atoi(buff2)){
cost = NPC_SellItemVippointstrsStr( itemindex,0, rate, argtoken,select,sell);
return cost;
}
}else if (strstr( buff2, "-") != NULL){
int start;
int end;
int work;
getStringFromIndexWithDelim( buff2, "-", 1, buff3, sizeof(buff3));
start = atoi( buff3);
getStringFromIndexWithDelim( buff2, "-", 2 ,buff3, sizeof(buff3));
end = atoi( buff3);
if(start > end){
work = start;
start = end;
end = work;
}
end++;
if( (start <= ITEM_getInt(itemindex,ITEM_ID)) && (ITEM_getInt(itemindex,ITEM_ID) < end) ){
cost = NPC_SellItemVippointstrsStr( itemindex,0, rate, argtoken,select,sell);
return cost;
}
}
}
}
if( NPC_Util_GetStrFromStrWithDelim( argstr,"sell_rate",buff, sizeof( buff)) != NULL ){
rate = atof(buff);
cost = NPC_SellItemVippointstrsStr( itemindex, flg ,rate, argtoken,select,sell);
return cost;
}
return cost;
}
int NPC_SellItemVippointstrsStr(int itemindex,int flg,double rate,char *argtoken,int select,int sell)
{
int cost;
char escapedname[256];
char name[256];
char *eff;
cost = ITEM_getInt( itemindex, ITEM_COST);
cost = (int)(cost * rate);
if(sell != -1) return cost;
strcpy( escapedname, ITEM_getChar( itemindex, ITEM_SECRETNAME));
makeEscapeString( escapedname, name, sizeof( name));
eff=ITEM_getChar(itemindex, ITEM_EFFECTSTRING);
makeEscapeString( eff, escapedname, sizeof(escapedname));
sprintf( argtoken,
#ifdef _ITEM_PILENUMS
"%s|%d|%d|%d|%s|%d|%d|",
#else
"%s|%d|%d|%d|%s|%d|",
#endif
name, flg, cost,
ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER),
escapedname, select
#ifdef _ITEM_PILENUMS
,ITEM_getInt( itemindex, ITEM_USEPILENUMS)
#endif
);
return -1;
}
BOOL NPC_SellNewItemVippoint(int meindex,int talker,char *data)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[256], token2[256];
int cost, k, select, itemindex;
int MyGold, MaxGold, sellnum=1;
MaxGold = CHAR_getMaxHaveGold( talker);
MyGold = CHAR_getInt( talker, CHAR_GOLD);
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("GetArgStrErr");
return FALSE;
}
getStringFromIndexWithDelim(data , "|" ,1, token, sizeof( token));
select = atoi(token);
#ifdef _ITEM_PILENUMS
getStringFromIndexWithDelim(data , "|" ,2, token, sizeof( token));
sellnum = atoi(token);
#endif
if( select < CHAR_STARTITEMARRAY || select >= CHAR_MAXITEMHAVE ) return FALSE;
k = select;
itemindex = CHAR_getItemIndex( talker , k);
cost = NPC_GetLimtItemVippointList( talker,argstr, token2,select);
if( cost == -1 || (cost*sellnum)+MyGold >= MaxGold || !ITEM_CHECKINDEX( itemindex) ){
int fd = getfdFromCharaIndex( talker);
sprintf(token,"\n\n°¥Ñ½!¶Ô²»Æð" "\n\n¶Ô²»Æð°¡ ! ¿É²»¿ÉÒÔÔÙÑ¡Ò»´ÎÄØ£¿" );
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_OK,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_LIMIT,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
return FALSE;
}
#ifdef _ITEM_PILENUMS
if( NPC_DelItem( talker, k, sellnum) == FALSE ) return FALSE;
#else
{
LogItem(
CHAR_getChar( talker, CHAR_NAME ),
CHAR_getChar( talker, CHAR_CDKEY ),
#ifdef _add_item_log_name // WON ADD ÔÚitemµÄlogÖÐÔö¼ÓitemÃû³Æ
itemindex,
#else
ITEM_getInt( itemindex, ITEM_ID ),
#endif
"Sell(ÂôµÀ¾ß)",
CHAR_getInt( talker,CHAR_FLOOR),
CHAR_getInt( talker,CHAR_X ),
CHAR_getInt( talker,CHAR_Y ),
ITEM_getChar( itemindex, ITEM_UNIQUECODE),
ITEM_getChar( itemindex, ITEM_NAME),
ITEM_getInt( itemindex, ITEM_ID)
);
}
CHAR_DelItem( talker, k);
#endif
CHAR_AddGold( talker, cost*sellnum);
CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);
return TRUE;
}
void NPC_LimitItemVippointShop(int meindex,int talker,int select)
{
int fd = getfdFromCharaIndex( talker);
char token[NPC_UTIL_GETARGSTR_LINEMAX];
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buf[1024];
if( NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return;
}
if(NPC_Util_GetStrFromStrWithDelim( argstr, "sellonly_msg", buf, sizeof( buf))!=NULL){
sprintf(token,"\n\n%s", buf);
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE,
WINDOW_BUTTONTYPE_YESNO,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_LIMIT,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}else{
CHAR_talkToCli( talker, meindex, "ÕâÊÇÂòÂôרÃŵꡣ",CHAR_COLORWHITE);
}
return;
}
void NPC_VippointExpressmanCheck(int meindex,int talker)
{
int fd = getfdFromCharaIndex( talker);
char token[1024];
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buf[1024];
if( NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return;
}
NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", buf, sizeof( buf));
sprintf(token,"4\n¡¡¡¡¡¡¡¡¡¡¡¡¡¡%s\n\n%s"
"\n\n¡¡¡¡¡¡¡¡¡¡£¼ ´ò¹¤ £¾¡¡¡¡¡¡"
"\n\n¡¡¡¡¡¡¡¡ £¼½»¸¶ÐÐÀ"
,CHAR_getChar(meindex,CHAR_NAME),buf);
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT,
WINDOW_BUTTONTYPE_CANCEL,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_EXPRESS,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
return;
}