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):
(http://zaslike.com/files/evof2nmwk6yfnu62os5.png)
(http://zaslike.com/files/h4km0195bexgbq5d1k2.png)
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.
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