- 41
- 7
- Версия MoonLoader
- .026-beta
говнокод:
local inicfg = require("inicfg")
local memory = require("memory")
local ffi = require 'ffi'
local cast = ffi.cast
local draw_dist = cast('float *', 0x00B7C4F0)
cast('unsigned char *', 0x005609FF)[0] = 0xEB
cast('unsigned char *', 0x00561344)[0] = 0xEB
local data =
{
settings =
{
sst = 12,
ssw = 1,
ssd = 400.0,
sss = true
}
}
function main()
repeat wait(0) until isSampAvailable()
local values = inicfg.load(data, "wtd.ini")
inicfg.save(values, "wtd.ini")
sampRegisterChatCommand("sst", setTime)
sampRegisterChatCommand("ssw", setWeather)
sampRegisterChatCommand("ssd", setDistance)
sampRegisterChatCommand("ssm", setStatic)
while true do
wait(0)
local values = inicfg.load(data, "wtd.ini")
if values.Settings.Static then
if values.Settings.Time ~= memory.read(0xB70153, 1, false) then memory.write(0xB70153, values.Settings.Time, 1, false) end
if values.Settings.Weather ~= memory.read(0xC81320, 2, false) then memory.write(0xC81320, values.Settings.Weather, 2, false) end
if values.Settings.Distance ~= memory.read(0x00B7C4F0, 4, false) then weatmain(values.Settings.Distance) end
end
end
end
function setTime(time)
local time = tonumber(time)
if time < 0 or time > 23 then
sampAddChatMessage("{F5DEB3}Укажите время, от {ffffff}0 {F5DEB3}до {ffffff}23{F5DEB3}.", -1) else
sampAddChatMessage("{F5DEB3}Время установлено на {ffffff}"..time.."{F5DEB3}.", -1)
local values = inicfg.load(data, "wtd.ini")
if values.Settings.Static then
values.Settings.Time = time
inicfg.save(values, "wtd.ini")
else memory.write(0xB70153, time, 1, false)
end
end
end
function setDistance(param)
param = tonumber(param)
if param > 3600.0 or param < 101.0 then sampAddChatMessage("{F5DEB3}Укажите дистанцию прорисовки, от {ffffff}101 {F5DEB3}до {ffffff}3600{F5DEB3}.", -1) return false end
weatmain(param)
sampAddChatMessage("{F5DEB3}Дистанция прорисовки установлена на {ffffff}"..param.."{F5DEB3}.", -1)
end
function weatmain(dist)
local values = inicfg.load(data, "wtd.ini")
draw_dist[0] = dist
values.Settings.Distance = dist
inicfg.save(values, "wtd.ini")
end
function setWeather(weather)
local weather = tonumber(weather)
if weather < 0 or weather > 45 then sampAddChatMessage("{F5DEB3}Укажите погоду, от {ffffff}0 {F5DEB3}до {ffffff}45{F5DEB3}.", -1) else
if message then
sampAddChatMessage("{F5DEB3}Погода установлена на {ffffff}"..weather.."{F5DEB3}.", -1)
end
local values = inicfg.load(data, "wtd.ini")
if values.Settings.Static then
memory.write(0xC81320, weather, 2, false)
memory.write(0xC81318, weather, 2, false)
values.Settings.Weather = weather
inicfg.save(values, "wtd.ini")
else
memory.write(0xC81320, weather, 2, false)
end
end
end
function setStatic(static)
if static == "on" then
sampAddChatMessage("{F5DEB3}Статическое состояние активировано.", -1)
local values = inicfg.load(data, "wtd.ini")
values.Settings.Static = true
inicfg.save(values, "wtd.ini")
elseif static == "off" then
sampAddChatMessage("{F5DEB3}Статическое состояние деактивировано.", -1)
local values = inicfg.load(data, "wtd.ini")
values.Settings.Static = false
inicfg.save(values, "wtd.ini")
end
end