ATomas 291 Odesláno: 22. Listopad, 2009 Share Odesláno: 22. Listopad, 2009 Jak odlehčit mód a optimalizovat streamery Obtížnost: cau takze jak sem slibil ukazu vam par triku jak odlehcit mod jak RAM tak CPUvim ze ty co s pawnem zacinaji tak zatez neresi staraji se o to aby to fungovalo jak chteji i kdyz v jejich pripade je to jedno jejich mody sou maly takze se ta zatez ani neprojeviObsah[*:r9bjqh7a] Odlehčujeme RAM[*:r9bjqh7a] Odlehčujeme CPUOdlehčujeme RAMtakze nejdrive jak odlehcit RAMasi jak uz znate stary zmany trik se MAX_PLAYERS_EX samozdreejmne si pojmenujete jak chcetev includu s_samp je MAX_PLAYERS 500 pro 500 slotovy server tak pochybuju ze budete mit 500 lidi na serveru zbytecne zrani RAM v promenych #define MAX_PLAYERS_EX 100//pozor sem si zapocitejte jak pocet slotu nebo hratelnost + pocet botu na serverua nini pouzitinew promena[MAX_PLAYERS]; new promena[MAX_PLAYERS_EX];coz je vlastnenew promena[500]; new promena[100];i kdyz si rikaze usetrili jsme jenom 400 ale kdyz to pouzijete u vsech promenych tak se toho usetri hodneale pozor na totonew romena[100][50];tady se pocet promenych nasobi takze vlastne mate 5000 coz je hodne takovymto promenych se skuse vyhybat nebo nelpeje omezit na co nejmenci cislato bylo jak odlehcit RAM teď vam ukazu jak odlehcit CPUOdlehčujeme CPUtakze na CPU ma nejvetsi zatez cyklus for a timery spise SetTimerEx normalni SetTimer ani moc nezatezuje odesila pouze public zadne paramtery ale SetTimerEx anotakze kdyz mate trebaSetTimer("Vezeni",1000,1); public Vezeni() { for(new i;i { if(IsPlayerConnected(i)) { if(!IsPayerNPC(i))//kdyz neni hrac NPC je dobre toto pouzivat vsude kde vyte ze neni npc spise nejlepe na cely public nez u jednotlivych akci { if(Cas[i] > 0) Cas[i] -- ; } } } return 1; }je lepsi pouzitSetTimerEx("Vezeni",1000,1,"i",playerid); public Vezeni(playerid) { Cas[playerid] -- ; return 1; }a zase kdyz mate jeden public a tam hodne akci je dobre ho zase rozlozit do dvou publicu a dvou timeru ale poroz na timery aby se vam nepotkavalySetTimer("neco",5000,1); SetTimer("neco2",5000,1);chyba!takto je to spravneSetTimer("neco",5000,1); SetTimer("neco2",5010,1);takto se vam mozna potkaji ale az za hodne dlouho coz nebude mit takovou zatez protoze se akce rozlozi a nebudou se muset vykonavat najednoudale jedno z nejhorsich veci co muzete udelat je mit cyklus for ve for treba taktofor(new i;i toto je jedno z nejhorsich veci co muzete udelat casto se toto pouziva u streameru dva cykly for v sobe ukazu vam jak se tomu ve streamerech vyvarovat takze treba icon streamer mate treba ikonky: AddMapIcon a mate jich treba 100 po cele mape takze si muzete rozdelit mapu na 4 dily takto: stock JihoVychod(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls > 0) { if(yls < 0) return 1; }//tady si vsimnete nez abych pouzil if(xls < 0 && yls < 0) e lepsi takto rozepsat slozene podminky take pridelavaji zatez.. return 0; } stock SeveroZapad(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls < 0) { if(yls > 0) return 1; } return 0; } stock JihoZapad(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls < 0) { if(yls < 0) return 1; } return 0; } stock ServeroVychod(playerid) { new Float:xls, Float:yls, Float:zls; GetPlayerPos(playerid, xls, yls, zls); if(xls > 0) { if(yls > 0) return 1; } return 0; } dale si rozselite ikonky do 4 stocku ci publicu podle souradnicIkonkySeveroZapad x zaporne y kladneIkonkyJihoZapad x zaporne y zaporneIkonkySeveroVychod x kaldne y kladneIkonkyJihVychod x kladne y zaporneSetPlayerMapicon...a potom pouzijete v timerupublic MultiTimer() { for(new i=0;i ale pozor maximalne muze mit pouze 32 ikonek v oblasti na jake sme si rozdelily pokud tam budete mit vice musite si zase rozdelit pokud se vam upraveni icon streameru nedari napiste mi PM nejak podobne jde udelat i object streamer pomoci stock IsPlayerInArea(playerid, Float:minx1, Float:maxx1, Float:miny1, Float:maxy1) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx1 && x < maxx1 && y > miny1 && y < maxy1) return 1; return 0; }potom si vyhranicite oblast je je ten zhluk objetku (nejaky ostrov nebo co mate)+ este radius do okoli aby se to nezobrazilo na posleni chvilia zase ho timetu jestli je v oblati zobrazit objekty a nastavime promenou aby sme vedely ze uz tam je a nastavime promenou kolik objektu ma hrac zobrazeno aby sme vedeli kolik jich mu mame schvoat az zonu opustidale treba u CZpropertyfor(new i=0;i takto nejak v OnPlayerPickUpPickup tady zjistujeme pokud je v nemovistosti ale my vime ze muze byt pouze v jedne nemuze byt ve dvouch zaroven tak az zjistime ze stoji v nejake z nich pouzijeme return 1; jako zmaneni ze hledanou nemovitost sme nasli a neni potreba dale hledat takto: for(new i=0;i dale priklad treba: public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger) { if(ispassenger == 0) { if(GetVehicleModel(vehicleid) == 553 ||//nedava GetVehicleModel(vehicleid) == 519 ||//shamal GetVehicleModel(vehicleid) == 520 ||//hydra GetVehicleModel(vehicleid) == 592 ||//andromada GetVehicleModel(vehicleid) == 487 ||//maverick GetVehicleModel(vehicleid) == 447 ||//seasperow GetVehicleModel(vehicleid) == 497 ||//policemavetrick GetVehicleModel(vehicleid) == 425)//hunter { //akce } } return 1; }sice na ukor RAM ale zase to nebude zrat tolik je lepsi pouzitpublic OnPlayerEnterVehicle(playerid,vehicleid,ispassenger) { if(ispassenger == 0) { new a = GetVehicleModel(vehicleid); if(a == 553 ||//nedava a == 519 ||//shamal a == 520 ||//hydra a == 592 ||//andromada a == 487 ||//maverick a == 447 ||//seasperow a == 497 ||//policemavetrick a == 425)//hunter //zde uz jezjistujeme do nekonecna v jakej je aute my proste vime v jakej je a akroat porovnavame { //akce } } return 1; }sou to ve smes malicosty ale kdyz se podle toho zaridite muzete usetrit cpu a ram o hodnemozna sem na neco zapomel kdyz tam casem pridam..;p++);i++);p++);i++);i++);i++)>;i++);i++)> Návod upraven tak, aby odpovídal šabloně pro "Nové návody" Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný Link to comment Share on other sites More sharing options...
Rayman 0 Odesláno: 22. Listopad, 2009 Share Odesláno: 22. Listopad, 2009 Výborne,určite využiem nice TuT Link to comment Share on other sites More sharing options...
Majitel ffredyk 168 Odesláno: 22. Listopad, 2009 Majitel Share Odesláno: 22. Listopad, 2009 Hned na zacatku mas chybu.. Mas tam MAX_PLAYERID_EX pritom tam ma byt MAX_PLAYERS_EX. Jinak vyborny tut... Link to comment Share on other sites More sharing options...
ATomas 291 Odesláno: 22. Listopad, 2009 Author Share Odesláno: 22. Listopad, 2009 chybicka se vloudila dik Link to comment Share on other sites More sharing options...
癌癌癌 1 Odesláno: 22. Listopad, 2009 Share Odesláno: 22. Listopad, 2009 Je to super a hodi se to... je to na připíchnutí ps: ja použivam #undef MAX_PLAYERS #define MAX_PLAYERS 100 Link to comment Share on other sites More sharing options...
Guest Navod Odesláno: 28. Prosinec, 2010 Share Odesláno: 28. Prosinec, 2010 new romena[100][50]; tady se pocet promenych nasobi takze vlastne mate 5000 coz je hodne takovymto promenych se skuse vyhybat nebo nelpeje omezit na co nejmenci cisla abych pravdu rekl je to 5151 moznosti .. 5000 je nepresnej vypocet .. nepocital jsi moznosti romena[0-100][0-50] ale romena[1-100][1-50] ( 51*101 ) Link to comment Share on other sites More sharing options...
Petr 44 Odesláno: 6. Leden, 2011 Share Odesláno: 6. Leden, 2011 i když je to docela staré téma, tak to sem pisnu Našel jsem chybu if(Cas[i] > 0) Cas[playerid] -- ; nemá to být takto? if(Cas[i] > 0) Cas[i] -- ; Link to comment Share on other sites More sharing options...
_Martin_ 10 Odesláno: 22. Květen, 2011 Share Odesláno: 22. Květen, 2011 Dneska som to skúšal. Mód má teraz o 800 kB menej!!! Predtým mal 1,6 MB a boli lagy na servery. Dal som MAX_PLAYERS na 100 a MAX_SLOT na 20 lebo viac ludí by tam aj tak nebolo. Pred touto optimalizáciou bol priemerný ping serveru 55-70, teraz je 1-25 to je neuveriteľné!!! Máš u mňa + Link to comment Share on other sites More sharing options...
ATomas 291 Odesláno: 22. Květen, 2011 Author Share Odesláno: 22. Květen, 2011 new romena[100][50]; tady se pocet promenych nasobi takze vlastne mate 5000 coz je hodne takovymto promenych se skuse vyhybat nebo nelpeje omezit na co nejmenci cisla abych pravdu rekl je to 5151 moznosti .. 5000 je nepresnej vypocet .. nepocital jsi moznosti romena[0-100][0-50] ale romena[1-100][1-50] ( 51*101 ) akorat ze kdyz mas promenou s kapacitou 50 tak mas 0,1,2,3 ... 49 a promena 50 uz neexistuje Link to comment Share on other sites More sharing options...
VojnaGangov 0 Odesláno: 22. Květen, 2011 Share Odesláno: 22. Květen, 2011 Je logicke ked ma pole 50 prvkov tak ich ma 50 a nie 51... Link to comment Share on other sites More sharing options...
Frajtr 8 Odesláno: 22. Květen, 2011 Share Odesláno: 22. Květen, 2011 jejich 50 nula se nepocita omg takze jakoby 1-100 Link to comment Share on other sites More sharing options...
KarTooN 1 Odesláno: 2. Červen, 2011 Share Odesláno: 2. Červen, 2011 dobrý nápad :thumbup: Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now