Discussion Constant Player Red?

tooltiperror

Super Moderator
Staff member
Is there a constant player variable for player one?
 

Bribe

vJass errors are legion
No, there isn't. I don't believe you can initialize players in the globals block, but it's OK because constant handle-based variables are essentially the same speed as dynamic ones.

You can do:

JASS:
globals
    player pRed = null
endglobals

scope InitPlayerRed initializer Init
    private function Init takes nothing returns nothing
        set pRed= Player(0)
    endfunction
endscope
 
Or you can just do

JASS:
globals
    player playerOne = Player(0)
endglobals



A constant would return Player(0) in vjass from inlining, so like

[ljass]DisplayTestToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(PLAYER_ONE))[/ljass]

would be like

[ljass]DisplayTestToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(Player(0)))[/ljass]

rather than using the variable

Ofc if you want to do a readonly style with OOP ^.^

JASS:
struct Players extends array
    public static readonly playerOne = Player(0)
endstruct


edit
Furthermore, without inlining, constants are the same speed as regular variables ; P.
 

Jesus4Lyf

Good Idea™
A constant would return Player(0) in vjass from inlining, so like

[ljass]DisplayTestToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(PLAYER_ONE))[/ljass]

would be like

[ljass]DisplayTestToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(Player(0)))[/ljass]

rather than using the variable
Have you tried and tested that?
 

uberfoop

~=Admiral Stukov=~
Have you tried and tested that?
This:

Untitled Trigger 001 in JNGP:
JASS:

globals
    constant player playerOne = Player(0)
endglobals

function RAWR takes nothing returns nothing
    call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(playerOne))
endfunction


Becomes these:

Part of war3map.j global box in JSP after compiling:
JASS:

constant player playerOne= Player(0)


war3map.j farther down in JSP after compiling:
JASS:

//===========================================================================
// Trigger: Untitled Trigger 001
//===========================================================================
//TESH.scrollpos=0
//TESH.alwaysfold=0

function RAWR takes nothing returns nothing
    call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, GetPlayerName(playerOne))
endfunction//===========================================================================
function InitCustomTriggers takes nothing returns nothing
    call InitTrig_StrSteal()
    //Function not found: call InitTrig_Untitled_Trigger_001()
endfunction
 
Ah ok o-o. I guess it does not inline native calls, or perhaps it inlines some and does not others o-o. Maybe only primitive values.

Eh w/e ^>^
 

Jesus4Lyf

Good Idea™
Nestharus, as far as I'm concerned, it was never true. I don't have any evidence that there was ever a bug in JassHelper about inlining constant handles (but perhaps there was), but you've been repeating it for the last year or so. I just wanted to know if you actually had any evidence or if you were just repeating unfounded misinformation again.
I don't believe you can initialize players in the globals block
Personally I even doubt that that's true. I'd assume this would work just fine:
JASS:
globals
    constant player PLAYER_ONE=Player(0)
endglobals

But have not tried it myself. :)
 
But have not tried it myself.
You can in fact initialize players in globals block ^.^. I do it all the time.

Nestharus, as far as I'm concerned, it was never true. I don't have any evidence that there was ever a bug in JassHelper about inlining constant handles (but perhaps there was), but you've been repeating it for the last year or so. I just wanted to know if you actually had any evidence or if you were just repeating unfounded misinformation again.
I apologize ; ), seem to keep forgetting about that with all of the work I've been doing o-o.
 

Troll-Brain

You can change this now in User CP.
But i have read that wc3mapoptimizer inlines all constants, regardless it's an handle or not (never tested, simply because never used it)
 
But i have read that wc3mapoptimizer inlines all constants, regardless it's an handle or not (never tested, simply because never used it)
Yea, that's what I had read too ; D.

- Added "Inline constant globals" method.
I was probably confusing jasshelper or w/e with wc3mapoptimizer since I always use the optimizer when I'm releasing a map ;o.

Anyways, the fact is that the optimizer would do it and not vjass, so I'd still be personally wrong ^.^.
 

uberfoop

~=Admiral Stukov=~
Can we have this tested? :)
I'll give it a shot.

It seems that Vexorians Optimizer inlines constants when "optimize script" AND "compress names" are both checked.


Anyhow...

Before:
JASS:

scope InlineTest
    globals
        constant real Real = 3.0
        constant integer Integer = 3
        constant string String = "Three"
        constant boolean Boolean = false
        constant player PLAYER = Player(0)
        constant unit UNIT = CreateUnit(Player(0),'hfoo',0,0,0)
        constant unit UNIT_TEST_ABOVE = CreateUnit(PLAYER,Integer,Real,Real,Real)
        constant unit UNIT_WEIRD = bj_lastCreatedUnit
    endglobals

    function TheGoodTheBadAndTheUgly_IsTheGreatestFilmEver takes nothing returns nothing
        local real r = Real
        local integer i = Integer
        local string s = String
        local boolean b = Boolean
        local player p = PLAYER
        local unit u = UNIT
        local unit uta = UNIT_TEST_ABOVE
        local unit uw = UNIT_WEIRD
    endfunction
endscope


After:
Map globals block (with interesting Optimizer-generated variables E, X, and I shown):
JASS:

globals
constant player e=Player(0)
constant unit x=CreateUnit(Player(0),'hfoo',0,0,0)
constant unit o=CreateUnit(e,3,3.,3.,3.)
constant unit a=bj_lastCreatedUnit
real E=.0
real X=.0
boolexpr I=null
endglobals


The function:
JASS:

function TheGoodTheBadAndTheUgly_IsTheGreatestFilmEver takes nothing returns nothing
local real r=3.
local integer i=3
local string s="Three"
local boolean b=false
local player p=e
local unit u=x
local unit uta=o
local unit uw=a
endfunction



It seems that the optimizer does not want to inline constant handles.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • tom_mai78101 tom_mai78101:
    Also fixed a bug, where I prevented the CPU fans from spinning wildly if I reverse the order of rendering and updating function calls in Pokemon Walking
  • The Helper The Helper:
    Is that going to be a full game now tom?
  • The Helper The Helper:
    what is this Ghan? https://enterprise.ghannet.com/ you are totally holding out on us my friend
  • Ghan Ghan:
    Not mine, I just ran the server. They let the domain expire but it was a cool project so I kept it alive there.
  • Ghan Ghan:
    Used to be enterpriserpg.com I think.
  • The Helper The Helper:
    If you go to the world editor tutorials site and click the starcraft link it takes you there :)
  • Ghan Ghan:
    lol
  • Ghan Ghan:
    I forgot about that alias name. (The full URL still went to the correct site.) That should be fixed.
  • Ghan Ghan:
    Silkroad Forums site really needs help.
  • Ghan Ghan:
    Its software has been out of support since 2017.
  • Ghan Ghan:
    The woes of using custom styles....
  • The Helper The Helper:
    does anyone still use silk road forums?
  • Ghan Ghan:
    It's about as active as here I'd say. Not much going on.
  • Wizard Wizard:
    I think it doesn't help that the silk road game isn't as popular any more I think. The only MMO I play these days is FFXIV like most other people I know.
  • The Helper The Helper:
    I checked a status page for players and it says the game has 500 daily players.
  • The Helper The Helper:
    I cannot believe that site is still going I wonder if Ryoko is involved with it at all would love to talk to him again and see what he is up to
  • The Helper The Helper:
    my oldest daughter failed her driving test today for her license she is 22 and yes I have been driving her everywhere her whole life
  • The Helper The Helper:
    Now they are blaming me on Facebook for her failure LOL I am accepting it because it is my failure I am her driving teacher even though she had certified driving instruction from the best place in town I for some reason cannot teach her how to drive this is frustrating
  • jonas jonas:
    I didn't get my license until I was 25
    +1
  • The Helper The Helper:
    Back in the old days when I was getting a license people were getting them at 16 yrs old and many were getting hardships so they could get them earlier. Almost nobody did not drive when they were able. Nowadays though....
  • Ghan Ghan:
    Why drive when there's Uber Eats?
    +2
  • The Helper The Helper:
    I hope Varine is OK have not heard from him in a while.
    +1
  • Ghan Ghan:
    Diablo 2 Resurrected launching in 9 days.
  • The Helper The Helper:
    Just got a new to me computer hope it will run it

    Members online

    Affiliates

    Hive Workshop NUON Dome
    Top