SA-MP Forums Archive
Server crashed because of this -_- - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Server crashed because of this -_- (/showthread.php?tid=378110)



Server crashed because of this -_- - kbalor - 16.09.2012

Код:
[06:35:05] [debug] Run time error 5: "Invalid memory access"
[06:35:05] [debug] AMX backtrace:
[06:35:05] [debug] #0 0000d978 in public SSCANF_OnPlayerConnect () from LuxAdmin.amx
[06:35:05] [debug] #1 000061a8 in public Itter_OnPlayerConnect () from LuxAdmin.amx
[06:35:05] [debug] #2 000056ec in public OnPlayerConnect () from LuxAdmin.amx

There is something wrong with the code below. I can't find it. If you could help me. Please...
pawn Код:
public OnPlayerConnect(playerid)
{

   
    #if EnableCamHack == true
    KeyState[playerid] = 0;
    FollowOn[playerid] = 0;
    AccInfo[playerid][InCamMod]     = 0;
    AccInfo[playerid][LockedCam]    = 0;
    #endif
    AccInfo[playerid][Deaths]       = 0;
    AccInfo[playerid][Kills]        = 0;
    AccInfo[playerid][Skin]         = 0;
    AccInfo[playerid][Reps]         = 0;
    AccInfo[playerid][Jailed]       = 0;
    SetPVarInt(playerid, "Jailed", 0);
    AccInfo[playerid][Frozen]       = 0;
    AccInfo[playerid][Level]        = 0;
    AccInfo[playerid][pVip]         = 0;
    AccInfo[playerid][LoggedIn]     = 0;
    AccInfo[playerid][Registered]   = 0;
    AccInfo[playerid][TimesSpawned] = 0;
    AccInfo[playerid][Muted]        = 0;
    AccInfo[playerid][MuteWarnings] = 0;
    AccInfo[playerid][Warnings]     = 0;
    AccInfo[playerid][Caps]         = 0;
    AccInfo[playerid][DoorsLocked]  = 0;
    AccInfo[playerid][pCar]         = -1;
    AccInfo[playerid][SpamCount]    = 0;
    AccInfo[playerid][MaxAdv]       = 0;
    AccInfo[playerid][SpamTime]     = 0;
    AccInfo[playerid][PingCount]    = 0;
    AccInfo[playerid][PingTime]     = 0;
    AccInfo[playerid][FailLogin]    = 0;
    AccInfo[playerid][Hide]         = 0;
    AccInfo[playerid][pInvis]       = 0;
    AccInfo[playerid][OnDuty]       = 0;
    AccInfo[playerid][pGps]         = -1;
   
    #if EnableTwoRcon == true
    AccInfo[playerid][MaxRcon] = 0;
    #endif

    AccInfo[playerid][ConnectTime] = gettime();
    for(new i; i<PING_MAX_EXCEEDS; i++)
    AccInfo[playerid][pPing][i] = 0;
    //------------------------------------------------------
    new string[128];
    new str[128];
    new file[256];
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, MAX_PLAYER_NAME);
    new tmp3[50]; GetPlayerIp(playerid,tmp3,50);
   
    ResetForbiddenWeaponsForPlayer(playerid);
    TempBanCheck(playerid);
//==============================================================================
// Connect Messages
//==============================================================================
    if(ServerInfo[ConnectMessages] == 1)
    {
        new pAKA[256];
        pAKA = dini_Get("LuxAdmin/Config/aka.txt",tmp3);
        if (strlen(pAKA) < 3)
        format(str,sizeof(str),"{00CCFF} %s (ID:%d) {6666FF}has Joined Global Freeroam Server", PlayerName,playerid);
        else if (!strcmp(pAKA,PlayerName,true))
        format(str,sizeof(str),"{00CCFF} %s (ID:%d) {6666FF}has Joined Global Freeroam Server", PlayerName,playerid);
        else format(str,sizeof(str),"{00CCFF} %s (ID:%d) {6666FF}has Joined Global Freeroam Server (Aka: %s)",PlayerName,playerid,pAKA);

        for(new i = 0; i < MAX_PLAYERS; i++)
        if(IsPlayerConnected(i) && playerid != i)
        {
        if(AccInfo[i][Level] > 2)
        SendClientMessage(i,white,str);
        else
        {
        format(string,sizeof(string),"{00CCFF} %s (ID:%d) {6666FF}has joined the server", PlayerName, playerid);
        SendClientMessage(i,white,string);
        }
        }
    }
//==============================================================================
// If PlayerName is Banned
//==============================================================================
    if (dUserINT(PlayerName2(playerid)).("Banned") == 1)
    {
        SendClientMessage(playerid, red, "ATTENTION: This name is banned from this server");
        format(string,sizeof(string)," %s (ID:%d) has been Automatically  Kicked | Reason: Name Banned ",PlayerName,playerid);
        SendClientMessageToAll(grey, string);
        print(string);
        SaveIn("KickLog",string);
        SetTimerEx("KickPlayer", 500, 0, "i", playerid);
    }
//==============================================================================
// Kick Forbidden Name
//==============================================================================
    if(ServerInfo[NameKick] == 1)
    {
        for(new s = 0; s < BlockedNamesCount; s++)
        {
            if(!strcmp(BlockedNames[s],PlayerName,true))
            {
            SendClientMessage(playerid,red, "ATTENTION: Your name is on our Black List, you have been Kicked");
            format(string,sizeof(string)," %s (ID:%d) has been Automatically Kicked | Reason: Forbidden Name",PlayerName,playerid);
            SendClientMessageToAll(grey, string);
            print(string);
            SaveIn("KickLog",string);
            SetTimerEx("KickPlayer", 500, 0, "i", playerid);
            return 1;
            }
        }
    }
