Fájl sorainak beolvasása egy megadott fájlból, és kiíratása konzol ablakban.
new
File:F = fopen(\"dini.fuck\", io_read),
str[128];
if(F)
{
while(fread(F, str))
{
print(str);
}
fclose(F);
}
Ezt kell úgy módosítani hogy a beolvasott sorokat feldarabolja valamilyen eljárás az = (egyenlõségjel) mentén, majd össze kell fûzzni egy karakterláncba a kapott eredményt amit ki kell íratni dialogba.
Sajnos egy ideje nem szkriptelek és semmi kedvem nincs tesztelgetni de hamar össze dobok valamit.
stock
akarmi(playerid, filename[])
{
new
File:F = fopen(filename, io_read), // Fájl megnyitása
str[128], // karakterlánc tárolása
dialogstring[256], // kimeneti, illetve a végeredmény tárolása
name[64], // Jelenleg nincs rá szükség csak az eljáráshoz kell
value[64]; // érték melyeket majd össze kell fûzni a dialogstring-be ha nem nulla persze karakterláncként beolvasva
if(F) // Fájl megnyitásának ellenõrzése
{
while(fread(F, str)) // Addig olvasunk amíg van sor
{
if(ini_cut(str, name, value)) printf(\"Error. line: %s\", str); // Adat ellenõrzés és darabolás
else
{
if(strval(value) != 0) // Ha nem nulla a value persze átalakítással mivel karakterláncként lett tárolva
{
strcat(dialogstring, value); // akkor összefûzés dialogstring változóba
strcat(dialogstring, \"\\n\"); // új sor jel hozzáadása
}
}
}
//print(dialogstring);
fclose(F); // A megnyitott fájl bezárása
ShowPlayerDialog(playerid, 5432, DIALOG_STYLE_MSGBOX, \" \", dialogstring, \"Ok\", \"\"); // Megjelenítés
}
return 1;
}
stock
ini_cut(line[], name[], value[], const delim = \'=\') // author by Zsolesszka
{
new
ch,
pos = 0,
pos2 = 0,
bool:valid = true;
while((ch = line[pos++]) >= \' \')
{
while(line[pos] == \' \') pos++;
if(ch == delim) { valid = false; continue; }
if(valid)
name[pos - 1] = ch, name[pos] = EOS;
else
value[pos2++] = ch, value[pos2] = EOS;
}
return valid;
}
Persze az ini_cut helyett használhatod a sscanf-et is, vagy bármi mást ami képes feldarabolni neked a beolvasott karakterláncot egy megadott karakter mentén (=).
Edit:
Késõn olvastam a hozzászólást, van rá mód hogy végig futtass egy ciklus utasítással egy enum által tárolt adatokat amit aztán szintén össze tudsz fûzni egy adott karakterláncba melyet megtudsz jeleníteni.