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

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

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

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

Урок Прокачивание скиллов [0.3z]

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

XemyL

Компетентный
В данном мануале я покажу вам, как сделать систему прокачивания скиллов по патронам. Для реализации мы будем использовать функционал 0.3z, который упрощает данную систему.

Ко всем new:
PHP:
new ShotCount[MAX_PLAYERS][35], PlayerSkills[MAX_PLAYERS][35];
В OnPlayerSpawn:
PHP:
for(new A = 22; A != 33; A++) SetPlayerSkillLevel(playerid, A-22, PlayerSkills[playerid][A]);
SetPlayerSkillLevel(playerid, 10, PlayerSkills[playerid][34]);
Если у вас в моде нет public OnPlayerWeaponShot, то создайте его по примеру ниже:

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;
}
На этом всё. Сохранение\загрузку скиллов нужно будет сделать самим, основываясь на структуре мода. Скилл для каждого вида оружия хранится в PlayerSkills[playerid][ID оружия].

Пример команды для вывода скиллов:
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;
}
Автор: XemyL
При копирование материала указывать настоящего автора.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу