Frozenhelfir
set Gwypaas = Guhveepaws
- Reaction score
- 56
The variable in question is PROSP_MULT[5][12] initialized in the library. The value I've been testing is PROSP_MULT[0], where i is an index for each player in a loop. Clearly initialized in the library to be 1/8 (.125), the debug message begs to differ, reading out 0.000 The part of the scope with this variable is the very last part with all those comments around it :banghead:
I made a library to setup the globals for my trigger because for some reason doing it within the scope derailed all of my other initialization functions. This is the library:
This is the part of the scope that matters:
I made a library to setup the globals for my trigger because for some reason doing it within the scope derailed all of my other initialization functions. This is the library:
JASS:
//DISTRIBUTES GOLD FOR GOLD MINES, WELLS, FOUNTAINS
library GoldMWF initializer init uses GameModes
globals
constant integer MINE_ID = 039;hgtw039;
constant integer WELL_ID = 039;h00P039;
constant integer SLAYER_ID = 039;Hblm039;
constant integer PROSPER_CVAL = 103
constant integer PROSPER_HAMMER_ID = 039;I027039;
integer TIME = 0
integer array PROSPER_TECH
integer array PROSPER_MULT[5][12]
integer array PROSP_LEVEL[12]
real array PROSP_MULT[5][12]
unit array PROSPER_SLAYER
playerstate gold = PLAYER_STATE_RESOURCE_GOLD
playerstate lumber = PLAYER_STATE_RESOURCE_LUMBER
integer array MINE_COUNT[12]
integer array WELL_COUNT[12]
endglobals
private function init takes nothing returns nothing
local integer i
set PROSPER_TECH[0] = 0
set PROSPER_TECH[1] = 039;R00G039;
set PROSPER_TECH[2] = 039;R00I039;
set PROSPER_TECH[3] = 039;R00J039;
set PROSPER_TECH[4] = 039;R00K039;
loop
set PROSP_MULT[0]<i> = .125
set PROSP_MULT[1]<i> = .167
set PROSP_MULT[2]<i> = .25
set PROSP_MULT[3]<i> = .34
set PROSP_MULT[4]<i> = .67
set PROSP_LEVEL<i> = 0
set MINE_COUNT<i> = 0
set WELL_COUNT<i> = 0
exitwhen i >= 11
set i = i+1
endloop
call BJDebugMsg("ArrayInit end!") //this never pops up in game, but should it?
endfunction
endlibrary</i></i></i></i></i></i></i></i>
This is the part of the scope that matters:
JASS:
scope GoldMineWell initializer InitTrig
private function PERIODIC takes nothing returns nothing
local integer i = 0
local integer j = 0
local integer k = 0
local real DEBUG1 = 0
local real DEBUG2 = 0
local integer PROSP_TOTAL
set TIME = TIME + 5
if TIME == 60 then
set TIME = 0
loop
if udg_CCYES<i> == 1 then
call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD) + 30)
endif
if PROSPER_SLAYER<i> != null then
set PROSP_TOTAL = (MINE_COUNT<i> + 2 * WELL_COUNT<i>) * GOLD_MULT
call BJDebugMsg(I2S(PROSP_TOTAL) + " = PROSP TOTAL")
//real array PROSP_MULT[5][12]
//PROSP_LEVEL = 0 at this point, which should return 1/8 for PROSP_MULT for all Player(i)
//However the BJDebugMsg shows 0.000
//wtf??? it is clearly initialized in my library -_-
set DEBUG1 = PROSP_MULT[PROSP_LEVEL<i>]<i> //<=====THIS ONE WONT F*ING WORK
call BJDebugMsg(R2S(DEBUG1) + " = DEBUG1") //<=== IT READS ZERO BUT IT SHOULD BE 1/8 or .125 ARRRG</i></i></i></i></i></i>