Jump to content

Scofield

Members
  • Posts

    265
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Scofield

  1. Goldtime have a project and wanted to use this ancient script plus it does not work in the new emulators, wanted to know why
  2. Trx ... Thank you, it worked he also has another problem, if the adiversario @die or leave the map the script does the prize for those who stay know what the problem?
  3. I want this event begins only once a week, on Saturday the 20 hours. prontera,134,231,5 script UFC 65,{ mes "[ UFC ]"; mes "Olá "+ strcharinfo(0) +"!"; mes "Bem-Vindo ao Evento UFC."; next; mes "Deseja entrar?"; switch(select("Sim, entrar no evento.", "Não, talvez depois.")){ case 1: if ($aberto == 0) goto fechado; warp "ufc_pvp2",49,50; dispbottom "Você está dentro do Evento UFC! Boa Sorte!"; end; case 2: close2; end; } fechado: mes "Desculpe o evento está fechado."; mes "Volte mais tarde"; close; end; } ufc_pvp2,0,0,0 script NoEvento -1,{ OnWhisperGlobal: if (getgmlevel() == 99) { mes "Deseja Ligar o Evento?"; switch(select("Ligar","Sair")) { case 1: dispbottom "Evento Ligado com Sucesso!"; callsub OnEventStart; close; end; case 2: close; end; } } OnClock0100: callsub OnEventStart; OnClock0300: callsub OnEventStart; OnClock0500: callsub OnEventStart; Onclock0700: callsub OnEventStart; Onclock0900: callsub OnEventStart; OnClock1100: callsub OnEventStart; OnClock1200: callsub OnEventStart; OnClock1300: callsub OnEventStart; OnClock1500: callsub OnEventStart; OnClock1700: callsub OnEventStart; OnClock1900: callsub OnEventStart; OnClock2100: callsub OnEventStart; OnClock2300: callsub OnEventStart; OnEventStart: set $aberto,1; pvpoff "ufc_pvp2"; atcommand "@killmonster2"; announce "[Evento UFC]: O Evento UFC está aberto você tem 4 minutos para entrar!",0; sleep2 60000; announce "[Evento UFC]: Você tem 3 minutos para entrar no evento!",0; sleep2 60000; announce "[Evento UFC]: Você tem 2 minutos para entrar no evento!",0; sleep2 60000; announce "[Evento UFC]: Você tem 1 minuto para entrar no evento!",0; sleep2 60000; announce "[Evento UFC]: O Evento UFC Começou! Portais Fechados!",0; set $aberto,0; goto comecou; end; comecou: if(getmapusers("ufc_pvp2") == 1) goto cancelado; MapAnnounce "ufc_pvp2", "[Evento UFC]: O Evento terá Inicio em 30 Segundos! Preparem-Se!",0; sleep2 27000; MapAnnounce "ufc_pvp2", "Preparados ?",0; sleep2 1000; MapAnnounce "ufc_pvp2", "Vamos lá!",0; sleep2 1000; MapAnnounce "ufc_pvp2", "Valendoo!!!",0; pvpon "ufc_pvp2"; atcommand "@skillon"; end; cancelado: announce "[Evento UFC]: O Evento UFC foi cancelado por falta de jogadores.",0; sleep2 5000; mapwarp "ufc_pvp2","cydonia",138,86; end; } - script MortoVivo -1,{ OnPCKillEvent: if (strcharinfo(3) != "ufc_pvp2") end; if (getmapusers("ufc_pvp2") > 1) end; monster "ufc_pvp2", 49, 50, "Baú de Guerra", 1732, 1, "Entregador#func::OnQuebrarBau"; end; OnPCDieEvent: if (strcharinfo(3) != "ufc_pvp2") end; warp "cydonia",138,86; end; } - script Entregador#func -1,{ OnQuebrarBau: pvpoff "ufc_pvp2"; getitem 7539,20; //Caixa de Presença announce "O vencedor do Evento UFC foi o jogador "+strcharinfo( 0 )+"!",bc_all; warp "cydonia",138,86; end; } // MapFlags ufc_pvp2 mapflag nomemo ufc_pvp2 mapflag nopenalty ufc_pvp2 mapflag nobranch ufc_pvp2 mapflag pvp_noguild ufc_pvp2 mapflag noloot ufc_pvp2 mapflag noexp ufc_pvp2 mapflag noteleport ufc_pvp2 mapflag noreturn ufc_pvp2 mapflag nowarp ufc_pvp2 mapflag nowarpto ufc_pvp2 mapflag nosave SavePoint ufc_pvp2 mapflag pvp ufc_pvp2 mapflag pvp_noparty
  4. I really want to leave the fast asura, the more fury atraza much, I would leave the asura equal to this .. I have already made all the conf with 0 delay and cast .. Zen and the fury has no delay
  5. Thanks it worked! ... Cydh I wonder if you know how to make the animation faster MO_EXPLOSIONSPIRITS instead of removing ...
  6. thanks I'll try .. I did so to be correct? /*========================================== * skill attack effect and damage * R 01de <skill ID>.w <src ID>.l <dst ID>.l <tick>.l <src delay>.l <dst delay>.l <damage>.l <skillv>.w <div>.w <type>.B *------------------------------------------*/ int clif_skill_damage(struct block_list *src,struct block_list *dst,unsigned int tick,int sdelay,int ddelay,int damage,int div,int skill_id,int skill_lv,int type) { unsigned char buf[64]; struct status_change *sc; nullpo_ret(src); nullpo_ret(dst); + if (skill_id == MO_EXPLOSIONSPIRITS) return; type = clif_calc_delay(type,div,damage,ddelay); sc = status_get_sc(dst); if(sc && sc->count) { if(sc->data[SC_HALLUCINATION] && damage) damage = damage*(sc->data[SC_HALLUCINATION]->val2) + rand()%100; } Edit. did not work, the fury is still with animation this is to speed up the animation of fury would also be a positive hum ... know it worked leave faster animation instead of removing
  7. when you equip any weapon aspd is decreased
  8. I wonder if it is possible to remove the animation skill MO_EXPLOSIONSPIRITS, or leave faster animation.
  9. I wonder how I take the aspd penalty to team weapons
  10. I wonder how I reset the ranking of Taekwon
  11. I would change the formula of the SPD, Example: A character with 186 SPD has the movement of attack as if it had 191 Achei esso no status.c onde eu edito para obter resultado desejado? // ----- ASPD CALCULATION ----- // Unlike other stats, ASPD rate modifiers from skills/SCs/items/etc are first all added together, then the final modifier is applied // Basic ASPD value i = status_base_amotion_pc(sd,status); status->amotion = cap_value(i,battle_config.max_aspd,2000); // Relative modifiers from passive skills if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK) status->aspd_rate -= 5*skill; if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && !pc_nextjobexp(sd)) status->aspd_rate -= 30*skill; if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 && (sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE)) status->aspd_rate -= ((skill+1)/2) * 10; if(pc_isriding(sd)) status->aspd_rate += 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY); status->adelay = 2*status->amotion;
  12. I got this error in my console would like to know why and how to solve [Debug]: at char.c:850 - INSERT INTO `inventory`(`char_id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `card0`, `card1`, `card2`, `card3`) VALUES ('4480', '2630', '1', '8', '1', '0', '0', '0', '4430', '4430', '4430', '0') Up
  13. Scofield

    Event

    Poring race event be giving to bet after the race starts, then see which players poring be winning bet and it almost always win and I would like to fix it <<(google translater) //NPC Checker - script Checker#prace0 -1,{ end; OnChequeo: for(set .@tmp1,0;.@tmp1<(getarraysize($prace_bidders));set .@tmp1,.@tmp1+1) { if(attachrid($prace_bidders[.@tmp1])) { if( @prace_playing != 1) end; dispbottom "O vencedor é o "+$prace_winner$+" e você apostou em "+prace_winner$+"."; if( prace_winner$ == $prace_winner$ && prace_winner$ != "") { dispbottom "Você venceu!"; mapannounce "cydonia"," Parabéns! "+strcharinfo(0)+" venceu!",1,0xFFAB54; getitem 7539,10; emotion 21,1; } else dispbottom "Você perdeu."; emotion 28,1; set prace_winner$,""; set @prace_playing,0; } //else { announce .@tmp1+" || "+$prace_bidders[.@tmp1],bc_all; } //debug } for( set .@tmp1,0; .@tmp1 < (getarraysize( $prace_bidders )); set .@tmp1,.@tmp1 + 1 ) { set $prace_bidders[.@tmp1],0; } } - script Timers#prace0 -1,{ OnClock0000: callsub OnCalll; OnClock0200: callsub OnCalll; OnClock0400: callsub OnCalll; OnClock0600: callsub OnCalll; OnClock0816: callsub OnCalll; OnClock1023: callsub OnCalll; OnClock1200: callsub OnCalll; OnClock1400: callsub OnCalll; OnClock1600: callsub OnCalll; OnClock1800: callsub OnCalll; OnClock2000: callsub OnCalll; OnClock2200: callsub OnCalll; OnCalll: set $prace_gate,1; announce "A 'Corrida dos Porings' irá começar em breve, façam suas apostas!",bc_all|bc_yellow; end; } //====== Principal: ============================================ cydonia,100,59,3 script Bidder#prace0 765,{ set .@prace_zeny,20000000; // Preço para apostar. [Padrão: 20000000] if ($prace_random < 1) callsub OnInit; if (@prace_playing==1) callsub AlreadyPlaying; if($prace_gate == 0){ mes "[Bidder]"; mes "Não teremos corrida no momento..."; close; } getmapxy(.@mapname$,.@x1,.@y,1,"Poring#prace1"); getmapxy(.@mapname$,.@x2,.@y,1,"Angeling#prace2"); getmapxy(.@mapname$,.@x3,.@y,1,"Metaling#prace3"); getmapxy(.@mapname$,.@x4,.@y,1,"Deviling#prace4"); getmapxy(.@mapname$,.@x5,.@y,1,"Poring Noel#prace5"); if (.@x1 != 103 || .@x2 != 106 || .@x3 != 109 || .@x4 != 112 || .@x5 != 115){ mes "[Bidder]"; mes "Uma corrida está em andamento..."; close; } mes "[Bidder]"; mes "Escolha o poring em que deseja apostar:";mes "Irá custar "+.@prace_zeny+" Zeny.";next; switch(select("Poring","Angeling","Metaling","Deviling","Poring Noel","Poporing")){ case 1: callfunc "OnBid","Poring"; case 2: callfunc "OnBid","Angeling"; case 3: callfunc "OnBid","Metaling"; case 4: callfunc "OnBid","Deviling"; case 5: callfunc "OnBid","Poring Noel"; } OnReady: set $prace_bets,$prace_bets+1; set $prace_bidders[$prace_bets],getcharid(3); set @prace_playing,1; mes "[Bidder]"; mes "Eu tenho "+$prace_bets+" apostas."; setnpctimer 60000; startnpctimer; npctalk strcharinfo(0)+" fez sua aposta!"; close; Start1: setnpctimer 0; startnpctimer; end; AlreadyPlaying: mes "[Bidder]"; mes "Você apostou em ^00bb00"+prace_winner$+"^000000."; close; StartRace: donpcevent "Metaling#prace3::OnRace"; donpcevent "Poring#prace1::OnRace"; donpcevent "Angeling#prace2::OnRace"; donpcevent "Poring Noel#prace5::OnRace"; donpcevent "Deviling#prace4::OnRace"; end; OnStopRace: donpcevent "Poring#prace1::OnStop"; donpcevent "Angeling#prace2::OnStop"; donpcevent "Metaling#prace3::OnStop"; donpcevent "Deviling#prace4::OnStop"; donpcevent "Poring Noel#prace5::OnStop"; if ($prace_winner$!="") callsub WinRace; end; ReturnRace: donpcevent "Poring#prace1::OnReturn"; donpcevent "Angeling#prace2::OnReturn"; donpcevent "Metaling#prace3::OnReturn"; donpcevent "Deviling#prace4::OnReturn"; donpcevent "Poring Noel#prace5::OnReturn"; end; WinRace: set $prace_gate,0; mapannounce "cydonia","O vencedor é o "+$prace_winner$+".",1,0xFFAB54; donpcevent "Checker#prace0::OnChequeo"; setnpctimer 30000;startnpctimer; end; OnInit: set $prace_random,70; set $prace_random2,600; set $prace_winner$,""; set $prace_bets,0; set $prace_bidders,0; end; OnTimer500: mapannounce "cydonia","Porings, em suas marcas...",1,0xFFAB54; end; OnTimer3000: mapannounce "cydonia","...3...",1,0xFFAB54; end; OnTimer4000: mapannounce "cydonia","...2...",1,0xFFAB54; end; OnTimer5000: mapannounce "cydonia","...1...",1,0xFFAB54; callsub StartRace; end; OnTimer6000: stopnpctimer; mapannounce "cydonia","Gooo!!!",1,0xFFAB54; end; OnTimer35000: set $prace_winner$,""; set $prace_bets,0; stopnpctimer; callsub ReturnRace; OnTimer90000: npctalk "Eu tenho "+$prace_bets+" aposta(s). Alguém mais?"; end; OnTimer110000: npctalk "A corrida irá começar em breve. Última chance."; end; OnTimer120000: callsub Start1; } //====== Função Apostar: ======================================= function script OnBid { getmapxy(.@mapname$,.@x1,.@y,1,"Poring#prace1"); getmapxy(.@mapname$,.@x2,.@y,1,"Angeling#prace2"); getmapxy(.@mapname$,.@x3,.@y,1,"Metaling#prace3"); getmapxy(.@mapname$,.@x4,.@y,1,"Deviling#prace4"); getmapxy(.@mapname$,.@x5,.@y,1,"Poring Noel#prace5"); if (.@x1 == 103 || .@x2 == 106 || .@x3 == 109 || .@x4 == 112 || .@x5 == 115){ if (Zeny < .@prace_zeny) { callsub OnZeny; } else { set Zeny,Zeny-.@prace_zeny; } set prace_winner$,getarg(0); callsub OnReady; } mes "[Bidder]"; mes "Uma corrida está em andamento..."; close; OnZeny: set prace_winner$,""; mes "[Bidder]"; mes "Você não tem Zeny suficiente."; close; OnReady: set $prace_bets,$prace_bets+1; set $prace_bidders[$prace_bets],getcharid(3); set @prace_playing,1; mes "[Bidder]"; mes "Eu tenho "+$prace_bets+" apostas."; setnpctimer 60000; startnpctimer; npctalk strcharinfo(0)+" fez sua aposta!"; close; } //====== Monstros: ============================================== cydonia,103,54,4 script Poring#prace1 1002,{ end; OnRace: initnpctimer; startnpctimer; end; OnStop: stopnpctimer; end; OnReturn: npcwalkto 103,54; end; OnTimer1100: getmapxy(.@mapname$,.@x,.@y,1,"Poring#prace1"); if(rand(100) < $prace_random) npcwalkto .@x,.@y-1; setnpctimer rand($prace_random2); startnpctimer; if ((.@y-1) == 31) { set $prace_winner$,"Poring"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; } } cydonia,106,54,4 script Angeling#prace2 1096,{ end; OnRace: initnpctimer; startnpctimer; end; OnStop: stopnpctimer; end; OnReturn: npcwalkto 106,54; end; OnTimer1100: getmapxy(.@mapname$,.@x,.@y,1,"Angeling#prace2"); if(rand(100) < $prace_random) npcwalkto .@x,.@y-1; setnpctimer rand($prace_random2); startnpctimer; if ((.@y-1) == 31) { set $prace_winner$,"Angeling"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; } } cydonia,109,54,4 script Metaling#prace3 1613,{ end; OnRace: initnpctimer; startnpctimer; end; OnStop: stopnpctimer; end; OnReturn: npcwalkto 109,54; end; OnTimer1100: getmapxy(.@mapname$,.@x,.@y,1,"Metaling#prace3"); if(rand(100) < $prace_random) npcwalkto .@x,.@y-1; setnpctimer rand($prace_random2); startnpctimer; if ((.@y-1) == 31) { set $prace_winner$,"Metaling"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; } } cydonia,112,54,4 script Deviling#prace4 1582,{ end; OnRace: initnpctimer; startnpctimer; end; OnStop: stopnpctimer; end; OnReturn: npcwalkto 112,54; end; OnTimer1100: getmapxy(.@mapname$,.@x,.@y,1,"Deviling#prace4"); if(rand(100) < $prace_random) npcwalkto .@x,.@y-1; setnpctimer rand($prace_random2); startnpctimer; if ((.@y-1) == 31) { set $prace_winner$,"Deviling"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; } } cydonia,115,54,4 script Poring Noel#prace5 1062,{ end; OnRace: initnpctimer; startnpctimer; end; OnStop: stopnpctimer; end; OnReturn: npcwalkto 115,54; end; OnTimer1100: getmapxy(.@mapname$,.@x,.@y,1,"Poring Noel#prace5"); if(rand(100) < $prace_random) npcwalkto .@x,.@y-1; setnpctimer rand($prace_random2); startnpctimer; if ((.@y-1) == 31) { set $prace_winner$,"Poring Noel"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; } }
  14. Scofield

    CloneWars

    I wonder if anyone knows the starwars system, this system the player can summon a clan of clones and go to war .. anyone know this system? would love to buy it.
  15. complete controller script - script WoEInfoBase -1,{ OnStartMenu: if(.init == 0) donpcevent strnpcinfo(3)+"::OnInit"; OnStartMenu2: mes "The " + ((.state)?"^00DD00current":"^DD0000next") + "^000000 WoE session is: "; mes " "; mes "Day: ^0000DD" + .daysOfWeek$[.woe_day[.woe_index]]; mes "^000000Start time: ^00DD00" + .woe_0_str$[.woe_index]; mes "^000000End time: ^DD0000" + .woe_1_str$[.woe_index]; mes "^000000Region:"; set .@state_strs$, ".woe_state_str_" + .woe_state[.woe_index] + "$"; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@output$, getd(.@state_strs$ + "[" + .@i + "]"); if(.@output$ != "") mes "^000000- ^0000DD" + .@output$; } next; if(getgmlevel() >= .gm_access) select( "Warp to Castle Grounds", "View Castle Owners", "View all WoE times", ((!.state)?"Start next WoE":"End current WoE"), ((.state)?"":"Skip next WoE session") ); else select( "Warp to Castle Grounds", "View Castle Owners", "View all WoE times"); switch(@menu) { case 1: //warp mes "Which region would you like to warp to?"; next; select(.region_warp$[.woe_state[.woe_index]]); if(@menu < 1 || @menu > .num_regions) close; close2; warp .region_maps$[@menu - 1], .region_x[@menu - 1], .region_y[@menu - 1]; end; case 2: //view set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index]; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@k, 0; set .@castles$, ".castles_" + .regions$[.@i] + "$"; set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]"); while(.@castle_check && .@k < .num_castles[.@i]) { if(.@castle_check & (1 << .@k)) { set .@map$, getd(.@castles$+"["+.@k+"]"); if (GetCastleData(.@map$,1)) { dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild."; } else { dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied."; } set .@castle_check, .@castle_check - (1 << .@k); } set .@k, .@k + 1; } } break; case 3: //woe times for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) { dispbottom "- " + .daysOfWeek$[.woe_day[.@i]] + " " + .woe_0_str$[.@i] + "-" + .woe_1_str$[.@i]; set .@woe_state_str_array$, ".woe_state_str_" + .woe_state[.@i] + "$"; for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) { set .@output$, getd(.@woe_state_str_array$ + "[" + .@k + "]"); if(.@output$ != "") dispbottom " " + .@output$; } } break; case 4: //start next; if(getgmlevel() <.gm_access) close; mes "^FF0000Are you sure you want to " + ((!.state)?"start the next WoE session?":"end the current WoE session?"); next; if(select("Yes:No") == 2) break; set .remainTime, 0; //might not work sometimes...you have like a 500ms window out of 505ms i guess.. sleep2 .timer_refresh_rate; //wait abit so the menu doesn't screw up (how long it takes for the timer to update) break; case 5: //skip next; if(getgmlevel() <.gm_access || .state) close; mes "^FF0000Are you sure you want to skip the next WoE session^000000"; next; if(select("Yes:No") == 2) break; if(.state) { //you really can't do this with woe active next; mes "Sorry, in the time you took making your decision, WoE started"; mes "Please either manually end it first or wait"; break; } set .woe_index, (.woe_index + 1) % .num_woes; donpcevent strnpcinfo(3)+"::OnUpdateCountTick"; sleep2 .timer_refresh_rate; break; default: close; } goto OnStartMenu2; OnInit: //-----------------------------------------------------------------------------------------// //CONFIG START // //-----------------------------------------------------------------------------------------// set .gm_access, 60; //WoE timings needs to be ordered ascendingly unless you want to do weird //stuff like skip a region every other week or so... //Also times can't overlap. Uses second of day(gettimetick(1)) for timing // eg 1am -> 3600, 2:30pm -> 52200, midnight -> 86400 (anything past that doesn't work) //Note: woe_0 is start times, woe_1 is end times. Ignore how it's called but // don't change it either since it's dynamically used // Also..woe has to end on the same day it starts (it's easier that way..) setarray .woe_day[0], 0, 3, 6; setarray .woe_0[0], 68400,68400,68400; setarray .woe_1[0], 72000,72000,72000; setarray .woe_state[0], 0, 1, 2; //WoE state settings. Every WoE session can be defined as a particular state of castle configuration. //.woe_state_#[%] = $ // # - state number // % - region number // $ - binary representation of castles that are active for that region in that state ( // (ie. 0 is no castles, 5 is castle 0 and 2 (2^0 + 2^2 = 5)) setarray .woe_state_0[0],4,0,0,0,0,0,0; setarray .woe_state_1[0],1,0,0,0,0,0,0; setarray .woe_state_2[0],2,0,0,0,0,0,0; //Setting for if script handles WoE controller function. Disable agit_controller.txt if you are using this. //For if you want to use something else to handle your woe stuff but only this script //to show info (1 - on, 0 - off...duh) set .active_woe, 1; //WoE inactive on map notifier. Basically notifies player if the castle they are entering is //WoE active or not set .notify_woe, 1; //-----------------------------------------------------------------------------------------// //CONFIG END // //-----------------------------------------------------------------------------------------// //-----------------------------------------------------------------------------------------// //CONSTANTS START - Don't touch this unless you know what you are doing // //-----------------------------------------------------------------------------------------// //castle maps by region setarray .castles_prtg$[0],"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05"; setarray .castles_payg$[0],"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05"; setarray .castles_gefg$[0],"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05"; setarray .castles_aldeg$[0],"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05"; setarray .castles_arug$[0],"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05"; setarray .castles_schg$[0],"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05"; setarray .castles_novi$[0],"nguild_alde","nguild_gef","nguild_pay","nguild_prt"; //woe kill functions for each castle setarray .woe_kill_prtg$[0],"Agit#prtg_cas01::OnAgitEnd","Agit#prtg_cas02::OnAgitEnd","Agit#prtg_cas03::OnAgitEnd","Agit#prtg_cas04::OnAgitEnd","Agit#prtg_cas05::OnAgitEnd"; setarray .woe_kill_payg$[0],"Agit#payg_cas01::OnAgitEnd","Agit#payg_cas02::OnAgitEnd","Agit#payg_cas03::OnAgitEnd","Agit#payg_cas04::OnAgitEnd","Agit#payg_cas05::OnAgitEnd"; setarray .woe_kill_gefg$[0],"Agit#gefg_cas01::OnAgitEnd","Agit#gefg_cas02::OnAgitEnd","Agit#gefg_cas03::OnAgitEnd","Agit#gefg_cas04::OnAgitEnd","Agit#gefg_cas05::OnAgitEnd"; setarray .woe_kill_aldeg$[0],"Agit#aldeg_cas01::OnAgitEnd","Agit#aldeg_cas02::OnAgitEnd","Agit#aldeg_cas03::OnAgitEnd","Agit#aldeg_cas04::OnAgitEnd","Agit#aldeg_cas05::OnAgitEnd"; setarray .woe_kill_arug$[0],"Manager#aru01_02::OnAgitEnd2","Manager#aru02_02::OnAgitEnd2","Manager#aru03_02::OnAgitEnd2","Manager#aru04_02::OnAgitEnd2","Manager#aru05_02::OnAgitEnd2"; setarray .woe_kill_schg$[0],"Manager#sch01_02::OnAgitEnd2","Manager#sch02_02::OnAgitEnd2","Manager#sch03_02::OnAgitEnd2","Manager#sch04_02::OnAgitEnd2","Manager#sch05_02::OnAgitEnd2"; setarray .woe_kill_novi$[0],"Agit_N01::OnAgitEnd","Agit_N02::OnAgitEnd","Agit_N03::OnAgitEnd","Agit_N04::OnAgitEnd"; //region prefixs setarray .regions$[0],"prtg","payg","gefg","aldeg","arug","schg","novi"; //region info setarray .region_names$[0],"Prontera", "Payon", "Geffen", "Aldebaran", "Arunafeltz", "Schwarzwald", "Novice Castles"; setarray .region_maps$[0],"prt_gld", "pay_gld", "gef_fild13", "alde_gld", "aru_gld", "sch_gld", "prontera"; //coords to warp player to region (0 is random) setarray .region_x[0],0, 0, 0, 0, 0, 0, 148; setarray .region_y[0],0, 0, 0, 0, 0, 0, 163; setarray .waitMsg$[0], "WoE Starts: ", "WoE Ends: "; setarray .startMsg$[0], "WoE is Starting", "WoE is Ending"; set .ticks_in_day, 86400; //mmm...magic numbers setarray .daysOfWeek$[0], "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; set .timer_refresh_rate, 500; //how many ms per timer refresh...keep less than 1000 (in milliseconds) set .change_state_sleep, 3000; //how long to show "WoE is Start|End-ing" msg for in ms. (in milliseconds) //Make sure WoE sessions are longer than this xD set .banner_refresh_rate, 10; //how many seconds per banner refresh...keep 1 or above (in seconds) //-----------------------------------------------------------------------------------------// //CONSTANTS END // //-----------------------------------------------------------------------------------------// set .num_regions, getarraysize(.regions$); set .num_woes, getarraysize(.woe_1); //force WoE to end if active callfunc "WoEToggler", 0; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { //count num castles per region set .num_castles[.@i], getarraysize(getd(".castles_" + .regions$[.@i] + "$")); } //convert timestamps to readable format for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) { set .@hrs, .woe_0[.@i] / 3600; set .@mins, .woe_0[.@i] % 3600 / 60; set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM"); set .woe_0_str$[.@i], .@output$; set .@hrs, .woe_1[.@i] / 3600; set .@mins, .woe_1[.@i] % 3600 / 60; set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM"); set .woe_1_str$[.@i], .@output$; } //calc number of woe states and consolidate states to create list of castles used set .num_states, 0; while(getarraysize(getd(".woe_state_" + (.num_states)))) { set .@state$, ".woe_state_" + .num_states; set .@i, 0; while(.@i < getarraysize(getd(.@state$))) { set .castleUsage[.@i], .castleUsage[.@i] | getd(.@state$ + "[" + .@i + "]"); set .@i, .@i + 1; } set .num_states, .num_states + 1; } for(set .@i, 0; .@i < .num_states; set .@i, .@i + 1) { set .@woe_state_array$, ".woe_state_" + .@i; for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) { if(.castleUsage[.@k] > 0) { set .@castles$, ".castles_" + .regions$[.@k] + "$"; set .@castle_check, getd(.@woe_state_array$ + "[" + .@k + "]"); if(.@castle_check == 0) { //region not in this state //region warp menu string set .region_warp$[.@i], .region_warp$[.@i] + "^DD0000" + .region_names$[.@k] + "^000000:"; continue; } else { if(.@castle_check >= ((1 << .num_castles[.@k]) - 1)) { //includes all castles...just list as region. setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k]); //region warp menu string set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + "^000000:"; } else { set .@j, 0; set .@output$, ""; while(.@j < .num_castles[.@k]) { if(.@castle_check & (1 << .@j)) { set .@output$, .@output$ + GetCastleName(getd(.@castles$+"["+.@j+"]")); set .@castle_check, .@castle_check - (1 << .@j); if(.@castle_check) { if(.@output$ != "") set .@output$, .@output$ + ", "; } else break; } set .@j, .@j + 1; } setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k] + " ("+ .@output$ + ")"); //region warp menu string set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + " ("+ .@output$ + ")^000000:"; } } } else { set .region_warp$[.@i], .region_warp$[.@i] + ":"; } } } donpcevent strnpcinfo(3)+"::OnFindCurIndex"; donpcevent strnpcinfo(3)+"::OnUpdateCountTick"; if(.active_woe) { if(.notify_woe) { //set mapflag for all castle maps for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@region_array$, ".castles_" + .regions$[.@i] + "$"; for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) { setmapflag getd(.@region_array$ + "[" + .@k + "]"), mf_loadevent; setd(".loadmap_region_" + getd(.@region_array$ + "[" + .@k + "]"), .@i + 1); setd(".loadmap_castleIndex_" + getd(.@region_array$ + "[" + .@k + "]"), .@k); } } } //activates WoE if needed donpcevent strnpcinfo(3)+"::OnDoWoE"; } //flag that init occured set .init, 1; OnWoETimer: //timer stuff while (1) { set .remainTime, .count_tick - gettimetick(2); set .bannerTimer, .remainTime - (.remainTime % .banner_refresh_rate) + .banner_refresh_rate; set .min, .bannerTimer / 60; set .sec, .bannerTimer - .min * 60; set .hr, .min / 60; set .min, .min - .hr * 60; set .roomMsg$, .waitMsg$[.state] + .hr + ":" + ((.min < 10 )?"0":"") + .min + ":" + ((.sec < 10 )?"0":"") + .sec; sleep .timer_refresh_rate; if(.remainTime <= 0) { if(.active_woe) { donpcevent strnpcinfo(3)+"::OnDoWoE"; } set .roomMsg$, .startMsg$[.state]; set .woe_index, (.woe_index + .state) % .num_woes; //go to next index if needed set .state, (.state + 1) % 2; //flip state donpcevent strnpcinfo(3)+"::OnUpdateCountTick"; sleep .change_state_sleep; } } end; //obligatory end =D OnUpdateCountTick: set .count_tick, getd(".woe_" + .state + "[" + .woe_index + "]"); set .count_tick, gettimetick(2) + .count_tick - gettimetick(1) + (.woe_day[.woe_index] - gettime(4) + 7) % 7 * .ticks_in_day; if(gettimetick(2) > .count_tick) set .count_tick, .count_tick + 7 * .ticks_in_day; end; OnFindCurIndex: set .@cur_day, gettime(4); set .@cur_tick, gettimetick(1); set .woe_index, 0; set .state, 0; for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) { if(.woe_day[.@i] < .@cur_day) continue; if(.woe_day[.@i] == .@cur_day) { if(.woe_0[.@i] >= .@cur_tick) { set .woe_index, .@i; set .state, 0; break; } if(.woe_1[.@i] >= .@cur_tick) { set .woe_index, .@i; set .state, 1; break; } } if(.woe_day[.@i] > .@cur_day) { set .woe_index, .@i; set .state, 0; break; } } end; //On map notifier //Comment out OnPCLoadMapEvent label if .notify_woe is disabled to prevent unnecessary triggering OnPCLoadMapEvent: if(.state && .notify_woe) { getmapxy(.@map$, .@x, .@y, 0); set .@region, getd(".loadmap_region_" + .@map$) - 1; if(.@region >= 0) { set .@castleIndex, getd(".loadmap_castleIndex_" + .@map$); if(getd(".woe_state_" + .woe_state[.woe_index] + "[" + .@region + "]") & 1 << .@castleIndex) dispbottom "The [" + GetCastleName(.@map$) + "] castle is available for conquering during this WoE session"; else dispbottom "The [" + GetCastleName(.@map$) + "] castle is NOT available for conquering during this WoE session"; } } end; //------------------------------------------------------------------------------ // WoE Controller Stuff Here //------------------------------------------------------------------------------ OnDoWoE: if((.state == 0 && .init) || (.state == 1 && !agitcheck())) { //starting callfunc "WoEToggler", 1; //kills WoE in all castles that shouldn't have WoE set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index]; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@castles$, ".castles_" + .regions$[.@i] + "$"; set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]"); for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) { set .@map$, getd(.@castles$+"["+.@k+"]"); if((.@castle_check & (1 << .@k)) == 0) { donpcevent getd(".woe_kill_" + .regions$[.@i] + "$[" + .@k + "]"); } } } announce "The War Of Emperium has begun!",bc_all; donpcevent strnpcinfo(3)+"::OnDisplayOwners"; } else { //ending if(agitcheck()) { callfunc "WoEToggler", 0; announce "The War Of Emperium is over!",bc_all; donpcevent strnpcinfo(3)+"::OnDisplayOwners"; } } end; OnDisplayOwners: //displays based on current region set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index]; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@k, 0; set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]"); set .@castles$, ".castles_" + .regions$[.@i] + "$"; while(.@castle_check && .@k < .num_castles[.@i]) { if(.@castle_check & (1 << .@k)) { set .@map$, getd(.@castles$+"["+.@k+"]"); if (GetCastleData(.@map$,1)) { announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.",bc_all; } else { announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.",bc_all; } set .@castle_check, .@castle_check - (1 << .@k); } set .@k, .@k + 1; } } end; } cydonia,125,166,4 script WoE Info 837,{ if(getwaitingroomstate(3, strnpcinfo(3)) == -1) donpcevent strnpcinfo(3)+"::OnInit"; doevent "WoEInfoBase::OnStartMenu"; end; OnInit: while (1) { //only updates if msg is different set .banner$, getwaitingroomstate(4, strnpcinfo(3)); if(getvariableofnpc(.roomMsg$, "WoEInfoBase") != .banner$) { delwaitingroom; waitingroom getvariableofnpc(.roomMsg$, "WoEInfoBase"), 0; } sleep 500; } end; } //zomg! it duplicates!! cydonia,137,109,6 duplicate(WoE Info) WoE Info#2winfo 837 //--------------------------------------------------------------------------------------------------------------------- //These two functions handle WoE's activation/deactivation. Since stable does not have AgitStart2/AgitEnd2, //using the trunk version will result in catastrophic failure of the script. Double declaration of the following //functions fixes this (you will get warning messages though) function script WoEToggler { //<state> = 0|1 if(getarg(0)) { AgitStart; } else { AgitEnd; } return; } //if stable script will fail parsing this function, but the rest of the script will still be usable function script WoEToggler { //<state> = 0|1 if(getarg(0)) { AgitStart; AgitStart2; } else { AgitEnd; AgitEnd2; } return; } My friend helped me Capuche here to be the solution fix announce "The War Of Emperium has begun!",bc_all; callsub "OnDisplayOwners"; } else { //ending if(agitcheck()) { callfunc "WoEToggler", 0; announce "The War Of Emperium is over!",bc_all; callsub "OnDisplayOwners",1; } } end; OnDisplayOwners: //displays based on current region set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index]; for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) { set .@k, 0; set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]"); set .@castles$, ".castles_" + .regions$[.@i] + "$"; while(.@castle_check && .@k < .num_castles[.@i]) { if(.@castle_check & (1 << .@k)) { set .@map$, getd(.@castles$+"["+.@k+"]"); set .@gid, GetCastleData(.@map$,1); if ( .@gid ) { announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.",bc_all; if ( getarg(0,0) ) { set .@nb, query_sql( "select account_id from `char` where guild_id = "+ .@gid +" and online = 1", .@aid ); for ( set .@n, 0; .@n < .@nb; set .@n, .@n +1 ) getitem 7539,15, .@aid[.@n]; } } else { announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.",bc_all; } set .@castle_check, .@castle_check - (1 << .@k); } set .@k, .@k + 1; } } end; }
  16. Would increase the damage of skills Cold Bolt, Fire Bolt in src.
  17. Yes, but for some reason have WoE not be making the award, as the woe of Wednesday and Sunday, so I thought I adicinar the system along with the control script as it makes checking the guild and castle at the end ,
  18. so how do I get the script to give a prize to each member of the guild at the end of woe? would be something like this? set .@nb, query_sql( "select account_id from `char` where guild_id = "+ .@gid +" and online = 1", .@aid ); for ( set .@i, 0; .@i < .@nb; set .@i, .@i +1 ) { attachrid .@aid[.@i]; getitem 7539,15; } end; }
×
×
  • Create New...