Jump to content
  • 0

pomoc Poraďte mi prosím jak načíst z .txt souboru pickupy do proměnný


Dominik Rozporka

Dotaz

Čau poraďte mi prosím jak načíst z domy.txt souboru pickupy do proměnný

soubor domy.txt má 350 řádků

představuju si to v tý proměnný tak že by to bylo v poli prostě že:

new domy[350]

a já nevim jak si to ulehčit než psát furt tohle:

domy[0]=CreatePickup(1273, 1, 2056.461669, 2665.161621, 10.820312, -1);
domy[1]=CreatePickup(1273, 1, 2036.993774, 2664.174316, 10.820312, -1);

a tak dále...........

proto to chci ze souboru načíst každý samotný příkaz do polí.

dole je ten soubor domy.txt

jo a hlavně aby se ty pickupy zoobrazili ve hře

jak to mám teda udělat?

domy.txt

Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0

Netestované:

new subor = fopen("domy.txt, io_read), string[128], i;

while(fread(subor, string))
{
    format(domy[i++], 128, "%s", string);
}
fclose(subor);

 

Aha toto vlastne fungovať nebude, lebo ty do tej premennej potrebuješ ID pickupu.. A to zistiš len ked sa vyvola kod a vytvori sa pickup v hre..

Edited by Sanios
Link to comment
Share on other sites

  • 0

Inu, jelikož se ten řádek nemění, tak nejjednoduší bude způsob takový, že si vytvoříš pomocnou proměnnou a pak proměnné pro údaje, do které budeš ukládat to co jsi přečetl a následně vytvářet pickup. 

Tady budeš muset již použít funkce pro práci se stringem

 

	new id[350], x = - 1;
	new model; // do této proměnné budeme ukládat model pickupu
	new type; // typ spawnu
	new Float:X; // X souřadnice
	new Float:Y; // Y souřadnice
	new Float:Z; // Z souřadnice
	new virtualworld; // virtuální svět pro pickup
	new File:souborDomy = fopen("domy.txt", io_read); // otevřeme soubor
	if(souborDomy) // pokud úspěšně načetl soubor
	{
	    new radek[256]; // sem budeme ukládat celý řádek
	    while(fread(souborDomy, radek)) // a budem říst řádek po řádku až do konce
	    {
	        new hodnoty[256], i, hodnota[8], start = 0, count;
			strmid(hodnoty, radek, 13, strlen(radek) - 4); // ořežeme pvůdoní string o CreatePickup( & );
			// to číslo 4 je tam proto, že se jako znaky počítá i \r\n
			while((i = (strfind(hodnoty, " "))) != -1) // ořežeme přebytečné mezery
			{
			    strdel(hodnoty, i, i + 1);
			}
			// teď získáme všechny informace a zapíšeme je do proměnných
			for(i = 0; i < strlen(hodnoty); i++)
			{
				if(hodnoty[i] == ',' || hodnoty[i] == EOS) // pokud najde čárku
				{
					strmid(hodnota, hodnoty, start, i);
					start = i + 1;
				    count++;
				    switch(count)
				    {
				        case 1: model = strval(hodnota);
				        case 2: type = strval(hodnota);
				        case 3: X = floatstr(hodnota);
				        case 4: Y = floatstr(hodnota);
				        case 5: Z = floatstr(hodnota);
				        case 6: virtualworld = strval(hodnota);
				    }
				    format(hodnota, 8, "");
				}
			}
			id[++x] = CreatePickup(model, type, X, Y, Z, virtualworld);
	    }
	}
Funguje to správně, zkoušel jsem to

PS: pickupy se ti ukládají do proměnné id, ale musíš jí nastavit jako globální, zbytek dej do OnGameModeInit nebo kam potřebuješ

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...