Смена типов переменных
|
|
ЙОДА
|
Дата: Суббота, 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 [ +/- ]
|
|
Вэсэшечка, научи :)
|
|
| |