Právě je úte 22. kvě 2012 10:55:57
Hosting WEDOS.cz
SLEVA 25% (slevový kód:PAWNO25)

Nejnovější témata:
[OCHRANA] FS Control [Identifikovac hack prikazov] od Om3n
[HELP] NHL 09 od MajkX
[Hlasovanie] Pridanie teamov do PICH od MajkX
[Ms 2012] NHL 2009 Remake od MajkX
[ HELP ]NPC od UpiR

Vyzkoušejte antivirus ESET Smart Security 5

Vyhledat témata bez odpovědí | Zobrazit aktivní témata Zobrazit nové příspěvky | Zobrazit vaše příspěvky


Všechny časy jsou v UTC + 1 hodina [ Letní čas ]





Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 
Autor Zpráva
 Předmět příspěvku: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 15:55:26 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

V předchozích tutoriálech jsem se zapomněl zmínit o polích. Jde s nimi velice snadno zjednodušit práce.. Také vám ukážu jak použít enum, což je vlastně laicky řečeno "pole se jmény".

Nejprve vám ukážu k čemu lze pole použít a jak ho vůbec vytvořit a pracovat s ním.

Pole můžeme využít k uložení vícero informací do jedné jediné větvící se proměnné.. V Pawn využijete především pole jednoduché a dvojrozměrné.. Já sám jsem ještě troj a více měrné pole nepoužíval, takže ani vám neřeknu zda-li to vůbec jde (mělo by).

Pole např můžete uplatnit v situaci kdy máte postaven výtah z 2 a více objektů.. Představte si situaci kdy jste si postavili do mapy výtah, ale ten výtah se skládá z více částí.. V pawn by většina lidí pro každou část výtahu vytvořila novou proměnou a ze scriptu by se mohl stát guláš plný zbytečných proměnných.

Pro zpřehlednění scriptu a dosažení stavu kdy "to máte všechno pohromadě" využijeme pole. Deklarace pole je skoro stejná jako u normální proměnné, dokonce vám řeknu, že to děláte často pokud vytváříte stringy! Ano string = pole znaků! Takže i my vytvoříme vlastně string ->
Kód:
new pole[5];


Díky tomuto kódu máme pole o velikosti 5 větví (0 - 4). takže si do něj rovnou můžeme nasázet naše objekty:
Kód:
pole[0] = CreateObject(...); //První větev
pole[1] = CreateObject(...);
pole[2] = CreateObject(...);
pole[3] = CreateObject(...);
pole[4] = CreateObject(...); //Patá větev.. Pokud nevěříte spočítejte si to :P


A dále můžeme pro pohyb výtahu použít MoveObject jako zde:
Kód:
MoveObject(pole[0],X,Y,Z,Speed);
MoveObject(pole[1],X,Y,Z,Speed);
MoveObject(pole[2],X,Y,Z,Speed);
MoveObject(pole[3],X,Y,Z,Speed);
MoveObject(pole[4],X,Y,Z,Speed);


Dále může nastat situace, že výtahy máme dva! I zde lze využít polí, a nemusíme zvětšovat počet větví! Stačí vytvořit dvourozměrné pole.

Dvourozměrné pole vytvoříme skoro úplně stejně jako pole normální, akorát jsou zde dvě sady počtu větví.
Kód:
new pole-vytah[2][5];


Nyní máme dvourozměrné pole (dvě pole v jednom).
Spoiler:
POZOR: Hodnota pole pole-vytah[0][3] může být jiná než pole-vytah[1][3]! Tzn. Větve se řadí do sebe podle toho jak jsou zapsané.. Představte si to třeba jako strom:
Obrázek
Můžete tedy počítat [2]*[5]*další větve -> a každá větev je závislá na té předchozí.

A můžeme do něj vložit naše výtahy:
Kód:
pole-vytah[0][0] = CreateObject(...);
pole-vytah[0][1] = CreateObject(...);
pole-vytah[0][2] = CreateObject(...);
pole-vytah[0][3] = CreateObject(...);
pole-vytah[0][4] = CreateObject(...);
pole-vytah[1][0] = CreateObject(...);
pole-vytah[1][1] = CreateObject(...);
pole-vytah[1][2] = CreateObject(...);
pole-vytah[1][3] = CreateObject(...);
pole-vytah[1][4] = CreateObject(...);

A zase můžeme s výtahem pohybovat jako v předchozím příkladu:
Kód:
Pohyb 1 výtahu:
MoveObject(pole-vytah[0][0],X,Y,Z,Speed);
MoveObject(pole-vytah[0][1],X,Y,Z,Speed);
MoveObject(pole-vytah[0][2],X,Y,Z,Speed);
MoveObject(pole-vytah[0][3],X,Y,Z,Speed);
MoveObject(pole-vytah[0][4],X,Y,Z,Speed);

Pohyb 2 výtahu:
MoveObject(pole-vytah[1][0],X,Y,Z,Speed);
MoveObject(pole-vytah[1][1],X,Y,Z,Speed);
MoveObject(pole-vytah[1][2],X,Y,Z,Speed);
MoveObject(pole-vytah[1][3],X,Y,Z,Speed);
MoveObject(pole-vytah[1][4],X,Y,Z,Speed);


Dobře a co když chceme udělat pole do kterého budeme přidávat hodnoty každou jinou k jinému účelu? To by jsme po chvíli museli pořád hledat jaká větev pole k čemu slouží.. Proti tomu můžeme použít enum, což je vlastně taková pomůcka jak pojmenovat větve pole!

Pokud tedy chceme vytvořit pole do kterého uložíme: Počet zabitých hráčů, početzničených aut a nějaký serverový string. Tak vytvoříme enum:
Kód:
enum SRV
{
     killed,
     destroyed,
     serverstr[120],
}

Spoiler:
Čárku dělám na každém řádku proto, že když chci do enumu něco přidat tak zapomínám, že na předchozím řádku čárka není


A nyní vytvoříme pole do kterého enum vložíme:
Kód:
new server[SRV];

Spoiler:
POZOR: Je nutno nejdříve vytvořit enum a až poté pole!


Vidíme, že pro definici počtu větví používáme název enumu. Server si počet větví odvodí z počtu zadaných hodnot do enumu.

Nyní již můžeme používat naše pole.. takže třeba do OnPlayerDeath:
Kód:
server[killed]++;


OnVehicleDeath:
Kód:
server[destroyed]++;


A nějaký příkaz pro zadání reklamy třeba:
Kód:
format(server[serverstr],120,"%s",params);


Doufám. že jsem napsal vše co jsem chtěl a na nic nezapoměl.. Ono při psaní tak velké zprávy, kdy se člověk soustředí na jednu věc, zapomíná jako prase.

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 15:58:16 
Wu Zi Mu "Woozzi"
Wu Zi Mu "Woozzi"
Registrován: ned 19. zář 2010 14:35:18
Příspěvky: 1278

pekný tutorial ;) 10/10 tvoje tuty sú večšinou dobré


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 15:58:36 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

Chris píše:
pekný tutorial ;) 10/10 tvoje tuty sú večšinou dobré


Ani jsi to nečetl..

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 15:59:13 
Wu Zi Mu "Woozzi"
Wu Zi Mu "Woozzi"
Registrován: ned 19. zář 2010 14:35:18
Příspěvky: 1278

Pravda, nečítal som to celé ale čítal som kódy a viem jak to vyzerá hodnotenie by bolo také isté


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 16:11:27 

hmmm je to good 10/10 mozno konecne uz neuvidim cez skype take mody ze je tam 500x new nieco :D :D


  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 17:23:23 
Carl Johnson "CJ"
Carl Johnson "CJ"
Registrován: stř 19. srp 2009 17:31:39
Příspěvky: 6369

ffredyk píše:
Chris píše:
pekný tutorial ;) 10/10 tvoje tuty sú večšinou dobré


Ani jsi to nečetl..

On si jen chtel napsat prispevek a je mu jedno kam :D

Hodnocení - 9/10, mohl si se třeba zmínit jak se pracuje s boolem (např.) v enumu (já to třeba jednou potřeboval a nikde to nebylo :D )


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 17:34:24 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

David píše:
ffredyk píše:
Chris píše:
pekný tutorial ;) 10/10 tvoje tuty sú večšinou dobré


Ani jsi to nečetl..

On si jen chtel napsat prispevek a je mu jedno kam :D

Hodnocení - 9/10, mohl si se třeba zmínit jak se pracuje s boolem (např.) v enumu (já to třeba jednou potřeboval a nikde to nebylo :D )

Kód:
enum SESBLB
{
     bool:apako,
}

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: úte 30. lis 2010 17:35:29 
Carl Johnson "CJ"
Carl Johnson "CJ"
Registrován: stř 19. srp 2009 17:31:39
Příspěvky: 6369

Ja to vim :D to si měl napsat nahoru :D


Offline
 Profil  
 Předmět příspěvku: Re: [F]Lekce 8 - Pole
PříspěvekNapsal: stř 01. pro 2010 17:44:50 
Kendall Johnson "Kendl"
Kendall Johnson "Kendl"
Uživatelský avatar
Registrován: úte 24. bře 2009 14:16:39
Příspěvky: 2873
Bydliště: Továrna na marmeželádu / Sklad bagrů

David píše:
Ja to vim :D to si měl napsat nahoru :D


Ono to většině lidem dojde pokud ovládaj deklaraci proměnných... Moje tuty jsou pro chytřejší lidi :P

_________________
*Brain reset*
With new brain, new personality, new ffredyk..


Offline
 Profil  
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


 Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na: