cumbe11
Members-
Content Count
46 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by cumbe11
-
I did a check and I saw that my emulator still doesn't have cvc, is there any diff or patch that I can add to my emulator?
-
CvC would work perfectly for me, I'll check it out, thanks
-
How can I set it so that players from different clans can attack each other on GvG maps? In other words, how do I make clans behave like guilds? I would like to use a GvG flag in the clan
-
Hello, I really wanted to add a command to my server, basically the player could use @joinguild <idguild> and he would join the guild without needing an invitation I did something similar to this but it doesn't work. script.ccp /*========================================== * @joinguild <guild_id> *------------------------------------------*/ ACMD_FUNC(joinguild) { std::shared_ptr<MapGuild> g; // Usar std::shared_ptr<MapGuild> int guild_id; nullpo_retr(-1, sd); if (!message || !*message || sscanf(message, "%d", &guild_id) != 1) { clif_displaymessage(fd, "Error. (usage: @joinguild <guild_id>)."); return -1; } // Procurar pela guilda usando o ID g = guild_search(guild_id); // Usar a função correta para procurar pela guilda if (!g) { // Verificar se a guilda foi encontrada clif_displaymessage(fd, "Guild not found."); return -1; } // Verificar se o jogador já está em uma guilda if (sd->status.guild_id > 0) { clif_displaymessage(fd, "You are already in a guild."); return -1; } // Adicionar o jogador à guilda usando o sistema de convite sd->guild_invite = guild_id; sd->guild_invite_account = sd->status.account_id; // Definindo o account_id do próprio jogador if (guild_reply_invite(sd, guild_id, 1) == 1) { // Verificar se a função foi bem-sucedida clif_displaymessage(fd, "You have successfully joined the guild."); return 0; // Sucesso } else { clif_displaymessage(fd, "Failed to join the guild."); return -1; // Falha } }
-
dar erro de sinxtax [Error]: Loading NPC file: npc/strikero/tax.txt script error on npc/strikero/tax.txt line 71 parse_line: need ';' 66 : for(set .@i,0; .@i < getarraysize( @bought_nameid ); set .@i,.@i+1) 67 : getitem @bought_nameid[.@i],@bought_quantity[.@i]; 68 : 69 : // Atribui a quantia de imposto igualmente a outras Guildas. 70 : for( set .@i,0; .@i < getarraysize( .CastleMap$ ); set .@i,.@i + 1 ) { * 71 : set .@castleGuild, getguildid'('getguildname(getcastledata(.CastleMap$[.@i],1))); 72 : set .@guildCastles, 0; // Counter for guild-owned castles 73 : // Count guild-owned castles 74 : for( set .@j, 0; .@j < getarraysize(.CastleMap$); set .@j, .@j + 1) { 75 : if(getguildid(getguildname(getcastledata(.CastleMap$[.@j],1))) == .@castleGuild) { 76 : set .@guildCastles, .@guildCastles + 1;
-
I have this script that calculates 10% of the store sales and divides them equally among the leaders of guilds that own castles registered in the NPC. It works very well; however, the only issue is that if the same guild owns more than one castle, the system doesn't divide the tax correctly, granting only one portion of the division, even if the guild owns two castles, for example.
-
This hexed 20071009 is very good, too bad it seems impossible to add costs to it, for a reason I don't know why it doesn't work
-
Olá, eu queria entender a formula da velocidade da movimetação do asura... more precisely that part ud->canmove_tick+=7*speed/5; I wanted to make the movement of the asura faster, I wanted to know where I have to modify it for that .... src/skill.c struct unit_data *ud = unit_bl2ud(src); short dx,dy; int i,speed; i = skillid == MO_EXTREMITYFIST?1:2; //Move 2 cells for Issen, 1 for Asura dx = bl->x - src->x; dy = bl->y - src->y; if (dx < 0) dx-=i; else if (dx > 0) dx+=i; if (dy < 0) dy-=i; else if (dy > 0) dy+=i; if (!dx && !dy) dy++; if (map_getcell(src->m, src->x+dx, src->y+dy, CELL_CHKNOPASS)) { dx = bl->x; dy = bl->y; } else { dx = src->x + dx; dy = src->y + dy; } skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); if(unit_walktoxy(src, dx, dy, 2) && ud) { //Increase can't walk delay to not alter your walk path ud->canmove_tick = tick; speed = status_get_speed(src); for (i = 0; i < ud->walkpath.path_len; i ++) { if(ud->walkpath.path[i]&1) ud->canmove_tick+=7*speed/5; else ud->canmove_tick+=speed; } } } break;
-
Galera boa noite, eu gostaria muito de poder ver as miniaturas das sprites direto da passta usando o WeeThumbnail.dll, eu usava ele a um tempo atras, gostaria de saber se alguém consegue usar ele no win10 e como foi que vocês conseguiram.
-
Hello, I wanted to change use an old emulator, Freya, but when I go to build the hundreds this error .. ./configure Checking for platform... Linux Checking whether build environment is sane... Checking whether make sets $(MAKE) ... yes Checking for gcc... ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found ./configure: line 323: which: command not found not found -bash-3.2# line 323: fi if [ x$CC != x ]; then CCLIST="$CC $CCLIST" fi CC="" for foo in $CCLIST; do XCC=`which $foo` if [ x$XCC = x ]; then : else CC="$XCC" echo $CC break 2 fi done if [ x$CC = x ]; then if anyone can help me I will be very grateful gethub: https://github.com/flaviojs/freya
-
I tried to put this mod on my eAthena emulator but give error when will compile .. could someone help me? Diff Index: conf/msg_conf/map_msg.conf =================================================================== --- conf/msg_conf/map_msg.conf (revision 17251) +++ conf/msg_conf/map_msg.conf (working copy) @@ -1457,5 +1457,10 @@ 1434: You're already in the '%s' channel. 1435: You're now in the '#%s' channel for '%s'. +// ----- @partybuff / @spb ----- // +1450: You're not in a party. +1451: Displaying party member's buffs disabled. +1452: Displaying party member's buffs enabled. + //Custom translations //import: conf/msg_conf/import/map_msg_eng_conf.txt Index: src/map/atcommand.c =================================================================== --- src/map/atcommand.c (revision 17251) +++ src/map/atcommand.c (working copy) @@ -9100,6 +9100,29 @@ return 0; } +ACMD_FUNC(partybuff) +{ + struct party_data* p = NULL; + nullpo_retr(-1, sd); + + if( !sd->status.party_id ) { + clif_displaymessage(fd, msg_txt(sd,1450)); // You're not in a party. + return -1; + } + + p = party_search(sd->status.party_id); + + if( sd->state.spb ) { + sd->state.spb = 0; + clif_displaymessage(fd, msg_txt(sd,1451)); // Displaying party member's buffs disabled. + } else { + sd->state.spb = 1; + clif_displaymessage(fd, msg_txt(sd,1452)); // Displaying party member's buffs enabled. + } + + clif_party_info(p,sd); + return 0; +} /** * Fills the reference of available commands in atcommand DBMap **/ @@ -9111,6 +9134,8 @@ **/ AtCommandInfo atcommand_base[] = { ACMD_DEF2("warp", mapmove), + ACMD_DEF(partybuff), + ACMD_DEF2("spb", partybuff), ACMD_DEF(where), ACMD_DEF(jumpto), ACMD_DEF(jump), Index: src/map/clif.c =================================================================== --- src/map/clif.c (revision 17251) +++ src/map/clif.c (working copy) @@ -455,6 +455,7 @@ case PARTY_WOS: case PARTY_SAMEMAP: case PARTY_SAMEMAP_WOS: + case PARTY_BUFF_INFO: if (sd && sd->status.party_id) p = party_search(sd->status.party_id); @@ -469,12 +470,15 @@ if( sd->bl.id == bl->id && (type == PARTY_WOS || type == PARTY_SAMEMAP_WOS || type == PARTY_AREA_WOS) ) continue; - if( type != PARTY && type != PARTY_WOS && bl->m != sd->bl.m ) + if( type != PARTY_BUFF_INFO && type != PARTY && type != PARTY_WOS && bl->m != sd->bl.m ) continue; if( (type == PARTY_AREA || type == PARTY_AREA_WOS) && (sd->bl.x < x0 || sd->bl.y < y0 || sd->bl.x > x1 || sd->bl.y > y1) ) continue; + if( type == PARTY_BUFF_INFO && !sd->state.spb ) + continue; + if( packet_db[sd->packet_ver][RBUFW(buf,0)].len ) { // packet must exist for the client version WFIFOHEAD(fd,len); @@ -6557,8 +6561,9 @@ void clif_party_info(struct party_data* p, struct map_session_data *sd) { unsigned char buf[2+2+NAME_LENGTH+(4+NAME_LENGTH+MAP_NAME_LENGTH_EXT+1+1)*MAX_PARTY]; - struct map_session_data* party_sd = NULL; + struct map_session_data* party_sd = NULL, *target = NULL; int i, c; + char output[NAME_LENGTH+10]; nullpo_retv(p); @@ -6585,6 +6590,33 @@ } else if (party_sd) { // send to whole party clif_send(buf, WBUFW(buf,2), &party_sd->bl, PARTY); } + + for(i = 0; i < MAX_PARTY; i++) + { + if( (target = p->data[i].sd) ) + { + strcpy(output, "["); + if( target->sc.data[SC_BLESSING] ) strcat(output,"B"); + else strcat(output,"_"); + if( target->sc.data[SC_INCREASEAGI] ) strcat(output,"A"); + else strcat(output,"_"); + if( target->sc.data[SC_CP_WEAPON] && target->sc.data[SC_CP_SHIELD] && + target->sc.data[SC_CP_ARMOR] && target->sc.data[SC_CP_HELM] ) strcat(output,"F"); + else strcat(output,"_"); + if( target->sc.data[SC_SPIRIT] ) strcat(output,"S"); + else strcat(output,"_"); + if( target->sc.data[SC_DEVOTION] ) strcat(output,"+"); + else strcat(output,"_"); + strcat(output, "]"); + strncat(output, p->data[i].sd->status.name, NAME_LENGTH); + safestrncpy((char*)WBUFP(buf,28+i*46+4), output, NAME_LENGTH); + } + } + + if( sd && sd->state.spb ) + clif_send(buf, WBUFW(buf,2), &sd->bl, SELF); + else if( party_sd ) + clif_send(buf, WBUFW(buf,2), &party_sd->bl, PARTY_BUFF_INFO); } Index: src/map/clif.h =================================================================== --- src/map/clif.h (revision 17251) +++ src/map/clif.h (working copy) @@ -65,6 +65,7 @@ PARTY_SAMEMAP_WOS, PARTY_AREA, PARTY_AREA_WOS, + PARTY_BUFF_INFO, GUILD, GUILD_WOS, GUILD_SAMEMAP, Index: src/map/party.c =================================================================== --- src/map/party.c (revision 17251) +++ src/map/party.c (working copy) @@ -563,12 +563,17 @@ memset(&p->data[i], 0, sizeof(p->data[0])); p->party.count--; party_check_state(p); + clif_party_info(p, NULL); } } if( sd && sd->status.party_id == party_id && sd->status.char_id == char_id ) { sd->status.party_id = 0; + if( sd->state.spb ) { + sd->state.spb = 0; + clif_displaymessage(sd->fd, msg_txt(sd,1451)); + } clif_charnameupdate(sd); //Update name display [Skotlex] //TODO: hp bars should be cleared too if( p->instance_id ) Index: src/map/pc.h =================================================================== --- src/map/pc.h (revision 17251) +++ src/map/pc.h (working copy) @@ -164,6 +164,7 @@ struct guild *gmaster_flag; unsigned int prevend : 1;//used to flag wheather you've spent 40sp to open the vending or not. unsigned int warping : 1;//states whether you're in the middle of a warp processing + unsigned int spb : 1; // @spb / @partybuff unsigned int permanent_speed : 1; // When 1, speed cannot be changed through status_calc_pc(). } state; struct { Index: src/map/status.c =================================================================== --- src/map/status.c (revision 17251) +++ src/map/status.c (working copy) @@ -31,6 +31,7 @@ #include "mercenary.h" #include "elemental.h" #include "vending.h" +#include "party.h" #include <time.h> #include <stdio.h> @@ -9113,6 +9114,15 @@ if( opt_flag&2 && sd && sd->touching_id ) npc_touchnext_areanpc(sd,false); // run OnTouch_ on next char in range + if( sd && sd->status.party_id && ( + type == SC_BLESSING || type == SC_INCREASEAGI || type == SC_CP_WEAPON || type == SC_CP_SHIELD || + type == SC_CP_ARMOR || type == SC_CP_HELM || type == SC_SPIRIT || type == SC_DEVOTION ) + ) + { + struct party_data *p = party_search(sd->status.party_id); + clif_party_info(p, NULL); + } + return 1; } @@ -9884,6 +9894,15 @@ if(opt_flag&2 && sd && map_getcell(bl->m,bl->x,bl->y,CELL_CHKNPC)) npc_touch_areanpc(sd,bl->m,bl->x,bl->y); //Trigger on-touch event. + if( sd && sd->status.party_id && ( + type == SC_BLESSING || type == SC_INCREASEAGI || type == SC_CP_WEAPON || type == SC_CP_SHIELD || + type == SC_CP_ARMOR || type == SC_CP_HELM || type == SC_SPIRIT || type == SC_DEVOTION ) + ) + { + struct party_data *p = party_search(sd->status.party_id); + clif_party_info(p, NULL); + } + ers_free(sc_data_ers, sce); return 1; } [erro console compiler] clif.c: In function 'clif_bl_type': clif.c:443: warning: comparison is always true due to limited range of data type clif.c:445: warning: comparison is always true due to limited range of data type clif.c: In function 'clif_setdisguise': clif.c:1469: warning: comparison is always true due to limited range of data type clif.c: At top level: clif.c:6670: error: expected identifier or '(' before 'for' clif.c:6670: error: expected '=', ',', ';', 'asm' or '__attribute__' before '<' token clif.c:6670: error: expected '=', ',', ';', 'asm' or '__attribute__' before '++' token clif.c:6692: error: expected identifier or '(' before 'if' clif.c:6694: error: expected identifier or '(' before 'else' clif.c:6697: error: expected identifier or '(' before 'return' clif.c:6698: error: expected identifier or '(' before '}' token make[1]: *** [obj_sql/clif.o] Error 1 make[1]: Leaving directory `/home/emulador/src/map' make: *** [map_sql] Error 2 -bash-3.2# -bash-3.2#
-
someone still has that old Pac-Man event eAthena ... as has the video .. also I put a Pac-Man map to perhaps reformulate the event Mapa: http://www.mediafire.com/download/dmywjciyoil/pacmanlv1.7z video-
-
I can use this plugin in a eAthena emulator?
-
this is a plugin?
-
Here is this change? @partybuff (@spb) can display party member's special buffs in party list (Alt+Z) Buffs are: Quote Look like [BAFS+]Player name
-
I do not have to adapt the script to run on my emulator?
-
I did not leave anything .. just your ctrl + c and ctrl + v Erros de console [Error]: Loading NPC file: npc/strikero/Arena x1.txtscript error on npc/strikero/Arena x1.txt line 18 parse_line: expect command, missing function name or calling undeclared function 16 : { 17 : OnInit:* 18 : '.'minplayer2start = 2; // minimum players to start (ex. if 3vs3, set to 3) 19 : .eventlasting = 20*60; // event duration before auto-reset (20 minutes * seconds) 20 : setarray .rewarditem[0], // rewards for the winning team: <item>,<amount>,... 21 : 501, 10; 22 : end; 23 : OnStart: [Error]: script:getvariableofnpc: can't find npc bg_pvp#control[Debug]: Source (NPC): Blue Team#bg_pvp at prontera (154,178)[Error]: script:getvariableofnpc: can't find npc bg_pvp#control[Debug]: Source (NPC): Red Team#bg_pvp at prontera (152,178)
-
NPCs appears but does not have the waiting room .. I click on 2 more NPCs not acntecem anything ..
-
Click on the NPC and nothing happens. =/ Click on the NPC and nothing happens. =/
-
Thank you so much.. I also wanted something else .. my BG when two players register in the blue team and the red team the system sends one to each side .. I queri not to do it .. if two people to register on the same team they stayed in a queue until 2 more players register with another
-
Hello, I have this to BG which to choose blue or red side usingjoinbg ... wanted to show the amount of people in line .. // ==============================================================================// BattleGround System - Common NPCs// ============================================================================== // MapFlags// ********************************************************************* bat_room mapflag nomemobat_room mapflag nowarptobat_room mapflag nobranchbat_room mapflag nopenaltybat_room mapflag noteleportbat_room mapflag nosave SavePointbat_room mapflag allow_bg_items// Mapflag Town is required to Join BG Queuesbat_room mapflag town // Battleground Queue Admin// *********************************************************************- script BG_Queue_Join -1,{ end; OnInit: // Configuration // ***************************************************** // Battleground Rotation - Main NPC name setarray .BG_Arenas$[0], "Conquest"; // Battleground Arena Name - for announcements setarray .BG_Names$[0], "Conquest"; // Minimum Players to start the BG setarray .BG_Min[0], 5; // Maximum Players per Team setarray .BG_Max[0], 30; // BG Message Colors setarray .BG_Color$[0], "0xFFA500"; // Team Building Mode : 0 = Lineal | 1 = Random | 2 = Class Priority | 3 = Faction Mode | 4 = Team Color ( by script set Bat_Team,N; ) set .TeamMode, 0; // Main Code // ***************************************************** set .BG_Count, getarraysize(.BG_Arenas$); set .BG_Queue, bg_queue_create("Battleground Arena","BG_Queue_Join::OnJoinEvent",80); set .VS_Queue, bg_queue_create("Free For All Arena","BG_Queue_Join::OnVersusJoin",80); // Move to Next Arena if( $BG_Index >= .BG_Count ) set $BG_Index,1; // Restart Rotation set .BG_Arena$,.BG_Arenas$[$BG_Index]; set .Ready, 1; donpcevent "BG_Queue_Join::OnDoHappyHour"; initnpctimer; // Rotation if BG don't start... Comment if you don't want to use this method // Comment the next two lines if you don't want to allow @joinbg and @leavebg commands. bindatcmd "joinbg","BG_Queue_Join::OnDoJoin",0,200; bindatcmd "leavebg","BG_Queue_Join::OnDoLeave",0,200; end;
-
I got this 1x1 style pvp BG .. I want to make it 2x2 and give awards 1 badge war the winners // ============================================================================== // BattleGround System - KvM 1~59 // ============================================================================== // Registration NPC's // ********************************************************************* prontera,158,208,5 script Time Guillaume::KvM04R_Guillaume 418,{ // KvM Guillaume mes "[^0000FFGuillaume^000000]"; mes "^0000FFEntre no Chat^000000 para duelar contra outro jogador."; close; OnInit: waitingroom "Duelo! [1x1]",1,"KvM04_BG::OnGuillaumeJoin",1; end; OnEnterBG: set $@KvM04BG_id1, waitingroom2bg("bat_c04",53,128,0,"KvM04_BG::OnGuillaumeQuit","KvM04_BG::OnGuillaumeDie"); end; } prontera,153,208,5 script Time Croix::KvM04R_Croix 414,{ // KvM Croix mes "[^FF0000Croix^000000]"; mes "^FF0000Entre no Chat^000000 para duelar contra outro jogador."; close; OnInit: waitingroom "Duelo! [1x1]",1,"KvM04_BG::OnCroixJoin",1; end; OnEnterBG: set $@KvM04BG_id2, waitingroom2bg("bat_c04",146,55,1,"KvM04_BG::OnCroixQuit","KvM04_BG::OnCroixDie"); end; } // Light Effects // ********************************************************************* bat_c04,54,123,0 script #bat_c04a 111,{ end; OnKvM04LightA: misceffect 54; end; OnKvM04LightB: misceffect 55; end; OnKvM04LightC: misceffect 56; end; } bat_c04,56,125,0 duplicate(#bat_c04a) #bat_c04b 111 bat_c04,58,127,0 duplicate(#bat_c04a) #bat_c04c 111 bat_c04,141,56,0 duplicate(#bat_c04a) #bat_c04d 111 bat_c04,143,58,0 duplicate(#bat_c04a) #bat_c04e 111 bat_c04,145,60,0 duplicate(#bat_c04a) #bat_c04f 111 // Battleground Engine // ********************************************************************* - script KvM04_BG -1,{ end; OnInit: setwall "bat_c04",54,122,6,7,0,"batc04wall_a"; setwall "bat_c04",55,122,5,7,0,"batc04wall_b"; setwall "bat_c04",140,56,6,7,0,"batc04wall_c"; setwall "bat_c04",140,57,5,7,0,"batc04wall_d"; disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; end; OnGuillaumeJoin: OnCroixJoin: donpcevent "KvM04_BG::OnReadyCheck"; end; OnGuillaumeQuit: OnGuillaumeDie: if( $@KvM04BG == 2 ) { getmapxy .@m$, .@x, .@y, 0; if( .@m$ != "bat_c04" || (.@x >= 50 && .@x <= 58 && .@y >= 123 && .@y <= 131) ) end; // Killed/Logout on Cementery or outside the map? set .Guillaume_Count, .Guillaume_Count - 1; set .Croix_Score, .Croix_Score + 1; bg_updatescore "bat_c04",.Guillaume_Score,.Croix_Score; if( .Guillaume_Count < 1 ) donpcevent "KvM04_BG::OnCroixWin"; } end; OnCroixQuit: OnCroixDie: if( $@KvM04BG == 2 ) { getmapxy .@m$, .@x, .@y, 0; if( .@m$ != "bat_c04" || (.@x >= 141 && .@x <= 149 && .@y >= 52 && .@y <= 60) ) end; // Killed/Logout on Cementery or outside the map? set .Croix_Count, .Croix_Count - 1; set .Guillaume_Score, .Guillaume_Score + 1; bg_updatescore "bat_c04",.Guillaume_Score,.Croix_Score; if( .Croix_Count < 1 ) donpcevent "KvM04_BG::OnGuillaumeWin"; } end; OnReadyCheck: if( $@KvM04BG ) end; // if( gettime(3) < 16 || gettime(3) > 22 ) // end; // 4 to 11 p.m. if( set(.@Guillaume, getwaitingroomstate(6,"KvM04R_Guillaume")) > 0 ) set $@KvM04_GU$, $@waitingroommembers$[0]; if( set(.@[member=Croix], getwaitingroomstate(6,"KvM04R_Croix")) > 0 ) set $@KvM04_CU$, $@waitingroommembers$[0]; if( .@Guillaume < 1 || .@[member=Croix] < 1 ) { // Not enough players to start set .@Announce$, "Duelo! [1x1] - "; if( .@Guillaume ) set .@Announce$, .@Announce$ + "<" + $@KvM04_GU$ + "> VS < >"; else if( .@[member=Croix] ) set .@Announce$, .@Announce$ + "< > VS <" + $@KvM04_CU$ + ">"; else set .@Announce$, .@Announce$ + "A Arena está liberada."; if( !agitcheck() && $@KvM_Flood < gettimetick(2) ) { announce .@Announce$,0,0xffff00; set $@KvM_Flood, gettimetick(2) + 15; } else mapannounce .@Announce$,1,0xffff00; end; } set $@KvM04BG, 1; // Starting donpcevent "KvM04R_Croix::OnEnterBG"; donpcevent "KvM04R_Guillaume::OnEnterBG"; donpcevent "KvM04_BG::OnStart"; end; OnStart: announce "Duelo! [1x1] <" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> começou!",0,0xffff00; enablenpc "TherapistKvM04a"; enablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; set $@KvM04BG_Victory, 0; sleep 2000; // Warp Teams bg_warp $@KvM04BG_id1,"bat_c04",53,128; bg_warp $@KvM04BG_id2,"bat_c04",146,55; // ScoreBoard set .Guillaume_Score, 0; set .Croix_Score, 0; initnpctimer; end; OnTimer5000: areapercentheal "bat_c04",50,123,58,131,100,100; areapercentheal "bat_c04",141,52,149,60,100,100; mapannounce "bat_c04","Duelo! [1x1] - A Batalha começará em 25 segundos!",1,0xffff00; end; OnTimer26000: mapannounce "bat_c04","Duelo! [1x1] - A Batalha começará em 4 segundos!",1,0xffff00; end; OnTimer27000: donpcevent "::OnKvM04LightA"; end; OnTimer28000: donpcevent "::OnKvM04LightB"; end; OnTimer29000: donpcevent "::OnKvM04LightC"; end; OnTimer30000: // Team Members set .Guillaume_Count, bg_get_data($@KvM04BG_id1, 0); set .Croix_Count, bg_get_data($@KvM04BG_id2, 0); if( .Guillaume_Count < 1 || .Croix_Count < 1 ) { set $@KvM04BG_Victory, 3; set $@KvM04BG, 3; set .@Announce$, "Duelo! [1x1] - "; if( .Guillaume_Count < 1 && .Croix_Count < 1 ) set .@Announce$, "<" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> cancelado."; else if( .Guillaume_Count < 1 ) set .@Announce$, "<" + $@KvM04_CU$ + "> está com medo de <" + $@KvM04_GU$ + ">..."; else if( .Croix_Count < 1 ) set .@Announce$, "<" + $@KvM04_GU$ + "> está com medo de <" + $@KvM04_CU$ + ">..."; announce .@Announce$,0,0xffff00; stopnpctimer; sleep 2000; donpcevent "KvM04_BG::OnStop"; end; } set $@KvM04BG, 2; // Playing areapercentheal "bat_c04",50,123,58,131,100,100; bg_warp $@KvM04BG_id1,"bat_c04",62,119; areapercentheal "bat_c04",141,52,149,60,100,100; bg_warp $@KvM04BG_id2,"bat_c04",137,64; end; OnTimer32000: mapannounce "bat_c04","Duelo! [1x1] começou!!",1,0xffff00; end; OnTimer300000: mapannounce "bat_c04","Duelo! [1x1] - A Batalha acabará em 30 segundos.",1,0xffff00; end; OnTimer330000: if( .Croix_Count > .Guillaume_Count ) donpcevent "KvM04_BG::OnCroixWin"; else if( .Croix_Count < .Guillaume_Count ) donpcevent "KvM04_BG::OnGuillaumeWin"; else { // Draw Game set $@KvM04BG, 3; set $@KvM04BG_Victory, 3; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_GU$ + "> VS <" + $@KvM04_CU$ + "> terminou em EMPATE.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; } end; OnGuillaumeWin: set $@KvM04BG, 3; set $@KvM04BG_Victory, 1; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_GU$ + "> foi o VENCEDOR! <" + $@KvM04_CU$ + "> perdeu.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; end; OnCroixWin: set $@KvM04BG, 3; set $@KvM04BG_Victory, 2; stopnpctimer; sleep 2000; announce "Duelo! [1x1] - <" + $@KvM04_CU$ + "> foi o VENCEDOR! <" + $@KvM04_GU$ + "> perdeu.",0,0xffff00; donpcevent "KvM04_BG::OnStop"; end; OnStop: disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; enablenpc "VintenarKvM04a"; enablenpc "VintenarKvM04b"; // Warp Teams bg_warp $@KvM04BG_id1,"bat_c04",53,128; bg_warp $@KvM04BG_id2,"bat_c04",146,55; donpcevent "KvM04_BG_Out::OnBegin"; end; OnReset: stopnpctimer; stopnpctimer "KvM04_BG_Out"; set .Croix_Count, 0; set .Guillaume_Count, 0; set .Croix_Score, 0; set .Guillaume_Score, 0; set $@KvM04_GU$, ""; set $@KvM04_CU$, ""; set $@KvM04BG_Victory, 0; if( $@KvM04BG_id1 ) { bg_destroy $@KvM04BG_id1; set $@KvM04BG_id1, 0; } if( $@KvM04BG_id2 ) { bg_destroy $@KvM04BG_id2; set $@KvM04BG_id2, 0; } disablenpc "TherapistKvM04a"; disablenpc "TherapistKvM04b"; disablenpc "VintenarKvM04a"; disablenpc "VintenarKvM04b"; sleep 1000; mapwarp "bat_c04","prontera",155,181; sleep 2000; maprespawnguildid "bat_c04",0,3; // Just in case someone else bg_updatescore "bat_c04",0,0; sleep 2000; set $@KvM04BG, 0; donpcevent "KvM04_BG::OnReadyCheck"; // Maybe a game is ready to start end; } - script KvM04_BG_Out -1,{ end; OnBegin: initnpctimer; end; OnTimer3000: mapannounce "bat_c04","Duelo! [1x1] fechará em 2 minutos!",1,0xffff00; end; OnTimer90000: mapannounce "bat_c04","Duelo! [1x1] fechará em 30 segundos!",1,0xffff00; end; OnTimer110000: mapannounce "bat_c04","Duelo! [1x1] fechará em 10 segundos!",1,0xffff00; end; OnTimer120000: OnClock1600: donpcevent "KvM04_BG::OnReset"; end; } // Battleground Therapist // ********************************************************************* bat_c04,51,130,5 script Treinador::TherapistKvM04a 95,{ mes "[Treinador]"; mes "Apenas respire fundo e lute. Você conseguirá vencer!"; specialeffect2 312; close; } bat_c04,148,53,1 script Treinador::TherapistKvM04b 95,{ mes "[Treinador]"; mes "Apenas respire fundo e lute. Você conseguirá vencer!"; specialeffect2 312; close; } // Battleground rewards // ********************************************************************* bat_c04,51,130,5 script Guillaume Vintenar::VintenarKvM04a 419,{ if( $@KvM04BG_Victory ) { if( $@KvM04BG_Victory == 3 ) { bg_leave; warp "prontera",134,120; end; } else if( $@KvM04BG_Victory == Bat_Team ) { // Victory bg_leave; warp "prontera",155,181; end; } else { // bg_leave; warp "prontera",155,181; end; } bg_leave; warp "prontera",155,181; end; } end; } bat_c04,148,53,1 script Croix Vintenar::VintenarKvM04b 415,{ if( $@KvM04BG_Victory ) { if( $@KvM04BG_Victory == 3 ) { bg_leave; warp "prontera",155,181; end; } else if( $@KvM04BG_Victory == Bat_Team ) { // Victory bg_leave; warp "prontera",155,181; end; } else { // bg_leave; warp "prontera",155,181; end; } bg_leave; warp "prontera",155,181; end; } end; } // MapFlags // ********************************************************************* bat_c04 mapflag battleground 2 bat_c04 mapflag nomemo bat_c04 mapflag nosave SavePoint bat_c04 mapflag noteleport bat_c04 mapflag nowarp bat_c04 mapflag nowarpto bat_c04 mapflag noreturn bat_c04 mapflag nobranch bat_c04 mapflag nopenalty