Beiträge von virtualmarc

    mhh das währe ziemlich Aufwändig und da ist dann wieder das Problem mit der Abfrage, ob OK gedrückt wurde, dass das dann weggeht.
    Habs jetzt gelöst, indem ich mehrere einzelne Dialoge gemacht habe!

    Also es sieht momentan so aus:
    ShowPlayerDialog(playerid, 7, DIALOG_STYLE_MSGBOX, "Grundgesetz", "Dies ist das Grundgesetz von San Andreas.\
    Das Grundgesetz und die anderen Gesetze können jederzeit mit /gesetzbuch abgerufen werden.\nGesetze:\n\
    §1: Das Cheaten ist strengstens untersagt. Cheater werden mit einem lebenslänglichen Ban bestraft.\n\
    §2: Death Matching ist ohne Erlaubnis eines Admins strengstens verboten!\n§3: Jedes Menschenleben ist kostbar!\
    Daher wird das töten anderer Personen mit einer Freiheisstrafe geahndet.\n\
    §4: Es muss sich an alle weiteren Gesetzen gehalten werden, vor allem an die Straßenverkehsverordnung.\n\
    §5: Das beleidigen anderer Personen wird mit einer Freiheitsstrafe geahndet.\n\
    §6: Wenn man umgebracht oder überwallen worden ist oder einen Mord oder Überfall beobachtet hat,\
    melde diesen bei der Polizei.Fertige, wenn möglich, einen Screenshot als Beweis an.", "OK", "Abbrechen");

    bringt nix, jetzt kommt wieder:

    Zitat

    F:\SA-MP\rlneu\gamemode.pwn(982) : error 075: input line too long (after substitutions)
    F:\SA-MP\rlneu\gamemode.pwn(983) : error 037: invalid string (possibly non-terminated string)
    F:\SA-MP\rlneu\gamemode.pwn(983) : error 017: undefined symbol "Dies"
    F:\SA-MP\rlneu\gamemode.pwn(983) : error 017: undefined symbol "ist"
    F:\SA-MP\rlneu\gamemode.pwn(983) : fatal error 107: too many error messages on one line


    Ich habe aber auch schon Server gesehen, die so lange Nachrichten im Dialog hatten ...

    Kürzer gehts leider nicht, aber wenn ich zwischendurch Zeilenumbrüche einfüge, ist die 1. Fehlermeldung weg!
    Dann kommt nurnoch:

    Zitat

    F:\SA-MP\rlneu\gamemode.pwn(978) : error 037: invalid string (possibly non-terminated string)
    F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "Dies"
    F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "ist"
    F:\SA-MP\rlneu\gamemode.pwn(978) : fatal error 107: too many error messages on one line

    Ich habe ein kleines Problem mit dem ShowPlayerDialog.


    Und zwar bekomme ich folgenden Fehler:

    Zitat

    F:\SA-MP\rlneu\gamemode.pwn(977) : error 075: input line too long (after substitutions)
    F:\SA-MP\rlneu\gamemode.pwn(978) : error 037: invalid string (possibly non-terminated string)
    F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "Dies"
    F:\SA-MP\rlneu\gamemode.pwn(978) : error 017: undefined symbol "ist"


    für folgende Zeile:
    ShowPlayerDialog(playerid, 7, DIALOG_STYLE_MSGBOX, "Grundgesetz", "Dies ist das Grundgesetz von San Andreas.Das Grundgesetz und die anderen Gesetze können jederzeit mit /gesetzbuch abgerufen werden.\nGesetze:\n§1: Das Cheaten ist strengstens untersagt. Cheater werden mit einem lebenslänglichen Ban bestraft.\n§2: Death Matching ist ohne Erlaubnis eines Admins strengstens verboten!\n§3: Jedes Menschenleben ist kostbar! Daher wird das töten anderer Personen mit einer Freiheisstrafe geahndet.\n§4: Es muss sich an alle weiteren Gesetzen gehalten werden, vor allem an die Straßenverkehsverordnung.\n§5: Das beleidigen anderer Personen wird mit einer Freiheitsstrafe geahndet.\n§6: Wenn man umgebracht oder überwallen worden ist oder einen Mord oder Überfall beobachtet hat, melde diesen bei der Polizei.Fertige, wenn möglich, einen Screenshot als Beweis an.", "OK", "Abbrechen");


    Wie kann ich das Problem lösen?

    Irgendwie wird bei mir die Funktion OnPlayerInfoChange nicht ausgeführt.


    Hier mein Quellcode:
    public OnPlayerInfoChange(playerid)
    {
    if(SpielerInfo[playerid][login] == 1)
    {
    new infoupdateqry[255],updplname[255];
    GetPlayerName(playerid,updplname,sizeof(updplname));
    samp_mysql_real_escape_string(updplname, updplname);
    format(infoupdateqry, sizeof(infoupdateqry), "UPDATE user SET geld='%d', level='%d', newsrep='%d', polizei='%d' WHERE name='%s'", GetPlayerMoney(playerid), GetPlayerScore(playerid), SpielerJob[playerid][newsreporter], SpielerJob[playerid][polizei], updplname);
    samp_mysql_query(infoupdateqry);
    SendClientMessage(playerid, FARBE_ROT, infoupdateqry);
    }
    else
    {
    SendClientMessage(playerid, FARBE_ROT, "Loggen Sie sich ein, um änderungen zu speichern!");
    }
    return 1;
    }


    Getestet habe ichs mit einem Stunt, aber in der Datenbank wird das Geld nicht geupdated und die SendClientMessage kommt auch net!

    jetzt nicht hier über eure probleme diskutieren, es geht bei mir immer noch net :(
    Das hält meine ganze planung auf, denn solange das net geht, kann ich nicht weiter machen!


    Also ich kann es schonmal eingränzen:
    Es muss bei /login liegen, denn wenn ich /login nicht ausführe, kann ich /help so oft benutzen, wie ich will!

    Hallo,
    ich habe 3 Commands (/login, /reg und /help).
    Als ich nur /login und /reg hatte, lief alles ohne probleme, jetzt habe ich noch /help hinzugefügt und jetzt kommt bei jedem Befehl:

    Zitat

    SERVER: Unknown Command


    Hier mein OnPlayerCommandText Quellcode:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new val[128],cmd[256],idx,plname[100],chkqry[100],plcnt,insqry[100],pwcnt,selqry[255],line[1024];
    cmd = strtok(cmdtext,idx);
    // Registration
    if(strcmp("/reg", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /reg [PASSWORT]");
    }
    else
    {
    // Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon existiert
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler existiert bereits
    // Aufforderung zum einloggen anzeigen!
    SendClientMessage(playerid, FARBE_ROT, "Es existiert bereits ein Account mit diesem Namen!");
    SendClientMessage(playerid, FARBE_ROT, "Bitte /login [PASSWORT] benutzen!");
    }
    else
    {
    // Spieler existiert nicht
    // Spieler registrieren
    samp_mysql_real_escape_string(plname, plname);
    format(insqry,sizeof(insqry),"INSERT INTO user (name,pass,mail, money) VALUES ('%s',MD5('%s'), 'none', '500')", plname, val[0]);
    samp_mysql_query(insqry);
    // ID auslesen
    format(selqry,sizeof(selqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(selqry);
    samp_mysql_store_result();
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    // Konto eröffnen
    format(insqry,sizeof(insqry),"INSERT INTO konten (playerid,betrag) VALUES ('%s','100')", SpDv[0]);
    samp_mysql_query(insqry);
    // Registration fertig
    SendClientMessage(playerid, FARBE_ROT, "Registration erfolgreich!");
    // Aufforderung zum einloggen anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Benutzen Sie /login [PASSWORT] um sich einzuloggen!");
    }
    }
    return 1;
    }
    // Login
    if(strcmp("/login", cmd, true) == 0)
    {
    val = strvalue(cmdtext,idx);
    if(!val[0])
    {
    // Es wurde kein Parameter angegeben
    SendClientMessage(playerid,0xFFFFFFFF,"Benutzung: /login [PASSWORT]");
    }
    else
    {
    //Parameter wurde angegeben
    // Spielername herausfinden
    GetPlayerName(playerid, plname, sizeof(plname));
    // Überprüfen ob Spieler schon registriert ist
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    plcnt=samp_mysql_num_rows();
    if(plcnt == 1)
    {
    // Spieler ist registriert
    // Prüfen ob das Passwort stimmt
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE (name='%s' AND pass=MD5('%s'))", plname, val[0]);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    pwcnt=samp_mysql_num_rows();
    if(pwcnt == 1)
    {
    // Passwort stimmt
    SendClientMessage(playerid, FARBE_ROT, "Sie sind erfolgreich eingeloggt!");
    // Loginvariablen setzen
    SpielerInfo[playerid][login] = 1;
    // Geld setzten
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    new line[1024];
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    SpielerInfo[playerid][startmoney] = strval(SpDv[5]);
    SpielerInfo[playerid][dbid] = strval(SpDv[0]);
    //SetPlayerMoney(playerid, SpielerInfo[playerid][startmoney]);
    new testmoney[255];
    testmoney = "500";
    SetPlayerMoney(playerid,SpielerInfo[playerid][startmoney]);
    new ausg[255];
    format(ausg,sizeof(ausg),"Spielergeld: %d",SpielerInfo[playerid][startmoney]);
    print(ausg);
    }
    else
    {
    // Passwort stimmt nicht
    SendClientMessage(playerid, FARBE_ROT, "Das Passwort war falsch!");
    }
    }
    else
    {
    // Spieler ist noch nicht registriert
    SendClientMessage(playerid, FARBE_ROT, "Es existiert noch lein Account mit diesem Namen!");
    // Aufforderung zum registrieren anzeigen
    SendClientMessage(playerid, FARBE_ROT, "Bitte /reg [PASSWORT] benutzen!");
    }
    }
    return 1;
    }
    // Hilfe
    if(strcmp("/help", cmd, true) == 0)
    {
    SendClientMessage(playerid, FARBE_AQUA, "*****[HILFE]*****");
    SendClientMessage(playerid, FARBE_WEISS, "BENUTZER: /reg, /login");
    return 1;
    }
    return 1;
    }

    Hallo,
    ich habe soebend bemerkt, dass nur die kleinste Auslesung aus einer MySQL Datenbank den Client mir einem "Exception Error" zum Absturz bringt.


    Hier mein Code:
    new chkqry[255]
    format(chkqry,sizeof(chkqry),"SELECT * FROM user WHERE name='%s'", plname);
    samp_mysql_query(chkqry);
    samp_mysql_store_result();
    new money[255];
    new line[1024];
    samp_mysql_fetch_row(line);
    new SpDv[30][50];
    split(line, SpDv, '|');
    new ausg[255];
    format(ausg,sizeof(ausg),"Wert: %s",SpDv[5]);
    print(ausg);


    Weiß jmd. ob ich da was falsch mache oder ob das an irgendwas anderem liegt?


    In der Konsole kommt die Ausgabe:

    Zitat

    Wert: 500

    Hallo, ich spawne meine Vehikel jetzt aus einer Datei, allerdings werden die For-Schleifen nicht ausgeführt ...
    Hier der Code:
    public OnGameModeInit()
    {
    [...]
    // Autos per Datei:
    new File:VehicleFile;
    new blank[256];
    new count = 0;
    VehicleFile = fopen(VEHIKEL_DATEI);
    while(fread(VehicleFile, blank, sizeof(blank))) {
    count++;
    }
    fclose(VehicleFile);
    vehcount = count;
    new vehmes[256];
    format(vehmes,sizeof(vehmes),"Verifying %s (Complete) - %d Vehicle Spawns Verified!", VEHIKEL_DATEI, vehcount);
    printf(vehmes);
    new SplitDiv[99][1024];
    new filestring[256];
    new File: file = fopen(VEHIKEL_DATEI, io_read);
    format(filestring,sizeof(filestring),"%d",vehcount);
    print(filestring);
    for(new vehicleid = 1;vehicleid<=vehcount;vehicleid++)
    {
    fread(file, filestring);
    split(filestring, SplitDiv, ',');
    AutoInfo[vehicleid][id] = strval(SplitDiv[0]);
    AutoInfo[vehicleid][vid] = strval(SplitDiv[1]);
    AutoInfo[vehicleid][x] = floatstr(SplitDiv[2]);
    AutoInfo[vehicleid][y] = floatstr(SplitDiv[3]);
    AutoInfo[vehicleid][z] = floatstr(SplitDiv[4]);
    AutoInfo[vehicleid][angle] = floatstr(SplitDiv[5]);
    AutoInfo[vehicleid][color1] = strval(SplitDiv[6]);
    AutoInfo[vehicleid][color2] = strval(SplitDiv[7]);
    AutoInfo[vehicleid][mod1] = strval(SplitDiv[8]);
    AutoInfo[vehicleid][mod2] = strval(SplitDiv[9]);
    AutoInfo[vehicleid][mod3] = strval(SplitDiv[10]);
    AutoInfo[vehicleid][mod4] = strval(SplitDiv[11]);
    AutoInfo[vehicleid][mod5] = strval(SplitDiv[12]);
    AutoInfo[vehicleid][mod6] = strval(SplitDiv[13]);
    AutoInfo[vehicleid][mod7] = strval(SplitDiv[14]);
    AutoInfo[vehicleid][mod8] = strval(SplitDiv[15]);
    AutoInfo[vehicleid][mod9] = strval(SplitDiv[16]);
    AutoInfo[vehicleid][mod10] = strval(SplitDiv[17]);
    AutoInfo[vehicleid][mod11] = strval(SplitDiv[18]);
    AutoInfo[vehicleid][mod12] = strval(SplitDiv[19]);
    AutoInfo[vehicleid][mod13] = strval(SplitDiv[20]);
    AutoInfo[vehicleid][mod14] = strval(SplitDiv[21]);
    AutoInfo[vehicleid][mod15] = strval(SplitDiv[22]);
    AutoInfo[vehicleid][mod16] = strval(SplitDiv[23]);
    AutoInfo[vehicleid][mod17] = strval(SplitDiv[24]);
    AutoInfo[vehicleid][paintjob] = strval(SplitDiv[25]);
    AutoInfo[vehicleid][owner] = strval(SplitDiv[26]);
    AddStaticVehicleEx(AutoInfo[vehicleid][vid], AutoInfo[vehicleid][x], AutoInfo[vehicleid][y], AutoInfo[vehicleid][z], AutoInfo[vehicleid][angle], AutoInfo[vehicleid][color1], AutoInfo[vehicleid][color2],-1);
    new addmess[256];
    format(addmess,sizeof(addmess),"--:: Vehicle %d successfully Loaded and placed - owner: %d ::--",vehicleid,AutoInfo[vehicleid][vid],AutoInfo[vehicleid][owner]);
    print(addmess);
    }
    fclose(file);
    for(new c=1;c<=vehcount;c++)
    {
    ModVehicle(c);
    }
    [..]
    return 1;
    }


    Die Datei mit den Vehikeln existiert und ist auch im richtigen ordner, er sagt mir ja, wie viele Vehikel in der Datei sind!

    7851 ist mein letzter wert, das ganze minus 633 und dann haste den startwert :D Das lag aber an meinem Browser. Firefox hat komischerweise jede seite (ohne dass ichs bemerkt habe) 12 mal aufgerufen :D Deswegen benutze ich auch IE hier im Forum, weil ich sonst vom Security System gebant werde :D das mit den gesplitteten werten ausgeben, werd ich sofort mal versuchen!


    So die ausgaben:


    ES GEHT!
    Es lag nicht an dem Spawnsystem, nur die Vehikelliste war nicht gerade gut. die ganzen autos waren in SF und man spawn in LV -.-
    Naja kennt jemand eine gute Vehikelliste mit max. 700 Vehikel, die überall in SA verteilt sind?


    Was den Absturz ausgelöst hat:
    Das war der Login O_o, aber wenn ich das Vehikelsystem auskommentiere geht der Login ohne Probleme, wenn mir da jmd. helfen kann, bitte melden, dann schicke ich den Quelltext zum drüber gucke n(ist nich nicht gearde viel)!