Jump to content
  • 0

pomoc Systém smrti


Meric

Dotaz

Ahojte. Narazil jsem na problém v publicu OnPlayerTakeDamage, kde si spravuji systém poškození a na něj napojuji i death systém. Bohužel však to má spoustu zádrhelů. Zaprvé abych se přiznal, tak jsem se už dalo by se říct že ztratil ve vlastních podmínkách. :d Teď nevím jak do kódu řádně a funkčně zakomponovat pojistku, která by zařídila, aby daný hráč nezemřel a tedy ho kód za žádnou cenu neodkázal na OnPlayerSpawn, tedy když poškození bude větší nebo rovno zdraví hráče, tak aby mu to na místo poškození nastavilo HPčka cca na 20 bodů zdraví. Tento systém smrti má dvě fáze - 1. kritické zranění, 2. definitivní smrt, která nastane buď po uplynutí času bez záchrany nebo při popravě. Samozřejmě pokud se tomu nějak nevyhnu tak nevadí, budu muset asi jen ukládat pozice.

 

Každopádně dalším problémem je, že místo toho, aby to hráče hodilo nejprve do 1. fáze, tak rovnou zahyne, objeví se někde jinde (přirozeně, když se neukládá pozice a do OnPlayerSpawn by se ani dostat neměl - tedy skript by to ve finále neměl dovolit) a je je rovnou v druhé fázi, tedy té definitivní. Nevím proč, nejspíše jsem se zamotal do svých podmínek a špatně jsem je umístil a teď už nevím jak dál.

 

Než se do mě tady někdo pustí že jsem neoriginální: Ano, vím. Ač se mi to příliš také nelíbí, jsem vzhledem k okolnostem nucen se naklonit k tomu, co ode mně poměrně velká část komunity požaduje. 

 

https://pastebin.com/1r4FmuTw

 

Když tam uvidíte nějaké nesmysly a zbytečnosti, předem upozorňuju, že poslední dobu jsem tam zkoušel leccos metodou pokus/omyl a plácal jsem se s tím pomalu.

Link to comment
Share on other sites

9 odpovědí na tuto otázku

Recommended Posts

  • 0

OnPlayerTakeDamage se vola az po ziskanem pozkozeni hrace. Tedy pokud ma hp 5 a ubere mu to 9 tak proste zemre a neudelas s tim nic. Jedine kde by jsi to mohltrochu korigovat je OnPlayerWeaponShot, kde pomoci return 0 zablokujes damage. Tento callback se ovsem vola jen pri "kulkovych zbrani", tedy ti to nepokryje pripady granatu, bazuky, zbrani na blizko a molotovu ci plamenometu.

Edited by ATomas
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
  • Administrátor

Zjistuj si v callbacku pres GetPlayerHealth stav zivotu ( tahle funkce ti vraci starý hodnoty pred "ucinkem" publiku a kdyz by mezlo zdravi klesnou ( amount ) o vic nez je GetPlayerHealth tak je "mrtvej" a muzes si snim delat co chces

Link to comment
Share on other sites

  • 0

Co jsem se tak dočetl, tak funkce GetPlayerHealth v tomhle callbacku nefunguje, nebo alespoň ne jak má. Přesto to mám úplně nejvýše v callbacku, nějak to tam toleruji. Já tam tedy zjišťuji HPčka přes hráčskou proměnnou Health. Nevím jestli jsi to tak myslel a já tě teď jen nepochopil, ale právě já té smrti a tedy následnýmu spawnu chci vyhnout a pracovat pouze s OnPlayerTakeDamage. Pak je tu tedy ten zásadní problém s hráčskými proměnnými Exprepared, InPreDeathMode a InDeathMode. Co jsem si kontroloval podmínky, tak by měly bejt správně, ale asi dávám špatný sled, jen nevím jak by měl být správně. Abych ty proměnný vysvětlil a někteří nad tím nemuseli nějak přemýšlet a louskat jak to mám zpracovaný, tak to sepíšu.

 

Exprepared - Připraven na popravu, tj. že když ho hitneš ještě jednou, automaticky ho to hodí do druhé fáze. Jenže to se stává už při první "smrti", která tedy proběhne i se spawnem, protože dosáhne s HP na 0.

Popraven - To je asi jasné, napomáhá k odkázání na update labelu a zabití v tu dobu již zbytečnýho timeru a povolení k použití příkazu /death.

InPreDeathMode - 1. fáze smrti.

InDeathMode - Definitivní fáze, na kterou odkazuje proměnná "Popraven". Myslím, že je to asi všem jasné, ale uvědomuji si, že můj kód je zmatený a proto to vypisuji.

Link to comment
Share on other sites

  • 0

Musí to být nutně amount? Aby se mi to nekřížilo s proměnnou Damage, kterou jsem si vytvořil kvůli úpravě hodnot poškození. A hlavně ve které části to podmínit, protože těch podmínek ohledně zdraví a vesty hráče tam mám poměrně dost, takže si ani nejsem úplně jist, kde bych to měl podmínit poté, co tu hodnotu zjistím a tak, aby to bylo efektivní afunkční.

Link to comment
Share on other sites

  • 0
On 15. 5. 2018 at 2:27, QWER said:

Najlepšie čo môžeš urobiť je použiť https://github.com/oscar-broman/samp-weapon-config ale vyžaduje plugin

Dobře, který plugin to prosím vyžaduje? Mimochodem nahlédl jsem do includu a je tam fakt kopa věcí, co by se hádala s některými skripty v módu. A i kdybych to nějak vymyslel a smazal to a nechal tam jen to, co potřebuji, tak do kterých callbacků by asi bylo nejlepší ty fáze zařazovat, aby to bylo dostatečně efektivní? 

Link to comment
Share on other sites

  • 0
před 20 hodinami, QWER said:

Ja si to prečítam za teba a tiež to za teba urobím. Ok? :kappa:

Tak pardon, že jsem si dovolil se zeptat, pane. To je fuk, už je to pasé. Ten includ jsem nerozchodil, byly tam interní nesrovnalosti, přes které mi nedovolilo funkčně zkompilovat skript i přestože jsem udělal dost úprav, které opravily dost těchto "chyb". Což se samozřejmě dalo čekat vzhledem k tomu, co jsem už napsal. Zkouším to teďka zase trochu jinak. 

 

Pokud mi samozřejmě nějaká hodná duše třeba ukáže jak by se to dalo obejít bez zbytečných bugů, byl bych mu určitě neskonale vděčný. :-) Mezitím zkusím nějaké jiné způsoby. 

Edited by Meric
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...