[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link

  • case DIALOG_TAXI:
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(strval(inputtext) < 1 || strval(inputtext) > 200)
    {
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), COLOR_HEX_WHITE"Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen\nDer Preis muss mindestens 1$ und maximal 200$ sein.");
    ShowPlayerDialog(playerid, DIALOG_TAXI, DIALOG_STYLE_INPUT, "Taxi Company", DialogString, "Weiter", "Aussteigen");
    }
    return 1;
    }
    if(listitem == 1)
    {
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    }



    Hey, ich hab noch eine frage


    Wen der Spieler sich jetzt reinsetzt und 200$ z.b angibt soll sich der3D Textlabel in:


    Taxi Company\n\nFahrer: %s/nKosten: %d


    Der Mindestpreis für Taxis liegt bei 1$ und max. 200$.


    -> Hat der Spieler ein Preis angegeben und er hat ein Fahrgast muss der Fahrgast das angegebene Geld am ende zahlen z.b 100$ wird das immer alle 10 Sekunden steigen auf 200 dann 300 usw
    -> Der Spieler muss nach dem aussteigen das geld was angerechnet wurde bezahlen (bekommt der Taxifahrer bar auf die hand) (Automatisch)
    -> Spieler sollte Gelbe Farbe bekommen. (Taxi Fahrer)
    -> Sollte der Spieler das Taxi verlassen hat der Spieler 2 Minuten Zeit das er wider ins Taxi steigt sonst respawnt es und er ist als Taxifahrer nicht mehr ihm Dienst. (Taxi Fahrer)
    -> Spieler erhält wider die weiße farbe (sobald der Dienst beendet ist) (Taxi Fahrer)

  • Und wo genau liegt dein Problem jetzt?

    "Wie man das erstellt also:"


    -> Preis eingeben das sich der Label updatet (Taxi Company\n\nFahrer: \nKosten:)
    -> Das der Taxifahrer Gelbe Farbe bekommt und auf der Map zusehn ist.
    -> Das der Kunde den angegeben Preis zahlen muss heißt Taxifahrer gab 100$ an erhöht sich alle 10 Sekunden so muss der Spieler beim aussteigen z.b 200 Zahlen weil die fahrt nur 10 Sekunden dauerte.
    -> Explodiert das Fahrzeug (Wird der Dienst beendet.
    -> Steigt er nach 2min nicht ein (Wird der Dienst beendet.

  • -> Preis eingeben, per was? Chat, Dialog?
    Dann halt dort einfügen wo du es haben willst, abfragen ob der Spieler in einem Taxi sitzt, und dann Update3DTextLabel?


    -> SetPlayerColor


    -> Timer, der auf den Spieler der als Beifahrer drin sitzt anwenden, und ihm immer alle 10 Sekunden auf eine Variable die Summe vom Taxi-Fahrer hinzufügen.


    -> Erstell eine Variable die sagt, dass der Spieler als Taxifahrer im Dienst ist, bei OnVehicleSpawn fragst du ab ob der Spieler in dieser vehicleid "angemeldet" war als Taxifahrer, sprich du lässt zusätzlich, sobald der Spieler ein Taxi verwendet in einer Variable dem Spieler die vehicleid vom Taxi geben.


    -> Selbe wie oben, musst nur da wo du die Taxis erstellst, das respawn_delay auf 120 setzen.

  • -> SetPlayerColor -> Erledigt
    -> Selbe wie oben, musst nur da wo du die Taxis erstellst, das respawn_delay auf 120 setzen. -> Erledigt



    -> Das ist der Dialog wen der Spieler ins Taxi Steigt
    -> Preis eingeben, per was? Chat, Dialog? -> Dialog

    if(IsVehicleATaxi(vehicleid))
    {
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), COLOR_HEX_WHITE"Du kannst nun den Preis festlegen, den die Fahrgäste jede 10 Sekunden bezahlen\nDer Preis muss mindestens 1$ und maximal 200$ sein.");
    ShowPlayerDialog(playerid, DIALOG_TAXI, DIALOG_STYLE_INPUT, "Taxi Company", DialogString, "Weiter", "Aussteigen");
    return 1;
    }



    -> Timer, der auf den Spieler der als Beifahrer drin sitzt anwenden, und ihm immer alle 10 Sekunden auf eine Variable die Summe vom Taxi-Fahrer hinzufügen. (Verstehe ich nicht)
    -> Erstell eine Variable die sagt, dass der Spieler als Taxifahrer im Dienst ist, bei OnVehicleSpawn fragst du ab ob der Spieler in dieser vehicleid "angemeldet" war als Taxifahrer, sprich du lässt zusätzlich, sobald der Spieler ein Taxi verwendet in einer Variable dem Spieler die vehicleid vom Taxi geben. (Verstehe ich nicht)

  • Hey,



    ich denke das gab es schonmal, aber wie ist es möglich ein /help System zu machen?



    Man soll mit /help [suchtext] nach etwas suchen können, wie auf rgn..
    Ich weiß, dass die mit stichworten und ner Datenbank arbeiten, leider kein plan, wie ich das umsetzen soll..



    Beispiel:


    /help drogen


    Dann im dialog:


    Artikel 15: Drogensystem 1
    Artikel 19: Drogensystem2
    Usw.



    Würde man jetzt aber direkt die artikel nummer angeben so würde er auch direkt den Artikel anzeigen...




    Hätte jemand für mich ein Code Schnipsel oder so?
    Wäre cool :)


    Ansonsten nur eine Anregung wie man sowas machen könnte



    Gruß

    Mit freundlichen Grüßen,


    Keslo

    Einmal editiert, zuletzt von Keslo ()

  • Kann mir einer sagen wie ich ein Befehl mache der so ausschaut?


    /speak Frank


    Das dann ein Dialog zB kommt, und wenn ich /speak Anna mache, dann ein andere Dialog.
    Nutze ocmd, weiß leider nicht wie ich dies machen soll.


    MfG.

  • Naja...so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ist es möglich eine Rundung als TextDraw zu machen?

    Ja, ist möglich mit Sprites zum Beispiel :)


    Edit2:


    Hi, erstelle 2 Labels pro Spieler und update sie und zeige eine Zeit an. Davon geht aber immer ein Timer in den negativen Bereich, wenn ID 1 zuerst die Labels erstellt.
    Woran kann das liegen, Fehler im Timer oder beim updaten von den Labels?


    Label (nur eins davon)


    new Text3D:bikelabel[MAX_PLAYERS];



    bikelabel[playerid] = CreateDynamic3DTextLabel(""#BikeTime"{FFFFFF}s\nleft", COLOR_RED, x, y, z, 50.0, INVALID_PLAYER_ID, createdBike[playerid], 0,-1,-1,-1,50.0);



    Timer:



    forward BikeCountDown(playerid);
    public BikeCountDown(playerid)
    {
    new str[144];
    if(BikeCD[playerid] <= BikeTime)
    {
    BikeCD[playerid]--;
    format(str, sizeof(str),"%d{FFFFFF}s\nleft", BikeCD[playerid]);
    UpdateDynamic3DTextLabelText(bikelabel[playerid], COLOR_RED, str);



    }



    if(BikeCD[playerid] == 0)
    {
    BikeCD[playerid] = BikeTime;
    //KillTimer(DestroyBikeTimer[playerid]);
    KillTimer(BikeLabelUpdate[playerid]);
    DestroyDynamic3DTextLabel(bikelabel[playerid]);
    return 1;
    }



    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

    2 Mal editiert, zuletzt von JustMe.77 ()

  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Gelöst. Habe i genommen musste aber ID nehmen ().
  • Beitrag von Kisa ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Mein Fehler! ().
  • Mit

    Also, wenn ich den Text richtig verstanden habe...hat er es bereits geschafft diese Log Dateien zu speichern..und möchte sie nun auslesen & in einem Dialog anzeigen.


    So ginge das:


    C
    new File:f = fopen("log.txt",io_read);
    if(!f) return 1; //Keine Berechtigung
    new buffer[32], stack[512];
    while(fread(f, buffer))
    {
        strcat(stack, buffer);
    }
    fclose(f);
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_MSGBOX,"Log",stack,"Bestätigen","");

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Huhu,



    wie ist es möglich eine Schleife nach Spielern abzufragen?




    for(new i=0; i<MAX_PLAYERS; i++)


    Das ist mir bewusst..



    Aber nun konkreter:


    Ich will ein System machen, dass zb man nur etwas machen kann, wenn zb 2 Cops online sind,


    wie frage ich diese 2 cops ab?

    Mit freundlichen Grüßen,


    Keslo

  • wie frage ich diese 2 cops ab?

    Naja..


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Kaliber:
    Das Funktioniert Super Dankeschön aber wie kann ich das machen das in dem Dialog nur der Name steht und wenn man draufklickt die Nachricht kommt die er gesendet hat und dann der eintrag Gelöscht wird ?


    So sieht die Datei aus


    Code
    [04.12.2016 14:31:04]reaL.: Test
    [04.12.2016 14:33:56]reaL.: Test2


    Code
    new File:f = fopen("logs/Bugreports.txt",io_read);
    		if(!f) return 1; //Keine Berechtigung
    		new buffer[32], stack[512];
    		while(fread(f, buffer))
    		{
    		    strcat(stack, buffer);
    		}
    		fclose(f);
    		ShowPlayerDialog(playerid,DIALOG_BUSREPORTS,DIALOG_STYLE_LIST,"Log",stack,"Bestätigen","");
  • Danke dir, funktioniert einwandfrei :) Ohne die beschriebene Nutzung hätte ich es nicht hinbekommen :D




    Aber eine Frage hätte ich noch:


    Könnte ich theoritisch alle meine if abfragen
    for(new i=0; i<MAX_PLAYERS; i++)


    zu
    for(new i=GetPlayerPoolSize(); i!=-1; i--) //Ist wie deine Schleife..nur schneller :D Da sie nicht 500 spieler durchloopt sondern nur bis zur höchsten spielerid


    ändern?


    Oder gibt es tatsächlich irgendwo ein unterschied wo man das obere benutzen könnte, es ist ja langsamer?


    @Kaliber

    Mit freundlichen Grüßen,


    Keslo

  • wenn man draufklickt die Nachricht kommt die er gesendet hat

    Ehh...wo hast n die Nachricht gespeichert..das wäre irgendwie relevant xD
    Also..Variable..oder Datei..oder wo xD


    Oder gibt es tatsächlich irgendwo ein unterschied wo man das obere benutzen könnte, es ist ja langsamer?

    Das könntest du :)


    Theoretisch wäre foreach noch besser :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen