В теме 7 сообщений

Привет всем "обитателям" форума pawno-rus.ru

В этом уроке я покажу как создать желаемую фракцию в pawno

В этом уроке будет:

[1] Создание самой фракции;

[2] Создание фракционных машин(с проверкой, состоит ли игрок в данной организации или нет);

[3] Создание пикапов входа и выхода в интерьер;

[4] Создание команды /makeleader и /warehouse;

[5] Сохранение всего в базе данных MySQL (R41);

Все нужные инклуды и плагины:

(текст кликабелен)

Pawn.CMD

sscanf

#include <a_samp>
#include <a_mysql>
#include <Pawn.CMD>
#include <sscanf2>

Начнем на примере будет организация LSPD! Если вы найдете какие-то баги, недоработки и т.д. и т.п. то пишите сюда или мне в личку ВК: vk.com/martun_mkrt

 

Для начала вставьте это в начало вашего мода(где хранятся все дефайны)

#define GN(%0)      	player_name[%0]
#define SCM         	SendClientMessage
#define SPD         	ShowPlayerDialog
#define DSI				DIALOG_STYLE_INPUT
#define DSL				DIALOG_STYLE_LIST
#define DSM             DIALOG_STYLE_MSGBOX
#define DSTH            DIALOG_STYLE_TABLIST_HEADERS
#define DSP             DIALOG_STYLE_PASSWORD
#define SCMTA           SendClientMessageToAll
//
#if !defined isnull
#define isnull(%0)      ((!(%0[0])) || (((%0[0]) == '\1') && (!(%0[1]))))
#endif
//
new
  	connect_mysql, // подключение к базе данных
	lspd_pick[7], //Кол-во пикапов
	lspd_car[27], //Кол-во машин

	Float: pos_pick[3][MAX_PLAYERS],
	bool: anti_flood_pick[MAX_PLAYERS char],
	leaders_info[1][4+1] = {	//При создании нововй фракции то учитывайте название (не более 4 символов)
	"LSPD"
};

Затем рядом со всеми енумами создаем новый:

enum mInfo
{
	mLSPD,
}

Затем в enum dInfo и pInfo -  вставляем следущий код(если нету enum dInfo то создаем):

enum pInfo // если у вас уже есть этот енум и все эти значения то заменяйте их на свои
{
	pID,
	pName[MAX_PLAYER_NAME],
	pPass[65],
	pSkin,
	pLeader,
	pModel,
	pMember,
	pRank,
}
new PlayerInfo[MAX_PLAYERS][pInfo];

enum dInfo
{
	DLG_LSPD,
}

Создаем паблик с телом:

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	new
	    carid = GetPlayerVehicleID(playerid);

	if(newstate == PLAYER_STATE_DRIVER)
	{
	    if(carid >= lspd_car[0] && carid <= lspd_car[26])
	    {
	        if(PlayerInfo[playerid][pMember] == 1) { }// PlayerInfo - меняем на свое
	        else
	        {
	            RemovePlayerFromVehicle(playerid);
	            SCM(playerid, COLOR_GREY, !"Транспорт принадлежит Депортаменту г. Лос-Сантос!");
	        }
	    }
	}
	return true;
}

Потом находим паблик OnDialogOnDialogResponse, и в тело кидаем этот код:

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
	{
		case 19:
		{
		    if(response)
		    {
				switch(listitem)
				{
				    case 0:
				    {
				        static const
						    fmt_str[] = "%s взял Deagle со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
						GivePlayerWeapon(playerid, 24, 35);
				    }
				    case 1:
				    {
				        static const
						    fmt_str[] = "%s взял ShotGun со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
				        GivePlayerWeapon(playerid, 25, 20);
				    }
				    case 2:
				    {
				        static const
						    fmt_str[] = "%s взял MP5 со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
				        GivePlayerWeapon(playerid, 29, 60);
				    }
				    case 3:
				    {
				        static const
						    fmt_str[] = "%s взял дубинку со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
				        GivePlayerWeapon(playerid, 3, 1);
				    }
				    case 4:
				    {
				        static const
						    fmt_str[] = "%s взял сухпаёк со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
				        SetPlayerHealth(playerid, 100.0);
				    }
				    case 5:
				    {
				        static const
						    fmt_str[] = "%s взял бронежилет со склада";
						new
						    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

						format(string, sizeof(string), fmt_str, GN(playerid));
						ProxDetector(5.0, playerid, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
				        SetPlayerArmour(playerid, 100.0);
				    }
				}
				DialogGunLSPD(playerid);
		    }
		}
	}
	return true;
}

Потом в конце мода создаем сток:

stock DialogGunLSPD(playerid)
{
	SPD(playerid, 19, DSTH, "Оружейный склад",
	!"\
		{FFFFFF}Имя:\t\tПатроны:\
		\n1) Deagle\t\t35\
		\n2) ShotGun\t\t20\
		\n3) MP5\t\t60\
		\n4) Дубинка\
		\n5) Сухпаёк\
		\n6) Бронежилет", "Выбрать", "Отмена\
	");
}
stock 

Потом в паблик OnPlayerPickUp кидаем это:

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
	if(anti_flood_pick{playerid} == true)
	    return true;
	else
	{
	    anti_flood_pick{playerid} = true;
	    GetPlayerPos(playerid, pos_pick[0][playerid], pos_pick[1][playerid], pos_pick[2][playerid]);
	}
	if(pickupid == lspd_pick[0])
	{
	    SetPlayerPos(playerid, 246.5715,65.2846,1003.6406); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 2.3383);
		SetPlayerVirtualWorld(playerid, 1);
		SetPlayerInterior(playerid, 6);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[1])
	{
	    SetPlayerPos(playerid, 246.7730,84.8201,1003.6406); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 179.3500);
		SetPlayerVirtualWorld(playerid, 1);
		SetPlayerInterior(playerid, 6);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[2])
	{
	    SetPlayerPos(playerid, 1552.6343,-1675.7346,16.1953); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 86.4747);
		SetPlayerVirtualWorld(playerid, 0);
		SetPlayerInterior(playerid, 0);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[3])
	{
	    SetPlayerPos(playerid, 1568.7280,-1693.8474,5.8906); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 180.4991);
		SetPlayerVirtualWorld(playerid, 0);
		SetPlayerInterior(playerid, 0);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[4])
	{
	    SetPlayerPos(playerid, 316.5714,-167.7457,999.5938); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 359.0539);
		SetPlayerVirtualWorld(playerid, 1);
		SetPlayerInterior(playerid, 6);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[5])
	{
	    SetPlayerPos(playerid, 1527.6619,-1677.7692,5.8906); // Значения меняем на свои!
		SetPlayerFacingAngle(playerid, 269.1499);
		SetPlayerVirtualWorld(playerid, 0);
		SetPlayerInterior(playerid, 0);
		SetCameraBehindPlayer(playerid);
	}
	if(pickupid == lspd_pick[6])
	{
		if(PlayerInfo[playerid][pMember] != 1)
			return SCM(playerid, COLOR_GREY, !"Вы не состоите в LSPD");
			
		DialogGunLSPD(playerid);
	}
	return true;
}

Потом перед ранее созданым стоком "stock DialogGunLspd" создаем еще два стока:

stock Pickups()
{
	// LSPD
	lspd_pick[0] = CreateDynamicPickup(1318, 23, 1555.5059,-1675.7415,16.1953); // дверь улица 
	lspd_pick[1] = CreateDynamicPickup(1318, 23, 1568.6741,-1689.9702,6.2188); // дверь гаража улицы
	lspd_pick[2] = CreateDynamicPickup(1318, 23, 246.8043,62.3237,1003.6406, 1, 6); // дверь в участке
	lspd_pick[3] = CreateDynamicPickup(1318, 23, 246.4056,88.0078,1003.6406, 1, 6); // дверь в гараж
	lspd_pick[4] = CreateDynamicPickup(1318, 23, 1524.4835,-1677.8490,6.2188); // дверь в оружейную
	lspd_pick[5] = CreateDynamicPickup(1318, 23, 316.3202,-170.2966,999.5938); // дверь из оружейной
	lspd_pick[6] = CreateDynamicPickup(2061, 23, 312.1859,-168.7103,999.5938); // Боеприпасы
}
stock Cars()
{
	// LSPD
    lspd_car[0] = AddStaticVehicleEx(596, 1602.4960, -1683.9705, 5.6106, 89.9966, 0, 1, 600); // координаты изменяем по своему усмотрению
	lspd_car[1] = AddStaticVehicleEx(596, 1602.4961, -1688.1863, 5.6106, 89.9944, 0, 1, 600);
	lspd_car[2] = AddStaticVehicleEx(596, 1602.4960, -1692.1858, 5.6106, 89.9963, 0, 1, 600);
	lspd_car[3] = AddStaticVehicleEx(596, 1602.4961, -1696.4399, 5.6106, 89.9965, 0, 1, 600);
	lspd_car[4] = AddStaticVehicleEx(596, 1602.4961, -1700.4475, 5.6105, 89.9928, 0, 1, 600);
	lspd_car[5] = AddStaticVehicleEx(596, 1602.4973, -1704.7720, 5.6111, 89.9599, 0, 1, 600);
	lspd_car[6] = AddStaticVehicleEx(596, 1591.1188, -1710.8458, 5.6106, 359.9953, 0, 1, 600);
	lspd_car[7] = AddStaticVehicleEx(596, 1587.0615, -1710.8457, 5.6106, 359.9914, 0, 1, 600);
	lspd_car[8] = AddStaticVehicleEx(596, 1582.9340, -1710.8418, 5.6106, 359.9973, 0, 1, 600);
	lspd_car[9] = AddStaticVehicleEx(596, 1578.0387, -1710.8459, 5.6106, 359.9960, 0, 1, 600);
	lspd_car[10] = AddStaticVehicleEx(596, 1574.0431, -1710.8464, 5.6115, 359.9565, 0, 1, 600);
	lspd_car[11] = AddStaticVehicleEx(596, 1569.6342, -1710.8481, 5.5788, 359.9579, 0, 1, 600);
	lspd_car[12] = AddStaticVehicleEx(596, 1558.3914, -1710.8352, 5.6231, 359.9962, 0, 1, 600);
	lspd_car[13] = AddStaticVehicleEx(596, 1584.5720, -1672.3798, 5.6135, 269.9952, 0, 1, 600);
	lspd_car[14] = AddStaticVehicleEx(596, 1584.5693, -1668.1559, 5.6123, 269.9404, 0, 1, 600);
	lspd_car[15] = AddStaticVehicleEx(523, 1545.6881, -1684.3760, 5.4628, 89.8548, 0, 1, 600);
	lspd_car[16] = AddStaticVehicleEx(523, 1545.6832, -1680.3370, 5.4628, 90.0000, 0, 1, 600);
	lspd_car[17] = AddStaticVehicleEx(523, 1545.6796, -1676.2489, 5.4715, 90.0000, 0, 1, 600);
	lspd_car[18] = AddStaticVehicleEx(523, 1545.6934, -1672.1342, 5.4719, 90.0000, 0, 1, 600);
	lspd_car[19] = AddStaticVehicleEx(523, 1545.7043, -1667.6414, 5.4657, 89.5909, 0, 1, 600);
	lspd_car[20] = AddStaticVehicleEx(523, 1545.6930, -1663.1404, 5.4719, 90.0000, 0, 1, 600);
	lspd_car[21] = AddStaticVehicleEx(601, 1545.4475, -1659.0334, 5.6477, 89.9272, 0, 1, 600);
	lspd_car[22] = AddStaticVehicleEx(601, 1545.4456, -1655.0054, 5.6652, 89.9993, 0, 1, 600);
	lspd_car[23] = AddStaticVehicleEx(427, 1538.1487, -1644.9996, 6.0336, 180.0003, 0, 1, 600);
	lspd_car[24] = AddStaticVehicleEx(427, 1534.1730, -1644.9996, 6.0335, 180.0002, 0, 1, 600);
	lspd_car[25] = AddStaticVehicleEx(427, 1529.9532, -1644.9991, 6.0335, 180.0003, 0, 1, 600);
	lspd_car[26] = AddStaticVehicleEx(497, 1559.2762,-1644.1458,28.5774,90.9602, 0, 1, 600);
}

Потом после стока  "DialogGunLSPD" создаем еще два стока:

stock LoadMaterials()
{
	mysql_query(connect_mysql, "SELECT * FROM `materials`");
	materials[mlspd] = cache_get_field_content_int(0, "LSPD");
}
stock SaveMaterials()
{
    static const
	    fmt_str[] = "UPDATE `materials` SET `LSPD` = '%d'";
	new
	    string[sizeof(fmt_str)+5];

	format(string, sizeof(string), fmt_str, materials[mLSPD]);
	mysql_tquery(connect_mysql, string, false, "", "");
}

ВНИМАНИЕ: НЕ ЗАБУДТЕ СОЗДАТЬ В БАЗЕ ДАННЫХ НОВУЮ ТАБЛИЦУ "materials" и внести туда столбец LSPD со значением INT 

 

В конце мода создаем команду для проверки материалов:

CMD:warehouse(playerid)
{
	if(PlayerInfo[playerid][pMember] == 0)
	    return SCM(playerid, COLOR_GREY, !"Вы не уполномочены использовать данную команду!");
	    
	switch(PlayerInfo[playerid][pMember])
	{
	    case 1:
	    {
	        static const
			    fmt_str[] = "Склад LSPD: %d/100000";
			new
			    string[sizeof(fmt_str)+5];

			format(string, sizeof(string), fmt_str, materials[mLSPD]);
			SCM(playerid, COLOR_BLUE, string);
	    }
	}
	return true;
}

И в начало мода создаем дефайны цветов чтобы не было ошибок:

#define COLOR_WHITE 	0xFFFFFFFF
#define COLOR_LIGHTRED 	0xFF463CFF
#define COLOR_GREY      0xA6A69FFF
#define COLOR_GREY_2 	0xC8C8C8C8
#define COLOR_GREY_3 	0xAAAAAAAA
#define COLOR_GREY_4 	0x8C8C8C8C
#define COLOR_RED       0xFF0000FF
#define COLOR_ORANGE    0xDF8600FF
#define COLOR_GREEN     0x2CB816FF
#define COLOR_YELLOW    0xFFFF00FF
#define COLOR_BLUE      0x00BFFFFF
#define COLOR_PURPLE 	0xC2A2DAAA

И последнее! 

В  паблик OnPlayerConnect добавляем:

GetPlayerName(playerid, player_name[playerid], MAX_PLAYER_NAME);
 	static
	    fmt_str[] = "SELECT `ID` FROM `accounts` WHERE `Name` = '%s' LIMIT 1";
	new
	    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

А в паблик OnPlayerDisconnect добавляем:

	static
	    fmt_str[] = "UPDATE `ID` FROM `accounts` WHERE `Name` = '%s' LIMIT 1";
	new
	    string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];

НЕ ЗАБУДЬТЕ СОЗДАТЬ В БАЗЕ ДАННЫХ ТАБЛИЦУ "accounts" и добавить туда столбцы из enum pInfo, только без первой буквы "p".

 

Если будут ошибки/проблемы обращайтесь!

 

VK: wk.com/martun.mkrt

Отредактировано пользователем daltwb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно было тогда и название фракции хранить в базе и ранги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SCRIPTMANЗачем? Если это уже все прописано в моде

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@daltwb ну раз система фракций на MySQL, тогда бы и фракции стали динамическими(названия рангов и т. д. в игре можно было бы менять)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@SCRIPTMAN Хорошо, вот сток с рангами:

stock RankName(playerid)
{
	new atext[64];
	switch(PlayerInfo[playerid][pMember])
	{
	case 0:
		{
			switch(PlayerInfo[playerid][pRank])
			{
			case 0: atext = "Áåçðàáîòíûé";
			}
		}
	case 1:
		{
			switch(PlayerInfo[playerid][pRank])
			{
			case 10: atext = "Шериф";
			case 9: atext = ".....";
			case 8: atext = ".....";
			case 7: atext = ".....";
			case 6: atext = ".....";
			case 5: atext = ".....";
			case 4: atext = ".....";
			case 3: atext = ".....";
			case 2: atext = "Сержант";
			case 1: atext = "Рядовой";
			}
		}
	}
	return atext;
}

А вот сохранение фракций:

stock SaveFrac(playerid, const field_name[], const set[], const type[])
{
	new
	    string[128+1];

	if(!strcmp(type, "d", true))
	{
	    mysql_format(connect_mysql, string, sizeof(string), "UPDATE `fractions` SET `%s` = '%d' WHERE `id` = '%d' LIMIT 1",
		field_name, set, PlayerInfo[playerid][pID]);
	}
    mysql_tquery(connect_mysql, string, "", "");
}

Нужно создать таблицу "fractions" добавить туда: id фракции

 

Изменение названий рангов в игре это уже должен быть другой урок, если кто-то захочет - сделаю.

Отредактировано пользователем daltwb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советую доработать урок и сделать со всеми рангами динамично из базы данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

КЛасс, а подскажите как отделы сдлелать для организации?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }  
    • Dev_Persona
      От Dev_Persona
      Приветствую всех, у меня возник такой вопрос:
       
      - хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:
       
      case DIALOG_ADMIN_REG:
         {
          if(!response) return FixKick(playerid);
       
          if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");
                   SetPlayerData(playerid, P_APASS, strval(inputtext));
       
                   UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));
       
                   AdminAuthorization(playerid);
         }
    • MetaLife Online
      От MetaLife Online
      Приветствую! Код мода не отпровляет данные на БД все правильно подключенно и написанно(копировал с phpmyadmin) но данные не отпровляет. но с БД на сервер приходит сообщение 
       
      new MySQL:dbHandle; new MySQL:dbHandle; #define Host "127.0.0.1" #define User "root" #define DataBase "metalife" #define Password_SQL "" dbHandle = mysql_connect(Host,User,Password_SQL, DataBase);     if(mysql_errno())     {         printf("Подключение к базе данных %s не удалось.",DataBase); // %s означает строку. То есть будет выводить название базы данных которое указано в #define DataBase     }     else     {         printf("Подключение к базе данных %s успешно",DataBase);     }     format(query, sizeof(query), "INSERT INTO `Users`(`Nick`, `Password`, `Gender`, `Skin`) VALUES ('%s','%s','%d','%d')",player_name, player_info[playerid][P_PASS], player_info[playerid][P_GENDER], player_info[playerid][P_SKIN]);     mysql_tquery(dbHandle, query); SA-MP Dedicated Server ---------------------- v0.3.7-R2, (C)2005-2015 SA-MP Team [15:34:54] weburl = "www.sa-mp.com"  (string) [15:34:54]  [15:34:54] Server Plugins [15:34:54] -------------- [15:34:54]  Loading plugin: mysql [15:34:55]  >> plugin.mysql: R41-4 successfully loaded. [15:34:55]   Loaded. [15:34:55]  Loaded 1 plugins. [15:34:55]  [15:34:55] Filterscripts [15:34:55] --------------- [15:34:55]   Loaded 0 filterscripts. [15:34:55] Подключение к базе данных metalife успешно [15:34:55]  ---------------------------------- [15:34:55]  MetaLife Online [15:34:55] ---------------------------------- [15:34:55] Number of vehicle models: 1 При Регестрации не опровляються данные (фото)
      Но если записать рукой данные (фото 2)  
      выполняеться эта эта функция(фото 3(чат) и код )
      forward CheckAccountFromMySql(playerid); public CheckAccountFromMySql(playerid) {     new str[256];     if(cache_num_rows() == 0)     {         new player_name[MAX_PLAYER_NAME + 1];         GetPlayerName(playerid, player_name, MAX_PLAYER_NAME);         format(str, sizeof(str), " {ffffff}Добро пожаловать!\n Аккаунта с таким ником %s нет\nДля Регестрации придумайте и введите пароль в поле ниже!", player_name);         SPD(playerid, DLG_REG, DSP, "Регестрация", str, "Войти", "Выйти");     }     else     {         SCM(playerid, color_green, "Вы  зарегестрырованы!");     }     return 1; } // выполняеться else  ошибу и варнинги mysql
      [15:47:39] [WARNING] mysql_connect: no password specified (C:\Project\Metalife\gamemodes\MetaLife.pwn:92) dbHandle = mysql_connect(Host,User,Password_SQL, DataBase); // 92 строка