📄 npc_pkpetshop.c.bak
字号:
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);
}
/*- 健丹齿 毛潸 --*/
if( NPC_Util_GetStrFromStrWithDelim( argstr, "PetList", buff, sizeof( buff))
!= NULL )
{
while( getStringFromIndexWithDelim(buff,",",i,buff2,sizeof(buff2))
!=FALSE )
{
i++;
/*--涩烂白央奶伙及失奶 丞互 "-"匹嗉濠日木化中月井及民尼永弁--*/
if(strstr( buff2, "-") == NULL) {
/*--引内 蟆 --*/
// krynn 2001/12/10
EnemyCnt = ENEMY_getEnemyNum();
for( tmp=0 ; tmp < EnemyCnt ; tmp++ )
{
if( ENEMY_getInt( tmp , ENEMY_ID ) == atoi( buff2 ) )
{
print("\nNPC_PKPetShop_GetPetList: tmp = %d", tmp);
break;
}
}
if( tmp == EnemyCnt )
{
return;
}
name = ENEMY_getChar( tmp , ENEMY_NAME );
// krynn end
/*-- 蟆互 卅日}失奶 丞互绣箕仄卅中及匹公及 寞反 骰--*/
if(name == NULL) continue;
loopcnt++;
if(loopcnt == MAXSHOPPET) break;
/*-- 端及皿夫玄戊伙勾仁曰--*/
NPC_PetStrStr( atoi( buff2), rate, name, token2, tmp);
/*--丢永本□斥 侬 午 瑛--*/
strncat( argtoken, token2, sizeof(token2));
}
else
{
return;
/*krynn 2001/12/13 这段应该用不到了,先 mark,改为直接 return
--失奶 丞互 15-25 及溥匹嗉濠日木化中月桦宁--
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++ )
{
//--引内 蟆 --
name = ITEM_getNameFromNumber( start );
//-- 蟆互 卅日}失奶 丞互绣箕仄卅中及匹公及 寞反 骰--
if(name == NULL) continue;
loopcnt++;
if(loopcnt == MAXSHOPPET) break;
//-- 端及皿夫玄戊伙勾仁曰--
NPC_PetStrStr( start, rate, name, token2, tmp);
//--丢永本□斥 侬 午 瑛--
strncat( argtoken, token2, sizeof(token2));
}*/
}
}
}
}
/*-----------------------------------------------------------------
皿夫玄戊伙综岳
-------------------------------------------------------------------*/
void NPC_PetStrStr(int petID,double rate,char *name,char *token2,int index)
{
int i;
int gold;
int level;
int graNo;
int TempNo;
int EnemyTempNum;
char info[1024];
//char tryItem[256]; // krynn 2001/12/12 只是要看 getItemInfoFromNumber 读出来的字串长什麽样的
char escape[256] = {"PK Server 宠"};
//krynn 2001/12/10 try
//gold = ITEM_getcostFromITEMtabl( itemID);
//level = ITEM_getlevelFromITEMtabl( itemID);
//graNo = ITEM_getgraNoFromITEMtabl( itemID);
TempNo = ENEMY_getInt( index , ENEMY_TEMPNO );
EnemyTempNum = ENEMYTEMP_getEnemyNum();
for( i=0 ; i < EnemyTempNum ; i++ )
{
if( ENEMYTEMP_getInt( i , E_T_TEMPNO ) == TempNo )
{
break;
}
}
if( i == EnemyTempNum )
{
return;
}
gold = RAND(0,20);
level = 0;
graNo = ENEMYTEMP_getInt( i , E_T_IMGNUMBER );
//print("\nPKPetShop::NPC_PetStrStr(): TempNo = %d ; graNo = %d",TempNo,graNo);
/*--伊□玄毛井仃月--*/
gold=(int)(gold * rate);
//strcpy( tryItem,ITEM_getItemInfoFromNumber( 10 ) );
//print("PKPetShop::NPC_PetStrStr(): try = %s\n",tryItem);
//krynn end
makeEscapeString( escape, info, sizeof( info));
makeEscapeString( name, escape, sizeof( escape));
sprintf( token2, "%s|0|%d|%d|%d|%s|", escape, level, gold, graNo, info);
}
/*-------------------------------------------
*( 丹)
*弁仿奶失件玄井日忒匀凶 凶瑛绊毛 掏今六月
*
*------------------------------------------*/
BOOL NPC_PKPetShop_SetNewPet(int meindex,int talker,char *data)
{
char buf[1024];
char buff2[128];
int i = 1, j = 1;
int select;
int kosuu = 0;
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
double rate = 1.0;
int gold = 0;
int EmptyPetCnt=0;
/*--忒匀化五凶犯□正毛本伊弁玄午蜊醒卞坌荸--*/
print("\nNPC_PKPetShop_SetNewPet: data = %s",data);
getStringFromIndexWithDelim( data, "|", 1, buf, sizeof( buf));
select=atoi(buf); // krynn 2001/12/10 select 是玩家传回要买的第几样
print("\nNPC_PKPetShop_SetNewPet: select = %d",select);
if(select == 0) return FALSE;
getStringFromIndexWithDelim( data, "|", 2, buf, sizeof( buf));
kosuu=atoi(buf);
print("\nNPC_PKPetShop_SetNewPet: kosuu(玩家要买的数量) = %d",kosuu);
if( kosuu <= 0 ) return FALSE;
/* 仍潜谛 及矢永玄及坞五毛茧允 */
if( !CHAR_CHECKINDEX(talker) )
{
return FALSE;
}
for( i=0 ; i < CHAR_MAXPETHAVE ; i++ )
{
if( CHAR_getCharPet( talker,i) == -1 )
{
EmptyPetCnt++;
}
}
// 有 EmptyPetCnt 个宠物空位
/* 坞五互 中 */
print("\nNPC_PKPetShop_SetNewPet:EmptyPetCnt(玩家有的空位) = %d",EmptyPetCnt);
if( EmptyPetCnt <= 0 ) return FALSE;
if( EmptyPetCnt > CHAR_MAXPETHAVE )
{
EmptyPetCnt = CHAR_MAXPETHAVE;
}
if( kosuu > EmptyPetCnt )
{
kosuu = EmptyPetCnt;
}
// krynn 2001/12/10
// 应该用不到,所以 mark 起来
/*--蜊醒及民尼永弁 癫卞蝈 月井"
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;
}
krynn end */
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);
}
/*--失奶 丞及馨笛毛垫丹午仇欠-*/
if( NPC_Util_GetStrFromStrWithDelim( argstr, "PetList",
buf, sizeof( buf)) != NULL )
{
while(getStringFromIndexWithDelim(buf , "," , j, buff2, sizeof(buff2))
!= FALSE )
{
j++;
/*-- "-"互殖引木化中月井升丹井--*/
if(strstr( buff2, "-") == NULL)
{ // krynn 2001/12/10 try
//if( ITEM_getcostFromITEMtabl(atoi(buff2)) !=-1) {
//
if ( i == select)
{
/*---失奶 丞及综岳---*/
/*--蜊醒坌综岳--*/
if(NPC_AddPetBuy(meindex, talker,atoi(buff2),kosuu,rate) != TRUE)
{
return FALSE;
}
return TRUE;
}
i++;
// krynn end}
}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) {
/*---失奶 丞及综岳---*/
/*--蜊醒坌综岳--*/
if(NPC_AddPetBuy(meindex, talker, start, kosuu, rate) != TRUE)
{
return FALSE;
}
return TRUE;
}
i++;
}
}
}
}
}
return FALSE;
}
/*---------------------------------------------
*失奶 丞及馨笛毛垫丹
*--------------------------------------------*/
BOOL NPC_AddPetBuy(int meindex, int talker,int petID,int kosuu,double rate)
{
int i,j,k,index,EnemyCnt,UpLevel;
int gold;
int ret;
int maxgold;
int Grade=0;
char buf[1024];
char msgbuf[64];
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
// krynn 2001/12/15 get get's grade of this PKPetShop
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return FALSE;
}
if(NPC_Util_GetStrFromStrWithDelim( argstr, "Grade", buf, sizeof( buf))
!= NULL)
{
Grade = atoi( buf );
}
// end krynn
/*--伊□玄毛井仃月--*/
// krynn 2001/12/11 mark and change
//gold = ITEM_getcostFromITEMtabl( itemID);
gold = 4;
// krynn end
gold = (int)(gold * rate);
maxgold = gold * kosuu;
if(CHAR_getInt( talker, CHAR_GOLD) < maxgold ) return FALSE;
/*--云嗯毛蛹日允--*/
CHAR_setInt( talker, CHAR_GOLD,CHAR_getInt( talker, CHAR_GOLD) - maxgold);
/* krynn 2001/12/11 PKServer 应该用不到家族,所以先 mark 起来
if( addNpcFamilyTax( meindex, talker, maxgold*0.4 ) )
print(" FamilyTaxDone! ");
else
print(" FamilyTaxError!");
// end krynn*/
EnemyCnt = ENEMY_getEnemyNum();
for( index=0 ; index < EnemyCnt ; index++ )
{
if( ENEMY_getInt( index , ENEMY_ID ) == petID )
{
print("\nNPC_AddPetBuy: index = %d", index);
break;
}
}
if( index == EnemyCnt )
{
return FALSE;
}
/*--蜊醒坌综岳--*/
for(i = 0 ; i < kosuu ; i++)
{
if( (ret = ENEMY_createPetFromEnemyIndex( talker , index )) == -1 )
{
return FALSE;
};
/******************/
/* 矢永玄树 霜月 */
/******************/
// 升仇卞反中匀凶井卅
for( j = 0 ; j < CHAR_MAXPETHAVE ; j++ )
{
if( CHAR_getCharPet( talker , j ) == ret )
{
break;
}
}
if( j == CHAR_MAXPETHAVE ){
return FALSE;
}
if( CHAR_CHECKINDEX( ret ) == TRUE ){
CHAR_setMaxExpFromLevel( ret, Grade);
UpLevel = CHAR_LevelUpCheck( ret , talker);
for( k = 0; k < UpLevel; k ++ ){
CHAR_PetLevelUp( ret );
CHAR_PetAddVariableAi( ret, AI_FIX_PETLEVELUP );
}
CHAR_complianceParameter( ret );
CHAR_setInt( ret , CHAR_HP , CHAR_getWorkInt( ret , CHAR_WORKMAXHP ) );
snprintf( msgbuf, sizeof( msgbuf ), "K%d", j );
CHAR_sendStatusString( talker, msgbuf );
snprintf( msgbuf, sizeof( msgbuf ), "W%d", j );
CHAR_sendStatusString( talker, msgbuf );
}
}
CHAR_send_P_StatusString( talker, CHAR_P_STRING_GOLD);
return TRUE;
}
/*----------------------------------------
*丢瓦亘□
*----------------------------------------*/
void NPC_PKPetShop_Menu(int meindex,int talker)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char token[NPC_UTIL_GETARGSTR_LINEMAX];
char buff[256];
int fd = getfdFromCharaIndex( talker);
/* 饕及 蟆 丢永本□斥| */
/*--云饕及白央奶伙 中坭反白央奶伙互钒仃卅井匀凶午五反蔽 --*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("shop_GetArgStr_Err");
return;
}
NPC_Util_GetStrFromStrWithDelim( argstr, "main_msg", buff, sizeof( buff));
snprintf(token, sizeof(token),"%s|%s",CHAR_getChar( meindex, CHAR_NAME), buff);
// print("%s",escapedname);
/*--仇仇匹霜耨--*/
//krynn 2001/12/10 这里的参数似乎可以延用 ItemShop 的 code,先用用看
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMENU,
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_STARTMSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
//krynn end
}
/*-------------------------------------------
* 月质 (皿夫玄戊伙毛综岳
*
*-------------------------------------------*/
void NPC_PKPetShop_SellMain(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("shop_GetArgStr_Err");
return;
}
/*--蟆荚及犯□正银丹井---*/
if(before != -1) {
/*--蟆荚及犯□正互酸匀化中月及匹职及树 反霜日卅仁 --*/
sprintf(token,"1|0");
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN
+CHAR_getWorkInt(meindex,NPC_PKPETSHOP_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_PKPETSHOP_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_PKPetShop_GetLimtPetList( talker,argstr, token2, -1);
/*--丢永本□斥午失奶 丞树 及宁 --*/
strncat( token, token2, sizeof( token));
/*--仇仇匹霜耨--*/
lssproto_WN_send( fd, WINDOW_MESSAGETYPE_ITEMSHOPMAIN+
CHAR_getWorkInt(meindex,NPC_PKPETSHOP_WORK_NO),
WINDOW_BUTTONTYPE_NONE,
CHAR_WINDOWTYPE_WINDOWITEMSHOP_SELL_MSG,
CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX),
token);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -