T skin bug
Hey I have this script that switches teams after Terrorists lose, and the bug is it leaves some CT's with the T skin, could anybody fix this up?
Code:
#include <amxmodx>
#include <cstrike>
new gMaxPlayers;
new bool:gRestart[33];
public plugin_init()
{
register_plugin("Switch Ts", "1.0", "Exolent");
register_logevent("logevent_Round_End", 2, "1=Round_End");
register_clcmd("fullupdate", "clcmd_fullupdate");
register_event("TextMsg", "event_TextMsg", "a", "#2=Game_will_restart_in");
register_event("ResetHUD", "event_ResetHUD", "be");
gMaxPlayers = get_maxplayers();
}
public client_disconnect(id)
{
gRestart[id] = false;
}
public logevent_Round_End()
{
new bool:tAlive = false;
new CsTeams:team;
for(new i = 1; i <= gMaxPlayers; i++) {
if(!is_user_connected(i)) continue;
team = cs_get_user_team(i);
if(team == CS_TEAM_T && is_user_alive(i)) {
tAlive = true;
break;
}
}
if(!tAlive) {
for(new i = 1; i <= gMaxPlayers; i++) {
if(!is_user_connected(i)) continue;
team = cs_get_user_team(i);
if(team != CS_TEAM_CT && team!= CS_TEAM_T) continue;
cs_set_user_team(i, team == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T, random_model(team));
}
}
}
public clcmd_fullupdate(id)
{
return PLUGIN_HANDLED_MAIN;
}
public event_TextMsg()
{
for(new i = 1; i <= gMaxPlayers; i++) {
if(is_user_alive(i)) gRestart[i] = true;
}
}
public event_ResetHUD(id)
{
if(gRestart[id]) {
gRestart[id] = false;
return;
}
// let other plugin set custom models before checking bad ones.
set_task(0.2, "handle_model", id + 888888);
}
public handle_model(id)
{
id -= 888888;
if(check_bad_model(id, CS_TEAM_T) || check_bad_model(id, CS_TEAM_CT)) {
set_task(0.5, "set_model", id + 999999);
}
}
public set_model(id)
{
id -= 999999;
new CsTeams:team = cs_get_user_team(id);
if(team == CS_TEAM_CT) {
cs_set_user_model(id, "gign");
}
else if(team == CS_TEAM_T) {
cs_set_user_model(id, "leet");
}
}
bool:check_bad_model(id, CsTeams:team)
{
new model[32];
cs_get_user_model(id, model, 31);
if(team == CS_TEAM_T) {
if(equali(model, "sas") || equali(model, "gign") || equali(model, "gsg9") || equali(model, "urban")) {
return true;
}
}
else if(team == CS_TEAM_CT) {
if(equali(model, "arctic") || equali(model, "leet") || equali(model, "guerilla") || equali(model, "terror")) {
return true;
}
}
return false;
}
CsInternalModel:random_model(CsTeams:team)
{
new CsInternalModel:model = CS_DONTCHANGE;
if(team == CS_TEAM_CT) {
switch(random_num(1, 4)) {
case 1: model = CS_T_TERROR;
case 2: model = CS_T_LEET;
case 3: model = CS_T_ARCTIC;
case 4: model = CS_T_GUERILLA;
}
}
else if(team == CS_TEAM_T) {
switch(random_num(1, 4)) {
case 1: model = CS_CT_URBAN;
case 2: model = CS_CT_GSG9;
case 3: model = CS_CT_SAS;
case 4: model = CS_CT_GIGN;
}
}
return model;
}
|