Тема: RakSAMP Lite
Показать сообщение отдельно

  #4  
Старый 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/ варнинги кидает
Боже, тут написано же прямым текстом, ты раз с нейронкой работаешь так закинь ей, а так у тебя библиотек просто нет, проще скрипт закажи у исполнителей
 
Ответить с цитированием