Lua [ARZ] OilRender - Рендер для наземных нефтевышек

XRLM

Известный
Автор темы
2,532
847
Версия SA-MP
  1. Любая
Описание:
Рисует линии к нефтевышкам, в которых можно или через ~минуту можно будет купить бочку.
Рисует запас нефти на нефтевышках, в которых есть бочки.
Удаляет информацию на бочках, оставляя лишь ник её владельца.
1693724472464.png
Активация: /oil
Зависимости: SAMP Lua
03.10.2023 - Обновлён
11.01.2024 - Обновлён
 

Вложения

  • OilRender.lua
    3.9 KB · Просмотры: 61
Последнее редактирование:

Vespan

loneliness
Проверенный
2,102
1,631
Был но там на экране выводился список нефтевышек,и ещё..один был что спамит командой список нефтевышек,выбирает самую хорошую нефтевышку после чего появляется чекпоинт(сервер ставит)
Ну мде...такого не было🤙
 
  • Нравится
Реакции: VRush

XRLM

Известный
Автор темы
2,532
847
Был но там на экране выводился список нефтевышек,и ещё..один был что спамит командой список нефтевышек,выбирает самую хорошую нефтевышку после чего появляется чекпоинт(сервер ставит)
Ну мде...такого не было🤙
в пизду вас. ещё жуков наставили специально

Команда /oilgroundlist.
Скрипт можно удалять🙂
?
 
  • Нравится
  • Клоун
Реакции: Air_Official и Ruslan3208
108
5
Описание: Рендерит количество литров нефти у нефтевышек. Если нефти хватит для того, чтобы купить бочку(500+л), то рендер меняет цвет на фиолетовый и рисует линию к нефтевышке. Если в течении ~1 минуты в нефтевышке будет 500+л нефти, то рендер меняет цвет на жёлто-зелёный и рисует линию к нефтевышке. Удаляет доп. инфу на бочках, теперь будет рендериться только ник владельца, что немного повышает фпс.
Активация: /neft
Если нужно, чтобы скрипт был всегда включён, то во 2 строке кода нужно изменить false на true.
Идите нахуй. Не видел скрипта, который выполняет такую же функцию.
а как сменить код для автивации навсегда!?? какая прога нада?
 

XRLM

Известный
Автор темы
2,532
847
Lua:
local sampev = require 'lib.samp.events'
local state = true
local font = renderCreateFont('Tahoma', 8, 5)
function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
    if text:find("{cccccc}Бочка с нефтью\nВладелец: {31B404}.+\nУдерживайте по бочке 'ПКМ' или пальцем") then
        local name = text:match("{cccccc}Бочка с нефтью\nВладелец: ({31B404}.+)\nУдерживайте по бочке 'ПКМ' или пальцем")
        return {id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, name}
    end
end
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('neft', function()
        state = not state
    end)
    while true do wait(0)
        if state then
            for i = 0, 2048 do
                if sampIs3dTextDefined(i) then
                    local st, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(i)
                    if isPointOnScreen(posX, posY, posZ, 1) then
                        local x, y, z = getCharCoordinates(1)
                        local xx, yy = convert3DCoordsToScreen(x, y, z)
                        local px, py = convert3DCoordsToScreen(posX, posY, posZ)
                        if st:find("{ECDC3A}Уровень улучшения добычи нефти: %d+ / 30 уровень\n{ECDC3A}Уровень улучшения хранилища нефти: %d+ / 30 уровень\n\n\n{ffffff}Нефтевышка {31B404}№%d+{ffffff}\n{ffffff}Запас нефти:{31B404} (%d+) / (%d+)\n{ffffff}Запас бочек:{31B404} %d+ / %d+\n\n{cccccc}Стоимость за %d+ литров %(бочка%): 12 AZ%-Coins\nЧтобы купить бочку нажмите 'ALT'") then
                            local neft, hran = st:match("{ECDC3A}Уровень улучшения добычи нефти: %d+ / 30 уровень\n{ECDC3A}Уровень улучшения хранилища нефти: %d+ / 30 уровень\n\n\n{ffffff}Нефтевышка {31B404}№%d+{ffffff}\n{ffffff}Запас нефти:{31B404} (%d+) / (%d+)\n{ffffff}Запас бочек:{31B404} %d+ / %d+\n\n{cccccc}Стоимость за %d+ литров %(бочка%): 12 AZ%-Coins\nЧтобы купить бочку нажмите 'ALT'")
                            if tonumber(neft) >= 500 then
                                renderDrawLine(xx, yy, px, py + 60, 3, 0xFF6A5ACD)
                                renderDrawPolygon(px, py + 60, 10, 10, 15, 0, 0xFF6A5ACD)
                                renderDrawPolygon(xx, yy, 10, 10, 15, 0, 0xFF6A5ACD)
                                renderFontDrawText(font, '\n\n\nЗапас нефти '..neft..'/'..hran, px, py, 0xFF6A5ACD)
                            end
                        elseif st:find("{ECDC3A}Уровень улучшения добычи нефти: (%d+) / 30 уровень\n{ECDC3A}Уровень улучшения хранилища нефти: %d+ / 30 уровень\n\n\n{ffffff}Нефтевышка {31B404}№%d+{ffffff}\n{ffffff}Запас нефти:{31B404} (%d+) / (%d+)\n{ffffff}Запас бочек:{31B404} %d+ / %d+\n\n.+Покупка невозможн.+") then
                            local dobicha, neft, hran = st:match("{ECDC3A}Уровень улучшения добычи нефти: (%d+) / 30 уровень\n{ECDC3A}Уровень улучшения хранилища нефти: %d+ / 30 уровень\n\n\n{ffffff}Нефтевышка {31B404}№%d+{ffffff}\n{ffffff}Запас нефти:{31B404} (%d+) / (%d+)\n{ffffff}Запас бочек:{31B404} %d+ / %d+\n\n.+Покупка невозможн.+")
                            if (tonumber(dobicha) * 2 + 16 + tonumber(neft)) >= 500 and tonumber(neft) < 500 then
                                renderDrawLine(xx, yy, px, py + 60, 3, 0xFFADFF2F)
                                renderDrawPolygon(px, py + 60, 10, 10, 15, 0, 0xFFADFF2F)
                                renderDrawPolygon(xx, yy, 10, 10, 15, 0, 0xFFADFF2F)
                                renderFontDrawText(font, '\n\n\nЗапас нефти '..neft..'/'..hran, px, py, 0xFFADFF2F)
                            else
                                renderFontDrawText(font, '\n\n\nЗапас нефти '..neft..'/'..hran, px, py, 0xFFE6E6FA)
                            end
                        end
                    end
                end
            end
        end
    end
end
 
  • Клоун
Реакции: Air_Official