Beiträge von Jeffry

    Oh, beim Befehl:
    ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen");
    zu:
    ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_LISTBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen");

    Wie weg? Wohin wird er gesetzt?


    Versuche mal, während er als Fahrer da sitzt den Befehl zu nutzen, mit dem du ihn auf Seat ID 1 setzt, ob er dann nach hinten gesetzt wird.
    Falls das auch nicht geht, dann denke ich, dass es keine Möglichkeit gibt einen Standard-NPC als Beifahrer zu nutzen, wie es auch in den Threads aus dem englischen Forum besprochen wurde.

    Sorry, das ging beim Copy Paste unter, mein Fehler.


    Der Checkpoint muss so aussehen:
    bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
    bmxo[inviteID[playerid]] = CreateDynamicCP(x1,x2,x3,3,-1,-1,inviteID[playerid],10000.0);//ZEILE: 127509


    Teste es dann nochmal.

    Das passt soweit alles.


    Habe ich jetzt bei PutPlayerInVehicle das richtig gesetzt?

    Ja.



    Eine letzte Möglichkeit fällt mir noch ein, versuch mal, den NPC neu aufzunehmen, als NPC im Fahrzeug und zwar als Fahrer. Sprich:

    • Steige auf das Motorrad
    • Starte die Aufnahme (in Fahrzeug-Aufnahme)
    • Bleibe 30 Sekunden stehen
    • Stoppe die Aufnahme
    • Steige ab.


    Dann versuche es mit dieser Aufnahme (kannst du ja gleich nennen und nur die alte Aufnahme ersetzen).
    Versuche es dann mit dem aktuellen Code, ob er dann als Fahrer da sitzt.

    Das passt.
    Der Fehler ist in OnDialogResponse, und zwar in der Zeile 3731. Kannst du diese mal posten, und etwas Code drum herum?


    Falls du den Code verändert hast, lass dir die Fehlermeldung mit der aktuellen Zeile nochmal ausgeben.

    bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
    bmxo[inviteID[playerid]] = CreateDynamicCP(checkpointgarbage[inviteID[playerid]],x1,x2,x3,3);//ZEILE: 127509
    zu:
    bmxo[playerid] = CreateDynamicCP(x1,x2,x3,3,-1,-1,playerid,10000.0);//ZEILE: 127510
    bmxo[inviteID[playerid]] = CreateDynamicCP(x1,x2,x3,3,-1,-1,inviteID[playerid],10000.0);//ZEILE: 127509


    Außerdem solltest du es wirklich mit einem zweiten Spieler testen, sonst wird das bei den Tests nicht immer richtig klappen, da du zwei Checkpoints an der gleichen Position hast, aber nur einen Wert in der Variable, da playerid und inviteID[playerid] die gleiche ID haben.
    Nutze dafür einen zweiten PC oder ein zweites Windows-Benutzerkonto (Benutzer wechseln, wenn du im Spiel bist, nicht abmelden).


    Teste es dann nochmal.

    Gut, dann versuche den Dialog so:
    #define DIALOG_HELPTEXT 2401
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_HELP:
    {
    if(!response) return 1;
    new str[256], msg[1024];
    mysql_real_escape_string(inputtext, str);
    format(str, sizeof(str), "SELECT helptext FROM helptabelle WHERE header = '%s';", str);
    mysql_query(str);
    mysql_store_result();
    if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Leider gibt es dazu keinen passenden Treffer.");
    mysql_fetch_row(msg);
    mysql_fetch_field("helptext", msg);
    for(new i=0; i<strlen(msg); i++) if(msg[i] == '~') msg[i] = '\n';
    ShowPlayerDialog(playerid, DIALOG_HELPTEXT, DIALOG_STYLE_MSGBOX, "Help-Text", msg, "Ok", "");
    mysql_free_result();
    return 1;
    }
    }
    return 0;
    }


    Speichere den Helptext in der Datenbank so:
    Dies ist ein Beispiel!~~Damit man gucken kann ob auch alles läuft, machen wir mal~einen Zeilenumbruch!


    Ein ~ steht für einen Zeilenumbruch. Dies kannst du auch ändern, falls du lieber ein anderes Zeichen nehmen willst. \n geht nicht, da dies als zwei Zeichen interpretiert wird. Könnte man zwar auch abfangen, ist aber umständlicher.


    Der bisherige Code funktioniert.

    Klappt es auch, wenn du mehrere Zeilen angezeigt bekommst, sprich Hilfe ID 1 hat den Tag "test" und ID 3 auch, mit zwei unterschiedlichen Überschriften?

    Versuche den Befehl bitte mal so:
    #define DIALOG_HELP 1403
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    if(strcmp("/help", cmd, true) == 0)
    {
    new str[256], msg[1024];
    str = strtok(cmdtext, idx);
    if(!strlen(str)) return ShowHelp(playerid);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Suche Artikel... (Es sollte gleich ein Infotext angezeigt werden. Wenn nicht, probiere es zu einem späteren Ueitpunkt nochmal.)");
    mysql_real_escape_string(str, str);
    format(str, sizeof(str), "SELECT header FROM helptabelle WHERE tags LIKE '%%%s%%';", str);
    mysql_query(str);
    mysql_store_result();
    if(!mysql_num_rows()) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "*** Hilfe *** Leider gibt es dazu keinen passenden Treffer.");
    while(mysql_retrieve_row())
    {
    mysql_fetch_field_row(str,"header");
    format(msg, sizeof(msg), "%s%s\n", msg, str);
    }
    ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, "Help-Artikel", msg, "Auswählen", "Abbrechen");
    mysql_free_result();
    return 1;
    }
    return 0;
    }


    Im Query musst du das "helptabelle" an die Bezeichnung deiner Tabelle anpassen.


    Ich habe es ohne Threaded Queries gemacht, da ich den Rest deines Codes nicht kenne und so Konflikte ausschließen kann.



    Zeigt es dir die entsprechenden Header dann nach den gesuchten Tags an, sprich klappt das soweit?

    Versuche es, wenn du so daneben stehst, mal mit diesem Befehl:
    if(!strcmp(cmdtext, "/test", true))
    {
    new botname[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
    GetPlayerName(i, botname, sizeof(botname));
    if(!strcmp(botname, "MotorradBeifahrer", true))
    {
    SetPlayerSkin(i, 1);
    PutPlayerInVehicle(i, vFahrschulMotorrad, 1);
    printf("TestBefehl: Setze %d auf Fahrzeug %d.", i, vFahrschulMotorrad);
    return 1;
    }
    }
    }
    return 1;
    }
    Sitzt er dann drauf bzw. bekommt den Skin?


    Stimmt die vehicleid? (/dl)