-
-
Save spentak/816d340200c7dafd7673e7f915b31b5b to your computer and use it in GitHub Desktop.
using { /Fortnite.com/Devices } | |
using { /Verse.org/Simulation } | |
using { /Fortnite.com/Teams } | |
using { /Fortnite.com/Game } | |
using { /Fortnite.com/Characters } | |
using { /UnrealEngine.com/Temporary/Diagnostics } | |
# This code is a UEFN Fortnite "Device" for managing a Gun Game feature | |
# where players fight online and get a new weapon after each elimination | |
# A Verse-authored creative device that can be placed in a level | |
game_manager := class(creative_device): | |
# Map data structure that stores players as the key | |
# and current WeaponTier as the value | |
var PlayerMap : [player]int = map{} | |
# Item granters stored in an array so we can give the player | |
# new weapons | |
@editable | |
var WeaponGranters : []item_granter_device = array{} | |
# Array of bots for beating up and testing | |
@editable | |
var Sentries : []sentry_device = array{} | |
# This is how we end the game later | |
@editable | |
EndGameDevice : end_game_device = end_game_device{} | |
# Needed to let the game know when to end | |
var ElimsToEndGame : int = 0 | |
# Runs when the device is started in a running game | |
OnBegin<override>()<suspends>:void= | |
set ElimsToEndGame = WeaponGranters.Length; | |
InitPlayers() | |
InitTestMode() | |
InitPlayers() : void= | |
AllPlayers := GetPlayspace().GetPlayers() | |
for (Player : AllPlayers, FortCharacter := Player.GetFortCharacter[]): | |
if (set PlayerMap[Player] = 0, WeaponTier := PlayerMap[Player]): | |
FortCharacter.EliminatedEvent().Subscribe(OnPlayerEliminated) | |
GrantWeapon(Player, WeaponTier) | |
GrantWeapon(Player : player, WeaponTier: int) : void= | |
Print("Attempting to grant weapon") | |
if (ItemGranter := WeaponGranters[WeaponTier]): | |
Print("Granted item to player") | |
ItemGranter.GrantItem(Player) | |
OnPlayerEliminated(Result : elimination_result) : void= | |
Eliminator := Result.EliminatingCharacter | |
if (FortCharacter := Eliminator?, EliminatingAgent := FortCharacter.GetAgent[]): | |
Print("We need to promote player") | |
PromotePlayer(Agent : agent) : void= | |
var WeaponTier : int = 0 | |
if (Player := player[Agent], PlayerWeaponTier := PlayerMap[Player]): | |
set WeaponTier = PlayerWeaponTier + 1 | |
CheckEndGame(Agent, WeaponTier) | |
if (Player := player[Agent], set PlayerMap[Player] = WeaponTier): | |
GrantWeapon(Player, WeaponTier) | |
InitTestMode() : void= | |
for (Sentry : Sentries): | |
Sentry.EliminatedEvent.Subscribe(TestPlayerElimination) | |
TestPlayerElimination(Agent : ?agent) : void= | |
Print("Sentry eliminated!") | |
if (Player := Agent?): | |
PromotePlayer(Player) | |
CheckEndGame(Player : agent, WeaponTier : int) : void= | |
if (WeaponTier >= ElimsToEndGame): | |
EndGameDevice.Activate(Player) |
It won't work when I'm fighting players, it only works when I fight a sentry bot. How can I fix it?
@DanielHalfeld
Can you put what exactly you wrote, I am unsure on where/ how to put it.
@DanielHalfeld
How exactly/ where exactly did you write this, could you post a ss?
I start with no weapons. Not sure why. Can someone tell me?
So I've copied this exactly into verse I've put drop items at players location to never as well as keep items on respawn but my issue is when you get a elim the gun dosnt change, but if you have a bot the guns do change is there a fix to this ?
Hi i just started using verse, i am confused on where to put it
The current code only applies to the sentry bot, not the player. When I eliminate a player, the weapon doesn't switch, but it does switch after eliminating a sentry bot. Additionally, new players who join mid-game don't receive a weapon. Could you please fix the code so that eliminating a player triggers a weapon switch and ensure that players joining mid-game also receive a weapon?
How to take it off test mode? everytime I upload, it only implys for the sentry only, but if I eliminate a player, there’s no weapon change for some reason… only when I eliminate the sentry bot.
Actually you don`t need to take test mode off, i only added one line on the "OnPlayerEliminated" function : PromotePlayer(EliminatingAgent)
have you figure out the code if so can please share it
Hey, so I copied the code exactly and my game didn't end...
The current code only applies to the sentry bot, not the player. When I eliminate a player, the weapon doesn't switch, but it does switch after eliminating a sentry bot. Additionally, new players who join mid-game don't receive a weapon. Could you please fix the code so that eliminating a player triggers a weapon switch and ensure that players joining mid-game also receive a weapon?
I changed the code and everything works as it should
@BaSSa8 are you able to share how to make players joining in progress.