Anril13
Компетентный
Здравствуйте, пользователи pawno-info.ru !
Хочу представить вам мануал по созданию системы патронов.
Делал специально для мода rls, все проверено на работоспособность.
Автор этого мануала и самой системы: Anril13, тоесть я.
Суть системы такая: на зоне 51 переодически спавнятся патроны, которые можно воровать.
Далее их можно будет зарядить в новую обойму для оружия.
Количество патронов отображается в виде 3д текста, который обновляется.
Итак, приступим:
Добавим два форварда:
Добавим ко всем new:
Теперь ищем строку: enum fInfo
И добавим
fpatron,
Чтобы получилось так:
Ищем public LoadBankFrac и всталяем строчку:
Идем в public SaveBankFrac И вставляем строчку:
Теперь ищем enum pInfo и вставляем в массив:
Теперь идем в public OnGameModeInit(playerid) и создаем 3д текст:
Теперь идем в Public Onplayerconnect чуть ниже и вставляем строку:
Теперь идем в public ShowStats И вставляем строчку:
Теперь в строчку:
Вставляем это:
В нужную часть кода (туда куда мы хотим чтобы отображалось количество патронов)
Напомню:
\n — начать с новой строки
\t — отступ
%d — переменная (в нашем случае patron)
Теперь в строку:
Вставим нашу переменную patron. Получиться примерно так.
Здесь нужно соблюдать порядок в последовательности переменных.
Теперь идем в public OnGameModeInit()
и создаем там два таймера:
Теперь идем в public OnPlayerRegister и вставим строчку:
Идем в public OnPlayerLogin и вставляем:
Идем в public OnPlayerCommandText и создадем команды для того, чтобы можно было стырить патроны со склада и зарядить их в оружие:
Теперь создадим два паблика (для спавна патронов и обновления 3д текста):
Вот и все, вопросы, пожелания, предложения пишем сюда.
Надеюсь это кому-нибудь пригодится
Хочу представить вам мануал по созданию системы патронов.
Делал специально для мода rls, все проверено на работоспособность.
Автор этого мануала и самой системы: Anril13, тоесть я.
Суть системы такая: на зоне 51 переодически спавнятся патроны, которые можно воровать.
Далее их можно будет зарядить в новую обойму для оружия.
Количество патронов отображается в виде 3д текста, который обновляется.
Итак, приступим:
Добавим два форварда:
PHP:
forward patron3dtextnow(); //форвард обновления 3д текста
forward spawnpatron(); //форвард спавна патронов
PHP:
new Text3D:patron3dtext; //3д текст патронов на зоне 51
И добавим
fpatron,
Чтобы получилось так:
PHP:
enum fInfo
{
fLsnews,
fSfnews,
fLvnews,
fBallas,
fVagos,
fGrove,
fAztek,
fRifa,
fKazna,
fpatron, //добавленно
};
PHP:
ini_getInteger(iniFile,"FracBank[0][fpatron]",FracBank[0][fpatron]); //загрузка количества патронов
PHP:
ini_setInteger(iniFile, "FracBank[0][fpatron]",FracBank[0][fpatron]); //Сохранение патронов
PHP:
ppatron, //для сохранения патронов у игрока
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 );
PHP:
PlayerInfo[playerid][ppatron] = 0; //тем самым присвоим начальное количество патронов персонажу (до загрузки из файла)
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,.блаблаблабла
Здесь нужно соблюдать порядок в последовательности переменных.
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);
и создаем там два таймера:
PHP:
SetTimer("patron3dtextnow",3000,true); // где 3000 - 3 секунды (обновялем 3д текст раз в 3 сек)
SetTimer("spawnpatron",100000,true); // спавн патронов на зоне 51
PHP:
ini_setInteger(File,"Патроны",PlayerInfo[playerid][ppatron]);
PHP:
ini_getInteger(File,"Патроны",PlayerInfo[playerid][ppatron]);
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;
}
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;
}
Вот и все, вопросы, пожелания, предложения пишем сюда.
Надеюсь это кому-нибудь пригодится
Последнее редактирование:
