Beiträge von Jeffry

    kann das nen soft/hardware fehler sein?


    Nein, das ist ein Fehler den du in den Code gemacht hast.
    Es kann auch sein, dass du einmal die Anführungszeichen bei einem String vergessen hast.


    Ich rate dir täglich ein Backup deines Codes zu machen, dann kannst du bei sowas einfach das Backup wieder nutzen, wenn du den Fehler nicht findest.


    Hier bleibt dir wohl nur noch suchen übrig.


    EDIT:
    Oder wie @Mr.Reese: vorgeschlagen hat, dann vergisst du es nicht. :thumbup:

    case DIALOG_REGISTER4:
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0) return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    if(check < 14 || check > 50)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    Spieler[playerid][pYearsOld] = check;
    format(Spieler[playerid][pGeburtstag],11,inputtext);
    format(string,sizeof(string),"Und du bist also %i Jahre alt.",Spieler[playerid][pYearsOld]);
    SendClientMessage(playerid,HELLROT,string);
    StopAudioStreamForPlayer(playerid);
    ImTutorial[playerid] = 1;
    CreateAccount(playerid);
    return 1;
    }
    }


    stock AgeOfPlayer(playerid)
    {
    new DateInfo[3][20], jahr, monat, tag;
    split(Spieler[playerid][pGeburtstag],DateInfo,'.');
    getdate(jahr,monat,tag);
    new check = jahr - strval(DateInfo[2]);
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    return check;
    }



    Im enum für Spieler definieren:
    pGeburtstag[11],


    Spieler[playerid][pGeburtstag] beim Speichern und Laden des Spielers als String speichern/laden.

    Bitte nicht den ganzen Post mit Code zitieren, das ist zu viel. Für die Zukunft.


    Weißt du auch, wenn ein Keybind (1) im Chat: Hallo wiedergibt, dass er bei "Medic-Keybinds" bei der 1 z.B. Hallo ich bin Arzt wiedergibt?


    Wissen ist gut, ich arbeite nicht mit AHK, ich habe dir nur den Code mit normalem Programmier-Verstand behoben. :D


    Du kannst folgendes Versuchen:
    Die Variable "abteilung" global definieren, und dann bei "1" abzufragen:


    => F5 => Auswählen => 1 eingeben => Taste 1 drücken => "/r Guten Tag, ich bin Arzt." sollte ausgegeben werden.

    Naja, das brauchst du vielleicht, aber nicht so wie es da steht.


    => Möchtest du das Alter des Spielers nochmals woanders anzeigen, außer bei der Registrierung? Soll es zum Beispiel in den Statistiken stehen und aktualisiert werden, wenn ein Jahr vorbei ist? Oder soll es nur beim registrieren angezeigt werden?

    Willkommen auf Breadfish!



    Wie sieht es so aus?


    Für was überhaupt diese komische Funktion? Du hast doch eigentlich alles schon, schreib es so:
    case DIALOG_REGISTER4:
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    if(check < 14 || check > 50)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER4,DIALOG_STYLE_INPUT,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Registrierung/Alter","Gebe nun bitte dein Alter ein. | Angabe bitte in TT.MM.JJJJ","Weiter","Verlassen");
    return 1;
    }
    Spieler[playerid][pYearsOld] = check;
    format(string,sizeof(string),"Und du bist also %i Jahre alt.",Spieler[playerid][pYearsOld]);
    SendClientMessage(playerid,HELLROT,string);
    StopAudioStreamForPlayer(playerid);
    ImTutorial[playerid] = 1;
    CreateAccount(playerid);
    return 1;
    }
    }

    Ja, das sieht genau danach aus.


    Lösungsvorschlag:
    Gebe den drei Textdraws jeweils die Einstellung mit, dass sie eine Box haben, und setze die Box Farbe zu einer Farbe die du vom Rest unterschieden kannst.
    Dann gehe ins Spiel und schau dir die Boxen an. Die werden entweder extrem riesig sein, oder gar nicht da.
    Dann gehst du wieder in den Code und passt die TextDrawTextSize an, bis deine drei Textdraws eine gescheite Box haben (die Box entspricht dem Bereich den du anklicken kannst). Wenn das passt, kannst du die Einstellung TextDrawUseBox wieder ausschalten.


    Versuch das mal so.



    Alternativ kannst du auch erst mal versuchen TextDrawTextSize für alle drei zu entfernen, wenn diese gar keine Box haben, vielleicht klappt das auch.

    Das ist leider ein Bug von SA-MP.
    Spontan würde ich sagen, dass du den Spieler freezt (TogglePlayerControllable), dann setzt du die Position und dann entfreezt du den Spieler wieder.


    Wenn es nicht direkt hintereinander geht, dann mit kurzen Timern.

    ocmd:carlist(playerid,params[])
    {
    new q[256],str[256],all[512];
    GetPlayerName(playerid,sendername,sizeof sendername);
    format(q,sizeof q,"SELECT `ID`,`Status`,`Model` FROM `Playercars` WHERE `Owner` = '%s'",sendername);
    mysql_query(q);
    mysql_store_result();
    new c = -1;
    while(mysql_fetch_row(str))
    {
    c++;
    new st,md;
    sscanf(str,"p<|>ddd",pvcdbID[code=c],st,md);
    format(all,sizeof all,"%s{FFFFFF}%s (%s)\n",all,PlayerVehicle[md-400],(st) ? ("{FF0000}Defekt{FFFFFF}") : ("{00FF00}Nicht defekt{FFFFFF}"));
    }
    mysql_free_result();
    if(strlen(all) > 0)
    {
    ShowPlayerDialog(playerid,DLG_CARLIST,DIALOG_STYLE_LIST,"Fahrzeugliste",all,"Auswählen","Schließen");
    }
    else
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du besitzt keine Fahrzeuge!");
    }
    return 1;
    }


    Die Schleife war sinnlos, sscanf war falsch und bei PlayerVehicle musste noch -400 hin, da du die Model ID ohne den Abzug von 400 in der Datenbank hast.