Beiträge von Jeffry

    Hast du an dem Code noch etwas geändert? Den so sieht mir das eigentlich korrekt aus.


    Welches sieht denn die Zeile mit dem Fehler aus?

    sizeof(MAX_Businesses)
    Zu
    MAX_Businesses


    Und setze am besten die Deklaration (new) des Strings vor die Schleife, damit der nicht in jedem Durchlauf neu angelegt wird im Speicher.

    218d Coupé mit Sportline und ein paar M-Features (Fahrwerk, Lenkrad, Schalter) seit ca. Weihnachten, hatte 15TKM runter :D:love::love::love: :love

    Nice one!!
    Weiß ist zwar nicht so meine Farbe, aber dem steht es irgendwie schon. Sieht schick aus! :thumbup:


    Den 5er hast dann aber verkauft, oder?

    Ja, das kannst du mit einem stock wie diesem so abfragen:
    stock GetPlayerCarOwner(vehicleid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    for(new j = 0; j < MaxVeh; j++)
    {
    if(PlayerCar[i][j][c_id] == vehicleid) return PlayerCar[i][j][owner] ;
    }
    }
    return -1;
    }

    format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query);
    Zu
    format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0'", query);


    Das Komma am Ende ist zu viel dort.

    Das Problem hier wird dem Anschein nach gewesen sein, dass zu viele lokale Variablen verwendet werden.
    Im Compiler dürfte dann eine Meldung ähnlich dieser vorhanden gewesen sein:

    Code
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    Header size:          11376 bytes
    Code size:           796056 bytes
    Data size:          2207024 bytes
    Stack/heap size:      16384 bytes; estimated max. usage=290 cells (1160 bytes)
    Total requirements: 3030840 bytes


    Diese Meldung darf nicht im Compiler stehen, da es zu Problemen kommen kann, während dem Spielbetrieb. Zum Beispiel, dass Befehle nicht mehr funktionieren.


    Um die Meldung zu entfernen (also mehr Speicher zu erlauben) muss unter den Includes
    #pragma dynamic 10000
    eingefügt werden.


    Sollte die Meldung nicht weg gehen, dann die Zahl etwas erhöhen, bis die Meldung weg geht (20000, 30000, ...).



    EDIT:
    Die Meldung kann auch dadurch auftauchen, dass im Ordner /pawno/ eine Datei "pawn.cfg" existiert. Dann bekommt man die Meldung nur weg, wenn man die "pawn.cfg" löscht.

    Kommt die Meldung mit dem Compiler nicht auch, wenn man die pawn.cfg verwendet? O.o

    Jo, dadurch kommt die auch. Das wäre dann aber gewollt.



    Heißt doch dann, dass die Meldung auch nur durch die .cfg Datei erscheinen kann und ohne diese eben nicht?

    Nein, in beschriebenem Fall (zu viele lokale Variablen) kommt die Meldung auch. Und dann können Fehler auftreten.



    Ich füg das zu meinem Post noch hinzu, dass man die Meldung natürlich nicht weg bekommt, wenn die pawn.cfg Datei vorhanden ist.

    Du musst den eingegebenen Name auslesen und die ID des Namens nutzen.
    case DIALOG_MEDICC:
    {
    if(response)
    {
    new string[145], pID = ReturnPlayerID(inputtext);
    if(!IsPlayerConnected(pID))
    {
    SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist nicht eingeloggt.");
    return 1;
    }
    if(IsPlayerNPC(pID))
    {
    SendClientMessage(playerid, COLOR_GREY, "Das ist kein Spieler, der eingeladene ist ein NPC(Bot).");
    return 1;
    }
    if(Spieler[pID][pFraktion] > 0)
    {
    format(string, sizeof(string), "Der Spieler ist in einer Fraktion:", playerid);
    ShowPlayerDialog(playerid, DIALOG_MEDICC, DIALOG_STYLE_INPUT, "Contropanel: Spieler Invite", string, "Einladen", "Zurück");
    return 1;
    }
    if(Spieler[pID][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist unter Level 3.");
    return 1;
    }
    if(Spieler[pID][pFraktion] > 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist bereits in einer Fraktion");
    return 1;
    }
    format(string, sizeof(string), COLOR_HEX_WHITE"Du wurdest von %s in die Fraktion %s eingeladen.\nKlicke auf "COLOR_HEX_GREEN"Annehmen"COLOR_HEX_WHITE" oder "COLOR_HEX_GREEN"Ablehnen"COLOR_HEX_WHITE".", GetName(playerid), GetFraktionName(Spieler[playerid][pFraktion]));
    ShowPlayerDialog(pID, DIALOG_INVITE, DIALOG_STYLE_MSGBOX, "Fraktions Einladung", string, "Annehmen", "Ablehnen");
    Spieler[pID][pAcceptInvite] = Spieler[playerid][pFraktion];
    format(string, sizeof(string), "Du hast %s in die Fraktion eingeladen.", GetName(pID));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    if(!response)return cmd_controlfrak(playerid);
    }


    Unten im Code:
    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(strfind(l_name,l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }

    SpielerInfo[playerid][pAlter] = cache_get_field_content(0, "Alter", Handle);
    zu:
    SpielerInfo[playerid][pAlter] = cache_get_field_content_int(0, "Alter", Handle);


    Beachte, dass du in Queries nicht Alter schreiben darfst, sondern es mit den Anführungszeichen escapen musst `Alter`, da ALTER ein SQL Befehl ist.