Jump to content
  • 0

pomoc Skin Select


Mishak

Dotaz

Zdravím, snažím se o to, aby po registraci účtu vyskočil na hráče dialog, kde si vybere mezi pohlavím - Muž a Žena. Poté, co si vybere třeba mužské pohlaví by měl mít na výběr mužské skiny a až si nějaký skin vybere, tak jen spawn na určeném místě. No, potom by se ten skin měl uložit a při dalším přihlášení by se měl načíst a už by to nemělo nabízen volbu skinu. Navíc mi nefunguje načtení poslední pozice před odpojením. Vím, že mi tam toho spoustu chybí, zkoušel jsem hodně dlouho najít řešení, jen se mi to vůbec nepodařilo, tak píšu sem o nějaké rady. Díky.

#include <a_samp>
#include <dini>
#include <dudb>
//------------------------------------------------------------------------------
new Float:X, Float:Y, Float:Z;
//------------------------------------------------------------------------------
enum pInfo
{
    pAdminLevel,
    pCash,
    pScore,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new gPlayerLogged[MAX_PLAYERS];

#define UCTY "ucty/%s.ini"
//------------------------------------------------------------------------------

public OnGameModeInit()
{
	SetGameModeText("CommingSoon..");
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerFacingAngle(playerid, 179.2827);
	SetPlayerPos(playerid, -1916.8508,305.4696,41.0469);
	SetPlayerCameraPos(playerid, -1916.6941,297.8557,41.0469);
	SetPlayerCameraLookAt(playerid, -1916.8508,305.4696,41.0469);
	return 1;
}

public OnPlayerConnect(playerid)
{
    gPlayerLogged[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), UCTY, name);
    if (!dini_Exists(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{0000FF}Zdravíme tě, vítej na našem serveru.", "Zaregistruj  se tak, že dolů napiš heslo, které budeš používat.", "Zaregistrovat", "Odejit");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{0000FF}Vítej zpátky", "Jsi již zaregistrovaný. Přihlaš se napsáním hesla dole.", "Prihlasit", "Odejit");
    }
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), UCTY, name);
    if(gPlayerLogged[playerid] == 1)
    {
        GetPlayerPos(playerid, X, Y, Z);
        dini_IntSet(file, "Score", PlayerInfo[playerid][pScore]);
        dini_IntSet(file, "Money", PlayerInfo[playerid][pCash]);
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel]);
        dini_IntSet(file, "Skin", GetPlayerSkin(playerid));
		dini_FloatSet(file, "X", X);
		dini_FloatSet(file, "Y", Y);
		dini_FloatSet(file, "Z", Z);
    }
    gPlayerLogged[playerid] = 0;
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), UCTY, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
                ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "{0000FF}Zdravíme tě, vítej na našem serveru.", "Zaregistruj  se tak, že dolů napiš heslo, které budeš používat.", "Zaregistrovat", "Odejit");
        dini_Create(file);
        dini_IntSet(file, "Password", udb_hash(inputtext));
        dini_IntSet(file, "AdminLevel",PlayerInfo[playerid][pAdminLevel] = 0);
        dini_IntSet(file, "Money",PlayerInfo[playerid][pCash] = 500);
        dini_IntSet(file, "Score",PlayerInfo[playerid][pScore] = 0);
        format(string, 128, "Úspěšně jsi dokončil registraci! Jméno: {00FF00}%s {0080FF}a Heslo: {00FF00}%s{0080FF}, byl jsi automaticky přihlášen.", name, inputtext);
        SendClientMessage(playerid, 0x0080FFFF, string);
        gPlayerLogged[playerid] = 1;
        ShowPlayerDialog(playerid,3,DIALOG_STYLE_MSGBOX,"Pohlavi","Vyber si pohlavi postavy, za kterou budes hrat.","Muz","Zena");
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), UCTY, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{46A6F4FF}Vítej zpátky", "Jsi již zaregistrovaný. Přihlaš se napsáním hesla dole.", "Prihlasit", "Odejit");
        new tmp;
        tmp = dini_Int(file, "Password");
        if(udb_hash(inputtext) != tmp) {
            SendClientMessage(playerid, 0xF43737FF, "Je mi líto, ale toto heslo je nesprávné.");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "{0000FF}Vítej zpátky", "Jsi již zaregistrovaný. Přihlaš se napsáním hesla dole.", "Prihlasit", "Odejit");
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pAdminLevel] = dini_Int(file, "AdminLevel");
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
            GivePlayerMoney(playerid, dini_Int(file, "Money")-GetPlayerMoney(playerid));
            SetPlayerSkin(playerid, dini_Int(file, "Skin"));
            SendClientMessage(playerid,0x0080FFFF, "Úspešně jsi se přihlásil!");
            X = dini_Float(file, "X");
			Y = dini_Float(file, "Y");
			Z = dini_Float(file, "Z");
			SetPlayerPos(playerid, X, Y, Z);
        }
    }
    if (dialogid == 3)
    {
		if (response == 1)
		{
			AddPlayerClass(23, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(29, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(60, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(107, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(115, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(122, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(188, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(217, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(247, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(248, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(250, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(254, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
			AddPlayerClass(299, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		}
		else if (response == 0)
		{
		    AddPlayerClass(90, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(93, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(169, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(190, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(192, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(193, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(195, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(211, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(226, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(256, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(216, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(233, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		    AddPlayerClass(298, -1916.8508,305.4696,41.0469,179.2827, 0, 0, 0, 0, 0, 0);
		}
	}
    return 1;
}

Link to comment
Share on other sites

3 odpovědí na tuto otázku

Recommended Posts

  • 0

AddPlayerClass patří do OnGameModeInit a bez nějakého externího pluginu jí následně nemůžeš ani upravit, takže vlož všechny skiny pod OnGameModeInit a následně v OnPlayerRequestClass kontroluj jestli je tenhle skin pro toho nebo toho.

S dini sem nikdy víc nepracoval, ale hádám že nastavuješ pozici dřív než se spawneš, takže to následně přebere AddPlayerClass nebo něco pod OnPlayerSpawn.

 

To co chceš přesně ty, bez nějakého pluginu nebo vlastního výběru postav, neuděláš.

Link to comment
Share on other sites

  • 0

Dobře, díky. V tom případě bych měl další otázku a to, jestli jde nějak zobrazit ta postava(skin) jinak než přes AddPlayerClass, myslím tím, že kdybych si dělal vlastní výběr postav, tak bych tlačítekm jezdil doleva/doprava a přehazovalo by mi to skiny, bylo by jich jen pár, ne všechny. Jaká funkce by se na tohle dala použít?

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