Právě je čtv 24. kvě 2012 6:07:10
Hosting WEDOS.cz
SLEVA 25% (slevový kód:PAWNO25)

Nejnovější témata:
[otázka] Kde spraviť mod ? od MajKlツ
Project ZDay od MajKlツ
[HELP] 3DTextLabel jen pro hráče a vozidla. od _Martin_
[Ms 2012] NHL 2009 Remake od SweS
[HELP] stock & undefined symbol od WilliamKrizak

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ů: 11 ] 
Autor Zpráva
PříspěvekNapsal: pon 08. lis 2010 13:48:45 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4559
Bydliště: Blava ne ?

Nazdar, nevidel som tu návod ako znížiť počet podmienok ;) :D tak som sa rozhodol ho napísať.

Ako znížiť Podmienky


Teória

Určite aj vy patríte k tej skupine ľudí čo pri tvorbe Admin Scriptu dajú do každého príkazu podmienku ak hráč nieje admin/ ak hráč nieje admin o levelu x.
Alebo ked je hráč vo vezení tak nemôže použiť niektoré príkazy (npr. warpy) a tak v každom príkaze ktorý vezen nemôže použiť je podmienka "if(vezenie[playerid] == 1) return SCM("Si vo vezení");". V následujúcich riadkoch si ukážeme ako sa presne tomuto vyhnúť.

Prax

Keď už nepoužívate else if [mali by ste] tak vám poradím jednoduchú vec
určite používate dcmd tak vám ukážem pár typov. Určite v onplayercommandtext máte takto (teraz ukazujem Admin System)

Kód:
dcmd(ban,3,cmdtext);
dcmd(setlevel,8,cmdtext);
dcmd(kick,3,cmdtext);
dcmd(help,4,cmdtext);


a v každom príkaze (ban,setlevel,kick) je podmienka ak hráč není admin
tak ich zmažte a urobte to takto
Spoiler:
if(IsPlayerAdmin(playerid)){
dcmd(ban,3,cmdtext);
dcmd(setlevel,8,cmdtext);
dcmd(kick,3,cmdtext);
}
dcmd(help,4,cmdtext);

a vuala o 2 podmienky menej :D
môžete to kombinovať aj s levelmy uvediem príklad
Spoiler:
if(admin[playerid] > 2)
dcmd(ban,3,cmdtext);
dcmd(setlevel,8,cmdtext);
} else if(admin[playerid] > 0){
dcmd(kick,3,cmdtext);
}
dcmd(help,4,cmdtext);

takže príkaz
ban a setlevel môže hráč použiť ak je premena admin vačšia ako 2 (čiže 3,4,5...)
príkaz kick môže použiť ak je premena admin vačšia ako 0 (čiže 1,2,3....)
a príkaz help môže použiť aj hráč aj ked nemá premenu admin

Dalej ak máte npr. je vo vezení tak takto
if(vezenie[playerid] == 0){
príkazy ktoré nemôže)

}
Ako spraviť keď hráč o jednej premeny nemôže príkaz ktorú nemôže npr. admin ?
jednoducho
if(vezenie[playerid] == 0) { // ak není vo vezení
prikazy ktoré nemôže
...
.
.
.
if(umlcany[playerid] == 0){
príkazy ktoré nemôže umlčaný a zároven aj hráč vo vezení
}}

zdá sa vám to jednoduché ? ono to je ;)


Ako znížiť Počet premenných


Teória

Tu musíte už od začiatku tvorby scriptu myslieť na to že použijete tento systém, ked má mód pár tisíc riadkov tak to už nejde tak ľahko.
Ide o to že použitím premeny na niečo dostane tá premena poradie, koľkatá je a kebyže viete počítať a použijete jednoduchý systém tak premenné na takéto veci nepoužijete.


Prax


Pozor neskúšal som či to ide zo všetkým ale s 50% vecí to ide ;)
Aj vy máte
CreateObject(...)
CreateObject(...)
CreateObject(...)
new objekt = CreateObject(...)
CreateObject(...)
CreateObject(...)
?
a potom npr.
MoveObject(objekt,x,y,z), DestroyObject(objekt)....
?
nezdá sa vám to zbytočné ?
pozrime si to na tejto ukážke
Spoiler:
CreateObject(...)
CreateObject(...)
CreateObject(...)
new objekt = CreateObject(...)
CreateObject(...)
CreateObject(...)

takto to mám v ongamemodeinit, viac objektov tam nemám tak to urobím takto
Spoiler:
CreateObject(...)//0
CreateObject(...)//1
CreateObject(...)//2
/* new objekt = */ CreateObject(...)//3
CreateObject(...)//4
CreateObject(...)//5

čiže objekt číslo 3 vytvoríme bez premeny lebo tá premena dostane hodnotu 3
a stačí iba
MoveObject(3,x,y,z), DestroyObject(3);

pri najmenšiom zauimavé nie ? Nemusíte iba objekty môžeme pickupy

Spoiler:
CreatePickup(...)//0
CreatePickup(...)//1
CreatePickup(...)//2
CreatePickup(...)//3
CreatePickup(...)//4
CreatePickup(...)//5

a potom iba v publici OnPlayerPickupUpPickup
Spoiler:
if(pickupid == 0){
SCM("Vitaj v prvom pickupe ! Dostal si raketomet")
GivePlayerWeapon(playerid,35,20)
}
if(pikupid == 5){
Ban(playerid)
PickupDestroy(5)
}

...
a tak dalej a to sme nepoužili premenné ;)
aj s autami to ide
Spoiler:
CreateVehicle(...)//0
CreateVehicle(...)//1
CreateVehicle(...)//2
CreateVehicle(...)//3
CreateVehicle(...)//4

a npr. do OnVehicleDeath daj
Spoiler:
if(vehicleid == 4) DestroyVehicle(4);
(zničí auto)
Bravo, ste u konca tohto trpkého návodu kde není nič na skopírovanie do módu



pár posledných rád
1. Prečítajte si ho znova
2. Ak používate INC ktoré vytvárajú niečo cez 1 riadok tak dajte na začiatok ongamemodeinit veci v móde (npr. pickupy) lebo ked dáte na začiatok niaky npr. House System tak sa vám to bude blbo počítať názorná ukážka
Spoiler:
public OnGameModeInit(){
názov módu
..
CreatePickup(..) 0
CreatePickup(..) 1
CreatePickup(..) 2
CreatePickup(..) 3
CreatePickup(..) 4
CreatePickup(..) 5
CreatePickup(..) 6
...
CreateVehicle(...) 0
CreateVehicle(...) 1
CreateVehicle(...)2
CreateVehicle(...)3
CreateVehicle(...)4
CreateVehicle(...)5
a potom
CreateProperty
CreateHouse...
}

3. Ak niečomu nebudete rozumieť pošlite mi SZ

Dúfam že vám pomohol

_________________
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.
"Pravda je ze ja jsem zacal delat pawn od 0.3a, ale ja jsem se neucil pawn podle wiki ale sam... " by Ceeker


Offline
 Profil  
PříspěvekNapsal: pon 08. lis 2010 15:04:07 

Krásny tut :v: ... robím to presne takto už dlhý čas :D 10/10 ... niekomu určite pomôže :D


  
PříspěvekNapsal: pon 08. lis 2010 15:06:54 
Carl Johnson "CJ"
Carl Johnson "CJ"
Registrován: stř 19. srp 2009 17:31:39
Příspěvky: 6369

Půlka věcí v tom mě ani nenapadla, super :)


Offline
 Profil  
PříspěvekNapsal: pon 08. lis 2010 15:52:41 
Marc Wayne "B-Dup"
Marc Wayne "B-Dup"
Registrován: pát 28. lis 2008 22:39:53
Příspěvky: 873

Pěkný návod, je to takové odlehčení modu, ale mě osobně tohle nevyhovuje... potom je v tom nepořádek.. no každýmu to asi bude vyhovovat jinak... dobrý! :thumbup: :)


Offline
 Profil  
PříspěvekNapsal: pon 08. lis 2010 16:37:28 
Marc Wayne "B-Dup"
Marc Wayne "B-Dup"
Uživatelský avatar
Registrován: stř 21. črc 2010 11:45:46
Příspěvky: 903

nenapadlo by mě do publicu OnPlayerCommandText dávat podmínky takovímto způsobem... zajímavé... sice pawno nedělám ale rád sem si to přečetl ... 10/10

_________________
"Na nikoho si nehraju, takže s mým chováním nemám šanci zapadnout"
"Netrpím samomluvou, jen si někdy potřebuji popovídat s někým inteligentním"


Offline
 Profil  
PříspěvekNapsal: pon 08. lis 2010 17:04:27 
Frank Tempenny
Frank Tempenny
Registrován: sob 10. led 2009 22:02:03
Příspěvky: 1615

Kód:
if(pickupid == 0){
SCM("Vitaj v prvom pickupe ! Dostal si raketomet")
GivePlayerWeapon(playerid,35,20)
}
if(pikupid == 5){
Ban(playerid)
PickupDestroy(5)
}

=>
viewtopic.php?f=8&t=6544
:prdel:
nekdy musi uspora ustoupit pred funkcnosti

ale takove uspory jako tady pises jsou minimalni ze usetris jednu promenou absolutne k nicemu a navic do z ram vezme 0.0000nic pokud chces setrit tak na cpu a to cykly for a timery (casto opakovane akce) to je to nejtezsi co tizi
a taky npc pritom si mslite ze zerou jen ram ale to se ukazuje jako samotny proces npc ale cpu to zere v samp aplikaci vim co cem mluvim sem z 20 npc udelal 5 a klesla mi zatez cpu o 15%

_________________
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říspěvekNapsal: pon 08. lis 2010 17:07:05 
Carl Johnson "CJ"
Carl Johnson "CJ"
Registrován: stř 19. srp 2009 17:31:39
Příspěvky: 6369

Divny if(pickupid == 0) kdyz tohle pouziju a vstoupim na pickup tak se hned provede script, s nejakym IsPlayerInSphere cekam 5 vterin nez se script vykona.


Offline
 Profil  
PříspěvekNapsal: pon 08. lis 2010 17:09:07 
Frank Tempenny
Frank Tempenny
Registrován: sob 10. led 2009 22:02:03
Příspěvky: 1615

David píše:
Divny if(pickupid == 0) kdyz tohle pouziju a vstoupim na pickup tak se hned provede script, s nejakym IsPlayerInSphere cekam 5 vterin nez se script vykona.

tak to nemuzes cekam 5 vterin to zase neprehanej si stoupni v RZE8.1 na pickup toho balicku pro hrace a najede ti to hned a to projizdi asi 500 IsPlayerInSphere respektive IsPlayerInRangeOfPoint

_________________
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říspěvekNapsal: pon 08. lis 2010 18:17:45 
Carl Johnson "CJ"
Carl Johnson "CJ"
Uživatelský avatar
Registrován: čtv 29. led 2009 20:03:51
Příspěvky: 4559
Bydliště: Blava ne ?

ATomas píše:
Kód:
if(pickupid == 0){
SCM("Vitaj v prvom pickupe ! Dostal si raketomet")
GivePlayerWeapon(playerid,35,20)
}
if(pikupid == 5){
Ban(playerid)
PickupDestroy(5)
}

=>
viewtopic.php?f=8&t=6544
:prdel:
nekdy musi uspora ustoupit pred funkcnosti

ale takove uspory jako tady pises jsou minimalni ze usetris jednu promenou absolutne k nicemu a navic do z ram vezme 0.0000nic pokud chces setrit tak na cpu a to cykly for a timery (casto opakovane akce) to je to nejtezsi co tizi
a taky npc pritom si mslite ze zerou jen ram ale to se ukazuje jako samotny proces npc ale cpu to zere v samp aplikaci vim co cem mluvim sem z 20 npc udelal 5 a klesla mi zatez cpu o 15%

čakal som že o tomto niečo povieš
Ja viem ;) ale to mi už niaky zelený (ty :D) uchmatol
btw ten systém cez IsPlayerInShere a ten môj je skoro rovnaký (nepoužiješ premenu) len rozchádza sa v tom ked vstúpi do pickupu, čo u mna zistuje číslo u teba pozíciu ;) ale to bola iba ukážka ako to využiť

tie cykly :D nj ale otom si už tut napísal ty btw normálne by som zabil niekoho kto použije cyklus v cykle :D alebo keď použije cyklus a pod ním ďalší cyklus (jeden cyklus na jeden script...)

btw diky :D

_________________
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.
"Pravda je ze ja jsem zacal delat pawn od 0.3a, ale ja jsem se neucil pawn podle wiki ale sam... " by Ceeker


Offline
 Profil  
PříspěvekNapsal: stř 10. lis 2010 16:11:26 
Marc Wayne "B-Dup"
Marc Wayne "B-Dup"
Uživatelský avatar
Registrován: sob 19. zář 2009 0:20:14
Příspěvky: 848
Bydliště: #define Mesto "Plzen"

Hmm.. tohle je me jeste nenapadlo, pekny 10/10
Konecne zase poradny tut, ty tuty ktere nejsou popsane a jsou tak akorat na ctrl+c,v stoji za velis prdel.

_________________
Když člověk kopíruje, trvá mu script déle než kdyby ho psal z vlastní hlavy.

[FS] Deluxe Admin Script
[FS] AntiGodmode-System
[FS] AFK-System
[FS] Fight-System
[FS] Server Lock-System
[GM] Clanwar/Training mode by NurofeN[Cz


Offline
 Profil  
PříspěvekNapsal: stř 10. lis 2010 17:31:11 
T - Bone Mendez
T - Bone Mendez
Registrován: stř 14. črc 2010 19:35:20
Příspěvky: 80

ATomas píše:
tak to nemuzes cekam 5 vterin to zase neprehanej si stoupni v RZE8.1 na pickup toho balicku pro hrace a najede ti to hned a to projizdi asi 500 IsPlayerInSphere respektive IsPlayerInRangeOfPoint

A přesně tohle je nesmyslné použití cyklu/timeru. Proč cyklit co chvilku IsPlayerInRangeOfPoint pro všechny hráče když to stačí udělat pro daného hráče jenom když vstoupí do pickupu (OnPlayerPickUp)?


Offline
 Profil  
PříspěvekNapsal: čtv 11. lis 2010 16:46:06 
Frank Tempenny
Frank Tempenny
Registrován: sob 10. led 2009 22:02:03
Příspěvky: 1615

QWER píše:
ATomas píše:
Kód:
if(pickupid == 0){
SCM("Vitaj v prvom pickupe ! Dostal si raketomet")
GivePlayerWeapon(playerid,35,20)
}
if(pikupid == 5){
Ban(playerid)
PickupDestroy(5)
}

=>
viewtopic.php?f=8&t=6544
:prdel:
nekdy musi uspora ustoupit pred funkcnosti

ale takove uspory jako tady pises jsou minimalni ze usetris jednu promenou absolutne k nicemu a navic do z ram vezme 0.0000nic pokud chces setrit tak na cpu a to cykly for a timery (casto opakovane akce) to je to nejtezsi co tizi
a taky npc pritom si mslite ze zerou jen ram ale to se ukazuje jako samotny proces npc ale cpu to zere v samp aplikaci vim co cem mluvim sem z 20 npc udelal 5 a klesla mi zatez cpu o 15%

čakal som že o tomto niečo povieš
Ja viem ;) ale to mi už niaky zelený (ty :D) uchmatol
btw ten systém cez IsPlayerInShere a ten môj je skoro rovnaký (nepoužiješ premenu) len rozchádza sa v tom ked vstúpi do pickupu, čo u mna zistuje číslo u teba pozíciu ;) ale to bola iba ukážka ako to využiť

tie cykly :D nj ale otom si už tut napísal ty btw normálne by som zabil niekoho kto použije cyklus v cykle :D alebo keď použije cyklus a pod ním ďalší cyklus (jeden cyklus na jeden script...)

btw diky :D

ale ja mnel na mysli ten problem ze kdyz vstoupis do pickupu tak ne vzdy ti to odesle jeho spravne id proto to zjistovani pozice kdybych vedel proc to nekdy odesila spatne hodnoty tak si to uz davno opravim a pouzivam if(pickupid) :)

_________________
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říspěvekNapsal: čtv 11. lis 2010 17:40:13 
Jeffery Wilson "OG LOC"
Jeffery Wilson "OG LOC"
Registrován: pon 10. srp 2009 20:53:11
Příspěvky: 1149

Někdy, jestli nechcete používat newy, používejte definice.. Máte to jak s proměnýma a přitom to nezvětšuje velikost amx a také odlehčí server. Fígl je v tom, že když se udělá definice a zkonvertuje se to do amx, jakoby definice zmizely a nahradí se definovaným číslem. Také doporučuji :)


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

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: