📄 npc_exchangeman.c
字号:
if(strstr( buf, "*") != NULL) {
if(NPC_EventReduce( meindex, talker, buf) == TRUE){
return TRUE;
}
}else if(NPC_EventFreeIfCheck( meindex, talker, buff2, kosuu, 0)
== TRUE)
{
return TRUE;
}
}
return FALSE;
}
/*-----------------------------------
* 嫩 毛 凶仄化中月井及民尼永弁
*-----------------------------------*/
BOOL NPC_EventFreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg)
{
/*--伊矛伙民尼永弁--*/
if(strcmp( buf, "LV") == 0) {
if(NPC_EventLevelCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
/*--失奶 丞民尼永弁--*/
if(strcmp( buf, "ITEM") == 0) {
if(NPC_EventItemCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
/*--蔽 奶矛件玄民尼永弁--*/
if(strcmp( buf, "ENDEV") == 0) {
if(NPC_ENDEventNoCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
if(strcmp( buf, "NOWEV") == 0) {
if(NPC_NOWEventNoCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
if(strcmp( buf, "SP" ) == 0) {
if(NPC_SavePointCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
if(strcmp( buf, "TIME") == 0) {
if(NPC_TiemCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
#ifdef _PROFESSION_SKILL // WON ADD 人物职业技能
if(strcmp(buf,"CLASS")==0){
if(NPC_ActionClassCheck(meindex,talker,kosuu,flg)==TRUE)
return TRUE;
}
#endif
if(strcmp( buf, "IMAGE") == 0) {
if(NPC_ImageCheck( meindex, talker, kosuu, flg) == TRUE) {
return TRUE;
}
}
#ifdef _ANGEL_SUMMON
if(strcmp(buf,"ANGEL_NOW")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_DOING, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_NOW")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_DOING, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"ANGEL_OVER")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_HERO_COMPLETE, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_OVER")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_HERO_COMPLETE, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"ANGEL_OUT")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_TIMEOVER, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_OUT")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_TIMEOVER, 0)==TRUE)
return TRUE;
}
if(strcmp(buf,"ANGEL_I_NOW")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_DOING, TRUE)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_I_NOW")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_DOING, TRUE)==TRUE)
return TRUE;
}
if(strcmp(buf,"ANGEL_I_OVER")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_HERO_COMPLETE, TRUE)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_I_OVER")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_HERO_COMPLETE, TRUE)==TRUE)
return TRUE;
}
if(strcmp(buf,"ANGEL_I_OUT")==0){
if( NPC_ActionMissionAngelCheck(meindex,talker,kosuu, MISSION_TIMEOVER, TRUE)==TRUE)
return TRUE;
}
if(strcmp(buf,"HERO_I_OUT")==0){
if( NPC_ActionMissionHeroCheck(meindex,talker,kosuu, MISSION_TIMEOVER, TRUE)==TRUE)
return TRUE;
}
if(strcmp( buf, "HEROCNT") == 0) {
//if(NPC_EventLevelCheck( meindex, talker, kosuu, flg) == TRUE) {
if(NPC_HeroCompleteCountCheck( meindex, talker, kosuu, flg) == TRUE)
return TRUE;
}
#endif
#ifdef _NPC_EXCHANGEMANTRANS
//判断转生
{
//print("\n判断转生");
if(strcmp(buf,"TRANS")==0){
int mytrans;
mytrans = CHAR_getInt(talker,CHAR_TRANSMIGRATION);
if(NPC_EventBigSmallLastCheck( kosuu, mytrans, flg) == TRUE)
return TRUE;
}
}
#endif
#ifdef _PROSK99
if(strstr( buf, "PROSK" ) != NULL) {//PROSK99>16 职技等级大於等於99%的数量要超过16个
char *p=NULL;
int i,level=0,count=0;
CHAR_HaveSkill *pSkil;
if( p = strstr( buf, "PROSK" ) )
level = atoi(p+5);
else
level = 100;
for( i = 0; i < CHAR_SKILLMAXHAVE; i ++ ){
if( pSkil = CHAR_getCharHaveSkill( talker, i ) )
if( SKILL_getInt( &pSkil->skill, SKILL_LEVEL) >= level )
++count;
}
if(NPC_EventBigSmallLastCheck( kosuu, count, flg) == TRUE)
return TRUE;
}
#endif
#ifdef _ADD_reITEM
if(strstr( buf, "reITEM" ) != NULL) {
int i,count=0,itemindex=-1;
for( i = CHAR_STARTITEMARRAY ; i < CHAR_MAXITEMHAVE ; i++ ){
itemindex = CHAR_getItemIndex( talker , i );
if( !ITEM_CHECKINDEX( itemindex) )
++count;
}
if(NPC_EventBigSmallLastCheck( kosuu, count, flg) == TRUE)
return TRUE;
}
#endif
return FALSE;
}
/*--------------------------------
* 矢永玄及伊矛伙毛民尼永弁允月
---------------------------------*/
BOOL NPC_PetLvCheck(int meindex,int talker,char *buf,int mode)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buff2[16];
char buf3[8];
int petno;
int baseno;
int petlevel = 0;
int flg=0;
int mypetlevel = 0;
int i = 0;
int petindex;
char name[512];
int cnt = 0;
int loop;
/*--隙烂今木凶矢永玄及瓜件田□ ID)毛潸 --*/
getStringFromIndexWithDelim( buf, "-", 2, buff2, sizeof( buff2));
if(strstr(buff2,"*") != NULL) {
getStringFromIndexWithDelim( buff2, "*", 1, buf3, sizeof( buf3));
petno = atoi( buf3);
getStringFromIndexWithDelim( buff2, "*", 2, buf3, sizeof( buf3));
loop = atoi( buf3);
}else{
petno = atoi( buff2);
loop = 1;
}
/*--矢永玄 互钒中化中月井及民尼永弁--*/
for(i=0; i < CHAR_MAXPETHAVE ; i++) {
if(loop == cnt) return TRUE;
petindex = CHAR_getCharPet( talker, i);
if( petindex == -1 ) continue;
/*--矢永玄及ID毛潸 仄化中仁--*/
baseno = CHAR_getInt( petindex, CHAR_PETID);
/* 矢永玄及ID午}蜇箕及乒□玉毛譬屯月 */
if( (baseno == petno) && (CHAR_getInt( petindex, CHAR_ENDEVENT)
== mode))
{
/*--伊矛伙毛民尼永弁允月--*/
mypetlevel = CHAR_getInt( petindex, CHAR_LV);
getStringFromIndexWithDelim( buf, "-", 1, buff2, sizeof( buff2));
if(strstr( buf, "<") != NULL) {
flg = 1;
getStringFromIndexWithDelim( buff2, "<", 2, buf3, sizeof(buf3));
}else if(strstr( buf, ">") != NULL) {
getStringFromIndexWithDelim( buff2, ">", 2, buf3, sizeof(buf3));
flg = 2;
}else if(strstr( buf, "=") != NULL) {
getStringFromIndexWithDelim( buff2, "=", 2, buf3, sizeof(buf3));
flg = 0;
}
petlevel = atoi( buf3);
if(NPC_EventBigSmallLastCheck( petlevel, mypetlevel, flg) == TRUE) {
/*--矢永玄及 蟆互涩烂今木化中凶日 蟆及民尼永弁 月--*/
if(CHAR_getWorkInt(talker,CHAR_WORKSHOPRELEVANTSEC)==1) {
char *usename;
/*--涩烂白央奶伙及 心 心--*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("PetLevel:GetArgStrErr");
return FALSE;
}
usename = CHAR_getUseName( petindex);
NPC_Util_GetStrFromStrWithDelim( argstr, "Pet_Name",
name,sizeof( name));
if(strcmp( name, usename) == 0)
{
cnt++;
continue;
}
}else {
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 0);
cnt++;
continue;
}
}
}
}
if(loop == cnt) return TRUE;
if(i == CHAR_MAXPETHAVE) return FALSE;
return FALSE;
}
/*--------------------------------
* 矢永玄及伊矛伙毛民尼永弁允月
---------------------------------*/
int NPC_PetLvCheckType2(int petindex,int meindex,int talker,char *buf,int mode)
{
char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
char buff2[16];
char buf3[8];
int petno;
int baseno;
int petlevel = 0;
int flg = 0;
int mypetlevel = 0;
char name[512];
/*--隙烂今木凶矢永玄及瓜件田□ ID)毛潸 --*/
getStringFromIndexWithDelim( buf, "-", 2, buff2, sizeof( buff2));
if(strstr(buff2,"*") != NULL) {
getStringFromIndexWithDelim( buff2, "*", 1, buf3, sizeof( buf3));
petno = atoi( buf3);
}else{
petno = atoi( buff2);
}
/*--矢永玄及ID毛潸 仄化中仁--*/
baseno = CHAR_getInt( petindex, CHAR_PETID);
/*--矢永玄及ID午}蜇箕及乒□玉毛譬屯月--*/
if( (baseno == petno) && (CHAR_getInt( petindex, CHAR_ENDEVENT)
== mode))
{
/*--伊矛伙毛民尼永弁允月--*/
mypetlevel=CHAR_getInt( petindex, CHAR_LV);
getStringFromIndexWithDelim( buf, "-", 1,buff2,sizeof(buff2));
if(strstr( buf, "<") != NULL) {
flg = 1;
getStringFromIndexWithDelim( buff2, "<", 2,
buf3, sizeof(buf3));
}else if(strstr( buf, ">") != NULL) {
getStringFromIndexWithDelim( buff2, ">", 2, buf3, sizeof(buf3));
flg = 2;
}else if(strstr( buf, "=") != NULL) {
getStringFromIndexWithDelim( buff2, "=", 2, buf3, sizeof(buf3));
flg = 0;
}
petlevel = atoi(buf3);
if(NPC_EventBigSmallLastCheck( petlevel, mypetlevel, flg)
== TRUE)
{
/*--矢永玄及 蟆互涩烂今木化中凶日 蟆及民尼永弁 月--*/
if(CHAR_getWorkInt(talker,CHAR_WORKSHOPRELEVANTSEC) == 1) {
char *usename;
/*--涩烂白央奶伙及 心 心--*/
if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr)) == NULL) {
print("PetLevel:GetArgStrErr");
return FALSE;
}
usename = CHAR_getUseName( petindex);
NPC_Util_GetStrFromStrWithDelim(argstr,"Pet_Name",
name, sizeof( name));
if(strcmp( name, usename) == 0)
{
return TRUE;
}
}else {
CHAR_setWorkInt( talker, CHAR_WORKSHOPRELEVANTSEC, 0);
return TRUE;
}
}
}
return FALSE;
}
/*------------------------
*请 鳔及民尼永弁
--------------------------*/
BOOL NPC_SavePointCheck(int meindex,int talker,int shiftbit,int flg)
{
int point;
point = CHAR_getInt( talker, CHAR_SAVEPOINT);
if( (point & ( 1<< shiftbit)) == ( 1<< shiftbit)) {
if(flg == 3) return FALSE;
return TRUE;
}
if(flg == 3) return TRUE;
return FALSE;
}
/*------------------------
*奶丢□斥及民尼永弁
--------------------------*/
BOOL NPC_ImageCheck(int meindex,int talker,int kosuu,int flg)
{
int image;
image = CHAR_getInt( talker, CHAR_IMAGETYPE);
if(NPC_EventBigSmallLastCheck( image, kosuu, flg) == TRUE) {
return TRUE;
}
return FALSE;
}
/*-----------------------------------------
* 凛棉及民尼永弁毛垫丹(丐中引中凛棉)
------------------------------------------*/
BOOL NPC_TiemCheck(int meindex,int talker,int time,int flg)
{
LSTIME nowlstime;
int now;
RealTimeToLSTime( NowTime.tv_sec, &nowlstime);
now = getLSTime( &nowlstime);
if(NPC_EventBigSmallLastCheck( time, now, flg) == TRUE) {
return TRUE;
}
return FALSE;
}
/*------------------------------
*--Item毛民尼永弁
-------------------------------*/
BOOL NPC_EventItemCheck(int meindex,int talker,int itemNo,int flg)
{
int i;
int itemindex = -1;
int id;
//Change fix 不检查穿戴在身上的道具
for( i = CHAR_STARTITEMARRAY ; i < CHAR_MAXITEMHAVE ; i++ ) {
itemindex=CHAR_getItemIndex( talker , i );
if( ITEM_CHECKINDEX( itemindex) ) {
id=ITEM_getInt( itemindex ,ITEM_ID );
if(NPC_EventBigSmallLastCheck( itemNo, id, flg) == TRUE) {
if(flg == 0) return TRUE;
continue;
}else{
if(flg == 0) continue;
return FALSE;
}
}
}
if(flg == 3) return TRUE;
return FALSE;
}
/*------------------------------
* level毛民尼永弁
-------------------------------*/
BOOL NPC_EventLevelCheck(int meindex,int talker,int level,int flg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -