void NPC_SimpleShopTalked( int meindex, int talker, char *msg, int color ) { #define SHOPRANGE 3 char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX]; if( CHAR_getInt( talker,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ){ return; } if( NPC_Util_charIsInFrontOfChar( talker, meindex, SHOPRANGE ) && ! CHAR_getFlg( talker,CHAR_ISDIE ) ){ NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg)); getStringFromIndexWithDelim( npcarg,"|", OPENSHOPTOKEN,token, sizeof(token)); if( NPC_SimpleShopOpenShopOrNot( msg, token ) && NPC_Util_isFaceToFace( meindex, talker, SHOPRANGE ) ){ CHAR_setWorkInt( meindex, CHAR_WORKSHOPCLIENTINDEX, talker ); NPC_SimpleShopOpenShopWindow( meindex, talker, npcarg ); }else{ int tokennum; int i; char tmp[NPC_UTIL_GETARGSTR_LINEMAX]; getStringFromIndexWithDelim( npcarg,"|", MSGTOKEN,token, sizeof(token)); tokennum = 1; for( i=0;token[i]!='\0';i++ ){ if( token[i] == ',' ) tokennum++; } getStringFromIndexWithDelim( token,",", rand()%tokennum+1,tmp, sizeof(tmp)); CHAR_talkToCli( talker, meindex, tmp, CHAR_COLORWHITE ); } } }
void NPC_NPCEnemyTalked( int meindex , int talkerindex , char *szMes , int color ) { char npcarg1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *npcarg; char buf[256]; if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if((npcarg = NPC_Util_GetArgStr( meindex, npcarg1, sizeof( npcarg1))) == NULL ) { print("Can't GetArgStr !!"); return; } if( NPC_Util_GetStrFromStrWithDelim( npcarg, "NEWTIME", buf, sizeof( buf)) != NULL ){ if( CHAR_getWorkInt( meindex, NPC_TIME_MODE) <= 0 ) { if( NPC_Util_GetStrFromStrWithDelim( npcarg, "Time_Msg", buf, sizeof( buf) ) != NULL) { CHAR_talkToCli( talkerindex, meindex, buf, CHAR_COLORYELLOW); } return; } } if( !NPC_Util_charIsInFrontOfChar( talkerindex, meindex, 1 )) return; if( CHAR_getWorkInt( meindex, CHAR_WORK_ENCOUNTTYPE) >= 1 ) { NPC_NPCEnemy_Encount( meindex, talkerindex, 1); } }
/* * 仄井仃日木凶午五反NPCARGUMENT毛公及引引 允〔 */ void NPC_TownPeopleTalked( int index, int talker, char *msg, int color ) { char arg1[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX]; char *arg; int i, tokennum; /* 3弘伉永玉動 及樺寧分仃忒蠶允月 */ if( CHAR_getInt(talker,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER && NPC_Util_charIsInFrontOfChar( talker, index, 3 ) ){ arg = NPC_Util_GetArgStr( index, arg1, sizeof( arg1)); tokennum = 1; /* 戊件穴匹嗉濠日木凶玄□弁件互窒仇丐月井醒尹月 */ for( i=0;arg[i]!='\0';i++ ){ if( arg[i] == ',' ) tokennum++; } /* 仿件母丞匹升木毛韻月井瑁戶化}公及玄□弁件毛潸曰分允 */ getStringFromIndexWithDelim( arg,",", rand()%tokennum+1,token, sizeof(token)); CHAR_talkToCli( talker, index, token, CHAR_COLORWHITE ); } }
/********************************* * �ƾ�����ľ���ݼ��� *********************************/ void NPC_ActionTalked( int meindex , int talkerindex , char *szMes , int color ) { char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[64]; /* �����������帲�ƻ����� ɱ���� */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ��������� ���� */ if( !NPC_Util_charIsInFrontOfChar( talkerindex, meindex, 1 )) return; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); if( NPC_Util_GetStrFromStrWithDelim( argstr, "normal", buf, sizeof( buf)) != NULL ) { CHAR_talkToCli( talkerindex, meindex ,buf , CHAR_getWorkInt( meindex, CHAR_WORK_MSGCOLOR )); } }
static void NPC_Riderman_selectWindow( int meindex, int toindex, int num) { int fd; char buf[256]; if( CHAR_getInt( toindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( !NPC_Util_charIsInFrontOfChar( toindex, meindex, 1 )) return; if( !NPC_Riderman_readData( meindex, num, FALSE) ) { print( "riderman:readdata error\n"); return; } fd = getfdFromCharaIndex( toindex); if( fd != -1 ) { lssproto_WN_send( fd, w.windowtype, w.buttontype, w.windowno+100, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( w.message, buf, sizeof(buf))); } }
static void NPC_FmLetter_selectWindow( int meindex, int toindex, int num) { int fd; char buf[256]; /* ¥×¥ì¥¤¥ä¡¼¤ËÂФ·¤Æ¤À¤± ±þ¤¹¤ë */ if( CHAR_getInt( toindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* £±¥°¥ê¥Ã¥É°Ê ¤Î¤ß */ if( !NPC_Util_charIsInFrontOfChar( toindex, meindex, 1 )) return; if( !NPC_FmLetter_readData( meindex, num, FALSE) ) { print( "fmletter:readdata error\n"); return; } fd = getfdFromCharaIndex( toindex); if( fd != -1 ) { lssproto_WN_send( fd, w.windowtype, w.buttontype, w.windowno+100, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( w.message, buf, sizeof(buf))); } }
void NPC_TimeManTalked( int meindex , int talkerindex , char *msg ,int color ) { char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[512]; char buf[512]; int tokennum=0; int i; /*--目の前にいるかどうか?--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2)==FALSE){ /* 1グリッド以内のみ */ if( NPC_Util_CharDistance( talkerindex ,meindex ) > 1) return; } if(CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)==9999){ /*--消えているモード--*/ return; } if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){ print("GetArgStrErr"); return; } if( CHAR_getInt(talkerindex,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER )return; if( NPC_Util_charIsInFrontOfChar( talkerindex, meindex, 3 ) ==FALSE) return; if(CHAR_getWorkInt(meindex,E_INT_MODE)==0){ /*--メッセージを返す */ NPC_Util_GetStrFromStrWithDelim(argstr,"main_msg",buf,sizeof( buf) ); }else{ /*グラフィックNOを変えただけなので、違うメッセージを返す */ NPC_Util_GetStrFromStrWithDelim(argstr,"change_msg",buf,sizeof( buf) ); } tokennum = 1; /* コンマで区切られたトークンが何こあるか数える */ for( i=0;buf[i]!='\0';i++ ){ if( buf[i] == ',' ) tokennum++; } /* ランダムでどれを喋るか決めて、そのトークンを取りだす */ getStringFromIndexWithDelim( buf,",", rand()%tokennum+1,token, sizeof(token)); /*--しゃべる--*/ CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORWHITE ); }
////////////////////////////////////////////////////////////////////////////// //功能接口 int NPC_Lua_NLG_CheckInFront(lua_State *_NLL) { CheckEx(_NLL, 3); CheckIndexNull(_NLL, 1); CheckIndexNull(_NLL, 2); int TM_SurIndex = (int)lua_tointeger(_NLL, 1); int TM_DesIndex = (int)lua_tointeger(_NLL, 2); int TM_Distance = (int)lua_tointeger(_NLL, 3); BOOL TM_Ret = NPC_Util_charIsInFrontOfChar(TM_SurIndex, TM_DesIndex, TM_Distance); LRetBool(_NLL, TM_Ret); }
void NPC_TimeManTalked( int meindex , int talkerindex , char *msg ,int color ) { char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[512]; char buf[512]; int tokennum=0; int i; if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2)==FALSE){ if( NPC_Util_CharDistance( talkerindex ,meindex ) > 1) return; } if(CHAR_getInt(meindex,CHAR_BASEIMAGENUMBER)==9999){ /*--壅尹化中月乒□玉--*/ return; } if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){ print("GetArgStrErr"); return; } if( CHAR_getInt(talkerindex,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER )return; if( NPC_Util_charIsInFrontOfChar( talkerindex, meindex, 3 ) ==FALSE) return; if(CHAR_getWorkInt(meindex,E_INT_MODE)==0){ /*--丢永本□斥毛忒允 */ NPC_Util_GetStrFromStrWithDelim(argstr,"main_msg",buf,sizeof( buf) ); }else{ NPC_Util_GetStrFromStrWithDelim(argstr,"change_msg",buf,sizeof( buf) ); } tokennum = 1; /* 戊件穴匹嗉濠日木凶玄□弁件互窒仇丐月井醒尹月 */ for( i=0;buf[i]!='\0';i++ ){ if( buf[i] == ',' ) tokennum++; } getStringFromIndexWithDelim( buf,",", rand()%tokennum+1,token, sizeof(token)); /*--仄扎屯月--*/ CHAR_talkToCli( talkerindex, meindex, token, CHAR_COLORWHITE ); }
void NPC_TownPeopleTalked( int index, int talker, char *msg, int color ) { char arg[NPC_UTIL_GETARGSTR_BUFSIZE], token[NPC_UTIL_GETARGSTR_LINEMAX]; int i, tokennum; if( CHAR_getInt(talker,CHAR_WHICHTYPE) == CHAR_TYPEPLAYER && NPC_Util_charIsInFrontOfChar( talker, index, 3 ) ){ NPC_Util_GetArgStr( index, arg, sizeof( arg)); tokennum = 1; /* Îì¼þѨƥà¼å©ÈÕľÐ×Ðþ¡õÛͼþ»¥ÖϳðؤÔ¾®ÐÑÒüÔ */ for( i=0;arg[i]!='\0';i++ ){ if( arg[i] == ',' ) tokennum++; } getStringFromIndexWithDelim( arg,",", rand()%tokennum+1,token, sizeof(token)); CHAR_talkToCli( talker, index, token, CHAR_COLORWHITE ); } }
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; } /* ��ì�P��������ë���� */ 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; }
BOOL NPC_AirCheckJoinParty( int meindex, int charaindex, BOOL msgflg) { //int fd; char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; int ret; argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); /* ㄠ弘伉永玉動 及心 */ if( !NPC_Util_charIsInFrontOfChar( charaindex, meindex, 1 )) return FALSE; /* 曇樂反蛐 允月 */ if( CHAR_getWorkInt( meindex, NPC_WORK_MODE) != 0 ) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_GETTINGON); return FALSE; } /* 天□化不分勻凶日分戶 */ if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) != CHAR_PARTY_NONE) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_NOTPARTY); return FALSE; } /* 由□ 奴及諦醒毛民尼永弁允月 */ if( CHAR_getEmptyPartyArray( meindex) == -1 ) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_OVERPARTY); return FALSE; } /* 失奶 丞及民尼永弁毛允月(嗟鞅失奶 丞) */ if( !NPC_AirCheckDeniedItem( meindex, charaindex, argstr)) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_DENIEDITEM); return FALSE; } #ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE ) { CHAR_talkToCli( charaindex, -1, "無法攜帶貨物上機。", CHAR_COLORYELLOW); return FALSE; } #endif /* 失奶 丞及民尼永弁毛允月( 邰失奶 丞) */ if( !NPC_AirCheckAllowItem( meindex, charaindex, FALSE)) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_ALLOWITEM); return FALSE; } #ifdef _NPC_AIRDELITEM if( !NPC_AirCheckDelItem( meindex, charaindex, FALSE) ){ //若是沒扣除了道具 if( msgflg ) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_DELITEM); return FALSE; } #endif /* 伊矛伙及民尼永弁毛允月 */ if( !NPC_AirCheckLevel( meindex, charaindex, argstr)) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_LEVEL); return FALSE; } #ifdef _NPC_AIRLEVEL if( !NPC_AirCheckMaxLevel( meindex, charaindex, argstr)) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_MAXLEVEL); return FALSE; } #endif /* 奶矛件玄 井民尼永弁允月 */ // if( CHAR_getInt( charaindex, CHAR_NOWEVENT) != 0 || // CHAR_getInt( charaindex, CHAR_NOWEVENT2) != 0 || // CHAR_getInt( charaindex, CHAR_NOWEVENT3) != 0 ) // { // if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_MSG_EVENT); // return FALSE; // } /* 豢嗯及民尼永弁毛允月 雲嗯毛潸月及匹〕 蔽民尼永弁卞允月仇午〞 */ ret = NPC_AirCheckStone( meindex, charaindex, argstr); if( ret == -1 ) { if( msgflg) NPC_AirSendMsg( meindex, charaindex, NPC_AIR_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; }
BOOL NPC_BusCheckJoinParty( int meindex, int charaindex, BOOL msgflg) { //int fd; char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; int ret; argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); /* £±¥°¥ê¥Ã¥É°Ê ¤Î¤ß */ 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, "µLªkÄâ±a³fª«¤W¨®¡C", 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; // } /* ¸æ¶â¤Î¥Á¥§¥Ã¥¯¤ò¤¹¤ë ¶³¶â¤ò¼è¤ë¤Î¤Ç¡f ½ª¥Á¥§¥Ã¥¯¤Ë¤¹¤ë¤³¤È¡ª */ 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), "¤ä¥I¤F%d Stone¡I", ret); CHAR_talkToCli( charaindex, -1, msgbuf, CHAR_COLORYELLOW); } /* ¥Ñ¡¼ ¥£¤Ë ¤ë */ //CHAR_JoinParty_Main( charaindex, meindex); //fd = getfdFromCharaIndex( charaindex ); //lssproto_PR_send( fd, 1, 1); return TRUE; }