Difference between revisions of "Dynamic Action Names for Dragged Items (CMS)"

From The Official Visionaire Studio: Adventure Game Engine Wiki
Line 11: Line 11:
 
1. Add the [[#Main_Script|main script]] to the Visionaire Studio Script Editor & set the script as a definition script.<br/>
 
1. Add the [[#Main_Script|main script]] to the Visionaire Studio Script Editor & set the script as a definition script.<br/>
 
2. Add/Remove language tables to/from the ''main script''; as required.<br/>
 
2. Add/Remove language tables to/from the ''main script''; as required.<br/>
3. Edit the string values inside of the language tables; as required.<br/>
+
3. Edit the string values inside of the iw table; as required. iw stands for initial word. It is the word that will be displayed before the currently held items name. The order of the strings inside of the table should reflect the integer value of the conjunction_class value.
 +
<syntaxhighlight>
 +
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 "}
 +
</syntaxhighlight>
 
4. Create a new ''Value'' called '''conjunction_class'''.<br/>
 
4. Create a new ''Value'' called '''conjunction_class'''.<br/>
 
5. On mouse enter for each object/character/item, set '''conjunction_class''' value; as required.
 
5. On mouse enter for each object/character/item, set '''conjunction_class''' value; as required.

Revision as of 00:26, 21 February 2014

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" or "Combine glass with whiskey", etc...

Instructions

1. Add the main script to the Visionaire Studio Script Editor & set the script as a definition script.
2. Add/Remove language tables to/from the main script; as required.
3. Edit the string values inside of the iw table; as required. iw stands for initial word. It is the word that will be displayed before the currently held items name. The order of the strings inside of the table should reflect the integer value of the conjunction_class value.

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 "}

4. Create a new Value called conjunction_class.
5. On mouse enter for each object/character/item, set conjunction_class value; as required.

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