Beiträge von Optiimal

    if(dialogid == gpsmenu)
    if(response)
    {
    if(listitem == 0) // Autohaus
    {
    SetPlayerCheckpoint(2,playerid,2128.7495,-1136.9591,25.5209);
    }
    if(listitem == 1) // Kleidergeschäft
    {
    SetPlayerCheckpoint(2,playerid,1468.8552,-1173.6022,23.9747);
    }
    if(listitem == 2) // Stadthalle
    {
    SetPlayerCheckpoint(2,playerid, 1224.3978,-1814.8796,16.5938);
    }
    if(listitem == 3) // Polizei
    {
    SetPlayerCheckpoint(2,playerid,1542.6882,-1675.3882,13.5550);
    }


    }
    }
    return 1;
    }
    ich kann die einzelnen zwar anklicken im menu aber es kommt kein Checkpoint wie soll ich das machen

    Könnte mir bitte einer ein Filterscript oder sonstiges erstellen mit einer fraktion arzt oder o-amt oder sonstiges ich verstehe die ganzen sachen nicht die hier im forum sind
    habe schon alles versucht nur nichts hilft hoffe es ist einer so nett ich arbeite an einen Selfmade
    MFG Mipu

    if(dialogid == SHmenu) {
    if(response)
    {
    if(listitem == 0) // Fuehrerschein
    {


    GivePlayerMoney(playerid, -2000);
    Spieler[playerid][aFuhrerschein] = 1;
    }



    }
    }


    return 1;
    }


    else if(strcmp("/fuehrerschein", cmdtext, true) == 0)
    {
    if (IsPlayerInRangeOfPoint(playerid, 3, 361.8758,173.7471,1008.3828){
    ShowPlayerDialog(playerid, SHmenu, DIALOG_STYLE_LIST, "fuehrerschein","fuehrerschein", "Auswählen", "Abbrechen");


    }
    else
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Stadthalle");
    }


    Wie mache ich das das wenn man nicht genug geld hat das man sich denn nicht Kaufen kann
    und wenn man schon einen hat will ich auch das man keinen kaufen kann

    forward PlayerInfo(playerid);}
    enum pInfo
    aFuhrerschein
    }


    else if (strcmp("/fuehrerschein", cmd, true, 10) == 0)
    {
    if(PlayerToPoint(3.0,playerid,361.8758,173.7471,1008.3828))
    {
    SendClientMessage(playerid, COLOR_WHITE,"Du hast dir denn Fuehrerschein Gekauft");
    GivePlayerMoney(playerid, -2000);
    {
    PlayerInfo[playerid][aFuhrerschein] = 1;
    }
    }
    }
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(598) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(601) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(625) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(636) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(723) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(724) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(796) : warning 217: loose indentation
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(956) : error 028: invalid subscript (not an array or too many subscripts): "PlayerInfo"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(956) : warning 215: expression has no effect
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(956) : error 001: expected token: ";", but found "]"
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(956) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\GTA San Andreas\gamemodes\myrl.pwn(956) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.


    was ist hier falsch


    EDIT: Hat sich erledigt hab e selber gefixt

    Ihr beginnt damit eine normale Struktur aufzubauen, mit allen Daten die ihr braucht


    Pawn-Quelltext
    1
    2
    3
    4
    5
    6
    7
    enum spieler_daten
    {
    wanted,
    skin,
    Float:lastx,Float:lasty,Float:lastz,
    eingeloggt
    }



    nun möchten wir das ganze auch nutzen können für die Gesamten Spieler , man könnte das natürlich gleich alles mit MAX_PLAYERS hinklatschen aber so
    macht ihr alles nur Unordentlicher & unübersichtlicher ( vom Ressourcen verbraucht mal ganz abgesehen )



    Pawn-Quelltext
    1
    new Spieler[MAX_PLAYERS][spieler_daten];



    Wie ihr seht die Variable ,,Spieler´´ mit 200 Slots & 200x den gleichen Inhalt also spieler_daten , warum mache ich das so ?
    Nun ja so wird das ganze noch einmal ein Stück besser da man sich keine Zahlen oder extra Variablen merken muss & zudem ist
    das ganze Strukturierter aufgebaut.


    Als nächstes geht ihr erst einmal in die Klasse/Callback ,,OnPlayerDisconnect´´ & löscht die Daten bzw. setzt sie zurück damit nicht Später ein anderer Spieler eure Daten hat,
    außerdem Speichern wir alle wichtigen Dinge vorher, wir müssen aber auch abfragen ob der Spieler schon eingeloggt war damit nicht irgendwelche Daten gespeichert werden.



    Pawn-Quelltext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(fexist(accFormat) && Spieler[playerid][eingeloggt])
    {
    dini_IntSet(accFormat,"wanted",Spieler[playerid][wanted]);
    dini_IntSet(accFormat,"skin",Spieler[playerid][skin]);
    dini_FloatSet(accFormat,"lastx",Spieler[playerid][lastx]);
    dini_FloatSet(accFormat,"lasty",Spieler[playerid][lasty]);
    dini_FloatSet(accFormat,"lastz",Spieler[playerid][lastz]);
    }
    Spieler[playerid][eingeloggt] = 0;
    Spieler[playerid][wanted] = 0;
    Spieler[playerid][skin] = 0;
    Spieler[playerid][lastx] = (0.0);
    Spieler[playerid][lasty] = (0.0);
    Spieler[playerid][lastz] = (0.0);



    So fürs erste war es das , nun geht es weiter mit den Dialog ID's , ihr definiert nun oben die Dialog ID's , ihr könnt natürlich auch gleich irgendwelche Zahlen nehmen aber
    so verliert man die Übersicht nicht & weiß welchen Dialog man schon belegt hat.



    Pawn-Quelltext
    1
    2
    #define DIALOG_LOGIN 3
    #define DIALOG_REG 4



    Das tut ihr am besten in den Kopf des Skripts wo die von außerhalb einbezogenen Inc Dateien auch ihren Platz finden.
    So also unser Login Dialog hat ID 3 & die 4 bekommt der Dialog für die Registrierung.


    Fahren wir weiter fort mit dem erkennen des Accounts & abfragen dazu gehen wir in OnPlayerConnect & fragen ab ob die Datei mit unserem Nickname existiert.



    Pawn-Quelltext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(fexist(accFormat))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    }




    So nun Suchen wir ,,OnDialogResponse´´ auf Fragen die Dialog Daten ab.


    Pawn-Quelltext
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(response)
    {
    switch(dialogid) // dialogid auswählen
    {
    case DIALOG_LOGIN: // ID Login
    {
    if(!strlen(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    return SendClientMessage(playerid,0xFFFFFFFF,"Kein Passwort angegeben!");
    }
    if(strcmp(inputtext,dini_Get(accFormat,"Passwort")) == 0) // Passwort Direkt aus der Datei Laden
    {
    Spieler[playerid][wanted] = dini_Int(accFormat,"wanted");
    Spieler[playerid][skin] = dini_Int(accFormat,"skin");
    Spieler[playerid][lastx] = dini_Float(accFormat,"lastx");
    Spieler[playerid][lasty] = dini_Float(accFormat,"lasty");
    Spieler[playerid][lastz] = dini_Float(accFormat,"lastz");
    Spieler[playerid][eingeloggt] = 1; // Spieler ist nun erfolgreich eingeloggt
    SendClientMessage(playerid,0xFFFFFFFF,"Du wurdest erfolgreich eingeloggt.");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort war Falsch!");
    }
    }
    case DIALOG_REG: // ID Registrieren
    {
    if(!strlen(inputtext)) // Text darf nicht = Null sein Null im Sinne von nichts
    {
    ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    return SendClientMessage(playerid,0xFFFFFFFF,"Das Passwort ist zu kurz!");
    }
    dini_Create(accFormat);
    dini_Set(accFormat,"Passwort",inputtext);
    Spieler[playerid][eingeloggt] = 1;
    SendClientMessage(playerid,0xFFFFFFFF,"Account wurde angelegt und du wurdest eingeloggt.");
    }
    }
    }
    else
    {
    switch(dialogid)
    {
    case DIALOG_LOGIN:ShowPlayerDialog(playerid,DIALOG_LOGIN,1,"Login","Bitte logge dich ein","Abbrechen","Weiter");
    case DIALOG_REG:ShowPlayerDialog(playerid,DIALOG_REG,1,"Registrieren","Bitte Registriere dich","Abbrechen","Weiter");
    }
    }
    return 1;
    }



    So wie man sieht Frage ich ab ob der Button 1 genutzt wird ,,if(response)´´ und fahre fort , dann wechsele ich zur richtigen Dialog ID und handle dementsprechend wie in einem normalen Login/Register System, der Unterschied ist dabei das wir nicht abfragen müssen ob der Spieler schon eingeloggt oder Registriert ist , denn der Spieler kann die Dialoge ja nicht Manuell abrufen wann er möchte denn das wird
    bei OnPlayerConnect erledigt.


    Zum Schluss muss ich noch sagen , das ihr die Daten wir Wanted noch im Spieler übernehmen bzw. könnt ihr eure Variable nehmen oder sie setzen wie Beispielsweise mi SetPlayerWantedLevel
    oder die Position bei OnPlayerSpawn , hier mal eben gemacht , also wie gesagt einfach selber übernehmen , hier geht es nur um die Verbindung zwischen GUI & Interaktiven Funktionen etc.



    Pawn-Quelltext
    1
    2
    3
    4
    5
    6
    7
    new pname[MAX_PLAYERS],accFormat[128];
    GetPlayerName(playerid,pname,sizeof pname);
    format(accFormat,sizeof accFormat,"%s.datei",pname);
    if(dini_Isset(accFormat,"lastx"))
    {
    SetPlayerPos(playerid,Spieler[playerid][lastx],Spieler[playerid][lasty],Spieler[playerid][lastz]);
    }


    Hier habe nichts verändert oder sonstiges!

    Hallo habe probleme habe mir von hier ein Gui Login nachgemacht und hat auch prima gefunkt doch jetzt funkt es auf einmal nicht mehr habe nicht wirklich etwas gemacht
    und habe es nochmal kontrolliert mit dem hier im forum stimmt alles überein was kann da los sein

    Hallo ich hätte gerne eine funktion das man auf einen bestimmten punkt denn Führerschein kaufen kann
    und wenn man keinen hat wird man aus dem auto geschmissen habe es selber schon versucht aber das funkt nicht vill kann mir jemand helfen
    MFG mipu