String setzten

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
  • Hallo ich stell mich gerade irgendwie zu blöd an X/


    ich möchte ein string in einem enum setzten


    Im enum:


    rang1[30],


    Im dialog:


    fInfo[rangwahl][rang1]=inputtext;


    und es kommt der Fehler!


    error 047: array sizes do not match, or destination array is too small


    wie definiert man einen string sonst in einem Enum?

  • Danke


    Und denn ist es auch gleich in fInfo[rangwahl][rang1] eingesetzt?


    Weil wenn ich das ausgeben möchte
    format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1]


    zeigt er mir nix an

    Einmal editiert, zuletzt von Gurkie94 ()

  • Das gehört einfach nur zum Dialog


    format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1],fInfo[i][rang2],fInfo[i][rang3],fInfo[i][rang4],fInfo[i][rang5],fInfo[i][rang6]);
    ShowPlayerDialog(playerid,DIALOG_Rangnamen,DIALOG_STYLE_LIST,str,string,"Weiter","Beenden");



    Hier wird es ja denn gesetzt ...
    format(fInfo[rangwahl][rang1], 30, "%s", inputtext);


  • Nun ja wenn du fInfo[rangwahl][rang1] in Format formatierst, dann
    beachte, dass du noch weitere 5 Ränge hast und diese auch formatieren musst. Ich würde gerne
    wissen, was du damit vorhast bzw. zu welchem System es gehört für besseres Verständnis.

  • Also ich möchte das für die Fraktionen haben . So das der Leader Die Rangnamen ändern kann
    mann gibt /fraktion ein und denn soll der Dialog angezeigt werden wo die Namen stehen also:


    format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1],fInfo[i][rang2],fInfo[i][rang3],fInfo[i][rang4],fInfo[i][rang5],fInfo[i][rang6]);ShowPlayerDialog(playerid,DIALOG_Rangnamen,DIALOG_STYLE_LIST,str,string,"Weiter","Beenden");


    wenn er jetzt zb auf Rang1 klickt im Dialog dann kommt ein Fenster wo mann den Namen eingibt und der Spieler kommt dann zurück in das Hier rüber gezeigte Dialog fenster hoffe es ist verständlich :D


    eigentlich soll ,fInfo[i][rang1] als string dienen für denn ersten rang usw.


    Später will ich das noch speichern aber dazu komme ich später :D

  • Wie gesagt: Wenn du es für alle Ränge haben möchtest, dann musst du es auch für alle Ränge formatieren, also so:


    Code
    format(fInfo[i][rang1], 30, "%s", inputtext);
    format(fInfo[i][rang2], 30, "%s", inputtext);
    format(fInfo[i][rang3], 30, "%s", inputtext);
    format(fInfo[i][rang4], 30, "%s", inputtext);
    format(fInfo[i][rang5], 30, "%s", inputtext);
    format(fInfo[i][rang6], 30, "%s", inputtext);

    /E: Da ich nur den Teil der Funktion sehe, kann ich nicht viel damit anfangen.


    @Gurkie94

  • Okay pass auf :D


    if(dialogid==DIALOG_Rangnamensetzten){if(response){if(strlen(inputtext)<4||strlen(inputtext)>20){ShowPlayerDialog(playerid,DIALOG_Rangnamensetzten,DIALOG_STYLE_INPUT,"{FF9600}Rangname","{D10000}Der Rangname muss Mindestens 4 und Höchstens 20 Buchstaben haben!","Fertig","Zurück");}else{new rangwahl=GetPVarInt(playerid,"rangwahl");if(rangwahl==1){format(fInfo[rangwahl][rang1], 30, "%s", inputtext);}if(rangwahl==2){format(fInfo[rangwahl][rang2], 30, "%s", inputtext);}if(rangwahl==3){format(fInfo[rangwahl][rang3], 30, "%s", inputtext);}if(rangwahl==4){format(fInfo[rangwahl][rang4], 30, "%s", inputtext);}if(rangwahl==5){format(fInfo[rangwahl][rang5], 30, "%s", inputtext);}if(rangwahl==6){format(fInfo[rangwahl][rang6], 30, "%s", inputtext);}rangdialog(playerid);}}else{rangdialog(playerid);}}


    Hier werden die nahmen denn gesetzt


    if(dialogid==DIALOG_Rangnamen){if(response){SetPVarInt(playerid,"rangwahl",0);if(listitem == 0){SetPVarInt(playerid,"rangwahl",1);ShowPlayerDialog(playerid,DIALOG_Rangnamensetzten,DIALOG_STYLE_INPUT,"{FF9600}Rangname", "{FFFFFF}Wie möchtest du diesen Rang nennen? (max.20 Zeichen)", "Fertig", "Zurück");}if(listitem == 1){SetPVarInt(playerid,"rangwahl",2);}if(listitem == 2){SetPVarInt(playerid,"rangwahl",3);}if(listitem == 3){SetPVarInt(playerid,"rangwahl",4);}if(listitem == 4){SetPVarInt(playerid,"rangwahl",5);}if(listitem == 5){SetPVarInt(playerid,"rangwahl",6);}}}


    Hier wähle ich aus welchen ich ändern will


    stock rangdialog(playerid){new string[500],str[50];new i=sInfo[playerid][leader];if(i==1){format(str,sizeof(str),"Police Department");}if(i==2){format(str,sizeof(str),"Bundeswehr");}if(i==3){format(str,sizeof(str),"Rettungsdienst");}if(i==4){format(str,sizeof(str),"Ordungsamt");}if(i==5){format(str,sizeof(str),"Media AG");}if(i==6){format(str,sizeof(str),"Grove Street");}if(i==7){format(str,sizeof(str),"Ballas");}if(i==8){format(str,sizeof(str),"Vagos");}if(i==9){format(str,sizeof(str),"LS Biker");}if(i==10){format(str,sizeof(str),"LCN");}if(i==11){format(str,sizeof(str),"Yakuza");}if(i==12){format(str,sizeof(str),"Atztecas");}format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1],fInfo[i][rang2],fInfo[i][rang3],fInfo[i][rang4],fInfo[i][rang5],fInfo[i][rang6]);ShowPlayerDialog(playerid,DIALOG_Rangnamen,DIALOG_STYLE_LIST,str,string,"Weiter","Beenden");}


    das ist der stock wo das Dialog fenster denn aufgerufen wird wenn man den namen eingegeben hat


    @Kristik47


    @Jeffry kannst du helfen ?:)

    2 Mal editiert, zuletzt von Gurkie94 ()

  • Zum Thema "leserlicher Code" hab ich was parat @Jeffry :



    if(dialogid==DIALOG_Rangnamensetzten)
    {
    if(response){if(strlen(inputtext)<4||strlen(inputtext)>20)
    {
    ShowPlayerDialog(playerid,DIALOG_Rangnamensetzten,DIALOG_STYLE_INPUT,"{FF9600}Rangname","{D10000}Der Rangname muss Mindestens 4 und Höchstens 20 Buchstaben haben!","Fertig","Zurück");
    }
    else
    {
    new rangwahl=GetPVarInt(playerid,"rangwahl");
    if(rangwahl==1)
    {
    format(fInfo[rangwahl][rang1], 30, "%s", inputtext);
    }
    else if(rangwahl==2)
    {
    format(fInfo[rangwahl][rang2], 30, "%s", inputtext);
    }
    else if(rangwahl==3)
    {
    format(fInfo[rangwahl][rang3], 30, "%s", inputtext);
    }
    if(rangwahl==4)
    {
    format(fInfo[rangwahl][rang4], 30, "%s", inputtext);
    }
    if(rangwahl==5)
    {
    format(fInfo[rangwahl][rang5], 30, "%s", inputtext);
    }
    if(rangwahl==6)
    {
    format(fInfo[rangwahl][rang6], 30, "%s", inputtext);
    }
    rangdialog(playerid); //Keine Ahnung, was es ab hier bedeuten soll, stand aber so, als ich es umwandelte.
    }


    }
    else
    {
    rangdialog(playerid);
    }
    }



    //Hier werden die nahmen denn gesetzt


    PAWN-Quellcode
    if(dialogid==DIALOG_Rangnamen)
    {
    if(response)
    {
    SetPVarInt(playerid,"rangwahl",0);
    if(listitem == 0)
    {
    SetPVarInt(playerid,"rangwahl",1);
    ShowPlayerDialog(playerid,DIALOG_Rangnamensetzten,DIALOG_STYLE_INPUT,"{FF9600}Rangname", "{FFFFFF}Wie möchtest du diesen Rang nennen? (max.20 Zeichen)", "Fertig", "Zurück");
    }
    if(listitem == 1)
    {
    SetPVarInt(playerid,"rangwahl",2);
    }
    if(listitem == 2)
    {
    SetPVarInt(playerid,"rangwahl",3);
    }
    if(listitem == 3)
    {
    SetPVarInt(playerid,"rangwahl",4);
    }
    if(listitem == 4)
    {
    SetPVarInt(playerid,"rangwahl",5);
    }
    if(listitem == 5)
    {
    SetPVarInt(playerid,"rangwahl",6);
    }
    }
    }



    //Hier wähle ich aus welchen ich ändern will


    stock rangdialog(playerid)
    {
    new string[500],str[50];
    new i=sInfo[playerid][leader];
    if(i==1)
    {
    format(str,sizeof(str),"Police Department");
    }
    if(i==2)
    {
    format(str,sizeof(str),"Bundeswehr");
    }
    if(i==3)
    {
    format(str,sizeof(str),"Rettungsdienst");
    }
    if(i==4)
    {
    format(str,sizeof(str),"Ordungsamt");
    }
    if(i==5)
    {
    format(str,sizeof(str),"Media AG");
    }
    if(i==6)
    {
    format(str,sizeof(str),"Grove Street");
    }
    if(i==7)
    {
    format(str,sizeof(str),"Ballas");
    }
    if(i==8)
    {
    format(str,sizeof(str),"Vagos");
    }
    if(i==9)
    {
    format(str,sizeof(str),"LS Biker");
    }
    if(i==10)
    {
    format(str,sizeof(str),"LCN");
    }
    if(i==11)
    {
    format(str,sizeof(str),"Yakuza");
    }
    if(i==12)
    {
    format(str,sizeof(str),"Atztecas");
    }
    format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1],fInfo[i][rang2],fInfo[i][rang3],fInfo[i][rang4],fInfo[i] [rang5],fInfo[i][rang6]);
    ShowPlayerDialog(playerid,DIALOG_Rangnamen,DIALOG_STYLE_LIST,str,string,"Weiter","Beenden");}

  • Ja weiß auch nich twarum er alles aufeinmal so zusammen geschoben hat


    na das problem ist das ich einen string hier reinsetzte


    format(fInfo[rangwahl][rang1], 30, "%s", inputtext);



    aber wenn ichj ihn auslese nix angezeigt wird


    format(string,sizeof(string),"Rang 1: %s\nRang 2: %s\nRang 3: %s\nRang 4: %s\nRang 5: %s\nRang 6: %s",fInfo[i][rang1],fInfo[i][rang2],fInfo[i][rang3],fInfo[i][rang4],fInfo[i] [rang5],fInfo[i][rang6]);

  • Ja da lag der Fehler :/



    Wie speicher ich das am besten ?


    format(query,sizeof(query),"UPDATE fraktion SET Rang1='%s' WHERE id='%i'",fInfo[fLeader][rang1],fInfo[fLeader][fraktionid]);
    mysql_function_query(dbhandle,query,false,"","");


    so funktioniert das nicht :/

    Einmal editiert, zuletzt von Gurkie94 ()

  • Schön peinlich :whistling:


    Der query war zu klein :D



    Okay aber mich würde noch was interessieren


    jetzt muss ich ja immer
    fInfo[i][rang1]


    oder



    fInfo[i][rang2]
    nutzen kann ich das nicht auch vereinfachern ?



    new rang=1;
    fInfo[i][rang]


    und später sucht er sich denn nur denn rang raus mit der zahl die dort eingetragen wir also 1=Rang1 usw.