Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

[RELEASE] Call admin Discord v1/v2

Въведение в PAWN скриптинга и поддръжка за същия.
Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

[RELEASE] Call admin Discord v1/v2

Мнение от pok4 » 21 Ное 2023, 10:47

Здравейте,

Снощи нямаше какво да правя и направих проста версия на calladmin работеща с Discord (праща известия в дискорд сървъра ви). Работи с CURL и URL WEB HOOK (който се генерира от дискорд сървър настройките ви за 1 мин)

Целта на плъгина е да е прост, за да видите как дискорд съобщението се праща до сървъра. Логиката може да се изолира в stock и да логвате и друга информация. Пример: Някой влиза в сървъра и излиза и пращате пак съобщение до дискорд сървър руум-а ви.
Уеб куката се генерира лесно и представлява дълъг линк. Може да избирате за коя стая да работи и какво да е нейното име.

Пляс:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <curl>
new g_cvar_webhook

new Handle:curl;
new Handle:header;
public plugin_init()
{
	 
	g_cvar_webhook = register_cvar("discord_webhook", "https://discord.com/api/webhooks/1165281615640023074/a3pwGrQP0uvWu5j27WF7sghuH8HwrFnKI-p2KmuT7POvqQ1C8yvraYl1nc_RtfKwgfAw");
	register_clcmd("say /calladmin", "Cmd_CallAdmin")
	register_clcmd("say_team /calladmin", "Cmd_CallAdmin")
	register_clcmd("calladmin_reason", "Cmd_EnterReason")
	header = curl_create_slist();
	curl_slist_append(header, "Content-Type: application/json"); 
}


public Cmd_EnterReason(id)
{
 
	new szArgs[128], szName[32], szTime[32]
	read_args(szArgs, charsmax(szArgs))
	get_user_name(id, szName, charsmax(szName))
	get_time("%X", szTime, charsmax(szTime))
	replace_all(szArgs,127,"^"","")
 
	new pass[256];
 
	static szURL[256];
	get_pcvar_string(g_cvar_webhook, szURL, charsmax(szURL));

	formatex(pass, charsmax(pass), "{^"content^":^"REASON: %s, FROM: %s ON: %s^"}", szArgs, szName,szTime);

	curl = curl_init();
	curl_setopt_string(curl, CURLOPT_URL, szURL);
	curl_setopt_handle(curl, CURLOPT_HTTPHEADER, header);
	curl_setopt_cell(curl, CURLOPT_POST, 1);
	curl_setopt_string(curl, CURLOPT_POSTFIELDS, pass);
	curl_thread_exec(curl, "OnExecComplete");

 
	return PLUGIN_HANDLED
}

public Cmd_CallAdmin(id)
{
	client_cmd(id, "messagemode calladmin_reason")
		
	return PLUGIN_HANDLED
}
 

public OnExecComplete(Handle:curl, CURLcode:code, const response[], any:eventType)
{
    curl_close(curl);
    //curl_destroy_slist(header);
}
Свали модулите и библиотеката

CVAR: discord_webhook
На този cvar задавате webhook url-то

Без модула curl и без тази библиотека не може да компилирате!
Няма как да работи без тях!

Също така мога да предложа и втора версия на плъгина, която работи с https://github.com/Next21Team/AmxxEasyHttp
Как работи тя ? Тя пък работи обратно, от сървъра пращате рекуест към php файл с php $_POST опции (просто докосва файла).
Може да си създадете няколко файла server1.php server2.php и т.н. и вътре да вкарате curl заявките.

И 2-та варианта изискват модули и библиотеки! Не съм ги тествал обстойно!
Също така, не се пробвайте да логвате целия чат на играчите и да го прехвърляте в дискорд, защото това може да доведе до overload, keep it simple!

Demo:
Изображение
Последно промяна от pok4 на 21 Ное 2023, 14:59, променено общо 2 пъти.

Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

Re: [RELEASE] Call admin Discord v1

Мнение от pok4 » 21 Ное 2023, 10:54

Ако се чудите какво е уеб кука (webhook) и как се генерира - https://www.youtube.com/watch?v=fKksxz2Gdnc

Аватар
Hurricane
Извън линия
Потребител
Потребител
Мнения: 192
Регистриран на: 04 Юни 2022, 21:18
Се отблагодари: 17 пъти
Получена благодарност: 71 пъти

Re: [RELEASE] Call admin Discord v1

Мнение от Hurricane » 21 Ное 2023, 13:55

new pass[256]; static szURL[256];
Форматирането на съобщенията на клиента до колкото помня беше 194 символа. А ти си задал лимит 256 на стринга, ако лимита и надхварлен няма ли да хвърли грешка в сървъра и да крашне.
Просто питам де, иначе идеята е добра и то доста.

Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

Re: [RELEASE] Call admin Discord v1

Мнение от pok4 » 21 Ное 2023, 13:56

О.. Може, аз съм newbie :) Може да не са форматирани както трябва.. Просто сложих някакво число. Всъщност сглобката не е направена from scratch от мен, а съм взаимствал код от други места (от тук и от github)
Оправяйте се, просто представям логиката...
Който иска и другата версия - ще я дам :)

Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

Re: [RELEASE] Call admin Discord v2

Мнение от pok4 » 21 Ное 2023, 14:30

Ок, току що я сглобих, ето и v2:

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <easy_http>
new g_cvar_webhook

 
public plugin_init()
{
	 
	g_cvar_webhook = register_cvar("discord_webhook", "https://argoscms.pw/demo/discord.php");
	register_clcmd("say /calladmin", "Cmd_CallAdmin")
	register_clcmd("say_team /calladmin", "Cmd_CallAdmin")
	register_clcmd("calladmin_reason", "Cmd_EnterReason")
	 
}


public Cmd_EnterReason(id)
{
 
	new szArgs[128], szName[32], szTime[32]
	read_args(szArgs, charsmax(szArgs))
	get_user_name(id, szName, charsmax(szName))
	get_time("%X", szTime, charsmax(szTime))
	replace_all(szArgs,127,"^"","")
 
	new pass[256];
 
	static szURL[256];
	get_pcvar_string(g_cvar_webhook, szURL, charsmax(szURL));

	formatex(pass, charsmax(pass), "{^"content^":^"REASON: %s, FROM: %s ON: %s^"}", szArgs, szName,szTime);

	new EzHttpOptions:options_id = ezhttp_create_options()
	ezhttp_option_set_header(options_id, "Content-Type", "text/plain")
	ezhttp_option_set_body(options_id, "Hello!")
	ezhttp_option_set_cookie(options_id, "MESSAGE_FOR_DISCORD", pass);

	ezhttp_post(szURL, "http_complete", options_id)
 
	return PLUGIN_HANDLED
}

public Cmd_CallAdmin(id)
{
	client_cmd(id, "messagemode calladmin_reason")
		
	return PLUGIN_HANDLED
}
 

public http_complete(EzHttpRequest:request_id)
{
    if (ezhttp_get_error_code(request_id) != EZH_OK)
    {
        new error[64]
        ezhttp_get_error_message(request_id, error, charsmax(error))
        server_print("Response error: %s", error);
        return
    }

    new data[512]
    ezhttp_get_data(request_id, data, charsmax(data))
    server_print("Response data: %s", data)
}

На мястото на "https://argoscms.pw/demo/discord.php (тоест cvar-a discord_webhook) слагате url към php файла, който ще е отговорен за конкретна стая и изпращането на съобщението.
Съдържанието му е:

Код за потвърждение: Избери целия код

<?php
	
if(!empty($_COOKIE['MESSAGE_FOR_DISCORD'])) {
	$webhookurl = "https://discord.com/api/webhooks/1165281615640023074/a3pwGrQP0uvWu5j27WF7sghuH8HwrFnKI-p2KmuT7POvqQ1C8yvraYl1nc_RtfKwgfAw";

	$ch = curl_init( $webhookurl );
	curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
	curl_setopt( $ch, CURLOPT_POST, 1);
	curl_setopt( $ch, CURLOPT_POSTFIELDS, $_COOKIE['MESSAGE_FOR_DISCORD']);
	 
	$response = curl_exec( $ch );

	echo $_COOKIE['MESSAGE_FOR_DISCORD'];
}
Качвате си го на хоста, където си държите сайта и оправяте пътя към него в cvar-a.
Може да имате server1.php, server2.php, server3.php.. и т.н. Като в php файла на мястото на моя webhook ($webhookurl) си слагате webhook url-то към вашата стая от вашия сървър! Може да си направите няколко стаи за конкретните ви сървъри :)
Това е!

Съвета на @Hurricane е на място и си оправете формата на променливите, за да няма краш.
Това е от мен!

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Re: [RELEASE] Call admin Discord v1/v2

Мнение от YankoNL » 20 Яну 2024, 23:18

С този EasyHTTP може ли директно да се пусне към дискор webhook? В момента ползвам cURL, но от Next21 ми казват да ползвам EasyHTTP и все още не са ми казали как :mad:

Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

Re: [RELEASE] Call admin Discord v1/v2

Мнение от pok4 » 20 Яну 2024, 23:26

До колкото аз съм запознат с библиотеката - не може, вече ако те добавят/надградят може и да стане.
Ако е ставало, аз щях да дам вариант и с нея с curl заявки.

Много внимателно подбирайте модулите, защото могат да причинят крашове. Компилираните (готовите) версии могат пък да са пълни със задни вратички.
Най-добре е да сте под линукс и да си ги компилирате сами след като ги свалите от github. Да са съобразени с версията на линукса от който държите гейм сървърите ви и неговите библиотеки...

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Re: [RELEASE] Call admin Discord v1/v2

Мнение от HeatoN » 20 Яну 2024, 23:53

Защо си го направил със Google Disc не мога да изтегля нищо иска ми достъп и така който няма ще трябва да чака поне 24 часа за да може да изтегли нужните файлове
Прикачени файлове
Екранна снимка 2024-01-20 235220.png
Екранна снимка 2024-01-20 235220.png (64.58 KiB) Преглеждано 678 пъти
Екранна снимка 2024-01-20 235220.png
Екранна снимка 2024-01-20 235220.png (64.58 KiB) Преглеждано 678 пъти
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Re: [RELEASE] Call admin Discord v1/v2

Мнение от HeatoN » 21 Яну 2024, 05:48

Някой който има достъп може ли да ги изтегли и прикачи тук ?
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
pok4
Извън линия
Потребител
Потребител
Мнения: 160
Регистриран на: 05 Фев 2022, 14:38
Се отблагодари: 2 пъти
Получена благодарност: 74 пъти

Re: [RELEASE] Call admin Discord v1/v2

Мнение от pok4 » 21 Яну 2024, 08:40

https://file.io/b6DoW5NyKlFh
За първата версия не ти трябва сайт. Отговорих ти лс от тук...

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Скриптиране”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта