• 0
Awiero527

[закрыто] Проблема подключения к БД через Denwer

Question

При попытке запустить сервер выдает в консоли

 

Спойлер

[MySQL] Error (0): Failed to connect. Access denied for user 'root'@'localhost' (using password: YES).
[MySQL] Error (0): Function: mysql_ping called when not connected to any database. Access denied for user 'root'@'localhost' (using password: YES)


//----------------БАЗА ДАННЫХ-------------------------
#define     MYSQL_HOST      "localhost"
#define     MYSQL_USER      "root"
#define     MYSQL_PASSWORD  ""
#define     MYSQL_BASE      "pleasurerp"
//----------------------------------------------------


OnGameUnit:


public OnGameModeInit()
{
	DisableInteriorEnterExits();
	EnableStuntBonusForAll(0);
	SetGameModeText("Pleasure RP");
	SendRconCommand("hostname "SERVER_NAME"");
	mysql_init();
	mysql_connects();
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

	//============Пикапы===========
	vxodmerya = CreatePickup(1318, 23, 1481.0325,-1772.3140,18.7958,0);
	//=================================
	//==============Машины=============
	CreateVehicle(408, 1760.1957,-1898.3301,13.5626,270.0, 245, 0, 120, 0);
	//=================================
	return 1;
}



stock sendername(playerid)
{
	new novoeimya[MAX_PLAYER_NAME];
	GetPlayerName(playerid, novoeimya, sizeof(novoeimya));
	return novoeimya;
}
stock mysql_connects()
{
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_BASE, MYSQL_PASSWORD);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 


Подмечу,что в павно не так давно,поэтому не сильно в нем разбираюсь  :sad:

Share this post


Link to post
Share on other sites

11 answers to this question

  • 0

Версия mysql какая?
Местами Base, Password поменяй попробуй. 
Локалка или хост?

Share this post


Link to post
Share on other sites
  • 0
1 час назад, keyl1337 сказал:

Версия mysql какая?
Местами Base, Password поменяй попробуй. 
Локалка или хост?

5.1

менял,ничего не изменилось

локалка

Share this post


Link to post
Share on other sites
  • 0

Попробуй в поле password ввести root.

Share this post


Link to post
Share on other sites
  • 0
mysql_init() - что это

Share this post


Link to post
Share on other sites
  • 0
В 01.05.2020 в 08:08, povstanec сказал:

Попробуй в поле password ввести root.

Не помогло

 

23 часа назад, SCRIPTMAN сказал:

mysql_init() - что это

Без этой строчки сервер не запускается,а в логах пишет следующее:

[MySQL] Error (0): Function: mysql_connect failed, mysql was not initialized on this handle.

 

 

22 часа назад, odosenok сказал:

@Awiero527, дайте-ка mysql.inc.

Спойлер

/**
 *     SA:MP MySQL v2.1 Functions
 *  (c) Copyright 2011, StrickenKid
 *
 **/

#if defined __mysql_included
	#endinput
#endif

#define __mysql_included
#pragma library mysql

// plugin error id's

#define P_ERROR_NONE                                0
#define P_ERROR_INCPARAMCNT                         1
#define P_ERROR_INCVALUE                            2
#define P_ERROR_MAXCONN                             3
#define P_ERROR_DBNOCONN                            4
#define P_ERROR_NORES                               5
#define P_ERROR_RES                                 6
#define P_ERROR_NOFIELD                             7
#define P_ERROR_NOFIELDDATA                         8
#define P_ERROR_NOROWDATA                           9
#define P_ERROR_CANTALLOC                           10
#define P_ERROR_NOCALLBACK                          11
#define P_ERROR_NOQUERY                             12

// mysql headers defines

#define REFRESH_GRANT								1
#define REFRESH_LOG									2
#define REFRESH_TABLES								4
#define REFRESH_HOSTS								8
#define REFRESH_STATUS								16
#define REFRESH_THREADS								32
#define REFRESH_SLAVE   							64
#define REFRESH_MASTER 							 	128

// mysql error id's

#define CR_ERROR_FIRST  							2000
#define CR_UNKNOWN_ERROR							2000
#define CR_SOCKET_CREATE_ERROR						2001
#define CR_CONNECTION_ERROR							2002
#define CR_CONN_HOST_ERROR							2003
#define CR_IPSOCK_ERROR								2004
#define CR_UNKNOWN_HOST								2005
#define CR_SERVER_GONE_ERROR						2006
#define CR_VERSION_ERROR							2007
#define CR_OUT_OF_MEMORY							2008
#define CR_WRONG_HOST_INFO							2009
#define CR_LOCALHOST_CONNECTION 					2010
#define CR_TCP_CONNECTION							2011
#define CR_SERVER_HANDSHAKE_ERR 					2012
#define CR_SERVER_LOST								2013
#define CR_COMMANDS_OUT_OF_SYNC 					2014
#define CR_NAMEDPIPE_CONNECTION 					2015
#define CR_NAMEDPIPEWAIT_ERROR  					2016
#define CR_NAMEDPIPEOPEN_ERROR  					2017
#define CR_NAMEDPIPESETSTATE_ERROR 					2018
#define CR_CANT_READ_CHARSET						2019
#define CR_NET_PACKET_TOO_LARGE						2020
#define CR_EMBEDDED_CONNECTION						2021
#define CR_PROBE_SLAVE_STATUS   					2022
#define CR_PROBE_SLAVE_HOSTS    					2023
#define CR_PROBE_SLAVE_CONNECT  					2024
#define CR_PROBE_MASTER_CONNECT 					2025
#define CR_SSL_CONNECTION_ERROR 					2026
#define CR_MALFORMED_PACKET     					2027
#define CR_WRONG_LICENSE							2028
#define CR_NULL_POINTER								2029
#define CR_NO_PREPARE_STMT							2030
#define CR_PARAMS_NOT_BOUND							2031
#define CR_DATA_TRUNCATED							2032
#define CR_NO_PARAMETERS_EXISTS 					2033
#define CR_INVALID_PARAMETER_NO 					2034
#define CR_INVALID_BUFFER_USE						2035
#define CR_UNSUPPORTED_PARAM_TYPE 					2036
#define CR_SHARED_MEMORY_CONNECTION             	2037
#define CR_SHARED_MEMORY_CONNECT_REQUEST_ERROR 		2038
#define CR_SHARED_MEMORY_CONNECT_ANSWER_ERROR   	2039
#define CR_SHARED_MEMORY_CONNECT_FILE_MAP_ERROR 	2040
#define CR_SHARED_MEMORY_CONNECT_MAP_ERROR      	2041
#define CR_SHARED_MEMORY_FILE_MAP_ERROR         	2042
#define CR_SHARED_MEMORY_MAP_ERROR              	2043
#define CR_SHARED_MEMORY_EVENT_ERROR     			2044
#define CR_SHARED_MEMORY_CONNECT_ABANDONED_ERROR 	2045
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR      	2046
#define CR_CONN_UNKNOW_PROTOCOL 					2047
#define CR_INVALID_CONN_HANDLE						2048
#define CR_SECURE_AUTH                          	2049
#define CR_FETCH_CANCELED                       	2050
#define CR_NO_DATA                              	2051
#define CR_NO_STMT_METADATA                     	2052
#define CR_NO_RESULT_SET                        	2053
#define CR_NOT_IMPLEMENTED                      	2054
#define CR_SERVER_LOST_EXTENDED						2055
#define CR_STMT_CLOSED								2056
#define CR_NEW_STMT_METADATA                    	2057
#define CR_ERROR_LAST                      			2057

// logging types

#define INVALID_MYSQL_ID							(-1)
#define LOG_OFF										(0)
#define LOG_ALL           							(1)
#define LOG_ONLY_ERRORS   							(2)

// function defines

#define mysql_reload(%1) mysql_refresh(REFRESH_GRANT, %1)

// plugin callbacks

forward OnMysqlQueryArray(resultid, extravars[], MySQL:handle);
forward OnMysqlQuery(resultid, spareid, MySQL:handle);
forward OnMysqlError(error[], errorid, MySQL:handle);

// plugin natives

native MySQL:mysql_init(logtype = LOG_ONLY_ERRORS, printerrors = 1);
native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);
native mysql_close(MySQL:handle = (MySQL:0));
native mysql_refresh(options, MySQL:handle = (MySQL:0));
native mysql_select_db(const db[], MySQL:handle = (MySQL:0));
native mysql_query(const query[], resultid = (-1), spareid = (0), MySQL:handle = (MySQL:0));
native mysql_query_array(const query[], resultid = (-1), {Float,_}:extravars[], MySQL:handle = (MySQL:0));
native mysql_store_result(MySQL:handle = (MySQL:0));
native mysql_free_result(MySQL:handle = (MySQL:0));
native mysql_result_stored(MySQL:handle = (MySQL:0));
native mysql_fetch_field(const fieldname[], dest[], MySQL:handle = (MySQL:0));
native mysql_fetch_field_num(fieldnum, dest[], MySQL:handle = (MySQL:0));
native mysql_fetch_row(dest[], const splitter[] = "|", MySQL:handle = (MySQL:0));
native mysql_fetch_row_data(MySQL:handle = (MySQL:0));
native mysql_real_escape_string(const string[], dest[], MySQL:handle = (MySQL:0));
native mysql_num_rows(MySQL:handle = (MySQL:0));
native mysql_num_fields(MySQL:handle = (MySQL:0));
native mysql_affected_rows(MySQL:handle = (MySQL:0));
native mysql_insert_id(MySQL:handle = (MySQL:0));
native mysql_ping(MySQL:handle = (MySQL:0));
native mysql_error(dest[], MySQL:handle = (MySQL:0));
native mysql_errno(MySQL:handle = (MySQL:0));
native mysql_warning_count(MySQL:handle = (MySQL:0));
native mysql_info(dest[], MySQL:handle = (MySQL:0));
native mysql_stat(dest[], MySQL:handle = (MySQL:0));
native mysql_get_server_info(dest[], MySQL:handle = (MySQL:0));
native mysql_get_host_info(dest[], MySQL:handle = (MySQL:0));
native mysql_data_seek(rownum, MySQL:handle = (MySQL:0));
native mysql_set_character_set(const csname[], MySQL:handle = (MySQL:0));
native mysql_get_character_set(csname[], MySQL:handle = (MySQL:0));
native mysql_fetch_int(MySQL:handle = (MySQL:0));
native Float:mysql_fetch_float(MySQL:handle = (MySQL:0));
native mysql_fetch_string(dest[], MySQL:handle = (MySQL:0));

#if !defined split
// split function - thanks to Blacklite
stock split(const strsrc[], strdest[][], delimiter = '|')
{
	new i, li, aNum, len, srclen = strlen(strsrc);
	while(i <= srclen)
	{
		if (strsrc[i] == delimiter || i == srclen)
		{
			len = strmid(strdest[aNum], strsrc, li, i, 128);
			strdest[aNum][len] = 0;
			li = i + 1;
			aNum++;
		}
		i++;
	}
}
#endif

 

 

 

Share this post


Link to post
Share on other sites
  • 0

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:

native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

Сначала указывается пароль, а лишь потом название базы данных.

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

Спойлер

// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Share this post


Link to post
Share on other sites
  • 0
1 час назад, odosenok сказал:

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:


native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

Сначала указывается пароль, а лишь потом название базы данных.

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

  Код (открыть спойлер)


// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Господи,наконец-то.Огромное спасибо!Пытался исправить ошибку уже около недели.

Share this post


Link to post
Share on other sites
  • 0
В 28.04.2020 в 20:36, keyl1337 сказал:

Местами Base, Password поменяй попробуй. 

@Awiero527 вам в первом сообщении в этой теме написали про поменять местами, Вы ответили, что не помогло...

Share this post


Link to post
Share on other sites
  • 0
26 минут назад, DEST сказал:

@Awiero527 вам в первом сообщении в этой теме написали про поменять местами, Вы ответили, что не помогло...

Помогла именно переустановка MySQL на новую (хотя я ставил различные версии).А переустановка местами значений мне не помогла

1 час назад, odosenok сказал:

@Awiero527, в .inc файле библиотеки перечислены все нативные функции с необходимым порядком аргументов для работы с базой данных. Обратите внимание на аргументы в mysql_connect:


native mysql_connect(const host[], const user[], const pass[], const db[], MySQL:handle = (MySQL:0), auto_reconnect = 0);

Сначала указывается пароль, а лишь потом название базы данных.

 

Далее, текущая версия базы данных крайне стара. Если у Вас есть возможность, лучше обновитесь до одной из последних: R41. Где скачать библиотеку MySQL?

 

Ну, и если все же не горите желанием обновлять библиотеку, попробуйте сделать подключение так:

  Код (открыть спойлер)


// в начало мода
new MySQL:dbHandle;

// в OnGamemodeInit
public OnGamemodeInit() {
	dbHandle = mysql_init();
	mysql_connects();
}

stock mysql_connects() {
	dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_BASE);
	switch(mysql_ping())
	{
		case 1: print("??????????? ? ???? ?????? ????????? ??????");
		case -1: print("??????????? ? ???? ?????? ????????? ????????");
	}
}

 

 

И на будущее три нюанса:

  • Вместо mysql_ping() лучше использовать специальную функцию mysql_errno, которая возвращает идентификатор ошибки, что позволяет получить больше информации о возникшей проблеме.
  • У каждого языка программирования существует свой стиль обозначения переменных и функций. Например, в Java принято все переменные называть с маленькой буквы, а каждое последующее слово в них с большой: isValid, weather, playerName. А функции - также, с маленькой буквы, каждое последующее слово с большой, но первое слово должно быть глаголом. Ибо функция создана для того, чтобы что-то делать: возвращать (get), изменять (set), удалять (delete), создавать (create), добавлять (add), проверять (is, check). Опять же, на примере Java, getWeather(), getPlayerName(). В Pawn же принято все переменные называть исключительно с маленькой буквы, слова отделять нижними подчеркиваниями, например, is_valid, weather, player_name. Функции: каждое слово с большой буквы, первое - глагол. GetWeather(), GetPlayerName(). К чему я это пишу? Выберите какой-нибудь наиболее удобный для себя вариант из предложенных и следуйте ему. Почему необязательно использовать вариант от Pawn? Потому что так делают лишь в единицах языков. Переучиваться стилю под каждый язык слишком муторно. Поэтому вполне приемлемо использовать стиль кода, взятый из других языков, как сделал я. А что сделали Вы? Переменная подключения: dbHandle, функции: mysql_connects(). Вперемешку да в кашу.
  • Любая функция должна давать Вам полную картину о том, что она делает. Если функция подключается к базе данных (одной!), то и в названии должно быть подключение к одной базе данных: MySQLConnect (или connectMysql). А у Вас по названию подключение к куче баз данных, по факту - к одной: mysql_connects().

Кстати.По поводу mysql_connects().Исправил на mysq_connect(),и получил 5 ошибок

Share this post


Link to post
Share on other sites
  • 0

@Awiero527, потому что функция mysql_connect уже есть и Вы ее используете для подключения к базе данных. Назовите функцию, например, MySQLConnect или ConnectMySQL, либо connectMySQL.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Chopick
      By Chopick
      Всем здравствуйте! Делаю систему домов/бизнесов по туториалу knox know с плагином GoodArea. Есть проблема, если заходишь в интерьер бизнеса, то когда выходишь спавнит почему-то на пикап дома.

      Вот енумы:
       
      #define MAX_HOUSES 1000 #define MAX_BIZS 1000 enum house {         hID,         STREAMER_TAG_PICKUP:hPICKUP,         STREAMER_TAG_AREA:hAREA,         hOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:hTEXT[256],         STREAMER_TAG_MAP_ICON:hICON,         hPRICE,         hCLASS,         hINTERIOR,         Float:hX,         Float:hY,         Float:hZ,         Float:hA,         hCONDITION // Закрыт/Открыт } new House[MAX_HOUSES][house]; new Houses; new HouseGroup; enum biz {         bID,         STREAMER_TAG_PICKUP:bPICKUP,         STREAMER_TAG_AREA:bAREA,         bOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:bTEXT[256],         STREAMER_TAG_MAP_ICON:bICON,         bNAME[25],         bPRICE,         bTYPE,         bINTERIOR,         Float:bX,         Float:bY,         Float:bZ,         Float:bA } new Biz[MAX_BIZS][biz]; new Bizs; new BizGroup; enum interior_info {         intID,         intNAME[41],         intINTERIOR,         Float:intX,         Float:intY,         Float:intZ,         Float:intA,         STREAMER_TAG_AREA:intAREA } new Interior[MAX_INTERIORS][interior_info]; new Interiors; new InteriorGroup; Вот что у меня в OnGameModeInit:
      HouseGroup = CreateGroupGoodAreas(GoodArea:HouseEnter); InteriorGroup = CreateGroupGoodAreas(GoodArea:InteriorExit); BizGroup = CreateGroupGoodAreas(GoodArea:BizArea);  
      Вот стоки:
      GAResponse:HouseEnter(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                 if(House[index][hCONDITION] > 0 && House[index][hOWNER] == player_info[playerid][NAME] || House[index][hCONDITION] == 0)                 {                                         GoToInterior(playerid, House[index][hINTERIOR]);                                         SetPlayerVirtualWorld(playerid, index);                                 }                                 else if(House[index][hCONDITION] > 0 && House[index][hOWNER] != player_info[playerid][NAME]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Этот дом закрыт на ключ!");                         }                 }                 case GA_RESPONSE_ENTER:                 {                     if(House[index][hOWNER] == 0)                     {                         CreateNoOwnerHouseTD(playerid);                         for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                         {                             PlayerTextDrawShow(playerid, NoOwnerTextDraw_PTD[playerid][i]);                                 }                                 new price[8];                                 format(price, sizeof(price), "%d$", House[index][hPRICE]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][2], price);                                 new id[9];                                 format(id, sizeof(id), "%d", House[index][hID]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][0], id);                                 switch(House[index][hCLASS])                                 {                                     case 1: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "A");                                     case 2: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "B");                                     case 3: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "C");                                 }                                 for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                         {                             TextDrawShowForPlayer(playerid, NoOwnerTextDraw_TD[i]);                                 }                         }                 }                 case GA_RESPONSE_LEAVE:                 {                 for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                 {                     PlayerTextDrawHide(playerid, NoOwnerTextDraw_PTD[playerid][i]);                         }                         for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                 {                     TextDrawHideForPlayer(playerid, NoOwnerTextDraw_TD[i]);                         }                 }         }         return 1; } GAResponse:BizArea(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                     GoToInteriorBiz(playerid, Biz[index][bINTERIOR]);                                 SetPlayerVirtualWorld(playerid, index);                 }                 }         }         return 1; } GAResponse:InteriorExit(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 new world = GetPlayerVirtualWorld(playerid);                 if(key & KEY_WALK)                 {                     if(world < MAX_HOUSES)                     {                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, House[world][hX], House[world][hY], House[world][hZ]);                             SetPlayerFacingAngle(playerid, House[world][hA]);                                 }                                 else if(world < MAX_HOUSES + MAX_BIZS)                     {                         world -= MAX_HOUSES;                                         printf("%d index world", world);                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, Biz[world][bX], Biz[world][bY], Biz[world][bZ]);                             SetPlayerFacingAngle(playerid, Biz[world][bA]);                                 }                         }                         if(key & KEY_CTRL_BACK)                         {                             if(player_info[playerid][HOUSE] != House[world][hID]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Вы не владелец данного дома!");                             new dialog[256];                                 format(dialog, sizeof(dialog),                                         "{ffd900}[1]{ffffff}Информация о доме\n\                                         {ffd900}[2]{ffffff}%s дом",                                 (House[world][hCONDITION] == 1) ? ("{00ff00}Открыть") : ("{ff0000}Закрыть"));                             SPD(playerid, DLG_HMENU, DIALOG_STYLE_LIST, "{ffd900}Меню дома", dialog, "Выбрать", "Закрыть");                             return 1;                         }                 }         }         return 1; } stock GoToInterior(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода\n\                         Нажмите \"H\", чтобы открыть меню дома");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; } stock GoToInteriorBiz(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; }  
       
      Что мне делать, подскажите пожалуйста?