?? npc_bus.c
字號:
add *= -1;
}
CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT,
CHAR_getWorkInt( meindex, NPC_WORK_ROUTEPOINT) +add);
if( NPC_BusSetPoint( meindex, argstr) == FALSE ) {
/* 卞讒邋*/
/* 謹切乒□玉卞允月 */
CHAR_setWorkInt( meindex, NPC_WORK_MODE,3);
/* SE 日允 穴件乒旦及陲太 */
if( CHAR_getWorkInt( meindex, NPC_WORK_SEFLG )) {
CHAR_sendSEoArroundCharacter(
CHAR_getInt( meindex, CHAR_FLOOR),
CHAR_getInt( meindex, CHAR_X),
CHAR_getInt( meindex, CHAR_Y),
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];
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];
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 {
}
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];
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 + -