Jump to content
  • 0

pomoc Posunutí několik objektů


GT222

Dotaz

Popis problému:

Zdravím nevíte zda li by se dalo posunout několik objektů najednou mám 850 objektů a chtěl bych udělat že po čase se tyto objekty přesunou na jiné místo ale abych nemusel opět ukládat po jednom tak je nějak označit naráz a posunout.

Je nějaký editor nebo dalo by se to nějak udělat v MTA Map Editor? Děkuji všem.

 

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

--

 

Kód:

 

--

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0

To tedy tímpádem když se začne posouvat tak už to nebude vypadat jako než se to začne hýbat ale všechny objekty se dají na stejnou souřadnici a budou v sobě nalepené , proto bych potřeboval zjistit jak by se daly přes nějaký editor označit dané objekty naráz a všechny najednou je přesunout

Link to comment
Share on other sites

  • 0

To tedy tímpádem když se začne posouvat tak už to nebude vypadat jako než se to začne hýbat ale všechny objekty se dají na stejnou souřadnici a budou v sobě nalepené , proto bych potřeboval zjistit jak by se daly přes nějaký editor označit dané objekty naráz a všechny najednou je přesunout

 

Áno, bude to presne tak... Teda pokiaľ si to nespravíš správne...

 

príklad:

X - objekt ktorým pohybujem

O - ostatné objekty

_ - volne miesto

 

 

 

O O O

O O X

O O O

 

Chcem dosiahnúť:

 

_ _ _ _ _ _ _

_ _ _ _ O O O

_ _ _ _ O O X

_ _ _ _ O O O

 

Čo znamená pozíciu všetkých predmetov posúnúť o X bodov vpravo a o Y bodov dole od pôvodnej pozície

(upozorňujem že pozíciu Z som v tomto príklade uviesť nemôhol, ale v kóde ju uvediem)

 

Kód bude približne nasledovný:

 

for(new i=0;i<MAX_OBJECT_STRUCTURE;i++)

{

   // Posun môže byť kladný ale aj záporný!

   new Float:X = 0.5, // posun v ose X

   Float:Y = 0.5, // posun v ose Y

   Float:Z = 0.5; // posun v ose Z 

   new Float:PosX, Float:PosY, Float:PosZ;

   GetObjectPos(StructObj, PosX, PosY, PosZ);

   SetObjectPos(StructObj, PosX+X, PosY+Y, PosZ+Z);

}

 

Pre každý object si musíš vytvoriť premennú!

 

 

Prípadne ak máš na to predstavivosť, stačí ti keď si vytvoríš pre prvý a posledný, následne MAX_OBJECT_STRUCTURE bude rozdiel medzi nimi - objekty by však museli byť vytvárané jeden za druhým - nesmel by byť medzi tým žiaden iný objekt

 

 

MAX_OBJECT_STRUCTURE - je počet objektov 

 

 

Snáď si tomu porozumel

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

  • 0

Moje chyba špatně jsem se vyjádřil jsem to ale banán..

Potřebuji pro MoveObject

 

V podstate rovnaká vec ako som už písal... zistíš pozíciu objektu a prirátaš k nej posun v ose X, Y a Z...

 

MoveObject(StructObj, PosX+X, PosY+Y, PosZ+Z, RYCHLOST);

 

nezabudni zachovať konštatnú rýchlosť pri všetkych objektoch

Link to comment
Share on other sites

  • 0

 

V podstate rovnaká vec ako som už písal... zistíš pozíciu objektu a prirátaš k nej posun v ose X, Y a Z...

 

MoveObject(StructObj, PosX+X, PosY+Y, PosZ+Z, RYCHLOST);

 

nezabudni zachovať konštatnú rýchlosť pri všetkych objektoch

Vše funguje , jen nastal opět další problém a to s rotací objektu.

Když chci použít rotaci tak půlka objektů se mi otočí a druhá půlka se ani nehne ,

takže to uplně mění pozice objektů.

zkoušel jsem SetObjectRot , nepomhlo :(

Použil jsem new FLoat .. pos[1 ] 2 3 4 5  6  (x y z px py pz) a k tomu jen = CISLO.. GetObject .. MOveObject ..

Funguje pouze jen x,y,z ale px,py,pz nikoly (buguje)

Link to comment
Share on other sites

  • 0

Noo, rotácia bude problém, pokiaľ nie si dobrý v matematike a geometrii, tak bych sa do toho nepúšťal... Pretože akonáhle zmeníš rotáciu, posunú sa ti všetky pozície...

Predstav si sieť s osou x a y...

 

Odporúčam si kresliť aby si to lepšie pochopil

 

Povedzme že je na pozícii 2 a 3 (x a y), tento objekt smeruje na východ (tj. smeruje na uhol 0) no a máme ďalší objekt na pozícií 3 a 4 smerujúci k uhlu 38. Teraz chceš presunúť prvý objekt na poziciu 6 a 7 a chceš ho pootočiť 90 stupňov (tj. bude ukazovať na sever). Povieš si fajn, tak dopocitam súradnice a taktiež otočím druhý objekt, výjde ti že druhý je na pozícii 7 a 8 a smeruje na uhol 108... A teraz je tu problém, objekt je síce správnym smerom otočený, ale je na inom mieste než by mal byť... Správne by mal byť na pozícií 5 a 7. Na to, aby si zistil akú pozíciu mu musíš nastaviť treba počítať s cosinusmi, sinusmi, tangensami - stredoškolská matematika.

 

No a toto bol len 1 smer a 2 rozmerná pozícia, teraz si to predstav s 3 smermi a 3 rozmernou pozíciou... Preto je to tak komplikované.

 

PS: som za každý šialený nápad, takže ak sa do toho pustíš, určite mi daj vedieť aspoň do správy alebo na skype

Link to comment
Share on other sites

  • 0

To sis nasel stare video, kdy se jeste objekty neumely pohybovat rotaci, tak je to udelane pres setovani rotace po FPS. Velmi hloupe reseni, ale kdyz nic jineho v te dobe nebylo...

 

Kazdopadne doporucuji si VElMI POZORNE precist dokumentaci:

 

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

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...