Загрузить файлы в «/»
This commit is contained in:
110
autoheal.lua
Normal file
110
autoheal.lua
Normal file
@@ -0,0 +1,110 @@
|
||||
script_name("autoheal")
|
||||
script_author("treywisp")
|
||||
|
||||
local sampev = require("samp.events")
|
||||
|
||||
local state = {
|
||||
active = false,
|
||||
satiety = 0
|
||||
}
|
||||
|
||||
local function notify(text)
|
||||
sampAddChatMessage("[autoheal] {FFFFFF}" .. text, 0xDC143C)
|
||||
end
|
||||
|
||||
local function getAction()
|
||||
local hp = getCharHealth(PLAYER_PED) or 0
|
||||
local satiety = tonumber(state.satiety) or 0
|
||||
|
||||
if satiety <= 20 then
|
||||
return "eat"
|
||||
elseif hp < 100 then
|
||||
return "heal"
|
||||
else
|
||||
return "none"
|
||||
end
|
||||
end
|
||||
|
||||
local function autoHeal()
|
||||
local hp = getCharHealth(PLAYER_PED) or 0
|
||||
|
||||
if hp >= 100 then
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
return
|
||||
end
|
||||
|
||||
if state.active then
|
||||
state.active = false
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
return
|
||||
end
|
||||
|
||||
state.active = true
|
||||
sampSendChat("/stats")
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
|
||||
lua_thread.create(function()
|
||||
while state.active do
|
||||
wait(500)
|
||||
local action = getAction()
|
||||
|
||||
if action == "eat" then
|
||||
sampSendChat("/grib eat")
|
||||
wait(1500)
|
||||
elseif action == "heal" then
|
||||
sampSendChat("/grib heal")
|
||||
wait(1500)
|
||||
else
|
||||
state.active = false
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>")
|
||||
end
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function main()
|
||||
if not isSampfuncsLoaded() or not isSampLoaded() then return end
|
||||
while not isSampAvailable() do wait(100) end
|
||||
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: /autoheal")
|
||||
sampRegisterChatCommand("autoheal", autoHeal)
|
||||
end
|
||||
|
||||
function sampev.onShowDialog(id, style, title, button1, button2, text)
|
||||
if not state.active then return end
|
||||
if id == 22 and title == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" then
|
||||
local satiety = text:match("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[%s:%-]+(%d+)")
|
||||
if satiety then
|
||||
state.satiety = tonumber(satiety)
|
||||
end
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function sampev.onServerMessage(color, text)
|
||||
if not state.active then return end
|
||||
|
||||
local satiety = text:match("^%s*<2A><> <20><><EFBFBD><EFBFBD><EFBFBD>%s+%{[%x]+%}'.-'%{[%x]+%}%.%s+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (%d+)%.")
|
||||
or text:match("^ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s+%d+/%d+%.%s+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%s+(%d+)/%d+%.")
|
||||
|
||||
if satiety then
|
||||
state.satiety = tonumber(satiety)
|
||||
return false
|
||||
end
|
||||
|
||||
if text:find("^ <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>") then
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
state.active = false
|
||||
return false
|
||||
|
||||
elseif text:find("^ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") then
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
state.active = false
|
||||
return false
|
||||
|
||||
elseif text:find("^ <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 5 <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>") then
|
||||
notify("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
||||
state.active = false
|
||||
return false
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user