Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Сохранения оружия при выходе игрока с сервера.

Статус
В этой теме нельзя размещать новые ответы.

Oliver_Qinn

Новичок
Привет всем, это мой 2 урок, сегодня хотел показать систему сохранения оружия и патрон при выходе игрока с сервера в базу данных MysQl и так начнем...
В enum где хранятся все переменные(данные) о игроке добавляем
HTML:
pAmmo[13],
pGun[13],
Далее двигаемся в stock где сохраняется аккаунт игрока при выходе как правило в RLS или любом моде с интернета этот сток называется stock OnPlayerUpdateRL
Идём в сток и добавляем наши массивы с аргументами
HTML:
static string[] = 
"\
	Ammo 1 = '%d',\
   	Ammo 2 = '%d',\
   	Ammo 3 = '%d',\
   	Ammo 4 = '%d',\
  	Ammo 5 = '%d',\
   	Ammo 6 = '%d',\
   	Ammo 7 = '%d',\
   	Ammo 8 = '%d',\
   	Ammo 9 = '%d',\
   	Ammo 10 = '%d',\
   	Ammo 11 = '%d',\
   	Ammo 12 = '%d',\
   	Ammo 13 = '%d',\
   	Gun 1 = '%d',\
   	Gun 2 = '%d',\
   	Gun 3 = '%d',\
   	Gun 4 = '%d',\
   	Gun 5 = '%d',\
   	Gun 6 = '%d',\
   	Gun 7 = '%d',\
   	Gun 8 = '%d',\
   	Gun 9 = '%d',\
   	Gun 10 = '%d',\
   	Gun 11 = '%d',\
   	Gun 12 = '%d',\
   	Gun 13 = '%d'\
  	WHERE `Name` = '%s'\
";
new string_2[sizeof(string)-52+52+26+MAX_PLAYER_NAME];
mysql_format(переменная подключения к бд,string_2,sizeof(string_2),string
,
   	Info[playerid][pAmmo][0],
   	Info[playerid][pAmmo][1],
   	Info[playerid][pAmmo][2],
   	Info[playerid][pAmmo][3],
   	Info[playerid][pAmmo][4],
   	Info[playerid][pAmmo][5],
   	Info[playerid][pAmmo][6],
   	Info[playerid][pAmmo][7],
   	Info[playerid][pAmmo][8],
   	Info[playerid][pAmmo][9],
   	Info[playerid][pAmmo][10],
   	Info[playerid][pAmmo][11],
   	Info[playerid][pAmmo][12],
   	Info[playerid][pGun][0],
   	Info[playerid][pGun][1],
   	Info[playerid][pGun][2],
   	Info[playerid][pGun][3],
   	Info[playerid][pGun][4],
   	Info[playerid][pGun][5],
   	Info[playerid][pGun][6],
   	Info[playerid][pGun][7],
   	Info[playerid][pGun][8],
   	Info[playerid][pGun][9],
   	Info[playerid][pGun][10],
   	Info[playerid][pGun][11],
   	Info[playerid][pGun][12],
   	Info[playerid][pNames]
);
mysql_function_query(переменная коннекта к бд,string_2,false,"","");
Далее создаём stock для сохранения оружия в данные(переменные)

HTML:
stock SaveGun(playerid)
{
	GetPlayerWeaponData(playerid,0,Info[playerid][pGun][0],Info[playerid][pAmmo][0]);
	GetPlayerWeaponData(playerid,1,Info[playerid][pGun][1],Info[playerid][pAmmo][1]);
	GetPlayerWeaponData(playerid,2,Info[playerid][pGun][2],Info[playerid][pAmmo][2]);
	GetPlayerWeaponData(playerid,3,Info[playerid][pGun][3],Info[playerid][pAmmo][3]);
	GetPlayerWeaponData(playerid,4,Info[playerid][pGun][4],Info[playerid][pAmmo][4]);
	GetPlayerWeaponData(playerid,5,Info[playerid][pGun][5],Info[playerid][pAmmo][5]);
	GetPlayerWeaponData(playerid,6,Info[playerid][pGun][6],Info[playerid][pAmmo][6]);
	GetPlayerWeaponData(playerid,7,Info[playerid][pGun][7],Info[playerid][pAmmo][7]);
	GetPlayerWeaponData(playerid,8,Info[playerid][pGun][8],Info[playerid][pAmmo][8]);
	GetPlayerWeaponData(playerid,9,Info[playerid][pGun][9],Info[playerid][pAmmo][9]);
	GetPlayerWeaponData(playerid,10,Info[playerid][pGun][10],Info[playerid][pAmmo][10]);
	GetPlayerWeaponData(playerid,11,Info[playerid][pGun][11],Info[playerid][pAmmo][11]);
	GetPlayerWeaponData(playerid,12,Info[playerid][pGun][12],Info[playerid][pAmmo][12]);
}
Описание функции GePlayerWeaponData:
Получает id оружия и патроны у игрока и записывает их в переменную: к примеру
HTML:
GetPlayerWeaponData(id игрока,слот оружия,переменная для оружия,переменная для патрон);
Далее в OnPlayerDisconnects добавляем:
HTML:
SaveGun(playerid);
Далее что-бы выдать игроку оружия нам потребуется создать еще один сток:
HTML:
stock GetGun(playerid)
{
	GiveWeapon(playerid,Info[playerid][pGun][0],Info[playerid][pAmmo][0]);
	GiveWeapon(playerid,Info[playerid][pGun][1],Info[playerid][pAmmo][1]);
	GiveWeapon(playerid,Info[playerid][pGun][2],Info[playerid][pAmmo][2]);
	GiveWeapon(playerid,Info[playerid][pGun][3],Info[playerid][pAmmo][3]);
	GiveWeapon(playerid,Info[playerid][pGun][4],Info[playerid][pAmmo][4]);
	GiveWeapon(playerid,Info[playerid][pGun][5],Info[playerid][pAmmo][5]);
	GiveWeapon(playerid,Info[playerid][pGun][6],Info[playerid][pAmmo][6]);
	GiveWeapon(playerid,Info[playerid][pGun][7],Info[playerid][pAmmo][7]);
	GiveWeapon(playerid,Info[playerid][pGun][8],Info[playerid][pAmmo][8]);
	GiveWeapon(playerid,Info[playerid][pGun][9],Info[playerid][pAmmo][9]);
	GiveWeapon(playerid,Info[playerid][pGun][10],Info[playerid][pAmmo][10]);
	GiveWeapon(playerid,Info[playerid][pGun][11],Info[playerid][pAmmo][11]);
	GiveWeapon(playerid,Info[playerid][pGun][12],Info[playerid][pAmmo][12]);
}
Теперь в OnPlayerSpawn(playerid) добавляем:
GetGun(playerid);

На этом весь урок системы сохранения оружия закончен, этот сток GetGun можно юзать в любой точке мода, + бонус, если игрок умирает патроны сохраняются от исходника:
В OnPlayerDeath(playerid,killerid,reason) добавляем:
HTML:
	if(GetPlayerState(playerid) == PLAYER_STATE_WASTED)//Если игрок умер то
	{
		SaveGun(playerid);//Активируем сток для сохранения оружия.
	}
Урок не взят с пабов, при выставления на другие ресурсы указывайте автора: (специально для pawno-info.ru by Milligan))
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу