Решил проблему, изначально выдавал модель под каждое событие (возрождение, начало раунда, спаун игрока, спасение и тгд)
Всё оказалось куда проще, нужно было просто подставить таймер и все эти проверки оказались нахрен не нужны (конечно желательно больше тестов), всё работает от обычного HookEvent("player_spawn", ePlayer_Spawn);
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#pragma semicolon 1
#define ZOEY 1
#define FRANCIS 2
#define LOUIS 3
#define BILL 0
#define MODEL_BILL "*****"
#define MODEL_ZOEY "*****"
#define MODEL_FRANCIS "*****"
#define MODEL_LOUIS "*****"
public Plugin:myinfo =
{
name = "2_Press_Start",
author = "Mister Game Over",
description = "Survivors",
version = "1.0",
url = "https://steamcommunity.com/profiles/76561198203206199"
}
public OnPluginStart()
{
HookEvent("player_spawn", ePlayer_Spawn);
}
public OnMapStart()
{
PrecacheModel(MODEL_BILL);
PrecacheModel(MODEL_ZOEY);
PrecacheModel(MODEL_FRANCIS);
PrecacheModel(MODEL_LOUIS);
}
public ePlayer_Spawn(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast)
{
static iClient;
iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
if(iClient < 1 || iClient > MaxClients)
return;
if(!IsClientInGame(iClient) || !IsPlayerAlive(iClient))
return;
if(GetClientTeam(iClient) == 2)
{
switch (GetEntProp(iClient, Prop_Send, "m_survivorCharacter"))
{
case BILL:
{
CreateTimer(0.1, Timer_Model_Bill, iClient, TIMER_FLAG_NO_MAPCHANGE);
}
case ZOEY:
{
CreateTimer(0.1, Timer_Model_Zoey, iClient, TIMER_FLAG_NO_MAPCHANGE);
}
case FRANCIS:
{
CreateTimer(0.1, Timer_Model_Francis, iClient, TIMER_FLAG_NO_MAPCHANGE);
}
case LOUIS:
{
CreateTimer(0.1, Timer_Model_Lous, iClient, TIMER_FLAG_NO_MAPCHANGE);
}
}
}
}
stock bool:IsSurvivor(iClient)
{
if (iClient > 0 && iClient <= MaxClients && IsClientInGame(iClient) && GetClientTeam(iClient) == 2)
{
return true;
}
return false;
}
public Action:Timer_Model_Bill(Handle:timer, any:iClient)
{
if (IsSurvivor(iClient))
{
SetEntityModel(iClient, MODEL_BILL);
return Plugin_Continue;
}
return Plugin_Stop;
}
public Action:Timer_Model_Zoey(Handle:timer, any:iClient)
{
if (IsSurvivor(iClient))
{
SetEntityModel(iClient, MODEL_ZOEY);
return Plugin_Continue;
}
return Plugin_Stop;
}
public Action:Timer_Model_Francis(Handle:timer, any:iClient)
{
if (IsSurvivor(iClient))
{
SetEntityModel(iClient, MODEL_FRANCIS);
return Plugin_Continue;
}
return Plugin_Stop;
}
public Action:Timer_Model_Lous(Handle:timer, any:iClient)
{
if (IsSurvivor(iClient))
{
SetEntityModel(iClient, MODEL_LOUIS);
return Plugin_Continue;
}
return Plugin_Stop;
}
Сообщение отредактировал Game Over - L4D2 - CS:GO: 02 Август 2018 - 21:01