void NPC_NewNpcManWindowTalked( int meindex, int talkerindex, int seqno, int select, char *data) { if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } if( select == WINDOW_BUTTONTYPE_CANCEL || select == WINDOW_BUTTONTYPE_NO){ CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); CHAR_setWorkInt( talkerindex, CHAR_WORKNPCMETAMO, -1); return; } switch( seqno) { case NPC_TRANSERMAN_START: break; case NPC_PROGRAMEGINEER_SELECT1: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT1, atoi( data)); break; case NPC_PROGRAMEGINEER_SELECT2: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT2, atoi( data)); break; case NPC_PROGRAMEGINEER_SELECT3: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT3, atoi( data)); break; case NPC_PROGRAMEGINEER_SELECTLOSTPET: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECTLOSTPET, atoi( data)); break; case NPC_PROGRAMEGINEER_DEFIND: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_DEFIND, atoi( data)); break; case NPC_PROGRAMEGINEER_END: NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_END, atoi( data)); break; } }
/********************************* * Øƾ®ØêÈÕľÐ×Áݼ°ÖÊ *********************************/ void NPC_LuckyManTalked( int meindex , int talkerindex , char *szMes ,int color ) { char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[256]; char token[512]; int cost; /*-- ¼°ó¡±åÖÐÔ¾®Éýµ¤¾®£¢--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2) == FALSE) { /* ¨àºëØøÓÀÓñ¶¯ ¼°ÐÄ */ if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } /*--ɬÀð×ÑëÄÌ»ïë ÐÄ ÐÄ--*/ if(NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)) == NULL) { print("NPC_ExChange.c TypeCheck: GetArgStrErr\n"); print("NPCName=%s\n", CHAR_getChar( meindex, CHAR_NAME)); return; } NPC_Util_GetStrFromStrWithDelim( argstr,"Stone", buf, sizeof( buf)); cost = NPC_GetMoney( meindex, talkerindex, buf); NPC_Util_GetStrFromStrWithDelim( argstr,"main_msg", buf, sizeof( buf)); sprintf( token, buf, cost); NPC_LuckyMan_selectWindow( meindex, talkerindex, 2, token); }
/********************************* * ¤·¤«¤±¤é¤ì¤¿»þ¤Î½è *********************************/ void NPC_LuckyManTalked( int meindex , int talkerindex , char *szMes ,int color ) { char argstr1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *argstr; char buf[256]; char token[512]; int cost; /*-- ¤ÎÁ°¤Ë¤¤¤ë¤«¤É¤¦¤«¡ª--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2) == FALSE) { /* £±¥°¥ê¥Ã¥É°Ê ¤Î¤ß */ if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } /*--ÀßÄê¥Õ¥¡¥¤¥ë¤ò ¤ß ¤ß--*/ if((argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1)))== NULL) { print("NPC_ExChange.c TypeCheck: GetArgStrErr\n"); print("NPCName=%s\n", CHAR_getChar( meindex, CHAR_NAME)); return; } NPC_Util_GetStrFromStrWithDelim( argstr,"Stone", buf, sizeof( buf)); cost = NPC_GetMoney( meindex, talkerindex, buf); NPC_Util_GetStrFromStrWithDelim( argstr,"main_msg", buf, sizeof( buf)); sprintf( token, buf, cost); NPC_LuckyMan_selectWindow( meindex, talkerindex, 2, token); }
static void NPC_TranserMan_selectWindow( int meindex, int toindex, int num,int select) { char npcarg1[NPC_UTIL_GETARGSTR_BUFSIZE]; char *npcarg; char token[256]; int buttontype = 0, windowtype = 0, windowno = 0; int fd = getfdFromCharaIndex( toindex); windowtype = WINDOW_MESSAGETYPE_MESSAGE; if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE) return; } //memset( npcarg, 0, sizeof( npcarg)); if((npcarg = NPC_Util_GetArgStr( meindex, npcarg1, sizeof(npcarg1)))==NULL){ print("TRANSER_MAN: GetArgStrErr!!"); return; } memset( token, 0, sizeof( token)); switch( num) { case WINDOW_START: if( NPC_Util_GetStrFromStrWithDelim( npcarg, "START_MSG", token, sizeof( token) ) == NULL) { print("TranserMan Get START_MSG ERROR !"); return; } CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_TRANSERMAN_SELECT; break; case WINDOW_SELECT: if( TranserMan_GetMenuStr( meindex, toindex, npcarg, token) == FALSE ) { print( "TranserMan GetMenu ERROR !!"); return; } windowtype = WINDOW_MESSAGETYPE_SELECT; buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_TRANSERMAN_WARP; break; case WINDOW_WARP: if( ActionNpc_CheckMenuFree( meindex, toindex, npcarg, select) == FALSE ){ memset( token, 0, sizeof( token)); if( NPC_Util_GetStrFromStrWithDelim( npcarg, "FAIL_MSG", token, sizeof( token) ) != NULL) { CHAR_talkToCli( toindex, meindex, token, CHAR_COLORYELLOW); } } return; case WINDOW_END: break; } lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); }
void NPC_PauctionManTalked( int meindex, int talkerindex, char *msg, int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); NPC_Pauctionman_selectWindow( meindex, talkerindex, WINDOW_START, 0); }
/********************************* * 仄井仃日木凶凛及质 *********************************/ void NPC_CharmTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* 皿伊奶乩□卞覆仄化分仃 杀允月 */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- 及蟆卞中月井升丹井"--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { /* ㄠ弘伉永玉动 及心 */ if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } NPC_Charm_selectWindow( meindex, talkerindex, 0); }
void NPC_MakePairManTalked( int meindex, int talkerindex, char *msg, int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } #ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( talkerindex, 0) == FALSE ){ CHAR_talkToCli( talkerindex, meindex, "无法服务携带货物的人!", CHAR_COLORYELLOW); return; } #endif CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); CHAR_setWorkInt( talkerindex, CHAR_MYPAIRCODE, NPC_getPairCode( talkerindex)); NPC_MakePair_selectWindow( meindex, talkerindex, WINDOW_START, 0); }
void NPC_PetFusionManTalked( int meindex, int talkerindex, char *msg, int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } #ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( talkerindex, 0) == FALSE ){ CHAR_talkToCli( talkerindex, meindex, "無法服務攜帶貨物的人!", CHAR_COLORYELLOW); return; } #endif CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); NPC_PetFusion_selectWindow( meindex, talkerindex, WINDOW_START, 0); }
/********************************* * Ў∆ЊЃЎк»’ƒЊ–„ЅЁЉ∞÷ *********************************/ void NPC_CheckManTalked( int meindex , int talkerindex , char *szMes ,int color ) { /* √у“ЅƒћЎј°х±еЄ≤Ў∆їѓЈ÷Ўк …±‘ ‘¬ */ if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } /*-- Љ∞у°±е÷–‘¬ЊЃ…эµ§ЊЃ£¢--*/ if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { /* ®аЇлЎш”ј”с∂ѓ Љ∞–ƒ */ if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } // вўЉ∞ЋьƒћЉю”сЋь±е NPC_CheckMan_selectWindow( meindex, talkerindex, 0); }
/********************************* * 仄井仃日木凶凛及质 *********************************/ void NPC_FMPKCallManTalked( 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_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } /*--伐□弁及赓渝祭--*/ CHAR_setWorkInt(talkerindex, CHAR_WORKSHOPRELEVANT, 0); /*-反元户及蓟 --*/ NPC_FMPKCallMan_selectWindow( meindex, talkerindex, 0, -1); }
void NPC_NewNpcManTalked( int meindex , int talkerindex , char *msg , int color ) { char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("TRANSER_MAN: GetArgStrErr!!"); return; } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); if( CHAR_getInt( talkerindex, CHAR_BASEBASEIMAGENUMBER) != 101578 ){ NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_SELECT1, 0); return; } NPC_NewNpcMan_selectWindow( meindex, talkerindex, WINDOW_START, 0); }
//CHAR_setWorkInt(talkerindex,CHAR_WORKSHOPRELEVANT,1); void NPC_TranserManTalked( int meindex, int talkerindex, char *msg, int color ) { if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; if(NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } #ifdef _ITEM_CHECKWARES if( CHAR_CheckInItemForWares( talkerindex, 0) == FALSE ){ CHAR_talkToCli( talkerindex, meindex, "根據傳送師工會規定,不能服務攜帶貨物的人!", CHAR_COLORYELLOW); return; } #endif // Syu ADD 天才傳送師判斷組隊狀態 if( CHAR_getWorkInt ( talkerindex , CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE) { CHAR_talkToCli( talkerindex, meindex, "根據傳送師工會規定,不能幫組隊中的人傳送!",CHAR_COLORYELLOW); return; } CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); NPC_TranserMan_selectWindow( meindex, talkerindex, WINDOW_START, 0); }
static void NPC_NewNpcMan_selectWindow( int meindex, int toindex, int num, int flg) { char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[256]; int buttontype = 0, windowtype = 0, windowno = 0; int fd = getfdFromCharaIndex( toindex); windowtype = WINDOW_MESSAGETYPE_MESSAGE; if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE) return; } memset( npcarg, 0, sizeof( npcarg)); if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ return; } memset( token, 0, sizeof( token)); switch( num) { case WINDOW_START: if( NPC_Util_GetStrFromStrWithDelim( npcarg, "START_MSG", token, sizeof( token) ) == NULL) { return; } buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_PROGRAMEGINEER_DEFIND; break; case WINDOW_SELECT1: sprintf(token," ÇëÑ¡Ôñ" "\n ¡¶ÐÞÕý³èÎïÒì³£¡·" "\n ¡¶ÐÞÕý³èÎïͼºÅ¡·" "\n ¡¶¸ü»»ÁéÁ¦îø¡·" #ifdef _PET_LOSTPET "\n ¡¶Áì»ØÒÅʧ³èÎï¡·" #endif // "\n ¡¶»¹ÔÌúǹÈþ¶Ñµþ¡·" ); windowtype = WINDOW_MESSAGETYPE_SELECT; buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_PROGRAMEGINEER_SELECT2; break; case WINDOW_SELECT2: switch( flg){ case 1://ÐÞÕý³èÎïÒì³£ NPC_reCheckMyPetUnusual( meindex, toindex); CHAR_talkToCli( toindex, -1, "ÉíÉϳèÎï¼ì²éÍê±Ï!", CHAR_COLORYELLOW); return; break; case 2://ÐÞÕý³èÎïͼºÅ CHECK_PETBBI( toindex); return; break; case 3://¸ü»»ÁéÁ¦îø if( CHECK_ITEMEQUIT( toindex) == TRUE ){ CHAR_talkToCli( toindex, -1, "¼ì²éÍê±Ï!", CHAR_COLORYELLOW); } return; break; case 4: #ifdef _PET_LOSTPET if( NPC_reFindMyLostPet( meindex, toindex, token) == FALSE ){ CHAR_talkToCli( toindex, -1, "²éÎÞ×ÊÁÏ£¡", CHAR_COLORYELLOW); return; } windowtype = WINDOW_MESSAGETYPE_SELECT; buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_PROGRAMEGINEER_SELECTLOSTPET; #endif break; case 5: //»¹ÔÌúǹÈþ¶Ñµþ // NPC_reCheckItemPilenum( meindex, toindex); return; break; } break; /* case WINDOW_SELECT3: { int petnum, petindex; petnum = atoi( data)-1; if( petnum >= CHAR_MAXPETHAVE || petnum < 0 ) return; petindex = CHAR_getCharPet( talker, petsel); if( !CHAR_CHECKINDEX(petindex) ) return; break; } */ case WINDOW_SELECTLOSTPET: #ifdef _PET_LOSTPET { int ret, i, ti, ltime, cost; Char ch; char msgbuf[256]; char petstring1[2048]; int havepetelement = CHAR_getCharPetElement( toindex); ti = flg; if( havepetelement < 0 ){ CHAR_talkToCli( toindex, -1, "³èÎïÀ¸Î»ÒÑÂú£¡", CHAR_COLORYELLOW); return; } if( NPC_getLostPetString( meindex, toindex) == FALSE ) { CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW); return; } if( getStringFromIndexWithDelim( petstring[ti-1], "#", 2, petstring1, sizeof( petstring1)) == FALSE ){ CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW); return; }else{ char buf1[256]; if( getStringFromIndexWithDelim( petstring[ti-1], "|", 6, buf1, sizeof( buf1)) == FALSE ) return; ltime = atoi(buf1); ltime = time( NULL) - ltime; ltime = ltime/(60*60*24); if( getStringFromIndexWithDelim( petstring[ti-1], "|", 4, buf1, sizeof( buf1)) == FALSE ) return; cost = atoi( buf1); #if 0 // ÐÞÕý±£Êͽð cost = cost + (ltime*100); cost = (cost>10000)?10000:cost; #else cost = cost + (ltime*10000); #endif if( CHAR_getInt( toindex, CHAR_GOLD) < cost ) { sprintf( buf1, "³èÎïÒѼķÅ%dÌ죬¹²Ðè%dʯ±Ò²Å¿ÉÁì»Ø¡£", ltime, cost); CHAR_talkToCli( toindex, meindex, buf1, CHAR_COLORYELLOW); return; } } ret = CHAR_makePetFromStringToArg( petstring1, &ch, -2); strcpy( petstring[ti-1], ""); if( ret ) { char buf1[256]; int petindex = PET_initCharOneArray( &ch ); if( !CHAR_CHECKINDEX( petindex) ){ CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW); return; } print("ANDY petindex:%d[%s]\n", petindex, CHAR_getChar( petindex, CHAR_NAME) ); CHAR_complianceParameter( petindex ); CHAR_setInt( petindex, CHAR_HP, CHAR_getWorkInt( petindex, CHAR_WORKMAXHP)); CHAR_setWorkInt( petindex, CHAR_WORKPLAYERINDEX, toindex); CHAR_setCharPet( toindex, havepetelement, petindex); CHAR_setChar( petindex, CHAR_OWNERCDKEY, CHAR_getChar( toindex, CHAR_CDKEY)); CHAR_setChar( petindex, CHAR_OWNERCHARANAME, CHAR_getChar( toindex, CHAR_NAME)); if( NPC_backupLostPetString( toindex) == FALSE ){ print("ANDY err backup petstring !!\n"); return; } sprintf( buf1, "LostPGet:%d", cost); LogPet( CHAR_getChar( toindex, CHAR_NAME ), CHAR_getChar( toindex, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), buf1, CHAR_getInt( toindex,CHAR_FLOOR), CHAR_getInt( toindex,CHAR_X ), CHAR_getInt( toindex,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); sprintf( buf1, "ÁìÈ¡³èÎï%s¡£", CHAR_getUseName( petindex)); CHAR_talkToCli( toindex, meindex, buf1, CHAR_COLORYELLOW); for( i = 0; i < CHAR_MAXPETHAVE; i++){ int petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) ) continue; CHAR_complianceParameter( petindex ); snprintf( msgbuf, sizeof( msgbuf ), "K%d", i ); CHAR_sendStatusString( toindex, msgbuf ); snprintf( msgbuf, sizeof( msgbuf ), "W%d", i ); CHAR_sendStatusString( toindex, msgbuf ); } CHAR_DelGold( toindex, cost); }else{ CHAR_talkToCli( toindex, -1, "ÁìÈ¡³èÎïʧ°Ü£¡", CHAR_COLORYELLOW); return; } return; } #endif return; break; case WINDOW_DEFIND: { int i; int face = CHAR_getInt( toindex, CHAR_FACEIMAGENUMBER); if( NPC_Util_GetStrFromStrWithDelim( npcarg, "CHECK_MSG", token, sizeof( token) ) == NULL) { return; } for( i=0; i<48; i++){ if( face >= checkPc[i][0] && face < checkPc[i][1] ) break; } if( i >= 48 )return; CHAR_setWorkInt( toindex, CHAR_WORKNPCMETAMO, meindex); CHAR_setInt( toindex, CHAR_BASEIMAGENUMBER, checkPc[i][2]); CHAR_complianceParameter( toindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX )); CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER); buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_PROGRAMEGINEER_END; } break; case WINDOW_END: { CHAR_setWorkInt( toindex, CHAR_WORKNPCMETAMO, -1); CHAR_setInt( toindex, CHAR_BASEBASEIMAGENUMBER, CHAR_getInt( toindex, CHAR_BASEIMAGENUMBER) ); CHAR_complianceParameter( toindex ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( toindex , CHAR_WORKOBJINDEX )); CHAR_send_P_StatusString( toindex , CHAR_P_STRING_BASEBASEIMAGENUMBER); return; } break; } lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); }
void PET_Watchfunc( int objmeindex, int objmoveindex, CHAR_ACTION act, int x, int y, int dir, int* opt, int optlen ) { int pindex; int petindex; int petputtime; if( OBJECT_getType(objmoveindex) != OBJTYPE_CHARA ) return; pindex = OBJECT_getIndex( objmoveindex); if( CHAR_getInt( pindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return; petindex = OBJECT_getIndex( objmeindex); petputtime = CHAR_getInt( petindex, CHAR_PUTPETTIME); if( CHAR_getInt( petindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) { //宠邮不处理 }else if( CHAR_getWorkInt( petindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){ if( NowTime.tv_sec >= (petputtime + 60*60) ) { int ownerindex = CHAR_getWorkInt( petindex, CHAR_WORKPLAYERINDEX); if( CHAR_CHECKINDEX( ownerindex) ){ if( CHAR_pickupFollowPet( ownerindex, petindex ) ) { return; } CHAR_talkToCli( ownerindex, -1, "溜宠太久,宠物走失了!!", CHAR_COLORYELLOW ); } #ifdef _PET_LOSTPET CHAR_CharSaveLostPet( petindex, 1); LogPet( "系统", "Watchfunc", CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "timeout_lost(系统扣留-溜宠自由宠)", CHAR_getInt( petindex, CHAR_FLOOR), CHAR_getInt( petindex,CHAR_X ), CHAR_getInt( petindex,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); print("系统扣留-溜宠自由宠:%s\n", CHAR_getUseName( petindex)); CHAR_CharaDelete( petindex); #else CHAR_setInt( petindex, CHAR_PUTPETTIME, NowTime.tv_sec); CHAR_setWorkInt( petindex, CHAR_WORKPETFOLLOWMODE, CHAR_PETFOLLOW_NONE); LogPet( CHAR_getChar( pindex, CHAR_NAME ), CHAR_getChar( pindex, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "timeout_lost(溜宠太久,宠物走失))", CHAR_getInt( pindex,CHAR_FLOOR), CHAR_getInt( pindex,CHAR_X ), CHAR_getInt( pindex,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); #endif return; } }else{ PET_CHECKFreePetIsIt( petindex); } if( CHAR_getInt( petindex, CHAR_MAILMODE) == CHAR_PETMAIL_IDLE3 || CHAR_getInt( petindex, CHAR_MAILMODE) == CHAR_PETMAIL_IDLE2){ if( act == CHAR_ACTATTACK) { if( NPC_Util_isFaceToChara( pindex,petindex,1 ) == TRUE ) { int action[2] = { CHAR_ACTDAMAGE, CHAR_ACTGUARD}; CHAR_sendWatchEvent( objmeindex, action[RAND(0,1)], NULL,0,FALSE); CHAR_setWorkInt( petindex, CHAR_WORKACTION, act); } } }else if( CHAR_getInt( petindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) { ; }else if( CHAR_getWorkInt( petindex, CHAR_WORKFIXAI) >= 100 ) { int workpindex = CHAR_getWorkInt( petindex, CHAR_WORKPLAYERINDEX); if( act == CHAR_ACTWALK && CHAR_CHECKINDEX( workpindex) && workpindex == pindex ){ dir = NPC_Util_GetDirCharToChar( petindex, pindex, 0); if( dir != -1 ) { if( CHAR_getInt( petindex, CHAR_DIR) != dir ) { CHAR_setInt( petindex, CHAR_DIR, dir); CHAR_sendWatchEvent( CHAR_getWorkInt( petindex, CHAR_WORKOBJINDEX), CHAR_ACTTURN,NULL,0,TRUE); } } }else if( NPC_Util_isFaceToFace( petindex, pindex, 2 ) == TRUE ) { switch( act) { case CHAR_ACTATTACK: case CHAR_ACTDAMAGE: case CHAR_ACTDOWN: case CHAR_ACTSTAND: case CHAR_ACTACTIONWALK: case CHAR_ACTGUARD: case CHAR_ACTACTIONSTAND: CHAR_sendWatchEvent( objmeindex, act, NULL,0,FALSE); CHAR_setWorkInt( petindex, CHAR_WORKACTION, act); break; default: break; } } }else { } return; }
static void NPC_VipShop_selectWindow( int meindex, int toindex, int num,int select) { char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[256]; char buf1[256]; char buf2[256]; char buf3[256]; int buttontype = 0, windowtype = 0, windowno = 0; int fd = getfdFromCharaIndex( toindex); static int select1; windowtype = WINDOW_MESSAGETYPE_MESSAGE; if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE) return; } memset( npcarg, 0, sizeof( npcarg)); if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("VipShop_MAN: GetArgStrErr!!"); return; } memset( token, 0, sizeof( token)); switch( num) { case WINDOW_START: if( NPC_Util_GetStrFromStrWithDelim( npcarg, "START_MSG", token, sizeof( token) ) == NULL) { print("VipShop Get START_MSG ERROR !"); return; } CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_TRANSERMAN_SELECT; break; case WINDOW_SELECT: CHAR_setWorkInt( toindex, CHAR_WORKLISTPAGE, 0); page=VipShop_ShowMenulist(npcarg); if( VipShop_GetMenuStr( meindex, toindex, npcarg, token,CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)) == FALSE ) { print( "VipShop GetMenu ERROR !!"); return; } windowtype = WINDOW_MESSAGETYPE_SELECT; if(page>1) buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT; else buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_TRANSERMAN_WARP; break; case WINDOW_NEXT: if(CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)<=page) CHAR_setWorkInt( toindex, CHAR_WORKLISTPAGE, CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)+1); if( VipShop_GetMenuStr( meindex, toindex, npcarg, token,CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)) == FALSE ) { print( "VipShop GetMenu ERROR !!"); return; } windowtype = WINDOW_MESSAGETYPE_SELECT; if(CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)+1==page) buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV; else buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_NEXT; windowno = NPC_TRANSERMAN_WARP; break; case WINDOW_PREV: if(CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)>0) CHAR_setWorkInt( toindex, CHAR_WORKLISTPAGE, CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)-1); if( VipShop_GetMenuStr( meindex, toindex, npcarg, token,CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)) == FALSE ) { print( "VipShop GetMenu ERROR !!"); return; } windowtype = WINDOW_MESSAGETYPE_SELECT; if(CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)==0) buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT; else buttontype = WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT; windowno = NPC_TRANSERMAN_WARP; break; case WINDOW_WARP: select1=CHAR_getWorkInt( toindex, CHAR_WORKLISTPAGE)*7+select; CHAR_setWorkInt( toindex, CHAR_WORKLISTSELECT , select1); if( NPC_Util_GetStrFromStrWithDelim( npcarg, "END_MSG", buf1, sizeof( buf1) ) == NULL) { print("VipShop Get START_MSG ERROR !"); return; } if(getStringFromIndexWithDelim( npcarg,"}",select1, buf2, sizeof( buf2)) != FALSE) NPC_Util_GetStrFromStrWithDelim( buf2, "MenuStr", buf3, sizeof( buf3)); sprintf( token, "\n%s\n\n %s\n",buf1, buf3); windowtype = WINDOW_MESSAGETYPE_MESSAGE; buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_TRANSERMAN_END; break; case WINDOW_END: ActionNpc_CheckMenuFree( meindex, toindex, npcarg, CHAR_getWorkInt( toindex, CHAR_WORKLISTSELECT )); return; break; } lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); }
//while( getStringFromIndexWithDelim( npcarg,"}",talkNo, buf1, sizeof( buf1)) != FALSE ) { static void NPC_Pauctionman_selectWindow( int meindex, int toindex, int num, int select) { char npcarg1[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[NPC_UTIL_GETARGSTR_BUFSIZE]; int buttontype = 0, windowtype = 0, windowno = 0; int fd = getfdFromCharaIndex( toindex); windowtype = WINDOW_MESSAGETYPE_MESSAGE; if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE) return; } if( Action_PartyCheck( meindex, toindex) == FALSE) { CHAR_talkToCli( toindex, meindex, "請一個一個來!", CHAR_COLORYELLOW); return; } //memset( npcarg, 0, sizeof( npcarg)); if((npcarg = NPC_Util_GetArgStr( meindex, npcarg1, sizeof(npcarg1)))==NULL){ print("TRANSER_MAN: GetArgStrErr!!"); return; } memset( token, 0, sizeof( token)); switch( num) { case WINDOW_START: if( NPC_PAItemShop_Main( meindex, toindex, npcarg, token, sizeof( token)) == FALSE ) { return; } CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); buttontype = WINDOW_BUTTONTYPE_NONE; windowtype = WINDOW_MESSAGETYPE_ITEMSHOPMENU; windowno = NPC_PAUCTION_SELECT; break; case WINDOW_SELECT: windowtype = WINDOW_MESSAGETYPE_SELECT; buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_PAUCTION_WARP; break; // ================ Sell case WINDOW_SELLDO: if( select != 0 ){ if( NPC_PAItemShop_SellDo( meindex, toindex, npcarg, select) == FALSE ){ return; } } if( NPC_PAItemShop_Main( meindex, toindex, npcarg, token, sizeof( token)) == FALSE ) { return; } CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); buttontype = WINDOW_BUTTONTYPE_NONE; windowtype = WINDOW_MESSAGETYPE_ITEMSHOPMENU; windowno = NPC_PAUCTION_SELECT; break; case WINDOW_SELL: if( NPC_PAItemShop_SellMain( meindex, toindex, npcarg, token, sizeof( token)) == FALSE ){ return; } buttontype = WINDOW_BUTTONTYPE_NONE; windowtype = WINDOW_MESSAGETYPE_ITEMSHOPMAIN; windowno = NPC_PAUCTION_SELL; break; // ================ BUY case WINDOW_BUYDO: if( select != 0 ){ if( NPC_PAItemShop_BuyDo( meindex, toindex, npcarg, select-1) == FALSE ){ return; } } if( NPC_PAItemShop_Main( meindex, toindex, npcarg, token, sizeof( token)) == FALSE ) { return; } CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); buttontype = WINDOW_BUTTONTYPE_NONE; windowtype = WINDOW_MESSAGETYPE_ITEMSHOPMENU; windowno = NPC_PAUCTION_SELECT; break; case WINDOW_BUY: if( NPC_PAItemShop_BuyMain( meindex, toindex, npcarg, token, sizeof( token)) == FALSE ){ return; } buttontype = WINDOW_BUTTONTYPE_NONE; windowtype = WINDOW_MESSAGETYPE_ITEMSHOPMAIN; windowno = NPC_PAUCTION_BUY; break; // ================ case WINDOW_WARP: ActionNpc_CheckMenuFree( meindex, toindex, npcarg, select); return; case WINDOW_END: break; } lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); }
void NPC_MicTalked( int meindex , int talkerindex , char *msg ,int color ) { int i; int playernum; int x,y; char message[4096]; char buf[2048]; if( CHAR_getInt(talkerindex,CHAR_WHICHTYPE) != CHAR_TYPEPLAYER) return; if(CHAR_getWorkInt(meindex,CHAR_WORK_TYPE) == 0){ if(NPC_Util_isFaceToChara(talkerindex,meindex,1 ) ==FALSE) return; } snprintf( buf, sizeof( buf), "%s\n%s", CHAR_getChar( talkerindex, CHAR_NAME), msg); // Robin 0621 族長廣播 print(" MIC_FL:%d ", CHAR_getWorkInt( meindex, CHAR_WORK_FMFL )); if( CHAR_getWorkInt( meindex, CHAR_WORK_FMFL ) != 0 ) { #ifdef _FMVER21 if( CHAR_getInt( talkerindex, CHAR_FMLEADERFLAG ) == FMMEMBER_LEADER) #else if( CHAR_getInt( talkerindex, CHAR_FMLEADERFLAG ) == 1) #endif // && ( CHAR_getWorkInt( talkerindex, CHAR_WORKFMFLOOR) == CHAR_getWorkInt( meindex, CHAR_WORK_FLOOR ) ) ) { print(" FMLeaderTalk_send:%s,%d,%d,%s ", CHAR_getChar( talkerindex, CHAR_FMNAME), CHAR_getInt( talkerindex, CHAR_FMINDEX), CHAR_getWorkInt( talkerindex, CHAR_WORKFMINDEXI), buf); sprintf(message, "[族長廣播]%s", buf); saacproto_ACFMAnnounce_send( acfd, CHAR_getChar( talkerindex, CHAR_FMNAME), CHAR_getInt( talkerindex, CHAR_FMINDEX), CHAR_getWorkInt( talkerindex, CHAR_WORKFMINDEXI), message, color ); return; } } makeEscapeString( buf, message, sizeof(buf)); playernum = CHAR_getPlayerMaxNum(); for( i = 0; i < playernum; i ++ ) { BOOL flg = FALSE; if( CHAR_getCharUse(i) == FALSE ) continue; if( CHAR_getInt( i, CHAR_WHICHTYPE) != CHAR_TYPEPLAYER ) continue; if( CHAR_getInt( i, CHAR_FLOOR) != CHAR_getWorkInt( meindex, CHAR_WORK_FLOOR) ){ continue; } if( CHAR_getWorkInt( meindex, CHAR_WORK_MODE) == 0 ) { x = CHAR_getInt( i, CHAR_X); y = CHAR_getInt( i, CHAR_Y); if( x >= CHAR_getWorkInt( meindex, CHAR_WORK_LX) && x <= CHAR_getWorkInt( meindex, CHAR_WORK_RX) && y >= CHAR_getWorkInt( meindex, CHAR_WORK_LY) && y <= CHAR_getWorkInt( meindex, CHAR_WORK_RY)){ flg = TRUE; } }else { flg = TRUE; } if( flg) { CHAR_talkToCli( i, talkerindex, msg, CHAR_COLORYELLOW); if( CHAR_getWorkInt( meindex, CHAR_WORK_WIND) == 1 ) { if( CHAR_getWorkInt( i, CHAR_WORKBATTLEMODE) == BATTLE_CHARMODE_NONE) { int fd = getfdFromCharaIndex( i); if( fd != -1 ) { lssproto_WN_send( fd, WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_OK, CHAR_WINDOWTYPE_MICMESSAGE, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), message); } } } } } }
void PET_Talkfunc( int meindex, int talkerindex, char *msg, int color) { char buf2[1024], buf3[256]; char TalkType[][16]={"TALKRUN","EVENTRUN","BOTH"}; char AllTalk[PETTALK_MAXID][1024]; int Type=0,j,i; int talkNo=0; BOOL FREEs=FALSE; int buttontype = 0; int windowtype = 0; #ifdef _PET_TALKPRO int tPage=-1; #else int petid=-1; char tempNo[32], buf1[10240]; #endif int fd = getfdFromCharaIndex( talkerindex); #define RAND(x,y) ((x-1)+1+ (int)( (double)(y-(x-1))*rand()/(RAND_MAX+1.0)) ) windowtype = WINDOW_MESSAGETYPE_MESSAGE; buttontype = WINDOW_BUTTONTYPE_OK; if( NPC_Util_isFaceToFace( meindex ,talkerindex , 2) == FALSE) { if( NPC_Util_isFaceToChara( talkerindex, meindex, 1) == FALSE) return; } for( i = 0 ; i < 5 ; i++ ) { strcpy( AllTalk[i], "\0" ); } #ifdef _PET_TALKPRO for( i=0;i<PETTALK_MAXID;i++) { if( pettalktext[i].ID >=0 && pettalktext[i].ID == CHAR_getInt(meindex, CHAR_PETID) ) { if( strcmp( pettalktext[i].DATA, "\0") && strlen( pettalktext[i].DATA) > 0 ) { //snprintf( buf1, sizeof(buf1), pettalktext[i].DATA); tPage=i; break; } } } if( i == PETTALK_MAXID ) return; #else sprintf(tempNo,"%d", CHAR_getInt(meindex, CHAR_PETID)); petid = CHAR_getInt(meindex, CHAR_PETID); if( Pet_TalkGetFunStr( tempNo , buf1 , sizeof( buf1) ) == NULL ) { return; } #endif if( CHAR_getInt( meindex, CHAR_LV ) >= CHAR_getInt( meindex, CHAR_LIMITLEVEL) ) { Type = 1; } //设定为非主人不得与PET互动 if( strcmp( CHAR_getChar( meindex, CHAR_OWNERCDKEY), CHAR_getChar( talkerindex, CHAR_CDKEY) ) || strcmp( CHAR_getChar( meindex, CHAR_OWNERCHARANAME), CHAR_getChar( talkerindex, CHAR_NAME) )){ #ifdef _PET_TALKPRO if( NPC_Util_GetStrFromStrWithDelim( pettalktext[tPage].DATA, "NoPlayerMsg", buf3, sizeof( buf3)) != NULL ) { #else if( NPC_Util_GetStrFromStrWithDelim( buf1, "NoPlayerMsg", buf3, sizeof( buf3)) != NULL ) { #endif }else { sprintf(buf3,"陌生人?我不认识你呀!你是坏人!"); } CHAR_talkToCli( talkerindex, meindex, buf3, color); return; } j=0; #ifdef _PET_TALKPRO while( getStringFromIndexWithDelim( pettalktext[tPage].DATA,"OVER",talkNo, buf2, sizeof( buf2) ) != FALSE){ #else while( getStringFromIndexWithDelim( buf1,"OVER",talkNo, buf2, sizeof( buf2) ) != FALSE){ #endif talkNo++; if( ( strstr( buf2, TalkType[Type]) == NULL ) && ( strstr( buf2, TalkType[2]) == NULL ) )continue; if( NPC_Util_GetStrFromStrWithDelim( buf2, "FLOOR", buf3, sizeof( buf3)) != NULL ) {//判断房间号 if( PetTalk_CheckMyFloor( meindex, talkerindex, buf3, 0) == FALSE )continue; } if( NPC_Util_GetStrFromStrWithDelim( buf2, "PET", buf3, sizeof( buf3)) != NULL ) {//判断宠物FREE条件 if( PetTalk_CheckFree( meindex, meindex, buf3) != TRUE ) continue; } if( NPC_Util_GetStrFromStrWithDelim( buf2, "FREE", buf3, sizeof( buf3) ) == NULL)continue; if( NPC_ActionPassCheck( meindex, talkerindex, buf3) == FALSE ) continue;//判断玩家FREE条件 // if( ActionNpc_CheckFree( meindex, talkerindex, buf2, 0) == FALSE ) continue; if( PetTalk_CheckPetEvent( meindex, talkerindex, buf2) == FALSE )continue; FREEs = TRUE; //条件成立 strcpy( AllTalk[j++], buf2 ); if( j > PETTALK_MAXID-1 ) break; } talkNo = 0; if( FREEs == FALSE) { //如果全部条件都不成立 j=0; #ifdef _PET_TALKPRO while( getStringFromIndexWithDelim( pettalktext[tPage].DATA,"OVER",talkNo, buf2, sizeof( buf2) ) != FALSE ){ #else while( getStringFromIndexWithDelim( buf1,"OVER",talkNo, buf2, sizeof( buf2) ) != FALSE ){ #endif talkNo ++; if( strstr( buf2, "OTHER") == NULL ) continue; if( NPC_Util_GetStrFromStrWithDelim( buf2, "TalkMsg", buf3, sizeof( buf3)) == NULL) continue; while( getStringFromIndexWithDelim( buf3,",",j+1, AllTalk[j], sizeof( AllTalk[j]) ) != FALSE ){ j++; } break; } } if( j > 0 ) { strcpy( buf2, AllTalk[ RAND( 0, (j-1) ) ] ); if( PetTalk_RunEvent( meindex, talkerindex, buf2) == FALSE ) { sprintf( buf3,"....!"); CHAR_talkToCli( talkerindex, meindex, buf3, color); return; } if( NPC_Util_GetStrFromStrWithDelim( buf2, "TalkMsg", buf3, sizeof( buf3)) == NULL) { //sprintf( buf3,"主人,我们去逛逛吧!"); strcpy( buf3, buf2); } lssproto_WN_send( fd, windowtype, buttontype, 0, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), buf3 ); } } BOOL PetTalk_CheckMyFloor( int meindex, int talker, char *buf, int flg) { char buf1[16]; int Myfloor=-1; Myfloor = CHAR_getInt( talker, CHAR_FLOOR); if( strstr( buf, "!") != NULL ) { getStringFromIndexWithDelim( buf,"!", 2, buf1, sizeof( buf1) ); if( Myfloor == atoi( buf1) ) { return FALSE; } }else { if( Myfloor != atoi( buf) ) { return FALSE; } } return TRUE; } BOOL PetTalk_RunEvent( int meindex, int talker, char *buf) { char buf1[256]; int LimitLevel = -1; if( Action_RunDoEventAction( meindex, talker, buf) == FALSE ) return FALSE; if( NPC_Util_GetStrFromStrWithDelim( buf, "RandItem", buf1, sizeof( buf1)) != NULL ){ if( RAND( 0, 10) > 9 ) { PetTalk_AddItem( meindex, talker, buf1); }else { return FALSE; } } if( NPC_Util_GetStrFromStrWithDelim( buf, "LimitLevel", buf1, sizeof( buf1)) != NULL ){ LimitLevel = atoi( buf1); CHAR_setInt( meindex, CHAR_LIMITLEVEL, LimitLevel); } return TRUE; } BOOL PetTalk_DelItem(int meindex,int talker,char *buf) { int i = 1, j = 1,k = 1; char buff3[128]; char buf2[32]; int itemindex; while( getStringFromIndexWithDelim(buf , "," , k, buff3, sizeof(buff3)) !=FALSE ) { k++; if(strstr(buff3,"*")!=NULL){ int itemno; int kosuu; int id; int cnt=0; getStringFromIndexWithDelim(buff3,"*",1,buf2,sizeof(buf2)); itemno = atoi(buf2); getStringFromIndexWithDelim(buff3,"*",2,buf2,sizeof(buf2)); kosuu = atoi(buf2); for( i =0 ; i < CHAR_MAXITEMHAVE ; i++ ){ itemindex=CHAR_getItemIndex( talker , i ); if( ITEM_CHECKINDEX(itemindex) ){ id=ITEM_getInt(itemindex ,ITEM_ID ); if(itemno==id){ cnt++; LogItem( CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( talker, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD 在item的log中增加item名称 itemindex, #else ITEM_getInt( itemindex, ITEM_ID), /* 失奶 丞 寞 */ #endif "WarpManDelItem(NPC收道具後传至某点)", CHAR_getInt( talker, CHAR_FLOOR), CHAR_getInt( talker, CHAR_X ), CHAR_getInt( talker, CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); CHAR_DelItem( talker, i); if(cnt == kosuu){ break; } } } } }else{ /*--蓟氏分 寞及失奶 丞毛蓟请---*/ for( j = 0 ; j < CHAR_MAXITEMHAVE ; j++){ itemindex = CHAR_getItemIndex( talker ,j); if( ITEM_CHECKINDEX(itemindex) ){ if( atoi( buff3) == ITEM_getInt(itemindex,ITEM_ID)){ LogItem( CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */ CHAR_getChar( talker, CHAR_CDKEY ), #ifdef _add_item_log_name // WON ADD 在item的log中增加item名称 itemindex, #else ITEM_getInt( itemindex, ITEM_ID), /* 失奶 丞 寞 */ #endif "WarpManDelItem(NPC收道具後传至某点)", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), ITEM_getChar( itemindex, ITEM_UNIQUECODE), ITEM_getChar( itemindex, ITEM_NAME), ITEM_getInt( itemindex, ITEM_ID) ); CHAR_DelItem( talker, j); } } } } } return TRUE; }
void NPC_WarpManTalked( int meindex , int talkerindex , char *szMes ,int color ) { char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20]; char token[256]; int RunType=-1; CHAR_setWorkInt( talkerindex, CHAR_WORKWARPCHECK, FALSE ); if( CHAR_getInt( talkerindex , CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) { return; } if(NPC_Util_isFaceToFace( meindex ,talkerindex ,2)==FALSE){ if(NPC_Util_isFaceToChara(talkerindex,meindex,1 )==FALSE) return; } if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("GetArgStrErr"); return ; } #ifdef _NEW_WARPMAN if( strstr( npcarg,"NEWWARPMAN") ) { #ifdef _TREASURE_BOX if( CHAR_getWorkInt( meindex, NPC_TIME_EVENTMODE) == NPC_EVENTMODE_OPEN ) return; #endif NPC_NewWarpMan_selectWindow( meindex ,talkerindex, 0, -1, szMes); return; }else { if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE) {//有组队 NPC_ERR_DiSP( meindex, talkerindex, 1); return; } RunType = CheckWarpMsg( meindex, talkerindex, npcarg , szMes); if( RunType !=0 ) { if( RunType == 1 ) { if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_msg", token, sizeof(token)) != NULL) { CHAR_talkToCli( talkerindex, meindex,token,CHAR_COLORWHITE); } } return; } } #else if(NPC_PARTY_CHAECK( meindex, talkerindex) == FALSE) {//有组队 NPC_ERR_DiSP( meindex, talkerindex, 1); return; } RunType = CheckWarpMsg( meindex, talkerindex, npcarg , szMes); if( RunType !=0 ) { if( RunType == 1 ) { if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_msg", token, sizeof(token)) != NULL) { CHAR_talkToCli( talkerindex, meindex,token,CHAR_COLORWHITE); } } return; } #endif CHAR_setWorkInt( talkerindex, CHAR_WORKSHOPRELEVANT, 0); CHAR_setWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTTRD , 0 ); if(strstr(npcarg,"DR")!=NULL) { CHAR_setWorkInt( talkerindex , CHAR_WORKSHOPRELEVANTSEC , -1 ); if(NPC_GetDuelPointCheck(meindex,talkerindex)==FALSE) return; }else{ NPC_WarpMan_selectWindow( meindex, talkerindex,0,-1); } }
static void NPC_FmRank_selectWindow( int meindex, int toindex, int num,int select) { int myfmindex=-1; char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE]; char token[256]; char buff[128]; int buttontype = 0, windowtype = 0, windowno = 0; int fd = getfdFromCharaIndex( toindex); if(NPC_Util_isFaceToFace( meindex ,toindex , 2) == FALSE) { if(NPC_Util_isFaceToChara( toindex, meindex, 1) == FALSE) return; } memset( npcarg, 0, sizeof( npcarg)); if(NPC_Util_GetArgStr( meindex, npcarg, sizeof(npcarg))==NULL){ print("TRANSER_MAN: GetArgStrErr!!"); return; } memset( token, 0, sizeof( token)); switch( num) { case WINDOW_START: sprintf(token, "3\n\n ★家族竞价排名管理员★\n\n" " 《加入排名系统》\n" " 《追加竞价点数》\n" " 《查看本族名次》\n" " 《查看前二十名》\n" " 《排名功能介绍》\n"); CHAR_setWorkInt( toindex, CHAR_WORKSHOPRELEVANT, WINDOW_START); windowtype = WINDOW_MESSAGETYPE_SELECT; buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_FMRANK_SELECT; break; case WINDOW_SELECT: windowtype = WINDOW_MESSAGETYPE_MESSAGE; if(select==1 || select == 2){ myfmindex = CHAR_getInt(toindex, CHAR_FMINDEX); if(myfmindex>0){ int myfmpoint = sasql_fmpoint_query(myfmindex); windowtype = WINDOW_MESSAGETYPE_MESSAGEANDLINEINPUT; if(myfmpoint>0){ sprintf(token, " ★家族竞价排名管理员★\n\n" "您的家族已经加入排名系统\n" "现在的竞价点数是:%d点!\n\n" "如需提升排名\n" "请在下方填写完追加点数后点【确定】",myfmpoint); buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_FMRANK_ADDPOINT; }else{ sprintf(token, " ★家族竞价排名管理员★\n\n" "您的家族还未加入排名系统!\n\n" "如需加入排名系统\n" "请在下方填写竞价点数后点【确定】"); buttontype = WINDOW_BUTTONTYPE_YESNO; windowno = NPC_FMRANK_ADDFM; } }else{ sprintf(token, " ★家族竞价排名管理员★\n\n" "您还没有加入或者成立家族,请有家族后再进行此操作!"); buttontype = WINDOW_BUTTONTYPE_CANCEL; } }else if(select==3){ myfmindex = CHAR_getInt(toindex, CHAR_FMINDEX); if(myfmindex>0){ int myfmpoint = sasql_fmpoint_query(myfmindex); if(myfmpoint>0){ int myfmno = sasql_fmno_query(myfmindex); sprintf(token, " ★家族竞价排名管理员★\n\n" "您的家族已经加入排名系统\n\n" "现在的竞价点数是:%d点\n\n" "排名:第%d位!",myfmpoint,myfmno); buttontype = WINDOW_BUTTONTYPE_CANCEL; }else{ sprintf(token, " ★家族竞价排名管理员★\n\n" "您的家族还未加入排名系统!\n"); buttontype = WINDOW_BUTTONTYPE_CANCEL; } }else{ sprintf(token, " ★家族竞价排名管理员★\n\n" "您还没有加入或者成立家族,请有家族后再进行此操作!"); buttontype = WINDOW_BUTTONTYPE_CANCEL; } }else if(select==4){ CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,1); sprintf(token, " ★前20名排名家族列表★\n"); fmrankcnt = sasql_fm_query(); if(fmrankcnt>0){ int fmshowmax; if(fmrankcnt>7) fmshowmax=7; else fmshowmax = fmrankcnt; int i; for(i=0;i<fmshowmax;i++){ sprintf(buff,"%d.%s 竞价点数:%d\n",i+1,fmrankname[i],fmrankpoint[i]); strcat(token,buff); } } if(fmrankcnt>7) buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT; else buttontype = WINDOW_BUTTONTYPE_CANCEL; windowno = NPC_FMRANK_TOP20; }else if(select==5){ sprintf(token, "\n1、采用竞价排名形式 【竞】\n" "2、只显示前20位家族 【价】\n" "3、插入在自然排名前 【排】\n" "4、最少出价为一百点 【名】\n" "5、刷新时间为15分钟 【系】\n" "6、每月最后一天清空 【统】\n"); buttontype = WINDOW_BUTTONTYPE_CANCEL; } break; case WINDOW_FMRANKTOP_NEXT: if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)<1) return; windowtype = WINDOW_MESSAGETYPE_MESSAGE; sprintf(token, " ★前20名排名家族列表★\n"); if(fmrankcnt>0){ int fmshowmax; if(fmrankcnt<=7) return; if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==1){ if(fmrankcnt>14){ fmshowmax = 14; buttontype = WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_NEXT; } else{ fmshowmax = fmrankcnt; buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV; } }else if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==2){ if(fmrankcnt<=14) return; fmshowmax = fmrankcnt; buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_PREV; }else{ return; } int i; for(i=7*CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE);i<fmshowmax;i++){ sprintf(buff,"%d.%s 竞价点数:%d\n",i+1,fmrankname[i],fmrankpoint[i]); strcat(token,buff); } CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)+1); windowno = NPC_FMRANK_TOP20; }else return; break; case WINDOW_FMRANKTOP_PREV: if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)>3) return; windowtype = WINDOW_MESSAGETYPE_MESSAGE; sprintf(token, " ★前20名排名家族列表★\n"); if(fmrankcnt>0){ int fmshowmax; if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==3){ if(fmrankcnt<=14) return; fmshowmax = 14; buttontype = WINDOW_BUTTONTYPE_PREV|WINDOW_BUTTONTYPE_NEXT; }else if(CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)==2){ if(fmrankcnt<=7) return; fmshowmax = 7; buttontype = WINDOW_BUTTONTYPE_CANCEL|WINDOW_BUTTONTYPE_NEXT; } int i; for(i=fmshowmax-7;i<fmshowmax;i++){ sprintf(buff,"%d.%s 竞价点数:%d\n",i+1,fmrankname[i],fmrankpoint[i]); strcat(token,buff); } CHAR_setWorkInt(toindex,CHAR_WORKLISTPAGE,CHAR_getWorkInt(toindex,CHAR_WORKLISTPAGE)-1); windowno = NPC_FMRANK_TOP20; }else return; break; } lssproto_WN_send( fd, windowtype, buttontype, windowno, CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX), token); }