Beiträge von Jeffry

    Auf Anfrage in PN:

    Mein Server stürzt nach einer Befehlseingabe ab.


    Erstelle in dem /pawno/ Ordner neben der pawno.exe eine "pawn.cfg" Datei und schreibe dort "-d3" rein (ohne die Anführungszeichen). Anschließend öffne die pawno.exe und wähle deinen Code aus, dann kompiliere ihn neu. Dann poste nochmal was das crashdetect Plugin ausgibt.

    Schreibe es bitte mal so und poste dann was im Server Log steht.
    forward LoadGangfightZones();
    public LoadGangfightZones()
    {
    new rows = cache_num_rows(), string[128];
    printf("LoadGangfightZones: %d rows", rows);
    for(new i=0;i<rows;i++)
    {
    printf("Lade %d", i);
    Gangzonen[i][GFOwnerID] = cache_get_field_content_int(i,"GFOwnerID",dbhandle);
    Gangzonen[i][GFGegnerID] = cache_get_field_content_int(i,"GFGegnerID",dbhandle);
    Gangzonen[i][GFOwnerPoints] = cache_get_field_content_int(i,"GFOwnerPoints",dbhandle);
    Gangzonen[i][GFGegnerPoints] = cache_get_field_content_int(i,"GFGegnerPoints",dbhandle);
    Gangzonen[i][GFRunningTime] = cache_get_field_content_int(i,"GFRunningTime",dbhandle);
    Gangzonen[i][GFPauseTime] = cache_get_field_content_int(i,"GFPauseTime",dbhandle);
    Gangzonen[i][GFFlaggenOwnerA] = cache_get_field_content_int(i,"GFFlaggenOwnerA",dbhandle);
    Gangzonen[i][GFFlaggenOwnerB] = cache_get_field_content_int(i,"GFFlaggenOwnerB",dbhandle);
    Gangzonen[i][GFFlaggenOwnerC] = cache_get_field_content_int(i,"GFFlaggenOwnerC",dbhandle);
    }
    for(new i=rows;i<sizeof(Gangzonen);i++)
    {
    printf("Erstelle %d neu", i);
    Gangzonen[i][GFOwnerID] = 0;
    Gangzonen[i][GFGegnerID] = -1;
    Gangzonen[i][GFOwnerPoints] = 0;
    Gangzonen[i][GFGegnerPoints] = 0;
    Gangzonen[i][GFRunningTime] = -1;
    Gangzonen[i][GFPauseTime] = -1;
    format(string, sizeof(string), "INSERT INTO `gangzonen` (`GangzoneID`) VALUES ('%d')", i);
    mysql_pquery(dbhandle, string);
    }
    print("Rufe SaveGangfightZones auf.");
    SaveGangfightZones();
    return 1;
    }



    forward SaveGangfightZones();
    public SaveGangfightZones()
    {
    new var[526];
    for(new i = 0; i < sizeof(Gangzonen); i++)
    {
    format(var, sizeof(var), "UPDATE `gangzonen` SET `GFOwnerID`='%d', `GFGegnerID`='%d', `GFOwnerPoints`='%d', `GFGegnerPoints`='%d', `GFRunningTime`='%d', `GFPauseTime`='%d', `GFFlaggenOwnerA`='%d', `GFFlaggenOwnerB`='%d', `GFFlaggenOwnerC`='%d' WHERE `GangzoneID`='%d'",
    Gangzonen[i][GFOwnerID],
    Gangzonen[i][GFGegnerID],
    Gangzonen[i][GFOwnerPoints],
    Gangzonen[i][GFGegnerPoints],
    Gangzonen[i][GFRunningTime],
    Gangzonen[i][GFPauseTime],
    Gangzonen[i][GFFlaggenOwnerA],
    Gangzonen[i][GFFlaggenOwnerB],
    Gangzonen[i][GFFlaggenOwnerC],
    i);
    print(var);
    mysql_pquery(dbhandle, var);
    }
    print("Fertig.");
    return 1;
    }

    Dann mache es so, das ist auch etwas performanter:
    forward LoadGangfightZones();
    public LoadGangfightZones()
    {
    new rows = cache_num_rows(), string[128];
    for(new i=0;i<rows;i++)
    {
    Gangzonen[i][GFOwnerID] = cache_get_field_content_int(i,"GFOwnerID",dbhandle);
    Gangzonen[i][GFGegnerID] = cache_get_field_content_int(i,"GFGegnerID",dbhandle);
    Gangzonen[i][GFOwnerPoints] = cache_get_field_content_int(i,"GFOwnerPoints",dbhandle);
    Gangzonen[i][GFGegnerPoints] = cache_get_field_content_int(i,"GFGegnerPoints",dbhandle);
    Gangzonen[i][GFRunningTime] = cache_get_field_content_int(i,"GFRunningTime",dbhandle);
    Gangzonen[i][GFPauseTime] = cache_get_field_content_int(i,"GFPauseTime",dbhandle);
    Gangzonen[i][GFFlaggenOwnerA] = cache_get_field_content_int(i,"GFFlaggenOwnerA",dbhandle);
    Gangzonen[i][GFFlaggenOwnerB] = cache_get_field_content_int(i,"GFFlaggenOwnerB",dbhandle);
    Gangzonen[i][GFFlaggenOwnerC] = cache_get_field_content_int(i,"GFFlaggenOwnerC",dbhandle);
    }
    for(new i=rows;i<sizeof(Gangzonen);i++)
    {
    Gangzonen[i][GFOwnerID] = 0;
    Gangzonen[i][GFGegnerID] = -1;
    Gangzonen[i][GFOwnerPoints] = 0;
    Gangzonen[i][GFGegnerPoints] = 0;
    Gangzonen[i][GFRunningTime] = -1;
    Gangzonen[i][GFPauseTime] = -1;
    format(string, sizeof(string), "INSERT INTO `gangzonen` (`GangzoneID`) VALUES ('%d')", i);
    mysql_pquery(dbhandle, string);
    }
    SaveGangfightZones();
    return 1;
    }



    forward SaveGangfightZones();
    public SaveGangfightZones()
    {
    new var[526];
    for(new i = 0; i < sizeof(Gangzonen); i++)
    {
    format(var, sizeof(var), "UPDATE `gangzonen` SET `GFOwnerID`='%d', `GFGegnerID`='%d', `GFOwnerPoints`='%d', `GFGegnerPoints`='%d', `GFRunningTime`='%d', `GFPauseTime`='%d', `GFFlaggenOwnerA`='%d', `GFFlaggenOwnerB`='%d', `GFFlaggenOwnerC`='%d' WHERE `GangzoneID`='%d'",
    Gangzonen[i][GFOwnerID],
    Gangzonen[i][GFGegnerID],
    Gangzonen[i][GFOwnerPoints],
    Gangzonen[i][GFGegnerPoints],
    Gangzonen[i][GFRunningTime],
    Gangzonen[i][GFPauseTime],
    Gangzonen[i][GFFlaggenOwnerA],
    Gangzonen[i][GFFlaggenOwnerB],
    Gangzonen[i][GFFlaggenOwnerC],
    i);
    mysql_pquery(dbhandle, var);
    }
    return 1;
    }


    Dann erstellt es dir die Zonen wenn du den Server startest.
    Lösche zuvor alle raus.

    Ok, so meinst du das.
    Dann müsste es so passen:
    forward LoadGangfightZones();
    public LoadGangfightZones()
    {
    for(new i=0;i<sizeof(Gangzonen);i++)
    {
    Gangzonen[i][GFOwnerID] = 0;
    Gangzonen[i][GFGegnerID] = -1;
    Gangzonen[i][GFOwnerPoints] = 0;
    Gangzonen[i][GFGegnerPoints] = 0;
    Gangzonen[i][GFRunningTime] = -1;
    Gangzonen[i][GFPauseTime] = -1;
    }
    new rows = cache_num_rows();
    for(new i=0;i<rows;i++)
    {
    Gangzonen[i][GFOwnerID] = cache_get_field_content_int(i,"GFOwnerID",dbhandle);
    Gangzonen[i][GFGegnerID] = cache_get_field_content_int(i,"GFGegnerID",dbhandle);
    Gangzonen[i][GFOwnerPoints] = cache_get_field_content_int(i,"GFOwnerPoints",dbhandle);
    Gangzonen[i][GFGegnerPoints] = cache_get_field_content_int(i,"GFGegnerPoints",dbhandle);
    Gangzonen[i][GFRunningTime] = cache_get_field_content_int(i,"GFRunningTime",dbhandle);
    Gangzonen[i][GFPauseTime] = cache_get_field_content_int(i,"GFPauseTime",dbhandle);
    Gangzonen[i][GFFlaggenOwnerA] = cache_get_field_content_int(i,"GFFlaggenOwnerA",dbhandle);
    Gangzonen[i][GFFlaggenOwnerB] = cache_get_field_content_int(i,"GFFlaggenOwnerB",dbhandle);
    Gangzonen[i][GFFlaggenOwnerC] = cache_get_field_content_int(i,"GFFlaggenOwnerC",dbhandle);
    }
    return 1;
    }

    Erstelle in dem /pawno/ Ordner neben der pawno.exe eine "pawn.cfg" Datei und schreibe dort "-d3" rein (ohne die Anführungszeichen). Anschließend öffne die pawno.exe und wähle deinen Code aus, dann kompiliere ihn neu.
    Dann poste nochmal was das crashdetect Plugin ausgibt.

    Wenn dein Rechner (localhost) aus ist, dann ist auch die Datenbank nicht zu erreichen, aber logischerweise auch dein SA-MP Server nicht mehr online.
    Wenn du deinen SA-MP Server bei einem Hoster hast, dann lass dir dort eine MySQL Datenbank einrichten, auf die dein Server dann von dort aus lokal zugreifen kann.


    Für Tests auf deinem Rechner kannst du XAMPP nutzen.

    Nein, dann lässt du nur den ersten Clan aus, aber so:
    forward LoadClans();
    public LoadClans()
    {
    new rows = cache_num_rows(), j;
    for(new i=0;i<rows;i++)
    {
    j = i+1;
    Clan[j][cID] = cache_get_field_content_int(i,"ID",dbhandle);
    cache_get_field_content(i,"name",Clan[j][cName],dbhandle,32);
    cache_get_field_content(i,"Leader",Clan[j][cLeader],dbhandle,32);
    Clan[j][cMitglieder] = cache_get_field_content_int(i,"Mitglieder",dbhandle);
    Clan[j][cLevel] = cache_get_field_content_int(i,"level",dbhandle);
    Clan[j][cGeld] = cache_get_field_content_int(i,"geld",dbhandle);
    Clan[j][cEXP] = cache_get_field_content_int(i,"EXP",dbhandle);
    Clan[j][cSiege] = cache_get_field_content_int(i,"Siege",dbhandle);
    Clan[j][cNiederlagen] = cache_get_field_content_int(i,"Niederlagen",dbhandle);
    Clan[j][cUnentschieden] = cache_get_field_content_int(i,"Unentschieden",dbhandle);
    printf("Clan ID: %i | Name: %s | Leader: %s | Mitglieder: %i | Level: %i | Geld: %i | EXP: %i | S: %i N: %i U: %i",Clan[j][cID], Clan[j][cName], Clan[j][cLeader], Clan[j][cMitglieder], Clan[j][cLevel],Clan[j][cGeld],
    Clan[j][cEXP],Clan[j][cSiege],Clan[j][cNiederlagen],Clan[j][cUnentschieden]);
    }
    return 1;
    }

    Das müsste sich ändern, sobald sich jemand registriert.
    Um es direkt zu haben, füge nach dem Erstellen des Textdraws bei OnGameModeInit das ein:
    new accounts = dini_Int("Info.ini", "RegAccounts"), string[32];
    format(string, sizeof(string), "Accounts: %d", accounts);
    TextDrawSetString(Textdraw0, string);

    stock CreateBusiness(Beschreibung, Float:X, Float: Y, Float: Z, Besitzer[64], Preis, Level)
    zu:
    stock CreateBusiness(Beschreibung[64], Float:X, Float: Y, Float: Z, Besitzer[64], Preis, Level)


    Da deine Beschreibung wahrscheinlich ein Text ist.


    Und der Befehl:
    ocmd:createbizz(playerid, params[])
    {
    new Preis, Level, Name[64];
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    if(sscanf(params, "sdd", Name, Preis, Level)) return SendClientMessage(playerid, -1,"Benutze:{FFFFFF} /createbizz [Name des Business] [Preis] [Level]");
    CreateBusiness(Name, X, Y, Z, "Der Staat", Preis, Level);
    return 1;
    }

    Dort wo du dich registrierst:
    new accounts = dini_Int("Info.ini", "RegAccounts"), string[32];
    format(string, sizeof(string), "Accounts: %d", accounts);
    TextDrawSetString(Textdraw0, string);
    TextDrawShowForAll(Textdraw0);


    Bei OnPlayerSpawn:
    TextDrawShowForPlayer(playerid, Textdraw0);


    Und das TextDrawCreate eben bei OnGameModeInit.