Команда сайта в сети
Платное меню

Статистика онлайн


Сейчас онлайн на сайте: 5
Недавние пользователи посетившие сайт:

Leg1on

xEno

halom

Последние комментарии
Автор → Hollywood
в новости → Плагин Map Decals для сервера
Автор → marafon
в новости → Модуль [CR] Menu для сервера
Автор → devidens23
в новости → Отзывы о сайте
Автор → Izert
в новости → Отзывы о сайте
Популярные публикации
Онлайн чат сайта. (тут можно задать любой вопрос который вас интересует, в плане игр CS:GO, CSS, CS 1.6)
@ Hareshprem : Сегодня в 01:02 I'm join
@ grebaniy_zadrot : Вчера в 14:27 хей всем
@ аываыаываыв : Вчера в 14:11 admin menu
@ jojoman : 23 октября 2020 11:31 Купил сборку шопа топовую
@ jojoman : 23 октября 2020 11:31 Не пацаны, ну сайт топовый
@ Данила : 21 октября 2020 21:36 Time Vip
@ Данила : 21 октября 2020 15:09 wcs
@ VladLopaz : 21 октября 2020 10:53 paint
@ Ginek22 : 19 октября 2020 20:12 Я написал
@ Ginek22 : 19 октября 2020 19:55 6y6yJIuk, в лс
@ 6y6yJIuk : 19 октября 2020 19:27 сколько випка стоит ?
@ Ginek22 : 18 октября 2020 16:06 Ссылку не исправляли еще, там комент написан что исправим позже.
@ atomic : 18 октября 2020 13:03 ЭЭЭЙ Кто-то отвечать будет, не? Как скачать плагин Musik Kit???
@ atomic : 17 октября 2020 23:16 Народ, как тут хоть что-то скачать?
@ Ginek22 : 16 октября 2020 16:32 _sieh, Смотрите на сайте, где то должен быть)))
@ shelby01 : 15 октября 2020 17:07 vip weapon
@ _sieh : 15 октября 2020 13:19 Добрый день, молодые. Плагин для кв нужен
@ greed : 11 октября 2020 21:30 vip admin
@ Ginek22 : 10 октября 2020 21:31 Восстановлена копия сайта за 5 октября. Кто рег после этой даты проходите заново рег.
@ gigusha123 : 3 октября 2020 18:53 kak vkluchit eta plugin
@ kirill909nazarov : 3 октября 2020 00:38 жень добавь сборку маньяка
@ Ginek22 : 29 сентября 2020 21:52 Gamer90, Забанят гы гы гы :_D
@ Gamer90 : 29 сентября 2020 21:33 Левых команд там нету надеюсь чтоб меня не забанили
@ Gamer90 : 29 сентября 2020 21:32 Конфиг на улучшение стрельбы у вас на сайте без аим?
@ Ginek22 : 29 сентября 2020 12:57 В профиле кнопка Редактировать
@ alexjN : 29 сентября 2020 04:52 Ребзя, где пароль можно сменить ? Я просто не вижу этого пункта :с
@ Artem12 : 25 сентября 2020 02:11 не могу кинуть 1 плагин помогите пж
@ Coto01 : 24 сентября 2020 17:48 Ретейк
@ Ginek22 : 21 сентября 2020 22:27 bleaving, позже перезальем)
@ Deluks : 21 сентября 2020 22:09 подскажите что за плагин на ЗЕ серверах запускает шар у питомцев? команда pet_aura.
@ bleaving : 21 сентября 2020 22:03 Перезалейте плагин [SHOP] MONEY DISTRIBUTOR с фиксом от Kill пожалуйста
@ N08I40K : 20 сентября 2020 14:16 Oleg76rus купить?)
@ Oleg76rus : 20 сентября 2020 12:37 Как раздобыть? ПЛАГИН NEXAC ДЛЯ СЕРВЕРА КСС В34???
@ kosta112gorbunov : 19 сентября 2020 20:43 adminSounds
@ N08I40K : 19 сентября 2020 19:05 добавь на сайт плз
@ N08I40K : 19 сентября 2020 19:04 Ginek22, нашёл https://forums.alliedmods.net/showthread.php?t=125550
@ Ginek22 : 19 сентября 2020 12:56 N08I40K, Незнаю смотри может есть.
@ N08I40K : 19 сентября 2020 12:53 Есть какой нибудь другой Deathrun плагин для css кроме того что за 2-02-2019???
@ maliv : 19 сентября 2020 09:45 парни, куда отправить патчи питомцев ? vip pets плагин если что
@ Artem12 : 18 сентября 2020 18:46 не могу кинуть 1 плагин помогите пж
Внимание! Для того что бы оставлять сообщения в чате, вам нужно зарегистрироваться или войти в свою учетную запись!
Расширение REST in Pawn для сервера
Автор: Ginek22 от 20-01-2020, 22:16
Расширение REST in Pawn для сервера


Ещё одно расширение для работы с HTTP, но заточенное под работу с JSON REST API. Оно поддерживает HTTPS и gzip, и представляет функционал в виде методмапов (methodmaps) для работы с JSON объектами и массивами.

Примеры:

1.JSON
Создание JSON-объекта
PHP:
JSONObject someObject = new JSONObject();

someObject.SetBool("someBool", false);
someObject.SetFloat("someFloat", 1.0);
someObject.SetInt("someInt", 2);
someObject.SetString("someString", "three");
someObject.SetNull("someNull");

Убедитесь перед освобождением памяти от самого JSON-объекта, что Вы освободили память от всех вложенных JSON-объектов и массивов.

Создание JSON-массива
PHP:
JSONArray someArray = new JSONArray();

someArray.PushBool(false);
someArray.PushFloat(1.0);
someArray.PushInt(2);
someArray.PushString("three");
someArray.PushNull();

Вы так же можете использовать Set*() методы, если Вам надо установить для конкретных индексов значения.

Вложение массива в JSON-объекте
PHP:
someObject.Set("someArray", someArray);

JSONArray otherArray = view_as<JSONArray>(someObject.Get("someArray"));

Get() создаёт новый Handle, так что не забудьте закрыть его, когда закончите работать с ним.

Экспорт, импорт из файлов или строк
PHP:
// Экспорт
char json[256];
someObject.ToString(json, sizeof(json));

// Импорт
char path[PLATFORM_MAX_PATH + 1];
BuildPath(Path_SM, path, sizeof(path), "data/array.json");

JSONArray fileArray = JSONArray.FromFile(path);

Если Вы хотите отформатировать итоговый JSON, см. флаги экспорта в самом верху инклюды json.inc

2. HTTP


Установка заголовка запроса
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    httpClient.SetHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
}

Получение предмета
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    httpClient.Get("todos/1", OnTodoReceived);
}

public void OnTodoReceived(HTTPResponse response, any value)
{
    if (response.Status != HTTPStatus_OK) {
        // Failed to retrieve todo
        return;
    }
    if (response.Data == null) {
        // Invalid JSON response
        return;
    }

    // Indicate that the response is a JSON object
    JSONObject todo = view_as<JSONObject>(response.Data);

    char todoTitle[256];
    todo.GetString("title", todoTitle, sizeof(todoTitle));

    PrintToServer("Retrieved todo with title '%s'", todoTitle);
}

Получение коллекции предметов (массива)
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    httpClient.Get("todos", OnTodosReceived);
}

public void OnTodosReceived(HTTPResponse response, any value)
{
    if (response.Status != HTTPStatus_OK) {
        // Failed to retrieve todos
        return;
    }
    if (response.Data == null) {
        // Invalid JSON response
        return;
    }

    // Indicate that the response is a JSON array
    JSONArray todos = view_as<JSONArray>(response.Data);
    int numTodos = todos.Length;

    JSONObject todo;
    char todoTitle[256];

    for (int i = 0; i < numTodos; i++) {
        todo = view_as<JSONObject>(todos.Get(i));

        todo.GetString("title", todoTitle, sizeof(todoTitle));

        PrintToServer("Retrieved todo with title '%s'", todoTitle);

        // Get() creates a new handle, so delete it when we are done with it
        delete todo;
    }
}

Создание предмета
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    JSONObject todo = new JSONObject();
    todo.SetBool("completed", false);
    todo.SetInt("userId", 1);
    todo.SetString("title", "foo");

    httpClient.Post("todos", todo, OnTodoCreated);

    // JSON objects and arrays must be deleted when you are done with them
    delete todo;
}

public void OnTodoCreated(HTTPResponse response, any value)
{
    if (response.Status != HTTPStatus_Created) {
        // Failed to create todo
        return;
    }
    if (response.Data == null) {
        // Invalid JSON response
        return;
    }

    JSONObject todo = view_as<JSONObject>(response.Data);
    int todoId = todo.GetInt("id");

    PrintToServer("Created todo with ID %d", todoId);
}

Обновление предмета
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    JSONObject todo = new JSONObject();
    todo.SetBool("completed", true);

    // Some APIs replace the entire object when using PUT,
    // in which case you need to use PATCH instead.
    httpClient.Put("todos/1", todo, OnTodoUpdated);

    delete todo;
}

public void OnTodoUpdated(HTTPResponse response, any value)
{
    if (response.Status != HTTPStatus_OK) {
        // Failed to update todo
        return;
    }
    if (response.Data == null) {
        // Invalid JSON response
        return;
    }

    JSONObject todo = view_as<JSONObject>(response.Data);
    int todoId = todo.GetInt("id");

    PrintToServer("Updated todo with ID %d", todoId);
}


Удаление предмета
PHP:
#include <sourcemod>
#include <ripext>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    httpClient.Delete("todos/1", OnTodoDeleted, 1);
}

public void OnTodoDeleted(HTTPResponse response, any value)
{
    if (response.Status != HTTPStatus_OK) {
        // Failed to delete todo



3. Расширение методмапов

Так же, Вы можете написать свой методмап, наследуясь от JSONObject. Это сделает Ваш код чище при чтении и установке значений в JSON.

plugin.inc
PHP:
methodmap Todo < JSONObject
{
    // Constructor
    public Todo() { return view_as<Todo>(new JSONObject()); }

    public void GetTitle(char[] buffer, int maxlength)
    {
        this.GetString("title", buffer, maxlength);
    }
    public void SetTitle(const char[] value)
    {
        this.SetString("title", value);
    }

    property bool Completed {
        public get() { return this.GetBool("completed"); }
        public set(bool value) { this.SetBool("completed", value); }
    }
    property int Id {
        public get() { return this.GetInt("id"); }
    }
    property int UserId {
        public get() { return this.GetInt("userId"); }
        public set(int value) { this.SetInt("userId", value); }
    }
};

plugin.sp
PHP:
#include <sourcemod>
#include <ripext>
#include <plugin>

HTTPClient httpClient;

public void OnPluginStart()
{
    httpClient = new HTTPClient("https://jsonplaceholder.typicode.com");

    Todo todo = new Todo();
    todo.Completed = false;
    todo.UserId = 1;
    todo.SetTitle("foo");

    httpClient.Post("todos", todo, OnTodoCreated);

    delete todo;
}





Требования
SourceMod 1.8 или выше

Установка
Скачать архив с расширением.
Распаковать архив.
Загрузить распакованные файлы на сервер, соблюдая структуру.

Нет доступа к файлу
CS:GO


Чтобы скачать файл пройдите пожалуйста регистрацию, или войдите под своим логином!
CSS
CSGO

0



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Скачать Расширение REST in Pawn для сервера

Скачать Расширение REST in Pawn для сервера бесплатно


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данному ресурсу.


Яндекс.Метрика
© 2020 Csgolife.ru
Мобильная версия