AMX MOD X
Четверг, 26.12.2024, 15:09:28



Приветствую Вас Гость | RSS
[ Главная ] [ Ложный пинг - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: AlMod, slogic  
Ложный пинг
TerДата: Пятница, 07.08.2009, 12:13:51 | Сообщение # 1
Майор
Группа: Пользователи
Сообщений: 83
Репутация: 0
Статус: Не в сети
Возможно, сделать Plugin чтобы всем выдавался ложный пинг.
Колебался он, к примеру, 2-9.
 
defaultNick8433Дата: Пятница, 07.08.2009, 14:32:44 | Сообщение # 2
Генерал-полковник
Группа: Скриптеры
Сообщений: 806
Репутация: 19
Статус: Не в сети
http://forums.alliedmods.net/showthread.php?t=86241

Раскручиваю сайты,ставлю трекера на хостинг.Всё бесплатно.Если заинтересовало,то моя аська 400538001
 
Syava-gДата: Пятница, 07.08.2009, 16:12:51 | Сообщение # 3
Полковник
Группа: Пользователи
Сообщений: 199
Репутация: 0
Статус: Не в сети
пинг выдается, который нужен, но как сделать, чтобы он КОЛЕБАЛСЯ!? Тоесть был динамическим B)

d31ay

Сообщение отредактировал Syava-g - Пятница, 07.08.2009, 17:43:09
 
TerДата: Пятница, 07.08.2009, 17:55:42 | Сообщение # 4
Майор
Группа: Пользователи
Сообщений: 83
Репутация: 0
Статус: Не в сети
Quote (Syava-g)
пинг выдается, который нужен, но как сделать, чтобы он КОЛЕБАЛСЯ!? Тоесть был динамическим

да можно так?

Code
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

new const FAKEPINGS_FILE[] = "fakepings.ini"
const TASK_ARGUMENTS = 100

new cvar_enable, cvar_ping, cvar_flux, cvar_target, cvar_flags, cvar_bots, cvar_multiplier
new g_enable, g_ping, g_flux, g_target, g_flags, g_bots, Float:g_multiplier, g_maxplayers
new g_connected[33], g_isbot[33], g_offset[33][2], g_argping[33][3], g_hasflags[33]
new g_loaded_counter, cvar_showactivity, g_pingoverride[33] = { -1, ... }
new Array:g_loaded_authid, Array:g_loaded_ping

public plugin_init()
{
   register_plugin("Ping Faker", "1.4", "MeRcyLeZZ")
     
   cvar_enable = register_cvar("pingfake_enable", "1")
   cvar_ping = register_cvar("pingfake_ping", "1337")
   cvar_flux = register_cvar("pingfake_flux", "0")
   cvar_target = register_cvar("pingfake_target", "1")
   cvar_flags = register_cvar("pingfake_flags", "")
   cvar_bots = register_cvar("pingfake_bots", "0")
   cvar_multiplier = register_cvar("pingfake_multiplier", "0.0")
   cvar_showactivity = get_cvar_pointer("amx_show_activity")
     
   g_maxplayers = get_maxplayers()
     
   register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
   register_forward(FM_UpdateClientData, "fw_UpdateClientData")
     
   register_concmd("amx_fakeping", "cmd_fakeping", ADMIN_KICK, "<target> <ping> - Toggle fake ping override on player (-1 to disable)")
     
   g_loaded_authid = ArrayCreate(32, 1)
   g_loaded_ping = ArrayCreate(1, 1)
     
   load_pings_from_file()
}

public plugin_cfg()
{
   // Cache CVARs after configs are loaded
   set_task(0.5, "event_round_start")
}

public event_round_start()
{
   // Cache CVAR values
   g_ping = get_pcvar_num(cvar_ping)
   g_flux = abs(get_pcvar_num(cvar_flux))
   g_target = get_pcvar_num(cvar_target)
   g_enable = get_pcvar_num(cvar_enable)
   g_bots = get_pcvar_num(cvar_bots)
   g_multiplier = get_pcvar_float(cvar_multiplier)
     
   // Calculate weird argument values based on target ping
   calculate_arguments()
     
   // Calculate them regularly if also faking ping fluctuations or if faking a multiple of the real ping
   remove_task(TASK_ARGUMENTS)
   if (g_flux || g_multiplier > 0.0) set_task(2.0, "calculate_arguments", TASK_ARGUMENTS, _, _, "b")
     
   // Cache flags
   new flags[6]
   get_pcvar_string(cvar_flags, flags, sizeof flags - 1)
   g_flags = read_flags(flags)
     
   // Check flags again for all players
   for (new id = 1; id <= g_maxplayers; id++)
    if (g_connected[id]) check_flags(id)
}

public client_authorized(id)
{
   check_for_loaded_pings(id)
   check_flags(id)
}

public client_infochanged(id)
{
   check_flags(id)
}

public client_putinserver(id)
{
   g_connected[id] = true
   if (is_user_bot(id)) g_isbot[id] = true
}

public client_disconnect(id)
{
   g_connected[id] = false
   g_isbot[id] = false
   g_pingoverride[id] = -1
   g_hasflags[id] = 0
}

public fw_UpdateClientData(id)
{
   // Ping faking disabled?
   if (!g_enable) return;
     
   // Scoreboard key being pressed?
   if (!(pev(id, pev_button) & IN_SCORE) && !(pev(id, pev_oldbuttons) & IN_SCORE))
    return;
     
   // Send fake player's pings
   static player, sending
   sending = 0
   for (player = 1; player <= g_maxplayers; player++)
   {
    // Player not in game?
    if (!g_connected[player])
      continue;
      
    // Fake latency for its target too?
    if (!g_target && id == player)
     continue;
      
    // Only do these checks if not overriding ping for player
    if (g_pingoverride[player] < 0)
    {
     // Is this a bot?
     if (g_isbot[player])
     {
      // Bots setting disabled?
      if (!g_bots) continue;
     }
     else
     {
      // Bots only setting?
      if (g_bots == 2) continue;
        
      // Need to have specific flags?
      if (g_flags && !(g_hasflags[player]))
       continue;
     }
    }
      
    // Send message with the weird arguments
    switch (sending)
    {
     case 0:
     {
      // Start a new message
      message_begin(MSG_ONE_UNRELIABLE, SVC_PINGS, _, id)
      write_byte((g_offset[player][0] * 64) + (1 + 2 * (player - 1)))
      write_short(g_argping[player][0])
      sending++
     }
     case 1:
     {
      // Append additional data
      write_byte((g_offset[player][1] * 128) + (2 + 4 * (player - 1)))
      write_short(g_argping[player][1])
      sending++
     }
     case 2:
     {
      // Append additional data and end message
      write_byte((4 + 8 * (player - 1)))
      write_short(g_argping[player][2])
      write_byte(0)
      message_end()
      sending = 0
     }
    }
   }
     
   // End message if not yet sent
   if (sending)
   {
    write_byte(0)
    message_end()
   }
}

public cmd_fakeping(id, level, cid)
{
   // Check for access flag
   if (!cmd_access(id, level, cid, 3))
    return PLUGIN_HANDLED;
     
   // Retrieve arguments
   static arg[32], player, ping
   read_argv(1, arg, sizeof arg - 1)
   player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
   read_argv(2, arg, sizeof arg - 1)
   ping = str_to_num(arg)
     
   // Invalid target
   if (!player) return PLUGIN_HANDLED;
     
   // Update ping overrides for player
   g_pingoverride[player] = min(ping, 4095)
   calculate_arguments()
     
   // Get player's name for displaying/logging activity
   static name1[32], name2[32]
   get_user_name(id, name1, sizeof name1 - 1)
   get_user_name(player, name2, sizeof name2 - 1)
     
   // Negative value means disable fakeping
   if (ping < 0)
   {
    // Show activity?
    switch (get_pcvar_num(cvar_showactivity))
    {
     case 1: client_print(0, print_chat, "ADMIN - fake ping override disabled on %s", name2)
     case 2: client_print(0, print_chat, "ADMIN %s - fake ping override disabled on %s", name1, name2)
    }
      
    // Log activity
    static logdata[100], authid[32], ip[16]
    get_user_authid(id, authid, sizeof authid - 1)
    get_user_ip(id, ip, sizeof ip - 1, 1)
    formatex(logdata, sizeof logdata - 1, "ADMIN %s <%s><%s> - fake ping override disabled on %s", name1, authid, ip, name2)
    log_amx(logdata)
   }
   else
   {
    // Show activity?
    switch (get_pcvar_num(cvar_showactivity))
    {
     case 1: client_print(0, print_chat, "ADMIN - fake ping override of %d enabled on %s", ping, name2)
     case 2: client_print(0, print_chat, "ADMIN %s - fake ping override of %d enabled on %s", name1, ping, name2)
    }
      
    // Log activity
    static logdata[100], authid[32], ip[16]
    get_user_authid(id, authid, sizeof authid - 1)
    get_user_ip(id, ip, sizeof ip - 1, 1)
    formatex(logdata, sizeof logdata - 1, "ADMIN %s <%s><%s> - fake ping override of %d enabled on %s", name1, authid, ip, ping, name2)
    log_amx(logdata)
   }
     
   return PLUGIN_HANDLED;
}

