Jump to content

Vysvětlení cyklusu for


AvestX

Recommended Posts

Dobrý večer.

Ano, je zde už tut na 'cyklus for' ale není přesně popsáno jak ho použít a co to dělá, já se tedy rozhodl vytvořit vlastní TuT a alespon trochu nás přiblížit k cyklusu for..

Kdyby se to administrátorovy nebo moderátorovy nelíbylo může to locknout :) no proč to vlastě říkám že ..


použití jaké se spíše využívá:

for(new i; i< MAX_PLAYERS; i++) // 500X za sebou to co je pod tím (MAX_PLAYERS je předefinovaná 500 takže nemusíme dávat MAX_PLAYERS ale 500)
{ // Otevřeme
SendClientMessage(i, 0xFFFFFFFF, "Ahoj jsem napsal už 500x !"); // Napíšeme 500x zprávu
} // Ukončíme, čímž co bude pod tímto už nebude 500x


Nyní jsme přišli nato jak to využít .. ale ukážu vám ještě jeden příklad jak ulehčit aby jsme nemuseli mít zbytečné řádky:

Nahoře v modu / filerscriptu si uděláme promenu auta (třeba)

new Auticka[10]; // Vytvoříme proměnu 10 Aut

a do OnGameModeInit dáme

Auticka[0] = AddStaticVehicle(0,0,0,0,0,0,0); // První auto
Auticka[1] = AddStaticVehicle(0,0,0,0,0,0,0); // Druhé auto
Auticka[2] = AddStaticVehicle(0,0,0,0,0,0,0); // Třetí auto
Auticka[3] = AddStaticVehicle(0,0,0,0,0,0,0); // Čtvrté auto
Auticka[4] = AddStaticVehicle(0,0,0,0,0,0,0); // Páté auto
Auticka[5] = AddStaticVehicle(0,0,0,0,0,0,0); // Šesté auto
Auticka[6] = AddStaticVehicle(0,0,0,0,0,0,0); // Sedmé auto
Auticka[7] = AddStaticVehicle(0,0,0,0,0,0,0); // Osmé auto
Auticka[8] = AddStaticVehicle(0,0,0,0,0,0,0); // Deváté auto
Auticka[9] = AddStaticVehicle(0,0,0,0,0,0,0); // Desáté auto

a pod to si dáme třeba PaintJoby:

for(new car; car < 10; car ++) // Pro všech 10 aut
{
ChangeVehiclePaintjob(Auticka[car], 2); // Dáme pro všechny auta, vidime tam misto cisla "car" to znamená ze sme to dali vsem autum..
}


 

Nebo třeba WantedLevel List (který sem tet delal do modu :d)

dcmd_wllist(playerid, params[])
{
#pragma unused params
   if(Zamestnani[playerid] == 1 || Zamestnani[playerid] == 2 || Zamestnani[playerid] == 3)
{
	for(new i=0; i< MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i) && GetPlayerWantedLevel(i) > 0)
	    {
	        new k[150];
	        format(k, 150, "Jméno '%s' [iD] | WantedLevel: %d",Jmeno(i), i, GetPlayerWantedLevel(i));
	    }else SendDrawMessage(playerid, "Na serveru neni zadny kriminalnik !");
	}
}else SendDrawMessage(playerid, "Nejsi ochrance zakona !");
return 1;
}

Omlouvám se zato povolani, ale kdyz to nekdo chce do modu pro policisty (nejaky novacek)

 

Doufám ze jste to alespon trochu pochopili ... na vseljake otazky se ptejte ...
Link to comment
Share on other sites

Chyba to není, spíš je to hlcení serveru. Pawn je více méně API a opravdový SA-MP je C++ od Kyemana, který zpracovává dotazy z pawn a odesílá mu zpět výsledky. Takže je skoro vše ještě kontrolováno samotným serverem. Třeba CreateObject(55469544694, X, Y, Z, rx, ry, rz); vám v 0.3a už od Bety (nwm teď které) vyhodí invalid object id a do závorky dosadí hodnotu 55469544694.

 

No to je ale teorie chování SA-MP serveru vůči PAWN scriptům.

Myslím, že bys ten TUT udělal lépe, toto se mi zdá moc statické. Proč na začátku vytváříš tolik stejných aut, u kterých pouze měníš proměnnou, ale jinak jsou stejné a nedáš pod to jak ulehčit?

 

....sakra SLOH "lol" :boss:

5/10

Link to comment
Share on other sites

Kdyby někdo uměl C++ jako Kyeman tak a věděl by jak to chodí v těch cyklech a proměnách + jak se to všechno děje měli by jsme české sampy kdyby jsme nebyli líní.

Link to comment
Share on other sites

máš tam chybu........ říkaš že 500x napišeš zprávu a ne že to odešleš každemu hráči .... i nepřipojenemu :d

Nj :d, když chceš aby to nespamovalo a odeslalo všem stačí

for(new blbec; blbec < 500; blbec++)

{

if(IsPlayerConnected(blbec))

{

Funkce pro všechny připojené na serveru

}

}

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...