Giter Site home page Giter Site logo

edubart / otclient Goto Github PK

View Code? Open in Web Editor NEW
631.0 100.0 406.0 20.04 MB

An alternative tibia client for otserv written in C++11 and Lua, made with a modular system that uses lua scripts for ingame interface and functionality, making otclient flexible and easy to customize

License: Other

CMake 6.01% Lua 24.01% C++ 68.96% C 0.69% Batchfile 0.01% Shell 0.23% Python 0.06% Dockerfile 0.04%
tibia otclient opentibia otserv

otclient's Introduction

Build Status Join the chat at https://gitter.im/edubart/otclient Open Source Helpers

What is otclient?

Otclient is an alternative Tibia client for usage with otserv. It aims to be complete and flexible, for that it uses LUA scripting for all game interface functionality and configurations files with a syntax similar to CSS for the client interface design. Otclient works with a modular system, this means that each functionality is a separated module, giving the possibility to users modify and customize anything easily. Users can also create new mods and extend game interface for their own purposes. Otclient is written in C++11 and heavily scripted in lua.

For a server to connect to, you can build your own with the forgottenserver or connect to one listed on otservlist.

Where do I download?

Compiled for Windows can be found here (but can be outdated):

NOTE: You will need to download spr/dat files on your own and place them in data/things/VERSION/ (i.e: data/things/1098/Tibia.spr)

Features

Beyond of it's flexibility with scripts, otclient comes with tons of other features that make possible the creation of new client side stuff in otserv that was not possible before. These include, sound system, graphics effects with shaders, modules/addons system, animated textures, styleable user interface, transparency, multi language, in game lua terminal, an OpenGL 1.1/2.0 ES engine that make possible to port to mobile platforms. Otclient is also flexible enough to create tibia tools like map editors just using scripts, because it wasn't designed to be just a client, instead otclient was designed to be a combination of a framework and tibia APIs.

Compiling

In short, if you need to compile OTClient, follow these tutorials:

Build and run with Docker

To build the image:

docker build -t edubart/otclient .

To run the built image:

# Disable access control for the X server.
xhost +

# Run the container image with the required bindings to the host devices and volumes.
docker run -it --rm \
  --env DISPLAY \
  --volume /tmp/.X11-unix:/tmp/.X11-unix \
  --device /dev/dri \
  --device /dev/snd edubart/otclient /bin/bash

# Enable access control for the X server.
xhost -

Need help?

Try to ask questions in otland, now we have a board for the project there, or talk with us at the gitter chat.

Bugs

Have found a bug? Please create an issue in our bug tracker

Contributing

We encourage you to contribute to otclient! You can make pull requests of any improvement in our github page, alternatively, see Contributing Wiki Page.

Contact

Talk directly with us at the gitter chat Join the chat at https://gitter.im/edubart/otclient.

License

Otclient is made available under the MIT License, thus this means that you are free to do whatever you want, commercial, non-commercial, closed or open.

otclient's People

Contributors

4drik avatar andrefaramir avatar asamy avatar bendol avatar comedinha avatar conde2 avatar cymruu avatar dalkon avatar davidkennedydev avatar diath avatar dominique120 avatar dspeichert avatar edubart avatar f0rmiga avatar gpedro avatar hrsantiago avatar iryont avatar jo3bingham avatar marksamman avatar marmichalski avatar mignari avatar quintinon avatar ranisalt avatar ricardoianelli avatar shawak avatar slavidodo avatar thesumm avatar vamo89 avatar vfjpl avatar zbizu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

otclient's Issues

Mount/outfit system errors

When right-click to open "select outfit" and the window appears an error is being logged:

ERROR: protected lua call failed: LUA ERROR: /game_outfit/outfit.lua:157: attempt to index upvalue 'mountCreature' (a nil value) stack traceback: [C]: ? /game_outfit/outfit.lua:157: in function </game_outfit/outfit.lua:148>

Another errors occurs when trying to press the right middle arrow to change the mount:

ERROR: protected lua call failed: LUA ERROR: /game_outfit/outfit.lua:275: attempt to get length of upvalue 'mounts' (a nil value) stack traceback: [C]: ? /game_outfit/outfit.lua:275: in function 'nextMountType' /game_outfit/outfitwindow.otui:95[@onClick]:2: in function </game_outfit/outfitwindow.otui:95[@onClick]:1>

And another when changing outfits:

ERROR: protected lua call failed: LUA ERROR: /game_outfit/outfit.lua:284: attempt to get length of upvalue 'mounts' (a nil value) stack traceback: [C]: ? /game_outfit/outfit.lua:284: in function 'previousMountType' /game_outfit/outfitwindow.otui:103[@onClick]:2: in function </game_outfit/outfitwindow.otui:103[@onClick]:1>

Screenshot of the terminal: http://prntscr.com/c675h

Original log: http://pastebin.com/rBwBhD6s

Can't open "rule violations" channel