public calculate_arguments()
{
   static player, ping, loss
   for (player = 1; player <= g_maxplayers; player++)
   {
    // Calculate target ping (clamp if out of bounds)
    if (g_pingoverride[player] < 0)
    {
     if (g_multiplier > 0.0)
     {
      get_user_ping(player, ping, loss)
      ping = clamp(floatround(ping * g_multiplier), 0, 4095)
     }
     else
      ping = clamp(g_ping + random_num(-g_flux, g_flux), 0, 4095)
    }
    else
     ping = g_pingoverride[player]
      
    // First argument's ping
    for (g_offset[player][0] = 0; g_offset[player][0] < 4; g_offset[player][0]++)
    {
     if ((ping - g_offset[player][0]) % 4 == 0)
     {
      g_argping[player][0] = (ping - g_offset[player][0]) / 4
      break;
     }
    }
    // Second argument's ping
    for (g_offset[player][1] = 0; g_offset[player][1] < 2; g_offset[player][1]++)
    {
     if ((ping - g_offset[player][1]) % 2 == 0)
     {
      g_argping[player][1] = (ping - g_offset[player][1]) / 2
      break;
     }
    }
    // Third argument's ping
    g_argping[player][2] = ping
   }
}

load_pings_from_file()
{
   // Build file path
   new path[64]
   get_configsdir(path, sizeof path - 1)
   format(path, sizeof path - 1, "%s/%s", path, FAKEPINGS_FILE)
     
   // File not present, skip loading
   if (!file_exists(path)) return;
     
   // Open file for reading
   new linedata[40], authid[32], ping[8], file = fopen(path, "rt")
     
   while (file && !feof(file))
   {
    // Read one line at a time
    fgets(file, linedata, sizeof linedata - 1)
      
    // Replace newlines with a null character to prevent headaches
    replace(linedata, sizeof linedata - 1, "^n", "")
      
    // Blank line or comment
    if (!linedata[0] || linedata[0] == ';') continue;
      
    // Get authid and ping
    strbreak(linedata, authid, sizeof authid - 1, ping, sizeof ping -1)
    remove_quotes(ping)
      
    // Store data into global arrays
    ArrayPushString(g_loaded_authid, authid)
    ArrayPushCell(g_loaded_ping, clamp(str_to_num(ping), 0, 4095))
      
    // Increase loaded data counter
    g_loaded_counter++
   }
   if (file) fclose(file)
}

check_for_loaded_pings(id)
{
   // Nothing to check for
   if (g_loaded_counter <= 0) return;
     
   // Get steamid and ip
   static authid[32], ip[16], i, buffer[32]
   get_user_authid(id, authid, sizeof authid - 1)
   get_user_ip(id, ip, sizeof ip - 1, 1)
     
   for (i = 0; i < g_loaded_counter; i++)
   {
    // Retrieve authid
    ArrayGetString(g_loaded_authid, i, buffer, sizeof buffer - 1)
      
    // Compare it with this player's steamid and ip
    if (equali(buffer, authid) || equal(buffer, ip))
    {
     // We've got a match!
     g_pingoverride[id] = ArrayGetCell(g_loaded_ping, i)
     calculate_arguments()
     break;
    }
   }
}

check_flags(id)
{
   g_hasflags[id] = get_user_flags(id) & g_flags
}


Сообщение отредактировал Ter - Пятница, 07.08.2009, 17:58:18
 
Syava-gДата: Суббота, 08.08.2009, 19:03:54 | Сообщение # 5
Полковник
Группа: Пользователи
Сообщений: 199
Репутация: 0
Статус: Не в сети
Я не знаю blink но сам ищу плагин, который не просто поставит статическую цифру вместо пинга... хочется видеть чтобы он колебался P

d31ay
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024