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; }
void delMissionTableOnedata( int index) { int gi; log("\nɾ³ý¾«ÁéÕÙ»½:%d:%s:%s \n", index, missiontable[index].angelinfo, missiontable[index].heroinfo); if( index <0 || index >=MAXMISSIONTABLE) return; strcpy( missiontable[index].angelinfo, ""); strcpy( missiontable[index].heroinfo, ""); missiontable[index].mission = 0; missiontable[index].flag = MISSION_NONE; missiontable[index].time = 0; missiontable[index].limittime = 0; for( gi=0; gi<MAXCONNECTION; gi++) { if (gs[gi].use && gs[gi].name[0]) { saacproto_ACMissionTable_send( gi, index, 3, "", ""); } } }
int AngelCreate( int angelindex) { int emptyitem1, emptyitem2; int angeltokenindex, herotokenindex; char msgbuf[1024]/*, nameinfo[1024]*/; int mindex, mission; char heroname[64]; if( !CHAR_CHECKINDEX( angelindex)) return FALSE; print(" 天使答应了!! "); mindex = checkIfAngel( angelindex); if( mindex == -1 || missiontable[mindex].flag == MISSION_TIMEOVER ) { //print("\n ANGEL错误!!Table逾时或无资料??:%d ", angelindex ); CHAR_talkToCli( angelindex, -1, "很抱歉,你太晚回答,已经逾时了。", CHAR_COLORYELLOW); sprintf( msgbuf, " 回答逾时或无资料 i:%d 使者:%s %s ", mindex, CHAR_getChar( angelindex, CHAR_CDKEY), CHAR_getChar( angelindex, CHAR_NAME)); print( msgbuf); LogAngel( msgbuf); return FALSE; } if( missiontable[mindex].flag != MISSION_WAIT_ANSWER ) { print(" 旗标不符:%d ", missiontable[mindex].flag); return FALSE; } if( CHAR_findEmptyItemBoxNo( angelindex ) < 2 ){ CHAR_talkToCli( angelindex, -1, "空间栏位不足。至少要有两个空道具栏位。", CHAR_COLORYELLOW); return TRUE; } getStringFromIndexWithDelim( missiontable[mindex].heroinfo, ":", 2, heroname, sizeof(heroname)); angeltokenindex = ITEM_makeItemAndRegist( ANGELITEM ); if( angeltokenindex != -1 ){ /*if( ITEM_getInt( angeltokenindex, ITEM_TYPE) != ITEM_ANGELTOKEN) { print(" 制作使者信物失败 "); ITEM_endExistItemsOne( angeltokenindex); return; }*/ //sprintf( nameinfo, "%s:%s", CHAR_getChar( angelindex, CHAR_CDKEY), CHAR_getChar( angelindex, CHAR_NAME ) ); ITEM_setChar( angeltokenindex, ITEM_ANGELINFO, missiontable[mindex].angelinfo); ITEM_setChar( angeltokenindex, ITEM_HEROINFO, missiontable[mindex].heroinfo); sprintf( msgbuf, "%d", missiontable[mindex].mission); ITEM_setChar( angeltokenindex, ITEM_ANGELMISSION, msgbuf); //sprintf( msgbuf, "%s(%s)", ITEM_getChar( angeltokenindex, ITEM_NAME), CHAR_getChar( angelindex, CHAR_NAME ) ); //ITEM_setChar( angeltokenindex, ITEM_NAME, msgbuf); //ITEM_setChar( angeltokenindex, ITEM_SECRETNAME, msgbuf); //sprintf( msgbuf, "这是使者 %s 与勇者 %s 专属的信物", CHAR_getChar( angelindex, CHAR_NAME), heroname ); sprintf( msgbuf, "精灵使者 %s 的信物,装备後不遇敌。", CHAR_getChar( angelindex, CHAR_NAME) ); ITEM_setChar( angeltokenindex, ITEM_EFFECTSTRING, msgbuf); emptyitem1 = CHAR_addItemSpecificItemIndex( angelindex, angeltokenindex); CHAR_sendItemDataOne( angelindex, emptyitem1); LogItem( CHAR_getChar( angelindex, CHAR_NAME ), CHAR_getChar( angelindex, CHAR_CDKEY ), angeltokenindex, "AddItem(制作道具 使者信物)", CHAR_getInt( angelindex,CHAR_FLOOR), CHAR_getInt( angelindex,CHAR_X ), CHAR_getInt( angelindex,CHAR_Y ), ITEM_getChar( angeltokenindex, ITEM_UNIQUECODE), ITEM_getChar( angeltokenindex, ITEM_NAME), ITEM_getInt( angeltokenindex, ITEM_ID) ); CHAR_talkToCli( angelindex, -1,"得到使者的信物。", CHAR_COLORYELLOW); }else{ print("制作使者的信物失败。" ); return FALSE; } herotokenindex = ITEM_makeItemAndRegist( HEROITEM ); if( herotokenindex != -1 ){ /*if( ITEM_getInt( herotokenindex, ITEM_TYPE) != ITEM_HEROTOKEN) { print(" 制作勇者信物失败 "); ITEM_endExistItemsOne( herotokenindex); ITEM_endExistItemsOne( angeltokenindex); CHAR_sendItemDataOne( angelindex, emptyitem1); return; }*/ //sprintf( nameinfo, "%s:%s", CHAR_getChar( angelindex, CHAR_CDKEY), CHAR_getChar( angelindex, CHAR_NAME ) ); ITEM_setChar( herotokenindex, ITEM_ANGELINFO, missiontable[mindex].angelinfo); ITEM_setChar( herotokenindex, ITEM_HEROINFO, missiontable[mindex].heroinfo); sprintf( msgbuf, "%d", missiontable[mindex].mission); ITEM_setChar( herotokenindex, ITEM_ANGELMISSION, msgbuf); //sprintf( msgbuf, "%s(%s)", ITEM_getChar( herotokenindex, ITEM_NAME), heroname ); //ITEM_setChar( herotokenindex, ITEM_NAME, msgbuf); //ITEM_setChar( herotokenindex, ITEM_SECRETNAME, msgbuf); //sprintf( msgbuf, "这是勇者 %s 与使者 %s 专属的信物", heroname, CHAR_getChar( angelindex, CHAR_NAME) ); sprintf( msgbuf, "勇者 %s 的信物,使者使用可传送至勇者身边。", heroname ); ITEM_setChar( herotokenindex, ITEM_EFFECTSTRING, msgbuf); emptyitem2 = CHAR_addItemSpecificItemIndex( angelindex, herotokenindex); CHAR_sendItemDataOne( angelindex, emptyitem2); LogItem( CHAR_getChar( angelindex, CHAR_NAME ), CHAR_getChar( angelindex, CHAR_CDKEY ), herotokenindex, "AddItem(制作道具 勇者信物)", CHAR_getInt( angelindex,CHAR_FLOOR), CHAR_getInt( angelindex,CHAR_X ), CHAR_getInt( angelindex,CHAR_Y ), ITEM_getChar( herotokenindex, ITEM_UNIQUECODE), ITEM_getChar( herotokenindex, ITEM_NAME), ITEM_getInt( herotokenindex, ITEM_ID) ); CHAR_talkToCli( angelindex, -1,"得到勇者的信物。", CHAR_COLORYELLOW); }else{ print("制作勇者的信物失败。" ); ITEM_endExistItemsOne( angeltokenindex); CHAR_sendItemDataOne( angelindex, emptyitem1); return FALSE; } // 更新至AC Server //sprintf( nameinfo, "%s:%s", CHAR_getChar( angelindex, CHAR_CDKEY), CHAR_getChar( angelindex, CHAR_NAME ) ); sprintf( msgbuf, "%s|%d", missiontable[mindex].angelinfo, missionlist[missiontable[mindex].mission].limittime ); saacproto_ACMissionTable_send( acfd, MISSION_DOING, 4, msgbuf, ""); //CHAR_talkToCli( angelindex, -1, "天之声:非常感谢你答应帮忙,那我就将信物交给你了,请将勇者的信物转交给勇者。", CHAR_COLORYELLOW); lssproto_WN_send( getfdFromCharaIndex(angelindex), WINDOW_MESSAGETYPE_MESSAGE, WINDOW_BUTTONTYPE_YES, -1, -1, "非常感谢你答应帮忙,那我就将信物交给你了,请将勇者的信物转交给勇者。"); sprintf( msgbuf, " 使者答应帮忙了 i:%d 使者:%s 勇者:%s ci=%d ", mindex, missiontable[mindex].angelinfo, missiontable[mindex].heroinfo, angelindex); print( msgbuf); LogAngel( msgbuf); return FALSE; }
void checkMissionTimelimit( void) { int index; static time_t lastcheck =0; if( sys_time < lastcheck + 5*60 ) return; log("\n¼ì²é¾«ÁéÕÙ»½Ê±¼äÏÞÖÆ:%d \n", sys_time); for( index =0; index < MAXMISSIONTABLE; index++) { if( missiontable[index].flag == MISSION_NONE) { continue; } // µÈ´ýʹÕß»ØÓ¦1Сʱ else if( missiontable[index].flag == MISSION_WAIT_ANSWER && sys_time > missiontable[index].time + ANSWERTIME*60*60 ) { delMissionTableOnedata( index);// ɾ } // µÈ´ýÁì½±Íê³É limittimeСʱ else if( ( missiontable[index].flag == MISSION_DOING || missiontable[index].flag == MISSION_HERO_COMPLETE ) && ( sys_time > (missiontable[index].time + missiontable[index].limittime*60*60)) ) { char buf[1024]; int gi; // ¸ÄTIMEOVER log("¾«ÁéÕÙ»½¼°Á콱ʱ¼ä¹ý:%d ", index); missiontable[index].flag = MISSION_TIMEOVER; missiontable[index].time = time(NULL); missiontable[index].limittime = BOUNDSTIME; sprintf( buf, "%d|%s|%s|%d|%d|%d|%d ", index, missiontable[index].angelinfo, missiontable[index].heroinfo, missiontable[index].mission, missiontable[index].flag, missiontable[index].time, missiontable[index].limittime ); for( gi=0; gi<MAXCONNECTION; gi++) { if (gs[gi].use && gs[gi].name[0]) { saacproto_ACMissionTable_send( gi, 1, 1, buf, ""); } } continue; } //else if( missiontable[index].flag == MISSION_HERO_COMPLETE // && sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) { // log(" Á콱ʱ¼ä¹ý:%d ", index); // delMissionTableOnedata( index);// ɾ //} // ×ÊÁϱ£Áôʱ¼ä(BOUNDSTIMEСʱ) else if( missiontable[index].flag == MISSION_TIMEOVER && sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) { log(" ±£Áôʱ¼ä¹ý:%d ", index); delMissionTableOnedata( index);// ɾ } } saveMissionTable(); lastcheck = sys_time; }
void checkMissionTimelimit( void) { int index; static time_t lastcheck =0; if( sys_time < lastcheck + 5*60 ) return; log("\n��龫���ٻ�ʱ������:%d \n", sys_time); for( index =0; index < MAXMISSIONTABLE; index++) { if( missiontable[index].flag == MISSION_NONE) { continue; } // �ȴ�ʹ��Ӧ1Сʱ else if( missiontable[index].flag == MISSION_WAIT_ANSWER && sys_time > missiontable[index].time + ANSWERTIME*60*60 ) { delMissionTableOnedata( index);// ɾ } // �ȴ��콱��� limittimeСʱ else if( ( missiontable[index].flag == MISSION_DOING || missiontable[index].flag == MISSION_HERO_COMPLETE ) && ( sys_time > (missiontable[index].time + missiontable[index].limittime*60*60)) ) { char buf[1024]; int gi; // ��TIMEOVER log("�����ٻ����콱ʱ���:%d ", index); missiontable[index].flag = MISSION_TIMEOVER; missiontable[index].time = time(NULL); missiontable[index].limittime = BOUNDSTIME; sprintf( buf, "%d|%s|%s|%d|%d|%d|%d ", index, missiontable[index].angelinfo, missiontable[index].heroinfo, missiontable[index].mission, missiontable[index].flag, missiontable[index].time, missiontable[index].limittime ); for( gi=0; gi<MAXCONNECTION; gi++) { if (gs[gi].use && gs[gi].name[0]) { saacproto_ACMissionTable_send( gi, 1, 1, buf, ""); } } continue; } //else if( missiontable[index].flag == MISSION_HERO_COMPLETE // && sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) { // log(" �콱ʱ���:%d ", index); // delMissionTableOnedata( index);// ɾ //} // ���ϱ���ʱ��(BOUNDSTIMEСʱ) else if( missiontable[index].flag == MISSION_TIMEOVER && sys_time > missiontable[index].time + BOUNDSTIME*60*60 ) { log(" ����ʱ���:%d ", index); delMissionTableOnedata( index);// ɾ } } saveMissionTable(); lastcheck = sys_time; }