Доступ к архиву

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

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

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

Создание патронов у военных

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

Anril13

Компетентный
Здравствуйте, пользователи pawno-info.ru !

Хочу представить вам мануал по созданию системы патронов.
Делал специально для мода rls, все проверено на работоспособность.

Автор этого мануала и самой системы: Anril13, тоесть я.

Суть системы такая: на зоне 51 переодически спавнятся патроны, которые можно воровать.
Далее их можно будет зарядить в новую обойму для оружия.
Количество патронов отображается в виде 3д текста, который обновляется.

Итак, приступим:
Добавим два форварда:
PHP:
forward patron3dtextnow(); //форвард обновления 3д текста
forward spawnpatron(); //форвард спавна патронов
Добавим ко всем new:
PHP:
new Text3D:patron3dtext; //3д текст патронов на зоне 51
Теперь ищем строку: enum fInfo
И добавим
fpatron,
Чтобы получилось так:
PHP:
enum fInfo
{
   	fLsnews,
	fSfnews,
	fLvnews,
	fBallas,
	fVagos,
	fGrove,
	fAztek,
	fRifa,
 	fKazna,
 	fpatron, //добавленно
};
Ищем public LoadBankFrac и всталяем строчку:
PHP:
ini_getInteger(iniFile,"FracBank[0][fpatron]",FracBank[0][fpatron]); //загрузка количества патронов
Идем в public SaveBankFrac И вставляем строчку:
PHP:
ini_setInteger(iniFile, "FracBank[0][fpatron]",FracBank[0][fpatron]); //Сохранение патронов
Теперь ищем enum pInfo и вставляем в массив:
PHP:
ppatron, //для сохранения патронов у игрока
Теперь идем в public OnGameModeInit(playerid) и создаем 3д текст:
PHP:
//---------3д текст патроны зона 51
new str[256];
new patroni1 = FracBank[0][fpatron];
format(str, sizeof(str), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni1);
patron3dtext = Create3DTextLabel( str, 0xFF0000FF,335.0045,1947.7343,22.0208,20.0,0, 1 );
Теперь идем в Public Onplayerconnect чуть ниже и вставляем строку:
PHP:
PlayerInfo[playerid][ppatron] = 0;  //тем самым присвоим начальное количество патронов персонажу (до загрузки из файла)
Теперь идем в public ShowStats И вставляем строчку:
PHP:
new patron = PlayerInfo[targetid][ppatron]; //присвоим переменной patron количество патронов из файла персонажа
Теперь в строчку:
PHP:
new msg[] = "Имя:\t\t\t|\t%s\n\nУровень:\t\t|\t%d\nExp:..блалалалалалал
Вставляем это:
PHP:
\nПатроны:\t\t|\t%d
В нужную часть кода (туда куда мы хотим чтобы отображалось количество патронов)
Напомню:
\n — начать с новой строки
\t — отступ
%d — переменная (в нашем случае patron)
Теперь в строку:
PHP:
format(coordsstring, 1000, msg,.блаблаблабла
Вставим нашу переменную patron. Получиться примерно так.
Здесь нужно соблюдать порядок в последовательности переменных.
PHP:
format(coordsstring, 1000, msg, name,level,exp,expamount,cash,patron,pnumber,warns,stringi,zakon,narko,warrests,wanted,drugs,mats,chas,ttext,rangz,jtext,drank,stringus,atext);
Теперь идем в public OnGameModeInit()
и создаем там два таймера:
PHP:
SetTimer("patron3dtextnow",3000,true); // где 3000 - 3 секунды (обновялем 3д текст раз в 3 сек)
SetTimer("spawnpatron",100000,true); // спавн патронов на зоне 51
Теперь идем в public OnPlayerRegister и вставим строчку:
PHP:
ini_setInteger(File,"Патроны",PlayerInfo[playerid][ppatron]);
Идем в public OnPlayerLogin и вставляем:
PHP:
ini_getInteger(File,"Патроны",PlayerInfo[playerid][ppatron]);
Идем в public OnPlayerCommandText и создадем команды для того, чтобы можно было стырить патроны со склада и зарядить их в оружие:
PHP:
//------Патроны------
	if(strcmp(cmd,"/патроны",true)==0)
    {
        if(IsPlayerConnected(playerid))
	    {
			tmp = strtok(cmdtext, idx);
	        if(!strlen(tmp))  return SendClientMessage(playerid, COLOR_WHITE, "Введите: /патроны [количество]");
			if(PlayerToPoint(9.0,playerid,335.0045,1947.7343,22.0208))
			    	{
	    			new ammo;
	    			ammo = strval(tmp);
	    			if(FracBank[0][fpatron] <= 1) { SendClientMessage(playerid, COLOR_GREY, "Склад пустой!"); return 1; }
			    	if(PlayerInfo[playerid][ppatron] >= 500) { SendClientMessage(playerid, COLOR_GREY, "Нельзя носить больше 500 патронов"); return 1; }
			    	if(ammo > 500 || ammo < 1) { SendClientMessage(playerid, COLOR_GREY, "Нельзя взять меньше 1 патрона и больше 500!"); return 1; }
			        PlayerInfo[playerid][ppatron] += ammo;
			        if(PlayerInfo[playerid][ppatron] >= 501)
					   {
					   SendClientMessage(playerid, COLOR_GREY, "Вы столько не унесете!");
					   PlayerInfo[playerid][ppatron] -= ammo;
					   FracBank[0][fpatron] +=ammo;
					   return 1;
					   }
			        FracBank[0][fpatron] -=ammo;
   					format(string, sizeof(string), "Вы украли %d патрон(ов) с военного склада", ammo);
					SendClientMessage(playerid, 0x6495EDFF, string);
				 /*	new patroni = FracBank[0][fpatron];
					format(string, sizeof(string), "Склад патронов\n-{FFFFFF} На складе армии\n{FFA500} %d патрон(ов).",patroni);
					Update3DTextLabelText(patron3dtext[playerid], 0xFF0000FF, string); */
					}
			    else
			    {
			        SendClientMessage(playerid, COLOR_GRAD1, "Вы должны быть на военном складу!!");
			        return 1;
			    }
  			}
		return 1;
	}
//-------патроны для песта с глушителем
	if(strcmp(cmdtext, "/patronsd", true) == 0) //для sd pistol
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 17)
			{
				if(GetPlayerWeapon(playerid) == 23) //пест с глушителем
				{
					GiveRichGun(playerid, 23, 17);
					PlayerInfo[playerid][ppatron] -= 17;
					SendClientMessage(playerid, COLOR_GREY, "Вы зарядили новую обойму (17 патронов) для SD-Pistol.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет пистолета с глушителем!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 17 патронов для новой обоймы!");
			}
		}
		return 1;
	}
//----для дигла
	if(strcmp(cmdtext, "/patronde", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 7)
			{
				if(GetPlayerWeapon(playerid) == 24) //пест с глушителем
				{
					GiveRichGun(playerid, 24, 7);
					PlayerInfo[playerid][ppatron] -= 7;
					SendClientMessage(playerid, COLOR_GREY, "Вы зарядили новую обойму (7 патронов) для Desert Eagle.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет Desert Eagle!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 7 патронов для новой обоймы!");
			}
		}
		return 1;
	}
//----для дробовика
	if(strcmp(cmdtext, "/patronsg", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 10)
			{
				if(GetPlayerWeapon(playerid) == 25) //пест с глушителем
				{
					GiveRichGun(playerid, 25, 10);
					PlayerInfo[playerid][ppatron] -= 10;
					SendClientMessage(playerid, COLOR_GREY, "Вы добавили 10 патронов в патронташ для Shot Gun.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет Shot Gun!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 10 патронов для новой обоймы!");
			}
		}
		return 1;
	}
//----для MP5
	if(strcmp(cmdtext, "/patronmp5", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 30)
			{
				if(GetPlayerWeapon(playerid) == 29) //пест с глушителем
				{
					GiveRichGun(playerid, 29, 30);
					PlayerInfo[playerid][ppatron] -= 30;
					SendClientMessage(playerid, COLOR_GREY, "Вы добавили 30 патронов в обойму для MP5.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет MP5!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 30 патронов для новой обоймы!");
			}
		}
		return 1;
	}
//----для AK47
	if(strcmp(cmdtext, "/patronak47", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 30)
			{
				if(GetPlayerWeapon(playerid) == 30) //калаш
				{
					GiveRichGun(playerid, 30, 30);
					PlayerInfo[playerid][ppatron] -= 30;
					SendClientMessage(playerid, COLOR_GREY, "Вы добавили 30 патронов в обойму для AK47.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет Aвтомата Калашникова!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 30 патронов для новой обоймы!");
			}
		}
		return 1;
	}
//----для M4
	if(strcmp(cmdtext, "/patronm4", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
     		if(PlayerInfo[playerid][ppatron] >= 50)
			{
				if(GetPlayerWeapon(playerid) == 31) //калаш
				{
					GiveRichGun(playerid, 31, 50);
					PlayerInfo[playerid][ppatron] -= 50;
					SendClientMessage(playerid, COLOR_GREY, "Вы добавили 50 патронов в обойму для M4.");
				}
				    else
				    {
			        SendClientMessage(playerid, COLOR_GREY, "У вас нет M4!");
			        return 1;
					}
   			}
			else
			{
			    SendClientMessage(playerid, COLOR_GREY, "У вас нет 50 патронов для новой обоймы!");
			}
		}
		return 1;
	}
Теперь создадим два паблика (для спавна патронов и обновления 3д текста):
PHP:
//------------обновление 3д текста патронов----
public patron3dtextnow()
		{
		new stringers[256];
		new patroni = FracBank[0][fpatron];
		format(stringers, sizeof(stringers), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni);
		Update3DTextLabelText(patron3dtext, 0xFF0000FF, stringers);
		}
//----паблик спавна патронов------
public spawnpatron()
		{
		if(FracBank[0][fpatron] <= 10000)
			{
			  new ammo;
   			  ammo = random(20);
			  FracBank[0][fpatron] +=ammo;
			  return 1;
			}
			return 0;
		}

Вот и все, вопросы, пожелания, предложения пишем сюда.
Надеюсь это кому-нибудь пригодится ;)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу