Name Typ Von

Dynamische Aktionsnamen für gezogene Elemente Definition AFRLme

Mit diesem Skript erzeugst du dynamische Aktionswörter vor und nach dem Namen eines Items, zum Beispiel „Gib Geld an Wirt“ oder „Kombiniere Glas mit Whiskey“.

Anweisungen

1. Füge das Hauptskript im Skripteditor von Visionaire Studio hinzu und lege es als Definitionsskript fest.
2. Füge im Hauptskript den Tabellen iw und cj nach Bedarf Sprachtabellen hinzu oder entferne welche.
3. Passe die Strings in der Tabelle iw an. iw steht für „initial word“, also das Wort vor dem Namen des gehaltenen Items. Die Reihenfolge der Strings entspricht dem Ganzzahlwert von conjunction_class. Hinter dem Wort steht ein Leerzeichen, also so: "word ".

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. Passe die Strings in der Tabelle cj an. cj steht für „conjunction word“, also das Wort nach dem Namen des gehaltenen Items. Die Reihenfolge der Strings entspricht dem Ganzzahlwert von conjunction_class. Vor und hinter jedem Wort steht ein Leerzeichen, also so: " word ".

cj = {} -- conjunction word table
cj["English"] = {" on ", " to ", " to ", " with "}
cj["French"] = {" en ", " à ", " à ", " avec "}
cj["German"] = {" auf ", " zu ", " zu ", " mit "}
cj["Spanish"] = {" en ", " a ", " a ", " con "}

5. Lege im Editor von Visionaire Studio einen neuen Wert mit dem Namen conjunction_class an.
6. Setze beim Betreten jedes Objekts, Charakters oder Items mit der Maus den Wert conjunction_class passend.

Hauptskript

--[[
Dynamic action names for dragged items [v2] (20/02/2014)
Written by AFRLme [Lee Clarke]
-- + --
afrlme@outlook.com | https://afrl.me
-- + --
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.
--]]

-- * 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 table
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, #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, #new do table.insert(old, new[i]:getStr(VTextLanguageText))  end -- insert string names of table above
  -- + --
  for i = 1, #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, #new do new[i]:setValue(VTextLanguageText, old[i]) end -- reset all text (for each language) back to original text...
end