Dynamic Action Names for Dragged Items (CMS)
From The Official Visionaire Studio: Adventure Game Engine Wiki
Name | Type | By |
---|---|---|
Dynamic Action Names for Dragged Items | Definition | AFRLme |
This script allows you to create dynamic action words to place before & after the item name. For example: "Give money to Barkeep".
Instructions
1. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
2. To organize the inventory items by ascending order, you should create an execute a script action containing:
arrangeItems(true)
3. To organize the inventory items by descending order, you should create an execute a script action containing:
arrangeItems(false)
Main Script
--[[
Dynamic action names for dragged items (v2) [20/02/2014]
Written by AFRLme
-- + --
alternatingfrequencies@hotmail.com | skype @ AFRLme
--]]
-- * local variables * --
local item, txt, current, lang, old, new, iw, cj, val -- empty variables
-- * tables * --
old = {} -- table which will contain original item names
new = {} -- table which will contain updated names
iw = {} -- initial word table
iw["English"] = {"Use ", "Give ", "Show ", "Combine "}
iw["French"] = {"Usage ", "Donner ", "Montrer ", "Combiner "}
iw["German"] = {"Benutzen ", "Geben ", "Zeigen ", "Kombinieren "}
iw["Spanish"] = {"Usar ", "Dar ", "Mostrar ", "Combinar "}
cj = {} -- conjunction word
cj["English"] = {" on ", " to ", " to ", " with "}
cj["French"] = {" en ", " à ", " à ", " avec "}
cj["German"] = {" auf ", " zu ", " zu ", " mit "}
cj["Spanish"] = {" en ", " a ", " a ", " con "}
-- * function for udating object name with action text * --
function itemActionName()
item = game:getLink(VGameUsedItem) -- get currently held item
current = game:getLink(VGameCurrentObject) -- get current object (under cursor)
lang = game:getLink(VGameStandardLanguage):getName() -- get current game language
val = getObject("Values[conjunction_class]"):getInt(VValueInt) -- get conjunction class value
-- + --
if not item:isEmpty() then -- if held item exists then...
txt = item:getLink(VObjectName):getLinks(VTextAll) -- get all texts for the held item
for i = 1, table.maxn(txt) do if txt[i]:getLink(VTextLanguageLanguage):getName() == lang then item = txt[i]:getStr(VTextLanguageText) end end -- store item name
-- + --
new = current:getLink(VObjectName):getLinks(VTextAll) -- get all texts for the object under cursor
for i = 1, table.maxn(new) do table.insert(old, new[i]:getStr(VTextLanguageText)) end -- insert string names of table above
-- + --
for i = 1, table.maxn(new) do if new[i]:getLink(VTextLanguageLanguage):getName() == lang then new[i]:setValue(VTextLanguageText, iw[lang][val] .. item .. cj[lang][val] .. old[i]) end end -- update object name with action text (initial word, item, conjunction word, target)
end
end
-- * function for resetting object name back to original name * --
function resetItemActionName()
for i = 1, table.maxn(new) do new[i]:setValue(VTextLanguageText, old[i]) end -- reset all text (for each language) back to original text...
end