GetLocalPlayer Possible Desync

CrackUps

New Member
Reaction score
7
Ok well i'm working on a map atm and i'm just wondering whether or not this use of GetLocalPlayer would cause any Desyncs.

Heres the trigger:
Purchase
Events
Unit - A unit Sells a unit
Conditions
(Unit-type of (Sold unit)) Equal to Select Hero
Actions
Custom script: set udg_LocalPlayer = GetLocalPlayer()
Unit - Remove (Sold unit) from the game
Selection - Clear selection for LocalPlayer
Player - Make Neutral Passive treat LocalPlayer as an Neutral
Set TempLoc = (LocalPlayer start location)
Camera - Pan camera for LocalPlayer to (LocalPlayer start location) over 0.00 seconds
Unit - Create 1 (Unit-type of (Triggering unit)) for LocalPlayer at TempLoc facing Default building facing degrees
Set TempLoc = (Position of (Last created unit))
Special Effect - Create a special effect at TempLoc using Abilities\Spells\Human\ReviveHuman\ReviveHuman.mdl
Set TempSFX = (Last created special effect)
Selection - Select (Last created unit) for LocalPlayer
Unit - Remove Sell Units from (Last created unit)
Unit - Remove Cargo Hold (Orc Burrow) from (Last created unit)
Unit - Add Inventory (Hero) to (Last created unit)
Custom script: call UnitAddAbilityBJ( 'Amov', GetLastCreatedUnit() )
Custom script: set udg_LocalPlayer = null
Custom script: call RemoveLocation(udg_TempLoc)
Special Effect - Destroy TempSFX

So far i haven't experienced anything unusual but i've only tested it in single player and not with anybody.
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
I'm not sure but storing GetLocalPlayer in a global variable sounds unhealthy.
I'd say some of the actions will surely desync. For example the Create Unit, Remove Ability, maybe the Create Sfx. Clear selection or Set camera might work.
 

Exide

I am amazingly focused right now!
Reaction score
448
I don't know what a desync is.. :p

Why aren't you using (Owner of (Triggering/Sold Unit))?
Would save you some lines. :p
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
A desync is when one of the players has different values stored in his game than others do. A desync usually kills your game or the player with invalid information.

GetLocalPlayer is a very likely source for desyncs because it always returns the player who is running the trigger, which is a different one for every machine (namely the player that plays on this machine).
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,495
> Clear selection or Set camera might work.

They will.
Though the selection will be send to other players too, hence the weird "lag" on the event "player ... selects a unit".

All of those "create" will fail miserably...
 

CrackUps

New Member
Reaction score
7
The game is set up so a player purchases a hero from a neutral unit so i couldnt use triggering unit or sold unit because theyd both be owned by neautral when i need them to be owned by the triggering player.
 

Exide

I am amazingly focused right now!
Reaction score
448
What about

Owner of (Buying Unit)?

Event - A Unit Enters *region*
?
 

CrackUps

New Member
Reaction score
7
Because there is no buying unit its a hero select at beginning of the game so the player isnt in control of any units.
 

Strilanc

Veteran Scripter
Reaction score
42
That trigger is going to desync in so many ways it's almost funny.

Changing the alliance of two players on only one machine will DEFINITELY desync two players. Creating and removing units for the local player is also INSANE. You're only allowed to do things that don't have an effect on the game or create handles, like showing a text message or changing visibilities or animating units.

In any case you don't need local player, just use the owner of the sold unit.
 

CrackUps

New Member
Reaction score
7
Nah i didnt want it to be sold from a tavern i wanted it to be sold by units i was just gonna do that but then couldnt be bothered making taverns cause then i have to do the button position and make descriptions of the heroes it just requires too much effort lol.
 

Exide

I am amazingly focused right now!
Reaction score
448
There's no difference between selling from a unit and selling from a hero, except what model and soundset the Selling Unit looks like..
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top