📄 npc_petmaker.c
字号:
#include "version.h"#include <stdio.h>#include <string.h>#include <ctype.h>#include "object.h"#include "char_base.h"#include "char.h"#include "util.h"#include "npcutil.h"#include "item.h"#include "readmap.h"#include "enemy.h"#include "chatmagic.h"#include "log.h"#define EVFLG 118 // 58->白虎 118->青龙 void pet_make( int charaindex, char* message ); BOOL NPC_PetMakerInit( int meindex ){ CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEPETMAKER ); CHAR_setFlg( meindex , CHAR_ISATTACKED , 0 ); return TRUE;}void NPC_PetMakerTalked( int meindex , int talker , char *msg ,int color ){ char* npcarg; char token[32],tmpbuf[256]; int msgNo/*,translv*/; int point,ckpoint,array,shift; int i,num=0; array = EVFLG / 32; shift = EVFLG % 32; point = CHAR_getInt( talker, CHAR_ENDEVENT + array); ckpoint = point; npcarg = CHAR_getChar(meindex,CHAR_NPCARGUMENT); getStringFromIndexWithDelim( npcarg, "|", 1, token,sizeof( token)); msgNo = atoi( token ); if( CHAR_getInt( talker , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if( NPC_Util_isFaceToFace( talker, meindex , 2 ) == FALSE ) { if( NPC_Util_isFaceToFace( talker, meindex , 1 ) == FALSE ) return; } //translv = CHAR_getInt( talker, CHAR_TRANSMIGRATION); // 白虎 for(i=0; i<CHAR_MAXPETHAVE; i++) if(CHAR_getCharPet(talker, i) != -1) num++; // 白虎 /*if( translv < 5 || CHAR_getInt( talker, CHAR_LV ) < 125){ sprintf(tmpbuf, "抱歉哦~等到转生5次及等级125级时再来找我吧!"); CHAR_talkToCli( talker, meindex, tmpbuf,CHAR_COLORWHITE); return; }*/ // 青龙 if( CHAR_getInt( talker, CHAR_FAME) < 200000){ sprintf(tmpbuf, "抱歉哦~你目前个人声望 %d 点,请等到超过二千点时再来找我吧!", (CHAR_getInt( talker, CHAR_FAME)/100)); CHAR_talkToCli( talker, meindex, tmpbuf,CHAR_COLORWHITE); return; } else if( ckpoint & (1 << shift) ){ sprintf(tmpbuf, "哦~我记得我好像给过你了吧!"); CHAR_talkToCli( talker, meindex, tmpbuf,CHAR_COLORWHITE); return; } else if( num>=CHAR_MAXPETHAVE ){ sprintf(tmpbuf, "抱歉~没多余的空间可放置宠物。"); CHAR_talkToCli( talker, meindex, tmpbuf,CHAR_COLORWHITE); return; } pet_make( talker, "1845" ); point = point | (1 << shift); CHAR_setInt( talker, CHAR_ENDEVENT + array, point);}void pet_make( int charaindex, char* message ){ int ret; char msgbuf[64]; int enemynum; int enemyid; int i; enemyid = atoi(message); enemynum = ENEMY_getEnemyNum(); for( i=0; i<enemynum; i++ ){ if( ENEMY_getInt( i, ENEMY_ID) == enemyid){ break; } } if(i==enemynum) return; ret = ENEMY_createPetFromEnemyIndex( charaindex, i); snprintf( msgbuf, sizeof( msgbuf), "哦~以你的能力足以配得上一只传说宠物,好吧!就是你了。"); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); for( i=0; i<CHAR_MAXPETHAVE; i++ ){ if( CHAR_getCharPet( charaindex, i) == ret )break; } if( i==CHAR_MAXPETHAVE) i = 0; if( CHAR_CHECKINDEX( ret ) == TRUE ){ CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV )); } snprintf( msgbuf, sizeof( msgbuf ), "K%d", i ); CHAR_sendStatusString( charaindex, msgbuf ); snprintf( msgbuf, sizeof( msgbuf ), "W%d", i ); CHAR_sendStatusString( charaindex, msgbuf ); for( i=0; i<CHAR_MAXPETHAVE; i++ ) if( CHAR_getCharPet(charaindex, i) == ret ) CHAR_send_K_StatusString(charaindex, i, CHAR_K_STRING_HP|CHAR_K_STRING_AI); LogPet( CHAR_getChar( charaindex, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( charaindex, CHAR_CDKEY ), "凯恩",1,"PetMaker", CHAR_getInt( charaindex,CHAR_FLOOR), CHAR_getInt( charaindex,CHAR_X ), CHAR_getInt( charaindex,CHAR_Y ), CHAR_getChar( ret, CHAR_UNIQUECODE) // shan 2001/12/14 );}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -