Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 19 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

1. ![Logo](https://raw.githubusercontent.com/mehah/otclient/main/src/otcicon.ico) [What is otclient?](#whatisotclient)
2. 🚀 [Features](#features)
6. <img height="16" src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png" alt="Android"> [The Mobile Project](#themobileproject)
6. <img height="16" src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png"> [The Mobile Project](#themobileproject)
3. 🔨 [Compiling](#compiling)
4. 🐳 [Docker](#docker)
5. 🩺 [Need help?](#need-help?)
Expand Down Expand Up @@ -151,7 +151,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

</details>

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/001_Bone.gif?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/002_aura.gif?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/003_particula.gif?raw=true" width="250" alt="Space Invaders" style="max-width: 250px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/001_Bone.gif?raw=true" width="200" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/002_aura.gif?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Creature/003_particula.gif?raw=true" width="250" style="max-width: 250px;"> |
|-------------------------------------------|---------------|-------------------------|
| ThingCategory Attached Effect | Texture(Png) Attached Effect | <center> Particule </center> |

Expand Down Expand Up @@ -215,7 +215,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

- Tile Widget [Wiki](https://github.com/mehah/otclient/wiki/Tutorial-Attached-Effects)

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/001_attachedeffect.gif?raw=true" width="250" alt="Haskanoid Video" style="max-width:250px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/002_widget.png?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/raw/main/Picture/Attached%20Effect/Tile/003_particulas.gif?raw=true" width="310" alt="Space Invaders" style="max-width: 310px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/001_attachedeffect.gif?raw=true" width="250" style="max-width:250px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Attached%20Effect/Tile/002_widget.png?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/raw/main/Picture/Attached%20Effect/Tile/003_particulas.gif?raw=true" width="310" style="max-width: 310px;"> |
|-------------------------------------------|---------------|-------------------------|
|<center>Title Attached Effect</center> | <center> Title Widget </center>| <center>Title Particule</center> |

Expand Down Expand Up @@ -248,12 +248,17 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu
In short, if the ping gets high, the camera moves slower, trying to keep up with the server's response time. If the ping goes down soon after, the camera will move faster. Of course, this all depends on your character's speed.
</details>

- <details>
<summary>Texture Atlas system</summary>
<br>

</details>


##### 🙋 Community (Features)
- Mobile Support [@tuliomagalhaes](https://github.com/tuliomagalhaes) & [@BenDol](https://github.com/BenDol) & [@SkullzOTS](https://github.com/SkullzOTS)

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_ingame.png?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_interface.png?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/003_patrikq.jpg?raw=true" width="270" alt="Space Invaders" style="max-width: 270px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_ingame.png?raw=true" width="200" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/001_interface.png?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Android/003_patrikq.jpg?raw=true" width="270" style="max-width: 270px;"> |
|-------------------------------------------|---------------|-------------------------|
| Interface | Density Pixel | Joystick (patrykq) |

Expand All @@ -271,7 +276,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

</details>

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/001.png?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/002_ingame.png?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/003_future.png?raw=true" width="200" alt="Space Invaders" style="max-width: 200px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/001.png?raw=true" width="200" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/002_ingame.png?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Discord/003_future.png?raw=true" width="200" style="max-width: 200px;"> |
|-------------------------------------------|---------------|-------------------------|
| Example interface | Example in game | future discord-game-sdk |

Expand All @@ -280,7 +285,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu
- Access to widget children via widget.childId by [@Hugo0x1337](https://github.com/Hugo0x1337)
- Shader System Fix (CTRL + Y) by [@FreshyPeshy](https://github.com/FreshyPeshy)

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/001_creature.gif?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/003_map.gif?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/002_mount.gif?raw=true" width="200" alt="Space Invaders" style="max-width: 200px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/001_creature.gif?raw=true" width="200" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/003_map.gif?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/002_mount.gif?raw=true" width="200" style="max-width: 200px;"> |
|-------------------------------------------|---------------|-------------------------|
| Creature | Map | Mount |

Expand Down Expand Up @@ -339,7 +344,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

</details>
<p align="center">
<img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/typing%20ico/001.gif?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;">
<img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/typing%20ico/001.gif?raw=true" width="200" style="max-width:200px;">

</p>

Expand All @@ -352,7 +357,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

</details>
<p align="center">
<img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/smooth/001_smooth.gif?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;">
<img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/smooth/001_smooth.gif?raw=true" width="200" style="max-width:200px;">

</p>

Expand Down Expand Up @@ -408,7 +413,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu
</details>


| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/001_interface.png?raw=true" width="300" alt="Haskanoid Video" style="max-width:300px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/002_ingame.png?raw=true" width="300" alt="Peoplemon by Alex Stuart" style="max-width: 300px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/001_interface.png?raw=true" width="300" style="max-width:300px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Layout%2013/002_ingame.png?raw=true" width="300" style="max-width: 300px;"> |
|-------------------------------------------|---------------|
|<center> Interface </center> | <center>In-game</center> |
- Imbuement tracker by [@Reyaleman](https://github.com/reyaleman)
Expand Down Expand Up @@ -437,7 +442,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu

- Shader with Framebuffer ([@SkullzOTS](https://github.com/SkullzOTS), [@Mryukiimaru](https://github.com/Mryukiimaru), [@JeanTheOne](https://github.com/JeanTheOne), [@KizaruHere](https://github.com/KizaruHere))

| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/001_creature.gif?raw=true" width="200" alt="Haskanoid Video" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/002_items.gif?raw=true" width="200" alt="Peoplemon by Alex Stuart" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/003_UICreature.gif?raw=true" width="110" alt="Space Invaders" style="max-width: 110px;"> |
| <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/001_creature.gif?raw=true" width="200" style="max-width:200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/002_items.gif?raw=true" width="200" style="max-width: 200px;"> | <img src="https://github.com/kokekanon/OTredemption-Picture-NODELETE/blob/main/Picture/Shader/Framebuffer/003_UICreature.gif?raw=true" width="110" style="max-width: 110px;"> |
|-------------------------------------------|---------------|-------------------------|
| <center>Creature.</center> |<center> Items</center> |<center> UICreature </center> |

Expand All @@ -454,7 +459,7 @@ Beyond of it's flexibility with scripts, otclient comes with tons of other featu
- keybinds
- Cam system

## <a name="themobileproject"><img height="32" src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png" alt="Android"> The Mobile Project </a>
## <a name="themobileproject"><img height="32" src="https://raw.githubusercontent.com/github/explore/80688e429a7d4ef2fca1e82350fe8e3517d3494d/topics/android/android.png"> The Mobile Project </a>
The Mobile Project
This is a fork of edubart's otclient. The objective of this fork it's to develop a runnable otclient on mobiles devices.

Expand Down Expand Up @@ -534,9 +539,9 @@ Have found a bug? Please create an issue in our [bug tracker](https://github.com
| TFS 1.5 <br> (8.0 / 8.60) | Downgrade nekiro / <br>MillhioreBT | [force-new-walking-formula: true](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L21) <br> [item-ticks-per-frame: 500](https://github.com/mehah/otclient/blob/cf7badda978de88cb3724615688e3d9da2ff4207/data/setup.otml#L32) | ✅ |
| TFS 1.4.2 <br> (10.98) | Release Otland | | ✅ |
| TFS 1.6 <br>(13.10) | Main repo <br> otland (2024) | [See wiki](https://github.com/mehah/otclient/wiki/Tutorial-to-Use-OTC-in-TFS-main) | ✅ |
| Canary <br> (13.21 / 13.32 / 13.40) | OpenTibiaBr | [Assets , Enable HTTP login and port 80](https://docs.opentibiabr.com/opentibiabr/projects/otclient-redemption#how-to-connect-on-canary-with-otclient-redemption) | ✅ |
| Canary <br> (14.05) | OpenTibiaBr | [Assets , Enable HTTP login and port 80](https://docs.opentibiabr.com/opentibiabr/projects/otclient-redemption#how-to-connect-on-canary-with-otclient-redemption) | |

| Canary <br> (13.21 / 13.32 / 13.40) | OpenTibiaBr | [See Wiki](https://docs.opentibiabr.com/opentibiabr/projects/otclient-redemption/about#how-to-connect-on-canary-with-otclient-redemption) | ✅ |
| Canary <br> (14.00 ~ 14.12) | OpenTibiaBr | [See Wiki](https://docs.opentibiabr.com/opentibiabr/projects/otclient-redemption/about#how-to-connect-on-canary-with-otclient-redemption) | |
| Canary <br> (15.00 ~ 15.10) | OpenTibiaBr | [See Wiki](https://docs.opentibiabr.com/opentibiabr/projects/otclient-redemption/about#how-to-connect-on-canary-with-otclient-redemption) | ❌ |



Expand Down
Binary file modified data/images/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/game/cyclopedia/magical_off.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/images/game/cyclopedia/magical_on.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified data/images/ui/item.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion data/setup.otml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
game
sprite-size: 32
last-supported-version: 1340
last-supported-version: 1412
draw-typing: false
typing-icon: /images/game/console/typing

Expand Down
2 changes: 2 additions & 0 deletions modules/game_blessing/blessing.lua
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ function onUpdateBlessDialog(data)
label.text:setText(entry.playerBlessCount .. " (" .. entry.store .. ")")
if totalCount >= 1 then
label.enabled:setImageSource("images/" .. i .. "_on")
else
label.enabled:setImageSource("images/" .. i)
end
end

Expand Down
30 changes: 28 additions & 2 deletions modules/game_cyclopedia/cyclopedia_widgets.otui
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,10 @@ CharmItem < UICheckBox
image-source: /images/ui/item
image-border: 10
phantom: true
@onSetup: |
if g_game.getClientVersion() >= 1410 then
self:setVisible(false)
end
Label
id: Value
anchors.centerIn: parent
Expand All @@ -736,8 +740,14 @@ CharmItem < UICheckBox
margin-bottom: 7
image-source: /images/ui/panel_flat
image-border: 10
size: 37 37
phantom: true
@onSetup: |
if g_game.getClientVersion() >= 1410 then
self:setSize("46 46")
self:setMarginBottom(-5)
else
self:setSize("37 37")
end
UIWidget
size: 32 32
id: image
Expand All @@ -749,6 +759,22 @@ CharmItem < UICheckBox
anchors.centerIn: parent
image-source: /images/ui/ditherpattern
phantom: true
@onSetup: |
if g_game.getClientVersion() >= 1410 then
self:setSize("43 43")
else
self:setSize("35 35")
end
UIWidget
id: border
anchors.centerIn: parent
phantom: true
@onSetup: |
if g_game.getClientVersion() >= 1410 then
self:setVisible(true)
else
self:setVisible(false)
end
MarkListItem < ButtonBox
icon-size: 11 11
icon-offset: 3 3
Expand Down Expand Up @@ -1422,4 +1448,4 @@ BlessCreate < UIWidget
margin-left: 8
anchors.left: prev.right
anchors.verticalCenter: parent.verticalCenter
focusable: false
focusable: false
32 changes: 28 additions & 4 deletions modules/game_cyclopedia/game_cyclopedia.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ local ButtonBestiary = nil
local tabStack = {}
local previousType = nil
local windowTypes = {}

local magicalArchives = nil
function toggle(defaultWindow)
if not controllerCyclopedia.ui then
return
Expand Down Expand Up @@ -58,6 +58,7 @@ function controllerCyclopedia:onGameStart()
character = buttonSelection:recursiveGetChildById('character')
bosstiary = buttonSelection:recursiveGetChildById('bosstiary')
bossSlot = buttonSelection:recursiveGetChildById('bossSlot')
magicalArchives = buttonSelection:recursiveGetChildById('magicalArchives')

windowTypes = {
items = { obj = items, func = showItems },
Expand All @@ -67,7 +68,8 @@ function controllerCyclopedia:onGameStart()
houses = { obj = houses, func = showHouse },
character = { obj = character, func = showCharacter },
bosstiary = { obj = bosstiary, func = showBosstiary },
bossSlot = { obj = bossSlot, func = showBossSlot }
bossSlot = { obj = bossSlot, func = showBossSlot },
magicalArchives = { obj = magicalArchives, func = showMagicalArchives },
}

g_ui.importStyle("cyclopedia_widgets")
Expand All @@ -93,6 +95,12 @@ function controllerCyclopedia:onGameStart()
onUpdateCyclopediaCharacterItemSummary = Cyclopedia.loadCharacterItems,
onParseCyclopediaCharacterAppearances = Cyclopedia.loadCharacterAppearances,
onParseCyclopediaStoreSummary = Cyclopedia.onParseCyclopediaStoreSummary,
-- character 14.10
onCyclopediaCharacterOffenceStats = Cyclopedia.onCyclopediaCharacterOffenceStats,
onCyclopediaCharacterDefenceStats = Cyclopedia.onCyclopediaCharacterDefenceStats,
onCyclopediaCharacterMiscStats = Cyclopedia.onCyclopediaCharacterMiscStats,


-- charms
onUpdateBestiaryCharmsData = Cyclopedia.loadCharms,
-- items
Expand Down Expand Up @@ -193,7 +201,9 @@ function controllerCyclopedia:onGameStart()
}})

end

if g_game.getClientVersion() >= 1410 then
controllerCyclopedia.ui.CharmsBase.Icon:setImageSource("/game_cyclopedia/images/monster-icon-bonuspoints")
end
end


Expand Down Expand Up @@ -227,6 +237,20 @@ function controllerCyclopedia:onTerminate()
trackerMiniWindowBosstiary:destroy()
trackerMiniWindowBosstiary = nil
end

if CyclopediaButton then
CyclopediaButton:destroy()
CyclopediaButton = nil
end
if ButtonBossSlot then
ButtonBossSlot:destroy()
ButtonBossSlot = nil
end
if ButtonBestiary then
ButtonBestiary:destroy()
ButtonBestiary = nil
end
onTerminateCharm()
end

function hide()
Expand Down Expand Up @@ -257,7 +281,7 @@ function show(defaultWindow)
controllerCyclopedia.ui:raise()
controllerCyclopedia.ui:focus()
SelectWindow(defaultWindow, false)
controllerCyclopedia.ui.GoldBase.Value:setText(Cyclopedia.formatGold(g_game.getLocalPlayer():getResourceBalance(1)))
controllerCyclopedia.ui.GoldBase.Value:setText(Cyclopedia.formatGold(g_game.getLocalPlayer():getResourceBalance()))
end

function toggleBack()
Expand Down
Loading
Loading