ztavern/t6/scripts/king.gsc
2024-10-18 00:19:19 +00:00

99 lines
No EOL
3.7 KiB
Text

init()
{
setDvar("king", "0");
setDvar("kingId", "0");
setDvar("kingslot", "-1");
level thread CheckKing();
}
CheckKing()
{
level endon("game_ended");
level waittill("initial_blackscreen_passed");
for (;;)
{
if (getDvar("king") != "0")
{
kingName = strtok(getDvar("king"), ";");
setDvar("king", "0");
iprintln("King ^5" + kingName[0] + "^7 is requesting a slot.");
kills = 1000000;
clientslot = -1;
clientguid = 0;
vip4_count = 0;
is_staff = 0;
foreach(player in level.players)
{
if (issubstr(player.name, "^2[VIP") || issubstr(player.name, "^2VIP"))
vip4_count++;
}
for (i = 0; i < level.players.size; i++)
{
foreach (staff_guid in level.staff_list_a)
{
if (int(level.players[i] getguid()) == int(staff_guid))
{
is_staff = 1;
break; // immune staff
}
}
if (is_staff == 1)
continue;
if (kingName[2] == "4")
{
if (vip4_count != level.players.size && (issubstr(level.players[i].name, "^2[VIP") || issubstr(level.players[i].name, "^2VIP"))) //if its not a vip4 full lobby, immune the vip 4
{
wait 0.1;
continue;
}
if (kills >= level.players[i].kills)
{
kills = level.players[i].kills;
clientguid = level.players[i] getGuid();
}
}
else if (kingName[2] == "3" && !issubstr(level.players[i].name, "^2[VIP") && !issubstr(level.players[i].name, "^2VIP"))
{
if (kills >= level.players[i].kills)
{
kills = level.players[i].kills;
clientguid = level.players[i] getGuid();
}
}
else if (kingName[2] == "2" && !issubstr(level.players[i].name, "^2[VIP") && !issubstr(level.players[i].name, "^2VIP")
&& !issubstr(level.players[i].name, "^1[VIP") && !issubstr(level.players[i].name, "^1VIP"))
{
if (kills >= level.players[i].kills)
{
kills = level.players[i].kills;
clientguid = level.players[i] getGuid();
}
}
else if (kingName[2] == "1" && !issubstr(level.players[i].name, "^2[VIP") && !issubstr(level.players[i].name, "^2VIP")
&& !issubstr(level.players[i].name, "^1[VIP") && !issubstr(level.players[i].name, "^1VIP")
&& !issubstr(level.players[i].name, "^6[VIP") && !issubstr(level.players[i].name, "^6VIP"))
{
if (kills >= level.players[i].kills)
{
kills = level.players[i].kills;
clientguid = level.players[i] getGuid();
}
}
}
if (clientguid != 0)
{
setDvar("kingslot", clientguid);
setDvar("kingId", kingName[1]);
}
else
{
iprintln("King request ^1denied^7, king level too low");
setDvar("kingslot", "12");
setDvar("kingId", kingName[1]);
}
}
wait 0.1;
}
}