Beiträge von Jeffry

    Ahh, moment. Ich sehe grade du hast auch ein print hinter die if Abfrage gesetzt. Daher wird der Timer immer gleich gekillt, deshalb wird die 13 auch nicht ausgegeben.


    Entferne bitte alle prints und diese Zeile:
    ReshowTypeDialog(playerid);

    Hmm, also das Problem ist, dass die Variablen nicht angelegt werden können, das ist ein Problem was hin und wieder vorkommt bei PAWN, einen wirklich Grund dafür gibt es aber nicht, denn bei mir klappt es ja.


    Versuche es mal so:
    new g_string[1024];
    stock ReshowTypeDialog(playerid)
    {
    new dialogid, style, caption[64], button1[32], button2[32]; print("ReshowTypeDialog1");
    dialogid = GetPVarInt(playerid, "t_dialogid");print("ReshowTypeDialog2");
    style = GetPVarInt(playerid, "t_style");print("ReshowTypeDialog3");
    GetPVarString(playerid, "t_caption", caption, sizeof(caption));print("ReshowTypeDialog4");
    GetPVarString(playerid, "t_string", g_string, sizeof(g_string));print("ReshowTypeDialog5");
    GetPVarString(playerid, "t_button1", button1, sizeof(button1));print("ReshowTypeDialog6");
    GetPVarString(playerid, "t_button2", button2, sizeof(button2));print("ReshowTypeDialog7");
    ShowPlayerDialog(playerid, dialogid, style, caption, g_string, button1, button2);print("ReshowTypeDialog8");
    return 1;
    }

    Setze den Print bitte mal als erstes in den Timer, nicht nach ganz unten.
    Wenn er dort ausgeführt wird, setze ihn immer weiter runter, bis er nicht mehr ausgeführt wird. Markiere dann die Zeile, die als letztes noch korrekt ausgeführt wird.

    Also ich habe anscheinend GetPlayerName vergessen..

    Unter anderem. Vor allem aber hat das format gefehlt, daher der Absturz, da Platzhalter (%s, %d, ...) nicht in SendClientMessage möglich sind.


    Hier fehlt nach wie vor das format:
    SendClientMessage(playerid,COLOR_GREY,"Du hast %s eine Reparatur anfrage gesendet!");


    Passe das an zu:
    GetPlayerName(pID, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "Du hast %s eine Reparatur anfrage gesendet!", name);
    SendClientMessage(playerid,COLOR_GREY,str);

    SendClientMessage(pID,COLOR_GREY,"Der Spieler %s möchte dir eine Reparatur anbieten.");


    Zu
    new str[145];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "Der Spieler %s möchte dir eine Reparatur anbieten.", str);
    SendClientMessage(pID,COLOR_GREY,str);


    Gleiches Prinzip für diese Nachricht:
    SendClientMessage(playerid,COLOR_GREY,"Du hast %s eine Reparatur anfrage gesendet!");

    eine Funktion hatte womit der Dialog aussah als wenn man gerade "Live" Tippen würde

    Du meinst wahrscheinlich das hier?

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    ([SAMMELTHREAD] Kleine Scripting Fragen)


    Code dazu:

    Nun, mit sizeof wird das ja anscheinend nicht, erhalte mit jeglicher Methode nur Errors.

    Das geht so leider nicht.


    Was du machen kannst ist, das Array bis zum Maximum mit Nullen aufzufüllen.
    new Float:array[][] = {
    {1.0, 2.0, 3.0, 0.0}, // 3 Floats
    {5.0, 6.0, 7.0, 5.0}, // 4 Floats
    //.. usw
    };


    Die Anzahl der Werte pro Zeile kannst du dann mit einer Schleife herausfinden, indem du bis zu sizeof(array[]) zählst, wie viele Zahlen nicht null sind.


    Der Link funktioniert aber bei mir nicht, deshalb die frage

    Nutze das Crashdetect Plugin, nativechecker ist nicht mehr zu empfehlen.
    http://forum.sa-mp.com/showthread.php?t=262796

    Das hat mit den Leerzeichen nichts zu tun, die spielen keine Rolle.


    Das Callback OnPlayerCommandText wird in dem Gamemode wahrscheinlich gar nicht aufgerufen, Grund dafür könnte ein verwendeter Command Prozessor (z. B. zcmd) sein, der die Ausführung verhindert, oder ein Filterscript.

    Kann man die Bools noch weiter kürzen? Will so wenig Ressourcen wie möglich verbrauchen und zeilensparend arbeiten.

    Du könntest es so schreiben:
    if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1260.3502, -1698.7749, 13.2889)) return SendClientMessage(playerid,dunkelrot,"Du bist zu weit entfernt!");
    if(pInfo[playerid][Fraktion] != 1) return SendClientMessage(playerid,dunkelrot,"Du bist kein Polizist!");
    lspdschranke = !lspdschranke;
    MoveObject(LSPDSchranke,1260.3502+(8*_:lspdschranke), -1698.7749, 13.2889,4);
    if(lspdschranke) SendClientMessage(playerid,dunkelgrün,"Schranke geöffnet!");
    else SendClientMessage(playerid,dunkelrot,"Schranke geschlossen!");


    Zeile 3 tauscht praktisch immer den Wert zum Gegenteil (wenn true, dann false und andersherum). MoveObject nimmt die +8 nur dann, wenn das bool true (1) ist. Das "_:" entfernt den "bool" Tag, damit true als 1 interpretiert wird, sonst gibt es einen Tag Mismatch.
    Die Nachrichten sollten klar sein.


    Performance-technisch ändert das aber nicht wirklich was, es wird eher schlechter, da bei MoveObject eine Rechenoperation dazu kommt.
    Zeilen-mäßig hast du natürlich weniger.


    Ganz übertrieben kannst du es auch so schreiben:
    if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1260.3502, -1698.7749, 13.2889)) return SendClientMessage(playerid,dunkelrot,"Du bist zu weit entfernt!");
    if(pInfo[playerid][Fraktion] != 1) return SendClientMessage(playerid,dunkelrot,"Du bist kein Polizist!");
    MoveObject(LSPDSchranke,1260.3502+(8*_:(lspdschranke = !lspdschranke)), -1698.7749, 13.2889,4);
    SendClientMessage(playerid, (lspdschranke) ? (dunkelgrün) : (dunkelrot), (lspdschranke) ? ("Schranke geöffnet!") : ("Schranke geschlossen!"));
    Das ist dann aber nicht mehr auf den ersten Blick lesbar.

    ah ok jetzt geht es hast du vieleicht die ganzen imcludes die der bracuht finde paar nicht

    Stimmt, die Include nutzt das y_hooks, das macht wenig Sinn.


    Mache es wie folgt:
    Füge den Code der in "Hook:paynspray_OnPlayerUpdate(playerid)" steht (Zeile 5 bis 34) in deinem Gamemode in OnPlayerUpdate ein.
    Lösche dann Zeile 1 bis 37 aus der Include und schreibe die Include dann oben in deinen Gamemode hin.

    Dass wenn ich im Gebäude (Interior) bin ich mit der Enter Taste nicht rauskommen kann.

    Sicher, dass die Koordinaten an denen du stehst die richtigen sind?



    Ingame passiert nichts wenn ich den befehl eingebe

    Versuche es so:
    CMD:restart(playerid, params[])
    {
    new time;
    LoginCheck(playerid);
    LevelCheck(playerid, 5);
    if(sscanf(params, "I(0)", time))
    {
    SendClientMessage(playerid, COLOR_RED, "/restart [Restart Timer(optional)");
    return SendClientMessage(playerid, -1, "Tipp: Trage als Timer nichts ein für einen schnellen Restart");
    }
    if(time < 10 && time !=0) return SendClientMessage(playerid, COLOR_RED, "Der Restart kann nicht unter 10min dauern.");
    return 1;
    }
    Ein Restart wird dadurch aber nicht durchgeführt, davon steht ja nichts im Code.
    Wenn du also eine Zahl größer gleich 10 eingibst, passiert logischerweise gar nichts.

    Bei beiden Werten etwas weniger, z.B.:
    pTextHUD[playerid][1] = CreatePlayerTextDraw(playerid,480.000000, 2.000000, "00:00");


    Warum bei Y nur 6 angegeben sind ist mir aber etwas unklar. Versuche einfach mal die Zahlen zu ändern, dann siehst du ja wohin es geht.


    Das Feld ist insgesamt 640x480 groß, darin bewegt sich das Textdraw.
    0/0 ist dabei links oben und 6400/480 ist rechts unten.

    Entschuldige die späte Antwort, ich hatte unter der Woche leider keine Zeit.

    Habe noch ne Frage wie kann ich das so machen wenn ich aus dem taxi der duty ist austeige und ein anderen nehme das da der dialog kommt und der andere taxi wieder zurück spawnt wie kann ich das machen MfG Lui

    Dann musst du den Code hierzu anpassen:
    if(IsVehicleATaxi(vehicleid))
    {
    if(Spieler[playerid][pJob] != 17)
    {
    TextDrawShowForPlayer(playerid,InfoSign);
    PlayerTextDrawSetString(playerid,INFOdraw[playerid][2],"~r~Info:~w~~n~Du besitzt nicht den jeweiligen Job.");
    PlayerTextDrawShow(playerid,INFOdraw[playerid][2]);
    SetTimerEx("HideInfoBox",3000,0,"i",playerid);
    return RemovePlayerFromVehicle(playerid);
    }
    printf("pTaxiDuty: %d", Spieler[playerid][pTaxiDuty]);
    if(Spieler[playerid][pTaxiDuty] == 0)
    {
    Spieler[playerid][pTaxiVeh] = vehicleid;
    ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
    }
    else if(vehicleid != Spieler[playerid][pTaxiVeh])
    {
    SetVehicleToRespawn(Spieler[playerid][pTaxiVeh]);
    Spieler[playerid][pTaxiVeh] = vehicleid;
    ShowPlayerDialog(playerid, DIALOG_TAXIPICE, DIALOG_STYLE_INPUT, "{FFFF00}Taxi - Preis festlegen", "{FFFFFF}Lege den Preis für die Taxifahrt fest:", "Ok", "Abbrechen");
    }
    }
    Im enum noch "pTaxiVeh" aufnehmen.


    EDIT:
    Habe den Code nochmal ausgebessert, bitte so verwenden.