Софт RakSAMP Lite

tfornik

Известный
324
259
при вызове runCommand('!reloadlua') - крашит раксамп
есть рабочее решение?
 

sasha__1

Известный
27
12
Скажите плиз как можно сделать что бы бот зажимал W на несколько секунд?
Lua:
local hook = require("samp.events")
require("addon")

function pressKey(keyId, pressTime)
    print('Pressed key:', keyId)
    key = keyId
    press = true
    newTask(function()
        press = nil
        key = nil
    end, pressTime)
end

function hook.onSendPlayerSync(data)
    if pressKey then
        data.upDownKeys = key
    end
end

function onRunCommand(cmd)
    if cmd:find("^!pkey %d+ %d+$") then
        local _k, _t = cmd:match("^!pkey (%d+) (%d+)$")
        pressKey(tonumber(_k), tonumber(_t))
        return false
    end
end

function hook.onSendPlayerSync(data)
    if press then
        data.upDownKeys = key
    end
end

Вводишь в консоль "!pkey 65408 2000", и бот на две секунды зажмёт клавишу "W".
(Если введёшь 128 вместо 65408, то зажмёт клавишу "S")

Можно еще просто в коде:
Lua:
pressKey(65408, 2000)

Со стороны будет выглядеть так, будто ты идёшь на месте. Если тебе нужно прямо пройтись, а не зажать кнопку, то придётся писать более объёмный скрипт.

при вызове runCommand('!reloadlua') - крашит раксамп
есть рабочее решение?
Смотря для какой цели. Если для разработки, то можно просто перезапускать RakSamp. Да, ошибка присутствует. Краша пока что не избежать, насколько мне известно. Если ты пишешь бота и хочешь быстро очистить все переменные во время реконнект и/или дисконнекта, то сохраняй все данные в таблицу, а потом пересоздай эту таблицу.
Пример:

Lua:
local hook = require("samp.events")

bot = {}

function onLoad()
    bot.nickname = "Nick_Name"
    bot.password = "123123"
end

function hook.onSetPlayerPos(pos)
    bot.position = pos
end

-- Очищаем во время дисконнекта
function onDisconnect()
    bot = {}
end
 
Последнее редактирование:
  • Влюблен
Реакции: Жоский поцик

Жоский поцик

Участник
115
15
Lua:
local hook = require("samp.events")

function pressKey(keyId, pressTime)
    key = keyId
    pressKey = true
    newTask(function()
        pressKey = nil
        key = nil
    end, pressTime)
end


function hook.onSendPlayerSync(data)
    if pressKey then
        data.upDownKeys = key
    end
end

function onRunCommand(cmd)
    if cmd:find("^!pkey %d+ %d+$") then
        local _k, _t = cmd:match("^!pkey (%d+) (%d+)$")
        pressKey(tonumber(_k), tonumber(_t))
        return false
    end
end

Вводишь в консоль "!pkey 65408 2000", и бот на две секунды зажмёт клавишу "W".
(Если введёшь 128 вместо 65408, то зажмёт клавишу "S")

Можно еще просто в коде:
Lua:
pressKey(65408, 2000)

Со стороны будет выглядеть так, будто ты идёшь на месте. Если тебе нужно прямо пройтись, а не зажать кнопку, то придётся писать более объёмный скрипт.
Сначало, как зашёл, написало что loaded, как reqspawn*улся - начало каждую секунду флудить этим, что делать?
1691329447271.png
 

TuHku BuHKu

Активный
139
28
С чем может быть связана проблема подключения РакСампа, а именно допусстим бот сдох от голода, попал в больку вылечился сработал скрипт реконект после лечения через 15 сек, проходит 15 сек появляется надпись конект и дальше строки не идут, а иногда идут нормально, и в итоге я не пойму почему раз через раз он подключается то нормально то нет, пробовал даже сток РакСампа, и тоже самое раз через раз подключается то нормально то нет.

Screenshot_6.png


вот на этой строке он застывает и все, дальше не конектится
 
Последнее редактирование:

tfornik

Известный
324
259
так , чуваки
как перезагружать то скрипт?
я целый день роюсь по всему инету
runCommand('!reloadlua') просто крашит
 

chromiusj

Известный
Модератор
5,656
3,959
так , чуваки
как перезагружать то скрипт?
я целый день роюсь по всему инету
runCommand('!reloadlua') просто крашит
как ответили выше,смотря от ситуации,если у тебя крашит скрипт со временем,нужно смотреть и исправлять,в противном случае как-то на костылях поддерживать состояние скрипта
 

