📄 npc_bus.c
字号:
60, TRUE); } /* 邋中凶凛及丢永本□斥*/ for( i = 1; i < CHAR_PARTYMAX; i ++ ) { int partyindex = CHAR_getWorkInt( meindex, CHAR_WORKPARTYINDEX1+i); if( CHAR_CHECKINDEX( partyindex)) { NPC_BusSendMsg( meindex, partyindex, NPC_BUS_MSG_END); } } /* 蜇箕及凛棉毛本永玄 */ CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec); return; } else { return; } } /*-------------------------------------------------------*/ /* 汹井六月质 */ /* 轾毛菲户月 */ dir = NPC_Util_getDirFromTwoPoint( &start,&end ); /* 漆中月桦赭及谨 由□ 奴汹五匹银丹 */ end.x = CHAR_getInt( meindex, CHAR_X); end.y = CHAR_getInt( meindex, CHAR_Y); /* 夫匀井井匀凶凛及啃及质 */ for( i = 0; i < 100; i ++ ) { if( dir < 0 ) { dir = RAND( 0,7); } dir = NPC_Util_SuberiWalk( meindex, dir); if( dir >= 0 && dir <= 7) break; } if( dir >= 0 && dir <= 7 ) { /* 汹仁 */ ret = CHAR_walk( meindex, dir, 0); if( ret == CHAR_WALKSUCCESSED ) { /* 愤坌互褪卅日醮棉毛汹井六月 */ int i; for( i = 1; i < CHAR_PARTYMAX; i ++ ) { int toindex = CHAR_getWorkInt( meindex, i + CHAR_WORKPARTYINDEX1); if( CHAR_CHECKINDEX(toindex) ) { int parent_dir; /* 阂及匏 午]褪及汹五蟆及匏 井日 轾毛菲户月 */ /* 汹仁 */ start.x = CHAR_getInt( toindex, CHAR_X); start.y = CHAR_getInt( toindex, CHAR_Y); parent_dir = NPC_Util_getDirFromTwoPoint( &start,&end ); /* 弘仿犯奴它旦左皿扑亦件汹五毛 蜇允月啃卞] * 戚及阂反蟆及阂及 毛馨丹方丹卞允月 */ end = start; if( parent_dir != -1 ) { CHAR_walk( toindex, parent_dir, 0); } } } } }}/************************************** * 戚及桦赭毛本永玄允月 **************************************/static int NPC_BusSetPoint( int meindex, char *argstr){ char buf[4096]; char buf2[256]; char buf3[256]; int ret; char routetostring[64]; snprintf( routetostring, sizeof( routetostring), "routeto%d", CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE)); if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf)) == NULL ) { print( "npcbus:nothing route \n"); return FALSE; } ret = getStringFromIndexWithDelim( buf, ";", CHAR_getWorkInt( meindex, NPC_WORK_ROUTEPOINT), buf2, sizeof(buf2)); if( ret == FALSE ) return FALSE; ret = getStringFromIndexWithDelim( buf2, ",", 1, buf3, sizeof(buf3)); if( ret == FALSE) return FALSE; CHAR_setWorkInt( meindex, NPC_WORK_ROUTETOX, atoi( buf3)); ret = getStringFromIndexWithDelim( buf2, ",", 2, buf3, sizeof(buf3)); if( ret == FALSE) return FALSE; CHAR_setWorkInt( meindex, NPC_WORK_ROUTETOY, atoi( buf3)); return TRUE;}/************************************** * route 寞井日] 蟆互丐匀凶日公木毛 * 惫寞及午仇卞本永玄允月[ **************************************/static void NPC_BusSetDestPoint( int meindex, char *argstr){ char buf[256]; char routename[256]; snprintf( routename, sizeof( routename), "routename%d", CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE)); if( NPC_Util_GetStrFromStrWithDelim( argstr, routename, buf, sizeof( buf)) != NULL ) { CHAR_setChar( meindex, CHAR_OWNTITLE, buf); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); }}/************************************** * 隙烂今木凶失奶 丞毛 匀化中月井民尼永弁允月 * 匀化中凶日分户 **************************************/static BOOL NPC_BusCheckDeniedItem( int meindex, int charaindex, char *argstr){ char buf[1024]; BOOL found = TRUE; if( NPC_Util_GetStrFromStrWithDelim( argstr, "denieditem", buf, sizeof( buf)) != NULL ) { int i; int ret; for( i = 1; ; i ++) { int itemid; char buf2[64]; int j; ret = getStringFromIndexWithDelim( buf, ",", i, buf2, sizeof(buf2)); if( ret == FALSE ) break; itemid = atoi( buf2); for( j = 0; j < CHAR_MAXITEMHAVE; j ++) { int itemindex = CHAR_getItemIndex( charaindex, j); if( ITEM_CHECKINDEX( itemindex)) { if( ITEM_getInt( itemindex, ITEM_ID) == itemid) { found = FALSE; break; } } } } } return found;}/************************************** * 隙烂今木凶失奶 丞毛 匀化中月井民尼永弁允月 * 匀化中卅中午分户 **************************************/BOOL NPC_BusCheckAllowItem( int meindex, int charaindex, BOOL pickupmode){ char buf[1024]; BOOL found = TRUE; BOOL pickup = FALSE; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); if( NPC_Util_GetStrFromStrWithDelim( argstr, "pickupitem", buf, sizeof( buf))!= NULL ){ pickup = TRUE; } if( NPC_Util_GetStrFromStrWithDelim( argstr, "allowitem", buf, sizeof( buf))!= NULL ){ int i; int ret; for( i = 1; ; i ++) { int itemid; char buf2[64]; int j; BOOL getflg; ret = getStringFromIndexWithDelim( buf, ",", i, buf2, sizeof(buf2)); if( ret == FALSE ) break; itemid = atoi( buf2); getflg = FALSE; for( j = 0; j < CHAR_MAXITEMHAVE; j ++) { int itemindex = CHAR_getItemIndex( charaindex, j); if( ITEM_CHECKINDEX( itemindex)) { if( ITEM_getInt( itemindex, ITEM_ID) == itemid) { if( pickupmode && pickup && !getflg) { CHAR_DelItem( charaindex, j); getflg = TRUE; } break; } } } if( j == CHAR_MAXITEMHAVE) { found = FALSE; break; } } } return found;}/************************************** * 隙烂今木凶伊矛伙动晓井民尼永弁允月 **************************************/static BOOL NPC_BusCheckLevel( int meindex, int charaindex, char *argstr){ int level; /* 卅仃木壬中仃卅中娄醒及民尼永弁 */ level = NPC_Util_GetNumFromStrWithDelim( argstr, "needlevel"); if( level == -1 ) { return TRUE; } if( CHAR_getInt( charaindex, CHAR_LV) >= level ) return TRUE; return FALSE;}/************************************** * 豢嗯毛民尼永弁允月 * -1 蛲 0动晓” ]井勾 邰Stone **************************************/static int NPC_BusCheckStone( int meindex, int charaindex, char *argstr){ int gold; /* 卅仃木壬中仃卅中娄醒及民尼永弁 */ gold = NPC_Util_GetNumFromStrWithDelim( argstr, "needstone"); if( gold == -1 ) { return 0; } if( CHAR_getInt( charaindex, CHAR_GOLD) >= gold ) return gold; return -1;}/************************************** * 丢永本□斥毛霜月 * 娄醒及丢永本□斥互卅仃木壬犯白巧伙玄丢永本□斥毛霜月 **************************************/static void NPC_BusSendMsg( int meindex, int talkerindex, int tablenum){ char argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; char buf[256]; char msg[256]; if( tablenum < 0 || tablenum >= arraysizeof( busmsg)) return; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); if( NPC_Util_GetStrFromStrWithDelim( argstr, busmsg[tablenum].option, buf, sizeof( buf)) != NULL ) { strcpy( msg, buf); } else { snprintf( msg, sizeof(msg),busmsg[tablenum].defaultmsg); } CHAR_talkToCli( talkerindex, meindex, msg, CHAR_COLORYELLOW);}/************************************** * 伙□玄 □皮伙及禾奶件玄及醒毛潸 允月 **************************************/static int NPC_BusGetRoutePointNum( int meindex, char *argstr ){ int i; char buf[4096]; char buf2[256]; int ret; char routetostring[64]; snprintf( routetostring, sizeof( routetostring), "routeto%d", CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE)); if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf)) == NULL ) { print( "npcbus:nothing route \n"); return -1; } for( i = 1; ; i ++ ) { ret = getStringFromIndexWithDelim( buf, ";", i, buf2, sizeof(buf2)); if( ret == FALSE) break; } return( i -1);}BOOL NPC_BusCheckJoinParty( int meindex, int charaindex, BOOL msgflg){ //int fd; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; int ret; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); /* ㄠ弘伉永玉动 及心 */ if( !NPC_Util_charIsInFrontOfChar( charaindex, meindex, 1 )) return FALSE; /* 昙乐反蛐 允月 */ if( CHAR_getWorkInt( meindex, NPC_WORK_MODE) != 0 ) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_GETTINGON); return FALSE; } /* 天□化不分匀凶日分户 */ if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) != CHAR_PARTY_NONE) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_NOTPARTY); return FALSE; } /* 由□ 奴及谛醒毛民尼永弁允月 */ if( CHAR_getEmptyPartyArray( meindex) == -1 ) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_OVERPARTY); return FALSE; } /* 失奶 丞及民尼永弁毛允月(嗟鞅失奶 丞) */ if( !NPC_BusCheckDeniedItem( meindex, charaindex, argstr)) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_DENIEDITEM); return FALSE; }#ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE ) { CHAR_talkToCli( charaindex, -1, "无法携带货物上车。", CHAR_COLORYELLOW); return FALSE; }#endif /* 失奶 丞及民尼永弁毛允月( 邰失奶 丞) */ if( !NPC_BusCheckAllowItem( meindex, charaindex, FALSE)) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_ALLOWITEM); return FALSE; } /* 伊矛伙及民尼永弁毛允月 */ if( !NPC_BusCheckLevel( meindex, charaindex, argstr)) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_LEVEL); return FALSE; } /* 奶矛件玄 井民尼永弁允月 */// if( CHAR_getInt( charaindex, CHAR_NOWEVENT) != 0 ||// CHAR_getInt( charaindex, CHAR_NOWEVENT2) != 0 ||// CHAR_getInt( charaindex, CHAR_NOWEVENT3) != 0 )// {// if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_EVENT);// return FALSE;// } /* 豢嗯及民尼永弁毛允月 云嗯毛潸月及匹] 蔽民尼永弁卞允月仇午″ */ ret = NPC_BusCheckStone( meindex, charaindex, argstr); if( ret == -1 ) { if( msgflg) NPC_BusSendMsg( meindex, charaindex, NPC_BUS_MSG_GOLD); return FALSE; } if( ret != 0 ) { char msgbuf[128]; /* 豢嗯毛午月 */ CHAR_setInt( charaindex, CHAR_GOLD, CHAR_getInt( charaindex, CHAR_GOLD) - ret); /* 霜耨 */ CHAR_send_P_StatusString( charaindex, CHAR_P_STRING_GOLD); snprintf( msgbuf, sizeof( msgbuf), "支付了%d Stone!", ret); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); } /* 由□ 奴卞 月 */ //CHAR_JoinParty_Main( charaindex, meindex); //fd = getfdFromCharaIndex( charaindex ); //lssproto_PR_send( fd, 1, 1); return TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -