Lua [OpenSource] Arizona Role Play | Бот "уличное казино"

Joni Scripts

Известный
Автор темы
535
374
Версия SA-MP
  1. 0.3.7 (R1)
  2. 0.3.7-R2
Всем юзерам blast.hk привет!

Для вас решил слить можно сказать мини бота для проекта Arizona Role Play.
Что делает этот скрипт? - этот скрипт уличное казино, в нем вы сможете как заработать так и проиграть, к примеру: вы активируете скрипт и начинаете работать с ним, к вам подходит человек и дает деньги, от минимальной суммы, до максимальной, после этого всего бот пишет /try [ник того кто дал деньги] выиграл - если выпадает удачно - бот выдает сумму умноженную на n-нный процент (его вы так-же указываете в скрипте), если же человек проигрывает - бот оповещает об этом и продолжает работать.

Почему скрипт не является полноценным ботом? - Скрипт не умеет сам себе искать людей которые будут с ним играть, во всем остальном он сможет справится сам

Меню софта:
1588759700772.png


У этого "бота" есть свои минусы как:
1. Запрещен на некоторый серверах Arizona Role Play (лично мне за 3 часа использования дали мут на 1 час)
2. Есть баги (скрипт достаточно сырой и тестировался мало)

Команды бота:

Активация/деактивация: /casino.
Добавить человека в очередь в ручную: /addgame [id] [sum]


При нахождении бага можете писать в ЛС форума или в VK(vk.com/v.nazukin).
Так-же буду благодарен тем кто сделает видео о работе бота (будет добавлено в тему)
05.05.2020 - релиз
06.05.2020 - фикс багов, добавил больше задержек что-бы не писало "Не флудите"
08.05.2020 - пофикшен баг с крашем скрипта
Автор: Joni Scripts
Скрипт был написан мной в 2019 году ~в ноябре, большую часть кода я бы переписал, но нету времени
 

Вложения

  • Уличное казино Arizona RP.lua
    28.8 KB · Просмотры: 115
Последнее редактирование:

lieer

Известный
167
77
Это аризона, не удивительно что за РП /try банят
Тут больше банят за нон рп развод , большинство таких "крупье" собирают деньги и сваливают
P.S: Сам был свидетелем того, как админ забанил чела за попытку нон рп развода, хотя он только крикнул такую фразу всего пару раз, тем самым собрал возле себя толпу зевак
 

frutikys

Известный
23
2
Тема очень классная, судя по описанию. Если бы не банили, постоял бы с этим ботом(
 

El Camino

Новичок
4
0
Написал лично создателю скрипта в ВК, ответил моментально, решили проблему со скриптом, автор лучший.
 

imring

Ride the Lightning
Всефорумный модератор
2,355
2,516
раз уж взял участвие на конкурс, то оценим код:
1.
Lua:
require "lib.moonloader"
-- ...
require "lib.sampfuncs"
требуешь то, чего тебе не надо.

2.
Lua:
local imgui = require 'imgui'
require "lib.sampfuncs"
то пишешь lib, то нет.

3. используешь то ' для строк, то ".
4. MoonImGui, а не mimgui.
5.
Lua:
local randf = math.random(2000, 5000)
зачем?

6.
Lua:
mainIni = inicfg.load({
Settings =
{
    minimal = 1000,
    maximal = 50000,
    proc = 1.7,
    msg_con = true,
    iStyle = 0,
    shoutrules = false
},
Binds =
{
    info_game1 = "Дамы и господа, cпешите проявить свою удачу в азартной игре на деньги!",
    info_game2 = "Суть игры: Я кидаю кости, и если они падает в Вашу сторону, то Ваша ставка удваивается почти в 2 раза!",
    info_game3 = "Чтобы сыграть в игру, необходимо передать мне от "
}
})

local status = inicfg.load(mainIni, 'street-casino.ini')
if not doesFileExist('moonloader/config/street-casino.ini') then inicfg.save(mainIni, 'street-casino.ini') end
так какой ты иник юзаешь, street-casino.ini или Уличное казино Arizona RP.ini?
если путь к файлу не указан, то будет использован рабочая директория\config\имя_файла_скрипта.ini

7.
Lua:
local procent = imgui.ImBuffer(tostring(mainIni.Settings.proc), 4)
-- ...
imgui.InputText(u8'##Procent', procent, imgui.InputTextFlags.CharsDecimal)
-- ...
if tonumber(procent.v) > 2 or tonumber(procent.v) < 1 then
InputFloat для кого?

8.
Lua:
id, sum = string.match(args, "(.*) (.*)")
    if id ~= nil and sum ~= nil then
        local nick = sampGetPlayerNickname(id)
доставать ид с помощью (.*), возможен краш из-за sampGetPlayerNickname.

9.
Lua:
lua_thread.create(imgui_process)
checker()
-- ...
function checker()
    lua_thread.create(function()
        while true do
            wait(0)
            -- ...
        end
    end)
end

function imgui_process()
    while true do
        wait(0)
        imgui.Process = main_window_state.v
    end
end
зачем для imgui_process отдельный поток? и что это за стиль такой?

10.
Lua:
if #players == 0 or #moneys == 0 then
else
что?

11.
Lua:
clr == -1347440641

12.
Lua:
local nick, money = msg:match('(.+) передал%(а%) вам %$(.+)')
и снова достаёшь число не с помощью (%d+)

13.
Lua:
local _, my_info = sampGetPlayerIdByCharHandle(PLAYER_PED)
local nick = sampGetPlayerNickname(my_info)
if msg:find(nick.."%["..tonumber(my_info).."%] подбросив кости выпало число в пользу "..nick_game.." %-{9ACD32} Удачно") then
число превращаешь в число, и поч бы не юзать msg:find(..., 1, true), чтобы без регулярок? кстати если у nick_game будут символы [].+ и т.д., то скрипт упадет.

14.
Lua:
rand = math.random(min, max)
return tonumber(rand)
и вот зачем тут tonumber, думаешь math.random вернет строку?

15.
Lua:
if shoutrules_box.v then
    mainIni.Settings.shoutrules = true
else
    mainIni.Settings.shoutrules = false
end
mainIni.Settings.shoutrules = shoutrules_box.v?

остальное, что связано с imgui (хотя я в 4 и 7 затронул) предоствляю @DonHomka

Скрипт был написан мной в 2019 году ~в ноябре, большую часть кода я бы переписал, но нету времени
переписан очень плохо
мое мнение: это НЕ ЧИТ, это простой биндер. думаю перенести в раздел моды/биндер, а код - хуйня.
 

Joni Scripts

Известный
Автор темы
535
374
зачем для imgui_process отдельный поток? и что это за стиль такой?
Что-бы имгуи окно открывалось всегда, когда используется цикл окно не открывалось, решил пофиксить это так, либо бы мне пришлось создавать поток для всего цикла и в main цикле оставить imgui.Process
переписан очень плохо
В том и суть, что я его не переписывал, он БЫЛ написал в 2019 и был у меня, решил выложить как сурс, для многих новичков это интересно
Что тут не понравилось, я не понимаю, проверяет цвет что-бы тебе просто не написали это в чат
InputFloat для кого?
Для каждого удобно свое, но в целом с этим согласен
3. используешь то ' для строк, то ".
Не знаю почему, использую всегда по разному, не вижу в этом отличия
и вот зачем тут tonumber, думаешь math.random вернет строку?
Было взято с снипетов, не стал ничего трогать
mainIni.Settings.shoutrules = shoutrules_box.v
Тут затупил, не сделал, учту
и снова достаёшь число не с помощью (%d+)
Тогда я не мог терпеть регулярки и не понимал их особый смысл
if #players == 0 or #moneys == 0 then else
Тут он просто проверяет, раньше не знал что есть знак неравенства
так какой ты иник юзаешь, street-casino.ini или Уличное казино Arizona RP.ini?
moonloader/config/street-casino.ini
число превращаешь в число, и поч бы не юзать msg:find(..., 1, true), чтобы без регулярок? кстати если у nick_game будут символы [].+ и т.д., то скрипт упадет.
Самп сам по себе не даст поставить такие символы, как писал выше, раньше я мало что знал в регулярках
Забыл убрать когда изменял, там раньше был быдлокодище и все задержки зависели от этого значения
доставать ид с помощью (.*), возможен краш из-за sampGetPlayerNickname.
Это команда юзера, я не думаю что он будет вводить туда ник, но не учел этого тогда тоже

В целом спасибо за разбор моих ошибок, прислушаюсь
 
Последнее редактирование: