кикает игроков с сервера
#1

Здрасте. У меня такая проблема.
При заходе на сервер игрока попросту отсоединяет. В логах ничего. Крашдетект подключен но он тоже ничего не выдаёт. В чём может быть причина
OnPlayerConnect:
PHP код:
public OnPlayerConnect(playerid)
{
    
//SetPlayerColor(playerid, CGRAY);
    
new ip[32];
/*    GetPlayerIp(playerid,ip,32);
    for(new i;i<MAX_PLAYERS;i++)
    {
        if(gReconnectTime[i] <= 0) continue;
        if(!strcmp(ip,gReconnectIP[i],false) && strlen(gReconnectIP[i]))
        {
            printf("Reconnect IP: %s = %s, Time: %d",ip,gReconnectIP[i],gReconnectTime[i]);
            SendClientMessage(playerid,CGRAY,"Ïåðåçàõîäèòü ìîæíî íå ìåíåå ÷åì ÷åðåç 5 ñåêóíä");
            gReconnectTime[i] += 5;
            if(gReconnectTime[i] >= 30)
            {
                new mes[128];
                format(mes,sizeof(mes),"banip %s",ip);
                SendRconCommand(mes);
            }
            NewKick(playerid);
            return 0;
        }
    }*/
    
SetPlayerDataToDefault(playerid);
    
format(pTemp[playerid][pIP],32,"%s",ip);
    new 
slot;
    for(new 
i;i<MAX_PLAYERS;i++)
    {
        if(!
gReconnectTime[i]) {slot i; break;}
    }
    
format(gReconnectIP[slot],32,"%s",pTemp[playerid][pIP]);
    
gReconnectTime[slot] = 5;
    
//CreateHungerTextDraw(playerid);
    
ResetPlayerWeaponsEx(playerid);
    new 
FloatgEateryPos[2], str[16];
    
gEateryPos[0] = 450.0gEateryPos[1] = 125.0;
    for(new 
04++) { // öåíû
        
if(0gEateryPos[1] += 50.0;
        
format(strsizeof(str), "$%i"gEateryCosts[x]);
        
gEateryCostTextDraw[playerid][x] = CreatePlayerTextDraw(playeridgEateryPos[0], gEateryPos[1], str);
        
PlayerTextDrawLetterSize(playeridgEateryCostTextDraw[playerid][x], 0.5600002.142500);
        
PlayerTextDrawAlignment(playeridgEateryCostTextDraw[playerid][x], 1);
        
PlayerTextDrawColor(playeridgEateryCostTextDraw[playerid][x], -1);
        
PlayerTextDrawSetShadow(playeridgEateryCostTextDraw[playerid][x], 0);
        
PlayerTextDrawSetOutline(playeridgEateryCostTextDraw[playerid][x], 1);
        
PlayerTextDrawBackgroundColor(playeridgEateryCostTextDraw[playerid][x], 51);
        
PlayerTextDrawFont(playeridgEateryCostTextDraw[playerid][x], 3);
        
PlayerTextDrawSetProportional(playeridgEateryCostTextDraw[playerid][x], 1);
    }
    new 
FloatgBarPos[2];
    
gBarPos[0] = 450.0gBarPos[1] = 125.0;
    for(new 
05++) { // öåíû
        
if(0gBarPos[1] += 50.0;
        
format(strsizeof(str), "$%i"gBarCosts[x]);
        
gBarCostTextDraw[playerid][x] = CreatePlayerTextDraw(playeridgBarPos[0], gBarPos[1], str);
        
PlayerTextDrawLetterSize(playeridgBarCostTextDraw[playerid][x], 0.5600002.142500);
        
PlayerTextDrawAlignment(playeridgBarCostTextDraw[playerid][x], 1);
        
PlayerTextDrawColor(playeridgBarCostTextDraw[playerid][x], -1);
        
PlayerTextDrawSetShadow(playeridgBarCostTextDraw[playerid][x], 0);
        
PlayerTextDrawSetOutline(playeridgBarCostTextDraw[playerid][x], 1);
        
PlayerTextDrawBackgroundColor(playeridgBarCostTextDraw[playerid][x], 51);
        
PlayerTextDrawFont(playeridgBarCostTextDraw[playerid][x], 3);
        
PlayerTextDrawSetProportional(playeridgBarCostTextDraw[playerid][x], 1);
    }
    
gSkinShopPriceDraw[playerid] = CreatePlayerTextDraw(playerid31.000000224.000000"_");
    
PlayerTextDrawBackgroundColor(playeridgSkinShopPriceDraw[playerid], 255);
    
PlayerTextDrawFont(playeridgSkinShopPriceDraw[playerid], 3);
    
PlayerTextDrawLetterSize(playeridgSkinShopPriceDraw[playerid], 0.5000001.600000);
    
PlayerTextDrawColor(playeridgSkinShopPriceDraw[playerid], -1);
    
PlayerTextDrawSetOutline(playeridgSkinShopPriceDraw[playerid], 0);
    
PlayerTextDrawSetProportional(playeridgSkinShopPriceDraw[playerid], 1);
    
PlayerTextDrawSetShadow(playeridgSkinShopPriceDraw[playerid], 1);
    return 
1;

Reply
#2

SetPlayerDataToDefault
ResetPlayerWeaponsEx

Защиты от телепорта или ещё чего есть?
Reply
#3

кикает не после логина а именно при коннекте
PHP код:
stock ResetPlayerWeaponsEx(playerid)
{
    
pTemp[playerid][pAbletoGun] = 2;
    
ResetPlayerWeapons(playerid);
    for(new 
i;i<13;i++)
    {
        
gGuns[playerid][i] = 0;
        
gAmmos[playerid][i] = 0;
    }
    
pTemp[playerid][pAbletoGun] = 2;

В SetPlayerDataToDefault данные обнуляются, там много кода поэтому не буду постить
Reply
#4

Есть стопроцентный способ: логировать причины всех киков/банов. Но слишком долго, если кода много, поэтому возможно вас не устроит.
Reply
#5

хотел попробовать, но лень) видимо всё таки придётся
Reply
#6

Quote:

stock KickEx(playerid, reason[] = "")
{
if(strlen(reason)) printf("[KICK] %s | %s", GetName(playerid), reason);
Kick(playerid);
return 1;
}
#define Kick KickEx

у меня так сделано, всегда знаешь где и за что кикнуло
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)