Advertisement
johnlol

PVP_Wager

Aug 9th, 2023
992
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 9.22 KB | Gaming | 0 0
  1. //===== rAthena Script =======================================
  2. //= PvP Wager Match
  3. //=====  by: =============================
  4. //= pajodex
  5. //===== Current Version: =====================================
  6. //= 1.0
  7. //===== Compatible With: =====================================
  8. //= rAthena Project (pajodex)
  9. //===== Description: =========================================
  10. /*
  11. PvP Wager Match
  12.    
  13.     Instead of boring @duel, I offer you a match where players
  14.     will need to bet zeny and item. Use @wager command to use
  15.     the NPC.
  16.    
  17.     All are easily configured on the settings below.
  18.    
  19.     Enjoy!
  20.  
  21. */
  22. //=====******** Note ********=================================
  23. //= if you find bugs or problem, please do tell DM me at
  24. //= Discord (pajodex#1328) or rAthena (pajodex)
  25. //= open for suggestions
  26. //===== Additional Comments: =================================
  27. /*  1.0 - Initial release
  28.     1.1 - added mapflag on default map (force_5-1)
  29. */
  30. //=============================================================
  31. -   script  PVPWager#Reward 100,{
  32. function    OnEndWager ;
  33. function    OnWin ;
  34.    
  35. OnCommand:
  36.     if($refund_name$ == strcharinfo(0)) {
  37.         mes "Here is your refund because nobody accepted your match";
  38.         close2;
  39.         dispbottom "You have received "+$refund_zeny+"z as refund.";
  40.         set Zeny, Zeny + $refund_zeny;
  41.         getitem .item_bet, $refund_item;
  42.         sleep 100;
  43.         set $refund_name$, "";
  44.         set $refund_zeny, 0;
  45.         set $refund_item, 0;
  46.         end;
  47.     }
  48.     if(.wager == 2) {
  49.         mes "a match is starting";
  50.         close;
  51.         }
  52.     if(.wager == 1) {
  53.         goto OnAccept;
  54.         }
  55.     mes "Want to start a wager match against players?";
  56.         if(select("Yes:No") == 2) close;
  57.                
  58.             mes "Put Zeny amount (min: ^FF0000"+.min_bet+"^000000):";
  59.             input .@zeny_bet;
  60.             next;
  61.             if(.@zeny_bet < .min_bet) {
  62.                 mes "Sorry, minimum zeny wager is ^FF0000"+.min_bet+"^000000.";
  63.                 close;
  64.                 }
  65.             mes "Sure? "+.@zeny_bet+"z ";
  66.             if(select("Yes:No") == 2) close;
  67.                 if(zeny < .@zeny_bet) goto NoZeny;
  68.                 next;
  69.                 .ZBet = .@zeny_bet;
  70.                 mes "I only accept '^FF0000"+getitemname(.item_bet)+"^000000' (min: x^FF0000"+.min_bet_item+"^000000 pcs) for wager.";
  71.                 callshop "wager#shop",2;
  72.                 npcshopattach "wager#shop";    
  73.             end;
  74.            
  75. OnSellItem:
  76.     for (.@i = 0; .@i < getarraysize(@sold_nameid); .@i++) {
  77.         if (countitem(@sold_nameid[.@i]) < @sold_quantity[.@i] || @sold_quantity[.@i] <= 0) {
  78.             mes "omgh4x!";
  79.             close;
  80.         } else if (@sold_quantity[.@i] < .min_bet_item) {
  81.             mes "yeah";
  82.             close;
  83.         } else if (@sold_nameid[.@i] == .item_bet){
  84.             delitem .item_bet, @sold_quantity[.@i];
  85.             .item_bet_amount = @sold_quantity[.@i];
  86.         } else {
  87.             mes "Sorry, I only accept '^FF0000"+getitemname(.item_bet)+"^000000' for wager.";
  88.             close;
  89.         }
  90.     }
  91.     callsub OnComplete;
  92.     end;
  93.            
  94. OnComplete:
  95.     mes "Successfully hosted a wager for 3 mins!";
  96.     .wager = 1;
  97.     zeny = zeny - .ZBet;
  98.     .Challenger$ = strcharinfo(0);
  99.     announce "[@wager] : ["+.Challenger$+"] wants to challenge anyone for "+.ZBet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" wager match.",bc_blue|bc_all;
  100.     initnpctimer;
  101.     end;
  102.            
  103. OnTimer60000:
  104.     announce "[@wager] : ["+.Challenger$+"] wants to challenge anyone for "+.ZBet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" wager match.",bc_blue|bc_all;
  105.     end;
  106.    
  107. OnTimer120000:
  108.     announce "[@wager] : ["+.Challenger$+"] wants to challenge anyone for "+.ZBet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" wager match.",bc_blue|bc_all;
  109.     end;
  110.    
  111. OnTimer150000:
  112.     announce "[@wager] : ["+.Challenger$+"] wants to challenge anyone for "+.ZBet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" wager match.",bc_blue|bc_all;
  113.     end;
  114.    
  115. OnPCLogoutEvent:
  116.     if(strcharinfo(0) == .Challenger$ && .wager == 1) {
  117.         stopnpctimer;
  118.         .Challenger$ = "";
  119.         .ZBet = 0;
  120.         .wager = 0;
  121.         .item_bet_amount = 0;
  122.         announce "[@wager] : Wager match is canceled because ["+strcharinfo(0)+"] has logged out.",bc_blue|bc_all;
  123.         end;
  124.     }
  125.     if(strcharinfo(0) == .Challenger$ && .wager == 2) {
  126.         announce "[@wager] : "+.Challengee$+" won the wager match because ["+.Challenger$+"] has logged off during the match",0;
  127.         dispbottom "You have received "+(2*.ZBet)+"z from bet.",0x00FF00, .Challengee_cid;;
  128.         set zeny, zeny + (2*.ZBet), .Challengee_cid;
  129.         getitem .item_bet, (2*.item_bet_amount), .Challengee_aid;
  130.         sleep 1000;
  131.         OnEndWager;
  132.         end;
  133.     }
  134.     if(strcharinfo(0) == .Challengee$ && .wager == 2) {
  135.         announce "[@wager] : "+.Challenger$+" won the wager match because ["+.Challengee$+"] has logged off during the match",0;
  136.         dispbottom "You have received "+(2*.ZBet)+"z from bet.",0x00FF00, .Challenger_cid;;
  137.         set zeny, zeny + (2*.ZBet), .Challenger_cid;
  138.         getitem .item_bet, (2*.item_bet_amount), .Challenger_aid;
  139.         sleep 1000;
  140.         OnEndWager;
  141.         end;
  142.     }
  143.     end;
  144.  
  145. OnTimer180000: 
  146.     stopnpctimer;
  147.     announce "[@wager] : Match canceled! Nobody wants to fight ["+.Challenger$+"] in wager match. ",bc_blue|bc_all;
  148.     set $refund_name$, .Challenger$;
  149.     set $refund_zeny, .ZBet;
  150.     set $refund_item, .item_bet_amount;
  151.     sleep 100;
  152.     set .Challenger$, "";
  153.     set .ZBet, 0;
  154.     set .wager, 0;
  155.     set .item_bet_amount, 0;
  156.     end;
  157.        
  158. NoZeny:
  159.     next;
  160.     if(zeny < .Zbet || zeny < .@zeny_bet) mes "You dont have enough Zeny to bet";
  161.     if(countitem(.item_bet) < .item_bet_amount) mes "You don't have enough "+getitemname(.item_bet)+" to bet";
  162.     close;
  163.        
  164. OnAccept:
  165.     if(strcharinfo(0) == .Challenger$) {
  166.         mes "You have hosted a match worth "+.Zbet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" ";
  167.         sleep 1000;
  168.         mes " ";
  169.         mes "Your waged zeny and item(s) wont be refunded";
  170.         sleep 1000;
  171.         mes " ";
  172.         mes "Do you want to cancel?";
  173.         if(select("Yes:No") == 2) close;
  174.             next;
  175.             mes "Your loss!";
  176.             close2;
  177.             .Challenger$ = "";
  178.             .ZBet = 0;
  179.             .wager = 0;
  180.             .item_bet_amount = 0;
  181.             announce "[@wager] : ["+strcharinfo(0)+"] has opted to canceled the match.",bc_blue|bc_all;
  182.         end;           
  183.     }
  184.     if(.wager == 2) { mes "a match is starting"; close; }
  185.         mes .Challenger$+" had waged "+.Zbet+"z and "+.item_bet_amount+" x "+getitemname(.item_bet)+" for a 3 round match.";
  186.         mes " ";
  187.         mes "Do you accept his/her offer?";
  188.         if(select("Yes:No") == 2) close;
  189.             if(zeny < .Zbet || countitem(.item_bet) < .item_bet_amount) goto NoZeny;
  190.             delitem .item_bet, .item_bet_amount;
  191.             zeny = zeny - .ZBet;
  192.             .Challengee$ = strcharinfo(0);
  193.             .wager = 2;
  194.             goto OnStart;
  195.     end;
  196.  
  197. OnDieHeal:
  198.     recovery 3,.map$;
  199.     sleep 3000;
  200.     warp .map$, .challenger_coord[0], .challenger_coord[1], .Challenger_cid;
  201.     warp .map$, .challengee_coord[0], .challengee_coord[1], .Challengee_cid;
  202.     sleep 1000;
  203.     .round++;
  204.     mapannounce .map$, "Round "+.round+" Start!",1,0x33c7ff;
  205.     end;
  206.    
  207. OnStart:
  208.     stopnpctimer;
  209.     set .round, 1;
  210.     set .Challenger_aid, getcharid(3,.Challenger$);
  211.     set .Challengee_aid, getcharid(3,.Challengee$);
  212.     set .Challenger_cid, getcharid(0,.Challenger$);
  213.     set .Challengee_cid, getcharid(0,.Challengee$);
  214.     warp .map$, .challenger_coord[0], .challenger_coord[1], .Challenger_cid;
  215.     warp .map$, .challengee_coord[0], .challengee_coord[1], .Challengee_cid;
  216.     announce "[ @wager ] : [ "+.Challenger$+" ] vs [ "+.Challengee$+" ] for a [ "+.ZBet+"z ] wager match!",bc_blue|bc_all;
  217.     end;
  218.    
  219. OnPCKillEvent:
  220.     if ( strcharinfo(3) == .map$) {
  221.         if( .Challenger_aid == killerrid ) {
  222.             OnWin(.challenger_point);
  223.         }
  224.             else
  225.         {
  226.             OnWin(.challengee_point);
  227.         }
  228.     }
  229. end;
  230.  
  231.     function    OnEndWager  {
  232.         sleep 1000;
  233.         mapwarp .map$,"prontera",155,150,0;
  234.             .Challenger_aid = 0;
  235.             .Challengee_aid = 0;
  236.             .Challenger_cid = 0;
  237.             .Challengee_cid = 0;
  238.             .item_bet_amount = 0;
  239.             .Challengee$ = "";
  240.             .Challenger$ = "";
  241.             .wager = 0;
  242.             .ZBet = 0;
  243.             .challengee_point = .challenger_point = 0;
  244.     return;
  245.     }
  246.    
  247.     function    OnWin   {
  248.         set getarg(0), getarg(0) + 1;
  249.         if(getarg(0) == 2 )
  250.             {
  251.                 announce "[ @wager ] : Congrats! "+strcharinfo(0)+" won the wager match",0;
  252.                 dispbottom "You have received "+(2*.ZBet)+"z from bet.";
  253.                 zeny = zeny + (2*.ZBet);
  254.                 getitem .item_bet, (2*.item_bet_amount);
  255.                 sleep 1000;
  256.                 recovery 3,.map$,4;
  257.                 OnEndWager;
  258.                 end;
  259.             }
  260.             donpcevent strnpcinfo(0)+"::OnDieHeal";
  261.         return;
  262.     }
  263.  
  264. OnInit:
  265.     // Start of config
  266.     .item_bet = 7539;                       // Item used for bet
  267.     .map$ = "force_5-1";                    // Map name
  268.     setarray .challenger_coord, 75, 100;    // Challenger Map coord <X>, <Y>
  269.     setarray .challengee_coord, 125, 100;   // Challengee Map coord <X>, <Y>
  270.     .min_bet = 50000;                       // Minimum Zeny Bet
  271.     .min_bet_item = 5;                      // Minimum Item Bet
  272.     // End of config
  273.     OnEndWager;
  274.     setarray .mapflag,
  275.         mf_nowarp,  mf_nowarpto,        mf_nosave,
  276.         mf_nomemo,  mf_noteleport,      mf_nopenalty,
  277.         mf_noreturn,    mf_nobranch,        mf_nomobloot,
  278.         mf_nomvploot,   MF_NOZENYPENALTY,   MF_NOTRADE,
  279.         MF_NOCOMMAND;
  280.     for ( .@f = 0; .@f < .@size; .@f++ ) setmapflag .map$, .mapflag[.@f];  
  281.     bindatcmd("wager",strnpcinfo(0)+"::OnCommand");
  282.     end;
  283. }
  284.  
  285. -   shop    wager#shop  -1,501:50.
  286.  
  287. force_5-1   mapflag pvp
  288. force_5-1   mapflag pvp_noguild
  289. force_5-1   mapflag pvp_noparty
  290. force_5-1   mapflag nowarp
  291. force_5-1   mapflag nowarpto
  292. force_5-1   mapflag nosave
  293. force_5-1   mapflag nomemo
  294. force_5-1   mapflag noteleport
  295. force_5-1   mapflag nopenalty
  296. force_5-1   mapflag noreturn
  297. force_5-1   mapflag nobranch
  298. force_5-1   mapflag nomobloot
  299. force_5-1   mapflag nomvploot
  300. force_5-1   mapflag NOZENYPENALTY
  301. force_5-1   mapflag NOTRADE
  302. force_5-1   mapflag NOCOMMAND
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement