Name | Type | is_array | initial_value |
test | unit | No |
//TESH.scrollpos=53
//TESH.alwaysfold=0
library materials initializer onInit
globals
integer totalMaterials = 0
materials array matlist
integer array solditems
trigger onItemSell
endglobals
function AddMaterial takes integer matA, integer matB, integer rwrd , integer NeededA, integer NeededB, unit shop returns nothing
set matlist[totalMaterials] = materials.create()
set matlist[totalMaterials].shopunit = shop
set matlist[totalMaterials].materialA = matA
set matlist[totalMaterials].materialB = matB
set matlist[totalMaterials].reward = rwrd
set matlist[totalMaterials].NeededA = NeededA
set matlist[totalMaterials].NeededB = NeededB
set matlist[totalMaterials].totalA = 0
set matlist[totalMaterials].totalB = 0
set totalMaterials = totalMaterials + 1
endfunction
struct materials
integer materialA = 0
integer materialB = 0
integer reward = 0
integer totalA = 0
integer totalB = 0
integer NeededA = 0
integer NeededB = 0
unit shopunit = null
endstruct
function onSell takes nothing returns nothing
local integer i = 0
local integer imax = totalMaterials
call BJDebugMsg("Item sold")
loop
exitwhen i == imax
if GetItemTypeId(GetSoldItem()) == matlist[i].materialA then
set matlist[i].totalA = matlist[i].totalA + 1
//call BJDebugMsg("Item type A sold")
endif
if GetItemTypeId(GetSoldItem()) == matlist[i].materialB then
set matlist[i].totalB = matlist[i].totalB + 1
// call BJDebugMsg("Item type B sold")
endif
if matlist[i].totalA >= matlist[i].NeededA and matlist[i].totalB >= matlist[i].NeededB then
// call BJDebugMsg("Item added to shop")
call AddItemToStock(matlist[i].shopunit ,matlist[i].reward, 1, 1)
set matlist[i].totalA = 0
set matlist[i].totalB = 0
endif
set i = i+1
endloop
endfunction
private function onInit takes nothing returns nothing
//call BJDebugMsg("Initializing")
set onItemSell = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(onItemSell, EVENT_PLAYER_UNIT_PAWN_ITEM)
call TriggerAddAction(onItemSell, function onSell)
endfunction
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
scope additems initializer oninit
private function oninit takes nothing returns nothing
call AddMaterial('I001', 'I000', 'I002', 2,2, gg_unit_ngme_0001)
endfunction
endscope
//TESH.scrollpos=12
//TESH.alwaysfold=0
library paradigm initializer onInit
globals
constant integer ParadigmId = 'A000'
string paraboardtitle = "Paradigm shift"
trigger onCast
classstats array CharClasses
integer totalclasses = 0
Multiboard array paradigmboard
boolean array openboard
integer currentitem = 0
endglobals
struct classstats
integer ability1 = 0
integer ability2 = 0
integer ability3 = 0
integer ability4 = 0
integer ability5 = 0
integer ability6 = 0
integer ability7 = 0
string classname =""
string classdesc1= ""
string icon = ""
endstruct
function AddClass takes string icon ,string name, string desc, integer Abil1, integer Abil2, integer Abil3, integer Abil4, integer Abil5, integer Abil6, integer Abil7 returns nothing
local integer i
set i = totalclasses
set totalclasses = totalclasses + 1
set CharClasses[i] = classstats.create()
set CharClasses[i].ability1 = Abil1
set CharClasses[i].ability2 = Abil2
set CharClasses[i].ability3 = Abil3
set CharClasses[i].ability4 = Abil4
set CharClasses[i].ability5 = Abil5
set CharClasses[i].ability6 = Abil6
set CharClasses[i].ability7 = Abil7
set CharClasses[i].classname = name
set CharClasses[i].classdesc1 = desc
set CharClasses[i].icon = icon
endfunction
function paraboard takes player p returns nothing
local integer i = 0
local integer imax = totalclasses
set paradigmboard[GetPlayerId(p)] = Multiboard.create(2,totalclasses)
call paradigmboard[GetPlayerId(p)].setTitleText(paraboardtitle)
call paradigmboard[GetPlayerId(p)].setItemWidth(1,-1,.25)
call paradigmboard[GetPlayerId(p)].setItemWidth(0,-1,.10)
call BJDebugMsg("Entering loop")
loop
exitwhen i == imax
call BJDebugMsg("Starting loop")
call paradigmboard[GetPlayerId(p)].setItemIcon(0,i,CharClasses[i].icon)
call paradigmboard[GetPlayerId(p)].setItemValue(1,i,CharClasses[i].classdesc1 )
call paradigmboard[GetPlayerId(p)].setItemValue(0,i,CharClasses[i].classname )
set i = i+1
endloop
call paradigmboard[GetPlayerId(p)].setItemColor(-1,0,0,0,255,0)
set currentitem = 0
call paradigmboard[GetPlayerId(p)].display(true)
endfunction
function checkboardstatus takes player p, unit u returns nothing
if openboard[GetPlayerId(p)] == false then
call paraboard(p)
call SetCameraTargetController(u,0,0,false)
set openboard[GetPlayerId(p)] = true
else
call paradigmboard[GetPlayerId(p)].display(false)
call ResetToGameCameraForPlayer(p,0)
set openboard[GetPlayerId(p)] = false
endif
endfunction
function ParadigmCast takes nothing returns nothing
if GetSpellAbilityId() == ParadigmId then
call BJDebugMsg("Spell cast")
//call paraboard(GetOwningPlayer(GetSpellAbilityUnit()))
call checkboardstatus(GetOwningPlayer(GetSpellAbilityUnit()), GetSpellAbilityUnit())
endif
endfunction
private function onInit takes nothing returns nothing
local integer playeri
call BJDebugMsg("Init")
set onCast = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(onCast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddAction(onCast, function ParadigmCast)
loop
exitwhen playeri == 12
set openboard[playeri] = false
set playeri = playeri+ 1
endloop
endfunction
endlibrary
//TESH.scrollpos=51
//TESH.alwaysfold=0
library Multiboard
//Configurables:
globals
private constant integer MAX_COLUMN_COUNT = 16
private constant integer MAX_ROW_COUNT = 16
endglobals
//======================================================================================
globals
private constant integer MAX_COUNT = MAX_COLUMN_COUNT * MAX_ROW_COUNT //Don't Touch
endglobals
struct Multiboard
private multiboard which
private multiboarditem array MBIZ[MAX_COUNT] //MultiBoardItemZ (Z stands for Array)
private integer columnCount
private integer rowCount
//======================================================================================
//======================================================================================
static method create takes integer columnCount, integer rowCount returns Multiboard
//Creates a new Multiboard and sets up the columns and rows.
local Multiboard this = Multiboard.allocate()
local integer i = 0
local integer j = 0
set .which = CreateMultiboard()
set .columnCount = columnCount
set .rowCount = rowCount
call MultiboardSetColumnCount(.which,columnCount)
call MultiboardSetRowCount(.which,rowCount)
loop
exitwhen i > .columnCount
loop
exitwhen j > .rowCount
set .MBIZ[i * MAX_ROW_COUNT + j] = MultiboardGetItem(.which,j,i)
set j = j + 1
endloop
set j = 0
set i = i + 1
endloop
return this
endmethod
private method onDestroy takes nothing returns nothing
//Cleans up the Multiboard and related items
local integer i = 0
local integer j
loop
exitwhen i > .columnCount
set j = 0
loop
exitwhen j > .rowCount
call MultiboardReleaseItem(.MBIZ[i * MAX_ROW_COUNT + j])
set j = j + 1
endloop
set i = i + 1
endloop
call MultiboardClear(.which)
call DestroyMultiboard(.which)
endmethod
method clear takes nothing returns nothing
call MultiboardClear(.which)
endmethod
//======================================================================================
//======================================================================================
method display takes boolean flag returns nothing
call MultiboardDisplay(.which,flag)
endmethod
method displayToPlayer takes player whichPlayer, boolean flag returns nothing
//Displays the multiboard to a specified player.
call MultiboardDisplay(.which,(GetLocalPlayer() == whichPlayer) and flag)
endmethod
method minimize takes boolean flag returns nothing
call MultiboardMinimize(.which,flag)
endmethod
method minimizeForPlayer takes player whichPlayer, boolean flag returns nothing
//Minimizes the multiboard for a specified player.
call MultiboardMinimize(.which,(GetLocalPlayer() == whichPlayer) and flag)
endmethod
static method suppress takes boolean flag returns nothing
call MultiboardSuppressDisplay(flag)
endmethod
static method suppressForPlayer takes player p, boolean flag returns nothing
//Suppresses all multiboards for a specified player
call MultiboardSuppressDisplay((GetLocalPlayer() == p) and flag)
endmethod
//======================================================================================
method setColumnCount takes integer count returns nothing
//Changes the specified amount of columns. Does not need to be run on Multiboard Init.
//If the amount is less than the previous amount, it will clean up leaks
local integer i
local integer j = 0
if count > MAX_COLUMN_COUNT then
set count = MAX_COLUMN_COUNT
endif
call MultiboardSetColumnCount(.which,count)
if count < .columnCount then
loop
exitwhen j > .rowCount
set i = count
loop
exitwhen i > .columnCount
call MultiboardReleaseItem(.MBIZ[i * MAX_ROW_COUNT + j])
set i = i + 1
endloop
set j = j + 1
endloop
endif
set .columnCount = count
endmethod
method getColumnCount takes nothing returns integer
return .columnCount
endmethod
method setRowCount takes integer count returns nothing
//Changes the specified amount of rows. Does not need to be run on Multiboard Init.
//If the amount is less than the previous amount, it will clean up leaks
local integer i = 0
local integer j
if count > MAX_ROW_COUNT then
set count = MAX_ROW_COUNT
endif
call MultiboardSetRowCount(.which,count)
if count < .rowCount then
loop
exitwhen i > .columnCount
set j = count
loop
exitwhen j > .rowCount
call MultiboardReleaseItem(.MBIZ[i * MAX_ROW_COUNT + j])
set j = j + 1
endloop
set i = i + 1
endloop
endif
set .rowCount = count
endmethod
method getRowCount takes nothing returns integer
return .rowCount
endmethod
//======================================================================================
method setTitleText takes string label returns nothing
call MultiboardSetTitleText(.which,label)
endmethod
method setTitleTextColor takes integer red, integer green, integer blue, integer alpha returns nothing
call MultiboardSetTitleTextColor(.which,red,green,blue,alpha)
endmethod
method setItemValue takes integer column, integer row, string val returns nothing
//Works similar to the MultiboardSetItem* functions.
//However, a value of 0 refers to the first column/row, -1 refers to all columns/rows
//Using a Column or Row higher than the current max will result in the function not doing anything.
local integer curCol = 0
local integer curRow = 0
if column > .columnCount or row > .rowCount then
return
endif
if column == -1 or row == -1 then
if column == -1 and row == -1 then
call MultiboardSetItemsValue(.which,val)
return
elseif column == -1 then
loop
exitwhen curCol > .columnCount
call MultiboardSetItemValue(.MBIZ[curCol * MAX_ROW_COUNT + row],val)
set curCol = curCol + 1
endloop
return
else
loop
exitwhen curRow > .rowCount
call MultiboardSetItemValue(.MBIZ[column * MAX_ROW_COUNT + curRow],val)
set curRow = curRow + 1
endloop
return
endif
endif
call MultiboardSetItemValue(.MBIZ[column * MAX_ROW_COUNT + row],val)
endmethod
method setItemColor takes integer column, integer row, integer red, integer green, integer blue, integer alpha returns nothing
//Works similar to the MultiboardSetItem* functions.
//However, a value of 0 refers to the first column/row, -1 refers to all columns/rows
//Using a Column or Row higher than the current max will result in the function not doing anything.
local integer curCol = 0
local integer curRow = 0
if column > .columnCount or row > .rowCount then
return
endif
if column == -1 or row == -1 then
if column == -1 and row == -1 then
call MultiboardSetItemsValueColor(.which,red,green,blue,alpha)
return
elseif column == -1 then
loop
exitwhen curCol > .columnCount
call MultiboardSetItemValueColor(.MBIZ[curCol * MAX_ROW_COUNT + row],red,green,blue,alpha)
set curCol = curCol + 1
endloop
return
else
loop
exitwhen curRow > .rowCount
call MultiboardSetItemValueColor(.MBIZ[column * MAX_ROW_COUNT + curRow],red,green,blue,alpha)
set curRow = curRow + 1
endloop
return
endif
endif
call MultiboardSetItemValueColor(.MBIZ[column * MAX_ROW_COUNT + row],red,green,blue,alpha)
endmethod
method setItemWidth takes integer column, integer row, real width returns nothing
//Works similar to the MultiboardSetItem* functions.
//However, a value of 0 refers to the first column/row, -1 refers to all columns/rows
//Using a Column or Row higher than the current max will result in the function not doing anything.
local integer curCol = 0
local integer curRow = 0
if column > .columnCount or row > .rowCount then
return
endif
if column == -1 or row == -1 then
if column == -1 and row == -1 then
call MultiboardSetItemsWidth(.which,width)
return
elseif column == -1 then
loop
exitwhen curCol > .columnCount
call MultiboardSetItemWidth(.MBIZ[curCol * MAX_ROW_COUNT + row],width)
set curCol = curCol + 1
endloop
return
else
loop
exitwhen curRow > .rowCount
call MultiboardSetItemWidth(.MBIZ[column * MAX_ROW_COUNT + curRow],width)
set curRow = curRow + 1
endloop
return
endif
endif
call MultiboardSetItemWidth(.MBIZ[column * MAX_ROW_COUNT + row],width)
endmethod
method setItemIcon takes integer column, integer row, string iconFileName returns nothing
//Works similar to the MultiboardSetItem* functions.
//However, a value of 0 refers to the first column/row, -1 refers to all columns/rows
//Using a Column or Row higher than the current max will result in the function not doing anything.
local integer curCol = 0
local integer curRow = 0
if column > .columnCount or row > .rowCount then
return
endif
if column == -1 or row == -1 then
if column == -1 and row == -1 then
call MultiboardSetItemsIcon(.which,iconFileName)
return
elseif column == -1 then
loop
exitwhen curCol > .columnCount
call MultiboardSetItemIcon(.MBIZ[curCol * MAX_ROW_COUNT + row],iconFileName)
set curCol = curCol + 1
endloop
return
else
loop
exitwhen curRow > .rowCount
call MultiboardSetItemIcon(.MBIZ[column * MAX_ROW_COUNT + curRow],iconFileName)
set curRow = curRow + 1
endloop
return
endif
endif
call MultiboardSetItemIcon(.MBIZ[column * MAX_ROW_COUNT + row],iconFileName)
endmethod
method setItemStyle takes integer column, integer row, boolean showValue, boolean showIcon returns nothing
//Works similar to the MultiboardSetItem* functions.
//However, a value of 0 refers to the first column/row, -1 refers to all columns/rows
//Using a Column or Row higher than the current max will result in the function not doing anything.
local integer curCol = 0
local integer curRow = 0
if column > .columnCount or row > .rowCount then
return
endif
if column == -1 or row == -1 then
if column == -1 and row == -1 then
call MultiboardSetItemsStyle(.which,showValue,showIcon)
return
elseif column == -1 then
loop
exitwhen curCol > .columnCount
call MultiboardSetItemStyle(.MBIZ[curCol * MAX_ROW_COUNT + row],showValue,showIcon)
set curCol = curCol + 1
endloop
return
else
loop
exitwhen curRow > .rowCount
call MultiboardSetItemStyle(.MBIZ[column * MAX_ROW_COUNT + curRow],showValue,showIcon)
set curRow = curRow + 1
endloop
return
endif
endif
call MultiboardSetItemStyle(.MBIZ[column * MAX_ROW_COUNT + row],showValue,showIcon)
endmethod
//======================================================================================
//======================================================================================
//======================================================================================
method isDisplayed takes nothing returns boolean
return IsMultiboardDisplayed(.which)
endmethod
method isMinimized takes nothing returns boolean
return IsMultiboardMinimized(.which)
endmethod
endstruct
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
//function AddClass takes string icon,string name, string desc, integer Abil1, integer Abil2, integer Abil3, integer Abil4, integer Abil5, integer Abil6, integer Abil7 returns nothing
scope ClassCreation initializer onInit
function onInit takes nothing returns nothing
call AddClass ("ReplaceableTextures\\CommandButtons\\BTNHeroArchMage.blp", "Mage", "Uses ancient magic to deal damage", 0, 0,0,0,0,0,0)
call AddClass ("ReplaceableTextures\\CommandButtons\\BTNMercenaryCamp.blp", "my rofl copter", "it goes soi soi soi", 0, 0,0,0,0,0,0)
endfunction
endscope
//TESH.scrollpos=0
//TESH.alwaysfold=0
private function ParseString takes string toparse, integer i returns nothing
local integer s = 0
local integer line = 0
local integer linestart = 0
local integer spacepoint = 0
local boolean next = false
loop
exitwhen s > 28
call MultiboardSetItemValueBJ( board[i], 2, 9+s, "")
set s = s+ 1
endloop
set s = 0
loop
exitwhen linestart+s > StringLength(toparse)
set s = s+1
if SubString(toparse,linestart+s-1,linestart+s) == " " then
set spacepoint = linestart+s
endif
if SubString(toparse,linestart+s-StringLength(NewLine),linestart+s) == NewLine then
set spacepoint = linestart+s-StringLength(NewLine)
set s = maxchars
set next = true
endif
if s >= maxchars then
call MultiboardSetItemValueBJ( board[i], 2, 9+line, description + SubString(toparse,linestart,spacepoint ) + "|r" )
set linestart = spacepoint
set spacepoint = linestart
set s = 0
set line = line + 1
if next then
set next = false
set linestart = linestart + StringLength(NewLine)
endif
endif
endloop
call MultiboardSetItemValueBJ( board[i], 2, 9+line, description + SubString(toparse,linestart,StringLength(toparse) ) + "|r" )
endfunction
function Trig_Untitled_Trigger_001_Actions takes nothing returns nothing
call MultiboardSetItemValueBJ( GetLastCreatedMultiboard(), 1, 1, "TRIGSTR_009" )
endfunction
//===========================================================================
function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
set gg_trg_Untitled_Trigger_001 = CreateTrigger( )
call TriggerAddAction( gg_trg_Untitled_Trigger_001, function Trig_Untitled_Trigger_001_Actions )
endfunction
function Trig_Untitled_Trigger_002_Actions takes nothing returns nothing
call ResetToGameCameraForPlayer( GetOwningPlayer(GetSpellAbilityUnit()), 0 )
endfunction
//===========================================================================
function InitTrig_Untitled_Trigger_002 takes nothing returns nothing
set gg_trg_Untitled_Trigger_002 = CreateTrigger( )
call TriggerAddAction( gg_trg_Untitled_Trigger_002, function Trig_Untitled_Trigger_002_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Untitled_Trigger_003_Actions takes nothing returns nothing
endfunction
//===========================================================================
function InitTrig_Untitled_Trigger_003 takes nothing returns nothing
set gg_trg_Untitled_Trigger_003 = CreateTrigger( )
call TriggerAddAction( gg_trg_Untitled_Trigger_003, function Trig_Untitled_Trigger_003_Actions )
endfunction