chromiusj

Известный
Модератор
5,656
3,959
всем привет,пытаюсь переделать эти функи под раксамп,и столкнулся с тем,что либо они не работают там,либо я чего-то натворил,подскажите что не так?
сами функции

Lua:
require("addon")


function onRunCommand(cmd)
    if cmd == '!kakawka' then
        newTask(function()
            sendInput('/phone')
            wait(2000)
            arizonaOpenPhoneApp(24)
        end)
    end
end

function arizonaOpenPhoneApp(appId)
    local str = ('launchedApp|%s'):format(appId)
    local bs = bitStream.new()
    bs:writeUInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(#str)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(str)
    bs:writeInt32(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(1, 7, 1)
    bs:reset()
end
function onReceivePacket(id, bs)
    if id == 220 then
        bs:ignoreBits(8)
        if (bs:readInt8(bs) == 17) then
            bs:ignoreBits(32)
            local text = bs:readString(bs:readInt32(bs))
            if text:find('window%.executeEvent%(\'event%.setActiveView\', \'%["Phone"%]\'%);') then
                newTask(arizonaOpenPhoneApp(26))
            end
        end
    end
end
 

sasha__1

Известный
27
12
всем привет,пытаюсь переделать эти функи под раксамп,и столкнулся с тем,что либо они не работают там,либо я чего-то натворил,подскажите что не так?
сами функции

Lua:
require("addon")


function onRunCommand(cmd)
    if cmd == '!kakawka' then
        newTask(function()
            sendInput('/phone')
            wait(2000)
            arizonaOpenPhoneApp(24)
        end)
    end
end

function arizonaOpenPhoneApp(appId)
    local str = ('launchedApp|%s'):format(appId)
    local bs = bitStream.new()
    bs:writeUInt8(220)
    bs:writeInt8(18)
    bs:writeInt8(#str)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:writeString(str)
    bs:writeInt32(0)
    bs:writeInt8(0)
    bs:writeInt8(0)
    bs:sendPacketEx(1, 7, 1)
    bs:reset()
end
function onReceivePacket(id, bs)
    if id == 220 then
        bs:ignoreBits(8)
        if (bs:readInt8(bs) == 17) then
            bs:ignoreBits(32)
            local text = bs:readString(bs:readInt32(bs))
            if text:find('window%.executeEvent%(\'event%.setActiveView\', \'%["Phone"%]\'%);') then
                newTask(arizonaOpenPhoneApp(26))
            end
        end
    end
end
Lua:
newTask(arizonaOpenPhoneApp(26))
замени на
Lua:
newTask(arizonaOpenPhoneApp, 0, 26)
Вот так пишется правильно:
Lua:
newTask(функция, задержка, параметр1, параметр2, параметр3, ...)
И еще у тебя пишет, что команда не найдена. Чтобы избежать, добавь return false в onRunCommand() вот так:

Lua:
function onRunCommand(cmd)
    if cmd == '!kakawka' then
        newTask(function()
            sendInput('/phone')
            wait(2000)
            arizonaOpenPhoneApp(24)
        end)
        return false
    end
end
Какие еще проблемы? Конкретнее ошибки покажи
 
  • Нравится
Реакции: chromiusj

chromiusj

Известный
Модератор
5,656
3,959
Lua:
newTask(arizonaOpenPhoneApp(26))
замени на
Lua:
newTask(arizonaOpenPhoneApp, 0, 26)
Вот так пишется правильно:
Lua:
newTask(функция, задержка, параметр1, параметр2, параметр3, ...)
И еще у тебя пишет, что команда не найдена. Чтобы избежать, добавь return false в onRunCommand() вот так:

Lua:
function onRunCommand(cmd)
    if cmd == '!kakawka' then
        newTask(function()
            sendInput('/phone')
            wait(2000)
            arizonaOpenPhoneApp(24)
        end)
        return false
    end
end
Какие еще проблемы? Конкретнее ошибки покажи
Ошибок нет,в этом и проблема,функция на сампе работает нормально,а на раксампе ничего нет,в конечном итоге должно вывести диалог "Банковское меню"
 

sasha__1

Известный
27
12
Ошибок нет,в этом и проблема,функция на сампе работает нормально,а на раксампе ничего нет,в конечном итоге должно вывести диалог "Банковское меню"
Исправь то, что я написал, добавь принтов, чтобы быть уверенным, что всё вызывается. Потом напиши мне. Можно в лс.