Getting an object's name

  • #1, z EinzelkämpferMonday, 31. January 2011, 16:14 hodinky 14 years ago
    Getting the name of the object/person currently underneath the cursor.
    
    local obj = game:getLink(VGameCurrentObject)
    if not obj:isEmpty() then
      local text
      if obj:getId().tableId == eObjects then
        text = obj:getLink(VObjectName)
      elseif obj:getId().tableId == eCharacters then
        text = obj:getLink(VCharacterName)
      end
      
      if not text:isEmpty() then
        local texts = text:getLinks(VTextAll)
        for i=1,table.maxn(texts) do
          local name = texts:getStr(VTextLanguageText)
          local lang = texts:getLink(VTextLanguageLanguage)
          if lang:getName() == 'Deutsch' then
            print('german name: ' .. name)
          elseif lang:getName() == 'English' then
            print('english name: ' .. name)
          end
        end
      end
    end
    
    Originally posted somewhere in the Visioniare forum by Alex.

    Bažant

    81 Posts


  • #2, z AlexFriday, 24. August 2012, 00:01 hodinky 13 years ago
    I just saw the script is not correct. this one works:
    
    local obj = game:getLink(VGameCurrentObject)
    if not obj:isEmpty() then
      local text
      if obj:getId().tableId == eObjects then
        text = obj:getLink(VObjectName)
      elseif obj:getId().tableId == eCharacters then
        text = obj:getLink(VCharacterName)
      end
    
    if not text:isEmpty() then
        local texts = text:getLinks(VTextAll)
        for i=1,table.maxn(texts) do
          local text = texts[i]
          local name = text:getStr(VTextLanguageText)
          local lang = text:getLink(VTextLanguageLanguage)
          if lang:getName() == 'Deutsch' then
            print('german name: ' .. name)
          elseif lang:getName() == 'English' then
            print('english name: ' .. name)
          end
        end
      end
    end
    

    Čestný člen

    378 Posts