Jump to content
  • 0

pomoc Pickup


Vankus

Dotaz

Popis problému:

Mám spravené pickupy cez IsPlayerInRangeOfPoint,lenže on keď je pritom a mám tam že mu to má napísať správu alebo ukázať dialog tak to píše/ukazuje stále ,lenže ja chcem aby to ukázalo len jeden krát a ked znova vstúpi do pickupu tak znova jeden krát.

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

--

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

3 odpovědí na tuto otázku

Recommended Posts

  • 0

 

 

Mám spravené pickupy cez IsPlayerInRangeOfPoint
Máš ich spravené zbytočne zložito.

Pickup je niečo iné než IsPlayerInRangeOfPoint(). Pickup je niečo čo sa dá zodvihnúť a automaticky ti to zavolá callback OnPlayerPickUpPickup() keď hráče ten pickup zodvihne.

 

Tým, že ten pickup zmizne a objaví sa až po pár sekundách sa zabráni tomu, aby ho zodvihol viacx zasebou.

 

Každopádne, ak to stále chceš riešiť svojim nedobrým spôsobom, spravíš to tak, že mu zobrazíš daný pickup, počkáš kým vyjde z neho a potom mu to zobrazíš prípadne znova.
Či z neho už vyšiel abo vošiel do neho skontroluj nejakou premennou.

Link to comment
Share on other sites

  • 0

Máš ich spravené zbytočne zložito.

Pickup je niečo iné než IsPlayerInRangeOfPoint(). Pickup je niečo čo sa dá zodvihnúť a automaticky ti to zavolá callback OnPlayerPickUpPickup() keď hráče ten pickup zodvihne.

 

Tým, že ten pickup zmizne a objaví sa až po pár sekundách sa zabráni tomu, aby ho zodvihol viacx zasebou.

 

Každopádne, ak to stále chceš riešiť svojim nedobrým spôsobom, spravíš to tak, že mu zobrazíš daný pickup, počkáš kým vyjde z neho a potom mu to zobrazíš prípadne znova.

Či z neho už vyšiel abo vošiel do neho skontroluj nejakou premennou.

 

 

Asi si nepochopil čo autor myslel... :/ 

 

 

Na autora:

 

Predpokladám, že máš v OnPlayerPickUpPickup IsPlayerInRangeOfPoint a na základe toho zisťuješ na akom je pickupe, že?

 

Na tvoj problém mám také 2 riešenia... Začneme tým komplikovanejším.

 

1) Sprav si novú premennú (bool) - pre každého hráča zvlášť - a pri vstupe na pickup, skontroluj či je premenná 0, ak áno, nastav tú premennú na 1/true, následne zobraz hráčovi dialog, správu alebo skrátka čo potrebuješ

keď už budeš chcieť aby hráčovi opäť zobrazilo dialog/správu, nastav premennú na 0

 

Príklad z realu:

Hráč vstúpi na pickup, skontrolujem či je premenná 0, zistím že áno, nastavím premennú na 1 a zobrazím mu dialog napr. s jedlom... TJ: "Jedlo, Pitie, Alkohol"... Následne v OnDialogResponse pri tomto dialogu zobrazím ďalšie dialogy (napr. vyberie si jedlo) "Hamburger, Pizza, Chlieb, ...". No a v poslednom dialogu, keď už nebudem chcieť nič ďalšie zobraziť mu nastavím  premennú na 0, aby môhol opäť využívať pickup.

Ešte technický detail: Musíš kontrolovať, či v dialogu nestlačil ESC (!response), pretože aj pri zrušení dialogu mu musíš nastaviť premennú na 0

 

Toto riešenie mi príde príliš komplikované, nakoľko musíš premýšlať kedy je 0, kedy 1 a kedy to máš ako nastaviť aby to fungovalo správne (pre vysvetlenie: ak zabudneš vynulovať premennú, nebudú hráčovi fungovať žiadne pickupy)

 

No a druhé riešenie - jednoduchšie - keď hráč vojde na pickup, posuň ho o 1-2 metre späť

 

Príklad:

Pozícia pickupu:

100.0 200.0 50.0

Keď vstúpi na pickup, SetPlayerPos(playerid, 102.0, 200, 50);

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

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