[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
  • Da fehlen zwei Klammern:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Obst", "Apfel\nBirne", "Ok", "Ende");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Gemüse", "Tomate\nGurke", "Ok", "Ende");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Baum", "Fichte\nBuche", "Ok", "Ende");
    }
    }
    return 1;
    }


    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    }
    }
    return 1;
    }
    return 0;
    }

  • Jeffry:


    Hat geklappt, nur funktioniert das ganze nicht so wie ich das möchte.


    Ich gebe ein /items, es öffnet sich die Liste mit "Medicin, Foods etc, klicke auf Medicin dann auf Medkit, nix passiert, auf Bandage, dann öffnet sich "Tomate & Gurke, wobei sich da ja eigentlich die Erklärung öffnen sollte xD


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])



    {
    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Medicin", "Medkit\nBandage", "Ok", "Ende");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Food & Drink", "Tomate\nGurke", "Ok", "Ende");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_LIST, "Tools", "Map\nToolbox", "Ok", "Ende");
    }
    }
    return 1;
    }


    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist die Beschreibung", "Ok", "");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    }
    }
    return 1;
    }
    return 0;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Ich bin davon ausgegangen, dass du das noch änderst, ich kenn ja deine Deklarationen nicht.
    Hier ein Beispiel:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_ITEMS)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_ITEMS_MED, DIALOG_STYLE_LIST, "Medicin", "Medkit\nBandage", "Ok", "Ende");
    case 1: ShowPlayerDialog(playerid, DIALOG_ITEMS_FOOD, DIALOG_STYLE_LIST, "Food & Drink", "Tomate\nGurke", "Ok", "Ende");
    case 2: ShowPlayerDialog(playerid, DIALOG_ITEMS_TOOL, DIALOG_STYLE_LIST, "Tools", "Map\nToolbox", "Ok", "Ende");
    }
    }
    return 1;
    }


    if(dialogid == DIALOG_ITEMS_MED)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist die Beschreibung", "Ok", "");
    case 1: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    case 2: ShowPlayerDialog(playerid, DIALOG_EXPLANATION, DIALOG_STYLE_MSGBOX, "Explanation", "Das ist ein ...", "Ok", "");
    }
    }
    return 1;
    }
    if(dialogid = DIALOG_ITEMS_FOOD)
    {
    //...
    }
    return 0;
    }

  • Mach die Größe des Strings in dem du die Uhrzeit formatierst um 1 größer. ;)
    Ein String mit 5 Zeichen muss 6 groß sein, wegen dem EOS (End Of String).


    Sodele. Ehm.. Ja... Habs probiert:
    new string2[256];
    new hour, minutes;
    GetPlayerTime(playerid, hour, minutes);
    format(string2, 256, "Code RED: %s [%d:%d]", SpielerInfo[playerid][pName], hour, minutes);
    Stringgröße war vorher auf 128. :|

    Trancebase, Dreamweaver und ab geht die Uzi.

  • Poste bitte die GetPlayerTime-Funktion. Liegt dann wohl daran.


    Zwecks der voranstehenden 0 musst du noch
    format(string2, 256, "Code RED: %s [%d:%d]", SpielerInfo[playerid][pName], hour, minutes);
    zu:
    format(string2, 256, "Code RED: %s [%02d:%02d]", SpielerInfo[playerid][pName], hour, minutes);
    machen.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ohja stimmt. Die hab ich nie verwendet, weil ich immer mit Echtzeit arbeite. :wacko:


    new string2[145];
    new hour, minutes;
    GetPlayerTime(playerid, hour, minutes);
    format(string2, sizeof(string2), "Code RED: %s [%02d:%02d]", SpielerInfo[playerid][pName], hour, minutes);


    So sollte es klappen.

  • Wir sind schonmal aufm Weg zur Zielgeraden. Jetzt zeigt er mir 22:00 an sprich die volle Uhrzeit. Nun würde mich noch freuen, wenn die Minuten mit laufen. Sprich wie jetzt nicht nur 23:00 sondern 23:06. Aber da müsste ich höchstwahrscheinlich mit einer eigenen Funktion kommen, oder?


    Wie ist das eigentlich wenn man im Script dieses hier benutzt:


    gettime(hour, minute);


    Welche Zeit bezieht die Funktion? Die Zeit auf dem Rechner vom Spieler? Oder die Serverzeit? 8|


    //EDIT:


    Also so würde es funktionieren:


    new hour, minutes;
    gettime(hour, minutes);


    Stellt sich die Frage, welche Zeit wird hier bezogen?

    Trancebase, Dreamweaver und ab geht die Uzi.

    Einmal editiert, zuletzt von crs0r ()

  • Welche Zeit bezieht die Funktion?


    Die Zeit auf dem Server ;)


    Und wenn du willst, dass das mitläuft einfach einen Timer nutzen und dann die Zeit für alle Spieler aktualisieren oder bzw das TextDraw einfach aktualisieren ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Die Zeit auf dem Server ;)


    Und wenn du willst, dass das mitläuft einfach einen Timer nutzen und dann die Zeit für alle Spieler aktualisieren oder bzw das TextDraw einfach aktualisieren ;)


    mfg. :thumbup:


    Cool, dann ists ja wunderbar so. Wäre doof wenn die Uhrzeit vom Spieler selbst bezogen werden würde, könne man sich ja dann die Uhrzeit beliebig einstellen... Funktioniert nun alles, ich danke euch!

    Trancebase, Dreamweaver und ab geht die Uzi.

  • Was davon sorgt dafür welchen Bereich ich anklicken kann.
    Textdraw1 = TextDrawCreate(325.666656, 398.222229, "Terror");
    TextDrawLetterSize(Textdraw1, 0.664999, 1.765926);
    TextDrawAlignment(Textdraw1, 1);
    TextDrawColor(Textdraw1, -1);
    TextDrawSetShadow(Textdraw1, 0);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawBackgroundColor(Textdraw1, 51);
    TextDrawFont(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetSelectable(Textdraw1, true);
    TextDrawTextSize(Textdraw1 , 50.0, 50.0);

  • Hä also wie jetzt=
    Jeffry:
    Textdraw0 = TextDrawCreate(487.333435, 399.881744, "Antiterror");
    TextDrawLetterSize(Textdraw0, 0.814999, 1.828148);
    TextDrawAlignment(Textdraw0, 1);
    TextDrawColor(Textdraw0, -1);
    TextDrawSetShadow(Textdraw0, 0);
    TextDrawSetOutline(Textdraw0, 0);
    TextDrawBackgroundColor(Textdraw0, 51);
    TextDrawFont(Textdraw0, 0);
    TextDrawSetProportional(Textdraw0, 1);
    TextDrawSetSelectable(Textdraw0, true);
    TextDrawTextSize(Textdraw0 , 487.333435, 399.881744);


    Textdraw1 = TextDrawCreate(325.666656, 398.222229, "Terror");
    TextDrawLetterSize(Textdraw1, 0.664999, 1.765926);
    TextDrawAlignment(Textdraw1, 1);
    TextDrawColor(Textdraw1, -1);
    TextDrawSetShadow(Textdraw1, 0);
    TextDrawSetOutline(Textdraw1, 0);
    TextDrawBackgroundColor(Textdraw1, 51);
    TextDrawFont(Textdraw1, 0);
    TextDrawSetProportional(Textdraw1, 1);
    TextDrawSetSelectable(Textdraw1, true);
    TextDrawTextSize(Textdraw1 , 325.666656, 398.222229);

  • Ich kann es auch nur abschätzen. Probieren musst du es selbst.


    Du nimmst einfach die erste Koordinate, machst die +50 und schreibst das als erstes bei TextDrawTextSize hin. Als zweites dann 20 oder so.


    TextDrawTextSize(Textdraw1 , 375.666656, 20.0);


    Das ist eben eine Probiererei.

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