Szerző Téma: String a stringben?  (Megtekintve 1228 alkalommal)

Nem elérhető Jazi

String a stringben?
« Dátum: 2015. Október 23. - 21:03:51 »
0 Show voters
üdv.
A következő problémán töröm a fejem napok óta, de nem sikerül rájönnöm mi lehet a gond...
 

CMD:miazindok(playerid, params[])
{
    new str[256];
    format(str, sizeof(str), \"Ezzel az indokkal bannoltak ki: %s\", PlayerInfo[playerid][bannindok]);
    SendClientMessage(playerid, -1, str);
    return 1;
}

 
Egy ini fileból szeretnék kiolvastatni egy mondatot, azonban ha beírod a parancsot, semmit nem ír ki. Mit rontottam el?  :(

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
String a stringben?
« Válasz #1 Dátum: 2015. Október 23. - 21:36:14 »
0 Show voters
A parancs tökéletes, viszont PlayerInfo[playerid][bannindok] változó üres, semmi szöveget nem tárol benne, gondolom felmentél, beírtad a parancsot és semmit nem írt ki. Azért nem írja neked ki az indokot mert a parancsnál nem kérdezed le a játékosnak, hogy mi az indok.. te csak simán a változót raktad be ami üres, kérdezd le az indokot a fájlból és akkor működni fog. Milyen mentést használsz? dini?

Nem elérhető Jazi

String a stringben?
« Válasz #2 Dátum: 2015. Október 23. - 23:08:08 »
0 Show voters
Így van ini-t.
Egyébként még a gamemode lején kiolvastatom az elmentett indokot, és ha nem szöveges file-t kell kiolvasni, akkor tökéletesen működik ez a megoldás, csak magát a mondatot nem akarja valamiért beilleszteni a stringbe. Mint ha nem %s-el kéne beilleszteni hanem valami mással, de utána olvastam és csak az van :/
« Utoljára szerkesztve: 2015. Október 23. - 23:18:34 írta Jazi »

Nem elérhető Daniii

  • 144
    • Profil megtekintése
String a stringben?
« Válasz #3 Dátum: 2015. Október 23. - 23:23:27 »
0 Show voters
De miért az enumbol olvasod ki az indokot?A .ini kiterjesztésű fájlból kell.
Példa:
 
dini_Int(ide a fájl változója, \"Ide, amelyik sorba mentetted a stringet.\");

 
Teljes:
 
CMD:miazindok(playerid, params[])
{
    new str[256];
    format(str, sizeof(str), \"Ezzel az indokkal bannoltak ki: %s\", dini_Int(ide a fájl változója, \"Ide, amelyik sorba mentetted a stringet.\"));
    SendClientMessage(playerid, -1, str);
    return 1;
}

 
Bocsi, ha valamit rosszul írtam.Este írtam.Ha hibát találsz szólj.

Nem elérhető Jazi

String a stringben?
« Válasz #4 Dátum: 2015. Október 24. - 00:01:02 »
0 Show voters
Nos ha jól értelmeztem akkor erre gondoltál:
 
dini_Int(ide a fájl változója, \"Ide, amelyik sorba mentetted a stringet.\");

 
Nos az nálam akkor feltételezhetően így néz ki:
 
INI_Int(bannindok,\"Indok\")

 
Ezzel a verzióval
 
    CMD:miazindok(playerid, params[])
    {
        new str[256];
        format(str, sizeof(str), \"Ezzel az indokkal bannoltak ki: %s\", INI_Int(bannindok,\"Indok\"));
        SendClientMessage(playerid, -1, str);
        return 1;
    }

 
Ez az eredmény:
\"width=500http://kepfeltoltes.hu/151023/faszom_www.kepfeltoltes.hu_.png[/img]
Egyébként a mode elején így hívom elő abból a file-ból az adatokat:
 
#define COPPATH \"Regizve/Bannoltak/%s.ini\"

 

enum pInfo
{
bann,
bannindok
}

 

forward LoadBannoltUser_data(playerid,name[],value[]);
public LoadBannoltUser_data(playerid,name[],value[])
{
     INI_Int(\"Bann\",PlayerInfo[playerid][bann]);
     INI_Int(\"Indok\",PlayerInfo[playerid][bannindok]);
     return 1;
}
stock UserBannoltPath(playerid)
{
        new string[128],playername[MAX_PLAYER_NAME];
        GetPlayerName(playerid,playername,sizeof(playername));
        format(string,sizeof(string),COPPATH,playername);
        return string;
}

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
String a stringben?
« Válasz #5 Dátum: 2015. Október 24. - 00:41:20 »
0 Show voters
Player_LoadString

Nem elérhető Jazi

String a stringben?
« Válasz #6 Dátum: 2015. Október 25. - 00:31:38 »
0 Show voters
Szerintem az enum-al lesz gondja, hiszen nem szám alapú, hanem szöveges változóról beszélünk.

String a stringben?
« Válasz #7 Dátum: 2015. Október 26. - 12:48:08 »
0 Show voters
a ,,bannindok\" nak nem így kéne kinézni ha már egyszer string?
 
bannindok[32]

 
mert gondolom nem szam indokokkal bannoljatok az embereket.
Nem mellesleg
 
format(PlayerInfo[playerid][bannindok],sizeof(PlayerInfo[playerid][bannindok],\"Cheater\");

 
vagy
 
strmid(PlayerInfo[playerid][bannindok],\"Cheater\",0,strlen(\"Cheater\"),sizeof(PlayerInfo[playerid][bannindok])

 
és akkor siman kitudod iratni barmilyen uzenetben..
 
new uzi[64];
format(uzi,\"Kilettel bannolva! Indok: %s\",PlayerInfo[playerid][bannindok]);
SendClientMessage(kinek,-1,uzi);

 
a parancs tényleg rendben van viszont!
« Utoljára szerkesztve: 2015. Október 26. - 12:50:41 írta Kyosuke_Hiroshi »

String a stringben?
« Válasz #8 Dátum: 2015. Október 27. - 14:19:14 »
0 Show voters
Integer változóba nehezen megy ez szöveg:\'D
dini_Get -el nyomd az indok beolvasását és akkor szép lesz.

String a stringben?
« Válasz #9 Dátum: 2015. Október 30. - 17:59:01 »
0 Show voters
    forward LoadBannoltUser_data(playerid,name[],value[]);
    public LoadBannoltUser_data(playerid,name[],value[])
    {
         INI_Int(\"Bann\",PlayerInfo[playerid][bann]);
         INI_String(\"Indok\",PlayerInfo[playerid][bannindok], 32);
         return 1;
    }
     
    stock UserBannoltPath(playerid)
    {
            new string[128],playername[MAX_PLAYER_NAME];
            GetPlayerName(playerid,playername,sizeof(playername));
            format(string,sizeof(string),COPPATH,playername);
            return string;
    }

 
Ha szöveget akarsz betölteni akkor INI_String-et kell, hogy használj.Az INI_Int egész számokat(Integereket) tölt be.
A 32 a végén az a cellák száma.Szerintem elég a 32 mivel indoknak általában rövid szöveget szoktak megadni, de ha kevés akkor növeld.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal