Speicher fehler (PSC 30€ TG)

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
  • if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[600],stringh[256],vorwahl[5] = "0276";

    format(nummer, sizeof nummer,"%d%d%d%d%d",vorwahl,random(2),random(2),random(1),random(1));
    SpielerInfo[playerid][pHandynummer] = strval(nummer);
    format(string, 256, "Deine neue Handynummer: 0%d",strval(nummer));
    SendClientMessage(playerid,rot,nummer);
    return 1;
    }


    //EDIT


    Jetzt kommt bei /handy nicht mehr die vorwahl

  • if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[8],stringh[35],vorwahl = 0276;
    format(nummer, sizeof nummer,"%d%d%d%d%d",vorwahl,random(9),random(9),random(9),random(9));
    SpielerInfo[playerid][pHandynummer] = strval(nummer);
    format(stringh, 256, "Deine neue Handynummer: %d",strval(nummer));
    SendClientMessage(playerid,rot,stringh);
    return 1;
    }


    ...


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • Wieso defnierst du die Arraygröße der Nummer so hoch? Das sind doch nur ein paar Zahlen :O

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Atrox, ich habs schnell geschrieben, ich weiß das die 'Maximal' länge 128 ist.



    Hm oke, soweit gehts..


    ehm die 00175 also die 0 werden nicht angezeigt sondern nur 175 493..

  • Liegt daran, dass runde Zahlen eigentlich nie mit 0 anfangen. 0051 = 51. Das gleiche macht auch die gewöhnliche Scriptsprache (z.B. PAWN) - Speichere/Lade es als String anstatt als Integer, dann sollte es eigentlich klappen.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • 128 ist auch falsch. In deinem Fall sind es 9.
    Zähl doch mal die Länge deiner möglichen Handynummer.

    Kalcor: "... it makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."

  • Ok, dann so:


    if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[10],stringh[36],vorwahl[6] = "00276";
    format(nummer, sizeof nummer,"%s%d%d%d%d",vorwahl,random(9),random(9),random(9),random(9));
    SpielerInfo[playerid][pHandynummer] = nummer;
    format(stringh, 256, "Deine neue Handynummer: %s",nummer);
    SendClientMessage(playerid,rot,stringh);
    return 1;
    }


    Nun muss aber beim Abspeichern die Var in einen String umgeschrieben werden.


    //EDIT


    Was nun in deinem Fall auch klappen würde ist das:
    if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[10],stringh[36];
    format(nummer, sizeof nummer,"00276%d%d%d%d",random(9),random(9),random(9),random(9));
    SpielerInfo[playerid][pHandynummer] = nummer;
    format(stringh, 256, "Deine neue Handynummer: %s",nummer);
    SendClientMessage(playerid,rot,stringh);
    return 1;
    }



    Gruss: Sonic

    I didn't hit you. I high fived your face.

    Einmal editiert, zuletzt von Sonic Hedgehog ()

  • Sensationell wie viele falsche Antworten man bekommt,wenn es um 30€ geht ... .
    Wieso sollte man bei der Zahl 24 noch ganze vielen 0 davor angezeigt bekommen ? Ist doch völlig bescheuert. Wenn ihr 0 davor haben wollt,dann macht sie manuell dort hin. Die Funktion strval "löscht" die 0 ja nicht,sie machen eh keinen Sinn. Oder vielleicht macht es doch Sinn,aber dann musst du ja vor jede Zahl unendlich viele 0 schreiben. Macht keiner, außerdem wirst du damit nie fertig.


    stock String_Handynummer( nummer ) {
    new
    s[12];
    format(s,sizeof(s),"%08d",nummer);
    return s;
    }
    Das wird immer 8 Stellig die Zahl zurück geben als String. Falls die Zahl weniger als 8 Stellen hat,werden alle davor mit 0 aufgefüllt.

    Zitat

    12345 -> 00012345
    12 -> 00000012


    Ich beobachte mal weiter die fatalen Antworten hier ... .

  • Dann würdest du das jetzt also so machen?
    if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[8],stringh[35],vorwahl = 276;
    format(nummer, sizeof nummer,"%05d%d%d%d%d",vorwahl,random(9),random(9),random(9),random(9));
    SpielerInfo[playerid][pHandynummer] = strval(nummer);
    format(stringh, 256, "Deine neue Handynummer: %09d",strval(nummer));
    SendClientMessage(playerid,rot,stringh);
    return 1;
    }


    Wieder was dazu gelernt.
    Danke Goldkiller ;]


    //EDIT


    UPS ne Null vergessen :[


    Gruss: Sonic

    I didn't hit you. I high fived your face.

    Einmal editiert, zuletzt von Sonic Hedgehog ()

  • Was ist an deiner Funktion "richtiger", als an unserem Tipp die Variable in einen String umzuwandeln, statt sie als Integer zu speichern?
    Wenn er eine Null vornedran stehen haben will, kann er doch auch einfach gleich als String speichern, statt eine Funktion zu schreiben, die seinen Integer nur wieder als String zurückgibt.
    So oder so, beides wäre möglich.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    2 Mal editiert, zuletzt von Padarom ()

  • Nein würde ich nicht, da die Ausgabe sowieso wieder verpatzt wird.


    format(stringh, 256, "Deine neue Handynummer: %s",nummer);
    format(stringh, 256, "Deine neue Handynummer: %09d",SpielerInfo[playerid][pHandynummer]); // oder so
    format(stringh, 256, "Deine neue Handynummer: %09d",strval(nummer)); // oder so


    //Edit,

    Zitat

    Was ist an deiner Funktion "richtiger", als an unserem Tipp die Variable in einen String umzuwandeln, statt sie als Integer zu speichern?
    Wenn er eine Null vornedran stehen haben will, kann er doch auch einfach gleich als String speichern, statt eine Funktion zu schreiben, die seinen Integer nur wieder als String zurückgibt.
    So oder so, beides wäre möglich.


    Du hast da wohl was falsch verstanden :\.
    Die ist nicht richtiger, ich wollte nur zeigen,wie man es macht,dass die Zahl immer die Null vorne dran hat.
    Das der String mehr Platz verbraucht als eine Zahl ist nicht so wichtig,sollte man dennoch nicht ganz vergessen.Beides ist richtig,ja. Es ging mir mit falschen Antworten auch eher um die Codes die gepostet wurden, ohne überhaupt mal ausprobiert zu werden.
    Mal die Posts hier zum Beispiel:
    http://forum.sa-mp.de/san-andr…0%E2%82%AC-tg/#post876017
    http://forum.sa-mp.de/san-andr…0%E2%82%AC-tg/#post876012
    http://forum.sa-mp.de/san-andr…0%E2%82%AC-tg/#post875997
    Um nur 3 zu nennen ... .

    Einmal editiert, zuletzt von Goldkiller ()

  • Du hast doch gerade gelesen das das so nicht funktionieren wird -.-
    eher so:
    format(stringh, 256, "Deine neue Handynummer: %08d",strval(nummer));
    Wobei ich eher zu einerm String tendieren würden, denn es ist dann leichter zu prüfen ob der Spieler auch die richtige Nummer eingetragen hat, falls er jemanden anrufen möchte.


    Zitat von Goldkiller

    Sensationell wie viele falsche Antworten man bekommt,wenn es um 30€ geht ... .


    Das hab ich mir allerdings schon bei den ersten antworten gedacht :D

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Probier den:
    if(strcmp("/handy",cmdtext,true) == 0)
    {
    new nummer[8],stringh[35],vorwahl = 276;
    format(nummer, sizeof nummer,"%05d%d%d%d%d",vorwahl,random(9),random(9),random(9),random(9));
    SpielerInfo[playerid][pHandynummer] = strval(nummer);
    format(stringh, 256, "Deine neue Handynummer: %09d",strval(nummer));
    SendClientMessage(playerid,rot,stringh);
    return 1;
    }


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • Ich sehe jetzt schon, das es nix wird Sonic.


    Ich möchte vor den Random zahlen die Vorwahl mit der 0 ;)

  • Du kannst es auch so machen


    format(nummer, sizeof nummer,"00276d%d%d%d%d",random(9),random(9),random(9),random(9));

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen