BossArturKA
Умник
Всем привет!
Пока на сервера самп-рп велись атаки делать было не чего...
Вот решил скачать мод RLS (Тот что выложил сам Рустам) и чуток переделать систему выдачи лицензий.
Подтверждение диалогом ПОКА только лицензии на авто
Пока сервер работает стабильно пошел играть =)
Будут опять атаки или не чего делать - допишу полностью. (Остальные диалоги подтверждения + списание денег.)
Samp-Rp:
Ваш сервер:
В "OnPlayerClickPlayer"
Пока на сервера самп-рп велись атаки делать было не чего...
Вот решил скачать мод RLS (Тот что выложил сам Рустам) и чуток переделать систему выдачи лицензий.
Подтверждение диалогом ПОКА только лицензии на авто
Пока сервер работает стабильно пошел играть =)
Будут опять атаки или не чего делать - допишу полностью. (Остальные диалоги подтверждения + списание денег.)
Samp-Rp:
Ваш сервер:
В "OnPlayerClickPlayer"
PHP:
if(PlayerInfo[playerid][pMember] == 11)
{
if(PlayerInfo[playerid][pRank] == 1) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 2) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 3) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 4) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт\nВыдать лицензию: Воздушный транспорт\nВыдать лицензию: Оружие"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] > 4) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт\nВыдать лицензию: Воздушный транспорт\nВыдать лицензию: Оружие\nВыдать лицензию: Бизнес"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
}
Где pMember - переменная фракции.
Где 11 это ID фракции инструторов.
Где pRank - переменная ранга.
Где 1, 2, 3, 4 - ранги.
Где 7777 ID дилога.
Заменяем или создаем "case 7777":
PHP:
case 7777:
{
if(response)
{
new uni_str100[100];
new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle); GetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ);
new ClickedPlayerName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME]; GetPlayerName(ChosenPlayer[playerid],ClickedPlayerName,24); GetPlayerName(playerid,pName,24);
if(listitem == 0)
{
if(TakingLesson[ChosenPlayer[playerid]] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "Вы уже начинали с этим игроком урок!");
TakingLesson[ChosenPlayer[playerid]] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор начал с Вами урок по вождению");
format(uni_str100, sizeof(uni_str100), "Вы начали урок с %s",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
return 1;
}
else if(listitem == 1)
{
if(TakingLesson[ChosenPlayer[playerid]] == 0) return SendClientMessage(playerid, COLOR_GRAD1, "Вы не начинали урок с этим игроком!");
TakingLesson[ChosenPlayer[playerid]] = 0;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор завершил с Вами урок по вождению");
format(uni_str100, sizeof(uni_str100), "Вы завершили урок с %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
return 1;
}
else if(listitem == 2)
{
if(PlayerInfo[playerid][pRank] == 1) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 2) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 3) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] == 4) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт\nВыдать лицензию: Воздушный транспорт\nВыдать лицензию: Оружие"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
if(PlayerInfo[playerid][pRank] > 4) { new listitems[] = "{FFFFFF}Урок по вождению: начать\nУрок по вождению: завершить\n \nВыдать лицензию: Водительские права\nВыдать лицензию: Рыбаловство\nВыдать лицензию: Морской транспорт\nВыдать лицензию: Воздушный транспорт\nВыдать лицензию: Оружие\nВыдать лицензию: Бизнес"; ShowPlayerDialog(playerid, 7777, DIALOG_STYLE_LIST, "Выберите действие", listitems, "Готово", "Отмена"); }
}
else if(listitem == 3)
{
//
new cena_lica[6];
if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 1 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 2) { cena_lica = "500"; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 3 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 5) { cena_lica = "5000"; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 6 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 15) { cena_lica = "10000"; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] > 15) { cena_lica = "30000"; }
//
new message[100];//90 хватит, округлим :3
new nickname[MAX_PLAYER_NAME];
GetPlayerName(ChosenPlayer[playerid],nickname,sizeof(nickname));
format(message, sizeof(message), "Вы предложили %s купить лицензию на вождение, за %s вирт", nickname/*ChosenPlayer[playerid]*/, cena_lica);
SendClientMessage(playerid, 0x6495EDFF, message);
//
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string,sizeof(string), "Инструктор %s предложил вам купить лицензию на вождение\nЦена: %s вирт",sendername, cena_lica);
ShowPlayerDialog(ChosenPlayer[playerid],26360,DIALOG_STYLE_MSGBOX,"{FFFFFF}Покупка лицензий",string,"Купить","Отмена");
}
else if(listitem == 4)
{
if(PlayerInfo[ChosenPlayer[playerid]][pFishLic] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У данного игрока уже есть эта лицензия!");
format(uni_str100, sizeof(uni_str100), "Вы выдали лицензию на рыбу %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
PlayerInfo[ChosenPlayer[playerid]][pFishLic] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам лицензию на рыболовлю");
}
else if(listitem == 5)
{
if(PlayerInfo[ChosenPlayer[playerid]][pBoatLic] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У данного игрока уже есть эта лицензия!");
format(uni_str100, sizeof(uni_str100), "Вы выдали лицензию на лодки %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
PlayerInfo[ChosenPlayer[playerid]][pBoatLic] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам лицензию на лодки");
return 1;
}
else if(listitem == 6)
{
if(PlayerInfo[ChosenPlayer[playerid]][pFlyLic] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У данного игрока уже есть эта лицензия!");
format(uni_str100, sizeof(uni_str100), "Вы выдали права на воздух %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
PlayerInfo[ChosenPlayer[playerid]][pFlyLic] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам права на воздушный транспорт");
return 1;
}
else if(listitem == 7)
{
if(PlayerInfo[ChosenPlayer[playerid]][pGunLic] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У данного игрока уже есть эта лицензия!");
format(uni_str100, sizeof(uni_str100), "Вы выдали лицензию на оружие %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
PlayerInfo[ChosenPlayer[playerid]][pGunLic] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам лицензию на оружие");
return 1;
}
else if(listitem == 8)
{
if(PlayerInfo[ChosenPlayer[playerid]][pBizLic] == 1) return SendClientMessage(playerid, COLOR_GRAD1, "У данного игрока уже есть эта лицензия!");
format(uni_str100, sizeof(uni_str100), "Вы выдали лицензию на бизнес %s.",ClickedPlayerName);
SendClientMessage(playerid, 0x6495EDFF, uni_str100);
PlayerInfo[ChosenPlayer[playerid]][pBizLic] = 1;
SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам лицензию на бизнес");
return 1;
}
}
else { return 1; }
}
Создадим еще 1 диалог для подтверждения покупки вод. прав.
PHP:
case 26360:
{
if(response)
{
if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 1 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 2) { if(PlayerInfo[ChosenPlayer[playerid]][pCash] < 500) return SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "У вас недостаточно денег"); PlayerInfo[ChosenPlayer[playerid]][pCash] -= 500; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 3 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 5) { if(PlayerInfo[ChosenPlayer[playerid]][pCash] < 5000) return SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "У вас недостаточно денег"); PlayerInfo[ChosenPlayer[playerid]][pCash] -= 5000; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] >= 6 && PlayerInfo[ChosenPlayer[playerid]][pLevel] <= 15) { if(PlayerInfo[ChosenPlayer[playerid]][pCash] < 10000) return SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "У вас недостаточно денег"); PlayerInfo[ChosenPlayer[playerid]][pCash] -= 10000; }
else if(PlayerInfo[ChosenPlayer[playerid]][pLevel] > 15) { if(PlayerInfo[ChosenPlayer[playerid]][pCash] < 30000) return SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "У вас недостаточно денег"); PlayerInfo[ChosenPlayer[playerid]][pCash] -= 30000; }
return PlayerInfo[ChosenPlayer[playerid]][pVodPrava] = 1, SendClientMessage(ChosenPlayer[playerid], 0x6495EDFF, "Инструктор выдал вам водительские права");
}
else
{
new message[70];//63 хватит, округлим :3
new nickname[MAX_PLAYER_NAME];
GetPlayerName(ChosenPlayer[playerid],nickname,sizeof(nickname));
format(message, sizeof(message), "%s отказался от покупки лицензии", nickname);
SendClientMessage(playerid, 0xB4B5B7FF, message);
}
return true;
}
На этом все =)
Обязательно обновлю тему
Последнее редактирование:
