Jump to content
  • 0

pomoc [Help] fRead


Polisek

Dotaz

Zdravím dnes ráno jsem začal dělat na takovém menším FS.

Bez toho aniž bych používal includ jakože je třeba dini.

V tomto script používám i možnost ukládaní a načítaní.

Ukládání funguje bez problému ale je tu problém při fRead.

Jakože nevím zda je to tím či jsem už zapoměl na klasiku co používám strašně includu nebo jsem prostě slepej a nevidím jasnou chybu :d

Člověk si jednou řekne stop includum a ono nic :d

Zde je code:

 

Načtení ze souboru

Problem:Actoři se do hry nenačtou

stock NacteniActora()
{
    new vypsat[40][40],string[200];//Tato proměna je větší protože jsem chtěl dát ještě víc možností pro ukladaní ale řekl bych že toto stačí pro ukázku.
    new File:soubor = fopen("PLSSystemActor.txt", io_read);
    if(soubor)
    {
        new idac = 1;
        while(idac < MAX_ACTORS)
        {
            fread(soubor, string);
            split(string, vypsat, ',');
            ActorInfo[idac][aSkin] = strval(vypsat[0]);
            ActorInfo[idac][aX] = floatstr(vypsat[1]);
            ActorInfo[idac][aY] = floatstr(vypsat[2]);
            ActorInfo[idac][aZ] = floatstr(vypsat[3]);
            ActorInfo[idac][aA] = floatstr(vypsat[4]);
            {
                ActorInfo[idac][aIDA] = CreateActor(ActorInfo[idac][aSkin],ActorInfo[idac][aX],ActorInfo[idac][aY],ActorInfo[idac][aZ],ActorInfo[idac][aA]);

            }
            idac++;
            print("PLS System verze 0.1");
        }
    }
    return 1;
}

K usnadnění práce použivám celkej použivanej stock

split

stock split(const strsrc[], strdest[][], delimiter)
{
    new i, li;
    new aNum;
    new len;
    while(i <= strlen(strsrc))
    {
        if(strsrc[i] == delimiter || i == strlen(strsrc))
        {
            len = strmid(strdest[aNum], strsrc, li, i, 128);
            strdest[aNum][len] = 0;
            li = i+1;
            aNum++;
        }
        i++;
    }
    return 1;
}

Soubor ve scriptfiles obsahuje toto:

Skin,  X ,         Y          Z         Angle
294,2824.901123,-1905.060058,10.937500,94.667304
294,2824.705322,-1900.914184,10.937500,94.667304
294,2825.041015,-1896.078125,10.937500,94.667304
294,2824.216796,-1891.582641,10.937500,94.667304
Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0
//deleted

toto používam ja - funguje to.

 

načíta to tie dáta ktoré tam máš, potom si ešte do ongamemodeinit / filerscript init pridaj

new total_actors_from_files=0;
total_actors_from_files += LoadActorsFromFile(CESTA_K_SUBORU);
Edited by Bigweb
Link to comment
Share on other sites

  • 0

stock NacteniActora()
{
new File:soubor = fopen("PLSSystemActor.txt",io_read);
if(soubor)
{
new string[128];
for(new idac=1;idac<sizeof(ActorInfo) && fread(soubor,string);idac++)
{
ActorInfo[idac][aSkin] = strval(string);
new pos = chrfind(',',string)+1;
ActorInfo[idac][aX] = floatstr(string[pos]);
pos = chrfind(',',string,pos)+1;
ActorInfo[idac][aY] = floatstr(string[pos]);
pos = chrfind(',',string,pos)+1;
ActorInfo[idac][aZ] = floatstr(string[pos]);
pos = chrfind(',',string,pos)+1;
ActorInfo[idac][aA] = floatstr(string[pos]);

ActorInfo[idac][aIDA] = CreateActor(ActorInfo[idac][aSkin],ActorInfo[idac][aX],ActorInfo[idac][aY],ActorInfo[idac][aZ],ActorInfo[idac][aA]);

print("PLS System verze 0.1");
}
return 1;
}
return 0;
}

stock chrfind(n,h[],s=0)
{
new l = strlen(h);
while(s < l)
{
if(h[s] == n) return s;
s++;
}
return -1;
}

Edited by ATomas
Link to comment
Share on other sites

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