21.02.2019, 18:21
Hello. I have a problem with the registration, login, gender, origin, age and tutorial. How I choose gender in dialogue is the second time the same dialogue shows me. 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 "mydatabse"
#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();
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;
}
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)
{
ShowPlayerDialog(playerid, 70, DIALOG_STYLE_LIST, "Choose gender", "Man\nWoman", "Next", "Back");
/*
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);
*/
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Rejestracja", "Twoje hasło musi mieć od 6 do 64 znakуw!\nW polu poniżej wpisz swoje hasło:", "Zarejestruj", "Wyjdź");
}
}
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);
//Spawn, selector...
}
}
}
return 1;
}

