Szerző Téma: SetPlayerAttachedObject Változóból  (Megtekintve 2470 alkalommal)

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Dátum: 2014. május 09. - 15:56:38 »
0 Show voters
Hellósztok.
Az lenne a kérdésem, hogy meglehet-e azt csinálni hogy a \'SetPlayerAttachedObject\' funkcióval a játékosra egy változóból csatolok objectet?
Így próbálkoztam, de nem csatolta rá:
 
#include <a_samp>
new object[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
        object[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
        SetPlayerAttachedObject(playerid, 0, object[playerid], 2);
        AttachCameraToObject(playerid, object[playerid]);
        return 1;
}

 
Tudom, hogy a helyes használat így lenne:
 
SetPlayerAttachedObject(playerid, 0, 19300, 2);

 
De nekem ez így nem jó.. Mert amit rácsatol objectet, utána arra az objectre szeretném csatolni a játékos kameráját is.
És így is próbáltam, de így sem jártam sikerrel:
 
#include <a_samp>
new object[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
        object[playerid] = SetPlayerAttachedObject(playerid, 0, 19300, 2);
        AttachCameraToObject(playerid, object[playerid]);
        return 1;
}

 
Elõre is köszönöm a segítséget(eket)!
[mod]Javítottam pawn code tagre![/mod]
« Utoljára szerkesztve: 2014. május 09. - 23:18:25 írta Dfoglalo »

Nem elérhető Flash

  • 5726
  • (っ◕‿◕)っ
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #1 Dátum: 2014. május 09. - 16:44:27 »
0 Show voters
Próbáld meg ez alapján.. http://wiki.sa-mp.com/wiki/AttachCameraToObject
idézem a lényegét:
 
        new object = CreateObject(1245, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0);
        AttachCameraToObject(playerid, object);

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #2 Dátum: 2014. május 09. - 16:48:32 »
0 Show voters
Ez nekem nem jó, mivel h mozog az ember, fut vagy bármi nem marad a fején az object.

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #3 Dátum: 2014. május 09. - 16:58:38 »
0 Show voters
Lehet, hogy hookolni kéne a createobjectet, és betenni, hogy az objectidjének a model változóját rakja, így késõbb le tudod kérni egy egy soros függvénnyel.

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #4 Dátum: 2014. május 09. - 17:02:45 »
0 Show voters
Idézetet írta: KovaNovik date=1399647518\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Lehet, hogy hookolni kéne a createobjectet, és betenni, hogy az objectidjének a model változóját rakja, így késõbb le tudod kérni egy egy soros függvénnyel.
 
Köszi, és ezt egy kicsit pontosabban letudnád nekem írni?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #5 Dátum: 2014. május 09. - 23:24:03 »
+1 Show voters
Kedves Témanyitó!
A megoldás roppant egyszerû. Az általad használt SetPlayerAttachedObject függvénnyel maximum 10 darab objectet csatolhatsz a játékosra (azokat is különbözõ slotokra), melyek az egyes csontokkal együtt mozognak. De ezek valójában nem is igazi objectek, mivel nem kell õket létrehozni. Csupán a modell kerül a karakterre. Éppen ezért nem ment neked sem az, hogy a létrehozott objectet csatold rá a játékosra. Ugyanis erre van egy másik függvény, méghozzá az AttachObjectToPlayer. Ezt használva létre tudod hozni az objectet, melyet el tudsz tárolni a próbált módon egy változóba és fel is tudod csatolni az ID alapján a játékosra azt. És így már elméletileg a kamerás dolog is menni fog. Mindez forráskódban valahogy így néz ki, de nem biztos, hogy hibátlan:
 
object[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachObjectToPlayer(object[playerid], playerid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachCameraToObject(playerid, object[playerid]);

 


Üdvözlettel,

Dfoglalo

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #6 Dátum: 2014. május 09. - 23:44:47 »
0 Show voters
Idézetet írta: Dfoglalo date=1399670643\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Kedves Témanyitó!
A megoldás roppant egyszerû. Az általad használt SetPlayerAttachedObject függvénnyel maximum 10 darab objectet csatolhatsz a játékosra (azokat is különbözõ slotokra), melyek az egyes csontokkal együtt mozognak. De ezek valójában nem is igazi objectek, mivel nem kell õket létrehozni. Csupán a modell kerül a karakterre. Éppen ezért nem ment neked sem az, hogy a létrehozott objectet csatold rá a játékosra. Ugyanis erre van egy másik függvény, méghozzá az AttachObjectToPlayer. Ezt használva létre tudod hozni az objectet, melyet el tudsz tárolni a próbált módon egy változóba és fel is tudod csatolni az ID alapján a játékosra azt. És így már elméletileg a kamerás dolog is menni fog. Mindez forráskódban valahogy így néz ki, de nem biztos, hogy hibátlan:
 
object[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachObjectToPlayer(object[playerid], playerid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachCameraToObject(playerid, object[playerid]);

 


Üdvözlettel,

Dfoglalo

 
 
Köszi Dfoglalo, de mint már írtam egyszer, ez a megoldás nekem nem lesz jó, mert mivel ha elkezd futni a karakter, akkor a feje egy kicsit elõrébb lesz, de az object nem a fején lesz, hanem az mögött, meg ha animáció van akkor is marad egy helyben, és nem mozog a fejével együtt az object, és vele együtt a kamera sem. (És amúgy igen, ezt használtam egy ideig, de már nem jó.)
De azért köszönöm szépen!

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #7 Dátum: 2014. május 10. - 00:43:57 »
0 Show voters
Igaz is, elnézést.
De ettõl függetlenül sajnos csakis kizárólag az az egy megoldás van. Ha azt akarod, hogy az ún. csontokkal együtt mozogjon, akkor bizony tényleg a SetPlayerAttachedObject függvényt kell majd használnod. De ha leírnád, hogy pontosan miért akarsz a tárgyra kamerát csatolni, talán adhatnánk tippeket. Egyébként nem jó a \'karakterre kamerázni\'? Sokkal egyszerûbb, nem? De gondolom ez így nem megfelelõ megoldás a számodra. Ugyanis - ha jól sejtem - mindenképpen a tárgya kell, akkor nagyjából az eredeti tárgy pozíciójára teszel egy nagyon apró, gyakorlatilag láthatatlan objectet (lehet nagyobb is, csak olyan textúrával, hogy ne látszódjon és ne ütközz bele, vagy ha bele is ütközöl, olyan legyen, mintha csak a másik játékos/karakter állná az utadat) és arra rakod a kamerát. Mintha csak azon a bizonyos objecten lenne, amelyet a SetPlayerAttachedObject függvénnyel csatoltál fel.
 

Üdvözlettel,

Dfoglalo

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #8 Dátum: 2014. május 10. - 10:11:36 »
0 Show voters
Ez tulajdonképpen megoldható lenne, de nagyon nagy laggot . Amit én szerettem volna:
A SetPlayerAttachedObjecthez hozzáadni (hookolni, azaz, hogy annak minden lefutásakor csinálja meg) azt, hogy a játékosok AttachedObject enumjába beleírná, amit csatoltunk, milyen modelid, milyen pozíció, melyik testrész. Azonban itt végig a törléssel, és az opcionális paraméterekkel kéne sz*rakodni. Ha ez kész, akkor egy iszonyat gyors timerrel ki kéne törölnöd a player fejéhez csatolt (lehetõleg láthatatlan) objectet, visszarakni a játékoshoz képest megfelelõ pozícióra, és az enumba beleírt koordinátákra létrehozni egy objectet, ahhoz csatolni a kamerát, és annak a pozícióját állítgatni. A tesztelés idejére a hook nem kell, elég, ha saját függvényt csinálsz hizzá, és azt használod. Lehet, elég laggos lesz, de elméletileg megoldja.
Ha hookolni (már létezõ funkcióhoz adni hozzá cuccokat) akarsz: http://forum.sa-mp.com/showthread.php?t=441293
Ezen poszt alján lévõ módszert használod, persze kicserélgeted a GivePlayerMoneyt.
Esetleg lehetne saját függvényed is hizzá, pl FrissitKameraPoz. És akkor OnPlayerUpdate if(JatekosInfo[playerid][FPS] == 1) ..
Sok szerencsét, továvbi jó scriptelést.
OFF: én is sokat szoptam ezzel, ha nagyon unatkozni fogok, csinálok hozzá valami használhatóbb megoldást.
Más: a GetPlayerCamera- Pos, LookingAt, FrontVector funkciókkal ki lehet számolni hogy merre néz pontosan, kamerailag. Asszem.

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #9 Dátum: 2014. május 11. - 10:51:06 »
0 Show voters
Idézetet írta: Dfoglalo date=1399675437\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Igaz is, elnézést.
De ettõl függetlenül sajnos csakis kizárólag az az egy megoldás van. Ha azt akarod, hogy az ún. csontokkal együtt mozogjon, akkor bizony tényleg a SetPlayerAttachedObject függvényt kell majd használnod. De ha leírnád, hogy pontosan miért akarsz a tárgyra kamerát csatolni, talán adhatnánk tippeket. Egyébként nem jó a \'karakterre kamerázni\'? Sokkal egyszerûbb, nem? De gondolom ez így nem megfelelõ megoldás a számodra. Ugyanis - ha jól sejtem - mindenképpen a tárgya kell, akkor nagyjából az eredeti tárgy pozíciójára teszel egy nagyon apró, gyakorlatilag láthatatlan objectet (lehet nagyobb is, csak olyan textúrával, hogy ne látszódjon és ne ütközz bele, vagy ha bele is ütközöl, olyan legyen, mintha csak a másik játékos/karakter állná az utadat) és arra rakod a kamerát. Mintha csak azon a bizonyos objecten lenne, amelyet a SetPlayerAttachedObject függvénnyel csatoltál fel.
 

Üdvözlettel,

Dfoglalo

 
 
egy First Person Nézetet szeretnék, de hogy érted, hogy a karakterre kamerázni?
 

Ez tulajdonképpen megoldható lenne, de nagyon nagy laggot . Amit én szerettem volna:
A SetPlayerAttachedObjecthez hozzáadni (hookolni, azaz, hogy annak minden lefutásakor csinálja meg) azt, hogy a játékosok AttachedObject enumjába beleírná, amit csatoltunk, milyen modelid, milyen pozíció, melyik testrész. Azonban itt végig a törléssel, és az opcionális paraméterekkel kéne sz*rakodni. Ha ez kész, akkor egy iszonyat gyors timerrel ki kéne törölnöd a player fejéhez csatolt (lehetõleg láthatatlan) objectet, vissz*rakni a játékoshoz képest megfelelõ pozícióra, és az enumba beleírt koordinátákra létrehozni egy objectet, ahhoz csatolni a kamerát, és annak a pozícióját állítgatni. A tesztelés idejére a hook nem kell, elég, ha saját függvényt csinálsz hizzá, és azt használod. Lehet, elég laggos lesz, de elméletileg megoldja.
Ha hookolni (már létezõ funkcióhoz adni hozzá cuccokat) akarsz: http://forum.sa-mp.com/showthread.php?t=441293
Ezen poszt alján lévõ módszert használod, persze kicserélgeted a GivePlayerMoneyt.
Esetleg lehetne saját függvényed is hizzá, pl FrissitKameraPoz. És akkor OnPlayerUpdate if(JatekosInfo[playerid][FPS] == 1) ..
Sok szerencsét, továvbi jó scriptelést.
OFF: én is sokat szoptam ezzel, ha nagyon unatkozni fogok, csinálok hozzá valami használhatóbb megoldást.
Más: a GetPlayerCamera- Pos, LookingAt, FrontVector funkciókkal ki lehet számolni hogy merre néz pontosan, kamerailag. Asszem.
 
[/quote]
Nagyon köszi, de nekem ez a hookolás ez magas, nagyon szépen köszönöm azért, és azt is köszönöm ha megpróbálod, vagy megnézed, hogy lehet e valahogy ilyet csinálni.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #10 Dátum: 2014. május 11. - 13:53:19 »
0 Show voters
Akkor bukta, a karakterre nézés nem jó, mert annak nem kéne látszódnia FPS nézetben. Marad az object, mint egyetlen megoldás. Jobb ötletem nekem sincs. Azt pedig, hogy - gondolom én - a karakter fejével együtt mozogjon, már más tészta. Bonyolultabb, a szerver számára lassabb lefutású dolog.

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #11 Dátum: 2014. május 11. - 14:54:43 »
0 Show voters
Idézetet írta: Dfoglalo date=1399809199\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Akkor bukta, a karakterre nézés nem jó, mert annak nem kéne látszódnia FPS nézetben. Marad az object, mint egyetlen megoldás. Jobb ötletem nekem sincs. Azt pedig, hogy - gondolom én - a karakter fejével együtt mozogjon, már más tészta. Bonyolultabb, a szerver számára lassabb lefutású dolog.
 
És azt, hogy a karakter fejével együtt mozogjon, mármint ugye az object, arra van ötleted? Nem baj, ha lassab lefutású meg, nagy erõforrást igénylõ dolog, saját szervergépen mennek a szervereim, és nincs semmihez limitálva semmi.
Köszönöm elõre is!

Nem elérhető KovaNovik

  • 1121
  • KovaNovik
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #12 Dátum: 2014. május 12. - 15:27:30 »
0 Show voters
Mint mondtam, hook helyett saját függvényt is csinálhatsz (public).

Nem elérhető [sdc]skyline

  • 1333
  • ςκyΙιηε
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #13 Dátum: 2014. május 12. - 19:01:34 »
0 Show voters
Igazából már mindegy, nem oldottam meg sehogy, de nem is baj jobb ez így.
De viszont lenne még egy kérdésem, igaz nem ehhez kapcsolódik, de nem szeretnék új topicot nyitni.
Azt nem lehet megcsinálni hogy ha a SelectTextDraw -ot engedélyeztem a játékosnak és ESC et nyom, ne lépjen ki a SelectTextDraw módból szóval hiába nyom ESC et, ugyan úgy ottmarad neki az egér, és kitudja választani?
Elõre is köszönöm.
« Utoljára szerkesztve: 2014. május 12. - 19:38:52 írta Sky »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
SetPlayerAttachedObject Változóból
« Válasz #14 Dátum: 2014. május 13. - 14:01:45 »
0 Show voters
Kliens oldali buherálás nélkül valószínûleg nem, ugyanis az ESC gomb tudtommal nem érzékelhetõ OnPlayerStateChange callback alatt, az alapbeállítások szerint. De persze ha valaki az ESC gombot teszi mondjuk a W helyére, akkor már igen, de erre igen kicsi az esély és nem mindenkinél lesz hatásos...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal