GetLocalPlayer and units?

Skippy

Active Member
Reaction score
39
Hi,
Is there any way to hide / kill / remove unit only for one player (using GetLocalPlayer) ? I create a dummy unit with some explosion model and I want it to show only for specific player.
I tried to just hide it like this:
JASS:

if (GetLocalPlayer() == GetOwningPlayer(GetTriggerUnit())) then
    call ShowUnit(GetTriggerUnit(), false)  
endif

But this doesn't work, it causes desynchronization.

Thanks for answers.
 

roaaaarrrr

New Member
Reaction score
33
Code:
function Test takes nothing returns nothing
    local string s = "war3mapImported\\FX.mdl"

    if GetLocalPlayer() == GetOwningPlayer(GetTriggerUnit()) then
        set s = ""
    endif
    call DestroyEffect(AddSpecialEffect(s,0.,0.))
endfunction

You could try doing it that way...
 

PurgeandFire

zxcvmkgdfg
Reaction score
508
Hi,
Is there any way to hide / kill / remove unit only for one player (using GetLocalPlayer) ? I create a dummy unit with some explosion model and I want it to show only for specific player.
I tried to just hide it like this:
JASS:

But this doesn't work, it causes desynchronization.

Thanks for answers.

Yep, it is pretty weird when it comes to displaying units locally. Once you interact/click the unit (I believe) it will desync. This is why it is normally avoided unless they have locust and don't interfere at all with anything/aren't interactable.

Code:
function Test takes nothing returns nothing
    local string s = "war3mapImported\\FX.mdl"

    if GetLocalPlayer() == GetOwningPlayer(GetTriggerUnit()) then
        set s = ""
    endif
    call DestroyEffect(AddSpecialEffect(s,0.,0.))
endfunction

You could try doing it that way...

^This is what I would suggest. But I think that'd cause the string table to desync if you use that string for the first time, so it'd be safer to do it like this:
JASS:
function Blah takes nothing returns nothing
    local string s = "war3mapImported\\yourmodel.mdl"
    if GetLocalPlayer() != GetOwningPlayer(GetTriggerUnit()) then
        set s = ""
    endif
    call DestroyEffect(AddSpecialEffect(s,x,y))
endfunction
 

roaaaarrrr

New Member
Reaction score
33
I've been told that the first way is safer, because calling a string inside the getlocalplayer could cause desyncs. Ive never personally had them with either method, so Im not positive tho...
 

Troll-Brain

You can change this now in User CP.
Reaction score
85
I don't think it would desynch.
Maybe in the past if you used the return bug to get the index of the string table using the return bug, and make some fancy stuff using it.

But now you can't get this index any-more, right ?
 

Lehona

New Member
Reaction score
12
Every string that wasn't used before will get tossed in the string-table, so doing it in a LocalPlayer-block will desync (But "" is already in the string-table (#2 or sth.) so there is no problem).
 

Troll-Brain

You can change this now in User CP.
Reaction score
85
Every string that wasn't used before will get tossed in the string-table, so doing it in a LocalPlayer-block will desync (But "" is already in the string-table (#2 or sth.) so there is no problem).
Proof it (i mean the desync , i already knew how strings are handled), last time i used it like that, it didn't desync.
You can create locally texttags, you can also locally "create" strings.

EDIT :
Oh and btw each version of wc3 (language) has already these own local strings. (check blizzard.j)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top