- 44
- 3
- Версия MoonLoader
- .026-beta
У меня крашит игра, из-за моего крутого-мега скрипта...
Очень большие подозрения на эти две функции. Нужно экспертное мнение, на сколько это норм и не клоун ли я?
Функция accept вызывается, если выполняется условие в хуке OnServerMessage.
Крашит в lua51.dll. Изучив форумы узнал, что скорее всего из-за попытки обновить информацию в массивах...
Стек вызовов:
lua_rawgeti 0x570777D6
luaL_unref 0x570B9325
Unknown 0x5722A935
Unknown 0x57140957
Unknown 0x57119D99
Unknown 0x5707280D
?unregisterConsoleCommand@SAMPFUNCS@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z 0x57E5A497
Unknown 0x57DC225E C:\GTA\GTA BY SR Admins\SAMPFUNCS.asi
?unregisterConsoleCommand@SAMPFUNCS@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z 0x57E525CD
luaJIT_profile_stop 0x570B1952
Unknown 0x57072BB4
luaJIT_version_2_1_0_beta3 0x5709C21F
lua_close 0x570B1B2A
Unknown 0x57206959
RtlAllocateHeap 0x776E5DFE
Очень большие подозрения на эти две функции. Нужно экспертное мнение, на сколько это норм и не клоун ли я?
Функция accept вызывается, если выполняется условие в хуке OnServerMessage.
Крашит в lua51.dll. Изучив форумы узнал, что скорее всего из-за попытки обновить информацию в массивах...
Стек вызовов:
lua_rawgeti 0x570777D6
luaL_unref 0x570B9325
Unknown 0x5722A935
Unknown 0x57140957
Unknown 0x57119D99
Unknown 0x5707280D
?unregisterConsoleCommand@SAMPFUNCS@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z 0x57E5A497
Unknown 0x57DC225E C:\GTA\GTA BY SR Admins\SAMPFUNCS.asi
?unregisterConsoleCommand@SAMPFUNCS@@QAEXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z 0x57E525CD
luaJIT_profile_stop 0x570B1952
Unknown 0x57072BB4
luaJIT_version_2_1_0_beta3 0x5709C21F
lua_close 0x570B1B2A
Unknown 0x57206959
RtlAllocateHeap 0x776E5DFE
Две функции:
function isKeysDown(keylist)
local counter = #keylist
local counterPressed = 0
local success = false
local timeout = false
local timeoutThread = lua_thread.create(function()
wait(20000)
timeout = true
end)
while true do
wait(0)
if timeout then
return false
end
counterPressed = 0
for _, key in ipairs(keylist) do
if isKeyDown(key) and not sampIsCursorActive() then
counterPressed = counterPressed + 1
end
end
if counterPressed == counter then
success = true
return true
end
end
end
function accept(nickname, typeHelp, vehicle)
local success = false
lua_thread.create(function()
wait(10)
local messageMap = {
good = "приятной игры.",
giveCar = "выдать т.с.",
repair = "ремонт т.с.",
flip = "перевернуть т.с.",
fill = "заправить т.с.",
hello = "приветствие.",
sp = "слежка.",
}
local messageType = messageMap[typeHelp]
if not messageType then
return
end
local keyName = getNamesOfKeys(cfgHotkeys.v)
local helpMessage = "{c9b0ff}Auto-Report {ffffff}¤ Нажмите {b8ff94}'" .. tostring(keyName) .. "'{ffffff}, для того чтобы принять {ff8c00}репорт{ffffff}. Тип помощи: {94f3ff}" .. messageType
sampAddChatMessage(helpMessage, -1)
while not success do
wait(0)
if isKeysDown(cfgHotkeys.v) then
if typeHelp == "good" or typeHelp == "hello" then
shortAnswer(nickname, "good")
elseif typeHelp == "giveCar" then
if vehicle == 510 or vehicle == 462 then
giveVehicle(nickname, vehicle)
end
elseif typeHelp == "sp" then
giveEmergencyHelp(nickname, typeHelp)
else
giveEmergencyHelp(nickname, typeHelp)
end
success = true
else
sampAddChatMessage("{c9b0ff}Auto-Report {ffffff}¤ Запрошенная помощь для {b8ff94}" .. nickname .. "{ffffff} была отменена.", -1)
success = true
end
end
end)
end
Фрагмент кода из хука:
if settings.enabled and not settings.isPaused and not settings.spectating and text:find("/arep") and color == -11599617 then
local nickname = getNickname(text)
if nickname and sampIsPlayerConnected(sampGetPlayerIdByNickname(nickname)) and nickname ~= sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(playerPed))) then
for _, keyword in ipairs(goodKeywords) do
if string.find(string.nlower(text), keyword) then
if cfg.FLAGS.buttonUse then
accept(nickname, "good")
return
elseif not isBlacklisted(nickname) then
blacklistOneMinute(nickname)
shortAnswer(nickname, "good")
return
end
end
end
end
end
Последнее редактирование: