Právě je stř 23. kvě 2012 11:36:30
Hosting WEDOS.cz
SLEVA 25% (slevový kód:PAWNO25)

Nejnovější témata:
[INC]AddAmmo od QWER
Bannery od Sanfu
[INC]Turbo Enter-Exit System od SURANY_MORE
[Stránka] Hostingu SA-MP od Ewwe
[HELP] Skrytie TextDrawu od Om3n

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ů: 14 ] 

Hodnocení:
Super 67%  67%  [ 6 ]
Něco mně tam nesedí (napiš co) 11%  11%  [ 1 ]
Slabé 22%  22%  [ 2 ]
Celkem hlasů : 9
Autor Zpráva
 Předmět příspěvku: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:26:35 
Moderátor
Moderátor
Uživatelský avatar
Registrován: čtv 11. čer 2009 12:47:03
Příspěvky: 2228

Zdravím Vás,
Tento tut píšu opět proto, že jsem tu kdesi viděl zbytečně zapodmínkovaný script.

TIP: Pro přehlednost kódu si můžete najít můj návod na ZÁVORKOVÁNÍ A TABOVÁNÍ

Jdeme na to:
_________________________________________________
Nejprve zredukuje počet podmínek obsahujících IsPlayerConnected. Je tu na to tut od QWERa, je pěkně popsaný, takže to nemá cenu psát znovu a jenom Vás tam zaodkazuji.
KLIK
_________________________________________________
To sáme uděláme i s dalšími podobnými funkcemi.
Př.:
Kód:
OnPlayerExitVehicle(playerid, vehicleid) {
if(IsPlayerInAnyVehicle(playerid)) {
... kod ...
}
return 1;
}

Máme script, který naběhne, při vystoupení hráče z auta. Máme v něm podmínku, jestli je v autě. Ta podmínka je tam zbytečná. Přece, když nebude v autě, nemůže z něj vystoupit.
A takto to chodí i u dalších případů.
_________________________________________________
A teď přejdeme k další věci.
Ukážu Vám nejdřív pár případů, které pak popíšu.
Spoiler:
OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
//začátek oblasti//
Kód:
if(dialogid == 0) {
if(response == 1) {
  ... kod ...
}
}
else if(dialogid == 1) {
if(reponse == 1) {
  ... kod ...
}
}
else if(dialogid == 2) {
if(reponse == 1) {
  ... kod ...
}
}
//konec oblasti//
... blabla, tady můžou být další dialogy...
return 1;
}

Máme 3 dialogy, ve kterých má konat nějákou akci pouze první tlačítko
V každém dialogu se nám opakuje podmínka na tlačítko.
Máte to podobné, jako je v matematice vytýkání.
Př.:
5x + 4x +5x = x * (5 + 4 + 5)
* samozřejmě dalo, by se to sečíst, ale pro příklad jsem to napsal takto. ;)
Celá levá strana je pro nás oblast těch 3 dialogů. x je naše podmínka pro tlačítko (response)
A teď Vám ukážu, jak se to dá napsat zjednodušeně podle tohoto příkladu.
Kód:
if(response == 1) {
if(dialogid == 0) {
  ... kod ...
}
else if(dialogid == 1) {
  ... kod ...
}
else if(dialogid == 2) {
  ... kod ...
}
}

TIP: Neučte se to mechanicky podle toho, jak jsem to napsal já, ale přemýšlejte, kdy se toto dá aplikovat. Nemusí to být pouze v OnDialogResponse

A ještě jeden příklad:
Spoiler:
Tento budeme aplikovat úplně stejně jako nahoře.
Kód:
public OnPlayerCommandText(playerid, cmdtext[]) {
//začátek oblasti//
if(strcmp("/prikaz1", cmdtext, true) == 0) {
if(IsPlayerAdmin(playerid)) {
  ... kod ...
}
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
if(IsPlayerAdmin(playerid)) {
... kod ...
}
return 1;
}
if(strcmp("/prikaz3, cmdtext, true) == 0) {
if(IsPlayerAdmin(playerid)) {
... kod ...
}
return 1;
}
//konec oblasti//
... tady můžete pokračovat s příkazy pro NE-Adminy ...
return 0;
}

Nyní to zkuste zjednodušit sami. Výsledek porovnejte s tím, co je v tomto spoileru.
Spoiler:
Kód:
if(IsPlayerAdmin(playerid)) {
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
}

Zvládli jste to? Pokud ano, tak Vám gratuluji. Pokud ne, zkuste si to přečíst znovu od začátku. Opět doufám, že si to nebudete pamatovat mechanicky ale že to pochopíte a budete aplikovat i na ostatní případy, které se mohou naskytnout.

Další možnost, kde by se toto mohlo aplikovat, je OnPlayerPickUpPickup (s IsPlayerAdmin, ...)
To už tu ale rozepisovat nebudu, pokud to budete chtít zkusit, zkuste a postněte sem výsledek (nemusíte kód, jen strukturu)

Doufám, že tento Vám tento TuT pomohl. Myslím, že to je lepší, než abych sem postnul nějaký kód a půlka lidí si to pouze zkopírovala a lidí, co by se to snažilo pochopit by bylo minimum.

Chyby, připomínky hlásit, dotazy posílat, podpisy dnes nedávám :D
PS: Doufám, že dnes rozbijem Rusáky
Pawnu zdar, Roman Červenka alias PeTr_AP]

_________________
Obrázek


Naposledy upravil Petr dne ned 08. kvě 2011 19:05:49, celkově upraveno 1

Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:40:11 
T - Bone Mendez
T - Bone Mendez
Uživatelský avatar
Registrován: sob 29. led 2011 0:00:16
Příspěvky: 108

pěkný, začátečníkům i mírně pokročilým to určitě pomůže ;)
i když mi to tak trochu připadá zbytečné "scratch"
dřív sem taky dělal třeba příkazy s IsPlayerConnect :D ale už sem z toho "vyrostl" :)
schrnuto: 10/10 :v:

_________________
K zamračení je potřeba 23 svalů… na vytažení pojistky granátu jen 6.
ObrázekObrázekObrázekObrázekObrázekObrázek
Anti-Lams team
Řešíme lams help topicy stylem:
• Nebudeme ti dělat kód na přání
• Nebudeme postovat celý script do tvého helpu
• Opravíme ti tvůj kód, když u tebe uvidíme snahu
Pokud souhlasíš, zkopíruj si to do podpisu


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:42:59 
Moderátor
Moderátor
Uživatelský avatar
Registrován: čtv 11. čer 2009 12:47:03
Příspěvky: 2228

hojnas2 píše:
pěkný, začátečníkům i mírně pokročilým to určitě pomůže ;)
i když mi to tak trochu připadá zbytečné "scratch"
dřív sem taky dělal třeba příkazy s IsPlayerConnect :D ale už sem z toho "vyrostl" :)
schrnuto: 10/10 :v:


Zbytečné to jako fakt není. Když budeš dělat něco většího, tak přece nebudeš přeplácávat mód zbytečnýma podmínkama. Budeš mít delší kód (hůř přehledný) a také méně optimalizovanější.

_________________
Obrázek


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:45:34 
Moderátor
Moderátor
Registrován: čtv 28. dub 2011 18:53:54
Příspěvky: 1460

Hm, a není jedno kolik je podmínek ? Btw vím že zkušenější pawneři to dělají takhle, takhle to dělám taky ale když jsem začínal tak jsem měl hafo podmínek a už jsem z toho vyrostl. Jinak shrnuto, tohle je TuT, není to CTRL+C a CTRL+V, nedá se na tom nic zkazit :D 10/10

_________________
Používejte mozek! Snadněji tak vyřešíte záhadu Schrödingerovy kočky.


Obrázek


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:47:51 
T - Bone Mendez
T - Bone Mendez
Uživatelský avatar
Registrován: sob 29. led 2011 0:00:16
Příspěvky: 108

Roman Červenka píše:
hojnas2 píše:
pěkný, začátečníkům i mírně pokročilým to určitě pomůže ;)
i když mi to tak trochu připadá zbytečné "scratch"
dřív sem taky dělal třeba příkazy s IsPlayerConnect :D ale už sem z toho "vyrostl" :)
schrnuto: 10/10 :v:


Zbytečné to jako fakt není. Když budeš dělat něco většího, tak přece nebudeš přeplácávat mód zbytečnýma podmínkama. Budeš mít delší kód (hůř přehledný) a také méně optimalizovanější.

já sem to myslel jako že to je zbytečný protože na to by měl každej jendou přijít sám, že má mod, kterej není vůbec optimalizovanej, že třeba žere 4.0 CPU a podle toho by si měl uvědomit, že to nějak musí optimalizovat a tohle by mu mělo dojít ;)

_________________
K zamračení je potřeba 23 svalů… na vytažení pojistky granátu jen 6.
ObrázekObrázekObrázekObrázekObrázekObrázek
Anti-Lams team
Řešíme lams help topicy stylem:
• Nebudeme ti dělat kód na přání
• Nebudeme postovat celý script do tvého helpu
• Opravíme ti tvůj kód, když u tebe uvidíme snahu
Pokud souhlasíš, zkopíruj si to do podpisu


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: ned 08. kvě 2011 15:50:07 
Jeffery Wilson "OG LOC"
Jeffery Wilson "OG LOC"
Registrován: sob 10. črc 2010 12:57:43
Příspěvky: 1019
Bydliště: Doma

Citace:
pěkný, začátečníkům i mírně pokročilým to určitě pomůže ;)


no tydle chyby dělají i pokročilý pawneři však se podívej na ruzné tuty a scripty ... tvurce toho scriptu pawno umí ale pořád to dělá opačně než tu napsal Petr...

Ale hlavně mi neříkej že ti to děláš dobře ...

Jinak k tutu .. přehledný pomůžeto snad se někdo i přiučí

10/10 jak jinak :)

_________________
CPU : Intel Core i7- 3820k 8x3,6GHzGrafika : nVIDIA GTX 680 2GB RAM :16GB 4x4GB HDD : SATA III IntelliPower PMR WD20EARX 2TB

Moje PC je na hry , zatím rozjedu úplně všecky hry...

Kód:
[b]$i = 0;
while($i==2) {
$i ++;
echo"Sem zvědavej kdy to skončí.";
$i --;
}
[/b]


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 8:16:54 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4549
Bydliště: Blava ne ?

Ale no tak !
Citace:
if(IsPlayerAdmin(playerid)) {
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
}


si mal

if(IsPlayerAdmin(playerid)) {
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
else if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
else if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
}

inač mne to nepomohlo :D ( :hehe: nwm prečo :D )
inač pekné

_________________
Moja tvorba http://pastebin.com/u/PatchwerkQWER
Ak chceš byť lepší ako ja, a budeš sa snažiť budeš lepší ! Už len pri pomyslení na to, že si lepší než ja, ťa posunie dopredu. Ale nezabudni ! Musíš sa snažiť. A potom zistíš to, čo vie pár ľudí - že som lama a moje scripty sú nič oproti tomu, čo môžeš vytvoriť ty. Tak sa prekonaj ako kedysi ja, a natri to všetkým ! Uprav budúcnosť pre svoj prospech


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 9:06:17 
Nováček
Nováček
Registrován: ned 17. říj 2010 9:32:01
Příspěvky: 22

Najvhodnejsie je sa uplne zbavit pouzivania funkcie strcmp pri spracovavani prikazov :)

_________________
Obrázek


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 9:11:17 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4549
Bydliště: Blava ne ?

prečo ?

_________________
Moja tvorba http://pastebin.com/u/PatchwerkQWER
Ak chceš byť lepší ako ja, a budeš sa snažiť budeš lepší ! Už len pri pomyslení na to, že si lepší než ja, ťa posunie dopredu. Ale nezabudni ! Musíš sa snažiť. A potom zistíš to, čo vie pár ľudí - že som lama a moje scripty sú nič oproti tomu, čo môžeš vytvoriť ty. Tak sa prekonaj ako kedysi ja, a natri to všetkým ! Uprav budúcnosť pre svoj prospech


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 17:11:21 
T - Bone Mendez
T - Bone Mendez
Uživatelský avatar
Registrován: úte 03. lis 2009 22:16:28
Příspěvky: 95

Uz len kvoli tomu, ze strcmp je funkcia a la char by char, teda nie je 100x setrina.

_________________
[TuT]Anti-Godmode
[TuT]Tuning auta - All in one
[TuT]Jednoduche rozmiestnovanie aut
[TuT]ESC Pauza
[TuT]Premenovanie (vratane DUDB)
[TuT]Tag, untag, a ine hratky s SetPlayerChatBubble
[INC]Prehadzovanie zbrani v aute (Q+E)

Obrázek


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 17:14:44 
Frank Tempenny
Frank Tempenny
Registrován: sob 10. led 2009 22:02:03
Příspěvky: 1614

QWER píše:
Ale no tak !
Citace:
if(IsPlayerAdmin(playerid)) {
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
}


si mal

if(IsPlayerAdmin(playerid)) {
if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
else if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
else if(strcmp("/prikaz2, cmdtext, true) == 0) {
... kod ...
return 1;
}
}

inač mne to nepomohlo :D ( :hehe: nwm prečo :D )
inač pekné

ano mas pravdu ale v tomto pripade tam ma return takze neni potreba

jinak kdyz mas promenou a porovnavas vice jak dve hodnoty vyplati se pouzit switch ktery je pro mne i prehlednejsi

_________________
Poděkujte :
Daffymu za ukradení a zveřejnění rze6, rze7, rze7.3, rze7.4
Luk_assovi za cracknuti rze7.3 rze7.4 rze8
Crispemu za to že to luk_assovi zaplatil. A zveřejnil cracklou rze8
cz_dominik007 za to že zveřejnil craknutou rze7.3 rze7.4
Získání rze8 zatím neni úplně jasné bylo to z přestupu z cpor.eu na (stary) xel.cz

play.superparba.eu:7777
http://www.superparba.eu


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: pon 09. kvě 2011 17:17:55 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4549
Bydliště: Blava ne ?

Jj upozornil ma bzučo...

_________________
Moja tvorba http://pastebin.com/u/PatchwerkQWER
Ak chceš byť lepší ako ja, a budeš sa snažiť budeš lepší ! Už len pri pomyslení na to, že si lepší než ja, ťa posunie dopredu. Ale nezabudni ! Musíš sa snažiť. A potom zistíš to, čo vie pár ľudí - že som lama a moje scripty sú nič oproti tomu, čo môžeš vytvoriť ty. Tak sa prekonaj ako kedysi ja, a natri to všetkým ! Uprav budúcnosť pre svoj prospech


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: sob 11. čer 2011 9:36:17 
T - Bone Mendez
T - Bone Mendez
Uživatelský avatar
Registrován: ned 12. pro 2010 15:05:55
Příspěvky: 65

TVL :O
toto ma nikdy nenapadlo, hoci dialogy nepouzivam, ale hned z toho som vycital zeto je jednoduchsie
pre zaciatocnikov je skôr lepsi sposob ten s rozpisovanim vsetkeho aby sa to dalo pochopit, ale pre skusenejsich pawnerov to je napomocne(me to pomohlo)
MOJE HODNOTENIE: 10/10

_________________
Moje druhé meno je 1M2A3K4S!


Offline
 Profil  
 Předmět příspěvku: Re: [TuT] Redukujeme počet podmínek
PříspěvekNapsal: sob 11. čer 2011 10:53:56 
T - Bone Mendez
T - Bone Mendez
Uživatelský avatar
Registrován: úte 07. čer 2011 11:48:49
Příspěvky: 112
Bydliště: Nitra

Good TUT 10/10

_________________
Anonymous, do toho!!!


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ů: 14 ] 

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: