DarkerZ
Участник
- Сообщения
- 395
- Реакции
- 175
приведу часть кода:
и в Errorlog возникают следующие ошибки:
хотя все проверки сделаны до вызова функций. и да первая ошибка всегда выдаёт один и тот же невалидный индекс, на другом сервере индекс отличается, но так же один и тот же, грубо говоря зависит от сервера.
помогите разобраться, спасибо заранее
C-подобный:
#define EW_MODULE_OFFLINE_EBAN
public void OnClientPostAdminCheck(int iClient)
{
if(!IsValidClient(iClient) || !IsClientConnected(iClient) || IsFakeClient(iClient)) return;
#if defined EW_MODULE_OFFLINE_EBAN
EWM_OfflineEban_OnClientPostAdminCheck(iClient);
#endif
int iFlags = GetUserFlagBits(iClient);
if(iFlags & ADMFLAG_KICK || iFlags & ADMFLAG_ROOT) g_bIsAdmin[iClient] = true;
}
stock bool IsValidClient(int iClient)
{
if (iClient > 0 && iClient <= MaxClients && IsValidEdict(iClient) && IsClientInGame(iClient)) return true;
return false;
}
public void EWM_OfflineEban_OnClientPostAdminCheck(int iClient)
{
if(IsClientSourceTV(iClient)) return; //ignore SourceTV
char sClient_Name[32], sClient_SteamID[64];
int iUserID = GetClientUserId(iClient);
GetClientName(iClient, sClient_Name, MAX_NAME_LENGTH);
GetClientAuthId(iClient, AuthId_Steam2, sClient_SteamID, sizeof(sClient_SteamID));
bool bNotFound = true;
for(int i = 0; i < g_OfflineArray.Length; i++)
{
class_Offline_Eban OfflinePlayerTest;
g_OfflineArray.GetArray(i, OfflinePlayerTest, sizeof(OfflinePlayerTest));
if(StrEqual(OfflinePlayerTest.Player_SteamID, sClient_SteamID, false))
{
bNotFound = false;
OfflinePlayerTest.UserID = iUserID;
FormatEx(OfflinePlayerTest.PlayerName, sizeof(OfflinePlayerTest.PlayerName), "%s", sClient_Name);
OfflinePlayerTest.TimeStamp = -1;
OfflinePlayerTest.TimeStamp_Start = -1;
FormatEx(OfflinePlayerTest.LastItem, sizeof(OfflinePlayerTest.LastItem), "None");
g_OfflineArray.SetArray(i, OfflinePlayerTest, sizeof(OfflinePlayerTest));
break;
}
}
if(bNotFound)
{
class_Offline_Eban NewOfflinePlayer;
NewOfflinePlayer.UserID = iUserID;
FormatEx(NewOfflinePlayer.PlayerName, sizeof(NewOfflinePlayer.PlayerName), "%s", sClient_Name);
FormatEx(NewOfflinePlayer.Player_SteamID, sizeof(NewOfflinePlayer.Player_SteamID), "%s", sClient_SteamID);
NewOfflinePlayer.TimeStamp = -1;
NewOfflinePlayer.TimeStamp_Start = -1;
FormatEx(NewOfflinePlayer.LastItem, sizeof(NewOfflinePlayer.LastItem), "None");
g_OfflineArray.PushArray(NewOfflinePlayer, sizeof(NewOfflinePlayer));
}
}
Exception reported: Client index -2016298800 is invalid на строчку GetClientAuthId(iClient, AuthId_Steam2, sClient_SteamID, sizeof(sClient_SteamID));
Exception reported: Client index 0 is invalid на строчку int iFlags = GetUserFlagBits(iClient);
помогите разобраться, спасибо заранее