Спавн и зона покупки

Филипп Фрай

Участник
Сообщения
14
Реакции
2
Как сделать чтобы игрок спавнился после выбора скина, а не команды?
public OnPluginStart()
{
HookEvent("player_team", Team);
}

public Team(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
if(iClient) CreateTimer(2.0, aRespawn, iClient);
}

public Action:aRespawn(Handle:timer, any:iClient)
{
if(IsClientInGame(iClient) && GetClientTeam(iClient) > 1 && !IsPlayerAlive(iClient)) CS_RespawnPlayer(iClient);
}

Как отловить событие когда игрок покидает зону покупки?
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
[CS:S] Автоспавн

чтобы игрок спавнился после выбора скина, а не команды
Думаю, работать будет:
PHP:
#include <cstrike>

public OnPluginStart() AddCommandListener(ClassTeam, "joinclass");

public Action:ClassTeam(client, String:command[], args)
{
	CreateTimer(1.0, aRespawn, client, TIMER_FLAG_NO_MAPCHANGE);
	return Plugin_Continue;
}

public Action:aRespawn(Handle:timer, any:iClient)
{ 
	if(IsClientInGame(iClient) && IsPlayerAlive(iClient) == false) CS_RespawnPlayer(iClient);
	return Plugin_Stop;
}
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
События "игрок покидает зону покупки" нет, но можно узнать об этом другим способом:
C-подобный:
#include <sdktools>
#include <sdkhooks>

public OnMapStart() 
{
    new iEntity = -1;
    // поиск по всем entity зон закупок
    while ((iEntity = FindEntityByClassname(iEntity, "func_buyzone")) != -1) {
        new iTeam = GetEntProp(iEntity, Prop_Send, "m_iTeamNum");
        if ( iTeam == 2 ) {
            // это зона закупки T
            SDKHook(iEntity, SDKHook_EndTouch, OnTZoneEndTouch);
        }
        else if ( iTeam == 3 ) {
            // зона закупки для CT
            SDKHook(iEntity, SDKHook_EndTouch, OnCTZoneEndTouch);
        }
    }
}

public OnCTZoneEndTouch(iEntity, iClient)
{
    if ( iClient > 0 && iClient <= MaxClients ) {
        // любой игрок (Т или КТ) покинул зону закупки КT
        
        if ( GetClientTeam(iClient) == 3 ) {
            // зону покинул КТ
        }
        else {
            // зону покинул Т
        }
    }
}

public OnTZoneEndTouch(iEntity, iClient)
{
    if ( iClient > 0 && iClient <= MaxClients ) {
        // любой игрок (Т или КТ) покинул зону закупки КT
        
        if ( GetClientTeam(iClient) == 2 ) {
            // зону покинул Т
        }
        else {
            // зону покинул КТ
        }
    }
}
 
Сверху Снизу