Hello,
I can't open "rule violation" channel on character with GOD access.
I get this error in console:
"ERROR: unknown protocol speak type 9"

Maximum UIMiniWindow height

Inventory, containers, etc are miniwindows. Currently miniwindows can be resized to any new height, but there must be a maximum height just like tibia does when resizing.

writeLE64 only writes 6 bytes.

writeLE64 in framework/stdext/math.h is implemented wrong, instead of calling writeLE32 twice it calls writeLE16 for the first 2 bytes and then writeLE32 for the last 4.

Runes strange issue

When I created a rune (id: 2261), the screen went black on my char, he was still there because I was able to "look", even relogando the screen went black and only returned to normal after typing a command (command / tQuando I created a rune (id: 2261), the screen went black on my char, he was still there because I could give "look", even re-entered, the screen went black and only returned to normal after typing a command (command "/ t " that back to the temple), after closing and opening the client, this char was invisible and everyone else, the map was buggy in this part (wrong sprites being displayed).

  • I use some modified sprites, but that worked in the tibia client

Crash

== application crashed
app name: OTClient
app version: 0.5.0_dev
build compiler: gcc 4.7.0
build date: Jul 11 2012
build type: RelWithDebInfo
build revision: 0 (custom)
crash date: Jul 11 2012 19:38:30
exception: Access violation (0xc0000005)
exception address: 0x00667af5
backtrace:

Updater system

Client updater system using git flexible enough to also update individual modules

Drag and Drop issue

There is a Drag and Drop issue when you have some inventory in the middle of the screen and you drag some item from it. If you drop it not on the floor neither in another slot from the same inventory (like in the middle of two slots or in the Inventory border), it will just ignore the box and go through it to the floor.

The drop should just be canceled.

bugs on 9.61 and maybe more

  1. action: play for a while then logout and exit client, then after some time start it and login.. result: Minimap not saved.
  2. action: target something that is slooooow to kill, wait..... result: target drops automaticly
  3. action: easiest is to kill several monsters around, loot everyone at same time. result: containers and/or other ui is offscreen

Error on clients 8.61 +

This is inverted
messageModesMap[Otc::MessageNpcFrom] = 4;
messageModesMap[Otc::MessageNpcTo] = 5;

messageModesMap[Otc::MessageNpcTo] = 4;
messageModesMap[Otc::MessageNpcFrom] = 5;

Add missing stats to skills window

New stats introduced by tibia 8.7 or later

  • Food time
  • Offline training time
  • Speed
  • Total capacity
  • Base skills

They should be visible only in client versions that supports them

I can't aim items in container by action script

When I try aim any item from container by action script (from OTServ [now called Legancy]), nothing happen.

I tested it by this script:

function onUse(item, frompos, item2, topos)
print("It work")
return true
end

PS: This script work perfect on CIP Client and when I aim on ground in OTClient
PS2: Tested on 8.61 on Windows

Safe exit box

Before exiting the client a box must pop-up warning just like tibia does

Error

esp language have error, is not correcct

init.lua getBuildArch error

Using latest sources and I'm getting a Fatal error when starting the client "Unable to run script init.lua"

Logged error:

== application started at Jul 16 2012 13:32:00
ERROR: Failed to load script 'init.lua': LUA ERROR: /init.lua:8: attempt to call field 'getBuildArch' (a nil value)
stack traceback:
[C]: in function 'getBuildArch'
/init.lua:8: in main chunk
FATAL ERROR: Unable to run script init.lua!

Removing the piece of code below here allows to start the client without that error, but I guess somebody needs to look into it.

-- print first terminal message
g_logger.info(g_app.getName() .. ' ' .. g_app.getVersion() .. ' rev ' .. g_app.getBuildRevision() .. ' (' .. g_app.getBuildCommit() .. ') built on ' .. g_app.getBuildDate() .. ' for arch ' .. g_app.getBuildArch())

Extended opcode

When logging into a game an error appears in the log: ERROR: Unable to send extended opcode 1, extended opcodes are not enabled.

Overflow in operator>>(istream, Color)

When failing to read a Color from a stream, operator>> will call seekg like so:

in.seekg(-tmp.length()-1, ios_base::cur);

Since tmp.length() is unsigned this will perform an unsafe negation and overflow (and trash the stream), change it to:

in.seekg(-(std::istream::streampos)tmp.length()-1, ios_base::cur);

on both line 137 and 181.

Recreate graphics context when opengl context is lost

Old intel drivers may lose device context and all textures and buffers in opengl memory, causing the client to crash, this usually happens when minizing or switching full screen, to fix the opengl context must be created again, all textures reloaded and framebuffers invalidated

Rework minimap

The current minimap format is dat dependent, uses a lot of ram memory, has a heavy render function and is slow to load/render. It must be reworked from scratch with old machines performance in mind

Auto walk like tibia

Tibia sends and auto walk every ~10 tiles and recalculates again, otclient currently just tries one time and with a max of 127 steps.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.