Загрузить файлы в «/»
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