?? npc_exchangeman.c
字號(hào):
#include "version.h"
#include <string.h>
#include "char.h"
#include "object.h"
#include "net.h"
#include "char_base.h"
#include "npcutil.h"
#include "lssproto_serv.h"
#include "npc_exchangeman.h"
#include "npc_eventaction.h"
#include "log.h"
#include "battle.h"
#include "handletime.h"
#include "enemy.h"
#include "npc_warp.h"
static void NPC_ExChangeMan_selectWindow( int meindex, int talker,int num);
BOOL NPC_TypeCheck(int meindex,int talker,char *szMes);
int NPC_ExChangeManEventCheck( int meindex, int talker, char *buff1);
BOOL NPC_EventItemCheck(int meindex,int talker,int itemNo,int flg);
BOOL NPC_EventLevelCheck(int meindex,int talker,int level,int flg);
// Arminius 8.14 move to .h (for pet talk)
//BOOL NPC_EventBigSmallCheck(int meindex,int talker,char* buf);
BOOL NPC_EventFreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg);
BOOL NPC_EventBigSmallLastCheck(int point1,int mypoint,int flg);
BOOL NPC_ENDEventNoCheck(int meindex,int talker,int shiftbit,int flg);
BOOL NPC_NOWEventNoCheck(int meindex,int talker,int shiftbit,int flg);
BOOL NPC_TiemCheck(int meindex,int talker,int time,int flg);
BOOL NPC_EventAddPet(int meindex, int talker, char *buff2,int mode);
BOOL NPC_RandItemGet(int meindex, int talker,int rand_j,char *buf);
BOOL NPC_PetLvCheckType2(int petindex,int meindex,int talker,char *buf,int mode);
BOOL NPC_PetLvCheck(int meindex,int talker,char *buf,int mode);
void NPC_RequestMain(int meindex,int talker,char *buf);
void NPC_AcceptMain(int meindex,int talker ,char*buf);
void NPC_MsgDisp(int meindex,int talker,int num);
BOOL NPC_EventAdd(int meindex,int talker,int mode);
BOOL NPC_AcceptDel(int meindex,int talker,int mode);
BOOL NPC_SavePointCheck(int meindex,int talker,int shiftbit,int flg);
BOOL NPC_EventReduce(int meindex,int talker,char *buf);
BOOL NPC_EventDelItem(int meindex,int talker,char *buf,int breakflg);
BOOL NPC_EventDelItemEVDEL(int meindex,int talker,char *buf,char *nbuf,int breakflg);
BOOL NPC_EventAddItem(int meindex,int talker,char *buf);
int NPC_EventFile(int meindex,int talker,char *buf);
BOOL NPC_EventDelPet(int meindex,int talker, int petsel);
void NPC_PetSkillMakeStr(int meindex,int toindex,int select);
void NPC_CleanMain(int meindex,int talker,char *buf);
void NPC_EventPetSkill( int meindex, int talker, char *data);
BOOL NPC_ItemFullCheck(int meindex,int talker,char *buf,int mode,int evcnt);
void NPC_CharmStatus(int meindex,int talker);
BOOL NPC_ImageCheck(int meindex,int talker,int kosuu,int flg);
int NPC_EventGetCost(int meindex,int talker,char *arg);
BOOL NPC_EventWarpNpc(int meindex,char *buf);
enum {
CHAR_WORK_EVENTWARP = CHAR_NPCWORKINT4,
};
/*********************************
* 賡渝質(zhì)
*********************************/
BOOL NPC_ExChangeManInit( int meindex )
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buf[1024*2];
int i = 1;
char buf4[256];
CHAR_setWorkInt(meindex,CHAR_WORK_EVENTWARP,1);
#if 0
char buf2[512];
char buf3[256];
int j=1;
int nameflg=0;
int itemno;
char *ret;
char sendbuf[2][10]={"無(wú)法傳送。","可以傳送。"};
char droplogbuf[2][10]={"沒(méi)消失。","消失了。"};
int flg=0;
#endif
/*--NPC及正奶皿毛本永玄允月--*/
CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEEVENT );
/*--澀爛白央奶伙毛 心 心--*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL) {
print("NPC_ExChange.c TypeCheck: GetArgStrErr\n");
print("NPCName=%s\n", CHAR_getChar( meindex ,CHAR_NAME));
return FALSE;
}
i = 1;
/*--奶矛件玄NPC互健丹失奶 丞毛民尼永弁允月--*/
/*--民尼永弁嫩 } 午仄化壅尹月井"}矢永玄丟□伙匹霜木月井"--*/
while(getStringFromIndexWithDelim( argstr ,"EventEnd" ,i ,buf ,sizeof(buf))
!= FALSE)
{
i++;
/*--仇仇匹踏井木化中月及反}伐□瓦件弘毛請(qǐng)?jiān)?*/
if(strstr( buf,"GetItem") != NULL) {
if(strstr( buf,"ItemFullMsg") == NULL) {
NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));
print("\n### EventNo=%d %s:ItemFullMsg 脫離###",
atoi( buf4),
CHAR_getChar( meindex, CHAR_NAME));
}
}
if(strstr( buf,"GetPet") != NULL) {
if(strstr( buf,"PetFullMsg") == NULL) {
NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));
print("\n### ventNo=%d %s:PetFullMsg 脫離 ###",
atoi(buf4),
CHAR_getChar(meindex,CHAR_NAME));
}
}
if(strstr( buf,"GetEgg") != NULL) {
if(strstr( buf,"PetFullMsg") == NULL) {
NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));
print("\n### ventNo=%d %s:PetFullMsg 脫離 ###",
atoi(buf4),
CHAR_getChar(meindex,CHAR_NAME));
}
}
if(strstr( buf,"GetStone") != NULL){
if(strstr( buf,"StoneFullMsg") == NULL){
NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));
print("\n### EventNo=%d %s:StonFullMsg 脫離 ###",
atoi( buf4),
CHAR_getChar( meindex, CHAR_NAME));
}
}
if(strstr( buf,"DelStone") != NULL) {
if(strstr( buf,"StoneLessMsg") == NULL) {
NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",buf4,sizeof(buf4));
print("\n### EventNo=%d %s:StoneLessMsg 脫離 ###",
atoi(buf4),
CHAR_getChar(meindex,CHAR_NAME));
}
}
}
i = 1;
#if 0
/*--奶矛件玄NPC互健丹失奶 丞毛民尼永弁允月--*/
/*--民尼永弁嫩 } 午仄化壅尹月井"}矢永玄丟□伙匹霜木月井"--*/
while(getStringFromIndexWithDelim( argstr ,"EventEnd" ,i ,buf ,sizeof(buf))
!=FALSE)
{
i++;
/*--仇仇匹踏井木化中月及反}伐□瓦件弘毛請(qǐng)?jiān)?*/
if(NPC_Util_GetStrFromStrWithDelim( buf,"GetItem", buf2,sizeof( buf2))
!=NULL)
{
j=1;
flg=0;
while(getStringFromIndexWithDelim( buf2,",", j, buf3, sizeof(buf3))
!=FALSE)
{
j++;
if(strstr( buf2, "*")!=NULL){
getStringFromIndexWithDelim( buf3 ,"*" ,1, buf4 ,sizeof(buf4));
itemno = atoi(buf4);
}else{
/*--失奶 丞瓜件田□必永玄--*/
itemno = atoi(buf3);
}
ret=NPC_Util_GetStrFromStrWithDelim( buf,"NoWarning", buf4,sizeof(buf4));
if(ret != NULL){
char buff[8];
int k=1;
while(getStringFromIndexWithDelim( buf4,"," ,k ,buff, sizeof(buff))
!=FALSE){
k++;
if(itemno == atoi(buff))
{
flg=1;
break;
}
}
}
if(flg == 0){
if( (itemno >=2400 && itemno < 3000) &&(
(ITEM_getdropatlogoutFromITEMtabl(itemno) == 1)
|| (ITEM_getvanishatdropFromITEMtabl(itemno) == 1)
|| (ITEM_getcanpetmailFromITEMtabl(itemno) == 0))
){
if(nameflg==0){
print("\n%s",CHAR_getChar( meindex ,CHAR_NAME));
nameflg=1;
}
print("\nID:%-5d,Logout:%-8s,DropCls:%-8s,SendMail:%-8s,%-16s",
itemno,
droplogbuf[ITEM_getdropatlogoutFromITEMtabl(itemno)],
droplogbuf[ITEM_getvanishatdropFromITEMtabl(itemno)],
sendbuf[ITEM_getcanpetmailFromITEMtabl(itemno)],
ITEM_getNameFromNumber(itemno)
);
}
}
}
}
}
#endif
return TRUE;
}
/*-- 及啖 --*/
BOOL NPC_EventWarpNpc(int meindex,char *buf)
{
char token[32];
char buf2[32];
int floor,x,y;
int ret;
int cnt;
int dcnt = 1;
/*--蜇箕及伐□皿及賜 --*/
cnt = CHAR_getWorkInt(meindex,CHAR_WORK_EVENTWARP);
while(getStringFromIndexWithDelim(buf,",", dcnt,buf2,sizeof(buf2) )
!=FALSE ){
dcnt++;
}
if(dcnt <= cnt) cnt=1;
while(getStringFromIndexWithDelim(buf,",", cnt,buf2,sizeof(buf2)) !=FALSE )
{
cnt++;
ret=getStringFromIndexWithDelim(buf2,".", 1,token,sizeof(token));
if( ret == FALSE ) {
continue;
}
floor = atoi( token );
ret=getStringFromIndexWithDelim(buf2,".", 2,token,sizeof(token));
if( ret == FALSE ){
continue;
}
x = atoi( token );
ret=getStringFromIndexWithDelim(buf2,".", 3,token,sizeof(token));
if( ret == FALSE ) {
continue;
}
y = atoi( token );
CHAR_setWorkInt(meindex,CHAR_WORK_EVENTWARP, cnt);
CHAR_warpToSpecificPoint(meindex, floor, x, y);
return TRUE;
}
return FALSE;
}
/*********************************
* 仄井仃日木兇凜及質(zhì)
*********************************/
void NPC_ExChangeManTalked( int meindex , int talkerindex , char *szMes ,int color )
{
/* 皿伊奶乩□卞覆仄化分仃 殺允月 */
if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) {
return;
}
/*-- 及蟆卞中月井升丹井"--*/
if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2) == FALSE) {
/* ㄠ弘伉永玉動(dòng) 及心 */
if(NPC_Util_isFaceToChara(talkerindex,meindex,1 ) == FALSE) return;
}
/*--皿伊奶乩□及伐□弁 毛賡渝祭--*/
CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANT, 0);
CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANTSEC, 0);
CHAR_setWorkInt( talkerindex ,CHAR_WORKSHOPRELEVANTTRD, 0);
/*--正奶皿 卞坌仃月--*/
NPC_TypeCheck( meindex, talkerindex, szMes);
}
/*------------------------------------------------------------
*澀爛白央奶伙毛 心 心}橢瘀互丐勻兇正奶皿及質(zhì) 毛允月
*-------------------------------------------------------------*/
BOOL NPC_TypeCheck(int meindex,int talker,char *szMes)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buf[1024*2];
char buf2[512];
int i = 1;
int EvNo;
int evch;
/*--澀爛白央奶伙毛 心 心--*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("NPC_ExChange.c TypeCheck: GetArgStrErr\n");
print("NPCName=%s\n", CHAR_getChar(meindex,CHAR_NAME));
return FALSE;
}
/*-- 澀爛白央奶伙毛坌喃允月 --*/
while(getStringFromIndexWithDelim( argstr,"EventEnd",i,buf,sizeof( buf))
!= FALSE){
i++;
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANT, 0);
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 0);
/*-- 奶矛件玄瓜件田□毛必永玄 --*/
if(NPC_Util_GetStrFromStrWithDelim(buf,"EventNo",
buf2, sizeof( buf2) ) == NULL) continue;
if(strstr( buf2, "-") != 0) {
EvNo = -1;
}else{
EvNo = atoi( buf2);
}
/*-- 白仿弘民尼永弁毛墊丹[允匹卞奶矛件玄互蔽 仄化中月樺寧反戚尺 --*/
if(NPC_EventCheckFlg( talker, EvNo) == TRUE) continue;
/*--平□伐□玉及民尼永弁毛墊丹--*/
if(NPC_Util_GetStrFromStrWithDelim( buf,"KeyWord", buf2,sizeof( buf2) )
!= NULL){
if(strcmp( szMes, buf2) != 0) continue;
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANT, i);
}
/*--矢永玄及 蟆及民尼永弁互 勻化月井毛民尼永弁--*/
if(NPC_Util_GetStrFromStrWithDelim( buf,"Pet_Name", buf2,sizeof( buf2)) != NULL){
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 1);
}
evch = NPC_ExChangeManEventCheck( meindex, talker, buf);
if(evch != -1) {
if(NPC_Util_GetStrFromStrWithDelim( buf,"TYPE", buf2, sizeof( buf2)) != NULL){
if( strstr( buf2, "REQUEST") != NULL) {
NPC_RequestMain( meindex, talker, buf);
return TRUE;
}else if( strstr( buf2, "ACCEPT") != NULL) {
/*-匙 毛熬仃午月 --*/
NPC_AcceptMain( meindex, talker, buf);
return TRUE;
}else if(strstr( buf2, "MESSAGE") != NULL) {
char token[14*100];
char token2[14*50];
if(NPC_Util_GetStrFromStrWithDelim( buf,"NomalMsg", token,sizeof( token) )
!= NULL ) {
if(NPC_AcceptDel( meindex, talker, 0) == FALSE) return FALSE;
if(EvNo != -1)
NPC_NowEventSetFlg( talker, EvNo);
CHAR_talkToCli( talker, meindex, token, CHAR_COLORWHITE);
if(NPC_Util_GetStrFromStrWithDelim( buf,"NpcWarp", token2,sizeof( token2) )
!= NULL){
NPC_EventWarpNpc(meindex,token2);
}
if(NPC_Util_GetStrFromStrWithDelim( buf, "EndSetFlg", buf2, sizeof( buf2) )
!=NULL){
char buf3[16];
int k = 1;
if(EvNo != -1) NPC_NowEventSetFlgCls( talker, EvNo);
while(getStringFromIndexWithDelim(buf2 , "," ,k, buf3, sizeof(buf3))
!=FALSE ){
k++;
NPC_EventSetFlg( talker, atoi( buf3));
}
}
if( NPC_Util_GetStrFromStrWithDelim( buf, "CleanFlg",
buf2, sizeof( buf2)) != NULL) {
char buf3[16];
int k = 1;
k= 1 ;
while(getStringFromIndexWithDelim(buf2 , "," , k,
buf3, sizeof(buf3))
!= FALSE ){
NPC_NowEndEventSetFlgCls( talker, atoi(buf3));
k++;
}
}
#ifdef _ANGEL_SUMMON
// 完成召喚任務(wù)
if( NPC_Util_GetStrFromStrWithDelim( buf, "MISSIONOVER",
buf2, sizeof( buf2)) != NULL)
{
int mindex;
int mission;
char nameinfo[64];
mission = atoi( buf2);
mindex = checkIfAngel( talker);
if( mission == missiontable[mindex].mission )
{
char msg[1024];
print(" ====完成召喚任務(wù)==== ");
CHAR_setInt( talker, CHAR_HEROCNT,
CHAR_getInt( talker, CHAR_HEROCNT)+1 );
getMissionNameInfo( talker, nameinfo);
saacproto_ACMissionTable_send( acfd, MISSION_HERO_COMPLETE, 4, nameinfo, "");
sprintf( msg, " 完成任務(wù) i:%d m:%d %s ", mindex, mission, nameinfo);
print( msg);
LogAngel( msg );
}
}
// 清除召喚任務(wù)
if( NPC_Util_GetStrFromStrWithDelim( buf, "MISSIONCLEAN",
buf2, sizeof( buf2)) != NULL)
{
int mindex;
int mission;
char nameinfo[64];
mission = atoi( buf2);
mindex = checkIfAngel( talker);
if( mission == missiontable[mindex].mission )
{
char msg[1024];
getMissionNameInfo( talker, nameinfo);
saacproto_ACMissionTable_send( acfd, mindex, 3, nameinfo, "");
sprintf( msg, " 放棄任務(wù) i:%d m:%d %s ", mindex, mission, nameinfo);
print( msg);
LogAngel( msg );
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -