Jump to content

Hip

Globální moderátor
  • Příspěvků

    3030
  • Registrován

  • Aktivní

  • Vítězných dnů

    64

Příspěvky posted by Hip

  1. Hele nějak se to vymklo původní myšlence. Myšlenka byla taková, že tam mohu přidat repa pro community projekty. Není asi třeba řešit nějaký offtopic tady. Takže pokud má někdo nápad na nějaký community projekt, rád udělám na gitu repo a může se vesele projektovat. Klidně to může být mód nebo cokoliv jiného. Případně se dá vzít již existující mód, který se třeba bude community upravovat tady. 

  2. Ahoj,

    v chatu padl jeden zajímavý nápad. Fórum by mělo mít svůj vlastní git. Vzhledem k tomu, že jsem udělal git i pro svůj oblíbený bar, tak jsem proaktivně hned založil i git pro programátorské fórum. Aktuálně je tam jedno repo - assets. Zatím jsem tam hodil logo, každopádně chtěl bych tam házet všeobecně různé věci, co by bylo fajn mít po ruce - třeba právě to logo.

    A další repa jsou na vás. Padl návrh, že by fórum mohlo být samo sebou vyvíjené. Je to zajímavý nápad, ale vzhledem k tomu, že vím kolik je za tím práce, tak si nemyslím, že by se to někdy dostalo do fáze jako IP Board. Radši bych se zkusil zaměřit na nějaké menší projekty, community based vyvíjené. Já rád připojím svůj skill a contribution, jen je třeba vymyslet první projekt, který by se mohl průběžně vyvíjet. Má někdo nějaký nápady nebo mu něco chybí? Sem s tím! Očekávám pod tímto příspěvkem hojnou diskuzi s nápadama. :-) 

     

    https://github.com/pawno-cz

  3. před 21hodinami, jenkings said:

    Tak ještě pro případ, že by to někdo taky řešil, dodám, že se tohle řešení chová velice nedeterministicky v případech, kdy označeným znakem je mezera. Testoval jsem to i tak, že jsem přesně ten samý string renderoval několikrát po sobě, a vždy z toho vypadlo něco jiného. Řešením je orámované mezery nahradit za jiný UTF neviditelný znak. Já například použil prázdný symbol pro brailovo písmo, ale předpokládám, že jakýkoliv jiný by fungoval taky.

    to zní jako něco co využívá vykreslovací engine internet explorer... Outlook, kterej to využívá, měl stejný problémy pro html mailový šablony

  4. před 27minutami, jenkings said:

    Já mám všude Ubuntu a jsem spokojen. Řekl bych, že to i bude nejčastější volba, protože vždy když googlím jak něco udělat, tak většinou ani nepíšu, že jedu na ubuntu a najdu co potřebuju

    jakoby jo, ale svým způsobem já používám Ubuntu na desktopu, centos na serveru, kali na ntb a je to pořád linux a je to stejný. Na pár rozdílů a spíš většinu problémů si dokážu vyřešit už sám bez pomoci. Jde mi spíš o to, co je z hlediska performance nejlepší pro aws ec2 právě. Jinak ubuntu mi přijde že to je OS pro desktop nebo ntb primárně. Něco jako linux distribuce pro hraní her :D 

  5. Ahoj,

    pro začátek řeknu, že jsem línej si informace najít, tak radši napíšu příspěvek, co mi zabere mnohem více času a bude zde nějaká diskuze.

    Mám EC2 na AWS, kde mi běží CentOS 7 tuším - sám nevím teď a nějak se mu už nechce co se týče supportu a updatů. Moje otázka je, jaká distribuce je v dnešní době pro serverové řešení vhodná? Jedná se o univerzální server, kde mi běží apache s webama, mariadb s phpmyadmin, jenkins a občas tam nahodím nějakou appku v javě. Občas tam rozjedu i nějakej herní server. Aktuálně běžím tuším na T3.medium https://aws.amazon.com/ec2/instance-types/

    Přemýšlím, že se zbavím T3 a dedikuju jeden server jen pro apache s webama, kterej čistě teoreticky může být taky T3.medium a pak nahodím jeden dev - troll server pro zbytek, pro dev vývoj apod. 

    Otázka tedy je, jakou distribuci bych měl nahodit z těchto možností https://docs.aws.amazon.com/systems-manager/latest/userguide/prereqs-operating-systems.html#prereqs-os-linux pro apache server a jakou distribuci pro druhý dev server? 

  6. 1. řekl bych, že to bude objekt, takže přes editor nějakej. (Tuším, že se používá tohle: https://www.moddb.com/downloads/san-andreas-multiplayer-map-editor) objekty tam jdou i odstraňovat, respektive vygeneruje ti to kód, kterej to odstraní. 

    2. to je ten OnPlayerKeyStateChange, nepamatuju si syntaxi, ale jakmile keydown == klavesa ctrl (stejná myslim jako klávesa pro střelbu) && zbraň v ruce == sprej, tak spustíš timer

    3. udělej nejdřív to první, pak se z toho kódu dá vycházet dál. 

  7. Přesně jak píšeš. Nejdříve si uděláš graffiti původní - budeš muset namapovat a následně namapuješ nový grafitti. Defaultně budeš zobrazovat jen jeden objekt. Následně v OnPlayerKeyStateChange když stikne uričté klávesy (key down), tak zkontroluješ, zda se hráč nachází u některého z grafitti - IsPlayerInRangeOfPoint, pokud ano, tak zapneš timer na 3 sekundy, kdese po 3 sekundách zavolá funkce, která přidá nový objekt grafitti. A pro kontrolu, zda to držel 3 sekundy použiješ způsob, že pokud se zavolá OnPlayerKeyStateChange kde keyup bude ta kombinace kláves, tak ten timer zrušíš - tím pádem se objekt nepřidá. 

    No a pokud budeš chtít aby se to dělo ikdyž na to míří, tak co udělej jako další krok. K tomu se váže matematika stejná jako v tomto příspěvku:

     

  8. Co to udělat takhle?

     

    public class SquareBackgroundSpan extends ReplacementSpan {
    
      private int mSize;
      private int mColor;
    
      public SquareBackgroundSpan(int size, int color) {
        mSize = size;
        mColor = color;
      }
    
      @Override
      public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
        return mSize;
      }
    
      @Override
      public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
        paint.setColor(mColor);
        canvas.drawRect(x, top, x + mSize, bottom, paint);
        paint.setColor(Color.WHITE);
        canvas.drawText(text, start, end, x + mSize / 2, y, paint);
      }
    }

     

    TextView textView = findViewById(R.id.text_view);
    String text = "A";
    SpannableString spannableString = new SpannableString(text);
    SquareBackgroundSpan span = new SquareBackgroundSpan(50, Color.RED);
    spannableString.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    textView.setText(spannableString);

     

  9. Ačkoliv jsou možnosti jako flutter, tak jsem nikdy reálně v tom neviděl nic složitějšího. Vždy se všude řeší obě appky separe. Každopádně za mě taky doporučuji webovou appku, která je mnohem levnější než mobilní appka a mnohem jednodušší na vývoj. 

  10. asi jako chápu co se tam chce, ale teda nejsem uplně juniorní vývojář. Každopádně dát tohle juniornímu vývojáři, tak nikdy podle mě žádnýho nenajdou. Nejde o to, že by to bylo složitý, je to víc na přemýšlení nad řešením a jestli je cíl zjistit, zda člověk dokáže vymyslet postup, tak jsou pro to dobré úkoly mimo programování. Tady člověk dokáže vymyslet řešení, ale syntaxe by byla horší podle mě. Nehledě na to, že i jako seniorní vývojář bych se na to vykašlal :D 

    • Líbí se mi to! (+1) 3
  11. Ahoj, je to trocha matematiky.

    Pro začátek budeš potřebovat směr, kterým se koukáš: https://sampwiki.blast.hk/wiki/GetPlayerFacingAngle a svojí pozici: https://sampwiki.blast.hk/wiki/GetPlayerPos

     

    Co známe: Aktuální pozici, vzdálenost warpu a směr kterým se kouká. 

    • Aktuálně pozice je pro výpočet irelevantní, vynecháme

    vzdálenost a směr kterým se kouká je užitečný při použití goniometrických funkcí: https://cs.wikipedia.org/wiki/Goniometrická_funkce

     

     

     

    ilustrace-gonio-trojhelnik.png

    Dle obrázku si představ, že ty jsi v levém rohu a znáš směr a vzdálenost, což je strana c. (Je to pravoúhlý trojúhelník) Znáš vzdálenost přepony a úhel. (GetPlayerFacingAngle). Díky tomu můžeš vypočítat stranu "b", takže se použije funkce cosinus kdy:

    • cos(α) = b/c
    • b = cos(α) * c

    v tomto případě je b vzdálenost nové pozice od tvé stávající. Hodnotu "a" vypočítáš už klasickou pythagorovu větou:

    • c^2 = a^2 + b^2
    • a = sqrt(c^2 - b^2)

    výpočtama získáš tvé posunutí vůči aktuální pozici. Pak je stačí sčítáním dopočítat a nastavit hráči novou pozici. Hráčovu pozici nastavíš přes https://sampwiki.blast.hk/wiki/SetPlayerPosFindZ jelikož neznáš Z level kam se warpoval. Nezapomeň správně přičítat nebo odečítat souřadnice podle toho kam se kouká (GetPlayerFasingAngle). Souřadnice sčítáš pouze pokud se hráč kouká někam mezi severem a východem. 

    Pokud se bude koukat jiným směrem, musíš vymyslet, jak budeš výpočet počítat. Do goniometrické funkce můžeš dát maximální hodnotu 90 (stupňů). Jedna varianta je ta, že si vždy úhel snížíš o hodnotu kolik ti přebejvá: Úhel 120, odečteš 90 a máš 30 - můžeš použít do funkce. Úhel 195, odečteš 180 a máš 15. 310 odečteš 270 a máš 40. Pak můžeš použít výpočet výše ale jak jsem zmínil, musíš si dávat pozor jak vypočítaný souřadnice k sobě přičteš/odečteš. Jinak se budeš warpovat o správnou vzdálenost, ale špatným směrem

  12. Tak jsem na to včera mrknul na velký telce a musím říct že hustý! Nečekal bych, že něco takovýho jde udělat jen pomocí sampu :D Je to film, kterej by se měl natáhnout aspoň na hodinu a půl. Moc jsem nepochopil o co tam vlastně jde. Zejména začátek mi byl velkou záhadou. Zbytek byl jasnej. Jak jsem nepochopil začátek, tak jsem nepochopil jak se tam aliens dostali nebo zda se tam vrátili, nebo to bylo retrospektivní, přistáli dvakrát... A krásná herečka :D A cením efekty z half lifu!

    • Líbí se mi to! (+1) 2
×
×
  • Create New...