Problem register and tut
#2

New code. This is similar to GodFather, I just did the code differently. Please help!

Код:
#include <a_samp>
#include <a_mysql>
#include <whirlpool>
//
#include <foreach>

main(){}

#define		MYSQL_HOST 				"127.0.0.1"
#define		MYSQL_USER 				"root"
#define		MYSQL_PASSWORD 			"12345"
#define		MYSQL_DATABASE 			"mojabaza"

#define	DIALOG_LOGIN 1
#define	DIALOG_REGISTER 2

new MySQL:ggg_SQL;
new MySQL_raceCheck[MAX_PLAYERS];

enum pInfo
{
	ID,
	Name[MAX_PLAYER_NAME],
	Password[129],
	Cache:Cache_ID,
	//
	pOrigin,
	pSex,
	pAge,
	pLevel,
	pTut
};
new PlayerInfo[MAX_PLAYERS][pInfo];

new GUIExit[MAX_PLAYERS];
new RegistrationStep[MAX_PLAYERS];
new TutTime[MAX_PLAYERS];

SetupPlayerTable()
{
	new query[1024];
	strcat(query, "CREATE TABLE IF NOT EXISTS `players` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(24) NOT NULL, `password` char(129) NOT NULL,");
	strcat(query, "`origin` int(5) NOT NULL, `sex` int(5) NOT NULL, `age` int(5) NOT NULL, `level` int(5) NOT NULL,");
	strcat(query, "PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`))");

	mysql_tquery(ggg_SQL, query);
	return 1;
}

public OnGameModeInit()
{
	new MySQLOpt:option_id = mysql_init_options();

	mysql_set_option(option_id, AUTO_RECONNECT, true);

	ggg_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
	if(ggg_SQL == MYSQL_INVALID_HANDLE || mysql_errno(ggg_SQL) != 0)
	{
		print("MySQL Error!");
		SendRconCommand("exit");
		return 1;
	}
	else
	{
		print("MySQL Connect!");
	}

	SetupPlayerTable();

	NewSelector::Init();

	SetTimer("OneSecondsTimer", 1000, true);

	return 1;
}

public OnGameModeExit()
{
	mysql_close(ggg_SQL);

	return 1;
}

public OnPlayerConnect(playerid)
{
	PlayerInfo[playerid][pLevel] = 0;
	PlayerInfo[playerid][pOrigin] = 0;
	PlayerInfo[playerid][pSex] = 0;
	PlayerInfo[playerid][pAge] = 0;
	PlayerInfo[playerid][pTut] = 0;

	RegistrationStep[playerid] = 0;
	GUIExit[playerid] = 0;
	TutTime[playerid] = 0;

	MySQL_raceCheck[playerid]++;

	static const empty_player[pInfo];
	PlayerInfo[playerid] = empty_player;

	GetPlayerName(playerid, PlayerInfo[playerid][Name], MAX_PLAYER_NAME);

	new query[103];
	mysql_format(ggg_SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", PlayerInfo[playerid][Name]);
	mysql_tquery(ggg_SQL, query, "OnPlayerDataLoaded", "dd", playerid, MySQL_raceCheck[playerid]);

	return 1;
}

forward OnPlayerDataLoaded(playerid, race_check);
public OnPlayerDataLoaded(playerid, race_check)
{
	if(race_check != MySQL_raceCheck[playerid]) return Kick(playerid);

	new string[115];
	if(cache_num_rows() > 0)
	{
		cache_get_value(0, "password", PlayerInfo[playerid][Password], 129);

		PlayerInfo[playerid][Cache_ID] = cache_save();

		format(string, sizeof string, "Account (%s) succes.", PlayerInfo[playerid][Name]);
		ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Exit");
	}
	else
	{
		format(string, sizeof string, "Hello %s, please register.", PlayerInfo[playerid][Name]);
		ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", string, "Register", "Exit");
	}
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case DIALOG_LOGIN:
		{
			if(!response) return Kick(playerid);

            new HashPass[129];
            WP_Hash(HashPass, sizeof(HashPass), inputtext);

			if(strcmp(HashPass, PlayerInfo[playerid][Password]) == 0)
			{
				cache_set_active(PlayerInfo[playerid][Cache_ID]);

				cache_delete(PlayerInfo[playerid][Cache_ID]);
				PlayerInfo[playerid][Cache_ID] = MYSQL_INVALID_CACHE;

				GUIExit[playerid] = 0;
			}
			else
			{
				ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Wrong password!", "Login", "Exit");
			}
		}
		case DIALOG_REGISTER:
		{
			if(!response) return Kick(playerid);

			if(strlen(inputtext) >= 6 && strlen(inputtext) <= 64)
			{
				/*
	            new HashPass[129];
	            WP_Hash(HashPass, sizeof(HashPass), inputtext);

				new query[300];
				mysql_format(g_SQL, query, sizeof(query), "INSERT INTO `players` (`username`, `password`) VALUES ('%e', '%s')", PlayerInfo[playerid][Name], HashPass);
				mysql_tquery(g_SQL, query, "OnPlayerRegister", "d", playerid);
				*/

				GUIExit[playerid] = 0;
				SetPlayerVirtualWorld(playerid, 0);

				ShowPlayerDialog(playerid, 71, DIALOG_STYLE_LIST, "Choose gender 2", "Man\nWoman", "Next", "Back");
			}
			else
			{
				ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Enter password", "Register", "Exit");
			}
		}

		case 70:
		{
		    if(response)
		    {
		        ShowPlayerDialog(playerid, 71, DIALOG_STYLE_LIST, "Choose gender 2", "Man\nWoman", "Next", "Back");
		    }
		    if(!response)
		    {
		        ShowPlayerDialog(playerid, 71, DIALOG_STYLE_LIST, "Choose gender 2", "Man\nWoman", "Next", "Back");
		    }
		}
		case 71:
		{
		    if(response)
		    {
		        switch(listitem)
				{
				    case 0://men
				    {
				        ShowPlayerDialog(playerid, 72, DIALOG_STYLE_LIST, "Choose the origin", "USA\nEurope\nAsia", "Next", "Back");
	                    PlayerInfo[playerid][pSex] = 1;
	                    SendClientMessage(playerid, -1, "Your character is a man.");
					}
				    case 1://baba
				    {
				        ShowPlayerDialog(playerid, 72, DIALOG_STYLE_LIST, "Choose the origin", "USA\nEuropa\nAsia", "Next", "Back");
	                    PlayerInfo[playerid][pSex] = 2;
	                    SendClientMessage(playerid, -1, "Your character is a woman.");
					}
				}
			}
		    if(!response)
		    {
		        ShowPlayerDialog(playerid, 70, DIALOG_STYLE_MSGBOX, "Welcome RolePlay", "Welcome to the Role Play server.\nIf you're new here, we've prepared 2 guides for you.\nYou can see them for a while, but first you have to describe the character you will play\nWe wish you a nice game.", "Next", "");
		    }
		}
		case 72:
		{
		    if(response)
		    {
				switch(listitem)
				{
				    case 0://usa
				    {
				        PlayerInfo[playerid][pOrigin] = 1;
				        SendClientMessage(playerid, -1, "Your character is now a USA.");
				    }
				    case 1://europe
				    {
				        PlayerInfo[playerid][pOrigin] = 2;
				        SendClientMessage(playerid, -1, "Your character is now a EUROPE.");
				    }
				    case 2://azia
				    {
				        SendClientMessage(playerid, -1, "Your character is now a ASIA.");
				        PlayerInfo[playerid][pOrigin] = 3;
				    }
				}
				ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Choose the age of the character", "Enter the age of your character (from 16 to 140 years)", "Next", "Back");
			}
			if(!response)
			{
			    ShowPlayerDialog(playerid, 71, DIALOG_STYLE_LIST, "Gender", "Man\nWoman", "Next", "Back");
			}
		}
		case 73:
		{
		    if(response)
		    {
		        if(strlen(inputtext) > 1 && strlen(inputtext) < 4)
	            {
	                if(strval(inputtext) >= 16 && strval(inputtext) <= 140)
	                {
	                    PlayerInfo[playerid][pAge] = strval(inputtext);
						ShowPlayerDialog(playerid, 74, DIALOG_STYLE_MSGBOX, "Tutorial", "This is all the data you had to provide. Now you have to go through the tutorial.\nTo start it, press 'Next'", "Next", "Back");
	                }
	                else
	                {
	                    ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Character age", "Enter the age of your character (from 16 to 140 years)", "Next", "Back");
	                }
	            }
	            else
	            {
	                ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Character age", "Enter the age of your character (from 16 to 140 years)", "Next", "Back");
	            }
		    }
		    if(!response)
		    {
		        ShowPlayerDialog(playerid, 72, DIALOG_STYLE_LIST, "Origin", "USA\nEurope\nAsia", "Next", "Back");
		    }
		}
		case 74:
		{
            if(PlayerInfo[playerid][pLevel] > 1) return 1;
		    if(response)
		    {
				TogglePlayerControllable(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
				GUIExit[playerid] = 0;
		   		SendClientMessage(playerid, -1, "Welcome Role Play server.");
				SendClientMessage(playerid, -1, "Tutorial...");
				SendClientMessage(playerid, -1, "Tutorial...");
				SendClientMessage(playerid, -1, "Tutorial...");
				RegistrationStep[playerid] = 0;
	   			TutTime[playerid] = 1;
		    }
		    if(!response)
		    {
		        ShowPlayerDialog(playerid, 73, DIALOG_STYLE_INPUT, "Character age", "Enter the age of your character (from 16 to 140 years)", "Next", "Back");
		    }
		}

		default: return 0;
	}
	return 1;
}

forward OnPlayerRegister(playerid);
public OnPlayerRegister(playerid)
{
	PlayerInfo[playerid][ID] = cache_insert_id();
	return 1;
}

forward OneSecondsTimer();
public OneSecondsTimer()
{
    foreach(Player, i)
	{
        if(!IsPlayerConnected(i)) continue;

		if(TutTime[i] >= 1 && !IsPlayerNPC(i))
		{
			TutTime[i] += 1;
			if(TutTime[i] == 3)
			{
				SetPlayerPos(i, 849.62371826172, -989.92199707031, -5.0);
				SetPlayerCameraPos(i, 849.62371826172, -989.92199707031, 53.211112976074);
				SetPlayerCameraLookAt(i, 907.40313720703, -913.14117431641, 77.788856506348);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 1 ____|");
				SendClientMessage(i, -1, "Tutorial 1...");
				SendClientMessage(i, -1, "Tutorial 1...");
			}
			else if(TutTime[i] == 14)
			{
				SetPlayerPos(i, 326.09194946289, -1521.3157958984, 20.0);
				SetPlayerCameraPos(i, 398.16021728516, -1511.9237060547, 78.641815185547);
				SetPlayerCameraLookAt(i, 326.09194946289, -1521.3157958984, 42.154850006104);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 2 ____|");
			}
			else if(TutTime[i] == 16)
			{
				SendClientMessage(i, -1, "Tutorial 2...");
				SendClientMessage(i, -1, "Tutorial 2...");
			}
			else if(TutTime[i] == 30)
			{
				SetPlayerPos(i, 1016.9872436523, -1372.0234375, -5.0);
				SetPlayerCameraPos(i, 1053.3154296875, -1326.3295898438, 28.300031661987);
				SetPlayerCameraLookAt(i, 1016.9872436523, -1372.0234375, 15.836219787598);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 3 ____|");
			}
			else if(TutTime[i] == 32)
			{
				SendClientMessage(i, -1, "Tutorial 3...");
				SendClientMessage(i, -1, "Tutorial 3...");
			}
			else if(TutTime[i] == 52)
			{
				SetPlayerPos(i, 1352.2797851563, -1757.189453125, -5.0);
				SetPlayerCameraPos(i, 1352.4576416016, -1725.1925048828, 23.291763305664);
				SetPlayerCameraLookAt(i, 1352.2797851563, -1757.189453125, 13.5078125);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 4____|");
			}
			else if(TutTime[i] == 54)
			{
				SendClientMessage(i, -1, "Tutorial 4...");
				SendClientMessage(i, -1, "Tutorial 4...");
			}
			else if(TutTime[i] == 74)
			{
				SetPlayerPos(i, 370.02825927734, -2083.5886230469, -10.0);
				SetPlayerCameraPos(i, 340.61755371094, -2091.701171875, 22.800081253052);
				SetPlayerCameraLookAt(i, 370.02825927734, -2083.5886230469, 8.1386299133301);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 5 ____|");
			}
			else if(TutTime[i] == 76)
			{
				SendClientMessage(i, -1, "Tutorial 5...");
				SendClientMessage(i, -1, "Tutorial 5...");
			}
			else if(TutTime[i] == 96)
			{
				SetPlayerPos(i, 1172.8602294922, -1331.978515625, -5.0);
				SetPlayerCameraPos(i, 1228.7977294922, -1345.1479492188, 21.532119750977);
				SetPlayerCameraLookAt(i, 1172.8602294922, -1331.978515625, 14.317019462585);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 6 ____|");
			}
			else if(TutTime[i] == 98)
			{
				SendClientMessage(i, -1, "Tutorial 6...");
				SendClientMessage(i, -1, "Tutorial 6...");
			}
			else if(TutTime[i] == 112)
			{
				SetPlayerPos(i, 412.80743408203, -1312.4066162109, -5.0);
				SetPlayerCameraPos(i, 402.2776184082, -1351.4703369141, 43.704566955566);
				SetPlayerCameraLookAt(i, 412.80743408203, -1312.4066162109, 39.677307128906);
				SendClientMessage(i, -1, "|____ Tutorial: Tutorial 7 ____|");
			}
			else if(TutTime[i] == 114)
			{
				SendClientMessage(i, -1, "Tutorial 7...");
				SendClientMessage(i, -1, "Tutorial 7...");
			}
			else if(TutTime[i] == 125)
			{
				TutTime[i] = 0; PlayerInfo[i][pTut] = 1;

				TogglePlayerControllable(i, 1);

				SetPlayerSpawn(i);

				SpawnPlayer(i);

				SetPVarInt(i, "Choosing_The_First_One", 1);

				SetPlayerCameraPos(i, 206.288314, -38.114028, 1002.229675);
				SetPlayerCameraLookAt(i, 208.775955, -34.981678, 1001.929687);

				NewSelector::Setup(i);

				SetPlayerCameraPos(i, 206.288314, -38.114028, 1002.229675);
				SetPlayerCameraLookAt(i, 208.775955, -34.981678, 1001.929687);
			}
		}
	}
	return 1;
}

SetPlayerSpawn(playerid)
{
	SetPlayerSpawnPos(playerid);
	return 1;
}

SetPlayerSpawnPos(playerid)
{
    //Tutorial:
    if(PlayerInfo[playerid][pTut] == 0)
    {
		TogglePlayerControllable(playerid, 0);
		RegistrationStep[playerid] = 1;
	    SetPlayerPos(playerid, 1275.0283203125, -1337.3585205078, -5.0);
	    SetPlayerCameraPos(playerid, 1275.0283203125, -1337.3585205078, 10.852507591248);
		SetPlayerCameraLookAt(playerid, 1235.1977539063, -1341.1885986328, 54.349945068359);
		SendClientMessage(playerid, -1, "Welcome Role Play!");
		SendClientMessage(playerid, -1, "To start the game you have to go through the registration procedure.");
		ShowPlayerDialog(playerid, 70, DIALOG_STYLE_MSGBOX, "Welcome to Role Play"," Welcome to Role Play server.\nIf you're new here, we've prepared a guide for you.\nYou can see it for a moment, but first you will have to describe the character you control\nTo go further, press the button 'Next'", "Next", "");
    }
	return 1;
}
Reply


Messages In This Thread
Problem register and tut - by KamilPolska - 21.02.2019, 18:21
Re: Problem register and tut - by KamilPolska - 21.02.2019, 23:37
Re: Problem register and tut - by KamilPolska - 22.02.2019, 17:33
Re: Problem register and tut - by TheLeech - 22.02.2019, 18:21
Re: Problem register and tut - by KamilPolska - 23.02.2019, 14:59
Re: Problem register and tut - by KamilPolska - 24.02.2019, 08:57

Forum Jump:


Users browsing this thread: 2 Guest(s)