Hey guys I am trying to make a register / login mysql script work but the problem is that it doesn't want to show the register dialog. I can just click spawn and it will bypass everything. I think the problem is about wehre I putted the dialog code but I'm not sure.
Код:
#include <a_samp>
#include <a_mysql>
//==============================================================================
//Password Hashing
native WP_Hash(buffer[], len, const str[]);
//==============================================================================
#define MYSQL_DATABASE "sawr"
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER "root"
#define MYSQL_PASSWORD ""
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_RED 0xAA3333AA
//==============================================================================
new mysql;
new Text:Intro[12];
new bool:IntroScreen = true;
//==============================================================================
forward ShowIntro(playerid);
forward EndIntro(playerid);
forward InvalidRoleplayName(playerid);
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
//==============================================================================
stock strreplace(string[], find, replace)
{
for(new i=0; string[i]; i++)
{
if(string[i] == find)
{
string[i] = replace;
}
}
}
//==============================================================================
stock GetName(playerid)
{
new Name[MAX_PLAYER_NAME];
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, Name, sizeof(Name));
strreplace(Name, '_', ' ');
}
return Name;
}
//==============================================================================
stock ContainsValidCharacters(string[])
{
if (
(strfind(string, "[") != -1) ||
(strfind(string, "]") != -1) ||
(strfind(string, "/") != -1) ||
(strfind(string, "\\") != -1) ||
(strfind(string, ":") != -1) ||
(strfind(string, "*") != -1) ||
(strfind(string, "?") != -1) ||
(strfind(string, "<") != -1) ||
(strfind(string, ">") != -1) ||
(strfind(string, "|") != -1) ||
(strfind(string, "\"") != -1) )
return 0;
return 1;
}
//==============================================================================
enum
{
LoginDialog,
RegisterDialog
};
enum PlayerData
{
ID,
Name[MAX_PLAYER_NAME],
Password[129],
IP[16],
Admin,
VIP,
Money,
Float:PosX,
Float:PosY,
Float:PosZ,
Float:PosA
};
new Player[MAX_PLAYERS][PlayerData];
//==============================================================================
main()
{
print("\n----------------------------------");
print(" SA:WR Roleplay Scripted by Daniel");
print(" Version 1.0.0");
print("----------------------------------\n");
}
//==============================================================================
public OnGameModeInit()
{
{
Intro[0] = TextDrawCreate(642.0, 1.0, "~n~");
TextDrawLetterSize(Intro[0], 0.5, 49.5);
TextDrawUseBox(Intro[0], 1);
TextDrawBoxColor(Intro[0], 0x000000FF);
TextDrawTextSize(Intro[0], -2.0, 0.0);
Intro[1] = TextDrawCreate(140.000000, 190.000000, "~p~~h~San Andreas");
TextDrawFont(Intro[1], 2);
TextDrawLetterSize(Intro[1], 0.570000, 1.799999);
Intro[2] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[2], 2);
TextDrawColor(Intro[2], 0xFFFFFF22);
TextDrawLetterSize(Intro[2], 0.570000, 1.799999);
Intro[3] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[3], 2);
TextDrawColor(Intro[3], 0xFFFFFF44);
TextDrawLetterSize(Intro[3], 0.570000, 1.799999);
Intro[4] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[4], 2);
TextDrawColor(Intro[4], 0xFFFFFF66);
TextDrawLetterSize(Intro[4], 0.570000, 1.799999);
Intro[5] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[5], 2);
TextDrawColor(Intro[5], 0xFFFFFF88);
TextDrawLetterSize(Intro[5], 0.570000, 1.799999);
Intro[6] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[6], 2);
TextDrawColor(Intro[6], 0xFFFFFFAA);
TextDrawLetterSize(Intro[6], 0.570000, 1.799999);
Intro[7] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[7], 2);
TextDrawColor(Intro[7], 0xFFFFFFCC);
TextDrawLetterSize(Intro[7], 0.570000, 1.799999);
Intro[8] = TextDrawCreate(305.000000, 190.000000, "West Roleplay");
TextDrawFont(Intro[8], 2);
TextDrawColor(Intro[8], 0xFFFFFFFF);
TextDrawLetterSize(Intro[8], 0.570000, 1.799999);
Intro[9] = TextDrawCreate(190.0, 202.0, ".");
TextDrawFont(Intro[9], 1);
TextDrawLetterSize(Intro[9], 23.250051, 1.099999);
Intro[10] = TextDrawCreate(304.00, 223.0, "~y~~h~www.sawr.com");
TextDrawFont(Intro[10], 2);
TextDrawLetterSize(Intro[10], 0.340000, 1.099999);
Intro[11] = TextDrawCreate(331.0, 235.0, "~g~~h~Enjoy the game!");
TextDrawFont(Intro[11], 2);
TextDrawLetterSize(Intro[11], 0.340000, 1.099999);
}
mysql_log(LOG_ALL);
mysql = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
if(mysql_errno() != 0)
{
printf("[MySQL] The connection has failed.");
}
else
{
printf("[MySQL] The connection was successful.");
}
UsePlayerPedAnims();
ShowNameTags(1);
SetGameModeText("SA:WR v1.0.0");
AddPlayerClass(299, 1481.0868,-1769.9332,18.7958,1.5524, 0, 0, 0, 0, 0, 0);
return true;
}
//==============================================================================
public ShowIntro(playerid)
{
SetPVarInt(playerid, "Intro", GetPVarInt(playerid, "Intro") + 1);
new iteration = GetPVarInt(playerid, "Intro");
switch(iteration)
{
case 1:
{
for(new i; i < 11; i++)
{
SendClientMessage(playerid, -1, "");
}
TextDrawShowForPlayer(playerid, Intro[0]);
}
case 2:
{
TextDrawShowForPlayer(playerid, Intro[1]);
}
case 3:
{
TextDrawShowForPlayer(playerid, Intro[2]);
}
case 4:
{
TextDrawHideForPlayer(playerid, Intro[2]);
TextDrawShowForPlayer(playerid, Intro[3]);
}
case 5:
{
TextDrawHideForPlayer(playerid, Intro[3]);
TextDrawShowForPlayer(playerid, Intro[4]);
}
case 6:
{
TextDrawHideForPlayer(playerid, Intro[4]);
TextDrawShowForPlayer(playerid, Intro[5]);
}
case 7:
{
TextDrawHideForPlayer(playerid, Intro[5]);
TextDrawShowForPlayer(playerid, Intro[6]);
}
case 8:
{
TextDrawHideForPlayer(playerid, Intro[6]);
TextDrawShowForPlayer(playerid, Intro[7]);
}
case 9:
{
TextDrawHideForPlayer(playerid, Intro[7]);
TextDrawShowForPlayer(playerid, Intro[8]);
}
case 10:
{
TextDrawShowForPlayer(playerid, Intro[9]);
}
case 11:
{
TextDrawShowForPlayer(playerid, Intro[10]);
}
case 12:
{
TextDrawShowForPlayer(playerid, Intro[11]);
}
}
if(GetPVarInt(playerid, "Intro") < 10)
{
SetTimerEx("ShowIntro", 300, 0, "d", playerid);
}
else if(9 < GetPVarInt(playerid, "Intro") < 13)
{
SetTimerEx("ShowIntro", 2000, 0, "d", playerid);
}
else
{
for(new i; i < sizeof(Intro); i++)
{
TextDrawHideForPlayer(playerid, Intro[i]);
}
TogglePlayerSpectating(playerid, false);
ForceClassSelection(playerid);
}
return 1;
}
//==============================================================================
public OnGameModeExit()
{
for(new i; i < sizeof(Intro); i++)
{
TextDrawDestroy(Intro[i]);
}
return 1;
}
//==============================================================================
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1481.0868,-1769.9332,18.7958);
SetPlayerFacingAngle(playerid, 0);
SetPlayerCameraPos(playerid, 1480.9161,-1763.6292,18.7958);
SetPlayerCameraLookAt(playerid, 1481.0868,-1769.9332,18.7958);
return 1;
}
//==============================================================================
public OnPlayerConnect(playerid)
{
SetPlayerColor (playerid, COLOR_WHITE);
PlayAudioStreamForPlayer(playerid, "https://dl.dropboxusercontent.com/s/mwrm1hdebm4wdl3/GTA4%20Theme.mp3?token_hash=AAEqEhexu3r4E7aacZ9S35-UBV7BjNzk_SrzztMI15LoGg&dl=1");
TogglePlayerSpectating(playerid, true);
ForceClassSelection(playerid);
SetPVarInt(playerid, "Intro", 0);
SetTimerEx("ShowIntro", 1000, 0, "d", playerid);
SetTimerEx("EndIntro", 10000, 0, "d", playerid);
return true;
}
//==============================================================================
public EndIntro(playerid)
{
new query[128],
playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
mysql_format(mysql, query, sizeof(query), "SELECT `Password`, `ID` FROM `accounts` WHERE `Name` = '%e' LIMIT 1", playername);
mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid);
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
new namestring = strfind(sendername, "_", true);
if(namestring == -1)
{
SendClientMessage(playerid, COLOR_RED, "Please choose a roleplay name with the Firstname_Lastname format.");
SetTimerEx("InvalidRoleplayName", 100, 0, "d", playerid);
return 1;
}
if(!ContainsValidCharacters(sendername))
{
SendClientMessage(playerid,COLOR_RED,"Please choose a roleplay name with the Firstname_Lastname format.");
SetTimerEx("InvalidRoleplayName", 100, 0, "d", playerid);
return 1;
}
return 1;
}
//==============================================================================
public InvalidRoleplayName(playerid)
{
Kick(playerid);
return 1;
}
//==============================================================================
forward OnAccountCheck(playerid);
public OnAccountCheck(playerid)
{
new
rows,
fields;
cache_get_data(rows, fields, mysql);
if(rows)
{
TogglePlayerSpectating(playerid, true);
ForceClassSelection(playerid);
new pname[MAX_PLAYER_NAME], string[128 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
strreplace(pname, '_', ' ');
format(string, sizeof(string), "Welcome back to San Andreas West Roleplay,{FFFFFF} %s!", pname);
SendClientMessage(playerid, COLOR_YELLOW, string);
cache_get_field_content(0, "Password", Player[playerid][Password], 1, 129);
Player[playerid][ID] = cache_get_field_content_int(0, "ID");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,""COL_WHITE"Login",""COL_WHITE"Welcome to San Andreas West Roleplay.\n That name is registered. Please enter your password below.\n","Login","Quit");
}
else
{
TogglePlayerSpectating(playerid, true);
ForceClassSelection(playerid);
new pname[MAX_PLAYER_NAME], string[128 + MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
strreplace(pname, '_', ' ');
format(string, sizeof(string), "Welcome to San Andreas West Roleplay,{FFFFFF} %s!", pname);
SendClientMessage(playerid, COLOR_YELLOW, string);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Register",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
}
return true;
}
//==============================================================================
forward OnAccountLoad(playerid);
public OnAccountLoad(playerid)
{
Player[playerid][Admin] = cache_get_field_content_int(0, "Admin");
Player[playerid][VIP] = cache_get_field_content_int(0, "VIP");
Player[playerid][Money] = cache_get_field_content_int(0, "Money");
Player[playerid][PosX] = cache_get_field_content_float(0, "PosX");
Player[playerid][PosY] = cache_get_field_content_float(0, "PosY");
Player[playerid][PosZ] = cache_get_field_content_float(0, "PosZ");
Player[playerid][PosA] = cache_get_field_content_float(0, "PosA");
GivePlayerMoney(playerid, Player[playerid][Money]);
SendClientMessage(playerid, -1, "You have successfully logged in.");
return true;
}
//==============================================================================
forward OnAccountRegister(playerid);
public OnAccountRegister(playerid)
{
Player[playerid][ID] = cache_insert_id();
printf("[Registration] New account registered. Database ID: [%d]", Player[playerid][ID]);
return true;
}
//==============================================================================
public OnPlayerSpawn(playerid)
{
if(IntroScreen == true)
{
StopAudioStreamForPlayer(playerid);
}
if(IntroScreen == false)
{
SetPlayerHealth(playerid, 50);
}
return true;
}
//==============================================================================
public OnPlayerDisconnect(playerid, reason)
{
new
query[128],
Float:pos[4];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
mysql_format(mysql, query, sizeof(query), "UPDATE `accounts` SET `Money` = %d, `PosX` = %f, `PosY` = %f, `PosZ` = %f, `PosA` = %f WHERE `ID` = %d",
GetPlayerMoney(playerid), pos[0], pos[1], pos[2], pos[3], Player[playerid][ID]);
mysql_tquery(mysql, query, "", "");
return true;
}
//==============================================================================
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_REGISTER:
{
TogglePlayerSpectating(playerid, true);
ForceClassSelection(playerid);
if (!response) return Kick(playerid);
if(response)
{
new query[512],
playername[MAX_PLAYER_NAME],
playerip[16];
GetPlayerName(playerid, playername, sizeof(playername));
GetPlayerIp(playerid, playerip, sizeof(playerip));
WP_Hash(Player[playerid][Password], 129, inputtext);
mysql_format(mysql, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Password`, `IP`, `Admin`, `VIP`, `Money`, `PosX`, `PosY`, `PosZ`, `PosA`) VALUES ('%e', '%e', '%e', 0, 0, 0, 0.0, 0.0, 0.0, 0.0)", playername, Player[playerid][Password], playerip);
mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
GivePlayerMoney(playerid, 10000);
SpawnPlayer(playerid);
new str[128];
format(str, sizeof(str), "~w~Welcome~y~, %s!", GetName(playerid));
GameTextForPlayer(playerid, str,4000,1);
}
}
case DIALOG_LOGIN:
{
TogglePlayerSpectating(playerid, false);
ForceClassSelection(playerid);
if ( !response ) return Kick ( playerid );
if( response )
{
new
hashpass[129],
query[100],
playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
WP_Hash(hashpass, sizeof(hashpass), inputtext);
if(!strcmp(hashpass, Player[playerid][Password]))
{
mysql_format(mysql, query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%e' LIMIT 1", playername);
mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid);
new str[128];
format(str, sizeof(str), "~w~Welcome~y~, %s!", GetName(playerid));
GameTextForPlayer(playerid, str,4000,1);
}
else
{
SendClientMessage(playerid, -1, "You have specified an incorrect password!");
ShowPlayerDialog(playerid, LoginDialog, DIALOG_STYLE_INPUT, "Login", "Welcome player!\nYour account has been found in our database. Please fill in your password:", "Login", "Quit");
}
}
}
}
return false;
}
//==============================================================================