Jump to content
  • 0

pomoc Animace


Meric

Dotaz

Popis problému:


Ahojte, chtěl bych se vás zeptat, jak docílím toho, abych se mohl při animaci pohybovat? Například když chci vytvořit objekt bedny do rukou při animaci. Nikdy jsem nepochopil jak to funguje i když jsem různě měnil hodnoty u funkce ApplyAnimation.


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

Kód:

 

--

 




Dodatečné poznámky:

Dále nevím proč se nepřehrává tato animace:

ApplyAnimation(playerid, "GYMNASIUM", "gym_shadowbox", 4.1, 1, 0, 0, 0, 0);

Používám jí v dialogu při výběru bojového stylu. Podle Wiki je název animace správně. I knihovny, protože knihovna "GYM" mi shazuje hru.

Edited by Meric
Link to comment
Share on other sites

14 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Globální moderátor

Zrovna v SAMPu je special action primo na noseni veci: 

 

http://wiki.sa-mp.com/wiki/SetPlayerSpecialAction

http://wiki.sa-mp.com/wiki/SpecialActions

25 - SPECIAL_ACTION_CARRY *** - Will apply a 'carrying' animation to the player and make them unable to sprint, jump or punch

 

Jinak by to mel byt ten freeze parametr

Link to comment
Share on other sites

  • 0

Aha nevěděl jsem, že na to je i SPECIAL_ACTION, díky. A ještě bych se chtěl zeptat. Je nějaký jednoduchý způsob jak mu přes CreateDynamicOBject nacpat tu krabici při té animaci do rukou nebo to musím odhadovat přes například x+0.25 nebo z+0.5?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

No nejlepsi zpusob je vyuzit http://wiki.sa-mp.com/wiki/SetPlayerAttachedObject. Na ofiko foru najdes nejake tooly na manipulovani daneho objektu (napr. http://forum.sa-mp.com/showthread.php?t=209234) a ulozit jejich pozice. Jako bone pak jen zvolit ruku

 

 

EDIT: tenhle editor je mozna lepsi: http://forum.sa-mp.com/showthread.php?t=501924

Link to comment
Share on other sites

  • 0

Jo, díky. To se určitě hodí. Jen mám ještě problémy s nastavením souřadnicí, kam to spawnout, když tu bednu vytvářím. Dal jsem to na svojí pozici po getnutí mých souřadnic. Ale když vyplním osu Z, tak místo aby se měnila výška kam se má krabice spawnout, tak se otáčí, jako kdybych měnil rotaci, nebo se ani nehne. Ty krabice jsou prostě dělaný tak, že když se objeví ve vzduchu a když se do nich strčí, spadnou.

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Budes muset vybrat jinej objekt... a proc bys vytvarel bednu na tvoji pozici? Staci v te funkci vyplnit ID bedny, nic to s createobjectem nema ani playerobjectem

Link to comment
Share on other sites

  • 0

No, já už to udělal a nějak jsem to ošéfoval. Nevím v jaké funkci máš nyní namysli a jak přesně to myslíš, kdyžtak mi to podrobně popiš, když budeš tak hodný. Akorát nevím, proč při spawnutí té bedny se nepřidává IDčko. Vždy se spawne bedna s ID 0. To zapřičiní, že když vytvořím dvě bedny, tak se smaže jen jedna při příkazu smazatbednu. Kód mám tady. Úplně stejně to mám i s ostatními systémy a tam se IDčka počítají. Nevím kde jsem co vynechal.

 

Kód zde: https://pastebin.com/feA8t61j

 

Nevíte, co jsem tam udělal za chybu? Případně jak to zjednodušit.

 

PS: Důvod, proč tam mám SetDynamicObjectPos je, abych ten objekt donutil nebýt ve vzduchu, ale na souřadnicích, kde chci.

Edited by Meric
Link to comment
Share on other sites

  • 0
  • Globální moderátor

se koukni na to poradi inicializovani beID a formatovani 3D textu. 

 

K tomu predeslemu memu postu... blbe jsem te pochopil, ten zcela muzes ignorovat

Link to comment
Share on other sites

  • 0

Jo už to vidím, pravda. Posunul jsem formátování ID textu s tím beID pod db result, kde vybírám ID přímo z databáze, která to automaticky incrementuje. Zatím to vypadá bez problému, díky. :-)

 

Jen nevím jestli je to pravé ořechové použít u hráče SetPlayerAttachedObject nebo něco jiného. Tam není argumentace pro objectid. Chtěl bych to udělat tak, že dám /sebrat a vyloženě tu bednu sebere, bez DestroyDynamicObject. A jestli se to bez toho neobejde tak něco, abych pak mohl uchovat předměty v té bedně při přesunu. Ať už vkladu do přívěsu nebo jen čistě přesunu. Celkově jde jen o to, aby se s tím dalo manipulovat i s obsahem uvnitř, ale u této fáze jsem to jaksi nedomyslel. Je možné tohle nějak přes SQL obejít?

 

