XemyL
Компетентный
В данном мануале я покажу вам, как сделать систему прокачивания скиллов по патронам. Для реализации мы будем использовать функционал 0.3z, который упрощает данную систему.
Ко всем new:
В OnPlayerSpawn:
Если у вас в моде нет public OnPlayerWeaponShot, то создайте его по примеру ниже:
На этом всё. Сохранение\загрузку скиллов нужно будет сделать самим, основываясь на структуре мода. Скилл для каждого вида оружия хранится в PlayerSkills[playerid][ID оружия].
Пример команды для вывода скиллов:
Автор: XemyL
При копирование материала указывать настоящего автора.
Ко всем new:
PHP:
new ShotCount[MAX_PLAYERS][35], PlayerSkills[MAX_PLAYERS][35];
PHP:
for(new A = 22; A != 33; A++) SetPlayerSkillLevel(playerid, A-22, PlayerSkills[playerid][A]);
SetPlayerSkillLevel(playerid, 10, PlayerSkills[playerid][34]);
PHP:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new RequiredShot[35]; // Количество патрон, нужных для повышения скилла на 1%
for(new A = 22; A != 25; A++) RequiredShot[A] = 30; // Пистолеты
for(new A = 25; A != 28; A++) RequiredShot[A] = 10; // Дробовики
for(new A = 28; A != 33; A++) RequiredShot[A] = 100; // Автоматы
RequiredShot[34] = 5; // Винтовки
ShotCount[playerid][weaponid]++;
if(PlayerSkills[playerid][weaponid] != 1000 && RequiredShot[weaponid] != 0
&& ShotCount[playerid][weaponid] >= RequiredShot[weaponid])
{
PlayerSkills[playerid][weaponid] += 10;
ShotCount[playerid][weaponid] = 0;
if(22 <= weaponid <= 32) SetPlayerSkillLevel(playerid, weaponid-22, PlayerSkills[playerid][weaponid]);
else SetPlayerSkillLevel(playerid, 10, PlayerSkills[playerid][weaponid]);
}
return 1;
}
Пример команды для вывода скиллов:
PHP:
if(!strcmp(cmdtext, "/skills"))
{
new SkillsString[3][100];
for(new A = 22; A != 33; A++)
{
GetWeaponName(A, SkillsString[1], 30);
format(SkillsString[2], 100, "%s: %d%%\n", SkillsString[1], PlayerSkills[playerid][A]/10);
strcat(SkillsString[0], SkillsString[2]);
}
format(SkillsString[2], 100, "Sniper Rifle: %d%%", PlayerSkills[playerid][34]/10);
strcat(SkillsString[0], SkillsString[2]);
ShowPlayerDialog(playerid, 1000, DIALOG_STYLE_MSGBOX, "Навыки", SkillsString[0], "Выйти", "");
return 1;
}
При копирование материала указывать настоящего автора.
Последнее редактирование модератором:
