- Joined
- Sep 24, 2007
- Messages
- 283
Function inside JASS trigger couldn't be found.
Well i am working on my map over about 1 month. On the third day i added Multiboard system. I worked perfectly. And today isave the map and i have that error: "Can't find the name of the function". Well i didnt undestand that but i checked the JASS trigger with that function. It was there and is the same as old version's of my map, trigger.
so here is my native to make the icon in multiboard to be setted depends on your char.
The whole code of Multiboard trigger. It worked but now something is wrong. I am using 1.20 patch.
Here is the exactly function i have problem with:
Also here is my MAP SCRIPT requered to for this multiboard system:
- Nahm , thx
Well i am working on my map over about 1 month. On the third day i added Multiboard system. I worked perfectly. And today isave the map and i have that error: "Can't find the name of the function". Well i didnt undestand that but i checked the JASS trigger with that function. It was there and is the same as old version's of my map, trigger.
so here is my native to make the icon in multiboard to be setted depends on your char.
JASS:
call mb_SetHeroIcon(0, GetUnitTypeId(udg_hero[1]))
The whole code of Multiboard trigger. It worked but now something is wrong. I am using 1.20 patch.
JASS:
constant function mb_ColumnWidth takes integer id returns real
if id == 1 then
return 0.13
elseif id == 2 then
return 0.05
elseif id == 3 then
return 0.06
endif
return 0.045
endfunction
constant function mb_Team1 takes nothing returns integer
return 10
endfunction
constant function mb_Team2 takes nothing returns integer
return 11
endfunction
function mb_PlayerFilter takes integer i returns boolean
return GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(Player(i)) != MAP_CONTROL_COMPUTER
endfunction
function mb_String takes integer id returns string
if id == 1 then
return "|cffFF8040Map Name"
elseif id == 2 then
return "Players"
elseif id == 3 then
return "Dead?"
elseif id == 4 then
return "Kills"
elseif id == 5 then
return "Deathes"
elseif id == 6 then
return "Time Left"
elseif id == 7 then
return "Towers Lost"
endif
return ""
endfunction
function mb_GetColor takes string s, integer id returns string
if id == 1 then
return "|cFFD2D200" + s + "|r"
elseif id == 2 then
return "|cFFFF0000" + s + "|r"
elseif id == 3 then
return "|cFF0039DD" + s + "|r"
endif
return s
endfunction
function mb_GetHeroIcon takes integer id returns string
if id == 'H005' then
return "ReplaceableTextures\\CommandButtons\\BTNicon1.blp"
elseif id == 'H014' then
return "ReplaceableTextures\\CommandButtons\\BTNicon2.blp"
endif
return "ReplaceableTextures\\WorldEditUI\\Editor-Random-Unit.blp"
endfunction
//===========================================================================
function mb_SetItem takes integer row, integer col, string text, string icon returns nothing
local multiboarditem mbi = MultiboardGetItem(udg_mb, row - 1, col - 1)
call MultiboardSetItemValue(mbi, text)
call MultiboardSetItemWidth(mbi, mb_ColumnWidth(col))
if icon == "" then
call MultiboardSetItemStyle(mbi, true, false)
else
call MultiboardSetItemIcon(mbi, icon)
call MultiboardSetItemStyle(mbi, true, true)
endif
call MultiboardReleaseItem(mbi)
set mbi = null
endfunction
function mb_SetHeroIcon takes integer p, integer id returns nothing
call mb_SetItem(udg_mb_pos, 1, GetPlayerNameColored(p), mb_GetHeroIcon(id))
endfunction
function mb_SetPlayerKills takes integer id returns nothing
if id > 11 or id < 0 or udg_mb_pos[id] == 0 then
return
endif
call mb_SetItem(udg_mb_pos[id], 3, mb_GetColor(" " + I2S(udg_kills[id]), 2), "")
endfunction
function mb_SetPlayerDeaths takes integer id returns nothing
if id > 11 or id < 0 or udg_mb_pos[id] == 0 then
return
endif
call mb_SetItem(udg_mb_pos[id], 4, mb_GetColor(" " + I2S(udg_deaths[id]), 3), "")
endfunction
function mb_GetTime takes nothing returns string
return I2S(udg_mb_min) + ":" + iif(udg_mb_sec < 10, "0" + I2S(udg_mb_sec), I2S(udg_mb_sec))
endfunction
function mb_SetTime takes nothing returns nothing
set udg_mb_sec = udg_mb_sec + 1
if udg_mb_sec == 60 then
set udg_mb_sec = 0
set udg_mb_min = udg_mb_min + 1
endif
call mb_SetItem(udg_mb_pos[100], 3, mb_GetTime(), "")
endfunction
//===========================================================================
function mb_InitMultiBoard takes nothing returns nothing
local integer i = 0
local integer i2 = 1
local integer rows = 6
call TriggerSleepAction(0.)
set udg_mb = CreateMultiboard()
call MultiboardDisplay(udg_mb, true)
call MultiboardSetTitleText(udg_mb, mb_String(1))
call MultiboardSetRowCount(udg_mb, 16)
call MultiboardSetColumnCount(udg_mb, 4)
call mb_SetItem(1, 1, mb_String(2), "")
call mb_SetItem(1, 2, mb_GetColor(mb_String(3), 1), "")
call mb_SetItem(1, 3, mb_GetColor(mb_String(4), 2), "")
call mb_SetItem(1, 4, mb_GetColor(mb_String(5), 3), "")
set i2 = i2 + 1
call mb_SetItem(i2, 1, GetPlayerNameColored(mb_Team1()), "")
set udg_mb_pos[mb_Team1()] = i2
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, mb_GetColor(" 0", 2), "")
call mb_SetItem(i2, 4, mb_GetColor(" 0", 3), "")
loop
if mb_PlayerFilter(i) and IsPlayerAlly(Player(i), Player(mb_Team1())) and Player(i) != Player(mb_Team1()) and Player(i) != Player(mb_Team2()) then
set i2 = i2 + 1
call mb_SetItem(i2, 1, GetPlayerNameColored(i), mb_GetHeroIcon(0))
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, mb_GetColor(" 0", 2), "")
call mb_SetItem(i2, 4, mb_GetColor(" 0", 3), "")
set udg_mb_pos[i] = i2
set rows = rows + 1
endif
set i = i + 1
exitwhen i == 12
endloop
set i = 0
set i2 = i2 + 1
call mb_SetItem(i2, 1, GetPlayerNameColored(mb_Team2()), "")
set udg_mb_pos[mb_Team2()] = i2
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, mb_GetColor(" 0", 2), "")
call mb_SetItem(i2, 4, mb_GetColor(" 0", 3), "")
loop
if mb_PlayerFilter(i) and IsPlayerAlly(Player(i), Player(mb_Team2())) and Player(i) != Player(mb_Team2()) and Player(i) != Player(mb_Team1()) then
set i2 = i2 + 1
call mb_SetItem(i2, 1, GetPlayerNameColored(i), mb_GetHeroIcon(0))
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, mb_GetColor(" 0", 2), "")
call mb_SetItem(i2, 4, mb_GetColor(" 0", 3), "")
set udg_mb_pos[i] = i2
set rows = rows + 1
endif
set i = i + 1
exitwhen i == 12
endloop
set i2 = i2 + 1
call mb_SetItem(i2, 1, mb_String(6), "")
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, "0:00", "")
call mb_SetItem(i2, 4, "", "")
set udg_mb_pos[100] = i2
set i2 = i2 + 1
call mb_SetItem(i2, 1, SetTextWithPlayerColor(mb_Team1(), mb_String(7)), "")
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, SetTextWithPlayerColor(mb_Team1(), " 0"), "")
call mb_SetItem(i2, 4, "", "")
set udg_mb_pos[101] = i2
set i2 = i2 + 1
call mb_SetItem(i2, 1, SetTextWithPlayerColor(mb_Team2(), mb_String(7)), "")
call mb_SetItem(i2, 2, "", "")
call mb_SetItem(i2, 3, SetTextWithPlayerColor(mb_Team2(), " 0"), "")
call mb_SetItem(i2, 4, "", "")
set udg_mb_pos[102] = i2
call MultiboardSetRowCount(udg_mb, rows)
endfunction
//===========================================================================
function mb_CheckTimerId takes timer tm returns integer
if tm == udg_mb_timer[1] then
return 1
elseif tm == udg_mb_timer[2] then
return 2
elseif tm == udg_mb_timer[3] then
return 3
elseif tm == udg_mb_timer[4] then
return 4
elseif tm == udg_mb_timer[5] then
return 5
elseif tm == udg_mb_timer[7] then
return 7
elseif tm == udg_mb_timer[8] then
return 8
elseif tm == udg_mb_timer[9] then
return 9
elseif tm == udg_mb_timer[10] then
return 10
elseif tm == udg_mb_timer[11] then
return 11
endif
return 0
endfunction
function mb_Revive_Child takes nothing returns nothing
local timer tm = GetExpiredTimer()
local integer id = mb_CheckTimerId(tm)
set udg_mb_timer_time[id] = udg_mb_timer_time[id] - 1
call mb_SetItem(udg_mb_pos[id], 2, mb_GetColor(" " + I2S(udg_mb_timer_time[id]), 1), "")
if udg_mb_timer_time[id] == 0 then
call mb_SetItem(udg_mb_pos[id], 2, "", "")
set udg_mb_pos[99] = id
call TriggerExecute(gg_trg_Revive_Hero)
call PauseTimer(tm)
endif
set tm = null
endfunction
function mb_StartRevive takes integer p, integer time returns nothing
if udg_mb_pos == 0 then
return
endif
if p == mb_Team1() or p == mb_Team2() or p > 11 then
return
endif
set udg_mb_timer_time = time + 1
call TimerStart(udg_mb_timer, 1.0, true, function mb_Revive_Child)
endfunction
//===========================================================================
function InitTrig_MultiBoard takes nothing returns nothing
call ExecuteFunc("mb_InitMultiBoard")
set udg_mb_timer[1] = CreateTimer()
set udg_mb_timer[2] = CreateTimer()
set udg_mb_timer[3] = CreateTimer()
set udg_mb_timer[4] = CreateTimer()
set udg_mb_timer[5] = CreateTimer()
set udg_mb_timer[7] = CreateTimer()
set udg_mb_timer[8] = CreateTimer()
set udg_mb_timer[9] = CreateTimer()
set udg_mb_timer[10] = CreateTimer()
set udg_mb_timer[11] = CreateTimer()
set udg_mb_timer[100] = CreateTimer()
call TimerStart(udg_mb_timer[100], 1.0, true, function mb_SetTime)
endfunction
Here is the exactly function i have problem with:
JASS:
function mb_SetHeroIcon takes integer p, integer id returns nothing
call mb_SetItem(udg_mb_pos, 1, GetPlayerNameColored(p), mb_GetHeroIcon(id))
endfunction
Also here is my MAP SCRIPT requered to for this multiboard system:
JASS:
function SetTextWithPlayerColor takes integer id, string s returns string
if id <= 11 then
return "|c00" + SubString("FF03030042FF1CE6B9540081FFFC01FE8A0E20C000E55BB09596977EBFF11062464E2A04", id * 6, (id + 1) * 6) + s + "|r"
else
return "00282828" + s + "|r"
endif
endfunction
function GetPlayerNameColored takes integer id returns string
return SetTextWithPlayerColor(id, GetPlayerName(Player(id)))
endfunction
function iif takes boolean b, string s1, string s2 returns string
if b then
return s1
endif
return s2
endfunction
function dm takes string s returns nothing
call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, s)
endfunction
- Nahm , thx