Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C by Mara ( 17 years ago )
//===== Athena Script ========================================
//= Poring Race System
//===== By: ==================================================
//= Zell_ff8
//= -Made for Daegaladh, www.Sha-Ro.com Admin
//= -and RUNE, http://ro-enhanced.net
//= Some Rights Reserved
//= http://creativecommons.org/licenses/by-nc-sa/2.5/ar/
//===== Current Version: =====================================
//= 0.79
//===== Compatible With: =====================================
//= eAthena SVN 9991+ && Cronus SVN 1268+
//===== Description: =========================================
//= Poring Race
//===== Additional Comments: =================================
//= Tested, eA SVN Stable r10128 working 100%
//= Need a lot of clean up... but, WORKS!! WTH xD
//= Sorry to C&P the position check after a selection, it's a
//= fast fix and don't have time to make it a function.
//===== Changelog: ===========================================
//= (0.76) Versão criada. [Zell_ff8]
//= (0.77) Corrigido variável. [Mara]
//= (0.78) Alterado texto. [Mara]
//= (0.79) Alterada estrutura. [Mara]
//===== Mapflags: ============================================
p_track02 mapflag nobranch
p_track02 mapflag noicewall
p_track02 mapflag nomemo
p_track02 mapflag noreturn
p_track02 mapflag noteleport
p_track02 mapflag nowarpto
p_track02 mapflag nowarp
p_track02 mapflag pvp off
p_track02 mapflag nosave
//===== Warps: ===============================================
hugel,45,57,0 warp p_track001 2,2,p_track02,75,42
p_track02,78,42,0 warp p_track002 1,3,hugel,48,60
//===== Horários de Início: ==================================
- script Timer#prace0 -1,{
end;
OnClock0000: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock0200: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock0400: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock0600: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock0800: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock1000: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock1200: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock1400: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock1600: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock1800: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock2000: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
OnClock2200: set $prace_gate, TRUE; announce "A 'Corrida dos Porings' começará em breve, façam suas apostas!",0; end;
}
//===== Checker: =============================================
p_track02,44,41,0 script Checker#prace0 -1,{
end;
OnChequeo:
set .@prace_prize, 607; // ID do prêmio para quem vencer.[Padrão: ????]
set .@prace_prize_quantity, 1; // Quantidade do prêmio. [Padrão: 1]
set $prace_gate, FALSE;
for(set .@i, FALSE; .@i < (getarraysize($prace_bidders)); set .@i, .@i + 1)
{
if(attachrid($prace_bidders[.@i]))
{
if(@prace_playing != TRUE) end;
dispbottom "O vencedor é o "+$prace_winner$+" e você apostou em "+@prace_winner$+".";
if((@prace_winner$ == $prace_winner$) && (@prace_winner$ != ""))
{
dispbottom "Você venceu! Prêmio: "+.@prace_prize_quantity+" "+getitemname(.@prace_prize);
mapannounce "p_track02"," Parabéns! "+strcharinfo(0)+" venceu!",1,0xFFAB54;
getitem .@prace_prize,.@prace_prize_quantity;
emotion 21,1;
warp "prontera",150,170;
}
dispbottom "Você perdeu.";
emotion 28,1;
warp "prontera",150,170;
}
set @prace_winner$, "";
set @prace_playing, FALSE;
}
for(set .@i,0; .@i < (getarraysize($prace_bidders)); set .@i, .@i + 1) set $prace_bidders[.@i], FALSE;
}
//===== Teleporte: ===========================================
prontera,146,174,6 script Poring Race#prace0 882,{
if($prace_gate == FALSE)
{
mes "[Warper]";
mes "Desculpe, mas a Corrida dos Porings está fechada.";
close;
}
mes "[Warper]";
mes "Olá "+StrCharInfo(0)+", você quer ir";
mes "para a Corrida dos Porings?";
if(select("Sim, claro.:Não, obrigado.") == 2) close;
close2; warp "p_track02",55,41; end;
}
//===== Principal: ===========================================
p_track02,58,41,2 script Bidder#prace0 765,{
set .@prace_zeny, 3000; // Preço para apostar. [Padrão: 3500]
if ($prace_random < 1) callsub OnInit;
if (@prace_playing == TRUE)
{
mes "[Bidder]";
mes "Você apostou em ^00bb00"+@prace_winner$+"^000000.";
close;
}
else if($prace_gate == FALSE)
{
mes "[Bidder]";
mes "Uma corrida está em andamento...";
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");
getmapxy(.@mapname$,.@x6,.@y,1,"Poporing#prace6");
if (.@x1 != 58 || .@x2 != 58 || .@x3 != 58 || .@x4 != 58 || .@x5 != 58 || .@x6 != 58)
{
mes "[Bidder]"; mes "Uma corrida está em andamento...";
close;
}
mes "[Bidder]";
mes "Escolha o poring em que deseja apostar:";
mes "Irá custar "+.@prace_zeny+"z.";
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";
case 6: callfunc "OnBid","Poporing";
}
OnReady:
set $prace_bets, $prace_bets + 1;
set $prace_bidders[$prace_bets], getcharid(3);
set @prace_playing, TRUE;
mes "[Bidder]";
mes "Eu tenho "+$prace_bets+" apostas.";
setnpctimer 60000;
startnpctimer;
npctalk strcharinfo(0)+" fez sua aposta!";
close;
Start1:
setnpctimer 0;
startnpctimer;
end;
StartRace:
set $prace_gate, 0;
donpcevent "Metaling#prace3::OnRace";
donpcevent "Poring#prace1::OnRace";
donpcevent "Poporing#prace6::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";
donpcevent "Poporing#prace6::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";
donpcevent "Poporing#prace6::OnReturn";
end;
WinRace:
set $prace_gate, FALSE;
mapannounce "p_track02","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, FALSE;
set $prace_bidders, FALSE;
end;
OnTimer500: mapannounce "p_track02","Porings, em suas marcas...",1,0xFFAB54; end;
OnTimer3000: mapannounce "p_track02","...3...",1,0xFFAB54; end;
OnTimer4000: mapannounce "p_track02","...2...",1,0xFFAB54; end;
OnTimer5000: mapannounce "p_track02","...1...",1,0xFFAB54; callsub StartRace; end;
OnTimer6000: stopnpctimer; mapannounce "p_track02","Jááá!!!",1,0xFFAB54; end;
OnTimer35000: set $prace_winner$,""; set $prace_bets, FALSE; 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");
getmapxy(.@mapname$,.@x6,.@y,1,"Poporing#prace6");
if(.@x1 == 58 || .@x2 == 58 || .@x3 == 58 || .@x4 == 58 || .@x5 == 58 || .@x6 == 58)
{
if(Zeny < .@prace_zeny)
{
set @prace_winner$, "";
mes "[Bidder]";
mes "Você não tem Zeny suficiente.";
close;
}
else
{
set Zeny,Zeny-.@prace_zeny;
}
set @prace_winner$,getarg(0);
callsub OnReady;
}
mes "[Bidder]";
mes "Uma corrida está em andamento...";
close;
OnReady:
set $prace_bets, $prace_bets + 1;
set $prace_bidders[$prace_bets], getcharid(3);
set @prace_playing,TRUE;
mes "[Bidder]";
mes "Eu tenho "+$prace_bets+" apostas.";
setnpctimer 60000;
startnpctimer;
npctalk strcharinfo(0)+" fez sua aposta!";
close;
}
//===== Monstros: ==============================================
p_track02,58,38,2 script Poring#prace1 1002,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,38;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Poring#prace1");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Poring";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
p_track02,58,36,2 script Angeling#prace2 1096,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,36;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Angeling#prace2");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Angeling";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
p_track02,58,34,2 script Metaling#prace3 1613,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,34;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Metaling#prace3");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Metaling";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
p_track02,58,32,2 script Deviling#prace4 1582,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,32;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Deviling#prace4");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Deviling";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
p_track02,58,30,2 script Poring Noel#prace5 1062,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,30;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Poring Noel#prace5");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Poring Noel";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
p_track02,58,28,2 script Poporing#prace6 1031,{
end;
OnRace:
initnpctimer;
startnpctimer;
end;
OnStop:
stopnpctimer;
end;
OnReturn:
npcwalkto 58,28;
end;
OnTimer1100:
getmapxy(.@mapname$,.@x,.@y,1,"Poporing#prace6");
if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
setnpctimer rand($prace_random2);
startnpctimer;
if((.@x-1) == 29)
{
set $prace_winner$,"Poporing";
emotion 29;
donpcevent "Bidder#prace0::OnStopRace";
}
}
Revise this Paste