void NPC_PetSkillShopLooked( int meindex , int lookedindex) { if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( lookedindex, meindex ) > 2) return; }
void NPC_WindowHealerTalked( int meindex , int talkerindex , char *szMes ,int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( talkerindex, meindex ) > CHAR_getWorkInt(meindex,CHAR_WORK_RANGE)){ return; } if( (CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYMODE) == 0) || (CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYMODE) == 2) ){ NPC_WindowHealer_selectWindow( meindex, talkerindex,0); }else{ int i=0; int otherindex; for( i=0 ; i < CHAR_PARTYMAX ;i++){ otherindex=CHAR_getWorkInt(talkerindex,CHAR_WORKPARTYINDEX1+i); if(otherindex != -1){ NPC_WindowHealer_selectWindow( meindex, otherindex,0); } } } }
static void NPC_Duelranking_selectWindow( int meindex, int toindex, int num, int select) { int fd; if( CHAR_getInt( toindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( toindex, meindex ) > 1) return; if( (fd = getfdFromCharaIndex( toindex)) == -1 ) return; switch( num){ case 1: { char message[1024]; char buf[2048]; strcpy( message, "1\n" " 要看哪一个? \n\n\n" " <强者们> \n\n" " < 自己 > \n\n" " <都不看> \n\n" ); lssproto_WN_send( fd, WINDOW_MESSAGETYPE_SELECT, WINDOW_BUTTONTYPE_NONE, CHAR_WINDOWTYPE_DUELRANKING_START, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( message, buf, sizeof(buf))); } break; } }
/*----------------------------------------- �ͷ���ʧ��������߯�Ȼ������ݱ���̫���ľ�£� -------------------------------------------*/ void NPC_BodyLanWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data ) { if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) return; switch( seqno){ case BODYLAN_WIN_LAST_GOOD: // ��ݩ�ݱ�OK�ɽ�ľ���� if(select==WINDOW_BUTTONTYPE_YES ){ NPC_BodyLan_Profit( meindex, talkerindex ); // ��������������м��̼������͵�ë٨ľ������ CHAR_setWorkInt( talkerindex, CHAR_WORKTRADER, -1 ); // �ˡ��������� �پ��ձ������ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 1 ); }else if( select == WINDOW_BUTTONTYPE_NO ){ // ��ݩ�ݱ�ƽ�Ҽ������ľ���� NPC_BodyLan_Window( meindex, talkerindex, BODYLAN_WIN_GOOD_NO ); // ��������������м��̼������͵�ë٨ľ������ CHAR_setWorkInt( talkerindex, CHAR_WORKTRADER, -1 ); // �ˡ��������� �پ��ձ������ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 1 ); } break; default: break; } }
void NPC_AlldomanTalked( int meindex , int talker , char *msg ,int color ) { if( NPC_Util_CharDistance( talker, meindex ) > 1) return; if( NPC_Util_isFaceToFace( talker, meindex , 1 ) == FALSE ) return; showpage = 1 ; NPC_Alldoman_selectWindow(meindex, talker , 4 ,""); }
/************************************************ * Ïä·¤«¤±¤é¤ì¤¿»þ¤Î½èÍý ************************************************/ void NPC_PrintpassmanTalked( int meindex , int talkerindex , char *msg , int color ) { int i; int charnum; /* ¥×¥ì¥¤¥ä¡¼¤¬¥É¥¢¥Þ¥ó¤Î2¥°¥ê¥Ã¥É°ÊÆâ¤Ê¤éÈ¿±þ¤¹¤ë¡£ */ if(NPC_Util_CharDistance( talkerindex, meindex ) > 2)return; /* ¼«Ê¬ÍѤδÉÍý¿Í¤Î̾Á°¤ò¸¡º÷¤¹¤ë*/ charnum = CHAR_getCharNum(); for(i= CHAR_getPlayerMaxNum() +CHAR_getPetMaxNum(); i<charnum; i++){ if( CHAR_getCharUse(i) && CHAR_getInt( i ,CHAR_WHICHTYPE) == CHAR_TYPEROOMADMIN ){ if( strcmp( CHAR_getWorkChar(i,CHAR_WORKCHAR_MYNAME), CHAR_getWorkChar( meindex, CHAR_WORKCHAR_ADMNAME)) ==0 ) { break; } } } if( i < charnum ) { NPC_RoomAdminNew_DspRoomPasswd( meindex, i, talkerindex); } else { CHAR_talkToCli( talkerindex, meindex, "¡C¡C¡C", NPC_RANKING_MSGCOLOR); } }
void NPC_PetSkillShopTalked( int meindex , int talkerindex , char *szMes ,int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } NPC_PetSkillShop_selectWindow( meindex, talkerindex,0,-1); }
void NPC_PetRaceMasterTalked( int meindex , int talkerindex , char *szMes , int color ) { // ©|¶··s¼W»¡©ú¥H¤ÎÃdª«ª¬ªp if (CHAR_getInt(talkerindex, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) return; if (NPC_Util_isFaceToFace(talkerindex, meindex, 2) == FALSE) if (NPC_Util_CharDistance(talkerindex, meindex) > 1) return; NPC_PetRaceMaster_selectWindow(meindex, talkerindex, 0, -1); }
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 ); }
void NPC_WindowHealerLooked( int meindex , int lookedindex) { if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( lookedindex, meindex ) > CHAR_getWorkInt(meindex,CHAR_WORK_RANGE)){ return; } NPC_WindowHealer_selectWindow( meindex, lookedindex,0); }
void NPC_FreePetSkillShopTalked( int meindex , int talkerindex , char *szMes ,int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 1 ); NPC_FreePetSkillShop_selectWindow( meindex, talkerindex, START_WINDOW,-1); }
void NPC_PoolItemShopTalked( int meindex , int talkerindex , char *szMes ,int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); if( !NPC_Util_isFaceToFace( meindex, talkerindex, 2)) { if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } NPC_PoolItemShop_printWindow_Start( meindex, talkerindex); }
/************************************************ * Ïä·¤«¤±¤é¤ì¤¿»þ¤Î½èÍý ************************************************/ void NPC_RoomAdminNewTalked( int meindex , int talkerindex , char *msg , int color ) { /* ¥×¥ì¥¤¥ä¡¼¤¬¥É¥¢¥Þ¥ó¤Î1¥°¥ê¥Ã¥É°ÊÆâ¤Ê¤éÈ¿±þ¤¹¤ë¡£ */ if(NPC_Util_CharDistance( talkerindex, meindex ) > 1)return; /* Ïä·¤«¤±¤é¤ì¤¿¿Í¤¬Éô²°¤ò¼Ú¤ê¤Æ¤¤¤¿¤é¥Ñ¥¹¥ï¡¼¥É¤òɽ¼¨¤¹¤ë */ /*NPC_RoomAdminNew_DspRoomPasswd( meindex, talkerindex);*/ /* ¼¡²ó³«ºÅ»þ´Ö¡¤Éô²°¤ò¸À¤¦ */ NPC_RoomAdminNew_DspNextAuction( meindex, talkerindex); }
void NPC_SignBoardLooked( int meindex , int lookedindex) { if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( lookedindex, meindex ) > 1) return; NPC_SignBoard_Window( meindex, lookedindex,0,-1); }
void NPC_DuelrankingWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data) { int fdid = getFdidFromCharaIndex( talkerindex); if( fdid == -1 ) return; if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; switch( seqno){ case CHAR_WINDOWTYPE_DUELRANKING_START: if( atoi( data) == 3 ) { saacproto_DBGetEntryByCount_send( acfd, DB_DUELPOINT, 0, NPC_DUELRANKING_WINDOWLINENUM, fdid, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); } if( atoi( data) == 5 ) { char dbkey[256]; CHAR_makeDBKey( talkerindex, dbkey, sizeof( dbkey)); saacproto_DBGetEntryRank_send( acfd, DB_DUELPOINT, dbkey, fdid, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); } break; case CHAR_WINDOWTYPE_DUELRANKING_TOPRANKING: if( select == WINDOW_BUTTONTYPE_PREV || select == WINDOW_BUTTONTYPE_NEXT) { int count = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT); if( select == WINDOW_BUTTONTYPE_NEXT ) { count += NPC_DUELRANKING_WINDOWLINENUM; }else { count -= NPC_DUELRANKING_WINDOWLINENUM; } if( count < 0) count = 0; saacproto_DBGetEntryByCount_send( acfd, DB_DUELPOINT, count, NPC_DUELRANKING_WINDOWLINENUM, fdid, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); }else if( select == WINDOW_BUTTONTYPE_OK ) { if( strlen( data) != 0 ) { int count; count = atoi( data); if( count < 1 ) count = 1; saacproto_DBGetEntryByCount_send( acfd, DB_DUELPOINT, count-1, NPC_DUELRANKING_WINDOWLINENUM, fdid, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX)); } } break; } }
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_RankingTalked( int meindex , int talkerindex , char *msg , int color ) { /* ¥×¥ì¥¤¥ä¡¼¤¬¥É¥¢¥Þ¥ó¤Î1¥°¥ê¥Ã¥É°ÊÆâ¤Ê¤éÈ¿±þ¤¹¤ë¡£ */ if(NPC_Util_CharDistance( talkerindex, meindex ) > 1)return; CHAR_talkToCli( talkerindex, meindex, NPC_ROOMADMINNEW_MSG_RANKING_INFO, NPC_RANKING_MSGCOLOR); NPC_RoomAdminNew_ReadScoreFile( meindex, talkerindex, CHAR_getWorkChar( meindex, CHAR_WORKCHAR_ADMNAME)); }
/********************************* * ¸«¤é¤ì¤¿»þ¤Î½è *********************************/ void NPC_SignBoardLooked( int meindex , int lookedindex) { /* ¥×¥ì¥¤¥ä¡¼¤ËÂФ·¤Æ¤À¤± ±þ¤¹¤ë */ if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* £±¥°¥ê¥Ã¥É°Ê ¤Î¤ß */ if( NPC_Util_CharDistance( lookedindex, meindex ) > 1) return; NPC_SignBoard_Window( meindex, lookedindex,0,-1); }
/********************************* * ÎÈÕľÐ×Áݼ°ÖÊ *********************************/ void NPC_PetShopLooked( int meindex , int lookedindex) { /* ÃóÒÁÄÌØÀ¡õ±å¸²ØÆ»¯·ÖØê ɱÔÊÔ */ if( CHAR_getInt( lookedindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ¨àºëØøÓÀÓñ¶¯ ¼°ÐÄ */ if( NPC_Util_CharDistance( lookedindex, meindex ) > 2) return; /*--·¥¡õÛͼ°âÙÓå¼À--*/ // CHAR_setWorkInt(lookedindex,CHAR_WORKSHOPRELEVANT,0); // NPC_PetShop_selectWindow( meindex, lookedindex,0,-1); }
/********************************* * �ƾ�����ľ���ݼ��� *********************************/ void NPC_JankenTalked( int meindex , int talkerindex , char *szMes , int color ) { /* �����������帲�ƻ����� ɱ���� */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /* ��������� ���� */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; NPC_Janken_selectWindow(meindex, talkerindex, 0); }
void NPC_QuizTalked( int meindex , int talkerindex , char *szMes , int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; if(NPC_QUIZPARTY_CHAECK(meindex,talkerindex)==FALSE){ NPC_Quiz_selectWindow( meindex, talkerindex, 4); } if(NPC_QuizItemFullCheck(meindex, talkerindex) == FALSE){ NPC_Quiz_selectWindow( meindex, talkerindex, 3); }else{ NPC_Quiz_selectWindow( meindex, talkerindex, 0); } }
/********************************* * �ƾ�����ľ���ݼ��� *********************************/ void NPC_FMPKManTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* �����������帲�ƻ����� ɱ���� */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- �������¾���������--*/ if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE) { /* ��������� ���� */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } /*--�����ͼ������--*/ CHAR_setWorkInt(talkerindex, CHAR_WORKSHOPRELEVANT, 0); /*-��Ԫ������ --*/ NPC_FMPKMan_selectWindow( meindex, talkerindex, 0, -1); }
/********************************* * Øƾ®ØêÈÕľÐ×Áݼ°ÖÊ *********************************/ void NPC_FMPKManTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* ÃóÒÁÄÌØÀ¡õ±å¸²ØÆ»¯·ÖØê ɱÔÊÔ */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- ¼°ó¡±åÖÐÔ¾®Éýµ¤¾®£¢--*/ if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){ /* ¨àºëØøÓÀÓñ¶¯ ¼°ÐÄ */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } /*--·¥¡õÛͼ°âÙÓå¼À--*/ CHAR_setWorkInt(talkerindex, CHAR_WORKSHOPRELEVANT, 0); /*-·´Ôª»§¼°¼» --*/ NPC_FMPKMan_selectWindow( meindex, talkerindex, 0, -1); }
/********************************* * 仄井仃日木凶凛及质 *********************************/ void NPC_FMPKManTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* 皿伊奶乩□卞覆仄化分仃 杀允月 */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- 及蟆卞中月井升丹井"--*/ if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE) { /* ㄠ弘伉永玉动 及心 */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } /*--伐□弁及赓渝祭--*/ CHAR_setWorkInt(talkerindex, CHAR_WORKSHOPRELEVANT, 0); /*-反元户及蓟 --*/ NPC_FMPKMan_selectWindow( meindex, talkerindex, 0, -1); }
/********************************* * Ïä·¤«¤±¤é¤ì¤¿»þ¤Î½èÍý *********************************/ void NPC_FMPKManTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* ¥×¥ì¥¤¥ä¡¼¤ËÂФ·¤Æ¤À¤±È¿±þ¤¹¤ë */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*--ÌܤÎÁ°¤Ë¤¤¤ë¤«¤É¤¦¤«¡©--*/ if(NPC_Util_isFaceToFace(talkerindex,meindex,2 )==FALSE){ /* £±¥°¥ê¥Ã¥É°ÊÆâ¤Î¤ß */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; } /*--¥ï¡¼¥¯¤Î½é´ü²½--*/ CHAR_setWorkInt(talkerindex, CHAR_WORKSHOPRELEVANT, 0); /*-¤Ï¤¸¤á¤ÎÁªÂò²èÌÌ--*/ NPC_FMPKMan_selectWindow( meindex, talkerindex, 0, -1); }
/*----------------------------------------- 弁仿奶失件玄井日忒匀化五凶凛卞裟太请今木月[ -------------------------------------------*/ void NPC_CharmWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data) { if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) return; switch( seqno){ case CHAR_WINDOWTYPE_CHARM_START: if(atoi( data) == 2) { NPC_Charm_selectWindow( meindex, talkerindex, 1 ); } break; case CHAR_WINDOWTYPE_CHARM_END: if(select == WINDOW_BUTTONTYPE_YES) { NPC_Charm_selectWindow( meindex, talkerindex, 2 ); } break; } }
/********************************* * ��ū����������������帲������ *********************************/ void NPC_JankenWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data) { /* ��������� ���� */ if( NPC_Util_CharDistance( talkerindex, meindex ) > 1) return; switch( seqno){ case CHAR_WINDOWTYPE_JANKEN_START: if(select==WINDOW_BUTTONTYPE_YES){ NPC_Janken_selectWindow(meindex, talkerindex, 1); } break; case CHAR_WINDOWTYPE_JANKEN_MAIN: if (atoi(data) >= 3){ NPC_JnakenJudge(meindex,talkerindex,atoi(data) ); } break; } }
void NPC_DoorTalked( int meindex , int talkerindex , char *msg , int color ) { char *m = CHAR_getWorkChar( meindex , CHAR_WORKDOORPASSWD ); if(NPC_Util_CharDistance( talkerindex, meindex ) > 1)return; if( CHAR_getWorkInt( meindex , CHAR_WORKDOORPASSFLG ) != 1 ){ return; } if( CHAR_getWorkInt( meindex , CHAR_WORKDOORPASSFLG ) >= 1 && ((unsigned long)NowTime.tv_sec) > (unsigned long) CHAR_getWorkInt( meindex , CHAR_WORKDOOREXPIRETIME )){ print( "RINGO: passdoor expired ( talked )\n" ); return; } if( m[0] == '\0' )return; cutDotsTail( msg ); if( strcmp( m , msg ) == 0 ){ NPC_DoorFlip( meindex , talkerindex ); }else { CHAR_talkToCli( talkerindex , -1 , "密码不正确啦!", CHAR_COLORWHITE ); } }
void NPC_DengonLooked( int meindex, int lookedindex ) { int maxid; char buf[DENGONFILEENTRYSIZE*MESSAGEINONEWINDOW*2]; if( NPC_Util_CharDistance( lookedindex, meindex ) > 1) return; maxid = CHAR_getWorkInt( meindex, CHAR_WORKDENGONMAXID ); if( NPC_DengonReadString( meindex, maxid, NPC_sendbuf ) ){ int fd; fd = getfdFromCharaIndex( lookedindex ); if( fd == -1 )return; lssproto_WN_send(fd, WINDOW_MESSAGETYPE_WIDEMESSAGEANDLINEINPUT, WINDOW_BUTTONTYPE_OKCANCEL| WINDOW_BUTTONTYPE_PREV, CHAR_WINDOWTYPE_DENGON, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), makeEscapeString( NPC_sendbuf, buf, sizeof(buf))); CHAR_setWorkInt( lookedindex, CHAR_WORKSHOPRELEVANT, maxid); } }
void NPC_WarpManWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data) { char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; char buf[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; #ifdef _NEW_WARPMAN BOOL checkp=TRUE; char buf1[1024]; int talkNo = 1; BOOL tenflg=FALSE; #else int fl,x,y; #endif char buff2[256]; int fd = getfdFromCharaIndex( talkerindex ); if( NPC_Util_CharDistance( talkerindex, meindex ) > 2) return; if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("GetArgStrErr"); return ; } if( CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT) < 1 ) { CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); return; } #ifdef _NEW_WARPMAN if( seqno == NEW_WARPMAN ) { int eqnum=0; eqnum = CHAR_getWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT); sprintf(buf1,"%s", "NOFREE"); if( eqnum >= 0 ) { sprintf(buf1,"TALKEVENT%d", eqnum); } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); while( getStringFromIndexWithDelim( npcarg,"OVER",talkNo,buf,sizeof( buf)) != FALSE){ if( strstr(buf, buf1) != NULL) { strcpy( npcarg , buf); tenflg = TRUE; break; } talkNo++; } if( tenflg == FALSE ) { CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); return; } }else { #endif if( select != WINDOW_BUTTONTYPE_YES ) { CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); return; } if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE){ NPC_ERR_DiSP( meindex, talkerindex, 1); return; } #ifdef _NEW_WARPMAN } #else NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf)); GetRand_WarpPoint( buf, &fl, &x, &y ); #endif #ifdef _NEW_WARPMAN switch( seqno) { case WARP_MAN: if( select != WINDOW_BUTTONTYPE_YES ) return; if( NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE ){ NPC_ERR_DiSP( meindex, talkerindex, 1); return; } #else if( select != WINDOW_BUTTONTYPE_YES) return; if( NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE) return; #endif #ifdef _NEW_WARPMAN break; case NEW_WARPMAN: if( select != WINDOW_BUTTONTYPE_YES ){ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CancelMsg", buff2, sizeof( buff2) ) != NULL) { CHAR_talkToCli( talkerindex, meindex, buff2, CHAR_COLORYELLOW); } return; } checkp=TRUE; if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CHECKPARTY", buff2, sizeof( buff2) ) != NULL) { if( strstr( buff2, "FALSE") != NULL ) { checkp = FALSE; } } if( checkp==TRUE && NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE ) { NPC_ERR_DiSP( meindex, talkerindex, 1); CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); return; } break; case NEW_WARPMAN_END: return; break; } #endif if( Action_RunDoEventAction( meindex, talkerindex, npcarg) == FALSE ){ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, -1); return; } CHAR_complianceParameter( talkerindex ); CHAR_send_P_StatusString( talkerindex , CHAR_P_STRING_ATK|CHAR_P_STRING_DEF| CHAR_P_STRING_CHARM|CHAR_P_STRING_QUICK| CHAR_P_STRING_WATER|CHAR_P_STRING_FIRE| CHAR_P_STRING_WIND|CHAR_P_STRING_EARTH ); if( CHAR_getWorkInt( CONNECT_getCharaindex(fd), CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE){ return ; } if(CHAR_getWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD) <= 0){ CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE ); #ifdef _NEW_WARPMAN NPC_WarpMsg( meindex, talkerindex, npcarg); #else if( fl == 0 && x == 0 && y == 0 ) { }else { CHAR_warpToSpecificPoint(talkerindex, fl, x,y); } #endif }else { if(CHAR_getInt(talkerindex,CHAR_GOLD) < CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD)){ NPC_ERR_DiSP( meindex, talkerindex, 2); return ; } CHAR_DelGold( talkerindex, CHAR_getWorkInt(talkerindex,CHAR_WORKSHOPRELEVANTTRD )); CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE ); #ifdef _NEW_WARPMAN NPC_WarpMsg( meindex, talkerindex, npcarg); #else if( fl == 0 && x == 0 && y == 0 ) { }else { CHAR_warpToSpecificPoint(talkerindex, fl, x,y); } #endif } #ifdef _NEW_WARPMAN NPC_NpcWarpMsg( meindex, talkerindex, npcarg); #else }