Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: ID скиллов - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

ID скиллов SetPlayerSkillLevel Оценка: -----

#1
Пользователь онлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию
Все скиллы изначально равны 1000. Это значит, что обрезы, пистолеты и еще некоторое оружие в двух руках. В SA-MP 0.3a была внесена возможность добавления скиллов для оружия.
Для полноценной работы в OnGameModeInit добавляем UsePlayerPedAnims();. Иначе двуручное оружие носится в одной руке.


Параметры:


SetPlayerSkillLevel(playerid, skill, level);

  • playerid - ID игрока
  • skill - оружие для которого будет выставляться скилл
  • level - уровень скилла (от 0 до 999)



ID и наименования для параметра skill


0       WEAPONSKILL_PISTOL              //9mm
1       WEAPONSKILL_PISTOL_SILENCED     //Silenced 9mm
2       WEAPONSKILL_DESERT_EAGLE        //Desert Eagle
3       WEAPONSKILL_SHOTGUN             //Shotgun
4       WEAPONSKILL_SAWNOFF_SHOTGUN     //Sawnoff Shotgun
5       WEAPONSKILL_SPAS12_SHOTGUN      //Combat Shotgun
6       WEAPONSKILL_MICRO_UZI           //Micro SMG/Uzi
7       WEAPONSKILL_MP5                 //MP5
8       WEAPONSKILL_AK47                //AK-47
9       WEAPONSKILL_M4                  //M4
10      WEAPONSKILL_SNIPERRIFLE         //Sniper Rifle



На деле:


SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 574);
SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, 925);
SetPlayerSkillLevel(playerid, WEAPONSKILL_DESERT_EAGLE, 281);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, 286);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 192);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 182);
SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 821);
SetPlayerSkillLevel(playerid, WEAPONSKILL_MP5, 729);
SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, 551);
SetPlayerSkillLevel(playerid, WEAPONSKILL_M4, 624);
SetPlayerSkillLevel(playerid, WEAPONSKILL_SNIPERRIFLE, 321);

Сообщение отредактировал m1n1vv: 07 Март 2017 - 20:54

2

#2
Пользователь онлайн   m1n1vv 

  • Искусственный Cверхинтеллект
  • Вставить ник
  • Раскрыть информацию
Загрузка и сохранение в MySQL

Короткий урок об загрузке и сохранении скилла в базу данных.

Допустим скиллы будут храниться в константе pSkill в энуменаторе p_info.

enum p_info
{
	pSkill[11] //11 - общее количество оружия, которым можно указать скилл [0..10]
};
new pInfo[MAX_PLAYERS][p_info];

Дальше перехватываем функцию SetPlayerSkillLevel и добавляем в нее сохранение скилла в переменную.

stock samp__SetPlayerSkillLevel(playerid, skill, level);
{
	SetPlayerSkillLevel(playerid, skill, level);
	return pInfo[playerid][pSkill][skill] = level;
}
#if defined _ALS_SetPlayerSkillLevel
    #undef    SetPlayerSkillLevel
#else
    #define    _ALS_SetPlayerSkillLevel
#endif
#define    SetPlayerSkillLevel        samp__SetPlayerSkillLevel

В коллбэк завершения регистрации/авторизации:

for (new i = 0; i < 11; i++)
{
	SetPlayerSkillLevel(playerid, i, pInfo[playerid][pSkill][i]);
}

В дисконнект после сохранения:

for (new i = 0; i < 11; i++)
{
	pInfo[playerid][pSkill][i] = 0;
}



Сохранение в MySQL R39

stock Save(playerid)
{
	static
		str[] = "UPDATE `accounts` SET `Skill` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `pID` = '%d'";

	new
		string[sizeof str + 11*3 + 11 - 2*12];

	format(string, sizeof string, str,
		pInfo[playerid][pSkill][0],
		pInfo[playerid][pSkill][1],
		pInfo[playerid][pSkill][2],
		pInfo[playerid][pSkill][3],
		pInfo[playerid][pSkill][4],
		pInfo[playerid][pSkill][5],
		pInfo[playerid][pSkill][6],
		pInfo[playerid][pSkill][7],
		pInfo[playerid][pSkill][8],
		pInfo[playerid][pSkill][9],
		pInfo[playerid][pSkill][10],
	);

	mysql_function_query(myBD, string, false, "", "");

	return 1;
}


Сохранение в MySQL R40

stock Save(playerid)
{
	static
		str[] = "UPDATE `accounts` SET `Skill` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `pID` = '%d'";

	new
		string[sizeof str + 11*3 + 11 - 2*12];

	format(string, sizeof string, str,
		pInfo[playerid][pSkill][0],
		pInfo[playerid][pSkill][1],
		pInfo[playerid][pSkill][2],
		pInfo[playerid][pSkill][3],
		pInfo[playerid][pSkill][4],
		pInfo[playerid][pSkill][5],
		pInfo[playerid][pSkill][6],
		pInfo[playerid][pSkill][7],
		pInfo[playerid][pSkill][8],
		pInfo[playerid][pSkill][9],
		pInfo[playerid][pSkill][10]
	);

	mysql_tquery(myBD, string, "", ""); 

	return 1;
}




Загрузка в MySQL R39

public Upload(playerid)
{
	new
		buffer[50];

	//Для загрузки понадобится плагин sscanf2
	sscanf(buffer, "p<|>iiiiiiiiiiiii",
		pInfo[playerid][pSkill][0],
		pInfo[playerid][pSkill][1],
		pInfo[playerid][pSkill][2],
		pInfo[playerid][pSkill][3],
		pInfo[playerid][pSkill][4],
		pInfo[playerid][pSkill][5],
		pInfo[playerid][pSkill][6],
		pInfo[playerid][pSkill][7],
		pInfo[playerid][pSkill][8],
		pInfo[playerid][pSkill][9],
		pInfo[playerid][pSkill][10]
	);

        cache_get_field_content(0, "Skill", buffer, myBD, 50);

	return 1;
}


Загрузка в MySQL R40

public Upload(playerid)
{
	new
		buffer[50];

	//Для загрузки понадобится плагин sscanf2
	sscanf(buffer, "p<|>iiiiiiiiiiiii",
		pInfo[playerid][pSkill][0],
		pInfo[playerid][pSkill][1],
		pInfo[playerid][pSkill][2],
		pInfo[playerid][pSkill][3],
		pInfo[playerid][pSkill][4],
		pInfo[playerid][pSkill][5],
		pInfo[playerid][pSkill][6],
		pInfo[playerid][pSkill][7],
		pInfo[playerid][pSkill][8],
		pInfo[playerid][pSkill][9],
		pInfo[playerid][pSkill][10]
	);
	
        cache_get_value_name(0, "Skill", buffer);

	return 1;
}

Сообщение отредактировал m1n1vv: 31 Январь 2017 - 21:31

1

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Тема закрыта

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей