mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-11-03 04:16:23 +01:00
Updated to OTCv8 3.1 rev 229
This commit is contained in:
223
modules/game_bot/default_configs/vBot_4.8/vBot/alarms.lua
Normal file
223
modules/game_bot/default_configs/vBot_4.8/vBot/alarms.lua
Normal file
@@ -0,0 +1,223 @@
|
||||
local panelName = "alarms"
|
||||
local ui = setupUI([[
|
||||
Panel
|
||||
height: 19
|
||||
|
||||
BotSwitch
|
||||
id: title
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
text-align: center
|
||||
width: 130
|
||||
!text: tr('Alarms')
|
||||
|
||||
Button
|
||||
id: alerts
|
||||
anchors.top: prev.top
|
||||
anchors.left: prev.right
|
||||
anchors.right: parent.right
|
||||
margin-left: 3
|
||||
height: 17
|
||||
text: Edit
|
||||
|
||||
]])
|
||||
ui:setId(panelName)
|
||||
|
||||
if not storage[panelName] then
|
||||
storage[panelName] = {}
|
||||
end
|
||||
|
||||
local config = storage[panelName]
|
||||
|
||||
ui.title:setOn(config.enabled)
|
||||
ui.title.onClick = function(widget)
|
||||
config.enabled = not config.enabled
|
||||
widget:setOn(config.enabled)
|
||||
end
|
||||
|
||||
local window = UI.createWindow("AlarmsWindow")
|
||||
window:hide()
|
||||
|
||||
ui.alerts.onClick = function()
|
||||
window:show()
|
||||
window:raise()
|
||||
window:focus()
|
||||
end
|
||||
|
||||
local widgets =
|
||||
{
|
||||
"AlarmCheckBox",
|
||||
"AlarmCheckBoxAndSpinBox",
|
||||
"AlarmCheckBoxAndTextEdit"
|
||||
}
|
||||
|
||||
local parents =
|
||||
{
|
||||
window.list,
|
||||
window.settingsList
|
||||
}
|
||||
|
||||
|
||||
-- type
|
||||
addAlarm = function(id, title, defaultValue, alarmType, parent, tooltip)
|
||||
local widget = UI.createWidget(widgets[alarmType], parents[parent])
|
||||
widget:setId(id)
|
||||
|
||||
if type(config[id]) ~= 'table' then
|
||||
config[id] = {}
|
||||
end
|
||||
|
||||
widget.tick:setText(title)
|
||||
widget.tick:setChecked(config[id].enabled)
|
||||
widget.tick:setTooltip(tooltip)
|
||||
widget.tick.onClick = function()
|
||||
config[id].enabled = not config[id].enabled
|
||||
widget.tick:setChecked(config[id].enabled)
|
||||
end
|
||||
|
||||
if alarmType > 1 and type(config[id].value) == 'nil' then
|
||||
config[id].value = defaultValue
|
||||
end
|
||||
|
||||
if alarmType == 2 then
|
||||
widget.value:setValue(config[id].value)
|
||||
widget.value.onValueChange = function(widget, value)
|
||||
config[id].value = value
|
||||
end
|
||||
elseif alarmType == 3 then
|
||||
widget.text:setText(config[id].value)
|
||||
widget.text.onTextChange = function(widget, newText)
|
||||
config[id].value = newText
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- settings
|
||||
addAlarm("ignoreFriends", "Ignore Friends", true, 1, 2)
|
||||
addAlarm("flashClient", "Flash Client", true, 1, 2)
|
||||
|
||||
-- alarm list
|
||||
addAlarm("damageTaken", "Damage Taken", false, 1, 1)
|
||||
addAlarm("lowHealth", "Low Health", 20, 2, 1)
|
||||
addAlarm("lowMana", "Low Mana", 20, 2, 1)
|
||||
addAlarm("playerAttack", "Player Attack", false, 1, 1)
|
||||
|
||||
UI.Separator(window.list)
|
||||
|
||||
addAlarm("privateMsg", "Private Message", false, 1, 1)
|
||||
addAlarm("defaultMsg", "Default Message", false, 1, 1)
|
||||
addAlarm("customMessage", "Custom Message:", "", 3, 1, "You can add text, that if found in any incoming message will trigger alert.\n You can add many, just separate them by comma.")
|
||||
|
||||
UI.Separator(window.list)
|
||||
|
||||
addAlarm("creatureDetected", "Creature Detected", false, 1, 1)
|
||||
addAlarm("playerDetected", "Player Detected", false, 1, 1)
|
||||
addAlarm("creatureName", "Creature Name:", "", 3, 1, "You can add a name or part of it, that if found in any visible creature name will trigger alert.\nYou can add many, just separate them by comma.")
|
||||
|
||||
|
||||
local lastCall = now
|
||||
local function alarm(file, windowText)
|
||||
if now - lastCall < 2000 then return end -- 2s delay
|
||||
lastCall = now
|
||||
|
||||
if not g_resources.fileExists(file) then
|
||||
file = "/sounds/alarm.ogg"
|
||||
lastCall = now + 4000 -- alarm.ogg length is 6s
|
||||
end
|
||||
|
||||
|
||||
if modules.game_bot.g_app.getOs() == "windows" and config.flashClient.enabled then
|
||||
g_window.flash()
|
||||
end
|
||||
g_window.setTitle(player:getName() .. " - " .. windowText)
|
||||
playSound(file)
|
||||
end
|
||||
|
||||
-- damage taken & custom message
|
||||
onTextMessage(function(mode, text)
|
||||
if not config.enabled then return end
|
||||
if mode == 22 and config.damageTaken.enabled then
|
||||
return alarm('/sounds/magnum.ogg', "Damage Received!")
|
||||
end
|
||||
|
||||
if config.customMessage.enabled then
|
||||
local alertText = config.customMessage.value
|
||||
if alertText:len() > 0 then
|
||||
text = text:lower()
|
||||
local parts = string.split(alertText, ",")
|
||||
|
||||
for i=1,#parts do
|
||||
local part = parts[i]
|
||||
part = part:trim()
|
||||
part = part:lower()
|
||||
|
||||
if text:find(part) then
|
||||
return alarm('/sounds/magnum.ogg', "Special Message!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
-- default & private message
|
||||
onTalk(function(name, level, mode, text, channelId, pos)
|
||||
if not config.enabled then return end
|
||||
if name == player:getName() then return end -- ignore self messages
|
||||
if config.ignoreFriends.enabled and isFriend(name) then return end -- ignore friends if enabled
|
||||
|
||||
if mode == 1 and config.defaultMsg.enabled then
|
||||
return alarm("/sounds/magnum.ogg", "Default Message!")
|
||||
end
|
||||
|
||||
if mode == 4 and config.privateMsg.enabled then
|
||||
return alarm("/sounds/Private_Message.ogg", "Private Message!")
|
||||
end
|
||||
end)
|
||||
|
||||
-- health & mana
|
||||
macro(100, function()
|
||||
if not config.enabled then return end
|
||||
if config.lowHealth.enabled then
|
||||
if hppercent() < config.lowHealth.value then
|
||||
return alarm("/sounds/Low_Health.ogg", "Low Health!")
|
||||
end
|
||||
end
|
||||
|
||||
if config.lowMana.enabled then
|
||||
if hppercent() < config.lowMana.value then
|
||||
return alarm("/sounds/Low_Mana.ogg", "Low Mana!")
|
||||
end
|
||||
end
|
||||
|
||||
for i, spec in ipairs(getSpectators()) do
|
||||
if not spec:isLocalPlayer() and not (config.ignoreFriends.enabled and isFriend(spec)) then
|
||||
|
||||
if config.creatureDetected.enabled then
|
||||
return alarm("/sounds/magnum.ogg", "Creature Detected!")
|
||||
end
|
||||
|
||||
if spec:isPlayer() then
|
||||
if spec:isTimedSquareVisible() and config.playerAttack.enabled then
|
||||
return alarm("/sounds/Player_Attack.ogg", "Player Attack!")
|
||||
end
|
||||
if config.playerDetected.enabled then
|
||||
return alarm("/sounds/Player_Detected.ogg", "Player Detected!")
|
||||
end
|
||||
end
|
||||
|
||||
if config.creatureName.enabled then
|
||||
local name = spec:getName():lower()
|
||||
local fragments = string.split(config.creatureName.value, ",")
|
||||
|
||||
for i=1,#fragments do
|
||||
local frag = fragments[i]:trim():lower()
|
||||
|
||||
if name:lower():find(frag) then
|
||||
return alarm("/sounds/alarm.ogg", "Special Creature Detected!")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user