Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/02/23 in all areas

  1. //===== rAthena Script ============================================ //= Party vs Party //===== By: ======================================================= //= AnnieRuru //===== Current Version: ========================================== //= 0.2 //===== Compatible With: ========================================== //= rathena 2020-09-23 //===== Description: ============================================== //= GM has to manually pick which 2 party to fight //===== Topic ===================================================== //= https://rathena.org/board/topic/125939-looking-for-a-tournament-npc-sytem-pt-vs-pt/ //===== Additional Comments: ====================================== //= came over to rathena forum for a while, glad to see potential members on the other side //================================================================= prontera,155,177,5 script PartyVsParty 100,{ goto OnWarStart; end; OnInit: .eventlasting = 60; // 60 seconds .partysize = 1; bindatcmd "startmatch", strnpcinfo(3)+"::OnWarStart", 99,99; setarray .available_type$, " ^00FF00Available^000000", " ^FF0000Unavailable^000000", " ^FF0000Offline^000000"; setmapflag "guild_vs3", mf_battleground, 2; setmapflag "guild_vs3", mf_nosave; setmapflag "guild_vs3", mf_nomemo; setmapflag "guild_vs3", mf_nowarp; setmapflag "guild_vs3", mf_nowarpto; setmapflag "guild_vs3", mf_noteleport; setmapflag "guild_vs3", mf_nopenalty; end; OnWarStart: if (.start) { mes "The match is in progress ..."; mes "The current score is "+ .partyAscore +":"+ .partyBscore; mes "Terminate ?"; next; if (select("No", "Yes") == 1) close; if (select("Yes", "No") == 2) close; .skip = true; awake strnpcinfo(0); close; } mes "Welcome, what do you want to do?"; callsub L_display_party_members, .partyA, "A"; callsub L_display_party_members, .partyB, "B"; next; switch(select("Set Party Size", "Select Party A", "Select Party B", "Start Match")) { case 1: mes "input exact party size"; mes "if 3vs3, input 3"; next; input .partysize, 1, 12; goto OnWarStart; case 2: .partyA = callsub(L_select_party, "A", .partyA, .partyB); goto OnWarStart; case 3: .partyB = callsub(L_select_party, "B", .partyB, .partyA); goto OnWarStart; case 4: .@conditions = 0; .@conditions += callsub(L_check_party_conditions, .partyA, "A"); .@conditions += callsub(L_check_party_conditions, .partyB, "B"); if (.@conditions < 2 || .start) goto OnWarStart; else goto L_start; } close; L_display_party_members: if (!getarg(0)) mes "Party "+ getarg(1) +" = ^FF0000None^000000"; else { getpartymember getarg(0), 0; getpartymember getarg(0), 1; getpartymember getarg(0), 2; .@origin = getcharid(3); .@online = .@unavailable = 0; for (.@i = 0; .@i < $@partymembercount; ++.@i) { if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) { attachrid $@partymemberaid[.@i]; if (getmapflag(strcharinfo(3), mf_nowarp)) { .@type[.@i] = 1; ++.@online; ++.@unavailable; } else { .@type[.@i] = 0; ++.@online; } } else .@type[.@i] = 2; } attachrid .@origin; mes "Party "+ getarg(1) +" = ["+ getpartyname(.partyA) +"] "+( ($@partymembercount == .partysize && .@online == .partysize && !.@unavailable)? "^00FF00Ready": "^FF0000Not Qualify" )+"^000000"; mes "Online = "+ .@online +((.@unavailable)? ", Unavailable = "+ .@unavailable : ""); for (.@i = 0; .@i < $@partymembercount; ++.@i) mes "- "+ $@partymembername$[.@i] + .available_type$[.@type[.@i]]; } return; L_select_party: mes "input a player name"; input .@tmp$; if (getcharid(3, .@tmp$) == 0) { mes "player not available"; next; return getarg(1); } .@partyid = getcharid(1, .@tmp$); if (!.@partyid) { mes "that player doesn't have a party"; next; return getarg(1); } if (.@partyid == getarg(2)) { mes "that player is a member on the other party"; next; return getarg(1); } mes "are you sure you want the party"; mes getpartyname(.@partyid) +" as Party "+ getarg(0) +"?"; next; if (select("Yes","No") == 2) return getarg(1); return .@partyid; L_check_party_conditions: if (!getarg(0)) { mes "Party"+ getarg(1) +" hasn't been configure"; next; return false; } getpartymember getarg(0), 0; getpartymember getarg(0), 1; getpartymember getarg(0), 2; .@origin = getcharid(3); for (.@i = 0; .@i < $@partymembercount; ++.@i) { if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) { attachrid $@partymemberaid[.@i]; ++.@online; if (getmapflag(strcharinfo(3), mf_nowarp)) .@index[.@c++] = .@i; } } attachrid .@origin; if ($@partymembercount != .partysize) { mes "Party"+ getarg(1) +" has changed its party size"; next; return false; } if (!.@online) { mes "Party"+ getarg(1) +" don't have any players online at the moment"; next; return false; } if (.@online != .partysize) { mes "Party"+ getarg(1) +" has a few members gone offline"; next; return false; } if (.@c > 0) { mes "Party"+ getarg(1) +" has "+ .@c +" party members not ready, still attending on other event maps"; for (.@i = 0; .@i < .@c; ++.@i) mes "- "+ $@partymembername$[.@index[.@i]]; next; return false; } return true; L_register_bg_party: getpartymember getarg(0), 1; getpartymember getarg(0), 2; for (.@i = 0; .@i < $@partymembercount; ++.@i) { if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) { bg_join getarg(4), "guild_vs3", getarg(2), getarg(3), $@partymembercid[.@i]; set getarg(1), getarg(1) +1; } } return; L_start: .start = true; announce "Party Vs Party : ["+ getpartyname(.partyA) +"] VS ["+ getpartyname(.partyB) +"]", bc_all; .partyAid = bg_create( "guild_vs3", 13,50, strnpcinfo(0)+"::OnpartyAQuit", strnpcinfo(0)+"::OnpartyADead" ); .partyBid = bg_create( "guild_vs3", 86,50, strnpcinfo(0)+"::OnpartyBQuit", strnpcinfo(0)+"::OnpartyBDead" ); callsub L_register_bg_party, .partyA, .partyAscore, 13,50, .partyAid; callsub L_register_bg_party, .partyB, .partyBscore, 86,50, .partyBid; bg_updatescore "guild_vs3", .partyAscore, .partyBscore; setwall "guild_vs3", 19,55, 12, DIR_SOUTH, false, "partyvspartyA"; setwall "guild_vs3", 80,55, 12, DIR_SOUTH, false, "partyvspartyB"; sleep 3000; for (.@i = 5; .@i > 0; --.@i) { mapannounce "guild_vs3", "["+ .@i +"]", bc_map; if (!.skip) sleep 1000; } mapannounce "guild_vs3", "Start!", bc_map; delwall "partyvspartyA"; delwall "partyvspartyB"; if (!.skip) sleep .eventlasting * 1000; if ( .partyAscore > .partyBscore ) { mapannounce "guild_vs3", "Party ["+ getpartyname(.partyA) +"] is victorious!", bc_map; callsub L_Reward, .partyAid; } else if ( .partyBscore > .partyAscore ) { mapannounce "guild_vs3", "Party ["+ getpartyname(.partyB) +"] is victorious!", bc_map; callsub L_Reward, .partyBid; } else mapannounce "guild_vs3", "- The match has ended in a draw! -", bc_map; bg_warp .partyAid, "prontera",152,178; bg_warp .partyBid, "prontera",154,178; bg_destroy .partyAid; bg_destroy .partyBid; .start = .skip = false; .partyAscore = .partyBscore = 0; end; L_Reward: bg_get_data getarg(0), 1; for ( .@i = 0; .@i < $@arenamemberscount; ++.@i ) getitem 512, 1, $@arenamembers[.@i]; return; OnpartyADead: callsub L_Dead, .partyAscore; OnpartyBDead: callsub L_Dead, .partyBscore; L_Dead: set getarg(0), getarg(0) -1; bg_updatescore "guild_vs3", .partyAscore, .partyBscore; bg_leave; if (!getarg(0)) { .skip = true; awake strnpcinfo(0); } end; OnpartyAQuit: callsub L_Quit, .partyAscore; OnpartyBQuit: callsub L_Quit, .partyBscore; L_Quit: set getarg(0), getarg(0) -1; bg_updatescore "guild_vs3", .partyAscore, .partyBscore; percentheal 100, 100; if (!getarg(0)) { .skip = true; awake strnpcinfo(0); } end; }
    1 point
  2. Version 1.0.0

    160 downloads

    Sprite simples, para quem quiser.
    Free
    1 point
  3. Version 1.0.2

    8897 downloads

    ~ Keep calm and use it on your server ~ ~ Don't claim my work as yours please and etc ~ ~ Any requests/reports - https://rathena.org/board/profile/47250-w0wzukubg/
    Free
    1 point
×
×
  • Create New...