Beiträge von Jeffry

    Also die vier Marker von BSN und Stadthalle werden alle erstellt und auch die Labels dazu. An dem Code liegt es nicht.
    Wenn du es unter OnGameModeInit erstellen lässt, dann poste das ganze OnGameModeInit mal und markiere die Zeilen, die nicht erstellt werden.

    Da du mir auch noch eine PM geschrieben hast zwecks deines Debug-Versuches, kannst du mir die Ergebnisse davon und den Code mit deinem Debug Zeugs hier mal posten? Dann kann ich das selbst prüfen.
    Also server_log vom Debug und den Code dazu.

    Die GangZone Funktionen sind in der include a_samp.inc mit native's deklariert. Du benötigst keine weiteren Includes um mit den Standard-Funktionen der GangZones zu arbeiten.
    Wenn du ein weiteres Include dafür hast, dann sind da vielleicht andere Funktionen dabei. Es wäre gut, falls du noch mehr wissen musst, wenn du dieses Include zeigst, welches du meinst.

    palwal: Das ist so nicht richtig. ppID ist die Spieler-ID, respektive der playerid. Die playerid ist immer ein Integer und kein String. Der Code stimmt eigentlich, ich bin immer noch der Meinung, dass sscanf das Problem ist.


    Füge mal das ein:
    new ppID;
    printf("1->playerid=%d ppID=%d params=%s", playerid, ppID, params);
    if(sscanf(params,"u",ppID))return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Verhaften [Spielername]");
    printf("2->playerid=%d ppID=%d params=%s", playerid, ppID, params);


    Falls du nicht weißt wie:

    Spoiler anzeigen
    ocmd:verhaften(playerid,params[])
    {
    if(SpielerInfo[playerid][sMember] == 1 || SpielerInfo[playerid][sMember] == 2)
    {
    new ppID;
    printf("1->playerid=%d ppID=%d params=%s", playerid, ppID, params);
    if(sscanf(params,"u",ppID))return SendClientMessage(playerid, COLOR_WHITE, "{19FF00}Verwende: {0041FF}/Verhaften [Spielername]");
    printf("2->playerid=%d ppID=%d params=%s", playerid, ppID, params);

    new string[128];
    if(GetDistanceBetweenPlayers(playerid, ppID) < 4)
    {
    SetPlayerCuffed(ppID, true);
    }
    else
    {
    format(string, sizeof(string), "%s befindet sich nicht in deiner Nähe!", GetName(ppID));
    return 1;
    }

    Spoiler anzeigen
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(GetDistanceBetweenPlayers(playerid, i) < 4)
    {
    format(string, sizeof(string), "%s wurde von Polizist %s verhaftet!", GetName(ppID), GetName(playerid));
    SendClientMessage(ppID, COLOR_DARKRED, string);
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_DARKRED, "Du bist kein LSPD/SEK Mitglied!");
    return 1;
    }
    }

    Dann schmeiß die ganze Include raus und nimm das:


    new p_AFK[MAX_PLAYERS];
    new p_LastUpdate[MAX_PLAYERS];


    public OnPlayerUpdate(playerid)
    {
    p_LastUpdate[playerid] = GetTickCount();
    p_AFK[playerid] = 0;
    return 1;
    }


    forward p_AFK_Check();
    public p_AFK_Check()
    {
    new t = GetTickCount();
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && p_AFK[i] == 0 && p_LastUpdate[i] < t-1000)
    {
    p_AFK[i] = 1;
    }
    }
    return 1;
    }


    OnGameModeInit:
    SetTimer("p_AFK_Check", 1000, 1);



    #define IsPlayerOnDesktop(%0) p_AFK[%0]

    Das bedeutet, dass dein OnPlayerUpdate nicht korrekt aufgerufen wird.
    Füge das mal bei OnPlayerUpdate in deinem GM ein, und zwar an erster Stelle:


    printf("Called ID %d", playerid);


    und das ganz unten:
    printf("Processed ID %d", playerid);


    Wird das beides schön geprintet?


    Wenn nein, hast du Filterscripts am laufen?

    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 431) return SendClientMessage(playerid,Rot,"Du sitzt in keinem Bus!");


    Die Abfrage gehört aus dem GetVehicleModel raus.


    if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 431)

    Das Include ist extrem schlecht geschrieben und dazu noch fehlerhaft.


    Ändere im Include dieses public zu:
    public Desk_SecondTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i ++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(GetPVarInt(i, "DeskCheck") == 1)
    {
    SetPVarInt(i, "DeskCheck", 0);
    SetPVarInt(i, "AFKTime", 0);
    }
    else
    {
    SetPVarInt(i, "AFKTime", GetPVarInt(i, "AFKTime")+1);
    }
    }
    return true;
    }


    Der Timer funktioniert sonst immer nur für den Spieler, der die kleinste ID hat.



    Leider kann ich nur raten was der Fehler ist, da du uns ja nicht sagst, was genau falsch ist. Wird AFK immer angezeigt, oder gar nicht, ...

    Nächstes mal bitte gleich alles wichtige im ersten Post posten, dann brauchen wir nicht paar mal nachfragen. :)


    Da das Speichern ja anscheinend klappt, liegt das Problem möglicherweise bei den lokalen Variablen, da der erste Buchstabe beim Laden verloren geht.
    Poste bitte das enum und die dazugehörige Variable bzw. das Array DrugSys.

    Wie stehen die Daten in der Datei?
    Und was soll stattdessen ausgelesen werden? Kannst du das anhand einem Beispiel zeigen, mit genauen Daten und dem was in der Datei steht.

    Welches ist die Variable, bzw. das Array dazu, in dem zu für alle Fahrzeug-MODELLE (!) die Daten gespeichert hast? Also nicht für die IDs, sonder für das Modell, das sind genau 211 an der Zahl.

    Dann hast du es bereits vorher definiert, vielleicht global.
    Räume bitte erst mal deine ganzen Warnings auf, die können auch Fehler verursachen. Wenn das Problem dann immer noch besteht, und du keine weitere Definition von sscanf in den includes gefunden hast, dann poste bitte nochmal den Befehl und zwar mit sscanf, so wie du ihn hast und er nicht tut.

    Mit sizeof vom enum-Name funktioniert es nicht.


    So kannst du es machen, ohne dass es Fehler gibt:
    enum Test {
    meinInt,
    Float:meinFloat,
    meinString[10],
    Text3D:meinLabel,
    Text:meinTD
    }
    new Variable[MAX_PLAYERS][Test];


    public OnFilterScriptInit()
    {
    new playerid = 0;
    format(Variable[playerid][meinString],10,"Hi");
    printf("meinString: %s",Variable[playerid][meinString]);
    for(new j = 0; j < sizeof(Variable[]); j++)
    {
    Variable[playerid][Test:j] = 0;
    printf("Teil %d gelöscht.", j);
    }
    printf("meinString: %s",Variable[playerid][meinString]);
    print("Passt alles.");
    return 1;
    }


    Wie du siehst, stürzt nichts ab:


    Warum sind das 14 Teile?
    Darum:
    enum Test {
    meinInt, //0
    Float:meinFloat, //1
    meinString[10], //2,3,4,5,6,7,9,8,10,11
    Text3D:meinLabel, //12
    Text:meinTD //13
    }

    GetDistanceBetweenPlayers muss vor SendPlayerMessage definiert werden. Wie die Warnung schon sagt: "Funktion mit einer Tag-Rückgabe ist vor der Definition benutzt".


    Also erst GetDistanceBetweenPlayers im Code stehen haben, dann SendPlayerMessage.


    stock Float:GetDistanceBetweenPlayers(...)
    {
    //Code...
    }


    //...code


    stock SendPlayerMessage...

    Jetzt hast du ja hier nochmal einen Thread auf gemacht wegen sscanf.
    Schau doch mal in die includes, ob da in einer "sscanf" als Funktion deklariert ist. Früher war sscanf nich als Plugin gemacht, sondern als ganz normaler Code-Schnipsel. Das könnte der Grund sein, warum immer alles falsch ausgegeben wird, da die zwei sich nicht vertragen.


    Wenn das auch nicht der Fall ist kann ich dir nur dazu raten sscanf in die Tonne zu treten, kann man eigentlich jedem nur raten.