Probleme beim Scripten.

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
  • Du musst das so machen:



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==Dialog_Geschichte)
    {
    if(response==1)
    {
    ShowPlayerDialog(playerid,Dialog_Stadthalle,DIALOG_STYLE_MSGBOX,"Personalien","Um in der Stadt bleiben zu können, und um dich auszuweisen\nbrauchst du einen Personalausweis.\n Fahre zur Stadthalle und besorge dir dort einen.\nDamit es schneller geht kannst du dir vor dem Haus\nein Fahrrad mieten.","OK","Abbrechen");
    }
    if(response==0)
    {
    SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
    }
    }
    if(dialogid==Dialog_Stadthalle)
    {
    if(response==1)
    {
    SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,1);
    SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle"); Geschichte[playerid] = 1;
    }
    if(response==0)
    {
    SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Bitte versuche es noch einmal.");
    }
    }
    return 1;
    }



    EDIT: irgend wie spackt der Editor hier.. du musst *Geschichte[playerid] = 1;* unter *SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");* packen dann müsste es funktionieren

  • Also so ?


    if(response==1)
    {
    SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,4);
    SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");
    Geschichte[playerid] = 1;



    Nur jetzt kommt der Text von CP 2 bei CP 1 & 2 und der Text von CP 1 kommt garnicht mehr

  • Sorry, aber so macht man das nimmer...
    Benutze lieber eine Enumeration, statt den defines, da du hier nicht auf die weiteren Werte achten musst:

    enum {
    Dialog_Geschichte = 1,
    Dialog_Stadthalle
    };


    Ich versteh das mit dem [MAX_PLAYER] und dem ==0 oder ==1 nicht so wirklich. Sowas hab ich noch nicht gelernt.


    MAX_PLAYERS ist von SAMP aus defiinert und bedeutet soviel wie 500, da die MAX_PLAYER Anzahl auf 500 liegt, ist deine Serverslot anzahl auf 50 ist MAX_PLAYERS 50,
    MAX_PLAYERS wird in der "a_samp.inc" (bei 0.3x) in Zeile 30 konstant definiert. Hat gar nichts mit der Slotanzahl zu tun.
    Man kann diese nur durch einen "Trick" ändern:


    oben nach den Includes, und vor dem ersten Benutzen:

    #undef MAX_PLAYERS
    #define MAX_PLAYERS 50


    Dann ist MAX_PLAYERS auf 50 "Slots" gesetzt...


    if(Geschichte[playerid] == 0)


    bringt gar nichts?



    @TropicalMonster:
    Ich würde das so machen...

    public OnPlayerEnterCheckpoint(playerid) {
    if(Geschichte[playerid] >= 1) { // Wenn Geschichte größer oder gleich 1 ist (Falls du mehrere Checkpoints mit Geschichte abfragen willst
    if(IsPlayerInRangeOfPoint(playerid, 1.0, 1481.4243,-1738.6479,13.5469)) { // Ist der Spieler überhaupt im CP?
    DisableCheckpoint(playerid);
    Geschichte[playerid] = 0; // Oder Geschichte[playerid]++; falls du mehrere Checkpoints haben willst
    // Evtl. noch ne Message?
    }
    }
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    switch(dialogid) {
    case Dialog_Geschichte: {
    if(!response) { // das gleiche wie response == 0
    return SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
    }
    ShowPlayerDialog(playerid,Dialog_Stadthalle,DIALOG_STYLE_MSGBOX,"Personalien","Um in der Stadt bleiben zu können, und um dich auszuweisen\nbrauchst du einen Personalausweis.\n Fahre zur Stadthalle und besorge dir dort einen.\nDamit es schneller geht kannst du dir vor dem Haus\nein Fahrrad mieten.","OK","Abbrechen");
    }
    case Dialog_Stadthalle: {
    if(!response) { // das gleiche wie response == 0
    return SendClientMessage(playerid,Rot,"Du hast die Aufgabe abgebrochen.\n Versuche es bitte noch einmal.");
    }
    Geschichte[playerid] = 1;
    SetPlayerCheckpoint(playerid,1481.4243,-1738.6479,13.5469,1);
    SendClientMessage(playerid,Gelb,"Fahre zur Stadthalle");
    }
    }
    return 1;
    }

  • Kleine Aufklärung meines Plans


    Ich habe 2 Checkpoints. Checkpoint 1 Text = Gehe zur Information ...... Checkpoint 2 Text = Fail0r


    Ich will nur das bei CP 1 nur der CP 1 Text kommt und bei CP 2 nur der CP 2 Text kommt ... Und das die CP´s danach verschwinden.



    Ok jetzt blicke ich garnicht mehr durch
    @Silverdark


    Könntest du mein Script (Seite 2) so umschreiben dass es passt ? weil ich jetzt garnicht mehr klar komme

    Einmal editiert, zuletzt von TropicalMonster () aus folgendem Grund: Verändert