GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: [sdc]skyline - 2014. Május 09. - 15:56:38

Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 15:56:38
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]
Cím: SetPlayerAttachedObject Változóból
Írta: Flash - 2014. Május 09. - 16:44:27
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);
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 16:48:32
Ez nekem nem jó, mivel h mozog az ember, fut vagy bármi nem marad a fején az object.
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 09. - 16:58:38
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 17:02:45
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?
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 09. - 23:24:03
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
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 23:44:47
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!
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 10. - 00:43:57
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
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 10. - 10:11:36
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 11. - 10:51:06
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.
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 11. - 13:53:19
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 11. - 14:54:43
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!
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 12. - 15:27:30
Mint mondtam, hook helyett saját függvényt is csinálhatsz (public).
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 12. - 19:01:34
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.
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 13. - 14:01:45
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...
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 13. - 14:55:43
Bakki. Megint nem küldte el reggel. Szóval, OnPlayer(Un)Pause callbackes includeok? Igaz, ennek is kell egy jópár másodperc.
forum.sa-mp.com/showthread.php?t=380686
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 13. - 15:26:01
Dfoglalo: Igen pont ezért mert, ha lehetne OnPlayerStateChange alatt akkor meg is tudtam volna oldani, de így sajnos nem :s
 
Idézetet írta: KovaNovik date=1399985743\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Bakki. Megint nem küldte el reggel. Szóval, OnPlayer(Un)Pause callbackes includeok? Igaz, ennek is kell egy jópár másodperc.
forum.sa-mp.com/showthread.php?t=380686
 
Köszi, de ez nem azt érzékeli amikor pausolva van? szóval a menübe van? Vagy ez azt is érzékeli ha az ESC et nyomom meg?
E: Megoldottam! A Következõ képpen:
 

new bool:EnableTDClick[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, \"/enabletdclick\", true))
    {
        EnableTDClick[playerid] = true;
        return 1;
    }
    if(!strcmp(cmdtext, \"/disabletdclick\", true))
    {
        EnableTDClick[playerid] = false;
        return 1;
    }
    return 0;
}
public OnPlayerUpdate(playerid)
{
if(EnableTDClick[playerid] == true)
{
SelectTextDraw(playerid, 0xA3B4C5FF);
}
return 1;
}
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 15:56:38
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]
Cím: SetPlayerAttachedObject Változóból
Írta: Flash - 2014. Május 09. - 16:44:27
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);
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 16:48:32
Ez nekem nem jó, mivel h mozog az ember, fut vagy bármi nem marad a fején az object.
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 09. - 16:58:38
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 17:02:45
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?
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 09. - 23:24:03
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
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 09. - 23:44:47
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!
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 10. - 00:43:57
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
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 10. - 10:11:36
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 11. - 10:51:06
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.
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 11. - 13:53:19
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.
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 11. - 14:54:43
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!
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 12. - 15:27:30
Mint mondtam, hook helyett saját függvényt is csinálhatsz (public).
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 12. - 19:01:34
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.
Cím: SetPlayerAttachedObject Változóból
Írta: Dfoglalo - 2014. Május 13. - 14:01:45
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...
Cím: SetPlayerAttachedObject Változóból
Írta: KovaNovik - 2014. Május 13. - 14:55:43
Bakki. Megint nem küldte el reggel. Szóval, OnPlayer(Un)Pause callbackes includeok? Igaz, ennek is kell egy jópár másodperc.
forum.sa-mp.com/showthread.php?t=380686
Cím: SetPlayerAttachedObject Változóból
Írta: [sdc]skyline - 2014. Május 13. - 15:26:01
Dfoglalo: Igen pont ezért mert, ha lehetne OnPlayerStateChange alatt akkor meg is tudtam volna oldani, de így sajnos nem :s
 
Idézetet írta: KovaNovik date=1399985743\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48161\" data-ipsquote-contentclass=\"forums_Topic
Bakki. Megint nem küldte el reggel. Szóval, OnPlayer(Un)Pause callbackes includeok? Igaz, ennek is kell egy jópár másodperc.
forum.sa-mp.com/showthread.php?t=380686
 
Köszi, de ez nem azt érzékeli amikor pausolva van? szóval a menübe van? Vagy ez azt is érzékeli ha az ESC et nyomom meg?
E: Megoldottam! A Következõ képpen:
 

new bool:EnableTDClick[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, \"/enabletdclick\", true))
    {
        EnableTDClick[playerid] = true;
        return 1;
    }
    if(!strcmp(cmdtext, \"/disabletdclick\", true))
    {
        EnableTDClick[playerid] = false;
        return 1;
    }
    return 0;
}
public OnPlayerUpdate(playerid)
{
if(EnableTDClick[playerid] == true)
{
SelectTextDraw(playerid, 0xA3B4C5FF);
}
return 1;
}