• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

OTCv8 7xCustom

Competitibia

Pain & Glory WHole
Joined
Apr 1, 2021
Messages
545
Solutions
3
Reaction score
210
This is client modifications for 7x version of tibia it is yet ufinished however there is few features:
-hotkeys are disabled
-cant target player on battle list
-working extra panels with no dragging bag to middle of window (credits : gesior)
-classic look

Todo:
no IP displaying or even older tibia enter game window by default
Minor layout fixes
Settings Adjusted so light is ambient 0% always enabled.
 

Attachments

Great job, I recommend to make a fork on github from the original and then make the changes.
That way you can compare changes if you want to maintain it updated with the original.
 
You cannot target monsters also on battle list.
ah yes sorry.
once i hjave more updates i will update the origina. zip

Lua:
elseif clickedWidget:getClassName() == 'UIItem' and not clickedWidget:isVirtual() then

    g_game.useWith(selectedThing, clickedWidget:getItem())

  elseif clickedWidget:getClassName() == 'UICreatureButton' then

    local creature = clickedWidget:getCreature()

    if not creature:isPlayer() then

        g_game.useWith(selectedThing, creature)

    end

  end

end

from:
 
Last edited:
ah yes sorry.
once i hjave more updates i will update the origina. zip

Lua:
elseif clickedWidget:getClassName() == 'UIItem' and not clickedWidget:isVirtual() then

    g_game.useWith(selectedThing, clickedWidget:getItem())

  elseif clickedWidget:getClassName() == 'UICreatureButton' then

    local creature = clickedWidget:getCreature()

    if not creature:isPlayer() then

        g_game.useWith(selectedThing, creature)

    end

  end

end

from:
I think it's better to only change the code to check if the creature is not a player and allow to use rune, like this:

Lua:
function onUseWith(clickedWidget, mousePosition)
  if clickedWidget:getClassName() == 'UIGameMap' then
    local tile = clickedWidget:getTile(mousePosition)
    if tile then   
      if selectedThing:isFluidContainer() or selectedThing:isMultiUse() then   
        if selectedThing:getId() == 3180 or selectedThing:getId() == 3156 then
          -- special version for mwall
          g_game.useWith(selectedThing, tile:getTopUseThing(), selectedSubtype)   
        else
          g_game.useWith(selectedThing, tile:getTopMultiUseThingEx(clickedWidget:getPositionOffset(mousePosition)), selectedSubtype)
        end
      else
        g_game.useWith(selectedThing, tile:getTopUseThing(), selectedSubtype)
      end
    end
  elseif clickedWidget:getClassName() == 'UIItem' and not clickedWidget:isVirtual() then
    g_game.useWith(selectedThing, clickedWidget:getItem(), selectedSubtype)
  elseif clickedWidget:getClassName() == 'UICreatureButton' then
    local creature = clickedWidget:getCreature()
    if not creature:isPlayer() then
      g_game.useWith(selectedThing, creature, selectedSubtype)
    end
  end
end

Then you are still able to use all of the code from otclientv8, like the magic wall code etc...
Post automatically merged:

Settings Adjusted so light is ambient 0% always enabled.
If I'm not wrong 25% was the default light setting.
 
Last edited:
here is upto date i think thats where the ambient light was at 0 and disabled

hotkeys were disabled in a very funny way btw but as far as i know they stay that way.
 

Attachments

here is upto date i think thats where the ambient light was at 0 and disabled

hotkeys were disabled in a very funny way btw but as far as i know they stay that way.
with those i get error connection at login no erros in client terminal nor servr
 
change init.lua

Lua:
-- CONFIG
APP_NAME = "AzuraRetro"  -- important, change it, it's name for config dir and files in appdata
APP_VERSION = 772       -- client version for updater and login to identify outdated client
DEFAULT_LAYOUT = "retro" -- on android it's forced to "mobile", check code bellow

-- If you don't use updater or other service, set it to updater = ""
Services = {
  website = "http://************", -- currently not used
  updater = "",
  stats = "",
  crash = "http://************/api/crash.php",
  feedback = "http://************/api/feedback.php",
  status = "http://************/api/status.php"
}

-- Servers accept http login url, websocket login url or ip:port:version
Servers = {
  OTClientV8c = "54.37.129.141:7171:772"
}

--USE_NEW_ENERGAME = true -- uses entergamev2 based on websockets instead of entergame
ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list

g_app.setName("AzuraGame")
-- CONFIG END

-- print first terminal message
g_logger.info(os.date("== application started at %b %d %Y %X"))
g_logger.info(g_app.getName() .. ' ' .. g_app.getVersion() .. ' rev ' .. g_app.getBuildRevision() .. ' (' .. g_app.getBuildCommit() .. ') made by ' .. g_app.getAuthor() .. ' built on ' .. g_app.getBuildDate() .. ' for arch ' .. g_app.getBuildArch())

if not g_resources.directoryExists("/data") then
  g_logger.fatal("Data dir doesn't exist.")
end

if not g_resources.directoryExists("/modules") then
  g_logger.fatal("Modules dir doesn't exist.")
end

-- settings
g_configs.loadSettings("/config.otml")

-- set layout
local settings = g_configs.getSettings()
local layout = DEFAULT_LAYOUT
if g_app.isMobile() then
  layout = "mobile"
elseif settings:exists('layout') then
  layout = settings:getValue('layout')
end
g_resources.setLayout(layout)

-- load mods
g_modules.discoverModules()
g_modules.ensureModuleLoaded("corelib")
 
local function loadModules()
  -- libraries modules 0-99
  g_modules.autoLoadModules(99)
  g_modules.ensureModuleLoaded("gamelib")

  -- client modules 100-499
  g_modules.autoLoadModules(499)
  g_modules.ensureModuleLoaded("client")

  -- game modules 500-999
  g_modules.autoLoadModules(999)
  g_modules.ensureModuleLoaded("game_interface")

  -- mods 1000-9999
  g_modules.autoLoadModules(9999)
end

-- report crash
if type(Services.crash) == 'string' and Services.crash:len() > 4 and g_modules.getModule("crash_reporter") then
  g_modules.ensureModuleLoaded("crash_reporter")
end

-- run updater, must use data.zip
if type(Services.updater) == 'string' and Services.updater:len() > 4
  and g_resources.isLoadedFromArchive() and g_modules.getModule("updater") then
  g_modules.ensureModuleLoaded("updater")
  return Updater.init(loadModules)
end

loadModules()


and edit

OTClientV8c = "54.37.129.141:7171:772"

to your own ip
 
change init.lua

Lua:
-- CONFIG
APP_NAME = "AzuraRetro"  -- important, change it, it's name for config dir and files in appdata
APP_VERSION = 772       -- client version for updater and login to identify outdated client
DEFAULT_LAYOUT = "retro" -- on android it's forced to "mobile", check code bellow

-- If you don't use updater or other service, set it to updater = ""
Services = {
  website = "http://************", -- currently not used
  updater = "",
  stats = "",
  crash = "http://************/api/crash.php",
  feedback = "http://************/api/feedback.php",
  status = "http://************/api/status.php"
}

-- Servers accept http login url, websocket login url or ip:port:version
Servers = {
  OTClientV8c = "54.37.129.141:7171:772"
}

--USE_NEW_ENERGAME = true -- uses entergamev2 based on websockets instead of entergame
ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list

g_app.setName("AzuraGame")
-- CONFIG END

-- print first terminal message
g_logger.info(os.date("== application started at %b %d %Y %X"))
g_logger.info(g_app.getName() .. ' ' .. g_app.getVersion() .. ' rev ' .. g_app.getBuildRevision() .. ' (' .. g_app.getBuildCommit() .. ') made by ' .. g_app.getAuthor() .. ' built on ' .. g_app.getBuildDate() .. ' for arch ' .. g_app.getBuildArch())

if not g_resources.directoryExists("/data") then
  g_logger.fatal("Data dir doesn't exist.")
end

if not g_resources.directoryExists("/modules") then
  g_logger.fatal("Modules dir doesn't exist.")
end

-- settings
g_configs.loadSettings("/config.otml")

-- set layout
local settings = g_configs.getSettings()
local layout = DEFAULT_LAYOUT
if g_app.isMobile() then
  layout = "mobile"
elseif settings:exists('layout') then
  layout = settings:getValue('layout')
end
g_resources.setLayout(layout)

-- load mods
g_modules.discoverModules()
g_modules.ensureModuleLoaded("corelib")
 
local function loadModules()
  -- libraries modules 0-99
  g_modules.autoLoadModules(99)
  g_modules.ensureModuleLoaded("gamelib")

  -- client modules 100-499
  g_modules.autoLoadModules(499)
  g_modules.ensureModuleLoaded("client")

  -- game modules 500-999
  g_modules.autoLoadModules(999)
  g_modules.ensureModuleLoaded("game_interface")

  -- mods 1000-9999
  g_modules.autoLoadModules(9999)
end

-- report crash
if type(Services.crash) == 'string' and Services.crash:len() > 4 and g_modules.getModule("crash_reporter") then
  g_modules.ensureModuleLoaded("crash_reporter")
end

-- run updater, must use data.zip
if type(Services.updater) == 'string' and Services.updater:len() > 4
  and g_resources.isLoadedFromArchive() and g_modules.getModule("updater") then
  g_modules.ensureModuleLoaded("updater")
  return Updater.init(loadModules)
end

loadModules()


and edit

OTClientV8c = "54.37.129.141:7171:772"

to your own ip
How do i do to use other sprites besides 772? I get a login error saying missing file 772 spr and dat files. my server is 8.6 and ofcourse that i placed the protocol version in init.lua
 
read git for otcv8 and findout. this is ment to be 8.0 - 7.4 7.6 no hotkey modules.
 
it's strange because with the first modules folders that i have, the ones that are in the main post, have no problem using them in the 8.60 server
edit: tried with normal 772 othire and can't connect either, but with my otc or other i do can
 
Last edited:
I probably changed client_entergame so that it only has 772. anyways you may stop trashposting because I will not do or help you in any way. I only provide those files as is without any warranty they may or may not work maybe try replacing only the modules u need. some are still unchanged == to git rep from few months ago.

and dont get me wrong im not stingy just nobody never helped me directly I had to post exact line of some sort of code to get stuff sorted and still mostly 80% of time I had to rely solely on myself. but there definately is some stuff I learned from people here, main was I always overcomplicated my code.
 
ok, srry i understand, thanks for this great release.
if someone need it i figure it that it was caused by the rsa + this code line
Code:
local protos = {"860"}
 
Last edited:
Back
Top