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

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

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ GF ]
Система прокачки скилов как на SAMP-RP
Оценка: ***** 1 Голосов

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

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
И так, начнем. Ко всем pInfo:
pSDPistol,
pDesertEagle,
pShotGun,
pMP5,
pAK47,
pM4,


Ко всем переменным:
new iPlayerAmmo[MAX_PLAYERS];
new iNewPlayerAmmo[MAX_PLAYERS];
new Shot[MAX_PLAYERS];


В public OnPlayerRegister и в паблик сохранения:
iniSetInt(File, "SDPistol", 0);
iniSetInt(File, "DesertEagle", 0);
iniSetInt(File, "ShotGun", 0);
iniSetInt(File, "MP5", 0);
iniSetInt(File, "AK47", 0);
iniSetInt(File, "M4", 0);


В public OnPlayerLogin
iniGetInt(File, "SDPistol", PlayerInfo[playerid][pSDPistol]);
iniGetInt(File, "DesertEagle", PlayerInfo[playerid][pDesertEagle]);
iniGetInt(File, "ShotGun", PlayerInfo[playerid][pShotGun]);
iniGetInt(File, "MP5", PlayerInfo[playerid][pMP5]);
iniGetInt(File, "AK47", PlayerInfo[playerid][pAK47]);
iniGetInt(File, "M4", PlayerInfo[playerid][pM4]);


Добовляем команду /myskill для sscanf_zcmd:
CMD:myskill(playerid, params[])
{
	if(!GetPVarInt(playerid, "PlayerLogged")) return true;
	new string[1000];
	new points[6];
	points[0] = 100 - PlayerInfo[playerid][pSDPistol];
	points[1] = 100 - PlayerInfo[playerid][pDesertEagle];
	points[2] = 100 - PlayerInfo[playerid][pShotGun];
	points[3] = 100 - PlayerInfo[playerid][pMP5];
	points[4] = 100 - PlayerInfo[playerid][pAK47];
	points[5] = 100 - PlayerInfo[playerid][pM4];
	format(string, 1000, "SDPistol:\t[%s]%d%\nDeagle:\t[%s]%d%\nShotGun:
\t[%s]%d%\nMP5\t\t[%s]%d%\nAK47:\t\
t[%s]%d%\nM4A1:\t\t[%s]%d%", 
	ToDevelopSkills(PlayerInfo[playerid][pSDPistol], points[0]), PlayerInfo[playerid][pSDPistol], 
	ToDevelopSkills(PlayerInfo[playerid][pDesertEagle], points[1]), PlayerInfo[playerid][pDesertEagle], 
	ToDevelopSkills(PlayerInfo[playerid][pShotGun], points[2]), PlayerInfo[playerid][pShotGun], 
	ToDevelopSkills(PlayerInfo[playerid][pMP5], points[3]), PlayerInfo[playerid][pMP5], 
	ToDevelopSkills(PlayerInfo[playerid][pAK47], points[4]), PlayerInfo[playerid][pAK47], 
	ToDevelopSkills(PlayerInfo[playerid][pM4], points[5]), PlayerInfo[playerid][pM4]);
	ShowPlayerDialog(playerid, 43, DIALOG_STYLE_MSGBOX, "<< Навыки владения оружием >>", string, "Готово", "");
	return true;
}


Для обычных команд:
if(strcmp(cmd,  "/myskills",  true) == 0)
{
	if(!GetPVarInt(playerid, "PlayerLogged")) return true;
	new string[1024 + 1];
	new points[6];
	points[0] = 100 - PlayerInfo[playerid][pSDPistol];
	points[1] = 100 - PlayerInfo[playerid][pDesertEagle];
	points[2] = 100 - PlayerInfo[playerid][pShotGun];
	points[3] = 100 - PlayerInfo[playerid][pMP5];
	points[4] = 100 - PlayerInfo[playerid][pAK47];
	points[5] = 100 - PlayerInfo[playerid][pM4];
	format(string, sizeof string, "SDPistol:\t[%s]%d%\nDeagle:\t[%s]%d%\nShotGun:
\t[%s]%d%\nMP5\t\t[%s]%d%\nAK47:\t\
t[%s]%d%\nM4A1:\t\t[%s]%d%", 
	ToDevelopSkills(PlayerInfo[playerid][pSDPistol], points[0]), PlayerInfo[playerid][pSDPistol], 
	ToDevelopSkills(PlayerInfo[playerid][pDesertEagle], points[1]), PlayerInfo[playerid][pDesertEagle], 
	ToDevelopSkills(PlayerInfo[playerid][pShotGun], points[2]), PlayerInfo[playerid][pShotGun], 
	ToDevelopSkills(PlayerInfo[playerid][pMP5], points[3]), PlayerInfo[playerid][pMP5], 
	ToDevelopSkills(PlayerInfo[playerid][pAK47], points[4]), PlayerInfo[playerid][pAK47], 
	ToDevelopSkills(PlayerInfo[playerid][pM4], points[5]), PlayerInfo[playerid][pM4]);
	ShowPlayerDialog(playerid, 43, DIALOG_STYLE_MSGBOX, "<< Навыки владения оружием >>", string, "Готово", "");
	return true;
}


Ну и сама функция распознавание прокачки скиллов:
stock ToDevelopSkills(Slashes,Points)
{
	new string[256 + 1];
	new Slash[2] = "|";
	new Point[2] = ".";
	for(new i = 0; i < Slashes; i++) strcat(string, Slash);
	for(new i = 0; i < Points; i++) strcat(string, Point);
	return string;
}


В конец мода функцию скиллов игрока
stock SetPlayerSkills(playerid)
{
	if(PlayerInfo[playerid][pSDPistol] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, 1000);
	if(PlayerInfo[playerid][pDesertEagle] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_DESERT_EAGLE, 1000);
	if(PlayerInfo[playerid][pShotGun] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, 1000);
	if(PlayerInfo[playerid][pMP5] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_MP5, 1000);
	if(PlayerInfo[playerid][pAK47] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, 1000);
	if(PlayerInfo[playerid][pM4] >= 100) SetPlayerSkillLevel(playerid, WEAPONSKILL_M4, 1000);
	return 1;
}


В public OnPlayerSpawn добавить в самый конец:
SetPlayerSkills(playerid);


Теперь переменные для отчитывания патронов в public OnPlayerUpdate
iNewPlayerAmmo[playerid] = GetPlayerAmmo(playerid);

if(iNewPlayerAmmo[playerid] != iPlayerAmmo[playerid])
{
	OnPlayerAmmoChange(playerid, iNewPlayerAmmo[playerid], iPlayerAmmo[playerid]);
	iPlayerAmmo[playerid] = iNewPlayerAmmo[playerid];
}


Ну и сам public куда нить тоже в конец мода
public OnPlayerAmmoChange(playerid, newammo, oldammo)
{
	new weaponid = GetPlayerWeapon(playerid);
	
	if(weaponid == 24 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 24)
		{
			PlayerInfo[playerid][pDesertEagle] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	if(weaponid == 23 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 30)
		{
			PlayerInfo[playerid][pSDPistol] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	if(weaponid == 25 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 15)
		{
			PlayerInfo[playerid][pShotGun] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	if(weaponid == 29 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 75)
		{
			PlayerInfo[playerid][pMP5] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	if(weaponid == 30 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 100)
		{
			PlayerInfo[playerid][pAK47] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	if(weaponid == 29 && newammo < oldammo)
	{
		Shot[playerid]++;
		if(Shot[playerid] >= 89)
		{
			PlayerInfo[playerid][pM4] ++;
			Shot[playerid] = 0;
			SaveAccount(playerid);//Или ваша функция сохранение акаунта
		}
	}
	return 1;
}

Код if(Shot[playerid] >= кол-во) отвечает за кол-во патронов которые нужно выстрелить для прокачки.

В public OnPlayerLogin:
SetPVarInt(playerid, "PlayerLogged", 1);


Автор: Fresh_Light

Сообщение отредактировал Romzes: 23 апреля 2021 - 02:00

2

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Все сделал как ты написал , но все таки 4 ошибки возникли при компелированнии, помогите пожалуйста с меня +!

Вот сами ошибки:

C:\Users\?????\Desktop\???\gamemodes\Belarus.pwn(297) : error 017: undefined symbol "PlayerInfo"
C:\Users\?????\Desktop\???\gamemodes\Belarus.pwn(297) : warning 215: expression has no effect
C:\Users\?????\Desktop\???\gamemodes\Belarus.pwn(297) : error 001: expected token: ";", but found "]"
C:\Users\?????\Desktop\???\gamemodes\Belarus.pwn(297) : error 029: invalid expression, assumed zero
C:\Users\?????\Desktop\???\gamemodes\Belarus.pwn(297) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

4 Errors.


Строка:
[297]points[0] = 100 - PlayerInfo[playerid][pSDPistol];

Сообщение отредактировал xkluz1v: 05 января 2012 - 08:55

0

#3
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
И в какой ты мод впиливал? Система для GF
0

#4
Пользователь офлайн   Rock & Roll 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Чтож вы все та с этим playerinfo возитесь... это переменная у вас в регестрации!! у меня например это Player[playerid]
0

#5
Пользователь офлайн   xkluz1v 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Я мод с 0 делаю и вливаю туда уроки)
0

#6
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
У тебя рега сделана?
0

#7
Пользователь офлайн   xkluz1v 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Нет
-1

#8
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Этим всё и сказано..
0

#9
Пользователь офлайн   Rock & Roll 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Ахаха LOL на форуме есть урок реги. Нпиши его в пвн и свяжи с этой системой
0

#10
Пользователь офлайн   OneLifeOneDream 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
инклюид а_samp??

Сообщение отредактировал OneLifeOneDream: 06 января 2012 - 19:39

0

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


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

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


Яндекс.Метрика