Beiträge von Artus

    Code
    GetPlayerPos(playerid,x,y,z);
    GetPlayerFacingAngle(playerid,r);
    carInfo[i][car_x] = x;
    carInfo[i][car_y] = y;
    carInfo[i][car_z] = z;
    carInfo[i][car_r] = r;

    Vielleicht möchtest du noch die Variablen x, y, z & r rausschmeißen und direkt in die Zielvariablen speichern.
    Das macht den Code übersichtlicher und benötigt weniger Speicher. :)



    Code
    GetPlayerPos(playerid, carInfo[i][car_x], carInfo[i][car_y], carInfo[i][car_z]);
    GetPlayerFacingAngle(playerid, carInfo[i][car_r]);


    Und vielleicht möchtest du statt der Spielerposition auch die Fahrzeugposition speichern:



    Code
    GetVehiclePos(vID, carInfo[i][car_x], carInfo[i][car_y], carInfo[i][car_z]);
    GetVehicleZAngle(vID, carInfo[i][car_r]);

    Das neuste Plugin ist das beste und performanteste Plugin.
    Ein Tutorial für den Anfang deines Selfmade samt Einrichtung von MySQL findest du hier:
    [jTuT] MySQL R41 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)


    Wo hast du das gehört und mit welcher Begründung?Meistens sitzt das Problem nämlich vor dem Bildschirm.

    Ich habe mir das vor einigen Tagen nach diesem Tutorial eingerichtet. Klappt super! R41 läuft bei mir ohne Probleme. Wüsste nicht was dagegen sprechen sollte. :)

    Setzt du spDaten[playerid][LoggedIn] beim Offline gehen auch wieder Zurück ?
    Weil die Abfrage stimmt dann nicht.

    ResetSpieler wird einmal bei OnPlayerDisconnect, zur Sicherheit nochmal bei OnPlayerConnect und bei OnGameModeExit für jeden Spieler aufgerufen und setzt spDaten[playerid][LoggedIn] auf 0.


    Ich füge mal ein else mit SendClientMessage dahinter und gucke ob das ausgeführt wird. --> Ergebnis: SendClientMessage wird NICHT ausgeführt!


    Habe ein SendClientMessage vor den Query gesetzt. Dieses wird ausgeführt.... Das heißt es muss was mit dem Query nicht stimmen...


    Habe das Problem gefunden und gelöst. Danke an @reaL.

    Ich habe folgendes Problem:


    Ich connecte als nicht registrierter User und das Script arbeitet bis ich in OnPlayerRequestClass bin. Dort passiert nichts weiter. Selbst SendClientMessage kommt nicht an. Wo liegt der Fehler? Ich habe es nach dem MySQL-Tutorial hier im Forum gemacht.


    Du musst die Werte entweder mit einem #define deklarieren, oder direkt in den Case als Integer schreiben, also zum Beispiel
    case 1:


    Eine Variable darf dort nicht stehen.


    Für Variablen nutze if.


    Ja das weiß ich, wusste nur nicht ob es da nicht vielleicht einen Trick gibt, da die Variablen ja dynamisch sind und auch nicht aufeinanderfolgend sind.


    Aber danke :)

    Großes Dankeschön an dich :) Habe ja erst wieder angefangen. Bin alle Schleifen nochmal durchgegangen. Der Index 0 wird jetzt genutzt, sodass jetzt auch wirklich 25 Jobs & Checkpoint nutzbar sind.


    ich weiß nicht, wie ich auf die 5 gekommen bin. ^^ Wurde aber gefixt.


    Sollten dir weitere Optimierungen auffallen bitte sofort posten. :)


    Werde das Script nochmal durchgehen und dann einfügen.

    JobDaten[jobid][cpTextLabel] ist ein Integer. Der Fehler trat auf, als ich "JobDaten[jobid][cpTextLabel] = " davorgeschrieben habe.

    Code
    warning 213: tag mismatch


    JobDaten[jobid][cpTextLabel] = Create3DTextLabel(str, 0xFFFF00FF, JobDaten[jobid][cpPickupPosX], JobDaten[jobid][cpPickupPosY], JobDaten[jobid][cpPickupPosZ], 50, 0);

    Super geiles Design erstmal :)


    Einen Verbesserungsvorschlag hätte ich aber. Auf der rechten Seite finde ich, dass sich "Itemshop", "Vote" und "Forum" zu wenig voneinander abgrenzen und das der Anmeldebutton aufgrund des Designs ein bisschen unscharf wirkt.


    Trotzdem mega gut :)

    Hallo,
    bei einem von meinen Befehlen kommt immer: Server Unknown Command
    ich weiß nicht woran das liegt. Vielleicht bin ich auch nur ein bisschen blind. Achja, der Befehl wird trotzdem ohne Probleme ausgeführt.


    Hier ist der Befehl:


    ocmd:starten(playerid)
    {
    for(new i=1; i <= MAX_JOBS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3, JobDaten[i][cpPickupPosX], JobDaten[i][cpPickupPosY], JobDaten[i][cpPickupPosZ]))
    {
    spJobDaten[playerid][spAktiv] = true;
    spJobDaten[playerid][spJobID] = i;
    spJobDaten[playerid][spJobVehicleID] = CreateVehicle(JobDaten[i][cpVehicleModel], JobDaten[i][cpVehiclePosX], JobDaten[i][cpVehiclePosY], JobDaten[i][cpVehiclePosZ], JobDaten[i][cpVehiclePosA], JobDaten[i][cpFarbe1], JobDaten[i][cpFarbe2], -1);
    PutPlayerInVehicle(playerid, spJobDaten[playerid][spJobVehicleID], 0);
    spJobDaten[playerid][spCheckpoint] = 1;
    SetPlayerCheckpoint(playerid, JobCheckpoint[spJobDaten[playerid][spJobID]][1][PosX], JobCheckpoint[spJobDaten[playerid][spJobID]][1][PosY], JobCheckpoint[spJobDaten[playerid][spJobID]][1][PosZ], 4);
    }
    }
    return 1;
    }

    Mein Problem ist, dass das Fahrzeug nicht erstellt wird.


    Das hier soll ausgeführt werden bzw. wird ausgeführt. Debug-Nachrichten geben alles gute Daten aus bis auf die VehicleID. Dort wird als ID "65535" ausgegeben.


    Woran könnte es liegen? Hier einmal der Part, welcher ausgeführt wird.


    Edit1: Beim Compilieren keine Warnings, Error oder ähnliches. ^^


    case DIALOG_FREEZE:
    {
    if(response)
    {
    if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid, DIALOG_FREEZE, DIALOG_STYLE_INPUT, "Freeze (Millisekunde)", "Wie lange soll der Spieler bei jedem Checkpoint gefreezt werden?\n(in ms)\nFalls er nicht gefreezt werden soll tippe '0'.", "Weiter", "");
    if(IsNumeric(inputtext))
    {
    Job[Freeze] = strval(inputtext);

    new debugs[128];
    format(debugs, 128, "Freeze: %i", Job[Freeze]);
    SendClientMessage(playerid, 0xFFFF00FF, debugs);

    new Float:X, Float:Y, Float:Z, Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);

    format(debugs, 128, "X: %f, Y: %f, Z: %f, A: %f", X, Y, Z, A);
    SendClientMessage(playerid, 0xFFFF00FF, debugs);

    cvid = CreateVehicle(Job[VehicleModel], X, Y, Z, A, Job[Farbe1], Job[Farbe2], -1);
    PutPlayerInVehicle(playerid, cvid, 0);

    format(debugs, 128, "VID: %i", cvid);
    SendClientMessage(playerid, 0xFFFF00FF, debugs);

    Fortschritt = 1;
    SendClientMessage(playerid, 0xFFFF00FF, "Fahre nun zu der Spawn-Position des Fahrzeuges.");
    SendClientMessage(playerid, 0xFFFF00FF, "Tippe dann /vsave");
    }
    }
    else ShowPlayerDialog(playerid, DIALOG_FREEZE, DIALOG_STYLE_INPUT, "Freeze (Millisekunde)", "Wie lange soll der Spieler bei jedem Checkpoint gefreezt werden?\n(in ms)\nFalls er nicht gefreezt werden soll tippe '0'.", "Weiter", "");

    Danke :) So war es vorher bei mir. Werde es morgen früh umgestalten und hoffen, dass ich es hinbekomme. :) Gute Nacht. ^^
    public OnFilterScriptInit()
    {
    for(new i = 1; i <= 25; i++)
    {
    new string[16], save[128], idx;
    format(string, sizeof(string), "%i.txt", i);
    if(!fexist(string))
    {
    continue; // Wenn die Datei nicht existiert wird i erhöht.
    }
    new File:job = fopen(string, io_read); // Öffnet die Datei
    if(job) // Wenn die Datei erfolgreich geöffnet wurde
    {
    switch (i)
    {
    case 1: fread(job, JobDaten[i][cpJobID]);
    case 2: fread(job, JobDaten[i][cpPickupID]);
    case 3:
    {
    fread(job, save);
    JobDaten[i][cpPickupPosX] = floatstr(strtok(save, idx));
    JobDaten[i][cpPickupPosY] = floatstr(strtok(save, idx));
    JobDaten[i][cpPickupPosZ] = floatstr(strtok(save, idx));
    }
    case 4: fread(job, JobDaten[i][cpVehicleModel]);
    case 5:
    {
    fread(job, save);
    JobDaten[i][cpVehiclePosX] = floatstr(strtok(save, idx));
    JobDaten[i][cpVehiclePosY] = floatstr(strtok(save, idx));
    JobDaten[i][cpVehiclePosZ] = floatstr(strtok(save, idx));
    JobDaten[i][cpVehiclePosA] = floatstr(strtok(save, idx));
    }
    case 6: fread(job, JobDaten[i][cpGeld]);
    case 7..(MAX_CPS+6):
    {
    for (new x=1; x<= MAX_CPS; x++)
    {
    fread(job, save);
    JobCheckpoint[i-6][x][PosX] = floatstr(strtok(save, idx));
    JobCheckpoint[i-6][x][PosY] = floatstr(strtok(save, idx));
    JobCheckpoint[i-6][x][PosZ] = floatstr(strtok(save, idx));
    }
    }
    }
    fclose(job); // Schließt die Datei
    }
    AddStaticPickup(JobDaten[i][cpPickupID], 1, JobDaten[i][cpPickupPosX], JobDaten[i][cpPickupPosY], JobDaten[i][cpPickupPosZ]);
    new str[128];
    format(str, sizeof(str), "/starten\nFahrzeug: %s", GetVehicleName(JobDaten[i][cpVehicleModel]));
    Create3DTextLabel(str, 0xFFFF00FF, JobDaten[i][cpPickupPosX], JobDaten[i][cpPickupPosY], JobDaten[i][cpPickupPosZ], 30, 0);
    }
    return 1;
    }

    Du bist der größte Schatz. ^^ :) Danke.


    Habe erst wieder angefangen mit dem Scripten und tue mich noch ein bisschen schwer :D



    Edit1:


    Tut mir Leid, aber ich bin einfach zu blöd dafür. :D


    Eine Beispieldatei:



    1. Zeile ist die ID (auch Name der txt)
    2. Zeile ist die Pickup ID
    3. Pickup-Koordinaten
    4. Fahrzeug-Model
    5. Fahrzeug-Spawn
    6. Testzahl beim Schreiben der Datei :D
    7+ Zeilen. Checkpoint-Koordinaten



    ich schaffe es nicht. die ersten Zeilen sollen in ein Array.
    Die Checkpoints hingegen sollen in ein anderes Array.


    Beide sozusagen mit der ID 5.


    Bei der nächsten Datei (6.txt) sollen alle Informationen in die Arrays bei 6 eingespeichert werden.


    Zusatzinfo:


    1. Array [ID][blabla] --> also ID wäre 5 und blabla halt pickupid, pickup-koordinaten usw.
    2. Array[ID][Checkpoint] [blabla] -->ID wäre auch 5, Checkpoint ist halt der wievielte es ist und blabla halt die XYZ-Positionen