-
Příspěvků
3268 -
Registrován
-
Aktivní
-
Vítězných dnů
64
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by ffredyk
-
-
před 13 minutami, Boy said:
Takú čočotinu si vytlačím na 3D tlačiasni za 5sekúnd
Jsem rád, že zde máme lidi s tiskárnami (a ještě s rekordní světovou rychlostí 2 000mm/s), ale pointa soutěže je o tom, nabídnout figurku i lidem, kteří tiskárnu nemají a chtějí originální kus od tohoto fóra
Jak již bylo zmíněno jde o vlastní originální model.
-
před 2 minutami, Scydo said:
Autor topicu by byl nejspíš rád, kdyby jsi to i rozepsal
tohle není občanská výchova, na které vyhodime do éteru okopirovanej zdroj.. Můžeš o tom trochu podiskutovat? :D
-
před 25 minutami, XpresS said:
Už som raz posielal vEndovi návrhy na nové emoty. Hovoril, že na nich pozrie a odvtedy prešlo už pol roka minimálne, takže otázka, má to cenu?
Znovu opakuji, pokud máte něco na srdci, je tu od toho tato sekce - všichni ve vedení jsme dospělí fungující lidé, a na soukromé zprávy se zde snadno zapomíná. Když založíš topic, tak to mají všichni na očích vždy
-
Pokud chcete přidat do systému nové emoty, smajlíky, twitchcancer apod. tak je uveďte i se zdrojem v tomto topicu.
-
Osobně si předsevzetí nedávám, vím že je poruším :D
Snažím se naučit metodu vymysli-udělej: Pokud tě napadne něco, co by jsi chtěl udělat - udělej to co nejdřív, alespoň jednou. Po druhé už to bude jednodušší a tím, že to uděláš hned na to nezapomeneš. Jen mám problém to občas sám dodržovat a inklinuji k "odsouvání na později" :D
Každopádně co se plánů na tento rok týče v dlouhodobém měřítku - jde o dotažení několika projektů, mezi nimi i obnova Pawno.cz
-
Jen vyjasním jaký obsah se bude bodovat:
Boduje se veškerý obsah, tvorba a text, který není součástí chatu na hlavní stránce. Cokoliv napíšete jako příspěvek, bude započítáno do bodového hodnocení.
-
Zdravíčko přátelé
Rád bych vám představil první soutěž tohoto roku - a současně bych vás rád tímto motivoval k aktivitě, psaní návodů, odpovídání na témata a diskuzi.
Za vaši aktivitu vás od této chvíle každý měsíc odměníme dárkem v podobě vytištěné figurky pawno.cz v modré designové barvě.
Resp. pošleme ji tomu nejaktivnějšímu z vásFigurka je z materiálu PETG, rozměrově je 10cm vysoká a 5.5cm do šířek. Jde o vlastní model, vytvořený na základě původní figurky jazyka Pawn - která byla i v prvním logu fóra.
Bodovat budeme jednotlivě každého dle množství obsahu, které za daný soutěžní měsíc vypustil do fóra - body se budou udělovat za kvalitu obsahu, relevance příspěvku, informační hodnotu a originalitu. Za každé kolo zveřejníme 3 nejaktivnější uživatele a oceníme je dle umístění takto:
- Figurka Pawno.cz + speciální titul na fóru dle výběru
- Speciální titul na fóru dle relevance
- Speciální titul na fóru dle relevance
Figurka bude zabalena do krabičky a odesílána přes zásilkovnu - výherce si bude moci anonymně vybrat jakékoliv odběrné místo, kam mu ji poté zašleme.
Speciální tituly na fóru ještě doladíme s vedením, ale představte si je víceméně takto:
- Best Guide
- Ultimate Tutor
- Lord of Discussion
Které by měli lépe přiblížit komunitní zaměření výherce soutěže
První místo si může vybrat, jaký titul chce. Dalším je přidělíme na základě způsobu jejich aktivity.Začínáme ihned, tak vzhůru do psaní!
-
1
-
1
-
1
-
2
-
1
-
1
-
1
-
Zdravíčko přátelé - pokud hrajete Armu 3 (případně jiné Arma tituly) jistě dobře víte o scriptovacím jazyku SQF, na kterém je hra kompletně postavená. Veškerý funkční content je psán v tomto jazyce a dá se s ním vyčarovat cokoliv si představíte. Pro mě je Arma 3 takový sandbox, ve kterém si vytvářím a realizuje nápady a myšlenky herních typů - engine nabízí kvalitní modely postav, objektů i terénu. Dá se říct, že si v Armě 3 můžete vytvořit svou vlastní hru.
SpoilerUkázky mých výplodů:
https://steamcommunity.com/sharedfiles/filedetails/?id=176318250 (Survivor - rychlá střílečka na vesnici)
https://steamcommunity.com/sharedfiles/filedetails/?id=186388823 (SHOA - RTS na způsob Men of War)
https://steamcommunity.com/sharedfiles/filedetails/?id=278701081 (Anti Air Arcade - arkádová destrukce nepřátelských letadel)
https://steamcommunity.com/sharedfiles/filedetails/?id=756203516 (Waiting time - cinematic scéna)
https://steamcommunity.com/sharedfiles/filedetails/?id=1420857501 (Curway: Aegis - vylepšená verze RTS systému SHOA)BIWiki
Veškerou dokumentaci, podklady a zdroje najdete na jednom místě - https://community.bistudio.com
Jsou tam rozepsané a popsané veškeré nativní funkce enginu, seznamy objektů, zbraní, vozidel a dalších zdrojů. Lze tam najít kompletní informace pro jakýkoliv druh příkazu, řešení, či návrhu. Bez tohoto se při scriptování v SQF určitě neobejdete.
Základy SQF
SQF je jednoduchý jazyk. Jakákoliv logika je defakto uložená v proměnné a celý interpreter jen pracuje s těmito proměnnými. Pokročilé vysvětlení zde.
Datatypy
Každá proměnná v jazyce SQF má vlastní způsob deklarace (a defakto automatické inicializace). Veškeré číselné hodnoty jsou podpultové floaty (tedy desetinná čísla), texty jsou stringové řetězce (a lze je rozebrat na bajty - ve formě číselných hodnot) - tedy cokoliv mezi uvozovkami "text", pole jsou jednoduché soustavy jakýchkoliv proměnných deklarovaný jako [obsah,obsah,obsah] a kód je cokoliv mezi závorkami {code}. Existují ještě speciální typy proměnných, jako například displayNull, controlNull, namespace, configNull, grpNull, locationNull, taskNull, objNull, scriptNull a pár dalších.
Deklarace a inicializace probíhají ve stejném kroku a to při přiřazení hodnoty k proměnné, proměnné mohou měnit typy i hodnoty (jedinou výjimku tvoří kód prohnutý funkcí compileFinal - taková proměnná se zabije až se zabitím namespace, ve kterém pracuje - zůstává konstantní - vysvětlíme si později).
Codespace
SQF kód lze praktikovat takřka kdekoliv v enginu. Jedinou výjimku tvoří config, ve kterém pracujeme s C strukturami pro definice tříd a jejich vlastností. Celý engine hry funguje (a je postavený) na SQF - všechny kampaně, mise, addony a další komunitní obsah, obsahuje více, či méně prvků SQF.
Kód se dá psát v Eden editoru (ve spínačích - triggerech), .sqf souborech ve složce mise/kampaně/addonu nebo v debug konzoli. Mnoho cheater řešení dříve užívalo exkluzivně děr v SQF interpreteru pro získání kontroly nad voláním funkcí za běhu - a byli psány celé v SQF.
Lokální / globální proměnná
SQF chápe lokalitu proměnných základně jen ve dvou bodech scope lokální a globální. Globální proměnná je deklarována s jakýmkoliv názvem, který se neshoduje s názvem nativní funkce, či již jiné deklarované globální proměnné. Lokální proměnná se deklaruje a volá s podtržítkem před názvem, spadá pod scope ve kterém je deklarována:
globalniPromenna = 1; //Globální číselná proměnná func_cistaFunkce = //Globální proměnná obsahující kód { _lokalniPromenna = 2; //Spadá pod scope kódu func_cistaFunkce };
Hello World
private ["_text"]; //Moderní (volitelná) deklarace lokální proměnné - kód se bez tohoto plně obejde _text = format["Hello world, %1", profileName]; //Vytvoření textu "Hello world, jméno-hráče" hint _text; //Vypsání textu na obrazovku (hint)
Struktura kódu
Každý příkaz, či operace musí být ve všech případech oddělena středníkem (;). Kód se může psát v jednom řádku (oddělený středníky) nativní funkce mohou být krmeny dvěma způsoby parametrů - před a za funkcí:
player setPos [0,0,0]; //Příklad nativní funkce s před-za single parametry (před-odkaz na objekt hráče ; za-pozice hráče XYZ v poli) _stav = linearConversion //Deklarace lokální proměnné s hodnotou z outputu funkce linearConversion, která má jen multi-parametry za sebou v poli [ //Pole 0, //Výchozí bod konverze Z 60, //Výchozí bod konverze Do time, //Progress konverze 0, //Konverzní bod Z 100 //Konverzní bod Do ]; //při time=15 je výsledek 25
Scheduled/unscheduled
SQF engine pracuje ve dvou prostředích. To hlavní, ve kterém poběží váš kód většinu času (resp. vy budete většinu času psát kód pro tento environment) a druhý real-time, na který engine počká před vykreslením frame. Při volání funkcí pomocí call se prostředí dědí od volajícího. Pokud ve scheduled prostředí voláme jinou funkci, spustí se také ve scheduled prostředí (a volající čeká na výsledek - neprovádí další logiku). Pokud je funkce volána z unscheduled prostředí, také bude pracovat v unscheduled. Voláním funkce pomocí spawn volanou funkci vždy spustí v scheduled prostředí. Unscheduled prostředí si můžeme vynutit trikem za použití funkce isNil.
- Scheduled (a k němu vázaný scheduler) environment je rozhraní, ve kterém mohou scripty běžet neustále, ve smyčce, nikdy nekončící, případně i vytěžující. Běží na pozadí vykreslování, engine na ně nečeká, případně je i pozastavuje v momentě slabšího výkonu. Scheduler je systém, který se stará o rozložení dostupného výpočetního výkonu a snaží se rozdat mezi všemi scripty rovným dílem. Může se stát, že váš script poběží jen v jednom frame z deseti, při dobrém výkonu poběží v každém frame. Spouštění scriptů v scheduled environmentu může být několik framů odloženo a při spuštění několika scriptů zároveň se tyto scripty reálně spustí nezávisle na sobě, i s rozdílem několika framů. Scheduled environment je defakto všechno spuštěné ze souboru, pomocí execVM nebo spawn.
- Unscheduled environment je pro změnu rozhraní, ve kterém engine zpracovává exkluzivně skripty až do konce. Nekonečné smyčky jsou schopné bricknout celou hru a nesmí být v tomto environmentu spouštěné. Také všechny odkládací funkce (sleep, waitUntil) v tomto prostředí nefungují, vyhodí chybu, či jsou ignorovány. Jen v tomto prostředí máte jistotu, že se vaše scripty spustí okamžitě, projdou veškerou logiku za sebou tak jak mají a vše stihnou v jednom frame - scheduler na základě výpočetní náročnosti takového scriptu poté pozastaví, či omezí spuštění jiných skriptů ve scheduled prostředí.
Kam psát skripty?
- Většinou ze začátku vám bude stačit soubor init.sqf ve složce s misí (Dokumenty/Arma 3/missions/). Případně deriváty initPlayerLocal.sqf a initServer.sqf. Existují i další speciální názvy souborů, které engine spouští na základě různých událostí, to už dohledáte na BIWiki.
- Dalším způsobem psaní scriptů pro mise je přímo v editoru. Stačí hodit kamkoliv spínač (trigger), podmínku mu hodit jen true a do pole Po aktivaci vepsat kód (můžete si ho připravit v editoru jako VS Code). Případně do pole inicializace jednotek.
- Pro dočasná, či jednorázová spuštění kódu lze využít i debug konzoli, která je vždy dostupná editoru. Případně lze aktivovat i pro finální verzi pomocí atributů mise. Takto spuštěné skripty se nikam neukládají, a jsou spouštěny jen pro aktuální relaci mise.
Na závěr
Projděte si dokumentaci, experimentujte a tvořte. Pomocí SQF se dají vytvářet nehorázné blbosti a kreace. Vaším nejlepším přítelem je i fakt, že vše publikované pro Armu 3 podléhá open-source licenci, můžete číst všechny skripty ostatních autorů, vykrádat jejich obsah a učit se z nich. Najděte si na workshopu zajímavou misi, či addon - s pomocí programu PBO Manager můžete rozbalit balík, který obsahuje veškeré zdroje, soubory a skripty, který tento addon nese, tento program vám bude i velkým pomocníkem, až budete hledat textury základní hry - můžete si pomocí jej rozbalit i základní soubory hry a čerpat informace z nich (kampaně, objekty, funkce, textury)
Úkol pro vás: Prohledejte BIWiki a zkuste si najít další event scripty, se kterými se dá pracovat. Vytvořte misi, ve které máte za úkol ukrást nepřátelské vozidlo - zkuste se držet podobného stylu jako v misích základní hry - využívejte tasky, naučte se s nimi pracovat ve scriptu, relevantní dokumentaci vyhledejte na BIWiki. Naučte se spojit prvky editoru se scripty, využijte spínače pro aktivování scriptovacích funkcí (nativní funkce call nebo spawn).
-
před 6 minutami, Hip said:
Ne pozor! Koule nemají poloviční rychlost, ale procentuální rychlost v závislosti na úhlu. Pokud je úhel 0° (tedy přímo zepředu narazí do koule), tak se bílá zastaví úplně a předá 100% rychlosti druhé. Pokud náraz byl 45°, bude to půl a půl. Pokud to bude těsně pod úhlem 90° tak se bílá skoro nezastaví a druhá skoro nepohne. Více než 90° znamená, že koule druhou kouli minula, takže se to nemusí řešit. Úhel počítáš mezi vektorem pohybu a vektorem/úsečkou pozice koule 1 a 2.
Viz. edit původní citace - došlo mi to dřív, než jsi stihl zareagovat
-
1
-
-
před 10 minutami, DuFF said:
Nevidel som, ako to na tých serveroch presne funguje, ale očakával by som, že na objekt biliardového stola je vložených niekoľko malých objektov biliardových gulí a že sa využíva ColAndreas plugin na zistenie, či guľa narazí do inej gule/hrany stola. Guliam vieš potom asi nastaviť rýchlosť a smer podľa rýchlosti a smeru gule, ktorá do nich narazila. U odrazov od hrán stola platí asi niečo na spôsob uhol dopadu = uhol odrazu.
Používat kolizní detekci fyzikální cestou je zbytečná ztráta výpočetního výkonu (alespoň pro tento počin) - Celá věc se dá (jak již odpověděl @Hip) spočítat jen jednoduchou matematikou. Hráč po potvrzení úhlu a síly šťouchu "předá serveru" vstupní vektor, na základě kterého se vyšle bílá koule do prostoru a každým tickem se jí konstantně ubere rychlost a zároveň změří vzdálenost od ostatních koulí (s ohledem na jejich radius - resp. velikost). Pokud protne jinou kouli, spočítá se úhel mezi původním vektorem a vektorem do druhé koule (pozice bílé koule minus pozice kolizní koule) a na základě tohoto úhlu se poté vytvoří dva nové "vstupní" vektory, které se využijí pro novou aktivaci skriptu na obě koule s poloviční rychlostí bílé koule v místě kolize. A to celé se opakuje do té doby, než rychlost překročí nějaký limit (rychlost < 0.01 např) - poté se šťouch "dokončí" a začíná se na novo.
EDIT: Případně se dá na základě kolizního úhlu vypočítat i poměr předané energie pro rozdělení rychlosti koulí (když bílá jen škrtne jinou kouli, nepředá ji půl rychlosti ale jen zlomek
(90 - [uhel] / 90) * [rychlost bílé koule]
-
1
-
-
Defakto jde jen o matematiku a nastavování pozic objektům.. Vše ostatní je jen obal, který si můžeš udělat jak chceš - předpokládám že v SAMP je to stále řešené přes textdrawy.
-
před 11 hodinami, Scydo said:
Jestliže se mi to povede, tenhle topic by měl vyjít přesně na nový rok... (Skoro, o jednu minutu, sakra...)
Happy New Year.
O dvě minuty pozdě :P :D
Každopádně i já přeji všem šťastný nový rok!
-
před 2 hodinami, ATomas said:
Kamo asi jsi malo zazil :D Az budu v praci a budu mit cas asi ti ukazu hned nekolik pripadu kde je UNION nevyhnutelny :D A zatez? Na multicoru koho zajima .D Dokud je vysledek vracen do timeoutu je vse cajk a odpusteno :D
A povidej mi tu o spatne navrzene databazi, kdyz na tom fabrika jede 20 let a ver mi ze to nechces menit :D
Kámo, mám na starost DB o miliardách záznamů.. Já si tam nemůžu dovolit ani ty posraný JOINy :D Má to sta tisíce requestů za sekundu, tam se nedá už vůbec hnout - takže mi věř, že jsem strávil několik bezesných nocí nad řešením optimalizace posraných SQL :D
-
1
-
-
před 3 hodinami, ATomas said:
Ne vzdy JOIN je to co vyzadujes. Ja nijak blize nezkoumal jeho strukturu, ale kdyz mas data v ruznych tabulkach a srovnas si jejich strukturu a potrebujes to k te tabulce pridat, je pouziti UNION naprosto v poradku.
Ten zátěžový overhead je zbytečný 😅
Nevím o ničem kde by se UNION nedal nahradit JOINem, v opačném případě máš napíču strukturu tabulek.
Jak psal Om3n - z hlediska výkonu, čitelnosti a organizace je už spíše nasnadě to všechno narvat do jedny tabulky
-
Chlapci, vy jste s dovolením prasata!
Když už chcete srát 3 tabulky do jednoho výstupu, udělejte to přes JOIN.. Pokud to nejde přes JOIN, děláte to blbě, udělejte to prostě přes 3 různé SQL dotazy nezávisle na sobě..
-
před 2 hodinami, Farleon said:
No pred mojím routrom od wifi je tak 10 stien 😁 Tam by v nutri asi nič nepomohlo
Čo hovoríte na toto ? https://www.datart.sk/tp-link-cpe710-outdoor-5ghz-ac867-23dbi-cpe-cpe710.html?gclid=CjwKCAiA25v_BRBNEiwAZb4-ZY8apF3yobZHglObt4uMWUqfVGxz8Gkvndr8xxyTSKVa5DF_vvxXKxoCqukQAvD_BwE
To je anténa navržená pro spojení dvou vzdálených bodů s přímou viditelností - má malý úhel. Určitě není navržená na pokrytí prostoru signálem. Mrkni spíš na něco jako tohle: https://www.i4wifi.cz/cs/210743-ubnt-unifi-ac-mesh-ap-2-4ghz-300mbps-5ghz-867mbps-1x-gbit-rj45-venkovni-poe-24v-802-3af-alta?gclid=CjwKCAiA25v_BRBNEiwAZb4-ZT4TLwQRbkQp2VGNsNAhSJ7SceoCLma0f9RLQdrq5mY4GyzcTVGouRoCZxcQAvD_BwE
-
1
-
-
Zdravíčko přátelé - možná jste zabrouzdali na toto fórum náhodou, možná hledáte zdroje k výuce programování, či si jen stavíte informační balík a zvažujete, jestli se do toho pustit.
Na všechny vaše základní otázky bych rád odpověděl jednou větou - programování je styl života. A dále ji rozvedu: Jakmile se jednou naučíte programovat, už se nedokážete na jakoukoliv technologii koukat stejným způsobem jako kdy dřív. Jakmile začnete myslet analyticky, změní se vám pohled na celý svět. Osvojíte si nové dovednosti nejen na počítači, ale i v běžném životě. Programování prostě nehorázně ovlivní váš každodenní život a pokud mu propadnete tak jako například já - dá se říct, že vás úplně pohltí.
Když se chce člověk naučit programovat, musí se naučit myslet jako stroj, představit si práci kódu, postup po řádcích a dokázat udržet v paměti kvantum informací. Při větších projektech jsem musel v hlavě udržet povědomí o několika stovkách názvů a vědět k čemu přesně slouží a případně kde jsou všude využity (a to mluvím jen o proměnných a vlastních funkcích). Nehledě na tisíce dalších názvů funkcí a dalších pojmů, které si musíte pamatovat při schopnosti jakéhokoliv psaní kódu.
Programování rozvíjí všechny druhy mentálních schopností - logiku, matematiku, analytiku, strukturu, fantazii, kreativitu. Vy sami si určíte rychlost a intezitu, kterou to do sebe začnete prát - proto také nedoporučuji platit si výukové kurzy - budou to do vás prát rychlým tempem, protože čas jsou peníze a čím víc toho do vás co nejrychleji nahustí, tím více lidí dokážou "obsloužit".
Ze zkušenosti vím, že většina nadaných programátorů startuje na programování ve hrách, které hrajou. Dává to smysl, protože právě pomocí her člověk najde v programování zálibu, koníček a smysl. Tvoříte vlastní svět, dle svých pravidel a realizujete vaše vlastní fantazie a nápady - tak jak se vám zachce. Objevujete nové funkce postupně a základy programovacích jazyků ve hrách jsou velmi jednoduché a často stavěné na syntaxi pokročilých jazyků, takže je potom přechod na vyšší level o hodně jednodušší. Z moderních her mohu doporučit jednoznačně Arma 3 (C-like SQF), Minecraft (Java), Rust (C#) a ze starších GTA SA:MP (C-like Pawn), CS GO (Lua / C-like Pawn), Garry's Mod (Lua).
Začátek - první krůčky
Učte se z dokumentace dané hry (či jazyka) za pomoci experimentování, snažte se vyřešit samostatně všechny chyby, bugy či pády - tímto způsobem se dá naučit nejrychleji, nejlépe a nejzábavněji. Pokud si myslíte, že problém se prostě nedá vyřešit, zkuste kód smazat a napsat ho úplně jinak, myslete tzv. outside-of-the-box - nemějte tunelové vidění. Jako v open-world hrách i programování má více řešení. Pokud problém vyřešíte, zkuste zapřemýšlet, proč to takhle funguje a proč to předtím nefungovalo - musíte do hlavy dostat všechny tyto informace a pospojovat relevance - poté začnete psát perfektní kódy neustále.
Stanovte si nějaký cíl - například "Naprogramuji herní mód deathmatch, s počítáním skóre a textovými efekty vítěze" - po splnění zkuste něco obtížnějšího, něco co si nedokážete představit jak v tuto chvíli naprogramovat, ale přeci jen víte, že je to realizovatelné - například "Teď se pustím do capture the flag s náhodnými událostmi ovlivňující chování hry po každé získané vlajce" - hlavou vám proběhnou myšlenky jako "Sakra jak udělám tohle, a jak támhleto?" - v tuto chvíli je potřeba se naučit takové myšlenky vyházet z hlavy, jsou zbytečné. Řekněte si, co je potřeba udělat jako první, jako druhé a udělejte to, poté se vrhněte na další věci. Je dobré si ze začátku celý plán napsat bodově do nějakého dokumentu.
SpoilerMozek dokáže pracovat buď v analytickém režimu, který je dobrý pro programování - nebo kreativním režimu, který se využívá pro stavbu konceptu. Někteří lidé dokáží využívat oba módy v jednu chvíli, těmto já závidím, většina z nás to neumí. Když začnete míchat programování s fantazírováním, začnete psát nefunkční odpad a zamotáte si celý koncept.
Proto je nejlepší začít tzv. s papírem a tužkou, načrtnout koncept do dokumentu, vymyslet všemožné funkce a prvky - představit si výsledek a jak funguje, přenést tyto myšlenky "na papír" . Pokud vás v průběhu psaní kódu začnou napadat nové věci - přepněte do dokumentu a chvíli se zase věnujte vymýšlením a představováním jak to celé bude fungovat. Vždy upřednostněte fantazii před analytikou.
Programování je obrovský blokátor fantazie, po letech programování je složité se dostat z analytického režimu do toho kreativního, protože programování zabere 80% celého času vývoje produktu. Proto může být důležité naučit se využívat fantazii naplno už na samotném počátku výuky programování, udržíte si schopnost vymýšlet kreativní a inovativní věci o hodně déle a bude pro vás jednodušší přepínat.
V případě, že se pouštíte do HTML, PHP, či jiného webového jazyka (či neherního jazyka), si místo herních módu představte například vlastní blog, e-shop, portfolio, galerii, úložiště. Můžete zkoušet naprogramovat klony známých webů - idnes, dropbox, facebook, youtube, google - cokoliv vás napadne. V tuto chvíli nejde o výsledek - ale o experimentování, které vás zocelí ve znalostech.
Další kroky
Pamatujte, že v momentě kdy zjistíte, že vás to nebaví, je to moc složité na pochopení, vypadá to jakoby se někdo vyblil na klávesnici, nebo to píšou asi v latině - neztrácejte motivaci, zezačátku vždy experimentujeme - můžete se zkusit učit jiný jazyk, v jiné hře, jiném nástroji - tohle není čeština nebo angličtina, pokud se naučíte jeden programovací jazyk velmi dobře, je velmi pravděpodobné, že umíte základy dalších desítek programovacích jazyků. Jazyky se můžou lišit syntaxí, způsobem zápisu, ale ve výsledku jsou si všechny velmi podobné. Dá se říct, že největší skupina jazyků se označuje C-like (vyjadřují podobnost syntaxi jazyka C [wiki]). Poté tu máme originální Python, PHP, Pascal, Fortran, Perl, LISP. Jazyky se dělí na nespočet kategorií (druhů kategorií) a struktur, které je zbytečné znát [zdroj]. V tom největším měřítku se dají všechny jazyky obalit do 5 hlavních oddílů:
- Strojový jazyk - to jsou jedničky a nuly, bitové informace, nečitelné pro člověka, ale jediný jazyk, ve kterém pracuje jakýkoliv procesor.
- Assembly / LLL: low-level jazyk - jazyk vytvořený zvlášť pro různé procesory, nejnižší čitelná forma kódu (Assembler je program pro překlad tohoto jazyka na strojový jazyk)
- HLL: High-level jazyk - velmi user-friendly jazyk, který se využívá v profesní lize, tvoří se v něm hry, aplikace, nástroje, weby a všemožné další výtvory. (C, C++, C#, PHP, Java, apod.)
- VHLL: Very-high-level jazyk - je jazyk s velkou abstrakcí, většinou je částí již hotového produktu (tvořený v HLL), například jako součást moddovacích nástrojů her (SQF pro Arma 3, Pawn pro SA:MP)
- Dětské jazyky - existují pro výuku programování dětem, jsou naprosto jednoduché, většinou přeložené do řeči rodné země. Nabízí naprosto minimum funkcí a slouží jen jako základní vstup do světa programování. (Scratch, Blockly)
A nebo je můžeme rozdělit do typů dle stylu programování: (Programovací paradigmata [zdroj])
Ve výsledku jde jen o to, zapamatovat si funkce, metody, proměnné a syntax. Vše ostatní už je jen schopnost toto všechno pospojovat dohromady - tomu se říká programování.
-
4
-
Zdravíčko přátelé - možná jste někdy ve svém módu řešili animace, interpolaci, či jakýkoliv plynulý pohyb předmětu či čehokoliv jiného. Dá se samozřejmě přes lineární konverzi (jejíž algoritmus najdeme ve všech jazykových podobách na internetu) zařídit ostrý pohyb z bodu A do bodu B. Pokud ale chceme zajistit plynulejší pohyb s rozjezdem a dojezdem - tedy zrychlením a zpomalením, které nebije tolik do očí - je potřeba upravit chování naší lineární konverze tak, aby buď rovnou pracovala na algoritmu, který toto bere v potaz, případně můžeme toto nasimulovat pomocí nástrojů nám svěřených.
Nejdříve si ukážeme "hack" verzi - tedy pro mě jako absolutního nematikáře - absolutní začátek a experiment celé pseudofunkce. Příklad si uvedeme ve hře Arma 3, pro pohyb kamery v cutscéně. Arma 3 nám nabízí funkce pro lineární pohyb kamery z bodu A do bodu B - ostrou cestou. Tím je myšleno, že po spuštění funkce se kamera fixní rychlostí přesune z jejího dosavadního bodu do bodu zadaný v parametru funkce v čase také zadaném v parametru funkce:
_cam = "camera" camCreate [0,0,0]; //Vytvořit kameru na pozici [0,0,0] _cam cameraEffect ["internal","back"]; //Přepnout obraz hráče do této kamery _cam camPreparePos [10,10,10]; //připravit přesun na pozici [10,10,10] _cam camCommitPrepared 5; //přesun trvá 5s
Vizuálně takový přesun je sice použitelný, nicméně není plynulý a strašně neuhlazený (hlavně při pohybu na více bodů v řadě).
Double LERP
Ukážeme si ten nejjednodušší způsob, který vymyslí hlavně nematikář - za pomocí lineárního pohybu, který arma nabízí, můžeme nasimulovat rozjezd a dojezd pomocí zdvojeného lerpování (linearní interpolace, kterou obstará příkaz camCommitPrepared).
//Používáme globální proměnné pro zviditelnění kamer pro skript na EachFrame V_cam = "camera" camCreate [0,0,0]; //Vytvořit kameru na pozici [0,0,0] V_cam cameraEffect ["internal","back"]; //Přepnout obraz hráče do této kamery V_camPos = "camera" camCreate [0,0,0]; //Vytvoří kameru využitou na pozadí pro výpočet lineráního přesunu kamery V_camLerp = addMissionEventHandler ["EachFrame", //Vytvoříme unscheduled environment spuštěný na každém vykresleném snímku { _T_pos = getPosASL V_camPos; //Vezmeme si ASL pozici kamery pro přesun _C_pos = getPosASL V_cam; //Vezmeme si ASL pozici vizuální kamery _T_pos = vectorLinearConversion [0,1,0.1,_C_pos, _T_pos]; //Provedeme lineární konverzi (lerp) s progressem 0..0.1..1 (toto zajistí efekt akcelerace) V_cam camPreparePos (ASLToATL _T_pos); //Nastavíme výslednou (interpolovanou) pozici V_cam camCommitPrepared 0; }]; V_camPos camPreparePos [10,10,10]; //připravit přesun na pozici [10,10,10] V_camPos camCommitPrepared 5; //přesun trvá 5s sleep 5.1; //Počkáme 5s na přesun kamery + 0.1s na dokončení akcelerace naší vizuální kamery removeMissionEventHandler ["EachFrame", V_camLerp]; //Zničíme lerpovací skript
Můžeme si samozřejmě napsat kompletní funkci, která využije příkaz vectorLinearConversion dvakrát a obejde tím rovnou vytvoření druhé kamery a příkaz camCommitPrepared pro přesouvací kameru. Pro jednoduchost a čitelnost skriptu (a variabilitu) jsem předal funkci takto
Pro práci s pohybem kamery (resp. pro relevantní výpočty a manipulace) využívám výhradně pozici ve tvaru ASL (Above Sea Level), protože při interpolaci ATL (Above Terrain Level) kamera při přesunu skáče dle toho jestli pod sebou zrovna nemá kopeček, či díru
(proto zjišťuji polohy ASL a poté překládám do ATL při nastavení pozice samotné kamery - příkaz pracuje s ATL pozicemi a sám interpoluje na ASL)
Interpolace pomocí algoritmu
Tou "správnou" cestou by měla být pravá matematická interpolace se zahrnutím easingu už v algoritmu. Existuje mnoho různých algoritmu na ty samé pohyby - ať už jde jen o zrychlení, jen o zpomalení, či oboje - na vše je několik variant. Ukážeme si jenom tu základní - na zbytek uvádím silný zdroj: http://gizma.com/easing/
_posA = [0,0,0]; //Nastavení bodů _posB = [10,10,10]; _startTime = time; //Nastavení výchozího času a délky průběhu _endTime = _startTime + 5; //+5s _eh = addMissionEventHandler ["EachFrame", { _progress = linearConversion [_startTime, _endTime, time, 0, 1, true]; //Převod průběhu času na range 0..1 s clamp _progress = _progress * _progress * (3 - 2 * _progress); //https://www.wolframalpha.com/input/?i=x+*+x+*+%283+-+2+*+x%29 (křivka pro easing-inout) _curPos = vectorLinearConversion [0,1,_progress, _posA, _posB]; //Vlastní výpočet bodu na trase (interpolace s easingem) }]; sleep 5; //Celý pohyb i s akcelerací bude probíhat přesně 5s removeMissionEventHandler ["EachFrame", _eh];
Kdo chce bejt absolutní fajnšmejkr, tak tu má ještě funkci pro lineární interpolaci (i když ji skoro každej engine i samotný jazyk nabízí už v nějaké matematické třídě)
func_myLerp = { params ["_A", "_B", "_progress"]; //Parametry funkce _progress = _progress max 0 min 1; //Clamp na range 0..1 (_A + (_B - _A) * _progress); };
-
před 10 hodinami, milous22 said:
predpokladám, že iba na priamu viditeľnosť
přesně tak, sice to probije i zdi, ale ten signál padá rapidně
-
1
-
-
Můžeš zkusit koupit UBNT anténu na 5 GHz, ale připojíš na to jen zařízení, které podporujou 5GHz pásmo. Mně se povedlo takhle připojit s tlf na net že vzdálenosti zhruba 250m
-
1
-
-
- Popular Post
- Popular Post
Zdravíčko přátelé,
přeji vám všem krásné vánoce a vše nejlepší do nového roku 2021
Máme za sebou poněkud splašený rok, a kvůli této situaci se hodně lidí ocitlo v tíživé situaci jak finanční, či rodinné. I mě jako živnostníka a majitele firmy to neminulo a od léta jsem se musel hodně otáčet, abych firmu nepoložil (klienti, se kterými jsem zvyklý pracovat, najednou začali šetřit). Proto jsem neměl dostatek času věnovat se fóru a jeho růstu, či proměně. Všichni členové týmu měli naprosto volné ruce, mohli měnit co se jim zlíbí. @Lucifer Morningstar dostal do rukou kompletní přístup k běžícímu VPS, @Ewwe na nás bohužel také nemá dostatek času a @vEnd začíná prohlašovat, že je potřeba nabrat nové lidi do týmu (kteří se budou aktivně věnovat dění na fóru), protože celý moderátorský tým se tu ochomítne jednou za týden.
Herní Servery
Mnoho lidí psalo mně i dalším zprávy s dotazy ohledně herního serveru. Za úkol zprovoznit Minecraft server to dostal @Lucifer Morningstar - VPSko už běží druhý měsíc a server stále nemáme (částečně se chvilkama čekalo i na mě). V tuto chvíli se VPSko reinstaluje z Cent OS (který Spy odsoudil, kvůli končící podpoře a stejně mě "zaúkoloval" s přehozením) na Ubuntu. Až se to dotáhne (při předpokladu, že do té doby neupadnu do spánku), tak tam sám nahodím jednak Minecraft server v základu, ale také pár dalších retro her - počínaje CoD2, či právě i SA:MP a uvidíme o co přesně byste měli zájem.
Abychom nabídli něco originálního, jiného a nového tak servery poběží na základní nastavení - s tím, že tu na fóru se zřídí nějaká sekce, do které kdokoliv může postnout požadavek na instalaci jakéhokoliv kódu / addonu / módu. Celý proces vypilujeme za pochodu - zkusíme hlasování, manuální schvalování apod. Detaily čekejte v podrobnějším topicu zaměřeném na toto téma exkluzivně.
Tým
@vEnd Žádal o kompletní obměnu moderátorského týmu (včetně něj). Nakonec jsme to politicky ufackovali jen na nový přírůstek - někdo kdo je tu pravidelně, je aktivní a má zájem se podílet na rekonstrukci komunity. Také bych chtěl apelovat na všechny zkušenější, kteří tu s námi ještě jste - vytvořte nám nějaký content, návod, příspěvek. @Lucifer Morningstar přislíbil seriál na téma Linux a já se chystám na game-dev a hardware sérii. Jenže jsme jen dva a já věřím, že je tu více lidí, kteří by rádi postavili fórum zase na nohy
Reklama
Možná jste si všimli nových přírůstků mezi registrovanými členy
Reklamy sice neběží na plný výkon (jako na jaře), nicméně budget je alespoň na nějakém minimu, který to udržuje + se snažím propagovat fórum i v osobních kruzích. Takže doufám, že jsme nováčkům pomohli a ještě jim mnohokrát budeme ku pomoci
Další kroky
V tuto chvíli je hlavním cílem mise, zajistit se na finanční krizi. Proto nebudou ani v dalších několika měsících probíhat významnější investice - pojede VPS na herní servery, reklama v nějakém menším budgetu, stále budeme bez download sekce a aktivita našich mužů nebude taková jaká by měla být. Já věřím, že to všichni pochopíte - jsme už dospělí lidé, někteří z nás mají už své rodiny. Jakýkoliv vývoj, kterýmkoliv směrem se budu snažit filtrovat do nějakého nového vlákna, kde popíšu jaká je situace, co se děje a co se dít bude.
V tuto chvíli se řeší stavba herních serverů (Minecraft, CoD2, SA:MP), můžete již teď začít podávat návrhy na instalaci skriptů a obsahu, který na serverech chcete. Detaily dořešíme později
Až se rozběhnou servery, dotáhneme ten problém s aktivitou v našich řadách a obnovíme reklamu. @Lucifer Morningstar se SNAD dostane k nějakému tomu návodu. Já určitě také něco sepíšu.
Děkuji vám všem
Rád bych poděkoval hlavně našemu moderátorskému týmu! Ti kluci jsou tu už takových let, nikdy za svou práci neviděli ani halíř, natož kolikrát poděkování. Proto bych jim rád poděkoval jak osobně, tak i nějakou revanží. Buďme prosím rádi za jejich služby a za to, že to fórum drželi a drží tak dlouho
A i vám všem ostatním přeji veselý start a úspěšný rok 2021, který nám již klepe na dveře. Věřím, že už se vyhrabeme z nesmyslných opatření a začneme zase znovu budovat hodnoty, které jsou naší vizí.
-
8
-
1
-
3
-
Server je ready a stále se hledá plno lidí, kteří to ošéfují
-
Jakou máte návštěvnost, demografii hráčů, nebo další marketingové potenciály, které by mě, jako případného sponzora, mohly zajímat?
To co jsi uvedl jsou výhody jako pro premium členství. Sponzoři sponzorují účelově, protože jim to přinese buď reklamu, návštěvnost nebo nepřímý výdělek.
-
1
-
-
Pánové, přidám i svůj názor na téma frameworků :D
Z praxe vím, že je to celé jen o výsledné kvalitě a zároveň o částce, kterou za výsledek dostanete.. ATomas nemá pravdu v tom, že programátor by neměl používat frameworky, naopak by měl. Ale zároveň musí rozumět tomu, co se děje pod pokličkou těchto frameworků.. Je to něco jako být mechanik a opravovat auta jen podle manuálu - opravíš to, ale ve skutečnosti nemáš tucha proč se to vysralo, jak tomu předcházet a co jsi vlastně udělal pro to, aby to zase jelo.
Programátor samozřejmě musí znát problematiku, které se věnuje, musí se v ní orientovat, mít pojem o celé syntetice kódu. Využití frameworku ve výsledku mnohonásobně urychlí práci a ušetří peníze buď klientovi, nebo přinese víc peněz programátorovi. Navíc mainstream framework testuje tisíce lidí dnes a denně, to je číslo, které ti žádný klient nezaplatí. Testují ho whitehat i blackhat inženýři, další prachy, které nikdo do klasického vývoje jen tak nevrazí. Vyvíjí ho tým profesionálů, kteří jsou ve VĚTŠINĚ případů za to ještě placeni (granty, příspěvky od firem, či programátorů, kteří jejich framework využívají). Proto si troufám tvrdit, že v dnešní době je používání frameworku nejen DOBRÝ nápad, DOBRÝ zvyk a zaběhnutá praxe, ale dává to i mnohem větší smysl, než neustále dokola stavět základy tam, kde už jich několik postaveno bylo
A zakončím to klasickým tvrzením: Víc hlav, víc ví. (A těch hlav se okolo frameworků motá neskutečné množství
)
-
1
-
[SOUTĚŽ] Figurka za aktivitu!
v Pravidla a oznámení
Odesláno:
Já nevím, co tě tak triggeruje :D Pawno.cz funguje pod mým IČO, které je i zapsané v kontaktních informacích. Nevím jak odlišné máte zákony na Slovensku, ale mám pocit, že při prodeji produktu by jsi měl uvést daňovou identifikaci (kterou na mrkaveja nemáš). Pokud tě tak hrozně sere, že pawno.cz rozdává ZDARMA své figurky a budí to v tobě potřebu na tom udělat reklamu na svůj produkt (o kterém si myslím, že asi moc úspěšný také nebude), tak se ti omlouvám, ale pokračovat v tom budeme dál