void addAngelData( int angelindex, int heroindex, int mission, int flag) { char buf[1024]; char angelinfo[512]; char heroinfo[512]; //if( checkIfAngel( angelindex) != -1 || checkIfAngel( heroindex) != -1 ) // return; //sprintf( angelinfo, "%s:%s", CHAR_getChar( angelindex, CHAR_CDKEY), CHAR_getChar( angelindex, CHAR_NAME) ); getMissionNameInfo( angelindex, angelinfo); //sprintf( heroinfo, "%s:%s", CHAR_getChar( heroindex, CHAR_CDKEY), CHAR_getChar( heroindex, CHAR_NAME) ); getMissionNameInfo( heroindex, heroinfo); sprintf( buf, "%s|%s|%d|%d", angelinfo, heroinfo, mission, flag );; //saacproto_ACMissionTable_send( acfd, -1, 2, buf, angelindex); saacproto_ACMissionTable_send( acfd, -1, 2, buf, angelinfo); return; }
int checkIfOnlyHero( int charaindex) { int i; char nameinfo[512]; //sprintf( nameinfo, "%s:%s", CHAR_getChar( charaindex, CHAR_CDKEY), CHAR_getChar( charaindex, CHAR_NAME) ); getMissionNameInfo( charaindex, nameinfo); for( i =0; i <MAXMISSIONTABLE; i++) { if( missiontable[i].angelinfo[0] == NULL) continue; if( !strcmp( nameinfo, missiontable[i].heroinfo) ) { return i; } } return -1; }
// 使用勇者信物时 void Use_HeroToken( int charaindex, int toindex, int haveitemindex ) { int itemindex; int mindex; char nameinfo[64]; char msg[1024]; print(" 使用勇者信物 "); if( !CHAR_CHECKINDEX( charaindex) ) return; itemindex = CHAR_getItemIndex( charaindex, haveitemindex); if( !ITEM_CHECKINDEX( itemindex) ) return; mindex = checkIfAngel( charaindex); //sprintf( nameinfo, "%s:%s", CHAR_getChar(charaindex, CHAR_CDKEY), CHAR_getChar(charaindex, CHAR_NAME)); getMissionNameInfo( charaindex, nameinfo); if( mindex == -1 || ( strcmp( nameinfo, ITEM_getChar( itemindex, ITEM_ANGELINFO)) && strcmp( nameinfo, ITEM_getChar( itemindex, ITEM_HEROINFO)) ) ) { // 路人甲使用时 CHAR_talkToCli( charaindex, -1, "这并不是属於你的信物,不可随便使用喔。", CHAR_COLORRED); return; } if( strcmp( ITEM_getChar( itemindex, ITEM_ANGELINFO), missiontable[mindex].angelinfo) || strcmp( ITEM_getChar( itemindex, ITEM_HEROINFO), missiontable[mindex].heroinfo) ){ CHAR_talkToCli( charaindex, -1, "这是无用的信物,还是丢掉吧。", CHAR_COLORRED); return; } if( !strcmp( nameinfo, missiontable[mindex].heroinfo) ) { // 勇者使用时 int lefttime, hour, min; lefttime = missiontable[mindex].time + missiontable[mindex].limittime*60*60 - (int)time(NULL); hour = lefttime / (60*60); min = (lefttime % (60*60)) / 60; if( missiontable[mindex].flag == MISSION_DOING ) { // 显示任务资料 sprintf( msg, "你的使命是 %s,时间还剩馀%d小时%d分。", missionlist[missiontable[mindex].mission].detail, hour, min); CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORRED); } else if( missiontable[mindex].flag == MISSION_HERO_COMPLETE ) { // 可以去领奖了 sprintf( msg, "你的使命已经完成了,可以去领奖了,时间还剩馀%d小时%d分。", hour, min); CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORRED); } else if( missiontable[mindex].flag == MISSION_TIMEOVER ) { // 时间超过了 sprintf( msg, "很可惜,使者和勇者并没有在时限内完成使命,下次再加油吧。"); CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORRED); } return; } else if( !strcmp( nameinfo, missiontable[mindex].angelinfo) ) { // 使者使用时 // 传送至勇者身旁 int maxchar, i; char cdkey[64], name[64]; int fl =0, fx =0, fy =0; if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE) != CHAR_PARTY_NONE ) { CHAR_talkToCli( charaindex, -1, "组队中无法传送。", CHAR_COLORYELLOW ); return; } if( checkUnlawWarpFloor( CHAR_getInt( charaindex, CHAR_FLOOR) ) ) { CHAR_talkToCli( charaindex, -1, "你所在的地方无法传送。", CHAR_COLORYELLOW ); return; } //if( CHAR_CheckInItemForWares( charaindex, 0) == FALSE ){ if( CheckDropatLogout( charaindex) == TRUE ) { CHAR_talkToCli( charaindex, -1, "携带登出後消失的道具时无法使用。", CHAR_COLORYELLOW); return; } getStringFromIndexWithDelim( missiontable[mindex].heroinfo, ":", 1, cdkey, sizeof(cdkey)); getStringFromIndexWithDelim( missiontable[mindex].heroinfo, ":", 2, name, sizeof(name)); maxchar = CHAR_getPlayerMaxNum(); for( i =0; i <maxchar; i++) { if( !CHAR_CHECKINDEX( i) ) continue; if( CHAR_getInt( i, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) continue; //sprintf( tempinfo, "%s:%s", CHAR_getChar( i, CHAR_CDKEY), CHAR_getChar( i, CHAR_NAME)); if( strcmp( cdkey, CHAR_getChar( i, CHAR_CDKEY)) ) continue; if( strcmp( name, CHAR_getChar( i, CHAR_NAME)) ) continue; fl = CHAR_getInt( i, CHAR_FLOOR); fx = CHAR_getInt( i, CHAR_X); fy = CHAR_getInt( i, CHAR_Y); if( checkUnlawWarpFloor( fl) ) { CHAR_talkToCli( charaindex, -1, "对象所在的地方无法传送过去。", CHAR_COLORYELLOW ); return; } break; } if( fl <= 0 ) { sprintf( msg, "勇者 %s 目前不在线上或不在本伺服器上。", name); CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORRED); return; } sprintf( msg, "传送至勇者 %s 身边。", name); CHAR_talkToCli( charaindex, -1, msg, CHAR_COLORYELLOW); CHAR_warpToSpecificPoint( charaindex, fl, fx, fy); } else { // 路人甲使用时 CHAR_talkToCli( charaindex, -1, "这并不是属於你的信物,不可随便使用喔。", CHAR_COLORRED); return; } }