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

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

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

[ Scr ][ GF ]
Выдаем права на время
Оценка: -----

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

  • Администратор
  • Вставить ник
  • Раскрыть информацию
Приветствую, вот решил написать урок как сделать выдачу прав на время, писать буду под мод LARP(переделанный GF), по идеи, должно работать на всех переделках GF.

1) Итак для начала мы найдем переменную которая будет отвечать за права игрока, у меня она такая:
pCarLic,


2) Далее мы ищем команду /accept , чуть ниже, в ней мы находим что то такое:
if(LicenseType[playerid] == 1)
							{
							    if(PlayerInfo[playerid][pCarLic] == 1)
							    {
							        SendClientMessage(playerid, COLOR_GREY, "(( У вас уже есть права ))");
							    }
							    else
							    {
							    	format(string, sizeof(string), "Вы заплатили %d$ инструктору %s и получили лицензию.",LicensePrice[playerid],giveplayer);
									SendClientMessage(playerid, COLOR_WHITE, string);
									format(string, sizeof(string), "%s отдал(а) вам %d$ и забрал лицензию.",sendername,LicensePrice[playerid]);
									SendClientMessage(LicenseOffer[playerid], COLOR_WHITE, string);
									PlayerInfo[playerid][pCarLic] = 1;
									SafePlayerMoney(playerid, -LicensePrice[playerid]);
									PlayerInfo[LicenseOffer[playerid]][pPayCheck] += LicensePrice[playerid] * 5;
								}
							}


Тут мы видим, переменную pCarLic которой присваевается значене 1, мы удаляем это(PlayerInfo[playerid][pCarLic] = 1;) и вместо него ставим следующее:
if(PlayerInfo[playerid][pLevel] >=  1 &&  PlayerInfo[playerid][pLevel] <= 3) return PlayerInfo[playerid][pCarLic] = 60; // На 60 часов
else if(PlayerInfo[playerid][pLevel] >= 4 &&  PlayerInfo[playerid][pLevel] <= 8) return PlayerInfo[playerid][pCarLic] = 120; // На 120 часов
else if(PlayerInfo[playerid][pLevel] >= 9 &&  PlayerInfo[playerid][pLevel] <= 12) return PlayerInfo[playerid][pCarLic] = 180; // На 180 часов
else if(PlayerInfo[playerid][pLevel] >= 13) return PlayerInfo[playerid][pCarLic] = 99999999; // На 383 года xD 



Объясню, если ваш лвл от 1 и до 3 значит права вам выдадуться на 60 часов, если от 4 до 8 тогда на 120 и т.д. (вы так же можете добавить, пишите свое орг по лвл и кол-во часов)

Получилось вот так:
if(LicenseType[playerid] == 1)
							{
							    if(PlayerInfo[playerid][pCarLic] == 1)
							    {
							        SendClientMessage(playerid, COLOR_GREY, "(( У вас уже есть права ))");
							    }
							    else
							    {
							    	format(string, sizeof(string), "Вы заплатили %d$ инструктору %s и получили лицензию.",LicensePrice[playerid],giveplayer);
									SendClientMessage(playerid, COLOR_WHITE, string);
									format(string, sizeof(string), "%s отдал(а) вам %d$ и забрал лицензию.",sendername,LicensePrice[playerid]);
									SendClientMessage(LicenseOffer[playerid], COLOR_WHITE, string);
									if(PlayerInfo[playerid][pLevel] <= 1 ||  PlayerInfo[playerid][pLevel] >= 3) return PlayerInfo[playerid][pCarLic] = 60; // На 60 часов
                                                                        else if(PlayerInfo[playerid][pLevel] <= 4 ||  PlayerInfo[playerid][pLevel] >= 8) return PlayerInfo[playerid][pCarLic] = 120; // На 120 часов
                                                                        else if(PlayerInfo[playerid][pLevel] <= 9 ||  PlayerInfo[playerid][pLevel] >= 12) return PlayerInfo[playerid][pCarLic] = 180; // На 180 часов
                                                                        else if(PlayerInfo[playerid][pLevel] >= 13) return PlayerInfo[playerid][pCarLic] = 99999999; // На 383 года xD 
									SafePlayerMoney(playerid, -LicensePrice[playerid]);
									PlayerInfo[LicenseOffer[playerid]][pPayCheck] += LicensePrice[playerid] * 5;
								}
							}


3) Теперь отнимаем каждый час по -1, это можно делать в любом паблике, который будет вызываться каждый час, например в public PayDay, добавить следующее:
PlayerInfo[i][pCarLic] -= 1; // у меня стоит i потому что я вставляю в payday


Выглядит примерно так:
SendClientMessage(i, COLOR_WHITE, string);
                    format(string, sizeof(string), "  Интерес: 0.%d percent",tmpintrate);
                    SendClientMessage(i, COLOR_WHITE, string);
                    format(string, sizeof(string), " Полученный интерес $%d", interest);
                    SendClientMessage(i, COLOR_WHITE, string);
                    SendClientMessage(i, COLOR_WHITE, "|--------------------------------------|");
                    format(string, sizeof(string), "  Новый баланс: $%d", PlayerInfo[i][pAccount]);
                    SendClientMessage(i, COLOR_WHITE, string);
                    format(string, sizeof(string), "  Аренда: -%d$", rent);
                    SendClientMessage(i, COLOR_WHITE, string);
                    format(string, sizeof(string), "~y~?AP?‡A?A");
                    GameTextForPlayer(i, string, 5000, 1);
                    rent = 0;
                    PlayerInfo[i][pPayDay] = 0;
                    PlayerInfo[i][pPayCheck] = 0;
                    PlayerInfo[i][pConnectTime] += 1; 
                    PlayerInfo[i][pCarLic] -= 1;




Так же в stats вы можете отобразить сколько часов еще у вас будут вод. права, я сделаю шаблон, а вы подгоните его под себя:
format(string, sizeof(string), "Права: [Ещё: %d часов]",PlayerInfo[playerid][pCarLic]);
ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Статистика", string, "Ок", "Отмена");



И еще не забудьте, найти в моде проверки типо:
if(PlayerInfo[playerid][pCarLic] == 1)

И изменить на:
if(PlayerInfo[playerid][pCarLic] => 1)




Автор: Mike
Написано специально для pawn-wiki!

p.s. Если будут баги, пишите!
3

#2
Пользователь офлайн   Санёк 

  • Няшка
  • Вставить ник
  • Раскрыть информацию
+
0

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

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Классная идея, на Role-Play серверах можно иного интересных "фишек" организовать!
0

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


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

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