[Help] Крашит игру при активации скрипта на команду.
|
|
ArrowOfDeath |
Дата: Вторник, 08.01.2019, 20:30 | Сообщение # 1
|
Советник
Сообщений: 629
Статус: Offline
|
Код function main() if not isSampfuncsLoaded() or not isSampLoaded() then return end local font = renderCreateFont("Arial", 10, 12) while not isSampAvailable() do wait(100) end if not isPauseMenuActive() and isPlayerPlaying(PLAYER_HANDLE) then sampRegisterChatCommand("af", af1) wait(-1) end end function af1() for a = 1, 2000 do local result, carhandle = sampGetCarHandleBySampVehicleId(a) if result then local doorStatus = getCarDoorLockStatus(carhandle) if doorStatus == 0 then doorStatus = "{00cc00}Unlock" end if doorStatus == 2 then doorStatus = "{cc0000}Lock" end local model = getCarModel(carhandle) local namecar = getNameOfVehicleModel(model) local health = getCarHealth(carhandle) local X, Y, Z = getOffsetFromCarInWorldCoords( carhandle, 0.0, 0.0, 0.0) local resul = isPointOnScreen(X, Y, Z, 0.0) if resul then local wposX, wposY = convert3DCoordsToScreen(X, Y, Z) renderFontDrawText(font, string.format("{00ff00}%s {cc00cc}%d %s\n{ff0000}%d", namecar, model, doorStatus, health), wposX, wposY, color) renderDrawPolygon(wposX, wposY, 5, 5, 30, 0, color) end end end end
Скрин кода
Мои AHК скрипты | Темы:
AHK
Сообщение отредактировал ArrowOfDeath - Вторник, 08.01.2019, 20:32 |
|
|
|
Alowir |
Дата: Среда, 09.01.2019, 03:48 | Сообщение # 2
|
Сообщений: 774
Статус: Offline
|
Код local color = 0xFFFFFFFF
function main() if not isSampfuncsLoaded() or not isSampLoaded() then return end font = renderCreateFont("Arial", 10, 12) -- обязательно делать переменную глобальной, т.к юзаешь в другой функции while not isSampAvailable() do wait(100) end if not isPauseMenuActive() and isPlayerPlaying(PLAYER_HANDLE) then sampRegisterChatCommand("af", af1) end wait(-1) end
function af1() for carId = 1, 2000 do local result, carhandle = sampGetCarHandleBySampVehicleId(carId) if result then doorStatus = (getCarDoorLockStatus(carhandle) == 2 and "{cc0000}Lock" or "{00cc00}Unlock") local model = getCarModel(carhandle) local carName, carHealth, x, y, z = getNameOfVehicleModel(model), getCarHealth(carhandle), getCarCoordinates(carhandle) if isPointOnScreen(x, y, z, 1.0) then local X, Y = convert3DCoordsToScreen(x, y, z) renderFontDrawText(font, string.format("{00ff00}%s {cc00cc}%d %s\n{ff0000}%d", carName, model, doorStatus, carHealth), X, Y, color) --[[оба варианта верны]]--
--renderFontDrawText(font, "{00ff00}"..carName.."{cc00cc} "..model.." "..doorStatus.."\n{ff0000}"..carHealth, X, Y, color) renderDrawPolygon(X, Y, 5, 5, 30, 0, color) end end end end
|
|
|
|
ArrowOfDeath |
Дата: Среда, 09.01.2019, 15:03 | Сообщение # 3
|
Советник
Сообщений: 629
Статус: Offline
|
Спасибо, понял ошибочку. Далее при активации выводит 3д текст, но на 1 кадр. Пытался зациклить Код while true do wait(0) так же repeat until Выдает ошибочки. Как правильно зациклить чтоб к функе обращение было бесконечным, пока снова не деактивируешь?
Мои AHК скрипты | Темы:
AHK
|
|
|
|
Alowir |
Дата: Среда, 09.01.2019, 15:31 | Сообщение # 4
|
Сообщений: 774
Статус: Offline
|
Код local color = 0xFFFFFFFF
function main() if not isSampfuncsLoaded() or not isSampLoaded() then return end font = renderCreateFont("Arial", 10, 12) -- обазятельно делать переменную глобальной, т.к юзаешь в другой функции while not isSampAvailable() do wait(100) end if not isPauseMenuActive() and isPlayerPlaying(PLAYER_HANDLE) then sampRegisterChatCommand("af", af1) end while true do wait(0) if status then for carId = 1, 2000 do local result, carhandle = sampGetCarHandleBySampVehicleId(carId) if result then doorStatus = (getCarDoorLockStatus(carhandle) == 2 and "{cc0000}Lock" or "{00cc00}Unlock") local model = getCarModel(carhandle) local carName, carHealth, x, y, z = getNameOfVehicleModel(model), getCarHealth(carhandle), getCarCoordinates(carhandle) if isPointOnScreen(x, y, z, 1.0) then local X, Y = convert3DCoordsToScreen(x, y, z) renderFontDrawText(font, string.format("{00ff00}%s {cc00cc}%d %s\n{ff0000}%d", carName, model, doorStatus, carHealth), X, Y, color) --[[оба варианта верны]]--
--renderFontDrawText(font, "{00ff00}"..carName.."{cc00cc} "..model.." "..doorStatus.."\n{ff0000}"..carHealth, X, Y, color) renderDrawPolygon(X, Y, 5, 5, 30, 0, color) end end end end end end
function af1() status = not status end
или
Код local color = 0xFFFFFFFF
function main() if not isSampfuncsLoaded() or not isSampLoaded() then return end font = renderCreateFont("Arial", 10, 12) -- обазятельно делать переменную глобальной, т.к юзаешь в другой функции while not isSampAvailable() do wait(100) end if not isPauseMenuActive() and isPlayerPlaying(PLAYER_HANDLE) then sampRegisterChatCommand("af", af1) end wait(-1) end
function af1() if renderThread then renderThread:terminate(); renderThread = nil return end renderThread = lua_thread.create(function() while true do wait(0) for carId = 1, 2000 do local result, carhandle = sampGetCarHandleBySampVehicleId(carId) if result then doorStatus = (getCarDoorLockStatus(carhandle) == 2 and "{cc0000}Lock" or "{00cc00}Unlock") local model = getCarModel(carhandle) local carName, carHealth, x, y, z = getNameOfVehicleModel(model), getCarHealth(carhandle), getCarCoordinates(carhandle) if isPointOnScreen(x, y, z, 1.0) then local X, Y = convert3DCoordsToScreen(x, y, z) renderFontDrawText(font, string.format("{00ff00}%s {cc00cc}%d %s\n{ff0000}%d", carName, model, doorStatus, carHealth), X, Y, color) --[[оба варианта верны]]--
--renderFontDrawText(font, "{00ff00}"..carName.."{cc00cc} "..model.." "..doorStatus.."\n{ff0000}"..carHealth, X, Y, color) renderDrawPolygon(X, Y, 5, 5, 30, 0, color) end end end end end) end
|
|
|
|
ArrowOfDeath |
Дата: Среда, 09.01.2019, 16:24 | Сообщение # 5
|
Советник
Сообщений: 629
Статус: Offline
|
Поясни пожалуйста, логику
Почему значение переменной status именно not status. Как вообще это работает в Lua.
Код function af1() status = not status end
Мои AHК скрипты | Темы:
AHK
Сообщение отредактировал ArrowOfDeath - Среда, 09.01.2019, 16:25 |
|
|
|
Bobcar |
Дата: Вторник, 05.02.2019, 14:15 | Сообщение # 6
|
Новичок
Сообщений: 6
Статус: Offline
|
Цитата ArrowOfDeath ( ) Почему значение переменной status именно not status Это меняет значение переменной status на противоположное. То есть если было false, то станет true, и наоборот. Оператор not - отрицание.
Сообщение отредактировал Bobcar - Вторник, 05.02.2019, 14:15 |
|
|
|