?? npc_pkpetshop.c.bak
字號:
//krynn 2001/12/6
//PKPetShop
#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 "log.h"
#include "enemy.h"
#include "npc_pkpetshop.h"
#include "battle.h"
#ifdef _PKPETSHOP
#define MAXSHOPPET 33
static void NPC_PKPetShop_selectWindow( int meindex, int talker, int num,int select);
void NPC_PKPetShop_BuyMain(int meindex,int talker,int before );
void NPC_PKPetShop_GetPetList(char *argstr,char * argtoken2);
BOOL NPC_PKPetShop_SetNewPet(int meindex,int talker,char *data);
BOOL NPC_PKPetShop_SellNewPet(int meindex,int talker,char *data);
void NPC_PKPetShop_Menu(int meindex,int talker);
int NPC_PKPetShop_GetLimtPetList(int talker,char *argstr,char *token2,int sell);
void NPC_PKPetShop_SellMain(int meindex,int talker,int select);
int NPC_GetSellPetList(int itemindex,int flg,char *argstr,char *argtoken,int select,int sell);
BOOL NPC_AddPetBuy(int meindex, int talker,int petID,int kosuu,double rate);
void NPC_PetStrStr(int petID,double rate,char *name,char *token2, int index);
int NPC_SellPetstrsStr(int itemindex,int flg,double rate,char *argtoken,int select,int sell);
void NPC_LimitPetShop(int meindex,int talker,int select);
void NPC_PKPetShop_ExpressmanCheck(int meindex,int talker);
/*--伐□弁 爛聒--*/
enum{
NPC_PKPETSHOP_WORK_NO = CHAR_NPCWORKINT1,
NPC_PKPETSHOP_WORK_EV = CHAR_NPCWORKINT2,
NPC_PKPETSHOP_WORK_EXPRESS = CHAR_NPCWORKINT3,
};
typedef struct {
char arg[32];
int type;
}PKPETSHOP_NPC_Shop;
static PKPETSHOP_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_PKPetShopInit( int meindex )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
/*--正奶皿澀爛--*/
CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEPKPetShop );
if( NPC_Util_GetArgStr(meindex, argstr, sizeof(argstr)) == NULL )
{
print("NPC_PKPetShopInit_GetArgStrErr");
return FALSE;
}
if(strstr(argstr,"LIMITSHOP") != NULL)
{ /*- 中潸曰毀迕白仿弘--*/
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_NO, 1);
}
else
{
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_NO, 0);
}
if(strstr( argstr, "EVENT") != NULL)
{ /*- 中潸曰毀迕白仿弘--*/
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_EV, 1);
}
else
{
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_EV, 0);
}
if(strstr( argstr, "EXPRESS") != NULL)
{ /*-捫霜盒白仿弘--*/
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_EXPRESS, 1);
}
else
{
CHAR_setWorkInt( meindex, NPC_PKPETSHOP_WORK_EXPRESS, 0);
}
return TRUE;
}
/*********************************
* 仄井仃日木兇凜及質(zhì)
*********************************/
void NPC_PKPetShopTalked( 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;
}
if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL)
{
print("NPC_PKPetShopInit_GetArgStrErr");
return;
}
if( NPC_Util_GetStrFromStrWithDelim( argstr, "sellonly_msg",
token, sizeof( token))
!= NULL)
{
sellonlyflg = TRUE;
strcpysafe(sellmsg, sizeof( sellmsg), token);
}
/*-- 濤 丹它奶件玉它卞中仃月井升丹井--*/
if( NPC_Util_GetStrFromStrWithDelim( argstr, "buy_msg",
buff, sizeof( buff)) != NULL )
{
while(getStringFromIndexWithDelim(buff,",",i,buf2,sizeof(buf2)) != FALSE)
{
i++;
if( strstr( szMes, buf2) != NULL) {
if( CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_EV) == 0) {
/*- 中潸曰毀 井升丹井及民尼永弁--*/
if( CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_NO) == 1) {
if( sellonlyflg ) {
NPC_PKPetShop_selectWindow( meindex, talker, 3, -1);
return;
}
}
else{
NPC_PKPetShop_selectWindow( meindex, talker, 1, -1);
return;
}
}else{
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_NO) == 1) {
if( sellonlyflg) {
NPC_PKPetShop_selectWindow( meindex, talker, 3, -1);
return;
}
}else{
NPC_PKPetShop_selectWindow( meindex, talker, 1, -1);
return;
}
return;
}
}
}
}
i=1;
/*-- 濤 月它奶件玉它卞中仃月井升丹井--*/
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_PKPetShop_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_PKPETSHOP_WORK_NO) == 1)
{
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_EV) == 1)
{
if( sellonlyflg)
{
CHAR_talkToCli( talker, meindex, sellmsg, CHAR_COLORWHITE);
return;
}
}
else
{ /*-- 中潸曰毀 及丟永本□斥--*/
if( sellonlyflg)
{
NPC_PKPetShop_selectWindow( meindex, talker, 3, -1);
return;
}
}
}
else
{
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_EV) == 1) {
if( sellonlyflg) {
CHAR_talkToCli( talker, meindex, sellmsg, CHAR_COLORWHITE);
return;
}
}else{
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_EXPRESS) == 1) {
NPC_PKPetShop_ExpressmanCheck( meindex, talker);
}else{
/*--仇仇引匹 兇日隋騷它奶件玉它(丟瓦亙□) 憎--*/
/*-- 中潸曰毀 匹卅仁化 騷及饕卅日丟瓦亙□ 憎--*/
NPC_PKPetShop_selectWindow( meindex, talker, 0, -1);
}
}
}
}
static void NPC_PKPetShop_selectWindow( int meindex, int talker, int num,int select)
{
print("\n NPC_PKPetShop_selectWindow()");
print("\n num = %d ", num);
switch( num) {
case 0:
/*--丟瓦亙□ --*/
/*--由仿丟□正霜曰--*/
CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_EXPRESS) == 1 )
{
if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_NO) ==0 )
{
NPC_PKPetShop_ExpressmanCheck( meindex, talker);
}
}
else if(CHAR_getWorkInt( meindex, NPC_PKPETSHOP_WORK_NO) == 1)
{
}
else
{
NPC_PKPetShop_Menu( meindex, talker);
}
break;
case 1:
/*-- 丹 --*/
NPC_PKPetShop_BuyMain( meindex, talker, select);
break;
case 2:
/*-- 月 --*/
NPC_PKPetShop_SellMain( meindex, talker, select);
break;
case 3:
/*-- 中潸曰毀 匹允方 --*/
NPC_LimitPetShop( meindex, talker, select);
break;
}
}
/*-----------------------------------------
* 弁仿奶失件玄井日忒勻化五兇凜卞裟太請今木月[
*
-------------------------------------------*/
void NPC_PKPetShopWindowTalked( 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_PKPetShop_selectWindow(meindex, talkerindex, 1, -1);
/*-- 月--*/
if(atoi( data) == 2) NPC_PKPetShop_selectWindow(meindex, talkerindex, 2, -1);
/*--請月--*/
if(atoi( data) == 3) return;/*--窒手仄卅中--*/
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_BUY_MSG:
/*--失奶 丞及馨笛--*/
if(NPC_PKPetShop_SetNewPet(meindex , talkerindex, data) == TRUE) {
NPC_PKPetShop_selectWindow( meindex, talkerindex, 1, 0);
}else{
NPC_PKPetShop_selectWindow( meindex, talkerindex ,0, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_SELL_MSG:
/*--失奶 丞及綽輪--*/
if(NPC_PKPetShop_SellNewPet(meindex , talkerindex, data) == TRUE) {
NPC_PKPetShop_selectWindow( meindex, talkerindex, 2, 0);
}else{
NPC_PKPetShop_selectWindow( meindex, talkerindex, 0, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_LIMIT:
if(select == WINDOW_BUTTONTYPE_YES) {
NPC_PKPetShop_selectWindow( meindex, talkerindex ,2, -1);
}else if(select == WINDOW_BUTTONTYPE_NO) {
return;
}else if(select == WINDOW_BUTTONTYPE_OK) {
NPC_PKPetShop_selectWindow( meindex, talkerindex, 2, -1);
}
break;
case CHAR_WINDOWTYPE_WINDOWITEMSHOP_EXPRESS:
if(atoi(data) == 2) {
NPC_PKPetShop_selectWindow( meindex, talkerindex, 1, -1);
}else if(atoi( data) == 4) {
NPC_PKPetShop_selectWindow( meindex, talkerindex, 2, -1);
}
}
}
/*-----------------------------------------
*
* 丹質(zhì) 丟奶件(弁仿奶失件玄霜耨樹 綜岳
*
*krynn 2001/12/9 加的注釋
*before == -1
*before <> -1
*krynn end
*-----------------------------------------*/
void NPC_PKPetShop_BuyMain(int meindex,int talker,int before )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[NPC_UTIL_GETARGSTR_BUFSIZE];
int fd = getfdFromCharaIndex( talker);
/*
曰 中白仿弘 蟆及犯□正銀丹井白仿弘 饕及 蟆 丟永本□斥| 丹丟永本□斥
蜊醒薊 丟永本□斥 伊矛伙簫曰卅中丟永本□斥 割 丟永本□斥
蟆 尹月 尹卅中白仿弘 失奶 丞伊矛伙 襖蟾 颶 寞 域墊奶件白巧
蟆 尹月 尹卅中白仿弘 失奶 丞伊矛伙 襖蟾 颶 寞 域墊奶件白巧
*/
/*--云饕及白央奶伙 中坭反白央奶伙互釩仃卅井勻兇午五反蔽 --*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("itemshop_GetArgStr_Err");
return;
}
/*--蟆莢及犯□正銀丹井---*/
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{
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, "buy_main", buff2, sizeof( buff2));
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_PKPetShop_GetPetList( argstr, token2 );
// krynn 2001/12/12 bebug 用
print("%s",token2);
// end krynn
/*--丟永本□斥午失奶 丞樹 及寧 --*/
strncat( token, token2, sizeof( token));
}
/*-- 儂 毛巨旦弗□皿今六月--*/
// makeEscapeString( token, escapedname, sizeof(escapedname));
/*--仇仇匹霜耨--*/
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN,
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_BUY_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
}
/*------------------------------------------------------
*失奶 丞楮溢及 儂 毛綜月( 丹
*------------------------------------------------------*/
void NPC_PKPetShop_GetPetList(char *argstr,char *argtoken)
{
int i = 1;
int tmp;
int EnemyCnt;
char *name ;
char buff2[256];
char buff[NPC_UTIL_GETARGSTR_LINEMAX];
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -