Jump to content
  • 0

pomoc Kamera při Loginu


T.Evil

Dotaz

Popis problému:

 

Zdravím,

potýkám se s problémem ohledně kamery.

 

Problém:

Po přihlášení hráči zobrazím register/login dialog.

Problém je, že kamera se spustí až potom co hráč zareaguje na dialog.

To se děje v případě že kameru nastavím do OnPlayerRequestClass.

Když kameru nastavím do OnPlayerConnect nic se neděje, kamera se nezobrazí.

Otázka tedy zní, kam mám kameru nastavit tak, aby se zobrazila ve stejnou chvíli jako register/login dialog?

 

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

--

 

Kód:

 

 

 

 

forward SkipSpawn(playerid);
public OnPlayerRequestClass(playerid)
{
  SetTimerEx("SkipSpawn",1,0,"i",playerid);
  return 1;
}
public SkipSpawn(playerid)
{
  SpawnPlayer(playerid);
  return 1;
}

// KAM S TÍM?

SetPlayerCameraPos(playerid, 320.0, 50.0, 170.0);
SetPlayerCameraLookAt(playerid, 324.34, 54.122, 173.35);

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

16 odpovědí na tuto otázku

Recommended Posts

  • 0

Tak mě napadá, že můžeš dát do OnPlayerConnect pro hráče třeba timer, že se mu po 1 sekundě, co se připojí na server ukáže ten register/login dialog.. V tu dobu už by mohl mít nastavenou kameru jak máš v OnPlayerRequestClass.. :D

Link to comment
Share on other sites

  • 0
public OnPlayerRequestClass(playerid, classid)
{
        SetPlayerCameraPos(playerid, 320.0, 50.0, 170.0);
        SetPlayerCameraLookAt(playerid, 324.34, 54.122, 173.35);

	ShowPlayerDialog(...); // Dialog Login, Register a s OnPlayerConnect-u ho môžeš vymazať
	return 1;
}

A po prihlásení / zaregistrovaní ho môžeš hneď spawnuť..

Edited by Carlosoo
Link to comment
Share on other sites

  • 0

@Ocet
Nefunguje mi to - Kamera se prostě nezobrazí...

@Carlosoo
Tohle sice funguje ale ze záhadných důvodů se kamera naukáže na pozici kde chci ale ukáže hráče a jeho pozici.. 
 

:/

Kamera v OnPlayerConnect nejspíš nemá co dělat, jenže já potřebuju aby se zobrazila když se hráč připojí... Né
když vyžaduje class..

Edited by T.Evil
Link to comment
Share on other sites

  • 0

@Carlosoo

Tohle sice funguje ale ze záhadných důvodů se kamera naukáže na pozici kde chci ale ukáže hráče a jeho pozici.. 

TWL Tie pozície si zmeň.. Ja som ich skopíroval čo si ty písal

 

// KAM S TÍM?

SetPlayerCameraPos(playerid, 320.0, 50.0, 170.0);
SetPlayerCameraLookAt(playerid, 324.34, 54.122, 173.35);

 

EDIT: OnPlayerConnect je len pripojenie, jak sa pripojíš tak ta hneď prehodí do OnPlayerRequestClass, kde ty budeš mať Login / Register. Takže je úplne jedno kde sú, vykoná to tak isto.

Edited by Carlosoo
Link to comment
Share on other sites

  • 0

Funkce SpawnPlayer zrusi dane nastaveni hracske kamery a prepne ji na pohled z 3 osoby, jako normal kdyz hrajes.

 

A protoze v OnPlayerRequestClass volas timerem funkci SkipSpawn, ktera hrace spawne (mimochodem nechapu smysl timeru s 1ms, neni lepsi to volat naprimo? :)), tak si tu kameru sice nastavis, ale hned zase vypnes.

 

Reseni? Prodlud ten timer alespon na par vterin.

 

BTW nikde v kodu co jsi nam ukazal nevidim prihlasovaci dialog.

Link to comment
Share on other sites

  • 0

Přihlašovací dialog se zobrazí ve chvíli OnPlayerConnect,
OnPlayerRequestClass se vyvolá až když odpoví na přihlašovací dialog a to už je dávno spawnutý.
Potřebuju tu kameru vyvolat současně s login dialogem... Ale login dialog v OnPlayerRequestClass dělá bordel, lepší je v OnPlayerConnect

Link to comment
Share on other sites

  • 0

Přihlašovací dialog se zobrazí ve chvíli OnPlayerConnect,

OnPlayerRequestClass se vyvolá až když odpoví na přihlašovací dialog a to už je dávno spawnutý.

Potřebuju tu kameru vyvolat současně s login dialogem... Ale login dialog v OnPlayerRequestClass dělá bordel, lepší je v OnPlayerConnect

 

 

forward Kamera(playerid);
public Kamera(playerid)
{
      //Místo InterpolateCameraPos tam dej ten SetPlayerCameraPos
      InterpolateCameraPos(playerid, 1967.290649, 1303.167114, 142.714294, 2004.173461, 1648.076904, 55.769004, 10000);
      InterpolateCameraLookAt(playerid, 1968.374877, 1307.247436, 140.035598, 2002.247070, 1652.677978, 56.113693, 10000);
      return 1;
}

A do Connectu si dej.

SetTimerEx("Kamera", 100, false, "i", playerid);

Samozřejmě 100 (čas v ms) si uprav libovolně..

Link to comment
Share on other sites

  • 0

Přihlašovací dialog se zobrazí ve chvíli OnPlayerConnect,

OnPlayerRequestClass se vyvolá až když odpoví na přihlašovací dialog a to už je dávno spawnutý.

Potřebuju tu kameru vyvolat současně s login dialogem... Ale login dialog v OnPlayerRequestClass dělá bordel, lepší je v OnPlayerConnect

Dobre tedy.

OnPlayerRequestClass se rozhodne nevola s potvrzenim dialogu nato ma dialog svou funkci. Ale OnPlayerRequestClass se vola v okamziku, kdyz je clientova hra pripravena na vyber postavy, tzn to je okamzik kdy mu mas tu kameru nastavit. A SpawnPlayer musis dat az prave ten dialog potvrdi (OnDialogResponse)

 

Pseudo-kod:

public OnPlayerConnect(playerid)
{
ShowPlayerDialog("prihlas se zadej heslo");
}
public OnPlayerRequestClass(playerid)
{
SetCameraPos(...)
//osobne bych ten dialog dal radeji sem.
}
public OnDialogResponse(playerid)
{
if(dialog == login)
{
SpawnPlayer(playerid);
SCM("prihlasil ses hraj")
}
}
Edited by ATomas
Link to comment
Share on other sites

  • 0

@ATomas
Díky moc,
dal jsem tedy dialog do OnPlayerRequestClass. Měl jsi pravdu s tim timerem na skipspawn, přeskočil kameru. Dal jsem ho tedy pryč ale vzniká nový problém.
Když nemám skip spawn, ve chvíli kdy zobrazím dialog se zobrazí i Spawn Button a to nechci... Nemám vůbec představu jak ho odstranit a nejlepší by bylo
kdyby se nezobrazovali ani AddPlayerClass.

Když je registrovaný - pouze kamera a login dialog

Any idea?

 

 

 

EDIT: Už jsem to vyřešil, díky moc všem za radu moc si toho vážim :)

Edited by T.Evil
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...