Pr[E]fix
Code
- Сообщения
- 171
- Реакции
- 29
где его найти?установить расширение из этого топика.
Сообщения автоматически склеены:
???где его найти?
Последнее редактирование:
где его найти?установить расширение из этого топика.
???где его найти?
Исправлена утечка памяти при выполнении запроса без получения данных ответа.
- Улучшена производительность (спасибо Gunslinger)
- Добавлена возможность "итерироваться" (проходить) по всем ключам в JSON объекте
- Добавлена возможность загружать (загружать с удалённого сервера) и выгружать (загружать на удалённый сервер) файлы.
Недавно поставил себе телеграм бота, он попросил это расширение, но пишет Telegram_Core.smx ([Telegram] Core (LiteServers LLP)): Required extension "REST in Pawn" file("rip.ext") not running, переустанавливал и т.д, не работаетKruzya обновил(а) ресурс REST in Pawn новой записью:
Обновление до 1.2.0
Узнать больше об этом обновлении...
Что непонятного в этих словах?not running
sm exts list
, но скорее всего:Соурсмод 10, библиотек всмысле не хватает, все поставил куда надо при sm exts list пишет: [11] <FAILED> file "rip.ext.dll": �� ������ ��������� ������.Что непонятного в этих словах?
Расширение - не запустилось. Почему? Ну, мы хз, Вам нужно смотреть вsm exts list
, но скорее всего:
- Или Сурсмод старый (нужен 1.10; если невыполнимо - возьмите версию ниже 1.1.0 с вкладки "Обновления")
- Или в системе библиотек не хватает для работы
))) CSS OB linuxЕщё бы игру узнать с ОС, и можно жить.
- Добавлена поддержка int64 (спасибо @gunslinger23)
- Исправлена ошибка, когда деструкторы HTTP контекста не вызывались
- Добавлены 64-разрядные сборки и macOS
- Добавлены флаги декода JSON
- Добавлена возможность ограничивать исходящую и входящую скорость при работе с ресурсами (спасибо @Kxnrl)
- Установлен стандартный User-Agent для клиентов RiP (
sm-ripext/ВЕРСИЯ
)- Обновлено перечисление HTTPStatus
- Обновлена документация
JSON->string->JSON
.void getResponse(HTTPResponse response, any value, const char[] error) {
if(response.Status != HTTPStatus_OK || error[0]) {
LogError("getResponse(%d:%d): %s", value, response.Status, error);
return;
}
if(!response.Data) {
LogMessage("getResponse(): data is null");
return;
}
// Представление в строке
char szJson[2048];
response.Data.ToString(szJson, sizeof(szJson));
LogMessage(szJson);
// Возвращаем из строки наш объект
g_objJSON = JSONObject.FromString(szJson);
// Снова приводим к строке
view_as<JSON>(g_objJSON).ToString(szJson, sizeof(szJson));
LogMessage("L: %s", szJson);
}
// Ловим кринж
[sometest.smx]
{"somekey": 2, "somekey2": 4}
[sometest.smx]
L: {"somekey": 2.0, "somekey2": 4.0}
#include <sourcemod>
#include <ripext>
public void OnPluginStart()
{
RegAdminCmd("sm_maps", CmdMapList, ADMFLAG_ROOT, "");
}
public Action CmdMapList(int client, int args)
{
HTTPClient httpClient = new HTTPClient("https://www.myarena.ru/api.php");
JSONObject todo = new JSONObject();
todo.SetString("query", "getmaps");
todo.SetString("token", "3b5cda7f1b917108a4631f615cdc58d3");
httpClient.Post("todos", todo, OnTodoCreated);
delete todo;
return Plugin_Handled;
}
public void OnTodoCreated(HTTPResponse response, any value)
{
if (response.Status != HTTPStatus_Created) {
PrintToServer("Failed to create todo");
return;
}
if (response.Data == null) {
PrintToServer("Invalid JSON response");
return;
}
JSONObject todo = view_as<JSONObject>(response.Data);
char sStatus[32];
char sMsg[64];
todo.GetString("status", sStatus, sizeof(sStatus));
todo.GetString("maps", sMsg, sizeof(sMsg));
PrintToServer("Created todo with status: %s, msg: %s", sStatus, sMsg);
}
#include <sourcemod>
#include <ripext>
public void OnPluginStart()
{
RegAdminCmd("sm_maps", CmdMapList, ADMFLAG_ROOT, "");
}
public Action CmdMapList(int client, int args)
{
HTTPClient httpClient = new HTTPClient("https://www.myarena.ru");
JSONObject todo = new JSONObject();
todo.SetString("query", "getmaps");
todo.SetString("token", "3b5cda7f1b917108a4631f615cdc58d3");
httpClient.Post("api.php", todo, OnTodoCreated);
delete todo;
return Plugin_Handled;
}
public void OnTodoCreated(HTTPResponse response, any value)
{
if (response.Status != HTTPStatus_Created) {
PrintToServer("Failed to create todo");
return;
}
if (response.Data == null) {
PrintToServer("Invalid JSON response");
return;
}
JSONObject todo = view_as<JSONObject>(response.Data);
char sStatus[32];
char sMsg[64];
todo.GetString("status", sStatus, sizeof(sStatus));
todo.GetString("maps", sMsg, sizeof(sMsg));
PrintToServer("Created todo with status: %s, msg: %s", sStatus, sMsg);
}
***** OUT OF MEMORY! attempted allocation size: xxx ****
[AC:Adv] OnAuthReceived: Failed to retrieve. (0)
Exception reported: Invalid JSON in line -1, column -1: wrong arguments
Call stack trace:
[0] HTTPResponse.Data.get
[1] Линия, C:\Users\...\MyPlugin.sp::OnAuthReceived //(каллбэк)
[AC:Adv] OnAuthReceived: Failed to retrieve. (0)
***** OUT OF MEMORY! attempted allocation size: xxx ****