
13.09.2025, 00:57
|
|
Участник форума
Регистрация: 05.04.2024
Сообщений: 137
С нами:
1111232
Репутация:
33
|
|
Сообщение от skym
читай:
Код:
Окей 👍 Я понял, ты не хочешь, чтобы я сейчас переписывал твой код, а просто чтобы я разобрался в нём и в API RakSAMP.
Что делает твой код
Работа с JSON (CheckerList.json)
Хранит token, chatid и список nicknames.
Есть функции для добавления/удаления ников, форматирования JSON и возврата параметров.
Telegram API
Используется ssl.https через effil.thread (асинхронные запросы).
Реализован sendTG(msg) → отправка сообщения в чат.
get_telegram_updates() → постоянный опрос getUpdates.
processing_telegram_messages() → обработка команд из телеги:
!add ник
!dell ник
!onlist
!offlist
!cmds
RakSAMP события (libs.samp.events)
onPlayerJoin → если ник в списке, пишет в TG «зашёл».
onPlayerQuit → если ник в списке, пишет в TG «вышел».
Основной цикл
При загрузке (onLoad) → получает updateid, запускает опрос TG, шлёт в TG приветствие.
Где пробел
Сейчас бот работает только в одну сторону:
Игра → Telegram (через join/quit + ручные команды).
Telegram → пока только управление списком.
Но в коде нет вызова API RakSAMP для отправки сообщений в игру.
Что есть в API RakSAMP (RakBot / addon)
sampSendChat("текст") → сразу пишет в чат игры.
sampSendCommand("/команда") → отправляет команду.
sendInput("текст") → вводит текст в чат (как будто вручную).
sampAddChatMessage("текст", цвет) → сообщение в клиентский чат (видишь только ты).
onLoad, onUnload → хуки на загрузку/выгрузку.
sampev.onServerMessage → ловить сообщения сервера.
sampev.onSendChat → ловить отправку сообщений.
✅ Вывод:
Твой код уже умеет:
работать с Telegram,
следить за игроками,
хранить список в JSON.
Но он не вызывает sampSendChat или sendInput внутри обработчика TG-команд. Поэтому твои команды из телеги не отображаются в чате игры.
Хочешь, я сделаю тебе карту соответствий: какие функции в RakSAMP API отвечают за ввод/вывод, чтобы ты понимал куда их встраивать?
Вы сказали:
хочу
ChatGPT сказал:
🔥 Отлично, вот тебе карта соответствий API RakSAMP, специально под твой случай.
📌 Ввод сообщений в игру
sampSendChat("текст")
Отправляет текст в чат игры (как будто ты написал и нажал Enter).
Работает для всех (видят игроки + сервер).
sampSendCommand("/команда")
Отправляет команду на сервер (например /stats).
Отличие: не просто сообщение, а именно команду.
sendInput("текст")
Вводит текст в чат от лица игрока, но иногда работает криво (зависит от сборки).
По сути аналогично sampSendChat, но идёт через эмуляцию клавиатуры.
📌 Вывод сообщений (только для клиента)
sampAddChatMessage("текст", цвет)
Сообщение видно только тебе (например [TG] сообщение пришло).
Используется для отладки и отображения статуса.
print("текст")
Выводит сообщение в консоль RakSAMP, но не в игровой чат.
📌 Хуки (чтобы ловить события)
sampev.onServerMessage(color, text)
Ловит все серверные сообщения.
Можно фильтровать по text.
sampev.onSendChat(text)
Срабатывает, когда ты сам отправляешь сообщение.
sampev.onShowDialog(...)
Ловит открытие диалога (например при регистрации/авторизации).
📌 Практика (как встроить в твой код)
В обработчике телеграм-команд (processing_telegram_messages) нужно:
elseif text:find('^!cand%s+(.+)$') then
local msg = text:match('^!cand%s+(.+)$')
sampSendChat(msg) -- отправляем в игровой чат
sendTG("✅ Сообщение отправлено в игру: " .. msg)
end
⚡ Таким образом:
из TG → ловишь команду !cand ТЕКСТ → sampSendChat("ТЕКСТ").
в игре → видят все игроки.
в TG → получаешь подтверждение.
Хочешь, я отмечу прямо в твоём коде, куда воткнуть этот кусок, чтобы оно работало?
вот так
ну блять я не хочу париться сидеть, я хочу простой код чтобы из тг бот пересылал сообщения в чат игры
какие библеотеки надо установить чтобы нормально работал раксамп с апи?
библиотеки(samp.events, cjson, effil, ffi, bit, socket, inicfg, encoding, ssl.https). где найти эти библеотеки? просто надо для скрипта
[01:46:33] [LUA] Loading scripts...
[01:46:33] [LUA] C:\Users\Арсений\Desktop\scripts\Tolik.lua: 10: module 'cjson' not found:
no field package.preload['cjson']
no file 'C:\Users\Арсений\Desktop\scripts\libs\cjso n.lua'
no file 'C:\Users\Арсений\Desktop\scripts\libs\cjso n\init.lua'
no file 'C:\Users\Арсений\Desktop\scripts\cjson.lua '
no file 'C:\Users\Арсений\Desktop\scripts\cjson\ini t.lua'
no file 'C:\Users\Арсений\Desktop\scripts\libs\cjso n.dll'
https://www.blast.hk/threads/234784/ варнинги кидает
Боже, тут написано же прямым текстом, ты раз с нейронкой работаешь так закинь ей, а так у тебя библиотек просто нет, проще скрипт закажи у исполнителей
|
|
|