void NPC_EndEventSetFlgCls(int talker,int shiftbit) { int point=0; int array; int shift; if(shiftbit==-1) return; if(shiftbit<=255){ array = shiftbit / 32; shift = shiftbit % 32; if(NPC_NowEventCheckFlg(talker,shiftbit)==TRUE){ point = CHAR_getInt( talker, CHAR_NOWEVENT+array); point = point ^ (1<<shift); CHAR_setInt(talker,CHAR_NOWEVENT+array,point); } if(NPC_EventCheckFlg(talker,shiftbit)==TRUE){ point = CHAR_getInt( talker, CHAR_ENDEVENT+array); point = point ^ (1<<shift); CHAR_setInt(talker,CHAR_ENDEVENT+array,point); } } else if(shiftbit<=510){ array = (shiftbit-255) / 32; shift = (shiftbit-255) % 32; if(NPC_NowEventCheckFlg(talker,shiftbit)==TRUE){ point = CHAR_getInt( talker, CHAR_NOWEVENT9+array); point = point ^ (1<<shift); CHAR_setInt(talker,CHAR_NOWEVENT9+array,point); } if(NPC_EventCheckFlg(talker,shiftbit)==TRUE){ point = CHAR_getInt( talker, CHAR_ENDEVENT9+array); point = point ^ (1<<shift); CHAR_setInt(talker,CHAR_ENDEVENT9+array,point); } } }
BOOL NPCS_ArgumentFreeCheck( int charaindex, char* Argument, int amount, int temp, int probjID) {//amount 數量 Argument 參數 int MyPoint=0, reAmount; reAmount = 0; if( strcmp( Argument, "LV") == 0) {//等級 MyPoint = CHAR_getInt( charaindex, CHAR_LV); }else if( strcmp( Argument, "GOLD") == 0) {//石幣 MyPoint = CHAR_getInt( charaindex, CHAR_GOLD); }else if( strcmp( Argument, "TRANS") == 0) {//轉生次數 MyPoint = CHAR_getInt( charaindex, CHAR_TRANSMIGRATION); }else if( strcmp( Argument, "PET") == 0) {//寵物 ID 數量 MyPoint = NPCS_getUserPetAmount( charaindex, probjID, 1); }else if( strcmp( Argument, "ITEM") == 0) {//道具 ID 數量 MyPoint = NPCS_getUserItemAmount( charaindex, probjID, 1); }else if( strcmp( Argument, "ENDEV") == 0) {//結束旗標 return NPC_EventCheckFlg( charaindex, amount); }else if( strcmp( Argument, "NOWEV") == 0) {//開啟旗標 return NPC_NowEventCheckFlg( charaindex, amount); }else if( strcmp( Argument, "PARTY") == 0) {//檢查團隊人數 MyPoint = NPCS_getUserPartyAmount( charaindex ); }else if( strcmp( Argument, "reITEM")== 0) {//剩餘道具欄位 NPCS_getUserItemAmount( charaindex, probjID, 0); MyPoint = reAmount; }else if( strcmp( Argument, "rePET") == 0) {//剩餘寵物欄位 NPCS_getUserPetAmount( charaindex, probjID, 0); MyPoint = reAmount; }else { } return NPCS_ArgumentBigSmallCheck( amount, MyPoint, temp); }
BOOL PetTalk_FreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg, int temp) { int Type = -1; if(strcmp(buf,"LV")==0){ if(PetTalk_LevelCheck(meindex,talker,kosuu,flg)==TRUE){ return TRUE; } } if( strcmp( buf, "TRANS") == 0 ) { if( PetTalk_CheckTrans( meindex, talker, kosuu, flg) == TRUE ) return TRUE; } if( strcmp( buf, "PET") == 0 ) { if( temp > 0 ) { if( PetTalk_CheckMyPet( meindex, talker, kosuu, flg, temp) == TRUE ) return TRUE; }else return FALSE; } if(strcmp( buf, "ITEM")==0){ if(PetTalk_ItemCheck(meindex,talker,kosuu,flg)==TRUE){ return TRUE; } } if(strcmp( buf, "ENDEV")==0){ if(NPC_EventCheckFlg( talker, kosuu)==TRUE){ return TRUE; } } if(strcmp( buf, "NOWEV")==0){ if(NPC_NowEventCheckFlg( talker, kosuu)==TRUE){ return TRUE; } } if(strcmp( buf, "HP" ) == 0 ) { Type = 0; if( PetTalk_CheckMyType( meindex, talker, kosuu, flg, Type ) == TRUE ) { return TRUE; } } #ifdef _PET_TALKBBI if(strcmp( buf, "BBI" ) == 0 ) { if( PET_CheckPlayerBBI( meindex, talker, kosuu, flg)== TRUE) { return TRUE; } } #endif return FALSE; }
/* *£ыƒћ√ђЉю–ю±ќ ∞„Ј¬Їл√Ђ√сƒб”јџЌ‘ ‘¬ */ int NPC_EndFlgCheck(int meindex,int talker ,int nowflg[MAXEVENTFLG]) { int i = 0; int j = 0; for(i= 0; i < MAXEVENTFLG ; i++){ if(NPC_EventCheckFlg( talker, i) == TRUE) { nowflg[j] = i; j++; } } return j; }
BOOL NPCEnemy_FreeIfCheck(int meindex,int talker,char* buf,int kosuu,int flg, int temp) { if(strcmp(buf,"LV")==0){ if(NPCEnemy_LevelCheck(meindex,talker,kosuu,flg)==TRUE){ return TRUE; } } if( strcmp(buf,"TRANS") == 0 ) { if( NPCEnemy_CheckTrans( meindex, talker, kosuu, flg) == TRUE ) return TRUE; } if( strcmp( buf, "PET") == 0 ) { if( temp > 0 ) { if( NPCEnemy_CheckMyPet( meindex, talker, kosuu, flg, temp) == TRUE ) return TRUE; }else return FALSE; } if(strcmp(buf,"ITEM")==0){ if(NPCEnemy_ItemCheck(meindex,talker,kosuu,flg)==TRUE){ return TRUE; } } if(strcmp(buf,"ENDEV")==0){ if(NPC_EventCheckFlg( talker, kosuu)==TRUE){ return TRUE; } } if(strcmp(buf,"NOWEV")==0){ if(NPC_NowEventCheckFlg( talker, kosuu)==TRUE){ return TRUE; } } return FALSE; }
int NPC_NPCEnemy_Encount( int meindex, int charaindex, int mode) { char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; char buf[512]; BOOL flg = TRUE; int battlemax = getBattlenum(); int i; if( CHAR_getInt( meindex, CHAR_BASEIMAGENUMBER) == 0 ) { return FALSE; } if( mode == 0 ) { if( CHAR_getWorkInt( meindex, CHAR_WORK_ENCOUNTTYPE) == 1 ) { flg = FALSE; } }else if( mode == 1 ) { if( CHAR_getWorkInt( meindex, CHAR_WORK_ENCOUNTTYPE) == 0 ) { flg = FALSE; } } argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)); if( !flg) { if( NPC_Util_GetStrFromStrWithDelim( argstr, "deniedmsg", buf, sizeof( buf)) != NULL ) { CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW ); } return FALSE; } flg = FALSE; while( 1 ) { char buf[1024]; if( NPC_Util_GetStrFromStrWithDelim( argstr, "item", buf, sizeof( buf)) != NULL ) { char data[128]; BOOL found = FALSE; for( i = 0; i < CHAR_MAXITEMHAVE; i ++ ) { int j; int itemid; int ret = getStringFromIndexWithDelim( buf,",", i + 1,data, sizeof(data)); if( ret == FALSE) break; found = FALSE; itemid = atoi( data); 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 = TRUE; break; } } } if( !found ) break; } if( !found ) break; } #ifdef _ADD_NOITEM_BATTLE if(NPC_Util_GetStrFromStrWithDelim(argstr,"noitem",buf,sizeof(buf)) != NULL){ char data[128]; BOOL found = FALSE; for(i=0;i<CHAR_MAXITEMHAVE;i++){ int j; int itemid; int ret = getStringFromIndexWithDelim(buf,",",i + 1,data,sizeof(data)); if(ret == FALSE) break; found = TRUE; itemid = atoi(data); 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; } } } if(!found) break; } if(!found) break; } #endif { char data[256]; BOOL Evflg=TRUE; if( NPC_Util_GetStrFromStrWithDelim( argstr, "B_evend", buf, sizeof( buf)) != NULL ) { int i=1, event=-1;; while( getStringFromIndexWithDelim( buf,",", i, data, sizeof( data)) ){ i++; event=atoi( data); if( NPC_EventCheckFlg( charaindex, event) == FALSE ) { Evflg = FALSE; break; } } } if( Evflg == FALSE ) break; i=1; if( NPC_Util_GetStrFromStrWithDelim( argstr, "B_evnow", buf, sizeof( buf)) != NULL ) { int i=1, event=-1;; while( getStringFromIndexWithDelim( buf,",", i, data, sizeof( data)) ){ i++; event=atoi( data); if( NPC_NowEventCheckFlg( charaindex, event) == FALSE ) { Evflg = FALSE; break; } } } if( Evflg == FALSE ) break; } if( CHAR_getWorkInt( meindex, CHAR_WORK_ONEBATTLE ) == 1 ) { for( i = 0; i < battlemax; i ++ ) { if( BattleArray[i].use ) { if( BattleArray[i].createindex == meindex ) { break; } } } if( i != battlemax ) { if( NPC_Util_GetStrFromStrWithDelim( argstr, "alreadymsg", buf, sizeof( buf)) != NULL ) { CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW ); } return FALSE; } } flg = TRUE; break; } if( flg ) { /* 閡及凜反 骰允月 */ if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_CLIENT) { char config[32]; snprintf( config, sizeof( config), "askbattlemsg1"); /* 爵 互銨引月蟆卞撙 丟永本□斥 */ if( NPC_Util_GetStrFromStrWithDelim( argstr, config, buf, sizeof( buf)) != NULL ) { int len = strlen( buf); char escapebuf[1024]; int fd = getfdFromCharaIndex( charaindex); char buf2[256]; /* askbattlemsg? 互丐木壬 醒墊卞允月 "\n"戊□玉毛 木月)*/ for( i = 2; i < 7; i ++ ) { snprintf( config, sizeof( config), "askbattlemsg%d", i); if( NPC_Util_GetStrFromStrWithDelim( argstr, config, buf2, sizeof( buf2)) != NULL ) { strcpysafe( &buf[len], sizeof( buf)-len, "\n" ); len++; strcpysafe( &buf[len], sizeof( buf)-len, buf2 ); len += strlen( buf2); if( len >= sizeof( buf) ) { print( "buffer over\n"); return FALSE; } } else { strcpysafe( &buf[len], sizeof( buf)-len, "\n" ); len++; if( len >= sizeof( buf) ) { print( "buffer over\n"); return FALSE; } } } if( fd != -1 ) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_YESNO, CHAR_WINDOWTYPE_NPCENEMY_START, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( buf, escapebuf,sizeof(escapebuf))); } /* 仇仇分仃 卞伉正□件 */ return FALSE; }else { /* 爵 卞 日六月 */ flg = NPC_NPCEnemy_BattleIn( meindex, charaindex); } } } if( !flg) { if( NPC_Util_GetStrFromStrWithDelim( argstr, "deniedmsg", buf, sizeof( buf)) != NULL ) { CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW ); } } return flg; }
//void selectAngel( int charaindex) void selectAngel( int charaindex, int heroindex, int mission, int gm_cmd) { // gm_cmd 表示是否由GM指令产生, //int heroindex =-1; int findindex, startindex; char msg[1024]; int max_char; //int mission; if( AngelReady <= 0 && gm_cmd == FALSE) return; sprintf( msg, " 使者资格检查: %s %s ", CHAR_getChar( charaindex, CHAR_CDKEY), CHAR_getChar( charaindex, CHAR_NAME)); //print( msg); LogAngel( msg); // 天使条件检查 if( gm_cmd == FALSE ) { if( checkIfAngel( charaindex) != -1) // 是否天使或勇者 { //print(" ANGEL已经是天使或勇者了 "); return; } if( CHAR_getInt( charaindex, CHAR_LV) < 30 || !NPC_EventCheckFlg( charaindex, 4 ) ) { //print(" ANGEL资格不符 "); return; } srand( time(NULL)); if( rand()%3 == 0 ) // 天使的机率 2/3 { //print(" ANGEL机率检查不通过 "); return; } } //print(" ANGEL决定 "); // 挑选勇者 if( heroindex == -1 ) { //heroindex = -1; max_char = CHAR_getPlayerMaxNum(); startindex = RAND( 0, max_char-1); findindex = startindex; while(1) { if( findindex == startindex-1) break; findindex = (findindex+1) % max_char; if( !CHAR_CHECKINDEX( findindex) ) continue; if( CHAR_getInt( findindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) continue; if( findindex == charaindex ) continue; if( checkIfAngel( findindex) != -1) continue; // 是否天使或勇者 if( CHAR_getInt( findindex, CHAR_LV) < 80 || !NPC_EventCheckFlg( findindex, 4 ) ) continue; // 勇者的条件 if( rand()%3 == 0 ) continue; // 勇者的机率 2/3 heroindex = findindex; //print(" ANGEL勇者决定 "); break; } if( heroindex < 0) { //sprintf( msg, " 没有找到勇者人选!! "); //print( msg); //LogAngel( msg); return; } } // 决定任务 if( mission == -1 ) { int mlist[MAXMISSION]; // 符合条件的任务列表 char eventlist[1024]; char buf[64]; int i, j, mindex =0; memset( mlist, 0, sizeof(mlist)); for( i =0; i <MAXMISSION; i++) { int checked =TRUE; if( missionlist[i].id <= 0) continue; if( CHAR_getInt( heroindex, CHAR_LV) < missionlist[i].level ) continue; strcpy( eventlist, missionlist[i].eventflag); // 检查必要旗标 j =0; while(1) { j++; if( getStringFromIndexWithDelim( eventlist, ";", j, buf, sizeof(buf)) == FALSE ) break; if( buf[0] != '!') { // 必要旗标或禁止旗标 if( !NPC_EventCheckFlg( heroindex, atoi(buf) )) { checked = FALSE; break; } } else { if( NPC_EventCheckFlg( heroindex, atoi(buf+1) )) { checked = FALSE; break; } } } if( checked ) { mlist[mindex] = missionlist[i].id; print(" mlist[%d]=%d ", mindex, mlist[mindex]); mindex++; } } if( mindex <= 0 ) { //sprintf( msg, " 找不到合适的任务 "); //print( msg); //LogAngel( msg); return; } mission = mlist[rand()%mindex]; } addAngelData( charaindex, heroindex, mission, MISSION_WAIT_ANSWER); // 传到AC // 清除旗标 event8 224~255 为精灵召唤专用 CHAR_setInt( charaindex, CHAR_NOWEVENT8, 0); CHAR_setInt( charaindex, CHAR_ENDEVENT8, 0); CHAR_setInt( heroindex, CHAR_NOWEVENT8, 0); CHAR_setInt( heroindex, CHAR_ENDEVENT8, 0); if( gm_cmd == FALSE ) AngelReady = 0; // 清除缺额 { sprintf( msg, " 产生 %s 天使候补: %s %s Lv:%d 勇者候补: %s %s Lv:%d 任务:%d ci=%d hi=%d ", gm_cmd ? ("(GM指令)") : (" "), CHAR_getChar( charaindex, CHAR_CDKEY), CHAR_getChar( charaindex, CHAR_NAME), CHAR_getInt( charaindex, CHAR_LV), CHAR_getChar( heroindex, CHAR_CDKEY), CHAR_getChar( heroindex, CHAR_NAME), CHAR_getInt( heroindex, CHAR_LV), mission, charaindex, heroindex); print( msg); LogAngel( msg); } }
void NPC_WelfareWindowTalked2( int meindex, int talkerindex, int seqno, int select, char *data) { int skill, i, j; int skillID = -1, skillid = -1; int ENDEV = -1, NOWEV = -1; char buf[64]; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char msg[512]; int fd = getfdFromCharaIndex( talkerindex ); double rate= 1.0; int skillarray; CHAR_HaveSkill* hskill; char err_msg[128] = {0}; if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) { return; } if(NPC_Util_GetArgStr( meindex, argstr, sizeof(argstr))==NULL){ print("GetArgStrErr"); return; } if( NPC_Util_GetStrFromStrWithDelim( argstr, "ENDEV:", msg, sizeof( msg)) != NULL){ ENDEV=atof(msg); } if( NPC_Util_GetStrFromStrWithDelim( argstr, "NOWEV:", msg, sizeof( msg)) != NULL){ NOWEV=atof(msg); } if( NPC_Util_GetStrFromStrWithDelim( argstr, "err_msg:", err_msg, sizeof( msg)) == NULL){ print("GetArgStrErr"); return; } if( ENDEV > 0 ){ if( NPC_EventCheckFlg( talkerindex, ENDEV ) != TRUE ){ CHAR_talkToCli( talkerindex, -1, err_msg, CHAR_COLORYELLOW); return; } }else if( NOWEV > 0 ){ if( NPC_EventCheckFlg( talkerindex, NOWEV ) != TRUE ){ CHAR_talkToCli( talkerindex, -1, err_msg, CHAR_COLORYELLOW); return; } } makeStringFromEscaped( data); getStringFromIndexWithDelim(data,"|",1,buf,sizeof(buf)); skill=atoi(buf); // 技能id skillid = CHAR_getCharSkill( talkerindex, skill - 1 ); skillID = skillid; if(skillID <= 0) return ; if( CHAR_getWorkInt( CONNECT_getCharaindex(fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return ; if( NPC_Util_GetStrFromStrWithDelim( argstr, "skill_rate", msg, sizeof( msg)) != NULL){ rate = atof( msg); } // 不扣钱 CHAR_send_P_StatusString( talkerindex, CHAR_P_STRING_GOLD); skillarray = PROFESSION_SKILL_getskillArray( skillID ); // 检查是否有不能删除的技能 for( i=0; i<CHAR_SKILLMAXHAVE; i++ ){ int limit = -1, skillid = -1, skillarray_temp = -1; // 技能ID skillid = CHAR_getCharSkill( talkerindex, i); if( skillid <= 0 ) continue; skillarray_temp = PROFESSION_SKILL_getskillArray( skillid ); for( j=0; j<4; j++){ limit = PROFESSION_SKILL_getInt( skillarray_temp, PROFESSION_SKILL_LIMIT1+j*2 ); if( limit > 0 && limit == skillID ){ char token[256] = {0}; sprintf( token, "需先遗忘%s,才可删除此技能", PROFESSION_SKILL_getChar( skillarray_temp, PROFESSION_SKILL_NAME ) ); CHAR_talkToCli( talkerindex, -1, token, CHAR_COLORYELLOW); return; } } } // 遗忘技能 { int skill_level = -1; int count = 0; int skill_id[CHAR_SKILLMAXHAVE] = {0}; int skill_temp[CHAR_SKILLMAXHAVE] = {0}; // 取熟练度 for( i=0; i<CHAR_SKILLMAXHAVE; i++ ){ int skillid = -1; // 技能ID skillid = CHAR_getCharSkill( talkerindex, i); // 不储存需遗忘的技能 if( skillid <= 0 || skillid == skillID ) continue; // 技能等级 hskill = CHAR_getCharHaveSkill( talkerindex, i ); skill_level = SKILL_getInt( &hskill->skill, SKILL_LEVEL); skill_id[count] = skillid; skill_temp[count] = skill_level; count++; } // 删除所有技能 CHAR_CHAT_DEBUG_delsk( talkerindex, "all" ); // 还原技能 for( i=0; i<count; i++ ){ PROFESSION_SKILL_ADDSK( talkerindex, skill_id[i], skill_temp[i] ); } CHAR_sendStatusString( talkerindex , "S"); NPC_Welfare_selectWindow2( meindex, talkerindex,0,-1); } // 传送讯息 { char token[256]; int next_profession_skill_point = 0; next_profession_skill_point = CHAR_getInt( talkerindex, PROFESSION_SKILL_POINT ) + 1; CHAR_setInt( talkerindex, PROFESSION_SKILL_POINT, next_profession_skill_point ); memset(token, -1, sizeof(token) ); sprintf( token, "您遗忘了 %s,剩馀学习点数增加一点" ,PROFESSION_SKILL_getChar( skillarray, PROFESSION_SKILL_NAME ) ); CHAR_talkToCli( talkerindex, -1, token, CHAR_COLORYELLOW); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( talkerindex , CHAR_WORKOBJINDEX )); } }
/********************************* * �ƾ�����ľ���ݼ��� *********************************/ void NPC_BodyLanTalked( int meindex , int talkerindex , char *szMes ,int color ) { char szP[256], szArg[4096]; int EventNo = -1,Pre_Event = -1; /* �����������帲�ƻ����� ɱ���� */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ��������� ���� */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 2 ) { return; } // ¦�� ٯ if( NPC_Util_GetArgStr( meindex, szArg, sizeof( szArg ) ) == NULL ){ print( "npc_bodylan.c:û������(%s)\n", CHAR_getChar(meindex,CHAR_NPCARGUMENT) ); return ; }else{ // ��ì���� į�� if( NPC_Util_GetStrFromStrWithDelim( szArg, "EventNo", szP, sizeof( szP ) ) != NULL ){ EventNo = atoi(szP); } // ��� ۢ��ì���� į�� if( NPC_Util_GetStrFromStrWithDelim( szArg, "Pre_Event", szP, sizeof( szP ) ) != NULL ){ Pre_Event = atoi(szP); } } // ���� ۢ��ì���� į��ؤľ�� if( Pre_Event >= 0 ){ // ��ì�����帲�ƻ������ƻ����¾��������� if( NPC_EventCheckFlg( talkerindex, Pre_Event ) == FALSE ){ // ۢ��ì����ë����ʧ�ƻ���ئ�������ճ����� NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_NOT_PREEVENT ); return; } } // ��ì���� į��ؤľ�� if( EventNo >= 0 ){ // ��ì�����帲�ƻ������ƻ����¾��������� if( NPC_EventCheckFlg( talkerindex, EventNo ) == TRUE ){ // �Ȼ������ճ����� NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_ALREADY ); return; } } // �Գ����������������������Ȼ����� if( CHAR_getWorkInt( talkerindex, CHAR_WORKTRADER ) == meindex ){ // ���ձ���Ѩ������ �� �ƻ������� if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT ) >= CHAR_getWorkInt( meindex, BODYLAN_E_COMMANDNUM ) ){ // �� ����� ���� NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_LAST_GOOD ); return; }else{ // �� NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_LAST_NG ); return; } }else{ // �ٻ���ئ��ƥ������ // ��������������м��̼������͵�ë��������� CHAR_setWorkInt( talkerindex, CHAR_WORKTRADER, meindex ); // �ˡ��������� �پ��ձ������ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 1 ); // �����˱������羮�������微ئؤ������ NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_FIRST ); return; } }