#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
bool MAX_PLAYERS[MAXPLAYERS + 1] = false;
public void OnPluginStart()
{
RegConsoleCmd("sm_1", sm_revival);
HookEvent("round_start", Event_RoundEnd);
HookEvent("round_end", Event_RoundEnd);
}
public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i)) MAX_PLAYERS[i] = false;
}
}
public Action sm_revival(int client, int args)
{
if((client > 0) && GetClientTeam(client) == 2)
{
if(!MAX_PLAYERS[client])
{
int userflags = GetUserFlagBits(client);
SetUserFlagBits(client, ADMFLAG_ROOT);
int iflags=GetCommandFlags("give");
SetCommandFlags("give", iflags & ~FCVAR_CHEAT);
FakeClientCommand(client,"give health");
SetCommandFlags("give", iflags);
SetUserFlagBits(client, userflags);
PrintToChat(client, "Вы иcцелиле себя.");
MAX_PLAYERS[client] = true;
}
else
{
PrintToChat(client, "Лимит исчерпан исцеления.");
}
}
return Plugin_Handled;
}
Всем привет, интересует как юзать bool [MAXPLAYERS + 1] чтоб например максимум 4 игрока могли воспользоваться командой.
PHP:#pragma semicolon 1 #include <sourcemod> #pragma newdecls required bool MAX_PLAYERS[MAXPLAYERS + 1] = false; public void OnPluginStart() { RegConsoleCmd("sm_1", sm_revival); HookEvent("round_start", Event_RoundEnd); HookEvent("round_end", Event_RoundEnd); } public void Event_RoundEnd(Event event, const char[] name, bool dontBroadcast) { for(int i = 1; i <= MaxClients; i++) { if(IsClientInGame(i)) MAX_PLAYERS[i] = false; } } public Action sm_revival(int client, int args) { if((client > 0) && GetClientTeam(client) == 2) { if(!MAX_PLAYERS[client]) { int userflags = GetUserFlagBits(client); SetUserFlagBits(client, ADMFLAG_ROOT); int iflags=GetCommandFlags("give"); SetCommandFlags("give", iflags & ~FCVAR_CHEAT); FakeClientCommand(client,"give health"); SetCommandFlags("give", iflags); SetUserFlagBits(client, userflags); PrintToChat(client, "Вы иcцелиле себя."); MAX_PLAYERS[client] = true; } else { PrintToChat(client, "Лимит исчерпан исцеления."); } } return Plugin_Handled; }
int count = 0
for(int i = 0;i<=MAXPLAYERS;i++)
{
if(MAX_PLAYERS[i])
count++
if(count == 4)
return
}
teleport.sp(29) : error 017: undefined symbol "TimerTeleport"PHP:#include <sdktools_functions> #define TIMER 3.0 // Время через которое телепортирует игрока #define LIMIT 3 // Лимит использования телепорта float g_fPos[MAXPLAYERS +1][3]; Handle g_hTimer[MAXPLAYERS +1]; int g_iLimit[MAXPLAYERS +1]; public void OnPluginStart() { HookEvent("player_spawn", PlayerSpawn); RegConsoleCmd("sm_teleport", TeleportCmd); } public void PlayerSpawn(Event event, const char[] name, bool dbc) { int iClient = GetClientOfUserId(event.GetInt("userid")); g_iLimit[iClient] = LIMIT; GetClientAbsOrigin(iClient, g_fPos[iClient]); } public Action TeleportCmd(int iClient, int iArgs) { if(iClient && IsPlayerAlive(iClient) && g_iLimit[iClient] > 0) { if(g_hTimer[iClient] == null) g_hTimer[iClient] = CreateTimer(TIMER, TimerTeleport, GetClientUserId(iClient)); } return Plugin_Handled; } public Action TimerTeleport(Handle hTimer, any iUserId) { int iClient = GetClientOfUserId(iUserId); if(IsClientInGame(iClient) && IsPlayerAlive(iClient)) { TeleportEntity(iClient, g_fPos[iClient], NULL_VECTOR, NULL_VECTOR); g_iLimit[iClient]--; } g_hTimer[iClient] = null; return Plugin_Stop; } public void OnClientDisconnect(int iClient) { if(g_hTimer[iClient] != null) { KillTimer(g_hTimer[iClient]); g_hTimer[iClient] = null; } }
undefined symbol "TimerTeleport"
//// 123.sp
//
// Code size: 4024 bytes
// Data size: 3844 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 24252 bytes
//
// Compilation Time: 0,64 sec
// ----------------------------------------
#include <sdktools_functions>
#define TIMER 3.0 // Время через которое телепортирует игрока
#define LIMIT 3 // Лимит использования телепорта
float g_fPos[MAXPLAYERS +1][3];
Handle g_hTimer[MAXPLAYERS +1];
int g_iLimit[MAXPLAYERS +1];
public void OnPluginStart()
{
HookEvent("player_spawn", PlayerSpawn);
RegConsoleCmd("sm_teleport", TeleportCmd);
}
public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
int client = GetClientOfUserId(event.GetInt("userid"));
g_iLimit[client] = LIMIT;
GetClientAbsOrigin(client, g_fPos[client]);
}
public Action TeleportCmd(int client, int args)
{
if(client && IsPlayerAlive(client) && g_iLimit[client] > 0 && g_hTimer[client] == null)
g_hTimer[client] = CreateTimer(TIMER, TimerTeleport, GetClientUserId(client));
return Plugin_Handled;
}
public Action TimerTeleport(Handle hTimer, any iUserId)
{
int client = GetClientOfUserId(iUserId);
if(client && IsPlayerAlive(client))
{
TeleportEntity(client, g_fPos[client], NULL_VECTOR, NULL_VECTOR);
g_iLimit[client]--;
}
g_hTimer[client] = null;
return Plugin_Stop;
}
public void OnClientDisconnect(int client)
{
if(g_hTimer[client] != null)
{
KillTimer(g_hTimer[client]);
g_hTimer[client] = null;
}
}
//// 123_fix.sp
//
// Code size: 4008 bytes
// Data size: 3844 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 24236 bytes
//
// Compilation Time: 0,19 sec
// ----------------------------------------
конечно можноОффтопПодскажите, как получить время конца голосования в плагине mapchooser.smx и перенести это полученное время в плагин rockthevote.smx? Это реально вообще?
Переделываю плагин rockthevote.smx под себя. Всё задуманное осуществил, только это осталось.конечно можно
тебе зачем
когда спрашивают обычные люди надо отвечать первостепенную причину а не ряд конечныхПеределываю плагин rockthevote.smx под себя. Всё задуманное осуществил, только это осталось.
Чо? Какая вообще разница зачем мне это? Я просто спросил как это осуществить.когда спрашивают обычные люди надо отвечать первостепенную причину а не ряд конечных
если тебя спросили почему ты в магазине а ты ответишь "потому что я пришел в магазин" это не корректный ответ
затем что наверняка можно обойтись без include и прочегоЧо? Какая вообще разница зачем мне это? Я просто спросил как это осуществить.
Понял.затем что наверняка можно обойтись без include и прочего
@niko7d, Конечно есть =) В батнике сервера в строку запуска влупите -debug -condebug
Нужно было вырезать весь текст лишний с плагина, да и кстати проверил не работает, нас было много за 1 команду в противоположной последний игрок сообщения нет(( что очень печально, зато спамит от текстовика перевода, типо отключить звук итд, хотелось бы от этого избавиться!@FBI, Так ?
Каждые 5 секунд будет проверятся переменная.Приветик всем. Может кто сделать постоянную проверку по переменным? Сейчас работает проверка только когда зайдешь в меню плагина (!banv) и тогда выбрасывает игроков с сервера.