Исправление ошибок

madwayz_1337

Участник
Сообщения
69
Реакции
0
Что я не так сделал? Нужно, чтобы в начале раунда КТшникам выдавались дефуза.
plugin.sp(17) : warning 219: local variable "event" shadows a variable at a preceding level
plugin.sp(17) : error 010: invalid function or declaration
plugin.sp(19) : error 010: invalid function or declaration
plugin.sp(22) : error 010: invalid function or declaration
plugin.sp(21) : warning 203: symbol is never used: "__unknown__"
plugin.sp(21) : warning 203: symbol is never used: "event"
public OnPluginStart()
{
HookEvent("player_spawn", player_spawn);
}

public Action:player_spawn(Handle:event, const String:name[], bool:dontBroadcast);
{
if(GetClientTeam(client) == 2)
{
SetEntProp(GetClientOfUserId(GetEventInt(event, "userid")), Prop_Send, "m_bHasDefuser", 1);
return Plugin_Continue;
}
}
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
PHP:
#pragma semicolon 1

#include <cstrike>

#pragma newdecls required

public void OnMapStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] szName, bool bSilent)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if (iClient != 0 && GetClientTeam(iClient) == CS_TEAM_CT && IsPlayerAlive(iClient))
    {
        GivePlayerItem(iClient, "item_defuse");
    }
}
 

alexmy

Участник
Сообщения
284
Реакции
13
PHP:
#include <sourcemod>
public OnPluginStart()
{
    HookEvent("player_spawn", player_spawn);
}
public Action:player_spawn(Handle:event, String:event_name[], bool:dontBroadcast)
{
    new client  = GetClientOfUserId(GetEventInt(event, "userid"));
    if ( IsClientInGame(client) && GetClientTeam(client) == 2)
    {
        SetEntProp(client, Prop_Send, "m_bHasDefuser", 1);
    }
}
 

madwayz_1337

Участник
Сообщения
69
Реакции
0
PHP:
#include <sourcemod>
public OnPluginStart()
{
    HookEvent("player_spawn", player_spawn);
}
public Action:player_spawn(Handle:event, String:event_name[], bool:dontBroadcast)
{
    new client  = GetClientOfUserId(GetEventInt(event, "userid"));
    if ( IsClientInGame(client) && GetClientTeam(client) == 2)
    {
        SetEntProp(client, Prop_Send, "m_bHasDefuser", 1);
    }
}
А для чего нужно получать userid?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #5
В эвенте передается userid. На основе него в коде надо получить индекс клиентской энтити.

Оффтоп
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
OnMapStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
Надеюсь, плагины точно также не пишешь, как предлагаешь в услугах...
IsClientInGame(client) && GetClientTeam(client) == 2)
Случай, когда все пытаются помочь неглядя)
 

madwayz_1337

Участник
Сообщения
69
Реакции
0
В эвенте передается userid. На основе него в коде надо получить индекс клиентской энтити.

Оффтоп
Оффтоп
--- Добавлено позже ---
Надеюсь, плагины точно также не пишешь, как предлагаешь в услугах...
Случай, когда все пытаются помочь неглядя)
То есть, "CS_TEAM_CT" не работает в CSS/CS:GO, да?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
PHP:
#pragma newdecls required

int g_iOffsetDefuser;

public void OnPluginStart()
{
	if ((g_iOffsetDefuser = FindSendPropInfo("CCSPlayer", "m_bHasDefuser")) < 1) SetFailState("Offset not found!");
	HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] szName, bool bSilent)
{
	int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
	if (GetClientTeam(iClient) == 3) SetEntData(iClient, g_iOffsetDefuser, 1, 4, true);
}
"CS_TEAM_CT" не работает в CSS/CS:GO, да?
Наоборот, он специально предназначен только для них.
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
@AlmazON, нет, не пишу.
P.S. Что-то в последнее время я путаю (когда неглядя пишу код) OnMapSpawn() и OnPluginStart()
 

madwayz_1337

Участник
Сообщения
69
Реакции
0
PHP:
#pragma newdecls required

int g_iOffsetDefuser;

public void OnPluginStart()
{
    if ((g_iOffsetDefuser = FindSendPropInfo("CCSPlayer", "m_bHasDefuser")) < 1) SetFailState("Offset not found!");
    HookEvent("player_spawn", Event_PlayerSpawn);
}

public void Event_PlayerSpawn(Event hEvent, const char[] szName, bool bSilent)
{
    int iClient = GetClientOfUserId(hEvent.GetInt("userid"));
    if (GetClientTeam(iClient) == 3) SetEntData(iClient, g_iOffsetDefuser, 1, 4, true);
}
Наоборот, он специально предназначен только для них.
А не работает твой плагин :D Не выдаёт дефуза.
 

madwayz_1337

Участник
Сообщения
69
Реакции
0
Таймер тогда в 0.1 добавь. Или оффсет не срабатывает, смотри лог ошибок.
Нет ерроров.
Таймер тогда в 0.1 добавь
Попробую. Спасибо.
--- Добавлено позже ---
А тут я где накосячил? Если на сервере нет игроков 5 минут, то карта меняется на de_dust2
PHP:
public OnPluginStart()
{
    CreateTimer(300.0, ChangeMap);
}

public Action:ChangeMap(Handle:timer, any:pack)
{
    int MaxClients = GetMaxClients()
    if(MaxClients == 0)
    {
        ServerCommand("changelevel de_dust2");
    }
}
 
Последнее редактирование:

madwayz_1337

Участник
Сообщения
69
Реакции
0
Хотя бы просто на GetClientCount() замени.
Спасибо, работает. А как сделать, чтобы постоянно проверял кол-во игроков? Если последний игрок вышел, то начинает отсчёт 10 минут и если никто не подключился, то меняет карту.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Если последний игрок вышел, то начинает отсчёт 10 минут
PHP:
public OnClientDisconnect_Post(client)
Проверяешь здесь GetClientCount(false) и запускаешь таймер.
если никто не подключился
А это - здесь:
PHP:
public OnClientConnected(client)
Убивая таймер, если кто-то заходит.
А вообще: Автосмена карты если сервер пустой / Смена карты на пустом сервере.
 

madwayz_1337

Участник
Сообщения
69
Реакции
0
PHP:
public OnClientDisconnect_Post(client)
Проверяешь здесь GetClientCount(false) и запускаешь таймер.А это - здесь:
PHP:
public OnClientConnected(client)
Убивая таймер, если кто-то заходит.
А вообще: Автосмена карты если сервер пустой / Смена карты на пустом сервере.
Разобрался вроде. Ну и хорошо). Не буду изобретать велосипед. Я что-то не мог найти такой... Плохо искал.
 
Последнее редактирование:
Сверху Снизу