Jump to content
  • 0

Customized Poring Race


leertaste

Question


  • Group:  Members
  • Topic Count:  41
  • Topics Per Day:  0.01
  • Content Count:  137
  • Reputation:   1
  • Joined:  02/02/13
  • Last Seen:  

Hello!
 

I got this script:

 

//===== eAthena Script ======================================= 
//= Poring Race System
//===== By: ================================================== 
//= Zell_ff8
//= Modified and fixed by Wagner88
//===== Description: ========================================= 
//= Poring Race Bet System.
//===== More: ================================================
//= Bet how much zeny you want
//= You receive zeny when you win.
//= Max bet custom (default = 100000 zeny)
//============================================================



p_track02	mapflag	nobranch
p_track02	mapflag	noicewall
p_track02	mapflag	nomemo
p_track02	mapflag	noreturn
p_track02	mapflag	noteleport

//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


//NPC Checker
p_track02,44,41,0	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 "The winner is "+$prace_winner$+" and you have bet for "+@prace_winner$+".";
	 	if (@prace_winner$==$prace_winner$ && @prace_winner$!="") 
		{  
   			dispbottom "You have won!"; 
			mapannounce "p_track02"," Congratulations! "+strcharinfo(0)+" has won!",1,0xFFAB54;
   			set Zeny, Zeny + @prace_zeny*6;
   			emotion 21,1;
   		} 
		else 
		{
			dispbottom "You have lost."; 
			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;
}

}

//NPC Principal
p_track02,58,41,2	script	Bidder#prace0	57,{ 

	//MAX BET (customizable)
	set @max_bet, 100000;



if ($prace_random < 1) callsub OnInit;
if (@prace_playing==1) goto AlreadyPlaying;

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,"Santa Poring#prace5");
getmapxy(.@mapname$,.@x6,.@y,1,"Poporing#prace6");
if (.@x1 != 58 || .@x2 != 58 || .@x3 != 58 || .@x4 != 58 || .@x5 != 58 || .@x6 != 58) {
mes "[Bidder]";mes "There is a race in progress...";close;
end;
}






L_bet:
	mes "[Bidder]";
	mes "How much zeny do you want to bet?";
	mes "(maximum bet: " + @max_bet + " )";
	input @prace_zeny;
	
L_controlzeny:

	if(@prace_zeny > @max_bet) goto TooMuch; 	

	if(@prace_zeny==0) goto NoZero;

	if(Zeny < @prace_zeny) goto NotEnuf;
	goto L_poring;


	TooMuch:
		next;
		mes "[Bidder]";
		mes "Sorry but the bet limit is " + @max_bet + " zeny.";	
		close;

	NoZero:
		next;
		mes "[Bidder]";
		mes "We're not joking here! Go away if you don't want to play zeny!";	
		close;

	NotEnuf:
		next;
		mes "[Bidder]";
		mes "I'm sorry but you don't have enough zeny to make that bet.";
		close;

L_poring:
mes " - bet = " + @prace_zeny + " -";
mes "Ok, now choose the poring you want to bet:"; 
next;
menu "Poring",p1,"Angeling",p2,"Metaling",p3,"Deviling",p4,"Santa Poring",p5,"Poporing",p6,"  None",-;
mes "[Bidder]"; mes "Goodbye.";close;

p1:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Poring"; goto Ready;
p2:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Angeling"; goto Ready;
p3:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Metaling"; goto Ready;
p4:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Deviling"; goto Ready;
p5:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Santa Poring"; goto Ready;
p6:
 set Zeny,Zeny-@prace_zeny;
 set @prace_winner$,"Poporing"; goto Ready;

Ready:
 set $prace_bets,$prace_bets+1;
 set $prace_bidders[$prace_bets],getcharid(3);
 set @prace_playing,1;
 mes "[Bidder]";
 mes "I have "+$prace_bets+" bets.";
 setnpctimer 60000;startnpctimer;
 npctalk "I got "+strcharinfo(0)+" bet!";
 close;
 
Start1:
 setnpctimer 0;startnpctimer;end;
 
AlreadyPlaying:
 mes "[Bidder]";mes "You have choose ^00bb00"+@prace_winner$+"^000000";
 close;
 

NoZeny:
 set @prace_winner$,"";
 mes "[Bidder]";mes "You don't have enough Zeny.";close;

StartRace:
donpcevent "Metaling#prace3::OnRace";
donpcevent "Poring#prace1::OnRace";
donpcevent "Poporing#prace6::OnRace";
donpcevent "Angeling#prace2::OnRace";
donpcevent "Santa Poring#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 "Santa Poring#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 "Santa Poring#prace5::OnReturn";
donpcevent "Poporing#prace6::OnReturn";
end;


WinRace:
mapannounce "p_track02","The winner is "+$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 "p_track02","Porings, on your marks...",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","Gooo!!!",1,0xFFAB54;end;

OnTimer35000:
 set $prace_winner$,"";set $prace_bets,0;
 stopnpctimer;callsub ReturnRace;end;

OnTimer90000:
 npctalk "I got "+$prace_bets+" bets. Anyone else?"; end;
OnTimer110000:
 npctalk "The race will start soon. Last chance."; end;
OnTimer120000:
 goto Start1; end;

}





//-----------------------------------
// Racer NPC's
//-----------------------------------
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"; }
 end;
}
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"; }
 end;
}
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"; }
 end;
}
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"; }
 end;
}
p_track02,58,30,2	script	Santa Poring#prace5	1062,{ 
end;
OnRace:
 initnpctimer; startnpctimer;end;
OnStop:
 stopnpctimer;end;
OnReturn:
 npcwalkto 58,30;end;
OnTimer1100:
 getmapxy(.@mapname$,.@x,.@y,1,"Santa Poring#prace5");
 if(rand(100) < $prace_random) npcwalkto .@x-1,.@y;
 setnpctimer rand($prace_random2);startnpctimer;
 if ((.@x-1) == 29) { set $prace_winner$,"Santa Poring"; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; }
 end;
}
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"; }
 end;
}

It's the poring race

is it possible to change it from "zeny" to sth like Poring Race Points?

Edited by Mael
Cleaned
Link to comment
Share on other sites

5 answers to this question

Recommended Posts


  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

http://pastebin.com/raw.php?i=EWcS12eL

 

I just change

				// set Zeny, Zeny + @prace_zeny*6;
				set #PoringRacePoints, #PoringRacePoints + @prace_zeny*6;//Poring Race Points

and

p1:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Poring"; goto Ready;
p2:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Angeling"; goto Ready;
p3:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Metaling"; goto Ready;
p4:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Deviling"; goto Ready;
p5:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Santa Poring"; goto Ready;
p6:
	set #PoringRacePoints, #PoringRacePoints -@prace_zeny;
	set @prace_winner$,"Poporing"; goto Ready;

and remove the cheat (lol)

 

With this, players can bet Poring Race Points and gain news points

Link to comment
Share on other sites


  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

is it possible to change it from "zeny" to sth like Poring Race Points?

Sure but player must bet something so he must own some points at first otherwise he can't bet

Edited by Capuche
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  41
  • Topics Per Day:  0.01
  • Content Count:  137
  • Reputation:   1
  • Joined:  02/02/13
  • Last Seen:  

It's a charbased variable, right?
i could give those points if an certain item is consumed.. but how to configure?^^

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  142
  • Reputation:   8
  • Joined:  02/11/13
  • Last Seen:  

I'd prefer an sql-table since configuration and administration (maybe using a webtool) is easier this way...

 

(my oppinion since i'm scripting nearly everything with sql-support to configure it via my cp.. xD)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  69
  • Topics Per Day:  0.02
  • Content Count:  295
  • Reputation:   6
  • Joined:  10/14/12
  • Last Seen:  

After placing the bets, it goes only up to here.

 

OnTimer90000:
npctalk "I got "+$prace_bets+" bets. Anyone else?"; end;
OnTimer110000:
npctalk "The race will start soon. Last chance."; end;
 
the event wont start. No error or anything.
 
also,
Mr Capuche what cheat did you remove? Thanks
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...