//==============================================================================
// Kick Forbidden Part of Name
//==============================================================================
    if(ServerInfo[PartNameKick] == 1)
    {
        for(new s = 0; s < BlockedPartNameCount; s++)
        {
            new pos;
            while((pos = strfind(PlayerName,BlockedPartName[s],true)) != -1)
            for(new i = pos, j = pos + strlen(BlockedPartName[s]); i < j; i++)
            {
            SendClientMessage(playerid,red, "ATTENTION: Your name is not Allowed on this server, you have been Kicked!");
            format(string,sizeof(string),"%s (ID:%d) has been Automatically Kicked | Reason: Forbidden Name ",PlayerName,playerid);
            SendClientMessageToAll(grey, string);
            print(string);
            SaveIn("KickLog",string);
            SetTimerEx("KickPlayer", 500, 0, "i", playerid);
            return 1;
            }
        }
    }
//==============================================================================
// Server Locked
//==============================================================================
    if(ServerInfo[Locked] == 1)
    {
        AccInfo[playerid][AllowedIn] = false;
        SendClientMessage(playerid,red,"Server is Locked");
        SendClientMessage(playerid,red,"You have 40 seconds to enter the server Password");
        LockKickTimer[playerid] = SetTimerEx("AutoKick", 40000, 0, "i", playerid);
    }
    if (ServerInfo[Locked] == 1 && AccInfo[playerid][AllowedIn] == false)
    {
        ShowPlayerDialog(playerid, DIALOG_TYPE_SERVPASS, DIALOG_STYLE_INPUT,
        "Server Locked!", "Enter the password to Access it:", "Access", "Exit");
    }
//==============================================================================
// Register & Login
//==============================================================================
    if(strlen(dini_Get("LuxAdmin/Config/aka.txt", tmp3)) == 0)
    dini_Set("LuxAdmin/Config/aka.txt", tmp3, PlayerName);
    else
    {
        if( strfind( dini_Get("LuxAdmin/Config/aka.txt", tmp3), PlayerName, true) == -1 )
        {
        format(string,sizeof(string),"%s,%s", dini_Get("LuxAdmin/Config/aka.txt",tmp3), PlayerName);
        dini_Set("LuxAdmin/Config/aka.txt", tmp3, string);
        }
    }
    if(!udb_Exists(PlayerName2(playerid)))
    SendClientMessage(playerid,orange, "Your account isn't registered. Please register (/"#RegisterCommand")");
    else
    {
    AccInfo[playerid][Registered] = 1;
    format(file,sizeof(file),"/LuxAdmin/Accounts/%s.sav",udb_encode(PlayerName));
    new tmp2[256]; tmp2 = dini_Get(file,"Ip");

    if( (!strcmp(tmp3,tmp2,true)) && (ServerInfo[AutoLogin] == 1))
    {
        LoginPlayer(playerid);
        if(AccInfo[playerid][Level] > 0)
        {
            switch(AccInfo[playerid][Level])
            {
                case 1: AdmRank = "Trial Admin";
                case 2: AdmRank = "Advanced Admin";
                case 3: AdmRank = "Intermediate Admin";
                case 4: AdmRank = "Junior Admin";
                case 5: AdmRank = "Senior Admin";
            }
            if(AccInfo[playerid][Level] > 5)
            {
                AdmRank = "Head Admin";
            }
            //==============================================================================
            // VIP System
            //==============================================================================
            if(AccInfo[playerid][pVip] > 0)
            {
                format(string,sizeof(string),"You are now Logged in | Account: VIP | Level %d - %s", AccInfo[playerid][Level], AdmRank);
                SendClientMessage(playerid,0x3399CCFF,string);
            }
            else
            {
                format(string,sizeof(string),"You are now Logged in | Level %d - %s", AccInfo[playerid][Level],AdmRank);
                SendClientMessage(playerid, 0x3399CCFF, string);
            }
            //==============================================================================
            format(string,sizeof(string),"%s (%d) %s is now connected to the game", AdmRank, AccInfo[playerid][Level], PlayerName2(playerid));
            SendClientMessageToAll(green, string);
        }
        else
        {
            if(AccInfo[playerid][pVip] > 0)
            {
                SendClientMessage(playerid,0x3399CCFF,"You are now Logged in - Account Type: VIP");
                format(string,sizeof(string),"VIP %s is now connected to the game", PlayerName2(playerid));
                SendClientMessageToAll(blue, string);
            }
            else
            {
                SendClientMessage(playerid,green,"You are now Logged in");
            }
        }
    }
    else SendClientMessage(playerid, white, "Account is registered") &&
    SendClientMessage(playerid, orange, "Please login to access your Account (/"#LoginCommand")");
    }
    return 1;
}



Re: Server crashed because of this -_- - scottyishere - 16.09.2012

Try commenting this: /* */

pawn Код:
for(new i; i<PING_MAX_EXCEEDS; i++)
    AccInfo[playerid][pPing][i] = 0;
Alternatively if this isn't the problem, try randomly commenting this code until it doesn't crash anymore. Narrow it down until you find the exact location then post it here.