📄 npc_petshop.c.bak
字号:
#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 "readmap.h"#include "battle.h"#include "log.h"/* 丢永本□斥及enum */enum { NPC_PETSHOP_MSG_OVER, NPC_PETSHOP_MSG_MAIN, NPC_PETSHOP_MSG_REALY, NPC_PETSHOP_MSG_THANKS, NPC_PETSHOP_MSG_COST, NPC_PETSHOP_MSG_POOLTHANKS, NPC_PETSHOP_MSG_POOLFULL, NPC_PETSHOP_MSG_GETFULL,};typedef struct { char option[32]; char defaultmsg[128];}NPC_PETSHOP_MSG;NPC_PETSHOP_MSG shopmsg[] = { { "over_msg", "钱用完罗!没问题吗?"}, { "main_msg", "欢迎"}, { "realy_msg", "真的可以吗?"}, { "thanks_msg", "谢谢!"}, { "cost_msg", "钱不够喔!"}, { "pooltanks_msg", "谢谢!"}, { "poolfull_msg", "超过的无法处理喔"}, { "getfull_msg", "你不是有很多宠物吗"} };#define PETCOST 10void NPC_PetDate(int meindex,int toindex,int select,char *token);void NPC_PetDate2(int meindex,int talker,int select,char *token);void NPC_PetDate3(int meindex,int talker,int select,char *token);void NPC_PetDel2( int meindex, int talker, int select, char *token);void NPC_PetDel3( int meindex, int talker, int select, char *token);void NPC_getDrawPet( int meindex, int toindex, char *token, int *buttontype, int select);static void NPC_PetShop_selectWindow( int meindex, int toindex, int num,int select);int NPC_GetCost(int meindex,int talker,int petindex);void NPC_PetDel(int meindex, int toindex,int select,char* token);void NPC_MaxGoldOver(int meindex,int toindex,int select,char *token);void NPC_DepotPet_CheckRepeat_del( int charaindex, int petindex);// 仃 木嗯喊煌遥挚#define NPC_GETPOOLCOST( talker) ( 50 + CHAR_getInt( talker, CHAR_LV)*4)// 仃 木嗯犯白巧伙玄#define NPC_PETSHOP_POOLCOST_DEFAULT 200/*--伐□弁 及割忡--*/enum { CHAR_WORK_NOMALRATE = CHAR_NPCWORKINT1, CHAR_WORK_SPECIALRATE = CHAR_NPCWORKINT2, CHAR_WORK_POOLCOST = CHAR_NPCWORKINT3, CHAR_WORK_POOLFLG = CHAR_NPCWORKINT4,};/********************************** 赓渝质 *********************************/BOOL NPC_PetShopInit( int meindex ){ char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; char buf[256]; double rate; int intrate;// int cost; int tmp; /*--正奶皿涩烂--*/ CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPESTONESHOP ); if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL){ print("GetArgStrErr"); return FALSE; } /*--伊□玄毛铵户卞筏盛今六化云仁*/ if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_rate", buf, sizeof( buf)) != NULL){ rate = atof( buf); intrate = ( int)( rate *1000); CHAR_setWorkInt( meindex , CHAR_WORK_NOMALRATE ,intrate ); }else{ CHAR_setWorkInt( meindex , CHAR_WORK_NOMALRATE ,1000 ); } /*--旦矢扑乓伙伊□玄手筏盛今六化云仁--*/ if(NPC_Util_GetStrFromStrWithDelim( npcarg, "special_rate", buf, sizeof( buf))!=NULL) { rate = atof( buf); intrate = ( int)( rate *1000); CHAR_setWorkInt( meindex , CHAR_WORK_SPECIALRATE ,intrate ); }else{ CHAR_setWorkInt( meindex , CHAR_WORK_SPECIALRATE ,1200 ); } // 仃 木嗯筏盛 //cost = NPC_Util_GetNumFromStrWithDelim( npcarg, "pool_cost"); //if( cost == -1 ) cost = NPC_PETSHOP_POOLCOST_DEFAULT; //CHAR_setWorkInt( meindex, CHAR_WORK_POOLCOST, cost); // 仃 木互请 月井升丹井毛筏盛 tmp = NPC_Util_GetNumFromStrWithDelim( npcarg, "pool_flg"); if( tmp != 1 ) tmp = 0; CHAR_setWorkInt( meindex, CHAR_WORK_POOLFLG, tmp); return TRUE;}/********************************** 仄井仃日木凶凛及质 *********************************/void NPC_PetShopTalked( int meindex , int talkerindex , char *szMes ,int color ){ /* 皿伊奶乩□卞覆仄化分仃 杀允月 */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- 及蟆卞中月井升丹井"--*/ if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){ /* ㄠ弘伉永玉动 及心 */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } /*--伐□弁及赓渝祭--*/ CHAR_setWorkInt(talkerindex,CHAR_WORKSHOPRELEVANT,0); /*-反元户及蓟 --*/ NPC_PetShop_selectWindow( meindex, talkerindex,0,-1);}/********************************** 苇日木凶凛及质 *********************************/void NPC_PetShopLooked( int meindex , int lookedindex){ /* 皿伊奶乩□卞覆仄化分仃 杀允月 */ if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ㄠ弘伉永玉动 及心 */ if( NPC_Util_CharDistance( lookedindex, meindex ) > 2) return; /*--伐□弁及赓渝祭--*/// CHAR_setWorkInt(lookedindex,CHAR_WORKSHOPRELEVANT,0);// NPC_PetShop_selectWindow( meindex, lookedindex,0,-1);}static void NPC_PetShop_selectWindow( int meindex, int toindex, int num,int select){ char token[1024]; int buttontype=0,windowtype=0,windowno=0; char buf[256]; int fd = getfdFromCharaIndex( toindex); //print("\n NPC_PetShop_selectWindow num:%d select:%d ", num, select); if( fd == -1 ) { fprint( "getfd err\n"); return; } token[0] = '\0'; switch(num){ // 赓及它奴件玉它 case 0: NPC_MaxGoldOver( meindex, toindex, NPC_PETSHOP_MSG_MAIN, buf); if( !CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG)) { sprintf(token, "4\n ☆宠物商店☆" "%s" "\n" "\n 《 卖宠物 》" "\n" "\n 《 离开 》", buf); }else { sprintf(token, "4\n ☆宠物商店☆" "%s" "\n 《 寄放宠物 》" "\n 《 领取宠物 》" "\n 《 卖宠物 》" "\n 《 离开 》", buf); } buttontype=WINDOW_BUTTONTYPE_NONE; windowtype=WINDOW_MESSAGETYPE_SELECT; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_START; break; case 1: buttontype=WINDOW_BUTTONTYPE_CANCEL; windowtype=WINDOW_MESSAGETYPE_PETSELECT; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT; break; case 2: NPC_PetDate(meindex,toindex,select,token); buttontype=WINDOW_BUTTONTYPE_YESNO; windowtype=WINDOW_MESSAGETYPE_MESSAGE; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN; break; case 3: if( (CHAR_getInt(toindex,CHAR_GOLD)+CHAR_getWorkInt(toindex,CHAR_WORKSHOPRELEVANTSEC)) > CHAR_getMaxHaveGold( toindex) ){ NPC_MaxGoldOver( meindex, toindex, NPC_PETSHOP_MSG_OVER, token); windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_GOLDOVER; buttontype=WINDOW_BUTTONTYPE_YESNO; }else{ NPC_PetDel(meindex,toindex,select,token); buttontype=WINDOW_BUTTONTYPE_OK; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_END; } windowtype=WINDOW_MESSAGETYPE_MESSAGE; break; case 4: NPC_PetDel(meindex,toindex,select,token); buttontype=WINDOW_BUTTONTYPE_OK; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_END; windowtype=WINDOW_MESSAGETYPE_MESSAGE; break; case 5: // 领取寄放宠列表 if( CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG ) != 1 ) return; buttontype=WINDOW_BUTTONTYPE_CANCEL; windowtype=WINDOW_MESSAGETYPE_PETSELECT; windowno=CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT2; break; case 6: if( CHAR_getInt( toindex, CHAR_GOLD) < NPC_GETPOOLCOST( toindex)) { NPC_MaxGoldOver(meindex, toindex, NPC_PETSHOP_MSG_COST, token); buttontype = WINDOW_BUTTONTYPE_OK; } else { NPC_PetDate2( meindex, toindex, select, token); buttontype = WINDOW_BUTTONTYPE_YESNO; } windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN2; break; case 7: if( CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG ) != 1 ) return; if( CHAR_getInt( toindex, CHAR_GOLD) < NPC_GETPOOLCOST( toindex)){ NPC_MaxGoldOver(meindex, toindex, NPC_PETSHOP_MSG_COST, token); }else { NPC_PetDel2( meindex, toindex, select, token); } buttontype = WINDOW_BUTTONTYPE_OK; windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_END; break; // 仃 木 互域 case 8: NPC_MaxGoldOver( meindex, toindex, NPC_PETSHOP_MSG_POOLFULL, token); buttontype = WINDOW_BUTTONTYPE_OK; windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_END; break; // 娄五潸曰矢永玄域 它奴件玉它 case 9: // 取出寄放宠列表 if( CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG) != 1 ) return; NPC_getDrawPet( meindex, toindex, token, &buttontype, select); windowtype = WINDOW_MESSAGETYPE_SELECT; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_DRAWSELECT; break; // 娄五潸曰 " case 10: NPC_PetDate3( meindex, toindex, select, token); buttontype = WINDOW_BUTTONTYPE_YESNO; windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_ASKDRAW; break; // 忒允 case 11: if( CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG ) != 1 ) return; NPC_PetDel3( meindex, toindex, select, token); buttontype = WINDOW_BUTTONTYPE_OK; windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_END; break; // 矢永玄 互域 case 12: NPC_MaxGoldOver( meindex, toindex, NPC_PETSHOP_MSG_GETFULL, token); buttontype = WINDOW_BUTTONTYPE_OK; windowtype = WINDOW_MESSAGETYPE_MESSAGE; windowno = CHAR_WINDOWTYPE_WINDOWPETSHOP_END; break; // CoolFish: Add 2001/7/4 default: break; } /*--巨旦弗□皿--*/ //makeEscapeString( token, escapedname, sizeof(escapedname)); /*--霜耨--*/ lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token);}void NPC_PetShopWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data){ int datanum = -1; if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) { return; } //print("\n NPC_PetShopWindowTalked: data:%s seq:%d sel:%d ", data, seqno, select); makeStringFromEscaped( data); datanum = atoi( data); switch( seqno){ case CHAR_WINDOWTYPE_WINDOWPETSHOP_START: { int poolflg = CHAR_getWorkInt( meindex, CHAR_WORK_POOLFLG); if( ( datanum == 3 && poolflg) || // 卖宠物 ( datanum == 2 && !poolflg ) ){ // 领取宠物 NPC_PetShop_selectWindow( meindex, talkerindex, 1, -1 ); }else if( datanum == 1 && poolflg) { // 寄放宠物 if( CHAR_getCharPoolPetElement( talkerindex) != -1 ) { NPC_PetShop_selectWindow( meindex, talkerindex, 5, -1 ); } else { NPC_PetShop_selectWindow( meindex, talkerindex, 8, -1 ); } }else if( datanum == 2 && poolflg ) { // 领取宠物 if( CHAR_getCharPetElement( talkerindex) != -1 ) { CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); NPC_PetShop_selectWindow( meindex, talkerindex, 9, 0); }else { NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 ); } } } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT: if(select==WINDOW_BUTTONTYPE_CANCEL){ NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 ); }else{ NPC_PetShop_selectWindow( meindex, talkerindex, 2, datanum ); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_PETSELECT2: if(select==WINDOW_BUTTONTYPE_CANCEL){ NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 ); }else{ NPC_PetShop_selectWindow( meindex, talkerindex, 6, datanum ); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN: if(select==WINDOW_BUTTONTYPE_YES){ NPC_PetShop_selectWindow( meindex, talkerindex, 3,-1 ); }else{ NPC_PetShop_selectWindow( meindex, talkerindex,1,-1); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_MAIN2: if(select==WINDOW_BUTTONTYPE_YES){ NPC_PetShop_selectWindow( meindex, talkerindex, 7,-1 ); }else { NPC_PetShop_selectWindow( meindex, talkerindex,5,-1); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_ASKDRAW: if( select == WINDOW_BUTTONTYPE_YES){ if( CHAR_getCharPetElement( talkerindex) != -1 ) { NPC_PetShop_selectWindow( meindex, talkerindex, 11,-1 ); }else { NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 ); } }else { CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); NPC_PetShop_selectWindow( meindex, talkerindex, 9, 0); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_GOLDOVER: if( select == WINDOW_BUTTONTYPE_YES){ NPC_PetShop_selectWindow( meindex, talkerindex, 4,-1 ); }else{ NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 ); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_DRAWSELECT: if( select == WINDOW_BUTTONTYPE_PREV){ NPC_PetShop_selectWindow( meindex, talkerindex, 9, -1); }else if( select == WINDOW_BUTTONTYPE_NEXT) { NPC_PetShop_selectWindow( meindex, talkerindex, 9, 1); }else if( select != WINDOW_BUTTONTYPE_CANCEL) { if( CHAR_getCharPetElement( talkerindex) != -1 ) { NPC_PetShop_selectWindow( meindex, talkerindex, 10, datanum); }else { NPC_PetShop_selectWindow( meindex, talkerindex, 12, -1 ); } }else { NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 ); } break; case CHAR_WINDOWTYPE_WINDOWPETSHOP_END: if( select == WINDOW_BUTTONTYPE_OK){ NPC_PetShop_selectWindow( meindex, talkerindex, 0,-1 ); } break; // CoolFish: Add 2001/7/4 default: break; }}void NPC_PetDate(int meindex,int talker,int select,char *token){ int petindex; int cost; char *petname; char buf[1024]; /*--伐□弁及赓渝祭--*/ CHAR_setWorkInt(talker,CHAR_WORKSHOPRELEVANT,select); petindex = CHAR_getCharPet( talker, select-1); if( !CHAR_CHECKINDEX(petindex) ) return; NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_REALY, buf); cost=NPC_GetCost(meindex,talker,petindex); petname = CHAR_getUseName( petindex);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -