[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
  • Jeffry:


    Ich hatte das zuerst hinbekommen, dann einen Fehler eingebaut und alles gelöscht und einfach deinen Code kopiert doch jetzt kriege ich viele Erros, hab schon einige weggemacht, doch die hier verstehe ich nicht und der Fehlerklärbar hilft da auch nicht bzw es gibt's da keine Erklärung für.


    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(494) : warning 209: function "OnDialogResponse" should return a value
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(494) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(496) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(498) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(500) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(501) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(502) : error 010: invalid function or declaration
    C:\Users\Dave\Desktop\Legends never Die [LnD]\gamemodes\LegendsneverDie.pwn(505) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    7 Errors.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hast du es auch korrekt in das OnDialogResponse Callback geschrieben?
    Falls du es nicht behoben kommst, poste bitte den Code der zum OnDialogResponse Callback gehört.


    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;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • 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 ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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);

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