Beiträge von Jeffry

    Wenn du es vor-definierst, dann kannst du es so machen:
    new test[][][testEnum] = { //hier ist der Fehler.
    {1, "NULL", 0},
    {2, "NULL", 0},
    {3, "NULL", 0},
    {4, "NULL", 0},
    {5, "NULL", 0}
    };


    Alternativ so:
    new test[5][3][testEnum] = { //hier ist der Fehler.
    {1, "NULL", 0},
    {2, "NULL", 0},
    {3, "NULL", 0},
    {4, "NULL", 0},
    {5, "NULL", 0}
    };


    Das ist aber beides 1:1 identisch.

    Versuche es so:
    ocmd:name(playerid, params[])
    {
    new str[64], name[MAX_PLAYER_NAME];
    if(!strlen(params)) return SendClientMessage(playerid, -1, "Tippe: /name [Suchbegriff]");
    if(!IsNumeric(params))
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, name, MAX_PLAYER_NAME))
    {
    if(strfind(name, params, true) != -1)
    {
    format(str, sizeof(str), "ID: %d | Spielername: %s", i, name);
    SendClientMessage(playerid, -1, str);
    }
    }
    }
    if(!strlen(str)) SendClientMessage(playerid, 0xFF0000FF, "Kein Spieler gefunden.");
    }
    else
    {
    new pID = strval(params);
    if(GetPlayerName(pID, name, MAX_PLAYER_NAME))
    {
    format(str, sizeof(str), "ID: %d | Spielername: %s", pID, name);
    SendClientMessage(playerid, -1, str);
    }
    else SendClientMessage(playerid, 0xFF0000FF, "Diese ID ist nicht online.");
    }
    return 1;
    }


    Mit IsNumeric:
    stock IsNumeric(const string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
    }

    Füge den Code-Teil von OnPlayerSpawn zusätzlich bei OnVehicleStreamIn ein, nach der Prüfung ob vehicleid die vFahrschulMotorrad ist.

    Den Code von OnPlayerEnterVehicle solltest du nach OnPlayerStateChange mit PLAYER_STATE_DRIVER packen, sonst kommt es zu Fehlern, wenn der Spieler mehrmals "Einsteigen" drückt, bzw. sich beim Einsteigen bewegt und nicht einsteigt.


    Ändere dann außerdem:
    vFahrschulMotorrad = GetVehicleModel(vehicleid);
    zu:
    vFahrschulMotorrad = GetPlayerVehicleID(playerid);

    Das Problem lässt sich an dem Code so nicht nachvollziehen, das passt soweit.
    Es ist aber zu empfehlen, die Variablen zurückzusetzen, da es ein Label mit der ID 0 geben kann, sprich:
    new Text3D:Adminlabel[MAX_PLAYERS] = {Text3D:-1,...};
    Und nach jedem Delete:
    Adminlabel[playerid] = Text3D:-1;

    Das wird nicht klappen, da strcmp nur eindeutige Übereinstimmungen findet, also immer nur den Spieler selbst.


    Versuche es so:
    ocmd:name(playerid, params[])
    {
    new str[64], name[MAX_PLAYER_NAME];
    if(!strlen(params)) return SendClientMessage(playerid, -1, "Tippe: /name [Suchbegriff]");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, name, MAX_PLAYER_NAME))
    {
    if(strfind(name, params, true) != -1)
    {
    format(str, sizeof(str), "ID: %d | Spielername: %s", i, name);
    SendClientMessage(playerid, -1, str);
    }
    }
    }
    return 1;
    }

    @Jeffry Liest der Editor auch als txt Datei ? Weil des ist eine pawn.cfg.txt

    Nein, das würde er nicht erkennen, danke für die Nachfrage. Wenn das der Fall ist, dann geht es natürlich nicht, auf die Bezeichnung hinten habe ich nicht geschaut.


    Es muss eine cfg Datei sein. Textdokument erstellen und speichern unter pawn.cfg.

    stock isPlayerAdmin()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(sInfo[i][alevel] >= 1) return 1;
    }
    }
    return 0;
    }


    if(!isPlayerAdmin()) format(string, sizeof(string),"{FF0000}Es ist kein Admin online!");


    Die Bezeichnung der Funktion ist allerdings nicht ganz sprechend. Besser wäre: isAnyPlayerAdmin.

    Eine Frage habe ich, muss ich für den Bot einen Account erstellen, sprich ihn in die Datenbank einsetzen?

    Nein, das kannst du überspringen lassen, wie du es eingestellt hast.



    Der steht aber immernoch beim Spawn... Er will einfach nicht als Beifahrer sitzen...

    Setzt du den NPC bei OnPlayerSpawn in das Fahrzeug?

    Füge vor updateAtm(id); bei OnPlayerEditObject das hier ein, damit die Koordinaten übertragen werden und das Label geändert wird:
    aInfo[id][a_x] = fX;
    aInfo[id][a_y] = fY;
    aInfo[id][a_z] = fZ;


    Bein OnAtmsLoad, nach updateAtm(id);:
    aInfo[id][a_objectID] = CreateObject(2942, aInfo[id][a_x], aInfo[id][a_y], aInfo[id][a_z], 0.0, 0.0, 96.0);


    Eventuell solltest du auch die Rotationen speichern, sofern die geändert werden.

    [19:35:46] [debug] #0 native fwrite () from samp1337_5211

    Scheint als greifst du mit fwrite auf eine Datei zu, die nicht existiert. Wo genau das ist kann dem Log nicht entnommen werden.


    Erstelle in deinem /pawno/ Ordner bitte mal eine Datei "pawn.cfg" und schreibe dort "-d3" rein (ohne Anführungszeichen).
    Dann öffne die /pawno/pawno.exe und öffne über "Öffnen" deinen Code und kompiliere ihn.


    Starte dann den Server wieder und reproduziere den Fehler. Poste die dann erscheinende Meldung nochmal, eventuell, wenn du es siehst, die entsprechende Zeile Code dazu (bzw. ein paar Zeilen).

    Deinem gelöschten Post habe ich zuvor das hier entnommen:



    CreateObject sollte aus der Funktion raus.
    updateAtm(id)
    {
    new string[128];
    if(aInfo[id][a_text])
    {
    Delete3DTextLabel(aInfo[id][a_text]);
    }
    if(!strlen(aInfo[id][a_id]))
    {
    format(string,sizeof(string), "..:: Bank Automat ::..");
    aInfo[id][a_text]=Create3DTextLabel(string, 0xFFA000FF, aInfo[id][a_x], aInfo[id][a_y], aInfo[id][a_z], 10, 0, 1);
    }
    else
    {
    format(string,sizeof(string), "..:: Bank Automat ::..");
    aInfo[id][a_text]=Create3DTextLabel(string, 0xFFA000FF, aInfo[id][a_x], aInfo[id][a_y], aInfo[id][a_z], 10, 0, 1);
    }
    return 1;
    }


    Und das hier sollte in den Befehl (/createatm):
    aInfo[id][a_objectID] = CreateObject(2942, aInfo[id][a_x], aInfo[id][a_y], aInfo[id][a_z], 0.0, 0.0, 96.0);
    EditObject(playerid, aInfo[id][a_objectID]);


    Bitte nimm dir etwas mehr Zeit und arbeite die Vorschläge sorgfältig durch, so ein System schreibst du ja schließlich nicht in 5 Minuten.