Barni
Компетентный
Дефайны для регулировки кол - ва патронов, которые надо вытреить чтобы прокачать 1 процент
В енумератор enum pInfo
В public OnPlayerRegister
В public OnPlayerUpdate или типо этого(Сохранение переменных в акаунт)
В public OnPlayerLogin
public OnPlayerCommandTExt:
Ну и сама функция распознавание прокачки скиллов:
В конец мода функцию скиллов игрока
В public OnPlayerSpawn в самый конец
Теперь переменные для отчитывания патронов в самое начало public OnPlayerUpdate
Ну и сам public куда нить тоже в конец мода
В public OnPlayerConnect:
Вот и всё.. Автор: Fresh_Light || Barni
Вот примерно так будет:
PHP:
#define Ammo_SDPISTOL 30 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
#define Ammo_DEAGLE 24 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
#define Ammo_SHOTGUN 15 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
#define Ammo_MP5 75 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
#define Ammo_AK47 100 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
#define Ammo_M4A1 89 //Кол - во, которые надо выстрелить, чтоы прокачать 1 процент
PHP:
pGunSkill[6],
PHP:
iniSetInt(File,"SDPistol",0);
iniSetInt(File,"DesertEagle",0);
iniSetInt(File,"ShotGun",0);
iniSetInt(File,"MP5",0);
iniSetInt(File,"AK47",0);
iniSetInt(File,"M4",0);
PHP:
iniSetInt(File,"SDPistol",PlayerInfo[playerid][pGunSkill][0]);
iniSetInt(File,"DesertEagle",PlayerInfo[playerid][pGunSkill][1]);
iniSetInt(File,"ShotGun",PlayerInfo[playerid][pGunSkill][2]);
iniSetInt(File,"MP5",PlayerInfo[playerid][pGunSkill][3]);
iniSetInt(File,"AK47",PlayerInfo[playerid][pGunSkill][4]);
iniSetInt(File,"M4",PlayerInfo[playerid][pGunSkill][5]);
PHP:
iniGetInt(File,"SDPistol",PlayerInfo[playerid][pGunSkill][0]);
iniGetInt(File,"DesertEagle",PlayerInfo[playerid][pGunSkill][1]);
iniGetInt(File,"ShotGun",PlayerInfo[playerid][pGunSkill][2]);
iniGetInt(File,"MP5",PlayerInfo[playerid][pGunSkill][3]);
iniGetInt(File,"AK47",PlayerInfo[playerid][pGunSkill][4]);
iniGetInt(File,"M4",PlayerInfo[playerid][pGunSkill][5]);
PHP:
if(strcmp(cmd, "/myskills", true) == 0)
{
new stringskill[700];
new points[6],percent[2] = "%";
points[0] = 100 - PlayerInfo[playerid][pGunSkill][0];
points[1] = 100 - PlayerInfo[playerid][pGunSkill][1];
points[2] = 100 - PlayerInfo[playerid][pGunSkill][2];
points[3] = 100 - PlayerInfo[playerid][pGunSkill][3];
points[4] = 100 - PlayerInfo[playerid][pGunSkill][4];
points[5] = 100 - PlayerInfo[playerid][pGunSkill][5];
format(stringskill,sizeof(stringskill),"SDPistol:\t[%s]%d%s\nDeagle:\t[%s]%d%s\nShotGun:\t[%s]%d%s\nMP5\t\t[%s]%d%s\nAK47:\t\t[%s]%d%s\nM4A1:\t\t[%s]%d%s",
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][0],points[0]),PlayerInfo[playerid][pGunSkill][0],percent,
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][1],points[1]),PlayerInfo[playerid][pGunSkill][1],percent,
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][2],points[2]),PlayerInfo[playerid][pGunSkill][2],percent,
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][3],points[3]),PlayerInfo[playerid][pGunSkill][3],percent,
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][4],points[4]),PlayerInfo[playerid][pGunSkill][4],percent,
ToDevelopSkills(PlayerInfo[playerid][pGunSkill][5],points[5]),PlayerInfo[playerid][pGunSkill][5],percent);
ShowPlayerDialog(playerid,43,DIALOG_STYLE_MSGBOX,"<< Навыки владением оружием>>",stringskill,"Готово","");
return 1;
}
PHP:
stock ToDevelopSkills(Slashes,Points)
{
new SlashesAndPoints[400];
new Slash[2] = "|";
new Point[2] = "'";
for(new i = 0; i < Slashes; i++) strcat(SlashesAndPoints, Slash);
for(new i = 0; i < Points; i++) strcat(SlashesAndPoints, Point);
return SlashesAndPoints;
}
PHP:
stock SetPlayerSkills(playerid)
{
SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, PlayerInfo[playerid][pGunSkill][0]*10);
SetPlayerSkillLevel(playerid, WEAPONSKILL_DESERT_EAGLE, PlayerInfo[playerid][pGunSkill][1]*10);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, PlayerInfo[playerid][pGunSkill][2]*10);
SetPlayerSkillLevel(playerid, WEAPONSKILL_MP5, PlayerInfo[playerid][pGunSkill][3]*10);
SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, PlayerInfo[playerid][pGunSkill][4]*10);
SetPlayerSkillLevel(playerid, WEAPONSKILL_M4, PlayerInfo[playerid][pGunSkill][5]*10);
return 1;
}
PHP:
SetPlayerSkills(playerid);
PHP:
SetPVarInt(playerid, "NewPlayerAmmo", GetPlayerAmmo(playerid));
if(GetPVarInt(playerid, "NewPlayerAmmo") != GetPVarInt(playerid, "PlayerAmmo"))
{
OnPlayerAmmoChange(playerid, GetPVarInt(playerid, "NewPlayerAmmo"), GetPVarInt(playerid, "PlayerAmmo"));
SetPVarInt(playerid, "PlayerAmmo", GetPVarInt(playerid, "NewPlayerAmmo"));
}
PHP:
stock OnPlayerAmmoChange(playerid, newammo, oldammo)
{
if(newammo < oldammo)
{
switch(GetPlayerWeapon(playerid))
{
case 24:
{
SetPVarInt(playerid, "SkillD",GetPVarInt(playerid,"SkillD") +1);
if(GetPVarInt(playerid,"SkillD") >= Ammo_DEAGLE && PlayerInfo[playerid][pGunSkill][1] < 100)
{
PlayerInfo[playerid][pGunSkill][1]++;
SetPVarInt(playerid, "SkillD",0);
}
}
case 23:
{
SetPVarInt(playerid, "SkillSD",GetPVarInt(playerid,"SkillSD") +1);
if(GetPVarInt(playerid,"SkillSD")>= Ammo_SDPISTOL && PlayerInfo[playerid][pGunSkill][0] < 100)
{
PlayerInfo[playerid][pGunSkill][0]++;
SetPVarInt(playerid, "SkillSD",0);
}
}
case 25:
{
SetPVarInt(playerid, "SkillShot",GetPVarInt(playerid,"SkillShot") +1);
if(GetPVarInt(playerid,"SkillShot") >= Ammo_SHOTGUN && PlayerInfo[playerid][pGunSkill][2] < 100)
{
PlayerInfo[playerid][pGunSkill][2]++;
SetPVarInt(playerid, "SkillShot",0);
}
}
case 29:
{
SetPVarInt(playerid, "SkillMP5",GetPVarInt(playerid,"SkillMP5") +1);
if(GetPVarInt(playerid,"SkillMP5") >= Ammo_MP5 && PlayerInfo[playerid][pGunSkill][3] < 100)
{
PlayerInfo[playerid][pGunSkill][3]++;
SetPVarInt(playerid, "SkillMP5",0);
}
}
case 30:
{
SetPVarInt(playerid, "SkillAk47",GetPVarInt(playerid,"SkillAk47") +1);
if(GetPVarInt(playerid,"SkillAk47") >= Ammo_AK47 && PlayerInfo[playerid][pGunSkill][4] < 100)
{
PlayerInfo[playerid][pGunSkill][4]++;
SetPVarInt(playerid, "SkillAk47",0);
}
}
case 31:
{
SetPVarInt(playerid, "SkillM4",GetPVarInt(playerid,"SkillM4") +1);
if(GetPVarInt(playerid,"SkillM4") >= Ammo_M4A1 && PlayerInfo[playerid][pGunSkill][5] < 100)
{
PlayerInfo[playerid][pGunSkill][5]++;
SetPVarInt(playerid, "SkillM4",0);
}
}
}
SavePlayer(playerid);//замените на свою функцию сохранения
}
return 1;
}
PHP:
PlayerInfo[playerid][pGunSkill][0] = 0;
PlayerInfo[playerid][pGunSkill][1] = 0;
PlayerInfo[playerid][pGunSkill][2] = 0;
PlayerInfo[playerid][pGunSkill][3] = 0;
PlayerInfo[playerid][pGunSkill][4] = 0;
PlayerInfo[playerid][pGunSkill][5] = 0;
Вот и всё.. Автор: Fresh_Light || Barni
Вот примерно так будет:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Обновлено, убран баг с прокачкой оружия(Если выстрелить 23 патрона с АК47 и 1 с дигла то дигл качнётся на 1 процент), убраны лишние переменные. Тестируем. Нашли баг? Пишите в тему, помогу!Чтобы проверить роботоспособность системы сделайте себе дигл, выстрелите 24 и более патронов и введите /myskill
if(Shot[playerid] >= кол -во) это сколько надо выстрелить патронов,чтобы прокачать 1% скил оружия
Последнее редактирование:
