From 19fad11949d31bc440421301d4494eb7600ad315 Mon Sep 17 00:00:00 2001 From: OTCv8 Date: Thu, 17 Mar 2022 20:50:37 +0000 Subject: [PATCH] Updated to OTCv8 3.1 rev 157 --- data/images/ui/checkbox_round.png | Bin 517 -> 12156 bytes data/styles/40-outfitwindow.otui | 476 +++++++ layouts/retro/styles/40-outfitwindow.otui | 467 +++++++ modules/game_actionbar/actionbar.lua | 3 - modules/game_actionbar/actionbar.otui | 9 +- modules/game_actionbar/sideactionbar.otui | 10 +- .../default_configs/vBot_4.41/vBot/antiRs.lua | 14 - .../vBot_4.41/vBot/lib/CaveBot.lua | 0 .../vBot_4.41/vBot/lib/Container.lua | 159 --- .../vBot_4.41/vBot/lib/Map.lua | 0 .../vBot_4.41/vBot/lib/Player.lua | 100 -- .../vBot_4.41/vBot/lib/Spectators.lua | 0 .../vBot_4.41/vBot/quiver_manager.lua | 111 -- .../vBot_4.41/vBot/version.txt | 1 - .../{vBot_4.41 => vBot_4.5}/_Loader.lua | 1 + .../cavebot/actions.lua | 80 +- .../{vBot_4.41 => vBot_4.5}/cavebot/bank.lua | 0 .../cavebot/buy_supplies.lua | 0 .../cavebot/cavebot.lua | 0 .../cavebot/cavebot.otui | 0 .../cavebot/clear_tile.lua | 0 .../cavebot/config.lua | 0 .../cavebot/config.otui | 0 .../cavebot/d_withdraw.lua | 0 .../cavebot/depositor.lua | 1 + .../{vBot_4.41 => vBot_4.5}/cavebot/doors.lua | 0 .../cavebot/editor.lua | 0 .../cavebot/editor.otui | 0 .../cavebot/example_functions.lua | 0 .../cavebot/extension_template.lua | 0 .../cavebot/imbuing.lua | 0 .../cavebot/inbox_withdraw.lua | 0 .../{vBot_4.41 => vBot_4.5}/cavebot/lure.lua | 0 .../cavebot/minimap.lua | 0 .../cavebot/pos_check.lua | 0 .../cavebot/recorder.lua | 0 .../cavebot/sell_all.lua | 20 +- .../cavebot/supply_check.lua | 0 .../cavebot/tasker.lua | 0 .../cavebot/travel.lua | 0 .../cavebot/walking.lua | 0 .../cavebot/withdraw.lua | 0 .../targetbot/creature.lua | 0 .../targetbot/creature_attack.lua | 0 .../targetbot/creature_editor.lua | 1 + .../targetbot/creature_editor.otui | 0 .../targetbot/creature_priority.lua | 19 +- .../targetbot/looting.lua | 0 .../targetbot/looting.otui | 0 .../targetbot/target.lua | 0 .../targetbot/target.otui | 0 .../targetbot/walking.lua | 0 .../vBot/AttackBot.lua | 4 +- .../vBot/AttackBot.otui | 0 .../vBot/BotServer.lua | 0 .../vBot/BotServer.otui | 0 .../vBot/Conditions.lua | 0 .../vBot/Conditions.otui | 0 .../vBot/Containers.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/Dropper.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/Equipper.lua | 5 +- .../{vBot_4.41 => vBot_4.5}/vBot/HealBot.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/HealBot.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/Sio.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/alarms.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/alarms.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/analyzer.lua | 0 .../vBot/analyzer.otui | 0 .../default_configs/vBot_4.5/vBot/antiRs.lua | 33 + .../vBot/cast_food.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/cavebot.lua | 0 .../vBot/cavebot_control_panel.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/combo.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/combo.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/configs.lua | 0 .../vBot/depositer_config.lua | 0 .../vBot/depositer_config.otui | 0 .../vBot/depot_withdraw.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/eat_food.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/equip.lua | 0 .../vBot/equipper.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/exeta.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/extras.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/extras.otui | 0 .../vBot/hold_target.lua | 0 .../vBot/ingame_editor.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/items.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/main.lua | 2 +- .../vBot/new_cavebot_lib.lua | 0 .../vBot/new_healer.lua | 0 .../vBot/new_healer.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/npc_talk.lua | 0 .../vBot/playerlist.lua | 74 +- .../vBot/playerlist.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/pushmax.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/pushmax.otui | 0 .../vBot_4.5/vBot/quiver_label.lua | 58 + .../vBot_4.5/vBot/quiver_manager.lua | 90 ++ .../{vBot_4.41 => vBot_4.5}/vBot/siolist.otui | 0 .../vBot/spy_level.lua | 0 .../{vBot_4.41 => vBot_4.5}/vBot/supplies.lua | 0 .../vBot/supplies.otui | 0 .../{vBot_4.41 => vBot_4.5}/vBot/tools.lua | 0 .../default_configs/vBot_4.5/vBot/version.txt | 1 + .../{vBot_4.41 => vBot_4.5}/vBot/vlib.lua | 6 +- .../vBot/xeno_menu.lua | 0 modules/game_npctrade/npctrade.lua | 29 +- modules/game_outfit/outfit.lua | 1148 ++++++++++++----- modules/game_outfit/outfit.otmod | 6 +- modules/game_outfit/outfitwindow.otui | 220 +--- modules/game_topbar/topbar.lua | 8 + otclient_dx.exe | Bin 9668696 -> 9668696 bytes otclient_gl.exe | Bin 9854040 -> 9854040 bytes otclientv8.apk | Bin 11662327 -> 11676180 bytes 114 files changed, 2172 insertions(+), 984 deletions(-) create mode 100644 data/styles/40-outfitwindow.otui create mode 100644 layouts/retro/styles/40-outfitwindow.otui delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/antiRs.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/lib/CaveBot.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/lib/Container.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/lib/Map.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/lib/Player.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/lib/Spectators.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/quiver_manager.lua delete mode 100644 modules/game_bot/default_configs/vBot_4.41/vBot/version.txt rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/_Loader.lua (98%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/actions.lua (83%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/bank.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/buy_supplies.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/cavebot.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/cavebot.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/clear_tile.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/config.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/config.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/d_withdraw.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/depositor.lua (99%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/doors.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/editor.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/editor.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/example_functions.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/extension_template.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/imbuing.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/inbox_withdraw.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/lure.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/minimap.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/pos_check.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/recorder.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/sell_all.lua (79%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/supply_check.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/tasker.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/travel.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/walking.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/cavebot/withdraw.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/creature.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/creature_attack.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/creature_editor.lua (98%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/creature_editor.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/creature_priority.lua (69%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/looting.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/looting.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/target.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/target.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/targetbot/walking.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/AttackBot.lua (99%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/AttackBot.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/BotServer.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/BotServer.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Conditions.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Conditions.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Containers.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Dropper.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Equipper.lua (99%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/HealBot.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/HealBot.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/Sio.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/alarms.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/alarms.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/analyzer.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/analyzer.otui (100%) create mode 100644 modules/game_bot/default_configs/vBot_4.5/vBot/antiRs.lua rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/cast_food.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/cavebot.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/cavebot_control_panel.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/combo.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/combo.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/configs.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/depositer_config.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/depositer_config.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/depot_withdraw.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/eat_food.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/equip.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/equipper.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/exeta.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/extras.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/extras.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/hold_target.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/ingame_editor.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/items.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/main.lua (97%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/new_cavebot_lib.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/new_healer.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/new_healer.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/npc_talk.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/playerlist.lua (73%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/playerlist.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/pushmax.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/pushmax.otui (100%) create mode 100644 modules/game_bot/default_configs/vBot_4.5/vBot/quiver_label.lua create mode 100644 modules/game_bot/default_configs/vBot_4.5/vBot/quiver_manager.lua rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/siolist.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/spy_level.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/supplies.lua (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/supplies.otui (100%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/tools.lua (100%) create mode 100644 modules/game_bot/default_configs/vBot_4.5/vBot/version.txt rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/vlib.lua (99%) rename modules/game_bot/default_configs/{vBot_4.41 => vBot_4.5}/vBot/xeno_menu.lua (100%) diff --git a/data/images/ui/checkbox_round.png b/data/images/ui/checkbox_round.png index e45bae806ef41b22d9047dc78e4ffdbcce8e11bb..71672a786684b4b3db17ad3d9249371a7a9e0171 100644 GIT binary patch literal 12156 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 literal 517 zcmV+g0{Z=lP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!T(ig)0Xj0r^4v1b!Rde% zJ8yTsURkT%5)3#9`Rw<5uuKzN*9C;4D3HrNkZ>6kM?`Le=2A)o*53M_gYPAZZ(fGQQ5F96%&p%R>-y-47_zs67 zs)5z(4M8LKYbh2AQW`ty$s}DSJONr% z1J-Uola}W58IewD={}n!%Qu@1ESDb_wKSj2D2hx>kd`z}BSNp&BO9RG?fR=9a8v3( z&{CL;2=*{axm@~}TFPcJht`D)L + @onClick: modules.game_outfit.rotatePreview(self:getId()) + + UICreature + id: creature + size: 100 100 + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + +ConfigurePanel < WindowPanel + width: 150 + padding: 3 + + Label + id: title + margin-top: 5 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Configure + + Panel + id: options + anchors.fill: parent + anchors.top: prev.bottom + margin-top: 1 + padding: 5 + layout: verticalBox + +SmallPreviewTile < UICheckBox + padding: 5 + @onClick: modules.game_outfit.onElementSelect(self) + image-source: /images/ui/button + image-color: #dfdfdf + image-clip: 0 0 22 23 + image-border: 10 + opacity: 1.0 + + $pressed: + image-clip: 0 46 22 23 + + $hover: + opacity: 0.75 + + UICreature + id: creature + size: 60 60 + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + phantom: true + creature-fixed-size: true + + UIWidget + id: item + anchors.fill: prev + phantom: true + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + text-align: center + font: verdana-11px-rounded + + $checked: + border-width: 1 + border-color: #ffffff + + $!checked: + border-width: 0 + +LargePreviewTile < UICheckBox + padding: 15 15 2 15 + @onClick: modules.game_outfit.onElementSelect(self) + image-source: /images/ui/button + image-color: #dfdfdf + image-clip: 0 0 22 23 + image-border: 10 + opacity: 1.0 + + $pressed: + image-clip: 0 46 22 23 + + UICreature + id: outfit + size: 60 60 + anchors.left: parent.left + margin-left: 10 + anchors.top: parent.top + phantom: true + + UICreature + id: mount + size: 60 60 + anchors.right: parent.right + margin-right: 10 + anchors.top: parent.top + phantom: true + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + text-align: center + font: verdana-11px-rounded + + $checked: + border-width: 1 + border-color: #ffffff + + $!checked: + border-width: 0 + +FilterPanel < WindowPanel + size: 242 56 + padding-left: 10 + padding-right: 10 + padding-bottom: 8 + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + text-align: center + anchors.top: parent.top + font: verdana-11px-rounded + text: Filter outfits + + Button + id: clear + anchors.right: parent.right + anchors.bottom: parent.bottom + size: 20 20 + text: X + @onClick: modules.game_outfit.clearFilterText() + + TextEdit + id: filterWindow + anchors.right: prev.left + anchors.left: parent.left + anchors.bottom: parent.bottom + height: 20 + placeholder: Type to search + placehoder-color: black + @onTextChange: modules.game_outfit.onFilterList(self:getText()) + +PresetPanel < WindowPanel + size: 242 47 + padding-left: 2 + padding-bottom: 2 + + Label + id: title + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Manage Presets + + Button + id: new + size: 45 18 + font: cipsoftFont + text: New + anchors.left: parent.left + anchors.bottom: parent.bottom + margin-bottom: 6 + margin-left: 25 + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + Button + id: rename + size: 45 18 + font: cipsoftFont + text: Rename + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + + Button + id: save + size: 45 18 + font: cipsoftFont + text: Save + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + Button + id: delete + size: 45 18 + font: cipsoftFont + text: Delete + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + +PreviewPanel < WindowPanel + size: 477 205 + + Label + id: title + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Preview Selection + + FlatPanel + id: options + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + margin: 3 + margin-top: 19 + padding: 5 + width: 120 + layout: verticalBox + + Label + font: verdana-11px-rounded + text-align: center + text: Show: + + PreviewCreaturePanel + id: creaturePanel + margin: 3 + margin-top: 19 + anchors.fill: parent + anchors.left: prev.right + +AppearancePanel < WindowPanel + layout: + type: verticalBox + fit-children: true + + Panel + id: categories + margin-top: 20 + layout: + type: verticalBox + fit-children: true + + PartCheckBoxes + id: parts + margin-top: 3 + margin-left: 7 + + Panel + id: colorBoxPanel + padding: 2 2 2 5 + layout: + type: grid + cell-size: 14 14 + cell-spacing: 2 + num-columns: 19 + num-lines: 7 + fit-children: true + +ListBox < ScrollableFlatPanel + width: 242 + padding-top: 6 + padding-left: 6 + padding-bottom: 6 + layout: + type: grid + num-columns: 2 + cell-size: 106 100 + cell-spacing: 6 + flow: true + +OutfitWindow < MainWindow + size: 760 519 + padding-top: 35 + !text: tr('Customize Character') + + FilterPanel + id: search + anchors.top: parent.top + anchors.right: parent.right + + PresetPanel + id: preset + anchors.fill: prev + visible: false + + ListBox + id: list + anchors.top: prev.bottom + margin-top: 5 + anchors.right: parent.right + anchors.bottom: bottomSep.top + margin-bottom: 5 + vertical-scrollbar: scrollBar + + VerticalScrollBar + id: scrollBar + anchors.top: list.top + anchors.bottom: list.bottom + anchors.right: list.right + step: 14 + pixels-scroll: true + + PreviewPanel + id: preview + anchors.top: parent.top + anchors.left: parent.left + + ConfigurePanel + id: config + anchors.top: prev.bottom + margin-top: 5 + anchors.bottom: bottomSep.top + margin-bottom: 5 + anchors.left: parent.left + + AppearancePanel + id: appearance + anchors.left: prev.right + anchors.top: preview.bottom + anchors.right: preview.right + margin: 5 0 5 5 + + Label + anchors.top: prev.top + margin-top: 8 + anchors.horizontalCenter: prev.horizontalCenter + font: verdana-11px-rounded + text: Change Appearance + + HorizontalSeparator + id: bottomSep + anchors.right: parent.right + anchors.left: parent.left + anchors.bottom: closeButton.top + margin-bottom: 8 + + Button + id: closeButton + !text: tr('Cancel') + font: cipsoftFont + anchors.right: parent.right + anchors.bottom: parent.bottom + size: 45 21 + @onClick: modules.game_outfit.destroy() + + Button + id: okButton + !text: tr('Ok') + font: cipsoftFont + anchors.right: prev.left + margin-right: 7 + anchors.bottom: parent.bottom + size: 45 21 + @onClick: modules.game_outfit.accept() \ No newline at end of file diff --git a/layouts/retro/styles/40-outfitwindow.otui b/layouts/retro/styles/40-outfitwindow.otui new file mode 100644 index 0000000..9bc120e --- /dev/null +++ b/layouts/retro/styles/40-outfitwindow.otui @@ -0,0 +1,467 @@ +PartCheckBoxes < Panel + height: 18 + + ButtonBox + id: head + font: cipsoftFont + !text: tr('Head') + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + checked: true + width: 62 + height: 18 + + ButtonBox + id: primary + font: cipsoftFont + !text: tr('Primary') + anchors.verticalCenter: prev.verticalCenter + anchors.left: prev.right + width: 62 + height: 18 + + ButtonBox + id: secondary + font: cipsoftFont + !text: tr('Secondary') + anchors.verticalCenter: prev.verticalCenter + anchors.left: prev.right + width: 62 + height: 18 + + ButtonBox + id: detail + font: cipsoftFont + !text: tr('Detail') + anchors.verticalCenter: prev.verticalCenter + anchors.left: prev.right + width: 62 + height: 18 + + ButtonBox + id: randomizeButton + font: cipsoftFont + !text: tr('Randomize') + !tooltip: tr('Randomize characters outfit') + anchors.verticalCenter: prev.verticalCenter + anchors.left: prev.right + width: 62 + height: 18 + @onClick: modules.game_outfit.randomize() + +AppearanceCategory < Panel + height: 20 + + $!first: + margin-top: 2 + + CheckBox + id: checkBox + image-source: /images/ui/checkbox_round + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + margin-left: 5 + width: 90 + text: Outfit: + @onClick: modules.game_outfit.onOptionChange(self:getParent():getId(), self:isChecked(), self) + + FlatLabel + id: description + anchors.verticalCenter: prev.verticalCenter + anchors.left: prev.right + anchors.right: parent.right + margin-right: 5 + text-align: center + text: - + +WindowPanel < Panel + image-source: /images/ui/window + padding-top: 3 + padding-left: 7 + padding-bottom: 7 + padding-right: 7 + image-border: 4 + image-border-top: 17 + +OptionsCheckBox < Panel + image-source: /images/ui/panel_flat + image-border: 1 + padding: 2 + padding-left: 7 + height: 22 + + CheckBox + id: check + anchors.centerIn: parent + anchors.left: parent.left + anchors.right: parent.right + text-align: left + @onCheckChange: modules.game_outfit.onOptionChange(self:getParent():getId(), self:isChecked(), self) + + $!first: + margin-top: 3 + +PreviewCreaturePanel < FlatPanel + padding: 3 + + Button + id: rotateLeft + anchors.left: parent.left + anchors.bottom: parent.bottom + size: 20 20 + text: < + @onClick: modules.game_outfit.rotatePreview(self:getId()) + + Button + id: rotateRight + anchors.right: parent.right + anchors.bottom: parent.bottom + size: 20 20 + text: > + @onClick: modules.game_outfit.rotatePreview(self:getId()) + + UICreature + id: creature + size: 100 100 + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + +ConfigurePanel < WindowPanel + width: 150 + padding: 3 + + Label + id: title + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Configure + + Panel + id: options + anchors.fill: parent + anchors.top: prev.bottom + margin-top: 1 + padding: 5 + layout: verticalBox + +SmallPreviewTile < UICheckBox + padding: 5 + image-source: /images/ui/button + @onClick: modules.game_outfit.onElementSelect(self) + image-clip: 0 0 22 23 + image-border: 3 + + $pressed: + image-clip: 0 46 22 23 + + UICreature + id: creature + size: 60 60 + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + phantom: true + creature-fixed-size: true + + UIWidget + id: item + anchors.fill: prev + phantom: true + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + text-align: center + font: verdana-11px-rounded + + $checked: + border-width: 1 + border-color: #ffffff + + $!checked: + border-width: 0 + +LargePreviewTile < UICheckBox + padding: 15 + padding-bottom: 2 + image-source: /images/ui/button + @onClick: modules.game_outfit.onElementSelect(self) + image-clip: 0 0 22 23 + image-border: 3 + + $pressed: + image-clip: 0 46 22 23 + + UICreature + id: outfit + size: 60 60 + anchors.left: parent.left + margin-left: 10 + anchors.top: parent.top + phantom: true + + UICreature + id: mount + size: 60 60 + anchors.right: parent.right + margin-right: 10 + anchors.top: parent.top + phantom: true + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + text-align: center + font: verdana-11px-rounded + + $checked: + border-width: 1 + border-color: #ffffff + + $!checked: + border-width: 0 + +FilterPanel < WindowPanel + size: 242 47 + + Label + id: title + anchors.left: parent.left + anchors.right: parent.right + text-align: center + anchors.top: parent.top + font: verdana-11px-rounded + text: Filter outfits + + Button + id: clear + anchors.right: parent.right + anchors.bottom: parent.bottom + size: 20 20 + text: X + @onClick: modules.game_outfit.clearFilterText() + + TextEdit + id: filterWindow + anchors.right: prev.left + anchors.left: parent.left + anchors.bottom: parent.bottom + height: 20 + placeholder: Type to search + @onTextChange: modules.game_outfit.onFilterList(self:getText()) + +PresetPanel < WindowPanel + size: 242 47 + padding-left: 2 + padding-bottom: 2 + + Label + id: title + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Manage Presets + + Button + id: new + size: 45 18 + font: cipsoftFont + text: New + anchors.left: parent.left + anchors.bottom: parent.bottom + margin-bottom: 6 + margin-left: 25 + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + Button + id: rename + size: 45 18 + font: cipsoftFont + text: Rename + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + + Button + id: save + size: 45 18 + font: cipsoftFont + text: Save + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + + Button + id: delete + size: 45 18 + font: cipsoftFont + text: Delete + anchors.left: prev.right + margin-left: 3 + anchors.verticalCenter: prev.verticalCenter + @onClick: modules.game_outfit.onPresetButtonPress(self:getId()) + +PreviewPanel < WindowPanel + size: 477 205 + + Label + id: title + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + font: verdana-11px-rounded + text: Preview Selection + + FlatPanel + id: options + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + margin: 3 + margin-top: 19 + padding: 5 + width: 120 + layout: verticalBox + + Label + font: verdana-11px-rounded + text-align: center + text: Show: + + PreviewCreaturePanel + id: creaturePanel + margin: 3 + margin-top: 19 + anchors.fill: parent + anchors.left: prev.right + +AppearancePanel < WindowPanel + layout: + type: verticalBox + fit-children: true + + Panel + id: categories + margin-top: 20 + layout: + type: verticalBox + fit-children: true + + PartCheckBoxes + id: parts + margin-top: 10 + + FlatPanel + id: colorBoxPanel + margin-top: 2 + padding: 2 + layout: + type: grid + cell-size: 14 14 + cell-spacing: 2 + num-columns: 19 + num-lines: 7 + fit-children: true + +ListBox < ScrollableFlatPanel + width: 242 + padding-top: 6 + padding-left: 6 + padding-bottom: 6 + layout: + type: grid + num-columns: 2 + cell-size: 106 100 + cell-spacing: 6 + flow: true + +OutfitWindow < MainWindow + size: 755 519 + padding-top: 27 + !text: tr('Customize Character') + + FilterPanel + id: search + anchors.top: parent.top + anchors.right: parent.right + + PresetPanel + id: preset + anchors.fill: prev + visible: false + + ListBox + id: list + anchors.top: prev.bottom + margin-top: 5 + anchors.right: parent.right + anchors.bottom: bottomSep.top + margin-bottom: 5 + vertical-scrollbar: scrollBar + + VerticalScrollBar + id: scrollBar + anchors.top: list.top + anchors.bottom: list.bottom + anchors.right: list.right + step: 14 + pixels-scroll: true + + PreviewPanel + id: preview + anchors.top: parent.top + anchors.left: parent.left + + ConfigurePanel + id: config + anchors.top: prev.bottom + margin-top: 5 + anchors.bottom: bottomSep.top + margin-bottom: 5 + anchors.left: parent.left + + AppearancePanel + id: appearance + anchors.left: prev.right + anchors.top: preview.bottom + anchors.right: list.left + margin: 5 + + Label + anchors.top: prev.top + margin-top: 3 + anchors.horizontalCenter: prev.horizontalCenter + font: verdana-11px-rounded + text: Change Appearance + + HorizontalSeparator + id: bottomSep + anchors.right: parent.right + anchors.left: parent.left + anchors.bottom: closeButton.top + margin-bottom: 8 + + Button + id: closeButton + !text: tr('Cancel') + font: cipsoftFont + anchors.right: parent.right + anchors.bottom: parent.bottom + size: 45 21 + @onClick: modules.game_outfit.destroy() + + Button + id: okButton + !text: tr('Ok') + font: cipsoftFont + anchors.right: prev.left + margin-right: 7 + anchors.bottom: parent.bottom + size: 45 21 + @onClick: modules.game_outfit.accept() \ No newline at end of file diff --git a/modules/game_actionbar/actionbar.lua b/modules/game_actionbar/actionbar.lua index 783dd6d..d2b8135 100644 --- a/modules/game_actionbar/actionbar.lua +++ b/modules/game_actionbar/actionbar.lua @@ -1,4 +1,3 @@ ----@diagnostic disable: undefined-global bottomActionPanel1 = nil bottomActionPanel2 = nil bottomActionPanel3 = nil @@ -235,8 +234,6 @@ function setupAction(action) local chatMode = not modules.game_walking.wsadWalking if not lockKeyboard or not chatMode then - print('lock', lockKeyboard) - print('chatMode', chatMode) executeAction(action, ticks) end end diff --git a/modules/game_actionbar/actionbar.otui b/modules/game_actionbar/actionbar.otui index 43c1ce0..31a6c2e 100644 --- a/modules/game_actionbar/actionbar.otui +++ b/modules/game_actionbar/actionbar.otui @@ -1,17 +1,9 @@ ActionButton < Panel font: cipsoftFont - anchors.top: parent.top - anchors.bottom: parent.bottom width: 40 padding: 1 1 1 1 margin-left: 1 draggable: true - - $first: - anchors.left: parent.left - - $!first: - anchors.left: prev.right Item id: item @@ -91,6 +83,7 @@ Panel anchors.right: next.left margin-right: 3 clipping: true + layout: horizontalBox TabButton id: nextButton diff --git a/modules/game_actionbar/sideactionbar.otui b/modules/game_actionbar/sideactionbar.otui index 23cb19e..c21010e 100644 --- a/modules/game_actionbar/sideactionbar.otui +++ b/modules/game_actionbar/sideactionbar.otui @@ -1,18 +1,13 @@ SideActionButton < Panel font: cipsoftFont - anchors.left: parent.left - anchors.right: parent.right height: 40 padding: 1 1 1 1 - margin-top: 1 - draggable: true $first: - anchors.top: parent.top - margin-top: -3 + margin-top: -4 $!first: - anchors.top: prev.bottom + margin-top: -1 Item id: item @@ -92,6 +87,7 @@ Panel anchors.bottom: next.top margin-top: 3 clipping: true + layout: verticalBox TabButton id: nextButton diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/antiRs.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/antiRs.lua deleted file mode 100644 index 41f5a3f..0000000 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/antiRs.lua +++ /dev/null @@ -1,14 +0,0 @@ -setDefaultTab("Tools") -local m = macro(1000, "AntiRS & Msg", function() end) - -local frags = 0 -onTextMessage(function(mode, text) - if not m.isOn() then return end - if not text:find("Warning! The murder of") then return end - say("Don't bother, I have anti-rs and shit EQ. Don't waste our time.") - frags = frags + 1 - if killsToRs() < 6 or frags > 1 then - g_game.stop() - modules.game_interface.forceExit() - end -end) \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/CaveBot.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/lib/CaveBot.lua deleted file mode 100644 index e69de29..0000000 diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Container.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Container.lua deleted file mode 100644 index 2cfdf21..0000000 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Container.lua +++ /dev/null @@ -1,159 +0,0 @@ -Container = {} - ---- returns all open containers --- @return table -function Container:getAll() return getContainers() end - ---- gets first open container --- @return userdata -function Container:getFirst() return getContainers()[1] end - ---- gets last open container --- @return userdata -function Container:getLast() return getContainers()[#getContainers()] end - --- returns open containers count --- @return number -function Container:getOpenContainersCount() return #getContainers() end - ---- returns given container item id --- @param container is userdata --- @return number -function Container:getItemId() end - ---- closes all open container windows --- @return void -function Container:closeAllContainers() - for i, container in ipairs(Container:getContainers()) do - container:close() - end -end - ---- checks if container has any free slots --- @param container is userdata --- @return boolean -function Container:isFull(container) - return container:getCapacity() > #container:getItems() -end - ---- returns free slots count in given container --- @param container is userdata --- @return number -function Container:getFreeSlots(container) - return #container:getItems() - container:getCapacity() -end - ---- returns first free slot position --- @param container is userdata --- @return table -function Container:getFreeSlotPosition(container) - return container:getSlotPosition(container:getItems()) -end - ---- opens given container parent --- @param container is userdata --- @return void -function Container:openParent(container) g_game.openParent(container) end - ---- finds open container object based on the id --- @param itemId is number --- @return userdata -function Container:getContainerByItemId(itemId) - - for i, container in ipairs(getContainers()) do - local cId = container:getContainerItem():getId() - if cId == itemId then return container end - end - -end - ---- finds open container object based on the name --- @param name is string --- @return userdata -function Container:getContainerByName(name) - name = name:lower():trim() - - for i, container in ipairs(getContainers()) do - local cName = container:getName():lower() - if cName == name then return container end - end - -end - ---- checks if given container is declared as loot container in TargetBot --- @param container is userdata / integer / string --- @returns boolean -function Container:isLootContainer(container) - local id - - if type(container) == "number" then - id = container - elseif type(container) == "string" then - id = Container:getContainerByName(container) - id = id and id:getContainerItem():getId() - elseif type(container) == "userdata" then - id = container:getContainerItem():getId() - end - - if not id then return false end - - if table.find(vBot.lootConainers, id) then - return true - else - return false - end -end - ---- returns the amount of open loot containers --- @return amount -function Container:getOpenLootContainersCount() - local amount = 0 - - for i, container in ipairs(getContainers()) do - amount = Container:isLootContainer(container) and amount + 1 or amount - end - - return amount -end - ---- opens child container with the same id inside given one --- @param container is userdata --- @param newWindow is boolean --- @return void -function Container:openChild(container, newWindow) - local parentId = container:getContaierItem():getId() - - for i, item in ipairs(container:getItems()) do - local id = item:getId() - - if id == parentId then - return g_game.open(item, newWindow and container or nil) - end - end -end - --- returns all items inside given container --- @param container is userdata --- @return table -function Container:getItems(container) return container:getItems() end - ---- checks if given container helds item with given id --- @param container is userdata --- @param id is number --- @return boolean -function Container:hasItem(container, id) - local isInsideContainer = false - - for i, item in ipairs(container:getItems()) do - if item:getId() == id then - isInsideContainer = true - break - end - end - - return isInsideContainer -end - -function Container:reOpenAllContainers() - -- TODO, extract function from containers.lua -end \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Map.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Map.lua deleted file mode 100644 index e69de29..0000000 diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Player.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Player.lua deleted file mode 100644 index 39508e5..0000000 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Player.lua +++ /dev/null @@ -1,100 +0,0 @@ -Player = {} - ---- opens main backpack --- @return void -function Player:openMain() - local back = getBack() - - if back then g_game.open(back) end -end - ---- opens purse/store inbox slot --- @return void -function Player:openPurse() - local purse = getPurse() - - if item then use(purse) end -end - ---- player says certain phrase or sequence --- @param text is string or table --- @param npc is boolean --- @return void -function Player:speak(text, npc, wait) - if type(text) == "string" then - if npc then - return NPC.say(text) - else - return say(text) - end - end - - -- text is table, therefore sequence - local talkDelay = 0 - local globalDelay = storage.extras.talkDelay - - for i, string in ipairs(text) do - - schedule(talkDelay, function() - - if npc then - return NPC.say(string) - else - return say(string) - end - - end) - - talkDelay = talkDelay + globalDelay - end - if wait then delay( talkDelay + globalDelay ) end -end - - -function Player:getId() - return player:getId() -end - -function Player:getName() - return player:getName() -end - -function Player:getTarget() - return g_game.getAttackingCreature() -end - -function Player:getTargetName() - return Player:getTarget():getName() -end - -function Player:getTargetPosition() - return Player:getTarget():getPosition() -end - -function Player:getDistanceFromTarget() - return getDistanceBetween(Player:getPosition(), Player:getTargetPosition()) -end - -function Player:getPosition() - return player:getPosition() -end - -function Player:getLookDirection() - return player:getDirection() -end - -function Player:getLookPosition(range) - local dir = Player:getLookDirection() - local pos = Player:getPosition() - local n = range or 1 - if (dir == NORTH) then - pos.y = pos.y - n - elseif (dir == SOUTH) then - pos.y = pos.y + n - elseif (dir == WEST) then - pos.x = pos.x - n - elseif (dir == EAST) then - pos.x = pos.x + n - end - return pos -end \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Spectators.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/lib/Spectators.lua deleted file mode 100644 index e69de29..0000000 diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/quiver_manager.lua b/modules/game_bot/default_configs/vBot_4.41/vBot/quiver_manager.lua deleted file mode 100644 index b032f91..0000000 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/quiver_manager.lua +++ /dev/null @@ -1,111 +0,0 @@ -setDefaultTab("Tools") -function quiverManager() - local panelName = "quiverManager" - - local ui = setupUI([[ -Panel - height: 33 - margin-top: 2 - - BotItem - id: BoltsID - anchors.left: parent.left - anchors.top: parent.top - - BotItem - id: ArrowsID - anchors.left: prev.right - anchors.verticalCenter: prev.verticalCenter - - BotSwitch - id: BoltsSwitch - anchors.top: parent.top - anchors.bottom: prev.verticalCenter - anchors.right: parent.right - text: Sort Bolts - - BotSwitch - id: ArrowsSwitch - anchors.top: prev.bottom - anchors.bottom: ArrowsID.bottom - anchors.right: parent.right - text: Sort Arrows - - ]] - ) - ui:setId(panelName) - - if not storage[panelName] then - storage[panelName] = { - arrowsId = 35848, - boltsId = 35849, - bolts = false, - arrows = false - } - end - - local config = storage[panelName] - - ui.BoltsSwitch:setOn(config.bolts) - ui.BoltsSwitch.onClick = function(widget) - config.bolts = not config.bolts - widget:setOn(config.bolts) - end - ui.ArrowsSwitch:setOn(config.arrows) - ui.ArrowsSwitch.onClick = function(widget) - config.arrows = not config.arrows - widget:setOn(config.arrows) - end - ui.BoltsID:setItemId(config.boltsId) - ui.BoltsID.onItemChange = function(widget) - config.boltsId = widget:getItemId() - end - ui.ArrowsID:setItemId(config.arrowsId) - ui.ArrowsID.onItemChange = function(widget) - config.arrowsId = widget:getItemId() - end - - local arrows = {16143, 763, 761, 7365, 3448, 762, 21470, 7364, 14251, 3447, 3449, 15793, 25757, 774, 35901} - local bolts = {6528, 7363, 3450, 16141, 25758, 14252, 3446, 16142, 35902} - - macro(100, function() - local dArrow - local dBolt - for _, c in pairs(getContainers()) do - if not containerIsFull(c) then - if c:getContainerItem():getId() == config.arrowsId and config.arrows then - dArrow = c - elseif c:getContainerItem():getId() == config.boltsId and config.bolts then - dBolt = c - end - end - end - for _, c in pairs(getContainers()) do - if c:getName():lower():find("backpack") or c:getName():lower():find("bag") or c:getName():lower():find("chess") then - for _, i in pairs(c:getItems()) do - -- arrows - if dArrow and config.arrows then - if table.find(arrows, i:getId()) and c ~= dArrow then - return g_game.move(i, dArrow:getSlotPosition(dArrow:getItemsCount()), i:getCount()) - end - end - -- bolts - if dBolt and config.bolts then - if table.find(bolts, i:getId()) and c ~= dBolt then - return g_game.move(i, dBolt:getSlotPosition(dBolt:getItemsCount()), i:getCount()) - end - end - end - end - end - delay(900) - end) -end - -addSeparator() -if voc() == 2 or voc() == 12 then - UI.Label("[[ Quiver Manager ]]") - addSeparator() - quiverManager() - addSeparator() -end diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/version.txt b/modules/game_bot/default_configs/vBot_4.41/vBot/version.txt deleted file mode 100644 index cb83bc1..0000000 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/version.txt +++ /dev/null @@ -1 +0,0 @@ -4.41 \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/_Loader.lua b/modules/game_bot/default_configs/vBot_4.5/_Loader.lua similarity index 98% rename from modules/game_bot/default_configs/vBot_4.41/_Loader.lua rename to modules/game_bot/default_configs/vBot_4.5/_Loader.lua index bb90908..972b0b7 100644 --- a/modules/game_bot/default_configs/vBot_4.41/_Loader.lua +++ b/modules/game_bot/default_configs/vBot_4.5/_Loader.lua @@ -37,6 +37,7 @@ local luaFiles = { "Dropper", "Containers", "quiver_manager", + "quiver_label", "tools", "antiRs", "depot_withdraw", diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/actions.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/actions.lua similarity index 83% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/actions.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/actions.lua index 668ee59..42e4d59 100644 --- a/modules/game_bot/default_configs/vBot_4.41/cavebot/actions.lua +++ b/modules/game_bot/default_configs/vBot_4.5/cavebot/actions.lua @@ -1,7 +1,39 @@ CaveBot.Actions = {} vBot.lastLabel = "" +local oldTibia = g_game.getClientVersion() < 960 + + +-- antistuck f() +local nextPos = nil +local function modPos(dir) + local y = 0 + local x = 0 + + if dir == 0 then + y = -1 + elseif dir == 1 then + x = 1 + elseif dir == 2 then + y = 1 + elseif dir == 3 then + x = -1 + elseif dir == 4 then + y = -1 + x = 1 + elseif dir == 5 then + y = 1 + x = 1 + elseif dir == 6 then + y = 1 + x = -1 + elseif dir == 7 then + y = -1 + x = -1 + end + + return {x, y} +end -local antiTrapTriggered = false -- it adds an action widget to list CaveBot.addAction = function(action, value, focus) action = action:lower() @@ -176,27 +208,37 @@ CaveBot.registerAction("goto", "green", function(value, retries, prev) -- check if there's a path to destination but consider Creatures (attack only if trapped) local path2 = findPath(playerPos, pos, maxDist, { ignoreNonPathable = true, precision = 1 }) if not path2 then - local target = {} -- c = creature, d = distance - for i, spec in pairs(getSpectators()) do - local hppc = spec:getHealthPercent() - if spec:isMonster() and (hppc and hppc > 0) then - local path = findPath(playerPos, spec:getPosition(), 7, { ignoreNonPathable = true, precision = 1 }) - if path then - local dist = getDistanceBetween(pos, spec:getPosition()) - if not target.d or target.d > dist then - target = {c=spec, d=dist} + local foundMonster = false + for i, dir in ipairs(path) do + local dirs = modPos(dir) + nextPos = nextPos or playerPos + nextPos.x = nextPos.x + dirs[1] + nextPos.y = nextPos.y + dirs[2] + + local tile = g_map.getTile(nextPos) + if tile then + if tile:hasCreature() then + local creature = tile:getCreatures()[1] + local hppc = creature:getHealthPercent() + if creature:isMonster() and (hppc and hppc > 0) and (oldTibia or creature:getType() < 3) then + -- real blocking creature can not meet those conditions - ie. it could be player, so just in case check if the next creature is reachable + local path = findPath(playerPos, creature:getPosition(), 20, { ignoreNonPathable = true, precision = 1 }) + if path then + foundMonster = true + attack(creature) + g_game.setChaseMode(1) + CaveBot.setOff() + CaveBot.delay(1000) + schedule(1000, function() CaveBot.setOn() end) + end + end end - end end end - if target.c then - if target.c ~= getTarget() then - attack(target.c) - end - g_game.setChaseMode(1) - CaveBot.setOff() - schedule(1000, function() CaveBot.setOn() end) - else + + nextPos = nil -- reset path + if not foundMonster then + foundMonster = false return false -- no other way end end diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/bank.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/bank.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/bank.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/bank.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/buy_supplies.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/buy_supplies.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/buy_supplies.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/buy_supplies.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/cavebot.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/cavebot.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/cavebot.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/cavebot.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/cavebot.otui b/modules/game_bot/default_configs/vBot_4.5/cavebot/cavebot.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/cavebot.otui rename to modules/game_bot/default_configs/vBot_4.5/cavebot/cavebot.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/clear_tile.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/clear_tile.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/clear_tile.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/clear_tile.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/config.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/config.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/config.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/config.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/config.otui b/modules/game_bot/default_configs/vBot_4.5/cavebot/config.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/config.otui rename to modules/game_bot/default_configs/vBot_4.5/cavebot/config.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/d_withdraw.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/d_withdraw.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/d_withdraw.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/d_withdraw.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/depositor.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/depositor.lua similarity index 99% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/depositor.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/depositor.lua index 8f2bb85..eb2d038 100644 --- a/modules/game_bot/default_configs/vBot_4.41/cavebot/depositor.lua +++ b/modules/game_bot/default_configs/vBot_4.5/cavebot/depositor.lua @@ -125,6 +125,7 @@ CaveBot.Extensions.Depositor.setup = function() end -- we gucci + resetCache() return true end) diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/doors.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/doors.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/doors.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/doors.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/editor.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/editor.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/editor.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/editor.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/editor.otui b/modules/game_bot/default_configs/vBot_4.5/cavebot/editor.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/editor.otui rename to modules/game_bot/default_configs/vBot_4.5/cavebot/editor.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/example_functions.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/example_functions.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/example_functions.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/example_functions.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/extension_template.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/extension_template.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/extension_template.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/extension_template.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/imbuing.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/imbuing.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/imbuing.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/imbuing.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/inbox_withdraw.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/inbox_withdraw.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/inbox_withdraw.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/inbox_withdraw.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/lure.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/lure.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/lure.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/lure.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/minimap.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/minimap.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/minimap.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/minimap.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/pos_check.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/pos_check.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/pos_check.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/pos_check.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/recorder.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/recorder.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/recorder.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/recorder.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/sell_all.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/sell_all.lua similarity index 79% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/sell_all.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/sell_all.lua index 3b79bec..579f6cb 100644 --- a/modules/game_bot/default_configs/vBot_4.41/cavebot/sell_all.lua +++ b/modules/game_bot/default_configs/vBot_4.5/cavebot/sell_all.lua @@ -5,15 +5,16 @@ CaveBot.Extensions.SellAll.setup = function() CaveBot.registerAction("SellAll", "#C300FF", function(value, retries) local val = string.split(value, ",") local wait - if #val > 2 then - warn("CaveBot[SellAll]: incorrect sell all value!") - return false + + -- table formatting + for i, v in ipairs(val) do + v = v:trim() + v = tonumber(v) or v + val[i] = v end - if #val == 2 then + if table.find(val, "yes", true) then wait = true - else - wait = false end local npcName = val[1] @@ -46,8 +47,8 @@ CaveBot.Extensions.SellAll.setup = function() sellAllCap = freecap() end - NPC.sellAll(wait) - if #val == 2 then + modules.game_npctrade.sellAll(wait, val) + if wait then print("CaveBot[SellAll]: Sold All with delay") else print("CaveBot[SellAll]: Sold All without delay") @@ -59,7 +60,6 @@ CaveBot.Extensions.SellAll.setup = function() CaveBot.Editor.registerAction("sellall", "sell all", { value="NPC", title="Sell All", - description="Insert NPC name, and 'yes' if sell with delay ", - validation=[[^[^,]+(?:, yes$|, Yes$|, YES$|$)]] + description="NPC Name, 'yes' if sell with delay, exceptions: id separated by comma", }) end \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/supply_check.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/supply_check.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/supply_check.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/supply_check.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/tasker.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/tasker.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/tasker.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/tasker.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/travel.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/travel.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/travel.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/travel.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/walking.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/walking.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/walking.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/walking.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/cavebot/withdraw.lua b/modules/game_bot/default_configs/vBot_4.5/cavebot/withdraw.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/cavebot/withdraw.lua rename to modules/game_bot/default_configs/vBot_4.5/cavebot/withdraw.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/creature.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/creature.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_attack.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_attack.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/creature_attack.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/creature_attack.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_editor.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_editor.lua similarity index 98% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/creature_editor.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/creature_editor.lua index cc4c289..37d6d00 100644 --- a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_editor.lua +++ b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_editor.lua @@ -102,4 +102,5 @@ TargetBot.Creature.edit = function(config, callback) -- callback = function(newC addCheckBox("diamondArrows", "D-Arrows priority", false) addCheckBox("rePosition", "rePosition to better tile", false) addCheckBox("closeLure", "Close Pulling Monsters", false) + addCheckBox("rpSafe", "RP PVP SAFE - (DA)", false) end diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_editor.otui b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_editor.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/creature_editor.otui rename to modules/game_bot/default_configs/vBot_4.5/targetbot/creature_editor.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_priority.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_priority.lua similarity index 69% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/creature_priority.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/creature_priority.lua index 266e69a..813d3a6 100644 --- a/modules/game_bot/default_configs/vBot_4.41/targetbot/creature_priority.lua +++ b/modules/game_bot/default_configs/vBot_4.5/targetbot/creature_priority.lua @@ -1,14 +1,20 @@ TargetBot.Creature.calculatePriority = function(creature, config, path) -- config is based on creature_editor local priority = 0 + local currentTarget = g_game.getAttackingCreature() -- extra priority if it's current target - if g_game.getAttackingCreature() == creature then + if currentTarget == creature then priority = priority + 1 end - -- check if distance is fine, if not then attack only if already attacked + -- check if distance is ok if #path > config.maxDistance then + if config.rpSafe then + if currentTarget == creature then + g_game.cancelAttackAndFollow() -- if not, stop attack (pvp safe) + end + end return priority end @@ -27,6 +33,15 @@ TargetBot.Creature.calculatePriority = function(creature, config, path) if config.diamondArrows then local mobCount = getCreaturesInArea(creature:getPosition(), diamondArrowArea, 2) priority = priority + (mobCount * 4) + + if config.rpSafe then + if getCreaturesInArea(creature:getPosition(), largeRuneArea, 3) > 0 then + if currentTarget == creature then + g_game.cancelAttackAndFollow() + end + return 0 -- pvp safe + end + end end -- extra priority for low health diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/looting.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/looting.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/looting.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/looting.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/looting.otui b/modules/game_bot/default_configs/vBot_4.5/targetbot/looting.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/looting.otui rename to modules/game_bot/default_configs/vBot_4.5/targetbot/looting.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/target.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/target.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/target.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/target.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/target.otui b/modules/game_bot/default_configs/vBot_4.5/targetbot/target.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/target.otui rename to modules/game_bot/default_configs/vBot_4.5/targetbot/target.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/targetbot/walking.lua b/modules/game_bot/default_configs/vBot_4.5/targetbot/walking.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/targetbot/walking.lua rename to modules/game_bot/default_configs/vBot_4.5/targetbot/walking.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/AttackBot.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/AttackBot.lua similarity index 99% rename from modules/game_bot/default_configs/vBot_4.41/vBot/AttackBot.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/AttackBot.lua index 755ed1c..18a9831 100644 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/AttackBot.lua +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/AttackBot.lua @@ -135,14 +135,14 @@ local spellPatterns = { {-- adjacent [[ 111 - 101 + 111 111 ]], -- adjacent SAFE [[ 11111 11111 - 11011 + 11111 11111 11111 ]] diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/AttackBot.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/AttackBot.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/AttackBot.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/AttackBot.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/BotServer.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/BotServer.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/BotServer.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/BotServer.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/BotServer.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/BotServer.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/BotServer.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/BotServer.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Conditions.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/Conditions.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Conditions.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/Conditions.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Conditions.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/Conditions.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Conditions.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/Conditions.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Containers.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/Containers.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Containers.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/Containers.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Dropper.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/Dropper.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Dropper.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/Dropper.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Equipper.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/Equipper.lua similarity index 99% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Equipper.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/Equipper.lua index ea8ec1a..a9442bc 100644 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/Equipper.lua +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/Equipper.lua @@ -51,7 +51,8 @@ local conditions = { -- always add new conditions at the bottom "Player is in protection zone", -- nothing 11 "Players around is more than:", -- spinbox 12 "Players around is less than:", -- spinbox 13 - "TargetBot Danger is Above:" -- spinbox 14 + "TargetBot Danger is Above:", -- spinbox 14 + "Blacklist player in range (sqm)" -- spinbox 15 } local conditionNumber = 1 @@ -577,6 +578,8 @@ local function interpreteCondition(n, v) return getPlayers() < v elseif n == 14 then return TargetBot.Danger() > v and TargetBot.isOn() + elseif n == 15 then + return isBlackListedPlayerInRange(v) end end diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/HealBot.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/HealBot.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/HealBot.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/HealBot.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/HealBot.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/HealBot.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/HealBot.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/HealBot.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/Sio.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/Sio.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/Sio.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/Sio.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/alarms.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/alarms.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/alarms.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/alarms.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/alarms.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/alarms.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/alarms.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/alarms.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/analyzer.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/analyzer.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/analyzer.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/analyzer.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/analyzer.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/analyzer.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/analyzer.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/analyzer.otui diff --git a/modules/game_bot/default_configs/vBot_4.5/vBot/antiRs.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/antiRs.lua new file mode 100644 index 0000000..02160ac --- /dev/null +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/antiRs.lua @@ -0,0 +1,33 @@ +setDefaultTab("Tools") +g_game.cancelAttackAndFollow() + +local frags = 0 +local unequip = false +local m = macro(50, "AntiRS & Msg", function() end) + +function safeExit() + CaveBot.setOff() + TargetBot.setOff() + g_game.cancelAttackAndFollow() + g_game.cancelAttackAndFollow() + g_game.cancelAttackAndFollow() + modules.game_interface.forceExit() +end + +onTextMessage(function(mode, text) + if not m.isOn() then return end + if not text:find("Warning! The murder of") then return end + frags = frags + 1 + if killsToRs() < 6 or frags > 1 then + EquipManager.setOff() + schedule(100, function() + local id = getLeft() and getLeft():getId() + + if id and not unequip then + unequip = true + g_game.equipItemId(id) + end + safeExit() + end) + end +end) \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/cast_food.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/cast_food.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/cast_food.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/cast_food.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/cavebot.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/cavebot.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/cavebot.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/cavebot.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/cavebot_control_panel.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/cavebot_control_panel.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/cavebot_control_panel.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/cavebot_control_panel.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/combo.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/combo.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/combo.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/combo.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/combo.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/combo.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/combo.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/combo.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/configs.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/configs.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/configs.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/configs.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/depositer_config.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/depositer_config.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/depositer_config.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/depositer_config.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/depositer_config.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/depositer_config.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/depositer_config.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/depositer_config.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/depot_withdraw.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/depot_withdraw.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/depot_withdraw.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/depot_withdraw.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/eat_food.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/eat_food.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/eat_food.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/eat_food.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/equip.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/equip.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/equip.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/equip.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/equipper.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/equipper.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/equipper.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/equipper.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/exeta.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/exeta.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/exeta.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/exeta.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/extras.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/extras.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/extras.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/extras.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/extras.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/extras.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/extras.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/extras.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/hold_target.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/hold_target.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/hold_target.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/hold_target.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/ingame_editor.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/ingame_editor.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/ingame_editor.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/ingame_editor.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/items.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/items.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/items.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/items.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/main.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/main.lua similarity index 97% rename from modules/game_bot/default_configs/vBot_4.41/vBot/main.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/main.lua index 20b0b74..4d21b6c 100644 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/main.lua +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/main.lua @@ -1,4 +1,4 @@ -local version = "4.41" +local version = "4.5" local currentVersion local available = false diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/new_cavebot_lib.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/new_cavebot_lib.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/new_cavebot_lib.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/new_cavebot_lib.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/new_healer.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/new_healer.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/new_healer.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/new_healer.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/new_healer.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/new_healer.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/new_healer.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/new_healer.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/npc_talk.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/npc_talk.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/npc_talk.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/npc_talk.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/playerlist.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/playerlist.lua similarity index 73% rename from modules/game_bot/default_configs/vBot_4.41/vBot/playerlist.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/playerlist.lua index aad85fe..ea7d2b6 100644 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/playerlist.lua +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/playerlist.lua @@ -183,6 +183,26 @@ if rootWidget then clearCachedPlayers() refreshStatus() end + label.onMouseRelease = function(widget, mousePos, mouseButton) + if mouseButton == 2 then + local child = rootWidget:recursiveGetChildByPos(mousePos) + if child == widget then + local menu = g_ui.createWidget('PopupMenu') + menu:setId("blzMenu") + menu:setGameMenu(true) + menu:addOption('Check Player', function() + local name = widget:getText():gsub(" ", "_") + local link = "https://www.gunzodus.net/character/show/" + g_platform.openUrl(link..name) + end, "") + menu:addOption('Copy Name', function() + g_window.setClipboardText(widget:getText()) + end, "") + menu:display(mousePos) + return true + end + end + end end local tabButton = TabBar.buttonsPanel:getChildren()[v] @@ -215,6 +235,26 @@ if rootWidget then table.remove(playerList, table.find(playerList, name)) label:destroy() end + label.onMouseRelease = function(widget, mousePos, mouseButton) + if mouseButton == 2 then + local child = rootWidget:recursiveGetChildByPos(mousePos) + if child == widget then + local menu = g_ui.createWidget('PopupMenu') + menu:setId("blzMenu") + menu:setGameMenu(true) + menu:addOption('Check Player', function() + local name = widget:getText():gsub(" ", "_") + local link = "https://www.gunzodus.net/character/show/" + g_platform.openUrl(link..name) + end, "") + menu:addOption('Copy Name', function() + g_window.setClipboardText(widget:getText()) + end, "") + menu:display(mousePos) + return true + end + end + end nameTab:setText("") else warn("vBot[PlayerList]: Player ".. name .." is already added!") @@ -245,6 +285,26 @@ if rootWidget then table.remove(playerList, table.find(playerList, name)) label:destroy() end + label.onMouseRelease = function(widget, mousePos, mouseButton) + if mouseButton == 2 then + local child = rootWidget:recursiveGetChildByPos(mousePos) + if child == widget then + local menu = g_ui.createWidget('PopupMenu') + menu:setId("blzMenu") + menu:setGameMenu(true) + menu:addOption('Check Player', function() + local name = widget:getText():gsub(" ", "_") + local link = "https://www.gunzodus.net/character/show/" + g_platform.openUrl(link..name) + end, "") + menu:addOption('Copy Name', function() + g_window.setClipboardText(widget:getText()) + end, "") + menu:display(mousePos) + return true + end + end + end end end @@ -263,10 +323,10 @@ onCreatureAppear(function(creature) checkStatus(creature) end) - onPlayerPositionChange(function(x,y) - if x.z ~= y.z then - schedule(20, function() - refreshStatus() - end) - end - end) \ No newline at end of file +onPlayerPositionChange(function(x,y) + if x.z ~= y.z then + schedule(20, function() + refreshStatus() + end) + end +end) \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/playerlist.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/playerlist.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/playerlist.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/playerlist.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/pushmax.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/pushmax.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/pushmax.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/pushmax.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/pushmax.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/pushmax.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/pushmax.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/pushmax.otui diff --git a/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_label.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_label.lua new file mode 100644 index 0000000..671d726 --- /dev/null +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_label.lua @@ -0,0 +1,58 @@ +local quiverSlot = modules.game_inventory.inventoryWindow:recursiveGetChildById('slot5') +local label = quiverSlot.count + +label = label or g_ui.loadUIFromString([[ +Label + id: count + color: #bfbfbf + font: verdana-11px-rounded + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + text-align: right + margin-right: 3 + margin-left: 3 + text: +]], quiverSlot) + + +function getQuiverAmount() + -- old tibia + if g_game.getClientVersion() < 1000 then return end + + + local isQuiverEquipped = getRight() and getRight():isContainer() or false + local quiver = isQuiverEquipped and getContainerByItem(getRight():getId()) + local count = 0 + + if quiver then + for i, item in ipairs(quiver:getItems()) do + count = count + item:getCount() + end + else + return label:setText("") + end + + return label:setText(count) +end +getQuiverAmount() + +onContainerOpen(function(container, previousContainer) + getQuiverAmount() +end) + +onContainerClose(function(container) + getQuiverAmount() +end) + +onAddItem(function(container, slot, item, oldItem) + getQuiverAmount() +end) + +onRemoveItem(function(container, slot, item) + getQuiverAmount() +end) + +onContainerUpdateItem(function(container, slot, item, oldItem) + getQuiverAmount() +end) \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_manager.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_manager.lua new file mode 100644 index 0000000..8c629cd --- /dev/null +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/quiver_manager.lua @@ -0,0 +1,90 @@ +if voc() == 2 or voc() == 12 then + local bows = { 3350, 31581, 27455, 8027, 20082, 36664, 7438, 28718, 36665, 14246, 19362, 35518, 34150, 29417, 9378, 16164, 22866, 12733, 8029, 20083, 20084, 8026, 8028, 34088} + local xbows = { 30393, 3349, 27456, 20085, 16163, 5947, 8021, 14247, 22867, 8023, 22711, 19356, 20086, 20087, 34089} + local arrows = { 16143, 763, 761, 7365, 3448, 762, 21470, 7364, 14251, 3447, 3449, 15793, 25757, 774, 35901 } + local bolts = { 6528, 7363, 3450, 16141, 25758, 14252, 3446, 16142, 35902 } + local hold = false + + onContainerOpen(function(container, previousContainer) + hold = false + end) + + onContainerClose(function(container) + hold = false + end) + + onAddItem(function(container, slot, item, oldItem) + hold = false + end) + + onRemoveItem(function(container, slot, item) + hold = false + end) + + onContainerUpdateItem(function(container, slot, item, oldItem) + hold = false + end) + + + + local function manageQuiver(isBowEquipped, quiverContainer) + local ammo = isBowEquipped and arrows or bolts + local dest = nil + local containers = getContainers() + for i, container in ipairs(containers) do + if container ~= quiverContainer and not containerIsFull(container) then + if container:getName():lower():find("backpack") or container:getName():lower():find("bag") or container:getName():lower():find("chess") then + dest = container + end + end + end + + -- clearing + if dest then + for i, item in ipairs(quiverContainer:getItems()) do + if not table.find(ammo, item:getId()) then + local pos = dest:getSlotPosition(dest:getItemsCount()) + return g_game.move(item, pos, item:getCount()) + end + end + end + + if not containerIsFull(quiverContainer) then + for i, container in ipairs(containers) do + if container ~= quiverContainer then + for j, item in ipairs(container:getItems()) do + if table.find(ammo, item:getId()) then + local pos = quiverContainer:getSlotPosition(quiverContainer:getItemsCount()) + return g_game.move(item, pos, item:getCount()) + end + end + end + end + end + return true + end + + UI.Separator() + macro(100, "Quiver Manager", function() + if hold then return end -- do nothing if nothing to do + local hand = getLeft() and getLeft():getId() + local quiverEquipped = getRight() and getRight():isContainer() + + if not hand then return end + if not quiverEquipped then return end + + local quiverContainer = getContainerByItem(getRight():getId()) + if not quiverContainer then return end + + local isBowEquipped = getLeft() and table.find(bows, hand) and true or false + if not isBowEquipped then + if not table.find(xbows, hand) then + return -- neither bow and xbow is equipped + end + end + + if manageQuiver(isBowEquipped, quiverContainer) then -- if true then it didn't do anything + hold = true + end + end) +end \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/siolist.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/siolist.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/siolist.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/siolist.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/spy_level.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/spy_level.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/spy_level.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/spy_level.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/supplies.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/supplies.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/supplies.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/supplies.lua diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/supplies.otui b/modules/game_bot/default_configs/vBot_4.5/vBot/supplies.otui similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/supplies.otui rename to modules/game_bot/default_configs/vBot_4.5/vBot/supplies.otui diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/tools.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/tools.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/tools.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/tools.lua diff --git a/modules/game_bot/default_configs/vBot_4.5/vBot/version.txt b/modules/game_bot/default_configs/vBot_4.5/vBot/version.txt new file mode 100644 index 0000000..958d30d --- /dev/null +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/version.txt @@ -0,0 +1 @@ +4.5 \ No newline at end of file diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/vlib.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/vlib.lua similarity index 99% rename from modules/game_bot/default_configs/vBot_4.41/vBot/vlib.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/vlib.lua index bf1fc55..d92c57f 100644 --- a/modules/game_bot/default_configs/vBot_4.41/vBot/vlib.lua +++ b/modules/game_bot/default_configs/vBot_4.5/vBot/vlib.lua @@ -428,8 +428,7 @@ function isFriend(c) if not p then return false end if p:isLocalPlayer() then return true end if p:isPlayer() then - if ((p:getShield() >= 3 and p:getShield() <= 10) or p:getEmblem() == - 1) then + if p:isPartyMember() then CachedFriends[c] = true CachedFriends[p] = true return true @@ -658,8 +657,7 @@ function getPlayers(range, multifloor) for _, spec in pairs(getSpectators(multifloor)) do specs = not spec:isLocalPlayer() and spec:isPlayer() and distanceFromPlayer(spec:getPosition()) <= range and - not ((spec:getShield() >= 3 and spec:getShield() <= 10) or - spec:getEmblem() == 1) and specs + 1 or specs; + not (spec:isPartyMember() or spec:getEmblem() == 1) and specs + 1 or specs; end return specs; end diff --git a/modules/game_bot/default_configs/vBot_4.41/vBot/xeno_menu.lua b/modules/game_bot/default_configs/vBot_4.5/vBot/xeno_menu.lua similarity index 100% rename from modules/game_bot/default_configs/vBot_4.41/vBot/xeno_menu.lua rename to modules/game_bot/default_configs/vBot_4.5/vBot/xeno_menu.lua diff --git a/modules/game_npctrade/npctrade.lua b/modules/game_npctrade/npctrade.lua index 0562489..d271ffe 100644 --- a/modules/game_npctrade/npctrade.lua +++ b/modules/game_npctrade/npctrade.lua @@ -557,20 +557,29 @@ function getMaxAmount() return 100 end -function sellAll(delayed) +function sellAll(delayed, exceptions) + -- backward support + if type(delayed) == "table" then + exceptions = delayed + delayed = false + end + exceptions = exceptions or {} removeEvent(sellAllWithDelayEvent) local queue = {} for _,entry in ipairs(tradeItems[SELL]) do - local sellQuantity = getSellQuantity(entry.ptr) - while sellQuantity > 0 do - local maxAmount = math.min(sellQuantity, getMaxAmount()) - if delayed then - g_game.sellItem(entry.ptr, maxAmount, ignoreEquipped:isChecked()) - sellAllWithDelayEvent = scheduleEvent(function() sellAll(true) end, 1100) - return + local id = entry.ptr:getId() + if not table.find(exceptions, id) then + local sellQuantity = getSellQuantity(entry.ptr) + while sellQuantity > 0 do + local maxAmount = math.min(sellQuantity, getMaxAmount()) + if delayed then + g_game.sellItem(entry.ptr, maxAmount, ignoreEquipped:isChecked()) + sellAllWithDelayEvent = scheduleEvent(function() sellAll(true) end, 1100) + return + end + table.insert(queue, {entry.ptr, maxAmount, ignoreEquipped:isChecked()}) + sellQuantity = sellQuantity - maxAmount end - table.insert(queue, {entry.ptr, maxAmount, ignoreEquipped:isChecked()}) - sellQuantity = sellQuantity - maxAmount end end for _, entry in ipairs(queue) do diff --git a/modules/game_outfit/outfit.lua b/modules/game_outfit/outfit.lua index 4031017..34843fd 100644 --- a/modules/game_outfit/outfit.lua +++ b/modules/game_outfit/outfit.lua @@ -1,29 +1,78 @@ -ADDON_SETS = { - [1] = {1}, - [2] = {2}, - [3] = {1, 2}, - [4] = {3}, - [5] = {1, 3}, - [6] = {2, 3}, - [7] = {1, 2, 3} -} +local loadLocalShaders = false +appearanceOptions = {} +configOptions = {} +previewOptions = {} +previewDir = 2 +filterText = "" +currentCategory = "outfit" outfitWindow = nil -outfit = nil -outfits = nil outfitCreatureBox = nil -currentOutfit = 1 - -addons = nil currentColorBox = nil currentClotheButtonBox = nil colorBoxes = {} +dataTables = { + outfits = {}, + mounts = {}, + auras = {}, + wings = {}, + shaders = {}, + manaBar = {}, + healthBar = {} +} -mount = nil -mounts = nil -mountCreatureBox = nil -currentMount = 1 -ignoreNextOutfitWindow = 0 +math.randomseed(os.time()) + +-- take local shaders, won't work if server does not support it +localShaders = {} +local shaderFiles = g_resources.listDirectoryFiles("/data/shaders/", true, false) +for i, file in ipairs(shaderFiles) do + local name = file:split(".")[1]:trim():lower() + name = name:gsub("/data/shaders//","") + name = name:gsub("_fragment","") + name = name:gsub("_vertex","") + if name:find("outfit") and not table.find(localShaders, name) then + table.insert(localShaders, name) + end +end + +function setupTables() + configOptions = { + + { id="addon1", text="Addon 1", checked=false, enabled=g_game.getClientVersion()>=780 }, + { id="addon2", text="Addon 2", checked=false, enabled=g_game.getClientVersion()>=780 }, + { id="mount", text="Mount", checked=false, enabled=g_game.getFeature(GamePlayerMounts) }, + { id="wings", text="Wings", checked=false, enabled=g_game.getFeature(GameWingsAndAura) }, + { id="aura", text="Aura", checked=false, enabled=g_game.getFeature(GameWingsAndAura) }, + { id="shader", text="Shaders", checked=false, enabled=g_game.getFeature(GameOutfitShaders) or loadLocalShaders and #localShaders > 0 }, + { id="healtbar", text="Health Bars", checked=false, enabled=g_game.getFeature(GameHealthInfoBackground) }, + { id="manabar", text="Mana Bars", checked=false, enabled=g_game.getFeature(GameHealthInfoBackground) }, + + } + appearanceOptions = { + + { id="presetCat", text="Preset", enabled=true }, + { id="outfitCat", text="Outfit", enabled=true }, + { id="mountCat", text="Mount", enabled=g_game.getFeature(GamePlayerMounts) }, + { id="wingsCat", text="Wings", enabled=g_game.getFeature(GameWingsAndAura) }, + { id="auraCat", text="Aura", enabled=g_game.getFeature(GameWingsAndAura) }, + { id="shaderCat", text="Shader", enabled=g_game.getFeature(GameOutfitShaders) or loadLocalShaders and #localShaders > 0 }, + { id="healtbarCat", text="Health Bars", enabled=g_game.getFeature(GameHealthInfoBackground) }, + { id="manabarCat", text="Mana Bars", enabled=g_game.getFeature(GameHealthInfoBackground) }, + + } + previewOptions = { + + { id="move", text="Movement", checked=false, enabled=true }, + { id="showOutfit", text="Outfit", checked=true, enabled=true }, + { id="showMount", text="Mount", checked=false, enabled=g_game.getFeature(GamePlayerMounts) }, + { id="showWings", text="Wings", checked=false, enabled=g_game.getFeature(GameWingsAndAura) }, + { id="showAura", text="Aura", checked=false, enabled=g_game.getFeature(GameWingsAndAura) }, + { id="showShader", text="Shader", checked=false, enabled=g_game.getFeature(GameOutfitShaders) or loadLocalShaders and #localShaders > 0 }, + + } + +end function init() connect( @@ -46,287 +95,422 @@ function terminate() destroy() end -function updateMount() - if table.empty(mounts) or not mount then - return - end - local nameMountWidget = outfitWindow:getChildById("mountName") - nameMountWidget:setText(mounts[currentMount][2]) +function onFilterList(text) + if not outfitWindow then return end + filterText = text:lower() - mount.type = mounts[currentMount][1] - mountCreature:setOutfit(mount) + refreshVisiblePreviews() end -function setupSelector(widget, id, outfit, list) - widget:setId(id) - if id == "healthBar" or id == "manaBar" then - widget.title:setText(id == "healthBar" and "Health Bar" or "Mana Bar") - table.insert(list, 1, {0, "-"}) - else - widget.title:setText(id:gsub("^%l", string.upper)) - if id ~= "type" or #list == 0 then - table.insert(list, 1, {0, "-"}) - end - end +function clearFilterText() + if not outfitWindow then return end - local pos = 1 - for i, o in pairs(list) do - if (id == "shader" and outfit[id] == o[2]) or outfit[id] == o[1] then - pos = i - end - end - if list[pos] then - widget.outfit = list[pos] - if id == "shader" then - widget.creature:setOutfit( - { - shader = list[pos][2] - } - ) - elseif id == "healthBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getHealthBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - widget.bar.selected = pos - 1 - elseif id == "manaBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getManaBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - widget.bar.selected = pos - 1 - else - widget.creature:setOutfit( - { - type = list[pos][1] - } - ) - end - widget.label:setText(list[pos][2]) - end - - widget.prevButton.onClick = function() - if pos == 1 then - pos = #list - else - pos = pos - 1 - end - if id == "healthBar" or id == "manaBar" then - if id == "healthBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getHealthBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - elseif id == "manaBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getManaBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - end - widget.bar.selected = pos - 1 - widget.label:setText(list[pos][2]) - else - local outfit = widget.creature:getOutfit() - if id == "shader" then - outfit.shader = list[pos][2] - else - outfit.type = list[pos][1] - end - widget.outfit = list[pos] - widget.creature:setOutfit(outfit) - widget.label:setText(list[pos][2]) - updateOutfit() - end - end - - widget.nextButton.onClick = function() - if pos == #list then - pos = 1 - else - pos = pos + 1 - end - if id == "healthBar" or id == "manaBar" then - if id == "healthBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getHealthBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - elseif id == "manaBar" then - if pos ~= 1 then - widget.bar:setImageSource(g_healthBars.getManaBarPath(pos - 1)) - else - widget.bar:setImageSource("") - end - end - widget.bar.selected = pos - 1 - widget.label:setText(list[pos][2]) - else - local outfit = widget.creature:getOutfit() - if id == "shader" then - outfit.shader = list[pos][2] - else - outfit.type = list[pos][1] - end - widget.outfit = list[pos] - widget.creature:setOutfit(outfit) - widget.label:setText(list[pos][2]) - updateOutfit() - end - end - return widget + outfitWindow.search.filterWindow:setText('') end -function create(currentOutfit, outfitList, mountList, wingList, auraList, shaderList, hpBarList, manaBarList) - if ignoreNextOutfitWindow and g_clock.millis() < ignoreNextOutfitWindow + 1000 then - return - end - if outfitWindow and not outfitWindow:isHidden() then - return - end +function onPresetButtonPress(key) + local widget - destroy() - - outfitWindow = g_ui.displayUI("outfitwindow") - - setupSelector(outfitWindow.type, "type", currentOutfit, outfitList) - - local outfit = outfitWindow.type.creature:getOutfit() - outfit.head = currentOutfit.head - outfit.body = currentOutfit.body - outfit.legs = currentOutfit.legs - outfit.feet = currentOutfit.feet - outfitWindow.type.creature:setOutfit(outfit) - - if g_game.getFeature(GamePlayerMounts) then - setupSelector(g_ui.createWidget("OutfitSelectorPanel", outfitWindow.extensions), "mount", currentOutfit, mountList) - end - if g_game.getFeature(GameWingsAndAura) then - setupSelector(g_ui.createWidget("OutfitSelectorPanel", outfitWindow.extensions), "wings", currentOutfit, wingList) - setupSelector(g_ui.createWidget("OutfitSelectorPanel", outfitWindow.extensions), "aura", currentOutfit, auraList) - end - if g_game.getFeature(GameOutfitShaders) then - setupSelector(g_ui.createWidget("OutfitSelectorPanel", outfitWindow.extensions), "shader", currentOutfit, shaderList) - end - - if g_game.getFeature(GameHealthInfoBackground) then - setupSelector(g_ui.createWidget("BarSelectorPanel", outfitWindow.extensions), "healthBar", currentOutfit, hpBarList) - setupSelector(g_ui.createWidget("BarSelectorPanel", outfitWindow.extensions), "manaBar", currentOutfit, manaBarList) - end - - if not outfitWindow.extensions:getFirstChild() then - outfitWindow:setHeight(outfitWindow:getHeight() - 128) - end - - for j = 0, 6 do - for i = 0, 18 do - local colorBox = g_ui.createWidget("ColorBox", outfitWindow.colorBoxPanel) - local outfitColor = getOutfitColor(j * 19 + i) - colorBox:setImageColor(outfitColor) - colorBox:setId("colorBox" .. j * 19 + i) - colorBox.colorId = j * 19 + i - - if j * 19 + i == currentOutfit.head then - currentColorBox = colorBox - colorBox:setChecked(true) + for i, child in ipairs(outfitWindow.list:getChildren()) do + if child.catalog == "preset" then + if child:isChecked() then + widget = child + break end - colorBox.onCheckChange = onColorCheckChange - colorBoxes[#colorBoxes + 1] = colorBox end end - -- set addons - addons = { - [1] = {widget = outfitWindow:getChildById("addon1"), value = 1}, - [2] = {widget = outfitWindow:getChildById("addon2"), value = 2}, - [3] = {widget = outfitWindow:getChildById("addon3"), value = 4} + if key == "delete" then + if widget then + widget:destroy() + end + + elseif key == "new" then + local outfit = getOutfitFromCurrentChecks(1) + outfit.mount = 0 + local mount = getOutfitFromCurrentChecks().mount + local name = "new preset" + + local widget = g_ui.createWidget("LargePreviewTile", outfitWindow.list) + widget.catalog = "preset" + widget:setId("preset."..outfit.type..name) + widget.outfit:setOutfit(outfit) + if mount then + widget.mount:setOutfit({ + type = mount + }) + end + widget.title:setText(name) + + + elseif key == "rename" then + if widget then + modules.client_textedit.show(widget.title, {title="Rename Preset", placeholder=widget.title:getText()}) + end + + + elseif key == "save" then + if widget then + local data = getOutfitFromCurrentChecks() + local outfit = data.outfit + local mount = data.mount + + widget.outfit:setOutfit(outfit) + if mount then + widget.mount:setOutfit(mount) + end + save() + end + end +end + +function onOptionChange(key, checked, widget) + if not outfitWindow then return end + local creature = outfitWindow.preview.creaturePanel.creature + + if key:find("show") or key:find("addon") then + refreshPreview() + end + + if key:find("Cat") then + currentCategory = string.sub(key, 1, key:len()-3) + + -- set filter window title + outfitWindow.search.title:setText("Filter "..currentCategory.."s") + + if key == "presetCat" then + outfitWindow.list:getLayout():setNumColumns(1) + outfitWindow.list:getLayout():setCellSize({height = 100, width = 217}) + outfitWindow.search:setVisible(false) + outfitWindow.preset:setVisible(true) + else + outfitWindow.list:getLayout():setNumColumns(2) + outfitWindow.list:getLayout():setCellSize({height = 100, width = 106}) + outfitWindow.search:setVisible(true) + outfitWindow.preset:setVisible(false) + end + + -- set correct checks + for i, child in ipairs(widget:getParent():getParent():getChildren()) do + child.checkBox:setChecked(widget==child.checkBox) + end + + refreshVisiblePreviews() + + + elseif key == "move" then + creature:setAnimate(checked) + + + elseif key == "showOutfit" or key == "showMount" then + local options = outfitWindow.preview.options + local showOutfit = options.showOutfit + local showMount = options.showMount + showOutfit = showOutfit and showOutfit.check:isChecked() + showMount = showMount and showMount.check:isChecked() + + if not showMount and not showOutfit then + options.move.check:setChecked(false) + creature:setAnimate(false) + options.move:disable() + else + options.move:enable() + end + + end + + +end + +function refreshVisiblePreviews() + if not outfitWindow then return end + + for i, child in ipairs(outfitWindow.list:getChildren()) do + local id = child:getId() + local catalog = string.split(id, ".")[1] + local name = string.split(id, ".")[2] + local show = catalog == currentCategory and name:find(filterText) + child:setVisible(show) + end +end + +function getOutfitFromCurrentChecks(returnVal) + returnVal = returnVal or 0 + + -- 0 - return raw table + -- 1 - return combined outfit according to configure checks + -- 2 - return combined outfit according to preview checks + if not outfitWindow then return end + + local data = { + cleanOutfit = {}, -- outfit.type & colors + mount = 0, -- outfit.mount + addons = 0, -- outfit.addons + shader = "", -- outfit.shader + wings = 0, -- outfit.wings + aura = 0, -- outfit.aura + healthbar = "", -- outfit.healthbar + manabar = "" -- outfit.manabar } - for _, addon in pairs(addons) do - addon.widget.onCheckChange = function(self) - onAddonCheckChange(self, addon.value) + local combinedOutfit + local previewOutfit + local options = outfitWindow.config.options + local addon1 = options.addon1 + local addon2 = options.addon2 + addon1 = addon1 and addon1.check:isChecked() + addon2 = addon2 and addon2.check:isChecked() + local showAddons = addon1 and addon2 and 3 or addon2 and 2 or addon1 and 1 or 0 + local showMount = g_game.getFeature(GamePlayerMounts) and options.mount and options.mount.check:isChecked() + local showShader = (g_game.getFeature(GameOutfitShaders) or #localShaders > 0) and options.shader and options.shader.check:isChecked() + local showHealthBar = g_game.getFeature(GameHealthInfoBackground) and options.healthbar and options.healthbar:isChecked() + local showManaBar = g_game.getFeature(GameHealthInfoBackground) and options.manabar and options.manabar:isChecked() + local showAura = g_game.getFeature(GameWingsAndAura) and options.aura and options.aura:isChecked() + local showWings = g_game.getFeature(GameWingsAndAura) and options.wings and options.wings:isChecked() + + for i, child in ipairs(outfitWindow.list:getChildren()) do + if child:isChecked() and child.catalog ~= "preset" then + local catalog = child.catalog + local outfit = child.creature:getOutfit() + if catalog == "outfit" then -- get type and colors + data.cleanOutfit = outfit + elseif catalog == "mount" then + data[catalog] = outfit.type + elseif catalog == "shader" then + data[catalog] = child.shader + elseif catalog == "wings" then + data[catalog] = outfit.type + elseif catalog == "aura" then + data[catalog] = outfit.aura + elseif catalog == "healthbar" then + local id = string.split(child:getId(), " ")[2] + data[catalog] = id + elseif catalog == "manabar" then + local id = string.split(child:getId(), " ")[2] + data[catalog] = id + end end end + data.addons = showAddons - if currentOutfit.addons and currentOutfit.addons > 0 then - for _, i in pairs(ADDON_SETS[currentOutfit.addons]) do - addons[i].widget:setChecked(true) - end + if returnVal == 1 then + combinedOutfit = data.cleanOutfit + combinedOutfit.addons = showAddons + combinedOutfit.mount = showMount and data.mount > 0 and data.mount or nil + combinedOutfit.shader = showShader and data.shader:len() > 0 and data.shader or nil + combinedOutfit.wings = showWings and data.wings > 0 and data.wings or nil + combinedOutfit.aura = showAura and data.aura > 0 and data.aura or nil + combinedOutfit.healthbar = showHealthBar and data.healthbar:len() > 0 and data.healthbar or nil + combinedOutfit.manabar = showManaBar and data.manabar:len() > 0 and data.manabar or nil + elseif returnVal == 2 then + previewOutfit = data.cleanOutfit + previewOutfit.addons = showAddons + previewOutfit.mount = data.mount > 0 and data.mount or nil + previewOutfit.shader = data.shader:len() > 0 and data.shader or nil + previewOutfit.wings = data.wings > 0 and data.wings or nil + previewOutfit.aura = data.aura > 0 and data.aura or nil + previewOutfit.healthbar = data.healthbar:len() > 0 and data.healthbar or nil + previewOutfit.manabar = data.manabar:len() > 0 and data.manabar or nil end - -- hook outfit sections - currentClotheButtonBox = outfitWindow.head - outfitWindow.head.onCheckChange = onClotheCheckChange - outfitWindow.primary.onCheckChange = onClotheCheckChange - outfitWindow.secondary.onCheckChange = onClotheCheckChange - outfitWindow.detail.onCheckChange = onClotheCheckChange - - updateOutfit() -end - -function destroy() - if outfitWindow then - outfitWindow:destroy() - outfitWindow = nil - currentColorBox = nil - currentClotheButtonBox = nil - colorBoxes = {} - addons = {} + -- TODO: test & most likely fix all custom features (wings, auras, shaders, bars) + if returnVal == 0 then + return data -- raw + elseif returnVal == 1 then + return combinedOutfit -- combined @ configure + else + return previewOutfit -- combined @ preview end end function randomize() local outfitTemplate = { - outfitWindow.head, - outfitWindow.primary, - outfitWindow.secondary, - outfitWindow.detail + outfitWindow.appearance.parts.head, + outfitWindow.appearance.parts.primary, + outfitWindow.appearance.parts.secondary, + outfitWindow.appearance.parts.detail } for i = 1, #outfitTemplate do + local n = math.random(#colorBoxes) + outfitTemplate[i]:setChecked(true) - colorBoxes[math.random(1, #colorBoxes)]:setChecked(true) + colorBoxes[n]:setChecked(true) outfitTemplate[i]:setChecked(false) end outfitTemplate[1]:setChecked(true) end -function accept() - local outfit = outfitWindow.type.creature:getOutfit() - for i, child in pairs(outfitWindow.extensions:getChildren()) do - if child:getId() == "healthBar" or child:getId() == "manaBar" then - outfit[child:getId()] = child.bar.selected - else - if child.creature:getCreature() then - if child:getId() == "shader" then - outfit[child:getId()] = child.creature:getOutfit().shader - else - outfit[child:getId()] = child.creature:getOutfit().type - end - end +function onElementSelect(widget) + if not outfitWindow then return end + local catalog = string.split(widget:getId(), ".")[1] + + -- apply correct check + for i, child in ipairs(widget:getParent():getChildren()) do + -- there can be few items checked, but only one per catalog + if child.catalog == widget.catalog then + child:setChecked(widget==child) end end - g_game.changeOutfit(outfit) - destroy() + if catalog == "outfit" then + local outfit = widget.creature:getOutfit() + local addons = outfit.addons + + local addon1 = outfitWindow.config.options.addon1.check + local addon2 = outfitWindow.config.options.addon2.check + + addon1:setChecked(addons == 1 or addons == 3) + addon2:setChecked(addons > 1) + + addon1:setEnabled(addons == 1 or addons == 3) + addon2:setEnabled(addons > 1) + + + refreshPreview() + setCategoryDescription(catalog, outfit.type) + elseif catalog == "mount" then + local outfit = widget.creature:getOutfit() + + refreshPreview() + setCategoryDescription(catalog, outfit.type) + + elseif catalog == "preset" then + local outfit = widget.outfit:getOutfit().type + local mount = widget.mount:getOutfit().type + + for i, child in ipairs(outfitWindow.list:getChildren()) do + if child.catalog == "outfit" then + if child.creature:getOutfit().type == outfit then + onElementSelect(child) + end + end + if child.catalog == "mount" then + if child.creature:getOutfit().type == mount then + onElementSelect(child) + end + end + end + + setCategoryDescription(catalog, widget.title:getText()) + refreshPreview() + + elseif catalog == "shader" then + local shader = widget.creature:getOutfit().shader + + setCategoryDescription(catalog, widget.title:getText()) + refreshPreview() + + elseif catalog == "healthbar" then + + + + elseif catalog == "manabar" then + + + elseif catalog == "wings" then + + + end end -function onAddonCheckChange(addon, value) - local outfit = outfitWindow.type.creature:getOutfit() - if addon:isChecked() then - outfit.addons = outfit.addons + value +function refreshPreview() + if not outfitWindow then return end + local creature = outfitWindow.preview.creaturePanel.creature + local options = outfitWindow.preview.options + + local outfit = getOutfitFromCurrentChecks(2) + + + local showOutfit = options.showOutfit and options.showOutfit.check:isChecked() + local showMount = g_game.getFeature(GamePlayerMounts) and options.showMount and options.showMount.check:isChecked() + local showShader = (g_game.getFeature(GameOutfitShaders) or #localShaders > 0) and options.showShader and options.showShader.check:isChecked() + local showWings = g_game.getFeature(GameWingsAndAura) and options.showWings and options.showWings.check:isChecked() + local showAura = g_game.getFeature(GameWingsAndAura) and options.showAura and options.showAura.check:isChecked() + + if showOutfit then + outfit.mount = not showMount and 0 or outfit.mount + -- those things can only be displaed when showOutfit + outfit.shader = not showShader and "" or outfit.shader + outfit.wings = not showWings and 0 or outfit.wings + outfit.aura = not showAura and 0 or outfit.aura + elseif showMount then + outfit = {type = outfit.mount} else - outfit.addons = outfit.addons - value + return creature:setOutfit({}) + end + + creature:setOutfit(outfit) +end + +function rotatePreview(side) + if not outfitWindow then return end + local creature = outfitWindow.preview.creaturePanel.creature + previewDir = side == "rotateLeft" and (previewDir + 1) or (previewDir - 1) + previewDir = previewDir % 4 + + creature:setDirection(previewDir) +end + +function setCategoryDescription(id, key) + if not outfitWindow then return end + + -- id can be widgetId so extract id + local type = string.split(id, ".")[1] -- ie. outfit + local tableKey = type.."s" -- ie. outfits + local newId = type.."Cat" -- ie. outfitCat + local table = dataTables[tableKey] + local widget = outfitWindow.appearance.categories[newId] + + widget = widget and widget.description + + if id == "preset" or id == "shader" then + return widget:setText(key) + end + + -- something went wrong + if not table or not widget then return end + + for i, data in ipairs(table) do + if data[1] == key then + return widget:setText(data[2]) + end + end + + widget:setText('-') +end + +function onClotheCheckChange(clotheButtonBox) + if not outfitWindow then return end + local outfit = outfitWindow.preview.creaturePanel.creature:getOutfit() + if clotheButtonBox == currentClotheButtonBox then + clotheButtonBox.onCheckChange = nil + clotheButtonBox:setChecked(true) + clotheButtonBox.onCheckChange = onClotheCheckChange + else + currentClotheButtonBox.onCheckChange = nil + currentClotheButtonBox:setChecked(false) + currentClotheButtonBox.onCheckChange = onClotheCheckChange + + currentClotheButtonBox = clotheButtonBox + + local colorId = 0 + if currentClotheButtonBox:getId() == "head" then + colorId = outfit.head + elseif currentClotheButtonBox:getId() == "primary" then + colorId = outfit.body + elseif currentClotheButtonBox:getId() == "secondary" then + colorId = outfit.legs + elseif currentClotheButtonBox:getId() == "detail" then + colorId = outfit.feet + end + outfitWindow.appearance.colorBoxPanel["colorBox" .. colorId]:setChecked(true) end - outfitWindow.type.creature:setOutfit(outfit) end function onColorCheckChange(colorBox) - local outfit = outfitWindow.type.creature:getOutfit() + if not outfitWindow then return end + local outfit = outfitWindow.preview.creaturePanel.creature:getOutfit() if colorBox == currentColorBox then colorBox.onCheckChange = nil colorBox:setChecked(true) @@ -349,67 +533,423 @@ function onColorCheckChange(colorBox) elseif currentClotheButtonBox:getId() == "detail" then outfit.feet = currentColorBox.colorId end - outfitWindow.type.creature:setOutfit(outfit) + outfitWindow.preview.creaturePanel.creature:setOutfit(outfit) + updateOutfits() + refreshPreview() end end -function onClotheCheckChange(clotheButtonBox) - local outfit = outfitWindow.type.creature:getOutfit() - if clotheButtonBox == currentClotheButtonBox then - clotheButtonBox.onCheckChange = nil - clotheButtonBox:setChecked(true) - clotheButtonBox.onCheckChange = onClotheCheckChange - else - currentClotheButtonBox.onCheckChange = nil - currentClotheButtonBox:setChecked(false) - currentClotheButtonBox.onCheckChange = onClotheCheckChange +function updateOutfits() + if not outfitWindow then return end + local outfit = outfitWindow.preview.creaturePanel.creature:getOutfit() - currentClotheButtonBox = clotheButtonBox - local colorId = 0 - if currentClotheButtonBox:getId() == "head" then - colorId = outfit.head - elseif currentClotheButtonBox:getId() == "primary" then - colorId = outfit.body - elseif currentClotheButtonBox:getId() == "secondary" then - colorId = outfit.legs - elseif currentClotheButtonBox:getId() == "detail" then - colorId = outfit.feet + for i, child in ipairs(outfitWindow.list:getChildren()) do + if child.catalog == "outfit" then + local previewOutfit = child.creature:getOutfit() + previewOutfit.head = outfit.head + previewOutfit.body = outfit.body + previewOutfit.legs = outfit.legs + previewOutfit.feet = outfit.feet + + child.creature:setOutfit(previewOutfit) end - outfitWindow:recursiveGetChildById("colorBox" .. colorId):setChecked(true) end end -function updateOutfit() - local currentSelection = outfitWindow.type.outfit - if not currentSelection then +function create(currentOutfit, outfitList, mountList, wingList, auraList, shaderList, hpBarList, manaBarList) + if outfitWindow and not outfitWindow:isHidden() then return end - local outfit = outfitWindow.type.creature:getOutfit() - local availableAddons = currentSelection[3] - local prevAddons = {} - for k, addon in pairs(addons) do - prevAddons[k] = addon.widget:isChecked() - addon.widget:setChecked(false) - addon.widget:setEnabled(false) - end - outfit.addons = 0 - outfitWindow.type.creature:setOutfit(outfit) + load() + destroy() + setupTables() - local shader = outfitWindow.extensions:getChildById("shader") - if shader then - outfit.shader = shader.creature:getOutfit().shader - if outfit.shader == "-" then - outfit.shader = "" - end - shader.creature:setOutfit(outfit) + -- use local shaders if server doesnt send any + shaderList = #shaderList > 0 and shaderList or loadLocalShaders and localShaders or {} + + outfitWindow = g_ui.displayUI("outfitwindow") + dataTables = { + outfits = outfitList, + mounts = mountList, + wings = wingList, + auras = auraList, + shaders = shaderList, + hpBars = hpBarList, + manaBars = manaBarList + } + + outfitWindow.appearance.onGeometryChange = function(widget, old, new) + local filterHeight = outfitWindow.search:getHeight() -- to detect layout used, 56 for default 47 for retro + local diff = 239 + filterHeight + local height = new.height + outfitWindow:setHeight(height + diff) end - if availableAddons > 0 then - for _, i in pairs(ADDON_SETS[availableAddons]) do - addons[i].widget:setEnabled(true) - addons[i].widget:setChecked(true) + local creature = outfitWindow.preview.creaturePanel.creature + local outfitType = currentOutfit.type + local mountType = currentOutfit.mount + local clearOutfit = currentOutfit + local currentAddons = currentOutfit.addons + + local availableAddons + for i, outfit in ipairs(outfitList) do + if outfit[1] == outfitType then + availableAddons = outfit[3] end end + + clearOutfit.mount = 0 + creature:setOutfit(clearOutfit) + + previewDir = 2 + + -- outfits + for i, outfit in ipairs(outfitList) do + local id = outfit[1] + local name = outfit[2] + local addons = outfit[3] + local outfit = currentOutfit + outfit.type = id + outfit.addons = addons + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("outfit."..name:lower().." "..id) + widget.title:setText(name) + outfit.mount = 0 + widget.creature:setOutfit(outfit) + widget.catalog = "outfit" + end + + -- mounts + for i, mount in ipairs(mountList) do + local id = mount[1] + local name = mount[2] + local mountOufit = { + type = id + } + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("mount."..name:lower().." "..id) + widget.title:setText(name) + widget.creature:setOutfit(mountOufit) + widget.catalog = "mount" + end + + -- wings + for i, wings in ipairs(wingList) do + local id = wings[1] + local name = wings[2] + local wingsOufit = { + type = id + } + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("wings."..name:lower().." "..id) + widget.title:setText(name) + widget.creature:setOutfit(wingsOufit) + widget.catalog = "wings" + end + + -- auras + for i, aura in ipairs(auraList) do + local id = aura[1] + local name = aura[2] + local auraOufit = { + type = id + } + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("aura."..name:lower().." "..id) + widget.title:setText(name) + widget.creature:setOutfit(auraOufit) + widget.catalog = "aura" + end + + -- shaders + for i, shader in ipairs(shaderList) do + if type(shader) ~= "table" then + shader = {i, shader} + end + local id = shader[1] + local name = shader[2] + local shaderOutfit = currentOutfit + shaderOutfit.shader = name + shaderOutfit.type = outfitType + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("shader."..name:lower().." "..id) + widget.title:setText(name) + widget.creature:setOutfit(shaderOutfit) + widget.catalog = "shader" + widget.shader = shaderOutfit.shader + end + + if g_game.getFeature(GameHealthInfoBackground) then + table.insert(hpBarList, 1, {0, "-"}) + table.insert(manaBarList, 1, {0, "-"}) + end + + -- hpbar + for i, bar in ipairs(hpBarList) do + local id = bar[1] + local name = bar[2] + local path = g_healthBars.getHealthBarPath(id) + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("healthbar."..name:lower().." "..id) + widget.item:setImageSource(i > 1 and path or "") + widget.title:setText(i > i and name or "Standard") + widget.catalog = "healthbar" + end + + -- hpbar + for i, bar in ipairs(manaBarList) do + local id = bar[1] + local name = bar[2] + local path = g_healthBars.getHealthBarPath(id) + + local widget = g_ui.createWidget("SmallPreviewTile", outfitWindow.list) + widget:setId("manabar."..name:lower().." "..id) + widget.item:setImageSource(i > 1 and path or "") + widget.title:setText(i > i and name or "Standard") + widget.catalog = "manabar" + end + + + -- check current outfit + for i, child in ipairs(outfitWindow.list:getChildren()) do + local catalog = child.catalog + local outfit = child.creature:getOutfit() + + if catalog == "outfit" then + if outfit.type == outfitType then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + end + elseif catalog == "mount" then + if outfit.type == mountType then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + elseif catalog == "shader" then + if outfit.shader == currentOutfit.shader then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + elseif catalog == "wings" then + if outfit.wings == currentOutfit.wings then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + elseif catalog == "aura" then + if outfit.aura == currentOutfit.aura then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + elseif catalog == "manabar" then + if child:getId():find(outfit.manabar) then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + elseif catalog == "healthbar" then + if child:getId():find(outfit.healthbar) then + child:setChecked(true) + outfitWindow.list:moveChildToIndex(child, 1) + child:setVisible(false) + end + end + end + + -- color box + for j = 0, 6 do + for i = 0, 18 do + local colorBox = g_ui.createWidget("ColorBox", outfitWindow.appearance.colorBoxPanel) + local outfitColor = getOutfitColor(j * 19 + i) + colorBox:setImageColor(outfitColor) + colorBox:setId("colorBox" .. j * 19 + i) + colorBox.colorId = j * 19 + i + + if j * 19 + i == currentOutfit.head then + currentColorBox = colorBox + colorBox:setChecked(true) + end + colorBox.onCheckChange = onColorCheckChange + colorBoxes[#colorBoxes + 1] = colorBox + end + end + + -- hook outfit sections + currentClotheButtonBox = outfitWindow.appearance.parts.head + outfitWindow.appearance.parts.head.onCheckChange = onClotheCheckChange + outfitWindow.appearance.parts.primary.onCheckChange = onClotheCheckChange + outfitWindow.appearance.parts.secondary.onCheckChange = onClotheCheckChange + outfitWindow.appearance.parts.detail.onCheckChange = onClotheCheckChange + + -- previewOptions + for i, settings in ipairs(previewOptions) do + if settings.enabled then + local widget = g_ui.createWidget("OptionsCheckBox", outfitWindow.preview.options) + widget:setId(settings.id) + widget:setText(settings.text) + widget.check:setChecked(settings.checked) + + if i > 1 then + local catalog = string.sub(settings.id, 5):lower() + local data = dataTables[catalog.."s"] + + -- if there's no options for certain category disable widget + if not data or #data == 0 then + widget.check:setChecked(false) + widget.check:setEnabled(false) + widget:setEnabled(false) + widget.check:setColor('#808080') + end + end + end + end + + -- config options + for i, settings in ipairs(configOptions) do + if settings.enabled then + local widget = g_ui.createWidget("OptionsCheckBox", outfitWindow.config.options) + widget:setId(settings.id) + widget:setText(settings.text) + widget:setChecked(settings.checked) + end + end + + -- appearance options + for i, settings in ipairs(appearanceOptions) do + if settings.enabled then + local widget = g_ui.createWidget("AppearanceCategory", outfitWindow.appearance.categories) + widget:setId(settings.id) + widget.checkBox:setText(settings.text) + widget.checkBox:setChecked(i==2) + end + end + + setCategoryDescription("outfit", outfitType) + setCategoryDescription("mount", mountType) + + local addon1 = outfitWindow.config.options.addon1.check + local addon2 = outfitWindow.config.options.addon2.check + local mount = g_game.getFeature(GamePlayerMounts) and outfitWindow.config.options.mount.check + + if #mountList == 0 and g_game.getFeature(GamePlayerMounts) then + mount:disable() + end + + addon1:setChecked(currentAddons == 1 or currentAddons == 3) + addon2:setChecked(currentAddons > 1) + + addon1:setEnabled(availableAddons > 0) + addon2:setEnabled(availableAddons > 1) + + + for i, setting in ipairs(settings) do + local outfit = setting.outfit + local mount = setting.mount + local name = setting.name + + local widget = g_ui.createWidget("LargePreviewTile", outfitWindow.list) + widget.catalog = "preset" + widget:setId("preset."..outfit.type..name) + widget.outfit:setOutfit(outfit) + if mount then + widget.mount:setOutfit(mount) + end + widget.title:setText(name) + end + + refreshVisiblePreviews() + refreshPreview() +end + +function destroy() + if outfitWindow then + filterText = "" + currentCategory = "outfit" + + outfitWindow:destroy() + outfitWindow = nil + end +end + +function accept() + local player = g_game.getLocalPlayer() + if outfitWindow then + save() + filterText = "" + currentCategory = "outfit" + + if g_game.getFeature(GamePlayerMounts) then + local mount = outfitWindow.config.options.mount.check:isChecked() + + if not player:isMounted() and mount then + player:mount() + end + end + + g_game.changeOutfit(getOutfitFromCurrentChecks(1)) + outfitWindow:destroy() + outfitWindow = nil + end +end + +-- json +function save() + local settings = {} + + for i, child in ipairs(outfitWindow.list:getChildren()) do + if child.catalog == "preset" then + local data = { + outfit = child.outfit:getOutfit(), + mount = child.mount:getOutfit(), + name = child.title:getText() + } + + table.insert(settings, data) + end + end + + local file = "/settings/outfits.json" + + local status, result = pcall(function() return json.encode(settings, 2) end) + if not status then + return onError( + "Error while saving top bar settings. Data won't be saved. Details: " .. + result) + end + + if result:len() > 100 * 1024 * 1024 then + return onError( + "Something went wrong, file is above 100MB, won't be saved") + end + + g_resources.writeFileContents(file, result) +end + +function load() + local file = "/settings/outfits.json" + + if g_resources.fileExists(file) then + local status, result = pcall(function() + return json.decode(g_resources.readFileContents(file)) + end) + if not status then + return onError( + "Error while reading top bar settings file. To fix this problem you can delete storage.json. Details: " .. + result) + end + settings = result + else + settings = {} + end end diff --git a/modules/game_outfit/outfit.otmod b/modules/game_outfit/outfit.otmod index 284d076..dfaba8d 100644 --- a/modules/game_outfit/outfit.otmod +++ b/modules/game_outfit/outfit.otmod @@ -1,9 +1,9 @@ Module name: game_outfit description: Change local player outfit - author: baxnie, edubart - website: https://github.com/edubart/otclient + author: Vithrax + discord: Vithrax#5814 sandboxed: true scripts: [ outfit ] @onLoad: init() - @onUnload: terminate() + @onUnload: terminate() \ No newline at end of file diff --git a/modules/game_outfit/outfitwindow.otui b/modules/game_outfit/outfitwindow.otui index a7e4810..9ce9537 100644 --- a/modules/game_outfit/outfitwindow.otui +++ b/modules/game_outfit/outfitwindow.otui @@ -1,219 +1,3 @@ -NextOutfitButton < NextButton -PrevOutfitButton < PreviousButton -NextMountButton < NextButton -PrevMountButton < PreviousButton - -OutfitSelectorPanel < Panel - size: 125 120 - - Label - id: title - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - text-align: center - - UICreature - id: creature - size: 100 80 - anchors.top: prev.bottom - anchors.horizontalCenter: parent.horizontalCenter - margin-top: 1 - - PreviousButton - id: prevButton - anchors.left: parent.left - anchors.bottom: parent.bottom - - NextButton - id: nextButton - anchors.right: parent.right - anchors.bottom: parent.bottom - - Label - id: label - text: Outfit name - text-align: center - anchors.left: prevButton.right - anchors.right: nextButton.left - anchors.top: prevButton.top - anchors.bottom: parent.bottom - margin-left: 2 - margin-right: 2 - image-source: /images/ui/panel_flat - image-border: 2 - text: - - -BarSelectorPanel < Panel - size: 125 120 - - Label - id: title - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - text-align: center - - UIWidget - id: bar - anchors.centerIn: parent - - PreviousButton - id: prevButton - anchors.left: parent.left - anchors.bottom: parent.bottom - - NextButton - id: nextButton - anchors.right: parent.right - anchors.bottom: parent.bottom - - Label - id: label - text: - - text-align: center - anchors.left: prevButton.right - anchors.right: nextButton.left - anchors.top: prevButton.top - anchors.bottom: parent.bottom - margin-left: 2 - margin-right: 2 - image-source: /images/ui/panel_flat - image-border: 2 - -MainWindow - !text: tr('Select Outfit') - size: 560 330 - +OutfitWindow @onEnter: modules.game_outfit.accept() - @onEscape: modules.game_outfit.destroy() - - // Creature Boxes - - Panel - id: line1 - anchors.top: outfit.bottom - anchors.left: parent.left - anchors.right: parent.right - backgroud: red - layout: - type: horizontalBox - spacing: 3 - - OutfitSelectorPanel - id: type - anchors.left: parent.left - anchors.top: parent.top - - CheckBox - id: addon1 - width: 80 - anchors.top: type.bottom - anchors.left: type.left - !text: tr('Addon 1') - margin-left: 2 - margin-top: 5 - enabled: false - - CheckBox - id: addon2 - width: 80 - anchors.top: prev.top - anchors.left: prev.right - !text: tr('Addon 2') - enabled: false - - CheckBox - id: addon3 - width: 80 - anchors.top: prev.top - anchors.left: prev.right - !text: tr('Addon 3') - enabled: false - - ButtonBox - id: head - !text: tr('Head') - anchors.top: type.top - anchors.left: type.right - margin-left: 5 - checked: true - width: 76 - - ButtonBox - id: primary - !text: tr('Primary') - anchors.top: prev.bottom - anchors.left: prev.left - margin-top: 2 - width: 76 - - ButtonBox - id: secondary - !text: tr('Secondary') - anchors.top: prev.bottom - anchors.left: prev.left - margin-top: 2 - width: 76 - - ButtonBox - id: detail - !text: tr('Detail') - anchors.top: prev.bottom - anchors.left: prev.left - margin-top: 2 - width: 76 - - ButtonBox - id: randomizeButton - !text: tr('Randomize') - anchors.top: prev.bottom - !tooltip: tr('Randomize characters outfit') - anchors.left: prev.left - margin-top: 2 - width: 76 - @onClick: modules.game_outfit.randomize() - - Panel - id: colorBoxPanel - anchors.top: head.top - anchors.left: head.right - anchors.right: parent.right - anchors.bottom: type.bottom - margin-left: 5 - margin-top: 2 - layout: - type: grid - cell-size: 15 15 - cell-spacing: 2 - num-columns: 19 - num-lines: 7 - - Panel - id: extensions - height: 120 - margin-top: 5 - anchors.top: addon1.bottom - anchors.horizontalCenter: parent.horizontalCenter - backgroud: red - layout: - type: horizontalBox - fit-children: true - spacing: 8 - - Button - id: outfitOkButton - !text: tr('Ok') - width: 64 - anchors.right: next.left - anchors.bottom: parent.bottom - margin-right: 16 - @onClick: modules.game_outfit.accept() - - Button - id: outfitCancelButton - !text: tr('Cancel') - width: 64 - anchors.right: parent.right - anchors.bottom: parent.bottom - @onClick: modules.game_outfit.destroy() + @onEscape: self:hide() \ No newline at end of file diff --git a/modules/game_topbar/topbar.lua b/modules/game_topbar/topbar.lua index 7a13249..da73010 100644 --- a/modules/game_topbar/topbar.lua +++ b/modules/game_topbar/topbar.lua @@ -226,6 +226,7 @@ end function toggleIcon(bitChanged) local content = states + if not content then return end local icon = content:getChildById(Icons[bitChanged].id) if icon then @@ -245,6 +246,7 @@ function loadIcon(bitChanged) end function onHealthChange(localPlayer, health, maxHealth) + if not healthBar then return end if health > maxHealth then maxHealth = health end local healthPercent = (health / maxHealth) * 100 @@ -268,6 +270,7 @@ function onHealthChange(localPlayer, health, maxHealth) end function onManaChange(localPlayer, mana, maxMana) + if not manaBar then return end if mana > maxMana then maxMana = mana end local manaPercent = (mana / maxMana) * 100 @@ -278,6 +281,7 @@ function onManaChange(localPlayer, mana, maxMana) end function onLevelChange(localPlayer, value, percent) + if not topBar then return end local experienceBar = topBar.Experience.progress local levelLabel = topBar.Experience.level experienceBar:setTooltip(tr(experienceTooltip, 100-percent, value + 1)) @@ -374,6 +378,7 @@ function setupSkills() end function toggleSkillPanel(id) + if not topBar then return end local panel = topBar.skills[id] panel = panel or topBar.Experience if not panel then return end @@ -384,6 +389,7 @@ function toggleSkillPanel(id) end function setSkillValue(id, value) + if not topBar then return end local panel = topBar.skills[id] if not panel then return end @@ -391,6 +397,7 @@ function setSkillValue(id, value) end function setSkillPercent(id, percent, tooltip) + if not topBar then return end local panel = topBar.skills[id] if not panel then return end @@ -398,6 +405,7 @@ function setSkillPercent(id, percent, tooltip) end function setSkillBase(id, value, baseValue) + if not topBar then return end local panel = topBar.skills[id] if not panel then return end diff --git a/otclient_dx.exe b/otclient_dx.exe index ee3793a0190507d26ee9f71758f379993b8bb148..e8533ac05d7e401eba66c19918ac0b7f33aa2752 100644 GIT binary patch delta 1822 zcmZY7c{mh!7zgl~G0vt)+A*%il{@1|){NAUbV(vdjiVuoM2usE$&`sfG%|@)lCW0J zMv|k|^;F`~xvRUj(t#*CcfbDF{@LI2eBS5xeBbx|@4Z*hN4^IQjzkipMB+sBl*{as z2*pH^m^h6DazF-oPyj_x0%cHv89;%VFbh;c4Q7Kn%mEFU3%>vrG=T$hF zdhh{X*Z_Xu4*?Je8(|Z0AP9mX1VUjma3KuBVGBe+By5Fk5Cze&9b#Yy#6leGgm@Xf zBtZ}*^&#^#q%CCLs8mytN0GM4^EBkzsjbp;3Ot&$Tb`#R%~e1dmFFFro=}qxDWK5F z$SBhbLs*bDOwZj@;8{vdktzOzM<5VHR7D;n%BYG-X>v}C61&Yv2_$dyo3?He4eTq%qcsG?9?Y zhg8@FX^;*XAb{PF2}0Nddm#%%un)2!2gHyId5{nLWkPNN^Q3Auvw_*dY-4sXdzsgn z{n8ssg)Y=wRs*Yr)yC>zb+dX|{j9evva^yiMP#U42nS?_$`Vfw{r)(+c;(f4F17f& ztmp1`WA#m^I2>Ao=%0?f1UhUBSN^P*06#%;aDE47Y7FDP*X~&kF1>MnzvjVj6CP1X?;1fl*ay0{N`Ya!A`|n`XtRd z9nQcR>*Cm`I>Eia*`wUJrD-YmfXX8 z(`vfn(%b8JWsQfdeTC}7AwN=fIx0QS$+(mpRJQ-%qEFYAxn2xHg6o^UsnZ^-yNq8L z+^C|rbhTv5-s%KqEE$Z>d&0VOciTtOxZKf?%^~kUcv=_SwJFWqPVw0FHDGkSFv!ip zGRY-8Cad^)V?yGo#Wv3e`Rel=PBi5g2%LH){;&5(44iN{+A03FTklbh;lfup!&Y7_ z$awm4c5j(B=k|~D#MYjg$zx>!X@so`8g3S=*mIM9{6_EBlXMIl6rIWL%J&t78Sh)L z-S?r^yKv2jk*({O(c&$JBW_QW8`2`*q;2-JN^`78K70DCUrDb2t)){P={I}5uN*b; z4cA>+nO^>6NYd2N5t-nSz!iIF6G_448r0fFeMe^HbzRLbPwoz7*HqNH4xDg%Fr}p$ z+n(Fyb4dS{t682@yUo4G@|o(wr$BPe@8_m(5%>nW|P_jhqVUt z^&XuV*}Z6o;EGy~L3Km@tu3=$*7<2MZu2+VKOVQP3|gP}!Yka%VoS!Fmv)MksTHkW z1;xCBsRNf!ju@Ycn{889AKTh%HvCk6&uc9|yVQ#s?sG^za#XYG9VbmnwI4rc(nq6b zdzlwDYtNLtFwt@2oBMow)Ri!mY;&OVoQX=0K~hZf6;s>F&+%ceCY(}@0tcQ{>A0_M z_h#SuQ%vlhf8UO=iMC4j+FGqKhSiL(O%sdXf37i}zc3We~_}` z9o=`txFt{;`N_HScC~A;yW@7It(ch~M$R3W}*+(G!3;o>r AEC2ui delta 1847 zcmZY7Yc$kp90&0E&($C%5z=H_DqS#9)XX54L`4e8lyXZbqRfysBWk9MilzSOf{L;V z=`tm!rjt^e#3?6QQQ~Zgwu@A!uwO6QH~Ty1^IU%4=XqW|?K#c#cBolMP`iWj1cWc` zx@CT*l29m#aa5oI9T>m_7H9w)G(iirVFKuYE^uHX=)ok=2LqT4hF}E7Fa=CtDsW*M zm;w*Xz#J^V5~jlpm?0Ef9!toL49SA&9^UoWTVagDbd!J9xkn@Pwt{1>Ud>mct700bf`Ney|Ew zgFgg7AgqBPSPQ`*hIOzWLSO@Igir{BaEO3N*aT6q8KNNuVqptxg*b?ZZIA$oupM@& zc!f#nTSz~eM4!A&mwX`AObMO5&y;Y;b_NDD1KS)1QUo0G14B|kmM|n5WF$>uWLal; zg)(joH9n8mul27!$!AG;^&PC;j2C0$wgH>6O~bTsapA z3K?%JHCALsq{1%v4R%8s$RHi|Kn7&OUf2h6P{4jT09l}fY&Zyq;IJw)B1c%Jdq!9z zye6y{s)Y^07U5I!kw&hI;eOFM(RtBjky_LsY7(`G21MFU94CE+1v?jhS6Q(0d_#EC z842bGJHlcV*&%^iZNmfMJ#(*YSWkE!O9+wloi*xFUi_QY!`P|u>J`ue*%*|Tka+QI)NYv28EtMrFg_7y)AW3WE*7N4;@i< zc$~UgZ0fje%gi0DPOS&4)E$eM;Hfn6OzeHwz! zXM-PeY7R4|EC}zCB^Mc*-S8}Xw=~`6_{}Q$dc!Vzy~(4ci}I^n+=q|)CYTv!#8^8{ zzV(>9u=>#Dwg=b4%eWUQ?VF>YzVC_{{T9_HsXr`|=8S26Sy7xQu8*r7jqFV>E^I7+ ztl1cETJM(D)tROFDo`yO!vAf;tD7UI6=0~r}XlzkVkBPCo^l4b{ru(A$fG{uT z0h9b2={nNOMjVY>J7%j}W7P}#i|z+bd17U6$F^3z{`lnV~y9HWzwjT=} zvHW!NM`Rh_#+NNHnRPTRCJp(m*>5e&2!*8 z@a@EW+yDLun?BE+&U=}~npHF$z1x7wb>_Hb4~Z`gpYnOG9vhQAlP}J$68-N}5tN+f z@41KmaLBC-zTp=6(zGwu-KSBBlpqnAp%MpLK*FNB{P?Gm<1YnLY;x345>Wi?B^w;J4< zAs8g1Tr{gZ22c3*EE8G0=6WSn#d%d2uUy_M&Ln0wso(c7eOszaH&_liQu68X<|_*Q z3(H?r4A1M8$(I5cF?BqgdjN7*EdtF`bsZ5&3S F{0sZ54DSE{ diff --git a/otclient_gl.exe b/otclient_gl.exe index 51f09d11331d8dec2c3051c5675880f4ee934472..8db9be7dc4f52a7c3b0c3163ea1d90ea22128962 100644 GIT binary patch delta 1851 zcmZY7YdDl?7zgl~F%*lG*&<^dE0k@#GpW>W4mm_CWmN_(iG(Z`6U~?!hgWDE^R^+; zVauU3sZra}RaRY^X-S!y4%o z;zak=I22Zvkw+)<=wC2E1DK!*S}*}7f;Q;DH=ql8pbwM404Bo}Fa#ES3sYel7=bZN z2NPg}DSQWJU=9{w307bYGhimn0voUeJD3e~z#hJbxxfJjc^;ienL@8587u<0z=L_< z2=ie9ER-`?PO^M@C3SM26CckFs-0jFEQTN8M_2;R-~z7T21~&mJirsYU>SIW4=jhD zz!z44AFPB`;154T0IY^JuoeP=4?z$NA+Qd9flvs8^$-plAOa#`BSgU_h=v%5h0PEL zzd}4DKqCAGNsufzs7{H$L-Do>SXAj&K|j?j6zG0wtO+#K9;uwF6AETf@gf0}x*-(o zW{#t%Mv;I`ISU07sZbFn3x!B^(*@R4y9ljNB+%8sC^;??z!v$qC^dlTM3!^cfBBRF zOMv}GNMqj>ez~Ikm+9inf?#C9Uo%oFNrg1nDwj%x#cK`xvbM^vDS56(g6c^9713=Z z=dKV$kPc$l2HQab8ITECkPRf{zz)cTJjjQgAcX=bgd#cTZt=B2<4hulC?raW-9!a( zfT$-LiDu#~agn%8{jF7EPdO_}bgW~!h1^o^Ztel@VQxLQk=xGg<@R%jxF5L_dAd9U z9*fsMj|#n6VopjGB~U7tDt0}NF`vQe-D?y5=jSsH0g2Z+!#lc<$IMB#*`K{v{^|O< z$?ApjBB!!-reeQmWP|+FHnD~J%r^ebvQZC{!ZjN+;`TmHY|-A362<1|X=&SKdu0#n z(dl$e8dJicY1O*@as2S;ldzXX&LIuf%Hp@ovCVw(loRSl3m>`9q&<9IZ4zbRad`XP zgPy7Y!)z~^l&ze;k+Uqh@BW;>gFV_zZ*33l51jq&l?lz_0-H3$l#>~k1D}Y=KG1Uc zck!;4f{P)ZuOC)c4bJa1ZeAj?t-a>xJ)my5!|E&@vHD=El1H{VHpO|o4bYqAQ(f;Q zt4~;UiXQvfO58>yci*Uua#r?35H znFYq0*;af&#zu=_+DS`=q(|N4NS1?-H^ei;v|h&v7N~-j<@CVS&pH z9nB$r=%zFFY5uo0vqIIP#HOpp{zsD%!qcZ_m=v{^M~c)JH*dL>&?7i!*br&UyfoEy ze_!L(eEquHDo>-oHg=WIHHlR!YNpr@rFKV@=V&wRYxL6C)A~$9;#LmlGFo=b&@0xe zdBwJSL#0cvOr9T0tC2~}dN&U#Pv2kpPFR)#x@I;(n?hftRMvOY1v;qe@Je9qjjJEF~WuwHRbFrr?HWTHVnjw`cEL^1r2`)3U;%IXmCeQmT$PUy!Xor*l@Lbc{jl3EWF}+sBrT z{-~v|aA@7{v8z_@uqEomu*-%Hw!OF`y3JQ}vcu}RhhCWTYt72mI9eYvs#f_ZqaP)k z#M!x3+?vH#6u2uc-E>T-9424YtZtR|D^D;ac?MZKVxCs6npHS(=`{a+$-x>ek2#HL zk)M6_U3PYiF>?-odNY2WdFJ%%^C#}8jo+4Y?j?8nj8=u@k5;#`bO!2j7kbtNtk9Fj zTZ9k3(;RHi9MRHGB_%TU$Ik^sZiVUdgRR|HyMvGUbTzn=r0>WF|IUgJX8FulpKQiO dEkDousrOk>lg{fNU8~F(e~X|JuPXyI+P_f#F`57X delta 1849 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%0Aw=@b|-< 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 V;2HKz(7KFXwz0JZV|6bB{eSeJ+OYrt delta 93174 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ⅆ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 CLgyU-