GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Jazi - 2015. október 23. - 21:03:51

Cím: String a stringben?
Írta: Jazi - 2015. október 23. - 21:03:51
ü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?  :(
Cím: String a stringben?
Írta: ZyZu. - 2015. október 23. - 21:36:14
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?
Cím: String a stringben?
Írta: Jazi - 2015. október 23. - 23:08:08
Í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 :/
Cím: String a stringben?
Írta: Daniii - 2015. október 23. - 23:23:27
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.
Cím: String a stringben?
Írta: Jazi - 2015. október 24. - 00:01:02
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;
}
Cím: String a stringben?
Írta: ZyZu. - 2015. október 24. - 00:41:20
Player_LoadString
Cím: String a stringben?
Írta: Jazi - 2015. október 25. - 00:31:38
Szerintem az enum-al lesz gondja, hiszen nem szám alapú, hanem szöveges változóról beszélünk.
Cím: String a stringben?
Írta: Kyosuke_Hiroshi - 2015. október 26. - 12:48:08
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!
Cím: String a stringben?
Írta: Tlalala - 2015. október 27. - 14:19:14
Integer változóba nehezen megy ez szöveg:\'D
dini_Get -el nyomd az indok beolvasását és akkor szép lesz.
Cím: String a stringben?
Írta: halaloszto100 - 2015. október 30. - 17:59:01
    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.