prontera,205,156,5 script Duel Gambling 953,{
set @npcname$,"[Duel Manager]";
L_mm:
mes @npcname$;
//If already a duel is going on
if(.gambling) {
mes "A duel is starting, please wait until the duel is over";
close;
}
mes callfunc("F_Hi") + " " + strcharinfo(0);
//If the challenger and the one accepting the duel have registred and the duel is ready to start
if(.char$ == strcharinfo(0) && .char2$ != "") {
mes "^0000FF" +.char2$+ "^000000 is waiting for you to start the duel!";
if(.zeny) mes "Dueling for total ^FF0000" +.zeny+ "^000000 zeny.";
if(.item) mes "The player duel for a ^FF0000" + callfunc("F_getitemname2",.item2[0],.item2[1],.item2[2],.item2[3],.item2[4],.item2[5]) + "^000000";
mes "What would you like to have?";
next;
menu "Start Duel",L_sduel,"Cancel Duel",L_cduel;
}
//If the one accept the duel is going to talk to the npc
if(.waiting) {
mes "The duel gonna start soon!";
close;
}
//If the challenger has registred, speaks again to the npc and no one accepted it
if(.char$ == strcharinfo(0)) {
mes "Please wait for your challenger.";
next;
menu "Cancel Duel",L_cduel,"I will wait",-;
close;
}
//If a challenger has registred, another person speaks to the npc and no one has accepted before
if(.char$ != "") {
mes "There is a player is waiting for gambling";
mes "What would you like to have?";
next;
menu "Player and Gamble Information",-,"Send Duel invitation to the player",L_iduel,"Duel Gambling?",L_info;
mes @npcname$;
mes "The player that challange is named ^0000FF"+.char$+"^000000";
if(.zeny) mes "The player duel for ^FF0000" +.zeny+ "^000000 zeny.";
if(.item) mes "The player duel for a ^FF0000" + callfunc("F_getitemname2",.item[0],.item[1],.item[2],.item[3],.item[4],.item[5]) + "^000000";
next;
goto L_mm;
}
//If no challenger is registred.
else {
mes "No player waiting for gambling currently";
mes "What would you like to do?";
next;
menu "Start a duel",-,"Duel Gambling?",L_info;
set .zeny,callfunc("F_PDZeny",0);
Initnpctimer;
set .char$,strcharinfo(0);
mes @npcname$;
mes "Please wait for your oppenent.";
announce .char$+ " is waiting for a duel!",bc_map|bc_blue;
close;
}
//This party will run after someone accepted the challenge of a challenger
L_iduel:
set .zeny,callfunc("F_PDZeny",.zeny);
set .char2$,strcharinfo(0);
set .waiting,1;
mes @npcname$;
mes "Please wait while i inform your oppenent.";
announce .char$+ ", you have a challenger!",bc_map|bc_blue;
close;
//After both players registred and the challenger starts the duel.
L_sduel:
mes @npcname$;
mes "We will start the duel immediately.";
close2;
attachrid getcharid(3,.char2$);
warp "pvp_n_1-1",90,50;
attachrid getcharid(3,.char$);
set dueling,1;
warp "pvp_n_1-1",110,50;
atcommand "@duel " + .char2$;
attachrid getcharid(3,.char2$);
atcommand "@accept";
set dueling,1;
// detachrid;
set .gambling,1;
announce .char$+ " has start a duel with " +.char2$+ "!",bc_map|bc_blue;
end;
//If only the challenger is registred and cancels or if both registred and the challenger cancels the duel.
L_cduel:
announce "The duel was canceld by " +.char$,bc_map|bc_blue;
mes @npcname$;
mes "Very well, " + callfunc("F_Bye");
set dueling,0;
set Zeny,Zeny+(.zeny/2);
close2;
if((.char2$ != "") && (attachrid (getcharid(3,.char2$)))) {
attachrid getcharid(3,.char2$);
set Zeny,Zeny+(.zeny/2);
set dueling,0;
// detachrid;
}
set .char$,"";
set .char2$,"";
set .gambling,0;
set .waiting,0;
set .zeny,0;
end;
//If you click on information for the duel.
L_info:
mes @npcname$;
mes "I will allow 2 player to duel each other,";
mes "players have to duel with gambling,";
next;
mes @npcname$;
mes "Gambling inlcude item and zeny";
mes "Only one type was able to gamble with.";
mes "If gambling zeny, the gamble zeny amount must be same amount as oppenent gamble.";
next;
mes @npcname$;
mes "Maximum time for waiting duel and dueling is 5 minute.";
next;
goto L_mm;
//If 5 Minutes passed after the challenger registred and no one accepts it.
OnTimer300000:
announce "No challenger or the time is over, the duel was cancel.",bc_map|bc_blue;
if((.char$ != "") && (attachrid (getcharid(3,.char$)))) {
set Zeny,Zeny+(.zeny/2);
set dueling,0;
}
if((.char2$ != "") && (attachrid (getcharid(3,.char2$)))) {
set Zeny,Zeny+(.zeny/2);
set dueling,0;
}
// detachrid;
set .char$,"";
set .char2$,"";
set .gambling,0;
set .waiting,0;
set .zeny,0;
stopnpctimer;
end;
//When a player kills his oppenent.
OnPCKillEvent:
if(!dueling) end;
set Zeny,Zeny+.zeny;
atcommand "@leave";
announce strcharinfo(0)+" has win the duel!",bc_map|bc_blue;
set dueling,0;
attachrid killedrid;
set dueling,0;
// detachrid;
set .char$,"";
set .char2$,"";
set .gambling,0;
set .waiting,0;
set .zeny,0;
set .waiting,0;
end;
//When a player dies.. (Just incase he doesnt get killed by his oppenent)
OnPCDieEvent:
if(!dueling) end;
if (killerrid == 0)
{
announce "The duel has been canceld because "+strcharinfo(0)+" died", bc_map|bc_blue;
if (strcharinfo(0) == .char$)
{
attachrid getcharid(3,.char2$);
set Zeny,Zeny+.zeny/2;
}
if (strcharinfo(0) == .char2$)
{
attachrid getcharid(3,.char$);
set Zeny,Zeny+.zeny/2;
}
atcommand "@leave";
set dueling,0;
// detachrid;
set .char$,"";
set .char2$,"";
set .gambling,0;
set .waiting,0;
set .zeny,0;
set .waiting,0;
end;
}
}
//Function for gambling for Zeny
Function script F_PDZeny {
If(!getarg(0)) {
mes @npcname$;
mes "How many zeny you would like to duel with?";
next;
input .@zeny;
If(.@zeny > Zeny || !.@zeny) {
mes "You don' have enough zeny to duel! I won't allow that!";
close;
}
set Zeny,Zeny-.@zeny;
return .@zeny;
}
If(getarg(0) > Zeny) {
mes "You don't have enough zeny to duel! I won't allow that!";
close;
}
else
set Zeny,Zeny-getarg(0);
set .@zeny,getarg(0)*2;
return .@zeny;
}
Can somebody help me and check the script..... or give me a much less bug script please..............
Question
caspa
Can somebody help me and check the script..... or give me a much less bug script please..............

Edited by caspaLink to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.