Objekt im Hook temporär umbenennen?

  • #10, by rhavin grobertThursday, 30. November 2017, 00:45 6 years ago
    Almost there…


    if (_qp == nil) then
    
      _qp = {}
    
      math.randomseed( os.time() )
    
    end
    
    
    
    _qp.cmd = {}
    
    _qp.cmd.objThis = emptyObject
    
    _qp.cmd.objLast = emptyObject
    
    _qp.cmd.cmdLast = emptyObject
    
    _qp.cmd.altAction = nil
    
    _qp.cmd['cmdWalk'] = getObject('Interfaces[_default].InterfaceButtons[cmdWalk]')
    
    _qp.cmd['cmdLook'] = getObject('Interfaces[_default].InterfaceButtons[cmdLook]')
    
    _qp.cmd['cmdUse'] = getObject('Interfaces[_default].InterfaceButtons[cmdUse]')
    
    _qp.cmd['cmdTalk'] = getObject('Interfaces[_default].InterfaceButtons[cmdTalk]')
    
    _qp.cmd['cmdGive'] = getObject('Interfaces[_default].InterfaceButtons[cmdGive]')
    
    _qp.cmd['cmdTake'] = getObject('Interfaces[_default].InterfaceButtons[cmdTake]')
    
    _qp.cmd['cmdPush'] = getObject('Interfaces[_default].InterfaceButtons[cmdPush]')
    
    _qp.cmd['cmdPull'] = getObject('Interfaces[_default].InterfaceButtons[cmdPull]')
    
    _qp.cmd['cmdOpen'] = getObject('Interfaces[_default].InterfaceButtons[cmdOpen]')
    
    _qp.cmd['cmdClose'] = getObject('Interfaces[_default].InterfaceButtons[cmdClose]')
    
    
    
    registerEventHandler('mainLoop', '_qpmain')
    
    
    
    _qp.getObjLangName = function(obj)
    
      if obj:isEmpty() then
    
        return "--: empty :--"
    
      end
    
      local id = obj:getId().tableId
    
      if id == eObjects then
    
        return obj:getTextStr(VObjectName)
    
      elseif id == eCharacters then
    
        return obj:getTextStr(VCharacterName)
    
      elseif id == eScenes then
    
        return obj:getTextStr(VSceneName)
    
      elseif id == eButtons then
    
        return obj:getTextStr(VButtonName)
    
      end
    
    end
    
    
    
    _qp.cmd.setActionText = function(text)
    
      print(text)
    
    end
    
    
    
    _qp.cmd.callItemCommand = function(_cmd, _item)
    
      -- NYI
    
      return false
    
    end
    
    
    
    function _qpmain()
    
      _qp.cmd.objThis = game:getLink(VGameCurrentObject)
    
      -- skip if nothing happend
    
      if _qp.cmd.objThis == _qp.cmd.lastObj
    
        then return end
    
      _qp.cmd.altAction = nil
    
      _qp.cmd.onChangeObjectcommand()
    
      _qp.cmd.lastObj = _qp.cmd.objThis
    
    end
    
    
    
    _qp.cmd.onChangeObjectcommand = function()
    
      if _qp.cmd.objThis:isEmpty() or
    
        _qp.cmd.objThis:getId().tableId ~= eObjects then
    
        return false
    
      end
    
      -- get command object and internal command name
    
      local cmd = game:getLink(VGameActiveCommand)
    
      local cmdName = cmd:getName()
    
    
    
      for _,v in ipairs(_qp.cmd.objThis:getLinks(VObjectValues)) do
    
        local valName = v:getName()
    
        local valStr = v:getStr(VValueString)
    
        -- check if cmd is overridden by object
    
        if valName == cmdName then
    
          if _qp.cmd[valStr] ~= nil then
    
            game:setValue(VGameActiveCommand, _qp.cmd[valStr])
    
          end
    
          return true
    
        end
    
        -- check for cmdWalk with walkto
    
        if cmdName == "cmdWalk" and valName == "walkto" then
    
          -- change action text
    
          _qp.cmd.altAction = _qp.getObjLangName(cmd)..
    
            " ".._qp.getObjLangName(Scenes[valStr])
    
          return true
    
        end
    
        -- check if object represents an item
    
        if valName == "item" then
    
          -- call items command action
    
          return _qp.cmd.callItemCommand(cmd, Items[valStr])
    
        end
    
      end
    
      return false
    
    end

    Newbie

    47 Posts


  • #11, by sebastianThursday, 30. November 2017, 00:51 6 years ago
    looks overcomplicated as hell, but if it works it works c:

    Thread Captain

    2346 Posts