Difference between revisions of "Kill Background Text (CMS)"
From The Official Visionaire Studio: Adventure Game Engine Wiki
(→Main Script) |
|||
Line 35: | Line 35: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
--[[ | --[[ | ||
− | Kill background text ( | + | Kill background text (multiple options) [v3] (30/02/2014) |
Written by AFRLme [Lee Clarke] | Written by AFRLme [Lee Clarke] | ||
-- + -- | -- + -- | ||
Line 48: | Line 48: | ||
txt = {} -- create table | txt = {} -- create table | ||
txt["_temporary_"] = "" -- set table as temporary | txt["_temporary_"] = "" -- set table as temporary | ||
− | |||
− | -- * function which kills | + | -- * function which kills active background text (1 = all, 2 = all characters, 3 = current character) * -- |
− | function | + | function killText(val) |
− | if txt[ | + | for i = table.maxn(txt), 1, -1 do |
+ | if val == 1 and txt[i]:getBool(VTextActive) then txt[i]:setValue(VTextActive, false) -- all background text | ||
+ | elseif val == 2 and txt[i]:getBool(VTextActive) and txt[i]:getLink(VTextOwner):getId().tableId == eCharacters then txt[i]:setValue(VTextActive, false) -- all character background text | ||
+ | elseif val == 3 and txt[i]:getBool(VTextActive) and txt[i]:getLink(VTextOwner):getName() == game:getLink(VGameCurrentCharacter):getName() then txt[i]:setValue(VTextActive, false); break -- current character background text | ||
+ | end | ||
+ | end | ||
end | end | ||
− | -- * on text | + | -- * on text display function * -- |
function hText(text) | function hText(text) | ||
− | if text: | + | if text:getBool(VTextBackground) then table.insert(txt, text) end |
− | + | -- * -- | |
− | |||
− | |||
return false -- prevent text from being repositioned | return false -- prevent text from being repositioned | ||
end | end | ||
− | -- * | + | -- * function for text finished * -- |
function eText(text) | function eText(text) | ||
− | + | for i = table.maxn(txt), 1, -1 do if not txt[i]:getBool(VTextActive) then table.remove(txt, i) end end -- if text is inactive, remove from txt table | |
− | |||
− | |||
− | |||
end | end | ||
+ | -- * event handlers * -- | ||
registerHookFunction("setTextPosition", "hText") -- event handler for displayed text | registerHookFunction("setTextPosition", "hText") -- event handler for displayed text | ||
− | registerEventHandler("textStopped", "eText") -- event handler for text | + | registerEventHandler("textStopped", "eText") -- event handler for finished text |
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 14:08, 30 March 2014
Name | Type | By |
---|---|---|
Kill Background Text (character) | Definition | AFRLme |
This script allows you to call a function which kills the active displayed text (background) of the current character, or all characters.
Additional Info
In regards to the alternative script...
I initially tried adding each text into the txt["char"] table. This would have displayed something like: "text (24,1)", but once the text is no longer active, it ends up being displayed as "-- empty --", which meant I could not select the text & remove it from the table; hence the reason why we are running the getBool(VTextActive) on each table entry - if it returns true then it will set the text to inactive.
Additionally I have decided to loop through the table in reverse, on the assumption that the most recent text entries are more likely to be active, as opposed to the earlier entries.
the table should be cleared every so often to reduce the workload of the loop iterator.
Contents
Instructions
1. Select which script you want to use.
Kill background text (current character)
2. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
3. To kill currently active background text of current character: create an execute a script action containing...
killCurrentBgText()
Kill background text (all characters)
2. Add the alternative script to the Visionaire Studio Script Editor & set the script as a definition script.
3. to do...
Main Script
--[[
Kill background text (multiple options) [v3] (30/02/2014)
Written by AFRLme [Lee Clarke]
-- + --
alternatingfrequencies@hotmail.com | skype @ AFRLme
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
-- * tables * --
txt = {} -- create table
txt["_temporary_"] = "" -- set table as temporary
-- * function which kills active background text (1 = all, 2 = all characters, 3 = current character) * --
function killText(val)
for i = table.maxn(txt), 1, -1 do
if val == 1 and txt[i]:getBool(VTextActive) then txt[i]:setValue(VTextActive, false) -- all background text
elseif val == 2 and txt[i]:getBool(VTextActive) and txt[i]:getLink(VTextOwner):getId().tableId == eCharacters then txt[i]:setValue(VTextActive, false) -- all character background text
elseif val == 3 and txt[i]:getBool(VTextActive) and txt[i]:getLink(VTextOwner):getName() == game:getLink(VGameCurrentCharacter):getName() then txt[i]:setValue(VTextActive, false); break -- current character background text
end
end
end
-- * on text display function * --
function hText(text)
if text:getBool(VTextBackground) then table.insert(txt, text) end
-- * --
return false -- prevent text from being repositioned
end
-- * function for text finished * --
function eText(text)
for i = table.maxn(txt), 1, -1 do if not txt[i]:getBool(VTextActive) then table.remove(txt, i) end end -- if text is inactive, remove from txt table
end
-- * event handlers * --
registerHookFunction("setTextPosition", "hText") -- event handler for displayed text
registerEventHandler("textStopped", "eText") -- event handler for finished text
Alternative Script
--[[
Kill background text (all characters) [v2] (28/02/2014)
Written by AFRLme [Lee Clarke]
-- + --
alternatingfrequencies@hotmail.com | skype @ AFRLme
-- + --
This script is donation optional. In game credit is non-negotiable.
You are free to: ¹ use it in your game(s). ² modify the script.
Do not remove - or edit - this comment block.
--]]
-- * tables * --
txt = {} -- create table
txt["_temporary_"] = "" -- set table as temporary
txt["char"] = {}
-- * function for checking which character texts are active; if active then set inactive * --
function killCharBgText()
for i = 1, table.maxn(txt["char"]) do -- for i = 1 to txt["char"] table total do...
if txt["char"][i]:getBool(VTextActive) then txt["char"][i]:setValue(VTextActive, false) end -- if text[i] is active then set inactive
end
-- * --
txt["char"] = {} -- reset the table.
end
-- * on text display function * --
function hText(text)
if text:getLink(VTextOwner):getId().tableId == eCharacters and text:getBool(VTextBackground) then table.insert(txt["char"], text) end -- text belongs to character & is background text, insert into table
-- * --
return false -- prevent text from being repositioned
end
-- * event handlers * --
registerHookFunction("setTextPosition", "hText") -- event handler for displayed text