Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Смена типов переменных
ЙОДА Дата: Суббота, 09.06.2012, 23:11:43 | Сообщение # 1
Сообщений: 41
Репутация: 0 [ +/- ]
Сразу говорю, вопросец немного странный, но мне очень интересный. В полной мере не знаком с c++, а в особенности с spurce pawn, но интересует одна вещь: можно ли посредством плагинов, менять тип серверных переменных. К примеру, я хочу, чтобы пинг из ent-овой переменной m_iping перешла в в другой тип, например булевский, то есть вместо цифр изображалось True или False.

Что-то мне подсказывает, что конкретно в этом случае, эти манипуляции возможны. Ярчайшим примером являются боты, у которых дефолтный пинг = BOT. Полностью перебрал плагин bot_ping, и в основном разобрался, как можно насильно изменять отображаемый пинг, но несовпадение типов не дает мне поэкспериментировать с данным параметром.

Очень надеюсь на помощь :)

Добавлено (09.06.2012, 23:11:43)
---------------------------------------------
Если возможно, на примере, как заставить выдавать в строке ping что-то кроме цифр ^__^

 
_wS_ Дата: Суббота, 09.06.2012, 23:59:22 | Сообщение # 2
Изменить тип переменной в SM, думаю, нельзя. Просто заблокируй команду и выведи свою инфу:

Code
#include <sourcemod>

public OnPluginStart()
{
     AddCommandListener(callback, "ping");
}

new Float:my_ping[MAXPLAYERS+1];

public Action:callback(client, const String:command[], argc)
{
     for (new i = 1; i <= MaxClients; i++)
     {
         if (IsClientConnected(i))
         {
             if (IsFakeClient(i)) my_ping[i] = 0.1;
             else my_ping[i] = GetClientAvgLatency(i, NetFlow_Outgoing) * 1024.0;
         }
         else my_ping[i] = 0.0;
     }
     for (new i = 1; i <= MaxClients; i++)
     {
         if (my_ping[i] > 0.1) ShowPing(i);
     }  
     return Plugin_Handled;
}

ShowPing(client)
{
     PrintToConsole(client, "PING:");
     new Float:p;
     for (new i = 1; i <= MaxClients; i++)
     {
         if ((p = my_ping[i]) > 0.0)
         {
             if (p == 0.1) PrintToConsole(client, "%N: BOT", i);
             else PrintToConsole(client, "%N: %1.f", i, p);
         }
     }
}
 
ЙОДА Дата: Воскресенье, 10.06.2012, 23:36:52 | Сообщение # 3
Сообщений: 41
Репутация: 0 [ +/- ]
Нет, смысл был в другом) Изменить не ответ сервера в консоли, а отображаемое содержимое графы ping при зажатом TAB.

Code
#include <sourcemod>
#include <sdktools>

new g_iMaxClients  = 0;
new String:g_szPlayerManager[50] = "";
new g_iPlayerManager    = -1;
new g_iPing  = -1;
new n = 0; // Пинг, который статично будет отображаться в меню TAB

public OnPluginStart()
{  
  g_iPing    = FindSendPropOffs("CPlayerResource", "m_iPing");
  strcopy(g_szPlayerManager, sizeof(g_szPlayerManager), "cs_player_manager");

public OnMapStart()
{
  g_iMaxClients  = GetMaxClients();
  g_iPlayerManager    = FindEntityByClassname(g_iMaxClients + 1, g_szPlayerManager);
}

public OnGameFrame()
{   
  if (g_iPlayerManager == -1 || g_iPing == -1) return;

  for (new i = 1; i <= g_iMaxClients; i++)
  {
   if (IsValidEdict(i) && IsClientInGame(i)) SetEntData(g_iPlayerManager, g_iPing+(i*4), n);
  }
}


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

Добавлено (10.06.2012, 01:37:05)
---------------------------------------------
P.S. Код не мой. Просто обрезал плагин bot_ping

Добавлено (10.06.2012, 23:36:52)
---------------------------------------------
Вэсэшечка, ответь пожалуйста :)

 
Scarface_slv Дата: Понедельник, 11.06.2012, 13:14:47 | Сообщение # 4
Сообщений: 737
Репутация: 61 [ +/- ]
и не понятно что ты хочешь=)
 
ЙОДА Дата: Понедельник, 11.06.2012, 15:18:38 | Сообщение # 5
Сообщений: 41
Репутация: 0 [ +/- ]
Чтобы при зажатом таб, вместо пинга было написано BOT или что-то другое. Интересно, как организовать. Вэсэшэчка, не харахорься, ответь)
 
Scarface_slv Дата: Вторник, 12.06.2012, 00:54:37 | Сообщение # 6
Сообщений: 737
Репутация: 61 [ +/- ]
Нельзя так наверно, пинг изменить получилось а вот вставить BOT нет, иза строки "String" ошибка не компилируется, но идея классная =)
 
ЙОДА Дата: Вторник, 12.06.2012, 07:20:33 | Сообщение # 7
Сообщений: 41
Репутация: 0 [ +/- ]
Я думаю, это можно сделать и не очень сложно. Просто вэсэшечка не хочет помогать ^___^
 
Scarface_slv Дата: Вторник, 12.06.2012, 21:38:59 | Сообщение # 8
Сообщений: 737
Репутация: 61 [ +/- ]
Незя так а если можно то сложно=)
 
ЙОДА Дата: Четверг, 14.06.2012, 17:55:00 | Сообщение # 9
Сообщений: 41
Репутация: 0 [ +/- ]
Вэсэшечка, научи :)
 
  • Страница 1 из 1
  • 1
Поиск: