📄 npc_newnpcman.c
字号:
break; case NPC_PROGRAMEGINEER_SELECT2: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT2, atoi( data)); break; case NPC_PROGRAMEGINEER_SELECT3: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT3, atoi( data)); break; case NPC_PROGRAMEGINEER_SELECTLOSTPET: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECTLOSTPET, atoi( data)); break; case NPC_PROGRAMEGINEER_DEFIND: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_DEFIND, atoi( data)); break; case NPC_PROGRAMEGINEER_END: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_END, atoi( data)); break; }}BOOL CHECK_ITEMEQUIT( int toindex){ int i, itemindex; char token[256]; for (i = CHAR_STARTITEMARRAY; i < CHAR_MAXITEMHAVE; i ++) { itemindex = CHAR_getItemIndex( toindex, i); if( ITEM_getInt( itemindex, ITEM_ID) == 19646 ){ CHAR_DelItem( toindex, i); itemindex = -1; itemindex = ITEM_makeItemAndRegist( 1292); if( !ITEM_CHECKINDEX( itemindex) ){ }else{ int ret = CHAR_addItemSpecificItemIndex( toindex, itemindex); if( ret < 0 || ret >= CHAR_MAXITEMHAVE ) { ITEM_endExistItemsOne( itemindex); continue; } sprintf( token,"拿到%s", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW ); CHAR_sendItemDataOne( toindex, ret); continue; } } if( ITEM_getInt( itemindex, ITEM_ID) == 1292 && ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){ ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0); ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0); sprintf(token,"修正%s损坏度", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_sendItemDataOne( toindex, i); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } } // 寄放店 for (i = 0; i < CHAR_MAXPOOLITEMHAVE; i++) { if( ITEM_getInt( itemindex, ITEM_ID) == 1292 && ITEM_getInt( itemindex, ITEM_MAXDAMAGECRUSHE) > 0 ){ ITEM_setInt( itemindex, ITEM_MAXDAMAGECRUSHE, 0); ITEM_setInt( itemindex, ITEM_DAMAGECRUSHE, 0); sprintf(token,"修正寄放店中%s损坏度", ITEM_getChar( itemindex, ITEM_NAME)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } } return TRUE;}BOOL CHECK_PETBBI( int toindex){ int i, petindex, PetID; BOOL Finds = FALSE; char token[256]; for( i=0; i < CHAR_MAXPETHAVE; i++) { int parry, array, PetBBI; petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) ) continue; PetID = CHAR_getInt( petindex, CHAR_PETID); array = ENEMY_getEnemyArrayFromTempNo( PetID); if( !ENEMY_CHECKINDEX( array)) continue; parry = ENEMYTEMP_getEnemyTempArray( array); PetBBI = ENEMYTEMP_getInt( parry, E_T_IMGNUMBER); if( CHAR_getInt( petindex, CHAR_BASEBASEIMAGENUMBER) != PetBBI || CHAR_getInt( petindex, CHAR_BASEIMAGENUMBER) != PetBBI ){ CHAR_setInt( petindex, CHAR_BASEBASEIMAGENUMBER, PetBBI); CHAR_setInt( petindex, CHAR_BASEIMAGENUMBER, PetBBI); sprintf( token, "修正%s图号", CHAR_getUseName( petindex)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); Finds = TRUE; } CHAR_setInt( petindex, CHAR_EARTHAT, ENEMYTEMP_getInt( parry, E_T_EARTHAT) ); CHAR_setInt( petindex, CHAR_WATERAT, ENEMYTEMP_getInt( parry, E_T_WATERAT) ); CHAR_setInt( petindex, CHAR_FIREAT, ENEMYTEMP_getInt( parry, E_T_FIREAT) ); CHAR_setInt( petindex, CHAR_WINDAT, ENEMYTEMP_getInt( parry, E_T_WINDAT) ); } for( i=0; i<CHAR_MAXPETHAVE; i++){ char szPet[128]; petindex = CHAR_getCharPet(toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; CHAR_complianceParameter( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", i); CHAR_sendStatusString( toindex, szPet ); snprintf( szPet, sizeof( szPet ), "W%d", i); CHAR_sendStatusString( toindex, szPet ); } if( Finds == FALSE ){ sprintf( token, "没有错误图号的宠物"); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } return Finds;}void NPC_reCheckMyPetUnusual( int meindex, int toindex)//检查宠物异常{ char *buf=NULL; int petindex,i; for( i=0; i<CHAR_MAXPETHAVE; i++) { petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; if( (buf=CHAR_getChar( petindex, CHAR_NAME)) == "\0" || strlen( buf) <= 0 ){ char *PetNAME; int array, parry, petID; petID = CHAR_getInt( petindex, CHAR_PETID); array = ENEMY_getEnemyArrayFromTempNo( petID); if( !ENEMY_CHECKINDEX( array)){ print("ANDY Pet(ID:%d) err Array:%d (file:%s %d) !! \n", petID, array, __FILE__, __LINE__ ); continue; } parry = ENEMYTEMP_getEnemyTempArray( array); if( (PetNAME = ENEMYTEMP_getChar( parry, E_T_NAME)) == "\0" || strlen( PetNAME) <= 0 ){ print("ANDY Pet(ID:%d) Array:%d err Name:%s (file:%s %d) !! \n", petID, array, (PetNAME==NULL)?"NULL":PetNAME, __FILE__, __LINE__ ); continue; } CHAR_setChar( petindex, CHAR_NAME, PetNAME); CHAR_setChar( petindex, CHAR_USERPETNAME , ""); //andy_log print("ANDY Pet(ID:%d) Name -> %s (%s:%s)(file:%s %d) !! \n", petID, PetNAME, CHAR_getUseName( toindex), CHAR_getChar( toindex, CHAR_CDKEY), __FILE__, __LINE__ ); } } for( i=0; i<CHAR_MAXPETHAVE; i++){ char szPet[256]; petindex = CHAR_getCharPet(toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; CHAR_complianceParameter( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", i); CHAR_sendStatusString( toindex, szPet ); snprintf( szPet, sizeof( szPet ), "W%d", i); CHAR_sendStatusString( toindex, szPet ); }}//更换宠物BOOL CHECK_ReplacePET( int toindex){ int i, petindex; BOOL Finds = FALSE; char szPet[256]; if( CHAR_getWorkInt( toindex, CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE ) return FALSE; for( i=0; i<CHAR_MAXPETHAVE; i++) { int array, ret; petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; if( CHAR_getInt( petindex, CHAR_PETID) != 1133 ) continue; if( CHAR_getInt( petindex, CHAR_SLOT) != 7 ) continue; if( CHAR_getInt( petindex, CHAR_TRANSMIGRATION ) > 0 )continue; if( i == CHAR_getInt( toindex, CHAR_DEFAULTPET) ) { int fd = getfdFromCharaIndex( toindex); CHAR_setInt( toindex, CHAR_DEFAULTPET, -1); lssproto_KS_send( fd, -1, TRUE); } snprintf( szPet,sizeof( szPet), "交出%s。", CHAR_getUseName( petindex) ); CHAR_talkToCli( toindex, -1, szPet, CHAR_COLORYELLOW); LogPet( CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "TenseiDel", CHAR_getInt( toindex,CHAR_FLOOR), CHAR_getInt( toindex,CHAR_X ), CHAR_getInt( toindex,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) ); Finds = TRUE; CHAR_setCharPet( toindex, i, -1); CHAR_endCharOneArray( petindex ); array = ENEMY_getEnemyArrayFromTempNo( 1133); if( !ENEMY_CHECKINDEX( array)) continue; ret = ENEMY_createPetFromEnemyIndex( toindex, array); if( !CHAR_CHECKINDEX( ret ) ) continue; snprintf( szPet, sizeof( szPet), "拿到%s。", CHAR_getUseName( ret) ); CHAR_talkToCli( toindex, -1, szPet, CHAR_COLORWHITE); LogPet( CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ), CHAR_getChar( ret, CHAR_NAME), CHAR_getInt( ret, CHAR_LV), "TenseiGet", CHAR_getInt( toindex,CHAR_FLOOR), CHAR_getInt( toindex,CHAR_X ), CHAR_getInt( toindex,CHAR_Y ), CHAR_getChar( ret, CHAR_UNIQUECODE) ); } for( i=0; i<CHAR_MAXPETHAVE; i++){ petindex = CHAR_getCharPet(toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; CHAR_complianceParameter( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", i); CHAR_sendStatusString( toindex, szPet ); snprintf( szPet, sizeof( szPet ), "W%d", i); CHAR_sendStatusString( toindex, szPet ); } return Finds;}//还原铁枪三堆叠void NPC_reCheckItemPilenum( int meindex, int toindex){ int i, itemindex; for( i=0; i<CHAR_MAXITEMHAVE; i++){ itemindex = CHAR_getItemIndex( toindex , i ); if( !ITEM_CHECKINDEX( itemindex) ) continue;//ITEM_USEPILENUMS if( ITEM_getInt( itemindex, ITEM_ID) != 20284 ) continue; if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != 1 ) continue; if( ITEM_getInt( itemindex, ITEM_USEPILENUMS) > 1 ){ int itemID, pilenum=1, newindex; itemID = ITEM_getInt( itemindex, ITEM_ID); if( !ITEM_CHECKITEMTABLE( itemID) ) continue; pilenum = ITEM_getInt( itemindex, ITEM_USEPILENUMS); while( pilenum > 1 ){ int ti = CHAR_findEmptyItemBox( toindex); if( ti == -1 ){ CHAR_sendItemDataOne( toindex, i); CHAR_talkToCli( toindex, -1, "道具栏位已满。", CHAR_COLORYELLOW); return; } newindex = ITEM_makeItemAndRegist( itemID); if( !ITEM_CHECKINDEX( newindex) ) break; CHAR_setItemIndex( toindex , ti, newindex); CHAR_sendItemDataOne( toindex, ti); pilenum--; ITEM_setInt( itemindex, ITEM_USEPILENUMS, pilenum); } if( ITEM_getInt( itemindex, ITEM_CANBEPILE) != ITEMTBL_getInt( itemID, ITEM_CANBEPILE) ) ITEM_setInt( itemindex, ITEM_CANBEPILE, ITEMTBL_getInt( itemID, ITEM_CANBEPILE) ); CHAR_sendItemDataOne( toindex, i); } } CHAR_talkToCli( toindex, -1, "铁枪三处理完毕。", CHAR_COLORYELLOW);}#ifdef _PET_LOSTPETBOOL NPC_reFindMyLostPet( int meindex, int toindex, char *buf){ //地上0 溜宠 1 宠邮 2 FILE *fp = NULL; char *CdKey=NULL; int lv=0, cost, ltime, count=0, i, type; char filename[256], line[2048], buf1[256]; char petname[256], typebuf[256]; char buf2[10][256]={"\n","\n","\n","\n","\n", "\n","\n","\n","\n","\n" }; CdKey = CHAR_getChar( toindex, CHAR_CDKEY ); if( CdKey == "\0" ) return FALSE; sprintf( filename, "lostpet/%s.txt", CdKey); strcpy( buf, "==宠物遗失纪录==\n"); if( (fp=fopen( filename, "r")) == NULL ) return FALSE; while( fgets( line , sizeof( line ) , fp ) && count < 7){ if( line == NULL ) continue; if( getStringFromIndexWithDelim( line, "|", 1, buf1, sizeof( buf1)) == FALSE ) continue; if( strcmp( CHAR_getChar( toindex, CHAR_CDKEY ), buf1 )) continue; if( getStringFromIndexWithDelim( line, "|", 6, buf1, sizeof( buf1)) == FALSE ) continue; ltime = atoi(buf1); ltime = time( NULL) - ltime; ltime = ltime/(60*60*24); if( ltime > 14 ) continue;//续放14天 if( getStringFromIndexWithDelim( line, "|", 2, petname, sizeof( petname)) == FALSE ) continue; if( getStringFromIndexWithDelim( line, "|", 3, buf1, sizeof( buf1)) == FALSE ) continue; lv = atoi( buf1); if( getStringFromIndexWithDelim( line, "|", 4, buf1, sizeof( buf1)) == FALSE ) continue; cost = atoi( buf1); if( getStringFromIndexWithDelim( line, "#", 3, buf1, sizeof( buf1)) == FALSE ) continue; type = atoi( buf1); if( type == 1 ){ strcpy( typebuf, "溜宠"); }else if( type == 2 ){ strcpy( typebuf, "宠邮"); }else{ strcpy( typebuf, "地上"); } sprintf( buf2[count++], "%s LV:%d石币:%d(%d天%s)\n", petname, lv, cost, ltime, typebuf); } fclose( fp); for( i=0; i<7; i++){ strcat( buf, buf2[i]); } if( count == 0 ) return FALSE; return TRUE;}BOOL NPC_getLostPetString( int meindex, int toindex){ FILE *fp = NULL; char *CdKey=NULL; int count=0, i, ltime; char filename[256], line[2048], buf1[256]; for( i=0; i<7; i++) strcpy( petstring[i], ""); CdKey = CHAR_getChar( toindex, CHAR_CDKEY ); if( CdKey == "\0" ) return FALSE; sprintf( filename, "lostpet/%s.txt", CdKey); if( (fp=fopen( filename, "r")) == NULL ) return FALSE; while( fgets( line , sizeof( line ) , fp ) && count < 7){ if(strlen( line) <= 0 ) continue;// if( getStringFromIndexWithDelim( line, "#", 2, buf1, sizeof( buf1)) == FALSE ) return FALSE;// Terry fix 读取时没有判断时间 2004/09/22 if(getStringFromIndexWithDelim(line,"|",6,buf1,sizeof(buf1)) == FALSE) continue; ltime = atoi(buf1); ltime = time( NULL) - ltime; ltime = ltime/(60*60*24); if(ltime > 14) continue;//续放14天// Terry end strcpy( petstring[count++], line); } fclose( fp); return TRUE;}BOOL NPC_backupLostPetString( int toindex){ FILE *fp = NULL; char *CdKey=NULL; int i, count=0; char filename[256]; CdKey = CHAR_getChar( toindex, CHAR_CDKEY ); if( CdKey == "\0" ) return FALSE; sprintf( filename, "lostpet/%s.txt", CdKey); if( (fp=fopen( filename, "w")) == NULL ) return FALSE; for( i=0; i<7; i++){ if( strlen( petstring[i]) <= 0 ) continue; fprintf( fp, "%s", petstring[i]); count++; } fclose( fp); if( count == 0 ) remove( filename); return TRUE;}/*#ifdef _NEW_WARPMAN#include "npc_newnpcman.h"#define NEWNPCMAN_STANDBY 5000#define NEWNPCMAN_WAITTIME 150enum{NPC_NEWNPCMAN_START=21,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -