random player

Сообщения
164
Реакции
33
Помогите исправить ошибку:
C-подобный:
[SM] Native "IsClientInGame" reported: Client index 0 is invalid 
[SM] Displaying call stack trace for plugin "1112045.smx": 
[SM]   [0]  Line 17, 1112045.sp::r_d()

Вот плагин:
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdkhooks>

#pragma semicolon 1

new com_t;
new com_ct;

public OnPluginStart() {
HookEvent("player_death", r_d); }

public Action:r_d(Handle:event, const String:name[], bool:dontBroadcast) {
new client = GetClientOfUserId(GetEventInt(event, "client"));
com_t = GetRandomClientT();
if (IsClientInGame(client) && client == com_t)
{
ChangeClientTeam(client, 2);
}
com_ct = GetRandomClientCT();
if (IsClientInGame(client) && client == com_ct)
{
ChangeClientTeam(client, 2);
}
return Plugin_Handled;
}

GetRandomClientT()
{
new indexes[MaxClients+1], players = 0;
for (new i = 1; i <= MaxClients; i++)
{
if (i > 0 && IsClientInGame(i) && IsPlayerAlive(i) && IsValidEntity(i) && GetClientTeam(i) == 1) indexes[players++] = i;
}
if (players > 0) return indexes[GetRandomInt(0, players-1)];
return 0;
}

GetRandomClientCT()
{
new indexes[MaxClients+1], players = 0;
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && IsPlayerAlive(i) && IsValidEntity(i) && GetClientTeam(i) == 2) indexes[players++] = i;
}
if (players > 0) return indexes[GetRandomInt(0, players-1)];
return 0;
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
if (IsClientInGame(client) && client == com_t)
поменяй на:
if (client && client == com_t)
 

WeSTMan

А вот тут текст!
Сообщения
833
Реакции
521
Посмотри что за команды ты ищешь.
GetClientTeam(i) == 1
и GetClientTeam(i) == 2
1 = спектара.
 
Сообщения
164
Реакции
33
Сделал другой:
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdkhooks>

#pragma semicolon 1

public OnPluginStart()
{
HookEvent("round_end", End, EventHookMode:1);
return 0;
}

public Action:End(Handle:event, String:name[], bool:dontBroadcast)
{
new i = 1;
while (i <= MaxClients)
{
if (GetClientTeam(i) == 2)
{
ChangeClientTeam(i, 3);
i++;
}
else
{
if (GetClientTeam(i) == 3)
{
ChangeClientTeam(i, 2);
i++;
}
i++;
}
i++;
}
return Action:0;
}
Только теперь перекидывает всю команду, как сделать что бы только 1 игрока?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9
Вова Галик 552892780, а ты сам посмотри. Ты не выбираешь рандом игрока, а перемещаешь каждого..
нужна ф-я..
 

dron216

Участник
Сообщения
111
Реакции
26
GetClientOfUserId(GetEventInt(event, "client"));
Ничего не смущает?

Оффтоп
 
Последнее редактирование:
Сверху Снизу