Beiträge von Douq

    format(string, sizeof(string), "Im Jackpot befinden sich %d$.\nHeute ist die Gewinnernummer %d.", Others[Lotto], lottonumber);SendClientMessageToAll(COLOR_WHITE, string);


    Hey,


    Ich hab versucht \n ~n~ das die Heute ist die Gewinnernummer %sd. in die Nexte zeile angezeigt wird warum nimmt er das nicht?

    Musst du wohl oder übel zwei Nachrichten verschicken, die Zeichen funktionieren nämlich bei SendClientMessageToAll() nicht.

    Deine Verlinkung führt auf dieses Thema zurück :D.


    Es gibt mehrere Varianten, um den Inhalt zu übergeben, Beispiel:


    Code
    strins(GutscheinCreate[playerid], inputtext, 0);

    Empfehle dir in diesem Fall diese Variante, sofern GutscheinCreate vorher leer ist. Solltest du GutScheinCreate nie leeren und der alte Wert dort noch drinnen stehen, kannst du entweder den Inhalt per strdel() löschen, oder direkt per format() den Wert setzen:

    Code
    format(GutscheinCreate[playerid], sizeof(GutscheinCreate[]), inputtext);

    Ja, per zwei globale Variablen, Beispiel wäre:


    Code
    new DialogTemp[MAX_PLAYERS][50];
    new DialogTempIndex[MAX_PLAYERS];

    Dann innerhalb des Schleifenrumpfs:

    Code
    DialogTemp[playerid][DialogTempIndex[playerid]++] = i;


    Vor dem Schleifenrumpf setzt du dann DialogTempIndex = 0.
    Dann kannst du innerhalb OnDialogResponse auf die ID per


    Code
    new id = DialogTemp[playerid][listitem];

    zugreifen. Die 50 kannst du beliebig ändern, je nach dem wie viele rows du innerhalb deines Dialogs anzeigen wirst.

    Mit strlen() lässt du dir die string-Länge zurück geben. Daher zeigt er dir bisher immer an, wie viele Zeichen du angegeben hast, was ja nicht dein Wunsch ist :D. Du kannst ganz einfach inputtext verwenden, wenn du dir dein Text ausgeben lassen möchtest:


    Code
    format(rest2, 128, "Code: %s", inputtext);
    SendClientMessage(playerid, F_Red, rest2);

    Entweder du machst es dann wie havok beschrieben hat, oder du nutzt statt strcmp, strfind:



    Code
    if(strfind(params, "get", true) != -1)

    Führ bitte einmal diesen Code aus und gib uns die Daten, die im serverlog stehen.

    Füg zwischen Zeile 21 und 22 eine { hinzu.

    Hallo,


    einfach unter Zeile 8 folgenden Code setzen:


    Code
    printf("Inhalt von befehl: %s", befehl);


    Dann das Ergebnis bitte hier zeigen.

    Umgangssprachlich wirds gerne ID-Verschiebung genannt. Du musst das Label zerstören, wenn du auch das Fahrzeug zerstörst, weil Fahrzeug-IDs wieder genutzt werden und somit das Label am neuen Fahrzeug automatisch attached wird.

    Wenn es funktioniert wenn du es manuell setzt, scheint wohl bei der Übermittlung der Daten zur Datenbank ein Fehler aufzutreten. Zeig mal unter welchen Bedingungen du die Fahrzeug-Daten speicherst und wie du es tust.

    Beispiel 1 wäre folgendes:


    Code
    format(mvstring,800,"%s%s ( ID: %d ) Position: %s, Restliche Zeit: %d\n",mvstring,GetName(i),i,LocationZone,PlayerInfo[i][pTotTime]);


    und um den Namen dann zu ermitteln (unter OnDialogResponse):



    Code
    new id = INVALID_PLAYER_ID;
    sscanf(inputtext, "'ID: 'd", id);


    Das geht aber nur, wenn du das sscanf - Plugin verwendest (was generell empfehlenswert ist).

    Okay, dann lass dir mal bitte mal den Inhalt von befehl ausgeben (per printf()).



    Zwar hast du einen Größenunterschied zwischen angegebener Größe innerhalb von sscanf und der Deklaration => erklärt aber nicht den Fehler. Wie gesagt, lass dir mal den Inhalt ausgeben.

    Okay, sehe da spontan keinen wirklichen Fehler. Lass dir mal den Inhalt von der Variable befehl ausgeben.


    Standardfrage: Nutzt du das Plugin oder die standalone für sscanf?

    Ich schmeiße auch mal eine Idee von 'ner GetPlayerID Funktion in die Runde :D.



    Vorteil ist halt, dass ein Funktionsausruf wegfällt & GetPlayerName 0 zurückgibt, wenn der Spieler nicht existiert ist. Inwieweit das tauglich und sinnvoller ist stell ich mal mit einem Fragezeichen in den Raum, wollte aber mal eine Alternative bieten :D.