Napadlo mě totiž akorát, že bych mohl informace o obsahu bedny nahrát do vytvořených PlayerInfo a ukládat ty informace přímo k hráči a jak bych zničil objekt bedny a všechno s ní spojený, tak při pokládání by se to naopak z hráče zase nahrálo do té bedny. Ale nevím jestli je tohle efektivní.

Edited by Meric
Link to comment
Share on other sites

  • 0
  • Globální moderátor

Napr zapisem do souboru, prijde mi tohle zbytecne zapisovat do SQLka, navic to predpokladam nebude tak casty, ze nekdo sebere krabici.

 

Attachovat dynamic object na playera jde, ale zaplatis za to strasne timerem (nemluve o tom, ze se jedna o dynamic object, takze jeste zjistuje okolnim hracum pozici na vykreslovani), cisty zpusob je SetPlayerAttachedObject, kde se to snad ani nechova jako objekt, pak si ulozit ID krabice u hrace a nasledne podle toho ID cist ze souboru (soubor bude napr v SF "./tmp_boxes/{id}.txt")

 

objectid u attachedobject je modelid (viz ten link na tu funkci a odkaz u toho parametru)

 

 

 

EDIT: K te animaci s gymnasium, az ted jsem si vsiml, ze se jedna o druhej dotaz... je potreba zrejme ty knihovny pre-loadnout pri spawnu

PreloadAnimLib(playerid, animlib[])
{
      ApplyAnimation(playerid,animlib,"null",0.0,0,0,0,0,0);
}
Link to comment
Share on other sites

  • 0

Používám na DynamicObject ten SetPlayerAttachedObject, no. Ošéfil sjem to tak, že se to chová jako doplněk, když si přes attachments nasadíš klobouk nebo tak. Teď mi spíše jde o to vymyslet, jak udělat to, že se budou ukládat předměty, které jsou v bedně, kterou hodíš například do přívěsu náklaďáku. Protože to má fungovat tak, že dáš /prives a tam vložíš do slotu pro bednu tu bednu a pak jí můžeš vytáhnout. Ta aby v té bedně se neanulovaly informace, že v ní je určitý počet předmětů, například M4, nebo Desert Eagle, nebo Cocaine a takové. Tahle otázka ukládání mě napadla až teď, že to bude velmi komplikované, že nevím čeho se chytit.

Link to comment
Share on other sites

  • 0

No, míchání systémů ukládání mýmu serveru nikdy nedělalo dobrotu. Mám vytvořený tak, že když sebereš bednu, tak se ta bedna z databáze smaže a když položíš, tak zase se tam vytvoří, jelikož UPDATE SET nefungovalo, tak jsem to musel udělat přes smazání a znovuvytvoření. Každopádně i kdybych ukládal informace o obsahu separativně od db do texťáku, stejně nevím jak bych to tam nahrál.

 

Ce se IDček týče: Vždycky se generuje o číslo vyšší. Aspoň podle toho kolik beden existuje. Při UPDATE SET testu mi to hodilo ID 308 místo 7, nebo 8. A když jsem vypnul a zapnul server, tak bedna byla a staré pozici co byla původně a s tím prvním IDčkem, tedy 7 nebo 8. Jak úplně upravit IDčkování nevím, jsem rád, že to vůbec funguje. icon_e_biggrin.gif

 

Ukládání informací podle ID je tedy pro mě asi méně přijatelné, snadno by došlo k chybě ohledně ztrát předmětů. Buď bych poslal kód, s tím že by se ta věc i IDčkama upravila tak, aby to podle toho nějak šlo, nebo to ukládat podle jinýho parametru. Bohužel mě žádný jiný parametr nenapadá.

 

Každopádně díky za to k těm animacím, pomohlo to. Už to funguje. :-) 

Edited by Meric
Link to comment
Share on other sites

  • 0
  • Globální moderátor

No to je uz zalezitost implementace, 

 

ja jsem kdysi treba ukladal drop kontejnery mrtvych tel do souboru. Jinak abych byl v obraze, pouzivas SQLite, ze? (z predeslych topicu napr. optimalizace) Ukazal bys starej kod k tomu UPDATE SET?

Link to comment
Share on other sites

  • 0

Ano, používám SQLite, no. Já ti asi radši hodím úplně kompletní kód. Protože já teďka řeším to, že když seberu bedn a někde jí položím, má pak místo ID 2 třeba ID 560 a obsah se v té krabici pak vůbec nenachází, prostě se ztratí. Předem upozorňuju, že je to docela dost dlouhý kód. Dávám tam vše, aby jsem nemusel dodávat postupně věci a zbytečně se to neprotahovalo

 

Kód je dost dlouhý, hlavně co se týče dialogů. UPDATE SET tam je. Hlavně mi jde o ukládání, protože potřebuju aby se ukládalo aspoň i při přesunu a později tadyta uložená data s bednou pak i do přívěsu, kterej bude na stejným principu co dialog u té bedny.

 

https://pastebin.com/sH6kNchY

 

EDIT: Právě jsem tam hodil nově kód, protože jsem vynechal příkaz na sebrání a pokládání, dost důležitá část.

Edited by Meric
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...