[Pomoc] I

Započeo Jσнη Ɠσтту, April 03, 2012, 16:56:57 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Skripta koju koristim: OG:RPG
Detaljan opis problema:Izbaci mi ovo ko na slici
Dio skripte:
11372 foreach (Player,i)
11370    public
To su linije
Neke slike/video za lakse dobivanje pomoci(neobavezno):


I najveci talenti gube se u neradu, zato nemoj trazit izgovor da neznas nego naÄ'i rjesenje!




11372 ti je vjerojatno 'loop u loopu' što moraš izbjegavati. Završi prvi loop koji koristi varijablu "i" pa pokreni drugi loop ako su već potrebna 2.

11370 ne razumijem, meÄ'utim ako samo piÅ¡e "public" kako si napisao, to ne znači niÅ¡ta. Public funkcija mora imati ime ?

Objasnis kako

11372 ti je vjerojatno 'loop u loopu' što moraš izbjegavati. Završi prvi loop koji koristi varijablu "i" pa pokreni drugi loop ako su već potrebna 2.
I najveci talenti gube se u neradu, zato nemoj trazit izgovor da neznas nego naÄ'i rjesenje!




Primjetio sam da u definicijama u skripti imaš macro definirani za loopove, te po tome zaključujem da vjerojatno znaš pretvoriti moj primjer u svoj macro.

Loop:

Dio koda kojim definiramo broj ponavljanja izvoÄ'enja nekih funkcija. Naprimjer for loop, while loop, do while loop.

Pretpostavljam da ti koristiš for loop.

Imaš naprimjer:

for( new i = 0; i < 10; i++ )
Ovo radi na sljedećem principu. Sa 'new i = 0' si rekao da želiÅ¡ kreirati varijablu 'i' koja iznosi 0. i < 10 znači da će se funkcija u loopu izvoditi 10 puta, odnosno tako dugo dok 'i' ne bude 10. Sa i++ si rekao da želiÅ¡ da se varijabla 'i' svakim izvoÄ'enjem povećava za 1.

Zatim možeš napraviti sljedeće:

for( new i = 0; i < 10; i++ ) printf( "%d", i ); - Ovaj dio koda će ispisati brojeve od 0 do 10 u konzolu.

Tvoj problem je što si *vjerojatno napravio nešto slično ovome.

for( new i = 0; i < 10; i++ ) { // Početak prvog loopa

printf( "%d", i );
// Neki tvoj kod

for( new i = 0; i < 5; i++ ) { // Početak drugog loopa

print( "Moram obrisati ovaj loop ovdje!" );
// Neki tvoj drugi kod
} // Kraj drugog loopa
} // Ovdje si tek zatvorio prvi loop, što znači da je i ovaj drugi u prvom.


Greška ti je u tome što si već definirao varijablu 'i' u prošlom loopu, znači u loopu koji je u gornjem nivou funkcije. Plus, loop u loopu nije dobra ideja zbog toga što compiler mora 10 puta vršiti funkciju u kojoj se po 5 puta vrše neke druge funkcije. Nadam se da ti ovo ima smisla.

Pravilan način za ovaj gornji kod bi bio:

for( new i = 0; i < 10; i++ ) {

printf( "%d", i );
// Neki tvoj kod

} // Ovdje smo zatvorili prvi loop

for( new i = 0; i < 5; i++ ) {

print( "Ovaj loop sada ima svoju 'i' varijablu!" );
// Neki tvoj drugi kod
} // Ovdje smo zatvorili drugi loop


Probaj provjeriti po svojoj skripti dal imaš ovakvih problema pa ih probaj rješiti stvarima naučenim iz ovog posta :)

Xavier

Rijeseno moze lock Hvalla
I najveci talenti gube se u neradu, zato nemoj trazit izgovor da neznas nego naÄ'i rjesenje!