Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Проблема с окном регистрации - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Проблема с окном регистрации Проблема с выводом окна регистрации

#1
Пользователь офлайн   YouRM 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
При входе не отображается окно

Инклуды/дефайны
#include <a_samp>
#include <a_mysql>
#include <pawn.cmd>
#include <fix>
#include <foreach>
#include <sscanf2>
#include <streamer>
#include <pawn.regex>
#include <crashdetect>

#define 	SCM		SendClientMessage
#define 	SCMTA	endClientMessageToALL
#define 	SPD		ShowPlayerDialog

#define COLOR_WHITE 0xFFFFFFFF



Часть кода
enum dialog
{
	DLG_NONE,
	DLG_REG,
	DLG_LOG,
}


stock ShowRegistration(playerid)
{
	new wealcome[410+(-2+MAX_PLAYER_NAME)];
	format(wealcome, sizeof(wealcome),
		"{FFFFFF}Уважаемый {594de1}%s{FFFFFF}, мы рады видеть вас на {594de1}---- RolePlay{FFFFFF}\n\
		Аккаунт с таким ником не зарегистрирован\n\
		Для игры на сервере вы должны пройти регистрацию\n\n\
		Придумайте сложный пароль для вашего аккаунта и нажмите\"Далее\"\n\
		{e743e4}\t*Пароль должен быть от 8-ми до 36-ти символов\n\
		\t*Пароль должен состоять из цифр и латинских символов любого регистра",
	player_info[playerid] [NAME]
	);
	SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{e743e4}Регистрация{FFFFFF}  Ввод пароля", wealcome, "Далее", "Выход");
}


Сообщение отредактировал YouRM: 13 сентября 2021 - 16:27

0

#2
Пользователь офлайн   sql!te 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Где и как объявлено?
ShowRegistration
Есть алгоритм, по которому необходимо выводить те или иные окна.
Т.е. в начале необходимо сделать запрос в бд, далее проверить существует ли аккаунт, а там уже выводить
0

#3
Пользователь офлайн   YouRM 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияsql!te (13 сентября 2021 - 18:29) писал:

Где и как объявлено?
ShowRegistration
Есть алгоритм, по которому необходимо выводить те или иные окна.
Т.е. в начале необходимо сделать запрос в бд, далее проверить существует ли аккаунт, а там уже выводить


Тоже сделано:
#define		MYSQL_HOST "localhost"
#define		MYSQL_USER "gh2204"
#define		MYSQL_PASS ""
#define		MYSQL_BASE "gh2204"

 
new MySQL:dbHandle;

enum player
{
	ID,
	NAME[MAX_PLAYER_NAME],
	PASSWORD[32],
}
new player_info[MAX_PLAYERS] [player];

enum dialogs
{
	DLG_NONE,
	DLG_REG,
	DLG_LOG,
}

public OnGameModeInit()
{
	ConnectMySQL();
	return 1;
}

stock ConnectMySQL()
{
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_BASE);
	switch(mysql_errno())
	{
		case 0: print("Подключение к бд успешно");
		default: print("Ошибка");
	}
	mysql_log(ERROR | WARNING);
	mysql_set_charset("cp1251");
}


public OnPlayerConnect(playerid)
{
	GetPlayerName(playerid, player_info[playerid] [NAME], MAX_PLAYER_NAME);
	static const fmt_query[] = "SELECT 'id' FROM 'users' WHERE 'name' = '%s'";
	new query[sizeof(fmt_query) + (-2+MAX_PLAYER_NAME)];
	format(query, sizeof(query), fmt_query, player_info[playerid] [NAME]);
	mysql_tquery(dbHandle, query, "CheckRegistration", "i", playerid);
	return 1;
}

forward CheckRegistration(playerid);
public CheckRegistration(playerid)
{
	new rows;
	cache_get_row_count(rows);
	if(rows) ShowLogin(playerid);
	else ShowRegistration(playerid);
}

stock ShowLogin(playerid)
{
	SCM(playerid, COLOR_WHITE, "Игрок зарегистрирован");
}

stock ShowRegistration(playerid)
{
	new wealcome[410+(-2+MAX_PLAYER_NAME)];
	format(wealcome, sizeof(wealcome),
		"{FFFFFF}Уважаемый {594de1}%s{FFFFFF}, мы рады видеть вас на {594de1}---- RolePlay{FFFFFF}\n\
		Аккаунт с таким ником не зарегистрирован\n\
		Для игры на сервере вы должны пройти регистрацию\n\n\
		Придумайте сложный пароль для вашего аккаунта и нажмите\"Далее\"\n\
		{e743e4}\t*Пароль должен быть от 8-ми до 36-ти символов\n\
		\t*Пароль должен состоять из цифр и латинских символов любого регистра",
	player_info[playerid] [NAME]
	);
	SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{e743e4}Регистрация{FFFFFF}  Ввод пароля", wealcome, "Далее", "Выход");
}


0

#4
Пользователь онлайн   NoDmitriy 

  • Mysql мне не нравится поэтому работаю в mxini.
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияYouRM (14 сентября 2021 - 11:10) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Название таблиц в MySQL вроде нужно указывать в `` таких кавычках. Попробуй изменить
static const fmt_query[] = "SELECT 'id' FROM 'users' WHERE 'name' = '%s'";


на
static const fmt_query[] = "SELECT `id` FROM `users` WHERE `name` = '%s'";

1

#5
Пользователь офлайн   YouRM 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияNoDmitriy (14 сентября 2021 - 14:30) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]


Огромное спасибо, помогло!
0

#6
Пользователь офлайн   Maksi23235 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Я даже знаю чей код... И у кого ты его узнал;D
0

#7
Пользователь офлайн   Maksi23235 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
У тебя еще ошибка, енум ты назвал "dialogs", а везде используешь "wealcome", у меня не работает без енумов
Пример:
enum dialogs
{
     DLG_REG,
     DLG_LOG,
     DLG_NONE,
}
        new wealcome[410+(-2+MAX_PLAYER_NAME)];
        format(wealcome, sizeof(wealcome),
       ""
SPD(playerid, DLG_REG, DIALOG_STYLE_INPUT, "{e743e4}Регистрация{FFFFFF}  Ввод пароля", wealcome, "Далее", "Выход");


Ты все "wealcome" на dialogs" замени

Если ещё проблемы, пиши мне в vk
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика