Jump to content
  • 0

pomoc Načítanie zbrani a pozície cez dini


Marshall_

Dotaz

Zdravím,

Mám menší problém s načítaním pozície a zbraní. Presnejšie pozíciu viem uložiť no nie načítať a pre zbrane neviem ani jedno. Prosím vyvarujte sa komentárom: dini je pomalé apod. Uprímne ma to nezaujíma, pretože tento server nie je verejný a verejný nikdy nebude. Tu je kód. Predom ďakujem za odpoveď.

 

public OnPlayerDisconnect(playerid, reason)
{
 	if(STATISTIKY[playerid][Login] == true)
 	{
      dUserSetINT(NickName(playerid)).("Peniaze", GetPlayerMoney(playerid));
      GetPlayerPos(playerid, PosX, PosY, PosZ);
	  dUserSetFLOAT(NickName(playerid)).("PosX", PosX);
	  dUserSetFLOAT(NickName(playerid)).("PosY", PosY);
	  dUserSetFLOAT(NickName(playerid)).("PosZ", PosZ);
      STATISTIKY[playerid][Login] = false;
 	}
	return 1;
}
if(dialogid == LOGIN_DIALOG) //Ak to je prihlasovací dialóg
		{
		    if(response == 1)
		    {
		        if(udb_CheckLogin(NickName(playerid), inputtext)) //Ak sa podarí prihlásiť
		        {
          			GivePlayerMoney(playerid, dUserINT(NickName(playerid)).("Peniaze")-GetPlayerMoney(playerid));
	    			SetPlayerPos(playerid, dUserFLOAT(NickName(playerid)).("PosX"),dUserFLOAT(NickName(playerid)).("PosY"),dUserFLOAT(NickName(playerid)).("PosZ"));
		            STATISTIKY [playerid][Login] = true;
		            
				}
		}

 

Edited by Marshall_
Link to comment
Share on other sites

8 odpovědí na tuto otázku

Recommended Posts

  • 0
SetPlayerPos(playerid, dUserFLOAT(NickName(playerid)).("PosX"),dUserFLOAT(NickName(playerid)).("PosY"),dUserFLOAT(NickName(playerid)).("PosZ"));

Ale veď toto je načítanie pozície, či nie ? :d A doporučujem ešte uložiť aj rotáciu hráča, inak bude vždy otočený na sever, ale to až tak nevadí :d A pre tie zbrane, zistíš si informácie o všetkých zbraniach ktoré môže mať (13 slotov = 13 zbraní), pokiaľ na tom slote zbraň nieje, neuložíš to, pokiaľ tam zbraň je tak ju zapíšeš aj z počtom nábojov.. Našiel som príklad na samp fóre, a upravil ho..

 

for (new c = 0; c < 13; c++)
{
    new id[8], amm[6];
    format(id, 8, "Weapon%i", c);
    format(amm, 6, "Ammo%i", c);
	GetPlayerWeaponData(playerid, c, weaponid, ammo);
	if (weaponid != 0 && ammo != 0)
	{
		// SetInt(.., id, weaponid);
        // SetInt(.., amm, ammo);
	}
}

 

Edited by EvoLve.
Link to comment
Share on other sites

  • 1

Lebo nieje spawnutý a už mu nastavuješ pozíciu..

 

public OnPlayerRequestSpawn(playerid)
{
	SetPlayerPos(playerid, dUserFLOAT(NickName(playerid)).("PosX"),dUserFLOAT(NickName(playerid)).("PosY"),dUserFLOAT(NickName(playerid)).("PosZ"));
	return 1;
}

A s prihlásenia to môžeš zmazať, aj tak to nič nespraví.

Link to comment
Share on other sites

  • 1

:d Tak hráč po každom umrtí bude na tom mieste ktoré má uložené.. OnPlayerReqestSpawn sa vyvolá po prvom spawnutí od pripojenia, do OnPlayerSpawn môžeš dať spawn pred nemocnicu napríklad :d

Edited by EvoLve.
Link to comment
Share on other sites

  • 1

Pretože má uloženú pizíciu 0.0 0.0 0.0 a ty ho tam portneš, takže ho dá pod tú farmu.. Buď mu môžeš do súboru zapísať pozíciu, čo zaberie menej riadkov, alebo môžeš kontrolovať či sa práve zaregistroval, a podľa toho mu tú pozíciu nastaviť..

public OnPlayerConnect(playerid)
{
	if(KedJeZaregistrovaný) // Login
	{
		Registred = true;
		ShowPlayerDialog(...);
	}
	else // Register
	{
		Registred = false;
		ShowPlayerDialog(...);
	}
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	if(Registred) SetPlayerPos(playerid, GetFloat, GetFloat, GetFloat); // Zo súboru
	else SetPlayerPos(playerid, DefaultX, DefaultY, DefaulZ); // Defaultná pozícia
	return 1;
}

 

A radšej by si si mal založiť nový topic, lebo toto je "spam" či čo to..

Edited by EvoLve.
Link to comment
Share on other sites

  • 0

Narazil som na ďalší problém, ktorý nejako neviem vyriešiť.  Ak sa hráč zaregistruje, chcem aby sa jeho pozícia nastavila na defaultný spawn, no ak sa prihlási znova, už bude na pozícii, na ktorej bol. Funguje to z časti. Hráč sa po registrácii spawne v Blueberry pod zem. Keď ho to portne naspäť a hráč sa pohne, po opätovnom prihlásení je tam, kde sa odpojil. Niekto nejaké rady?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...