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 caspa7 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.