Скажите плиз как можно сделать что бы бот зажимал W на несколько секунд?
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
pressKey(65408, 2000)
Смотря для какой цели. Если для разработки, то можно просто перезапускать RakSamp. Да, ошибка присутствует. Краша пока что не избежать, насколько мне известно. Если ты пишешь бота и хочешь быстро очистить все переменные во время реконнект и/или дисконнекта, то сохраняй все данные в таблицу, а потом пересоздай эту таблицу.при вызове runCommand('!reloadlua') - крашит раксамп
есть рабочее решение?
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
Сначало, как зашёл, написало что loaded, как reqspawn*улся - начало каждую секунду флудить этим, что делать?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*улся - начало каждую секунду флудить этим, что делать? Посмотреть вложение 210816
!reqspawn прописываешь когда зашелкак зайти на этот сервак 185.189.15.89:7228
как ответили выше,смотря от ситуации,если у тебя крашит скрипт со временем,нужно смотреть и исправлять,в противном случае как-то на костылях поддерживать состояние скриптатак , чуваки
как перезагружать то скрипт?
я целый день роюсь по всему инету
runCommand('!reloadlua') просто крашит
Закинуть его в папку scriptsКак запустить скрипт ?
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 - [ARZ] AutoTax для ADD VIP | Авто-оплата налогов при входе в игру
Функционал: При входе в игру / спавне персонажа автоматически оплачивает налоги через телефон Использование: /pincode [код] - установить ПИН-код для входа в банк /hourly - Ежечасовая оплата налогов Демонстрация: Зависимости: SAMP.lua Установка: Закинуть файл "AutoTax.lua" в папку...www.blast.hk
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
newTask(arizonaOpenPhoneApp(26))
newTask(arizonaOpenPhoneApp, 0, 26)
newTask(функция, задержка, параметр1, параметр2, параметр3, ...)
function onRunCommand(cmd)
if cmd == '!kakawka' then
newTask(function()
sendInput('/phone')
wait(2000)
arizonaOpenPhoneApp(24)
end)
return false
end
end
Ошибок нет,в этом и проблема,функция на сампе работает нормально,а на раксампе ничего нет,в конечном итоге должно вывести диалог "Банковское меню"замени наLua:newTask(arizonaOpenPhoneApp(26))
Вот так пишется правильно:Lua:newTask(arizonaOpenPhoneApp, 0, 26)
И еще у тебя пишет, что команда не найдена. Чтобы избежать, добавь return false в onRunCommand() вот так:Lua:newTask(функция, задержка, параметр1, параметр2, параметр3, ...)
Какие еще проблемы? Конкретнее ошибки покажиLua:function onRunCommand(cmd) if cmd == '!kakawka' then newTask(function() sendInput('/phone') wait(2000) arizonaOpenPhoneApp(24) end) return false end end
Исправь то, что я написал, добавь принтов, чтобы быть уверенным, что всё вызывается. Потом напиши мне. Можно в лс.Ошибок нет,в этом и проблема,функция на сампе работает нормально,а на раксампе ничего нет,в конечном итоге должно вывести диалог "Банковское меню"