l4d_survivor_identity_fix: Small fixes/improvements

This commit is contained in:
Jackzie 2021-01-24 13:59:23 -06:00
parent 2f38902bd6
commit cf969f483a
No known key found for this signature in database
GPG key ID: 1E834FE36520537A
2 changed files with 8 additions and 8 deletions

View file

@ -125,6 +125,7 @@ public Action Event_BotToPlayer(Handle event, const char[] name, bool dontBroadc
char model[128]; char model[128];
GetClientModel(bot, model, sizeof(model)); GetClientModel(bot, model, sizeof(model));
SetEntityModel(player, model); SetEntityModel(player, model);
strcopy(g_Models[player], 64, model);
SetEntProp(player, Prop_Send, "m_survivorCharacter", GetEntProp(bot, Prop_Send, "m_survivorCharacter")); SetEntProp(player, Prop_Send, "m_survivorCharacter", GetEntProp(bot, Prop_Send, "m_survivorCharacter"));
} }
@ -137,15 +138,12 @@ public Action Event_PlayerToBot(Handle event, char[] name, bool dontBroadcast)
int bot = GetClientOfUserId(GetEventInt(event, "bot")); int bot = GetClientOfUserId(GetEventInt(event, "bot"));
if (!IsValidClient(player) || !IsSurvivor(player) || IsFakeClient(player)) return; // ignore fake players (side product of creating bots) if (!IsValidClient(player) || !IsSurvivor(player) || IsFakeClient(player)) return; // ignore fake players (side product of creating bots)
if (g_Models[player][0] != '\0') if (g_Models[player][0] != '\0')
{ {
SetEntProp(bot, Prop_Send, "m_survivorCharacter", GetEntProp(player, Prop_Send, "m_survivorCharacter")); int playerType = GetEntProp(player, Prop_Send, "m_survivorCharacter");
SetEntProp(bot, Prop_Send, "m_survivorCharacter", playerType);
SetEntityModel(bot, g_Models[player]); // Restore saved model. Player model is hunter at this point SetEntityModel(bot, g_Models[player]); // Restore saved model. Player model is hunter at this point
for (int i = 0; i < 8; i++) SetClientInfo(bot, "name", survivor_names[playerType]);
{
if (StrEqual(g_Models[player], survivor_models[i])) SetClientInfo(bot, "name", survivor_names[i]);
}
} }
} }
@ -232,11 +230,13 @@ public void OnClientCookiesCached(int client) {
//Either use preferred model OR find the least-used. //Either use preferred model OR find the least-used.
public Action Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) { public Action Event_PlayerFirstSpawn(Event event, const char[] name, bool dontBroadcast) {
int client = GetClientOfUserId(event.GetInt("userid")); int client = GetClientOfUserId(event.GetInt("userid"));
if(GetClientTeam(client) == 2 && !IsFakeClient(client) && g_iPendingCookieModel[client] > 0) { if(IsFakeClient(client)) return; //Have to ignore bots for now, due to idle bots
if(GetClientTeam(client) == 2 && g_iPendingCookieModel[client] > 0) {
//A model is set: Fetched from cookie //A model is set: Fetched from cookie
RequestFrame(Frame_SetPlayerModel, client); RequestFrame(Frame_SetPlayerModel, client);
}else{ }else{
//Model was not set: Use least-used survivor. //Model was not set: Use least-used survivor.
RequestFrame(Frame_SetPlayerToLeastUsedModel, client); RequestFrame(Frame_SetPlayerToLeastUsedModel, client);
} }
} }
@ -302,7 +302,7 @@ public int Native_SetPlayerModel(Handle plugin, int numParams) {
} else { } else {
//Set a cookie to remember their model, starting at 1. //Set a cookie to remember their model, starting at 1.
char charTypeStr[2]; char charTypeStr[2];
Format(charTypeStr, sizeof(charTypeStr), "%d", ++character); Format(charTypeStr, sizeof(charTypeStr), "%d", character + 1);
if(!IsFakeClient(client)) if(!IsFakeClient(client))
SetClientCookie(client, hModelPrefCookie, charTypeStr); SetClientCookie(client, hModelPrefCookie, charTypeStr);