Не запускается скрипт на .lua

Xaкep

Участник
Автор темы
39
3
Версия SA-MP
  1. 0.3.7-R3
Здравствуйте, помогите кто шарит, пожалуйста. Написал скрипт на .lua для сампа, его задача был простая - рандомно раз в 1-2 минуты случайно отправлять в чат или какое-нибудь сообщение наподобии "кхм", или писать команду например /invent или /phone. При запуске скрипт частично работает, он выводит в чат информацию что успешно загружен, но активация по команде его не запускает, и дальше никаких признаков работы нет.
 

Вложения

  • AutoActions_v0.2.lua
    2.3 KB · Просмотры: 1

woodware

Потрачен
Проверенный
5,047
1,462
Lua:
local sampev = require 'samp.events'
local vkeys = require 'vkeys'

local autoActionsEnabled = false
local randomMessages = {
    "кхм", "ндааа", "как же задолбался", "похавать бы щас а не всё это",
    "косячок бы", "ну и работка", "жарко сегодня", "солнце садится",
    "капец мотор у этой машины гудит", "я уж подумал в дом свинья забралась"
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage("{00FF00}[Successfully]{FFFFFF} AutoActions v0.2 загружен успешно.", 0xFFFFFF)
    sampRegisterChatCommand("autoactions", function()
        autoActionsEnabled = not autoActionsEnabled
        sampAddChatMessage((autoActionsEnabled and "{00FF00}[on]{FFFFFF} Автоматические действия включены." or "{FF0000}[off]{FFFFFF} Автоматические действия выключены."), 0xFFFFFFFF)
    end)
    while true do
        wait(0)
        if autoActionsEnabled then
            wait(math.random(25000, 82000))
            performRandomAction()
        end
    end
end

function performRandomAction()
    local actionType = math.random(1, 5)
    if actionType == 1 then
        sampSendChat("smoke")
    elseif actionType == 2 then
        sampSendChat("beer")
    elseif actionType == 3 then
        sampSendChat("invent")
        wait(2000)
        pressKey(vkeys.VK_ESCAPE)
    elseif actionType == 4 then
        sampSendChat("phone")
        wait(2000)
        pressKey(vkeys.VK_ESCAPE)
    elseif actionType == 5 then
        local randomMessage = randomMessages[math.random(1, #randomMessages)]
        sampSendChat(randomMessage)
    end
end

function pressKey(key)
    lua_thread.create(function()
        setVirtualKeyDown(key, true)
        wait(100)
        setVirtualKeyDown(key, false)
    end)
end
 

Xaкep

Участник
Автор темы
39
3
Lua:
local sampev = require 'samp.events'
local vkeys = require 'vkeys'

local autoActionsEnabled = false
local randomMessages = {
    "кхм", "ндааа", "как же задолбался", "похавать бы щас а не всё это",
    "косячок бы", "ну и работка", "жарко сегодня", "солнце садится",
    "капец мотор у этой машины гудит", "я уж подумал в дом свинья забралась"
}

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(0) end
    sampAddChatMessage("{00FF00}[Successfully]{FFFFFF} AutoActions v0.2 загружен успешно.", 0xFFFFFF)
    sampRegisterChatCommand("autoactions", function()
        autoActionsEnabled = not autoActionsEnabled
        sampAddChatMessage((autoActionsEnabled and "{00FF00}[on]{FFFFFF} Автоматические действия включены." or "{FF0000}[off]{FFFFFF} Автоматические действия выключены."), 0xFFFFFFFF)
    end)
    while true do
        wait(0)
        if autoActionsEnabled then
            wait(math.random(25000, 82000))
            performRandomAction()
        end
    end
end

function performRandomAction()
    local actionType = math.random(1, 5)
    if actionType == 1 then
        sampSendChat("smoke")
    elseif actionType == 2 then
        sampSendChat("beer")
    elseif actionType == 3 then
        sampSendChat("invent")
        wait(2000)
        pressKey(vkeys.VK_ESCAPE)
    elseif actionType == 4 then
        sampSendChat("phone")
        wait(2000)
        pressKey(vkeys.VK_ESCAPE)
    elseif actionType == 5 then
        local randomMessage = randomMessages[math.random(1, #randomMessages)]
        sampSendChat(randomMessage)
    end
end

function pressKey(key)
    lua_thread.create(function()
        setVirtualKeyDown(key, true)
        wait(100)
        setVirtualKeyDown(key, false)
    end)
end
Капец, спасибо брат, реально работает. Расскажешь пожалуйста, в чём именно заключалась моя ошибка, из-за чего всё не работало?
 

woodware

Потрачен
Проверенный
5,047
1,462
Капец, спасибо брат, реально работает. Расскажешь пожалуйста, в чём именно заключалась моя ошибка, из-за чего всё не работало?
скрипт ввод команды не видел, из мелочей только функцию нажатия клавиш сменил с key_down(key) на setVirtualKeyDown(key, true)
 

Xaкep

Участник
Автор темы
39
3
скрипт ввод команды не видел, из мелочей только функцию нажатия клавиш сменил с key_down(key) на setVirtualKeyDown(key, true)
Брат, а можешь ещё подсказать, почему все русские слова в скрипте в игре пишутся неправильно, например вот так: AutoActions v0.2 загружен успешно. Как это исправить?
 
  • Клоун
Реакции: влад динозавр

kyrtion

Известный
1,060
381
Брат, а можешь ещё подсказать, почему все русские слова в скрипте в игре пишутся неправильно, например вот так: AutoActions v0.2 загружен успешно. Как это исправить?
Это кодировка.
В игре - ANSI (точнее Windows 1251), в скрипте UTF-8. Поиграйся и поймешь как работает
 

georgewxx

Новичок
7
0
Парни. Есть вот такой вот скрипт на выход в афк на RAKSAMP. Кто может добавить выход с афк через определённое время?(900 секунд например) Чтобы вышел с афк и потом опять зашёл. Помогите
local sampev = require("samp.events")
require("addon")

function sampev.onSendSpawn()

function sampev.onSendPlayerSync(data)
return false
end
end

@AlexanderRedfield ты соображаешь же, помоги, вроде ничё сложного
 

Xaкep

Участник
Автор темы
39
3
Парни. Есть вот такой вот скрипт на выход в афк на RAKSAMP. Кто может добавить выход с афк через определённое время?(900 секунд например) Чтобы вышел с афк и потом опять зашёл. Помогите
local sampev = require("samp.events")
require("addon")

function sampev.onSendSpawn()

function sampev.onSendPlayerSync(data)
return false
end
end

@AlexanderRedfield ты соображаешь же, помоги, вроде ничё сложного
Какое соображаю, ти што :)
Я вообще в этом не разбираюсь, я же не просто так здесь просил помощи в таком банальном вопросе.
 

kyrtion

Известный
1,060
381
@georgewxx
Кто может добавить выход с афк через определённое время?(900 секунд например) Чтобы вышел с афк и потом опять зашёл
то есть ты хочешь сказать, чтобы бот отсоединил, подождал 900 секунд и присоединился?
 

kyrtion

Известный
1,060
381
нет. на сервере система афк 1/10 мне нужно чтоб аккаунт подключился, встал в афк и ровно через 900 секунд вышел с афк и обратно зашёл
так примерно
Lua:
-- сразу скажу, что я писал без теста

local statusAfk = false
local pauseAfk = false
local reloadAfk = 900 -- sec
local waitReloadAfk = 5 -- sec
local timer = os.clock()

local function switchToAfk()
    statusAfk = true
    pauseAfk = false
    timer = os.clock()

    print('Started thread AFK!')
   
    while true do
        wait(500)
        local sec = os.clock() - timer
        if not isBotSpawned() or not isBotConnected() then
            print('Bot is not spawned/connected! Deleting AFK...')
            break
        elseif (sec > reloadAfk) and not pauseAfk then
            pauseAfk = true
            print('Pausing %d sec...':format(waitReloadAfk))
            timer = os.clock()
        elseif pauseAfk and (sec > waitReloadAfk) then
            print('Go sleep, please...')
            timer = os.clock()
            pauseAfk = false
        end
    end
    statusAfk = false
    pauseAfk = false
end

-- local task = newTask(switchToAfk) -- run task

function sampev.onSendPlayerSync()
    if statusAfk and not pauseAfk then return false end
end