-
ü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? :(
-
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?
-
Í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 :/
-
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.
-
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:
http://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;
}
-
Player_LoadString
-
Szerintem az enum-al lesz gondja, hiszen nem szám alapú, hanem szöveges változóról beszélünk.
-
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!
-
Integer változóba nehezen megy ez szöveg:\'D
dini_Get -el nyomd az indok beolvasását és akkor szép lesz.
-
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.