Jump to content

[F]Lekce 5. - Problematika cyklu


ffredyk

Recommended Posts

  • Majitel

<p>Pisu to proto, ze stale vidim ve scriptech co mi lidi posilaji na ICQ, ze v nich maji chyby to, ze cykly skoro vsichni delaji spatne.. Proto, uz jsem to nemohl vydrzet a musel jsem napsat tento tut.. Cely tut venuju cyklum i prave proto, ze tahle problematika muze nekomu prijit slozitejsi nez se zda.. Ovsem pokud si zapamatujete zakladni pravidla o tvorbe smycek (cyklu) nebudete mit problemy.

 

OK. Podivame se na zakladni smycku, ktera vypise jmena vsech hracu na serveru do logu z pohledu novacka (tedy jak by to udelala vetsina z vas na ICQ)


for(new i=0;i

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

ja while moc nepoužívam, dakujem za vysvetlenie ale radšej si to trénujem v praxi, to znamená že ked mám

new pocet;

while(pocet != 100){

pocet++;

}

 

bude ten cyklus opakovať dovtedy pokiaľ nebude premena pocet na 100 ?

ešte si mal pridať večné chyby ako npr. IsPlayerConnected

 

ak ťa smiem doplniť

Ak máte 500 slotový server je dobré využívať miesto GetMaxPlayers() alebo MAX_PLAYERS premenu viz na príklade

hore

new Pripojenych;

 

do onplayerconnect

Pripojenych++;

do onplayerdisconnect

Pripojenych--;

a potom cyklus

for(new i; i...
} 

 

Dalej, ak chcete zlepšovák tu je

 

#define ForConnect(%0,%1) for(new %0; %0<%1; %0++) if(IsPlayerConnected(%0))

 

&

#define ForEx(%0,%1) for(new %0; %0<%1; %0++)

 

využitie

ForConnect(i,GetMaxPlayers()){

printf("%s %d %d"Jmeno(i),GetPlayerScore(i),GetPlayerIp(i));

}

 

a využitie ForEx

 

ForEx(i,10)

{

DestroyObject(Objects);

}

npr. admin chata (miesto move object,)

 

tut 10/10

Link to comment
Share on other sites

  • Majitel
ja while moc nepoužívam, dakujem za vysvetlenie ale radšej si to trénujem v praxi, to znamená že ked mám

new pocet;

while(pocet != 100){

pocet++;

}

 

bude ten cyklus opakovať dovtedy pokiaľ nebude premena pocet na 100 ?

 

Jo presne tak.. Jak rikam (pisu) je to jen "IFová smyčka" :lol:

Link to comment
Share on other sites

  • Majitel
ok diky to som potreboval vedieť :d a dopln tam ten môj text pod tou praktickou otázkou, možno sa to hodí :)

 

Uz jsi to napsal ty.. Mas to kousek podemnou a je to dlouhej prispevek.. Urcite na to kazdej mrkne ;)

Link to comment
Share on other sites

do onplayerconnect

Pripojenych++;

do onplayerdisconnect

Pripojenych--;

a potom cyklus

for(new i; i...
} 

 

A napadlo te, ze kdyz se pripoji hrac s id 0 pak 1 pak 2 pak 3 a ten s ID2 se odpoji tak to prejede jen 0,1,2 a na 3. bude zapomenuto ? ...

 

 

 

A ja sem while pouzil kdyz jsem projizdel vsechny zaregistrovany uzivatele na serveru (jejich nicky jsem mel v textaku) .

Link to comment
Share on other sites

  • 4 weeks later...

slo by to takto

 

new connected;

 

connect >

connected ++;

disconnect >

connected --;

a pak

for(new i=0;i{
new idPlus;
if(IsPlayerConnected(i+idPlus))
{
funkce (pouzivat 'i+idPlus')
} else idPlus ++;
}

 

ale nevim ..

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...