API CS 1.6

Сообщения
8
Реакции
1
Написал информер для кс 1.6, но пришла идея реализовать захват скилов с фасткапа с помощью API пример: http://fastcup.net/api.html?plain=1&getUser=1 .Как все это можно реализовать в PAWN SCRIPTING. Алгоритм плагин берет данные xp: например 13141313 и выводит в информер
Код:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN        "TESTTEST"
#define VERSION        "2.0"
#define AUTHOR        "NekitZor"

#pragma semicolon    1

#define HUD_INTERVAL    1.0
#define HUD_TASK        74358293

new g_CreateHud;
new g_MaxPlayers;

new InfoOn;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    set_task(HUD_INTERVAL, "AdminsOnline", HUD_TASK, "", 0, "b", 0);
    
    InfoOn = register_cvar("m_informer", "1");
    
    g_CreateHud = CreateHudSyncObj();
    g_MaxPlayers = get_maxplayers();
}

public AdminsOnline()
{
    if (get_pcvar_num(InfoOn))
    {
        new szMessage[512], szCurrentDate[32], szCurrentTime[32], szMapName[34], iLen = 0;
        get_time("%d/%m/%Y", szCurrentDate, charsmax(szCurrentDate));
        get_time("%H:%M:%S", szCurrentTime, charsmax(szCurrentTime));
        get_mapname(szMapName, charsmax(szMapName));
        iLen += formatex(szMessage[iLen], charsmax(szMessage) - iLen, "Дата: %s^n", szCurrentDate );
        set_hudmessage(255, 99, 71, 0.01, 0.18, 2, 0.0, HUD_INTERVAL + 0.1, 0.1, 0.0, -1);
        ShowSyncHudMsg(0, g_CreateHud, szMessage);
    }   
}

stock get_admins()
{
    new AdminsCount;
    AdminsCount = 0;
    for (new a = 1; a <= g_MaxPlayers; a++)
    {
        if (!is_user_connected(a) || !is_user_admin(a))
            continue;
            
        AdminsCount++;
    }
    return AdminsCount;
}

stock get_playersall()
{
    new PlCount;
    PlCount = 0;
    for (new p = 1; p <= g_MaxPlayers; p++)
    {
        if (!is_user_connected(p))
            continue;
            
        PlCount++;
    }
    return PlCount;
}
9 Фев 2018
Как работать с api в кс 1.6?Мне нужно захватить данные xp: и вывести в информер
9 Фев 2018
Пример кода но тут берутся значение banned fastcup,а мне нужно захватить данные xp, а точнее его значение
Код:
#include <amxmodx>
#include <sockets>
 
#define SITE            "/?act=api&plain=1&getUser="
#define HOST               "fastcup.net"
 
#define PLUGIN "New fastban"
#define VERSION "1.0"
#define AUTHOR "smoke(BLR)"
 
new g_Socket;
 
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
 
public client_putinserver(id){
   new iError, szSendBuffer[512], steam[35]
   get_user_authid(id, steam, 34)
 
   if(is_user_steam(id)){
 
      g_Socket = socket_open(HOST, 80, SOCKET_TCP, iError)
 
      switch (iError)
         {
         case 1:
         {
            log_to_file("addons/amxmodx/logs/fastban.log","Невозможно создать сокет.")
            return ;
         }
         case 2:
         {
            log_to_file("addons/amxmodx/logs/fastban.log","Невозможно подключиться к хосту.")
            return ;
         }
         case 3:
         {
            log_to_file("addons/amxmodx/logs/fastban.log","Невозможно подключиться к HTTP порту.")
            return ;
         }
      }
          
      format(szSendBuffer, charsmax(szSendBuffer), "GET %s%s HTTP/1.1^nHost:%s^r^n^r^n", SITE, steam, HOST)
      socket_send(g_Socket, szSendBuffer, charsmax(szSendBuffer))
          
      set_task(5.0, "socketAnswer",id, .flags = "b")
   }   
}
 
public socketAnswer(id){
   new szData[1024], steams[35], name[32]
   get_user_authid(id, steams, 34)
   get_user_name(id, name, 31)
 
   if (socket_change(g_Socket)) {
   socket_recv(g_Socket, szData, charsmax(szData) )
          
   new Position = containi(szData, "banned_by_myac: true")
   new Position2 = containi(szData, "banned_by_cheat_topic: true")
              
   if (Position >= 0){
      log_to_file("addons/amxmodx/logs/fastban.log","Игрок:%s | стим:%s забанен маяком",name, steams) 
     server_cmd("amx_ban 0 %d MyAC Banned", steams)
   }
          
   if (Position2 >= 0){
      log_to_file("addons/amxmodx/logs/fastban.log","Игрок:%s | стим:%s забанен по топику",name, steams)
     server_cmd("amx_ban 0 %d Banned by topic", steams)
   }     
                
   socket_close(g_Socket);
                
   remove_task( 0 );
   }
}
 
stock bool:is_user_steam(id){
// Author Sh0oter
   static dp_pointer
   if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
   {
      server_cmd("dp_clientinfo %d", id)
      server_exec()
      return (get_pcvar_num(dp_pointer) == 2) ? true : false
   }
   return false
}
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
Sonyx, взять модуль из 183 и скопировать на сервер, там же не должно быть привязки к самому амхх.
 
Сообщения
8
Реакции
1
сможешь помочь,я не очень шарю пожалуйста..
 
Сообщения
584
Реакции
1,006
Помог
18 раз(а)
topcheq, я понятия не имею как работать с сокетами и json.
 
Сообщения
8
Реакции
1
Mistrick, а тот что код я выше скинул?проверка идет есть значение true или false, а захватит xp nikak nelzya?
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Mistrick, а тот что код я выше скинул?проверка идет есть значение true или false, а захватит xp nikak nelzya?
вы через сокет получаете строку, грубо говоря. Вам нужно ее как то распарсить. Есть 2 варианта - использовать готовый модуль (но он появился недавно в АМХ 183), либо сделать парсер самостоятельно.
 
Сообщения
8
Реакции
1
вы через сокет получаете строку, грубо говоря. Вам нужно ее как то распарсить. Есть 2 варианта - использовать готовый модуль (но он появился недавно в АМХ 183), либо сделать парсер самостоятельно.
сможешь пожалуйста набросать код?очень прошу...
9 Фев 2018
вы через сокет получаете строку, грубо говоря. Вам нужно ее как то распарсить. Есть 2 варианта - использовать готовый модуль (но он появился недавно в АМХ 183), либо сделать парсер самостоятельно.
я что-то не очень понял...
 
Сообщения
8
Реакции
1
Я получаю данные с сайта с помощью сокетов
":"1000","stat_place":"233725"},{"stat_rating":"1000","stat_killed":"0","stat_kills":"0","stat_games":"0","stat_wins":"0","stat_leaves":"0","stat_place":"0"},{"stat_rating":"917","stat_killed":"28","stat_kills":"11","stat_games":"6","stat_wins":"2","stat
Как потом мне раскодировать єту инфу и получить значение stat_rating?​
 
Сообщения
66
Реакции
34
Помог
3 раз(а)
Регуляркой ("stat_rating":"\d{0,9}") сначала выцепить "stat_rating":"1000". Потом из "stat_rating":"1000" выцепить 1000 регуляркой ("\d{0,9}").
 
Сообщения
66
Реакции
34
Помог
3 раз(а)
Sonyx, тонкости я еще только познаю =)
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
topcheq,
Объединил темы, не занимайтесь дублированием, в след раз буду наказывать
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу