updatovali sme na našom http://BRUT.me Portali mašinu s hernými servermi a ostalo nám nejaké miesto pre ďalšie servery hlasujte v ankete alebo pridajte aj svoj nápad, aký by sme mohli spustiť http://brut.me/vi...amp;t=5184
Zdravím všechny! V prvé řadě bych chtěl poděkovat Backupovi za jeho super články, které inspirovaly a pomohly mě i kamarádovi blue_magic-ovi. Jsme tví největší fanoušci!
Teď k věci. Hrajem si trošku s hammerem a snažíme se vyrobit block, který se rozsvítí (nebo nějaké světlo), když na něm budem stát. Nechcem ale přitom použít trigger_multiple, protože to nebude správně fungovat při více hráčích.
V přiložené příkladové mapě mám řešení následující:
Ingredience:
-1x func_button s Touch activates flagem. Slouží jako samotný blok, na kterém budem stát. Vše se spustí když se jej dotknem.
-2x identické light entity na stejné pozici. Potřebuji nastavit dobu svitu světla a nepřišel sem na to jinak než pustit sekvenci dvou navazujících světel po sobě.
-1x multi_manager s multithreaded flagem. Ten nám zavolá vše, co potřebujem.
-2x trigger_relay. Jediný důvod použití je, že v multi_manageru nemůžu použít stejný target 2x zdá se.
Teď jak to funguje?
Dotknem se bloku (tlačítka), zavolá nám multi_manager. Ten nám ihned (0 delay) zavolá první trigger_relay, který spustí první světlo. Po 8 milisekundách se toto světlo vypne (tentokrát přímo z multi_manageru) a ve stejnou dobu se zapne druhé světlo přes druhý trigger_relay. Opět svítí 8ms a vypne se. Dohromady to je 16ms a tady nastupuje opět náš blok func_button, který má delay before reset taky 16ms. Takže se dvě světla za sebou pořád pouští v cyklu, dokud stojíme na tlačítku.
Jede to krásně plynule bez žádného blikání (blikání je fuj, to nechcem). Je tu ale jedno velké ALE.
-Pokud stojíme na bloku zhruba minutu, spadne cs s hláškou "ED_Alloc: no free edicts". Zřejmě se ten cyklus nějak správně neresetuje a po chvíli se nahromadí velké množství/kopií entit? Po menším výzkumu internetu jsem nepřišel na spojení tohohle erroru s tímhle vynálezem.
Netušíš prosím, Backupe, co s tím? Nějaký nápad, proč to dělá? Zkoušeli jsme i jiné podobné koncepty, i takové, které nepadají, ale většinou blikají nebo poblikují. V příloze je i varianta s trigger_multiple, pro demonstraci, jak to má fungovat. (Je to ten blok, co spouští červené světlo. Ten druhý blok je ten náš problematický.)
Budeme rádi za jakékoliv rady. Případně, kdyby byl nápad na lepší řešení s méně entitama, jsme jen pro.
Díky za odpovědi.
Roadrunner přiložil následujíci soubor: z_default.rmf
Upravil/a Roadrunner dne 23.09.2016 12:54
K "no free edicts" - multithreaded trigger_multiple a různé zpožděné entity vytváří za běhu nové entity. Ty by se měly po splnění jejich účelu samy zlikvidovat aby nedocházelo k vyčerpání možného počtu entit.
Napadá mě jedno vysvětlení jak může k takovému vyčerpání dojít:
V paměti serveru se udržují jednotlivé entity a každá má nějaké pořadové číslo. Když se vytváří nová entita, vezme se nejvyšší pořadové číslo co existuje, zvětší se o jedna a to se použije jako pořadové číslo pro novou entitu. Když se nějaká entita smaže, její pořadové číslo se uvolní a to pak zas někdy může použít nějaká nová entita.
Když pak hráč stojí na tom tlačítku a vytváří samé nové entity, zabírají se vyšší a vyšší čísla. Ty spodní se sice uvolňují, ale to server neví, ten pracuje vždy s nejvyšším pořadovým číslem a přičítá jedničky. A když pak vidí že už je moc vysoké, zatrhne vytváření nových entit, protože si myslí, že už pro ně není místo.
Backup přiložil následujíci soubor: bac_kouzlo.rmf
No já ten multiple použil tak, že jsem dva různé chytře rozmístil na a okolo bloku, aby se to zapínalo podle pozice hráče. Případně dva překrývající se multiply, kde jeden měl větší prioritu. No a při více hráčích stojících v těch multiplech to poblikuje.
Každopádně jsem ale zkoukl tvůj vynález a zdá se, že fachčí, jak má! Použití game_counteru se zdá být tou správnou cestou pro rychlé iterace cyklů. Tak ti moc děkuji!
chcem toto bac_kouzlo.rmf použiť pri tvorbe jb mapy učel by to malo taky že be som videl v ktorej cele su ešte väzni lenže mam s tym problem na žačiatku kola všetko svieti aj ked tam nikto nieje ale ked vojdem do cely a vyjdem tak to svetlo zhasne čiže to funguje dobre len chcem aby bolo zhasnute na začiatku kola a rozsvietene iba tam kde niekto je