- Регистрация
- 16 Сен 2017
- Сообщения
- 1,327
- Лучшие ответы
- 0
- Репутация
- 241
Привет!
Ловите довольно годную рулетку (copy Arizona RP).
Сразу хочу сказать, что TD: по цвету и пр., делалось не как на Arizona RP, ибо, как по мне, там не самый лучший ТД ...
Вообщем, приступим:
P/S: Командный процессор Pawn.CMD (кому надо изменят на свой).
В начало мода:
В OnPlayerConnect (OnPlayerDisconnect)
В конец мода:
В OnPlayerClickTextDraw:
В конец мода:
В OnDialogResponse:
Вот и все!
Для тех кто не знает, объясню суть рулетки: Есть 3 типа рулетки (Bronze, Silver, Gold), я сделал только 1 (Bronze), Вы же можете добавить Silver и Gold, и изменить Bronze. Вы можете изменить призы нажав на 0, за 0 рублей (проверку на рубли поставите сами). После того, как Вы нажмете "Roll", то пойдет крутиться рулетка, и где остановиться рулетка - там и будет Ваш приз.
Ловите довольно годную рулетку (copy Arizona RP).
Сразу хочу сказать, что TD: по цвету и пр., делалось не как на Arizona RP, ибо, как по мне, там не самый лучший ТД ...
Вообщем, приступим:
P/S: Командный процессор Pawn.CMD (кому надо изменят на свой).
В начало мода:
PHP:
new
Text:roulette_TD[13],
PlayerText:roulette_PTD[MAX_PLAYERS][21];
Roll_Cell[MAX_PLAYERS][10], // Ячейки
bool: Roll_Status[MAX_PLAYERS][2], // 0 - Рулетка открыта на экране, 1 - Рулетка запущена
bool: Roll_Roulette[MAX_PLAYERS][3], // 0 - bronze, 1 - silver, 2 - gold
Roll_Count[MAX_PLAYERS], // Выбирает приз (Зеленым цветом)
Roll_Timer[MAX_PLAYERS],
Roll_Time[MAX_PLAYERS], // Отсчет
Roll_Random[MAX_PLAYERS];
#define CHANGE_CEIL_DIALOG 999
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
В OnPlayerConnect (OnPlayerDisconnect)
PHP:
KillTimer(Roll_Timer[playerid]);
for(new i; i < 10; i ++)
{
if(i < 3)
{
if(i < 2) Roll_Status[playerid][i] = false;
if(i < 3) Roll_Roulette[playerid][i] = false;
}
Roll_Cell[playerid][i] = 0;
}
PHP:
cmd:roulette(playerid)
{
if(Roll_Status[playerid][1])return true;
if(!Roll_Status[playerid][0])
{
for(new i; i < 12; i ++)
{
if(i < 10) PlayerTextDrawShow(playerid, roulette_PTD[playerid][i]);
TextDrawShowForPlayer(playerid, roulette_TD[i]);
}
Roll_Status[playerid][0] = true;
SelectTextDraw(playerid, 0xFF00FFAA);
if(Roll_Cell[playerid][0] > 0)
{
for(new i; i < 10; i ++)
{
PlayerTextDrawSetPreviewModel(playerid, roulette_PTD[playerid][10+i], Roll_Cell[playerid][i]);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][10+i]);
}
}
}
else
{
for(new i; i < 21; i ++)
{
if(i < 13) TextDrawHideForPlayer(playerid, roulette_TD[i]);
PlayerTextDrawHide(playerid, roulette_PTD[playerid][i]);
}
Roll_Status[playerid][0] = false;
CancelSelectTextDraw(playerid);
}
return true;
}
PHP:
if(_:clickedid == INVALID_TEXT_DRAW)
{
if(Roll_Status[playerid][0])
{
if(Roll_Status[playerid][1])return SelectTextDraw(playerid, 0xFF00FFAA);
callcmd::roulette(playerid);
}
}
if(clickedid == roulette_TD[2])
{
if(Roll_Status[playerid][1])return true;
if(!Roll_Roulette[playerid][0])
{
for(new i; i < 10; i ++)
{
switch(random(3))
{
case 0: Roll_Cell[playerid][i] = 1550;
case 1: Roll_Cell[playerid][i] = 1277;
case 2: Roll_Cell[playerid][i] = 1 + random(311);
}
}
Roll_Roulette[playerid][0] = true;
}
for(new i; i < 10; i ++)
{
PlayerTextDrawSetPreviewModel(playerid, roulette_PTD[playerid][10+i], Roll_Cell[playerid][i]);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][10+i]);
}
}
/*if(clickedid == roulette_TD[3])
{
// silver roll
}
if(clickedid == roulette_TD[4])
{
// gold roll
}*/
if(clickedid == roulette_TD[5])
{
if(Roll_Status[playerid][1])return SendClientMessage(playerid, -1, "Вы уже запустили рулетку!");
if(!Roll_Cell[playerid][0])return SendClientMessage(playerid, -1, "Для начала выберите тип рулетки!");
Roll_Random[playerid] = 10 + random(15);
Roll_Count[playerid] =
Roll_Time[playerid] = 0;
Roll_Timer[playerid] = SetTimerEx("Update_Roulette", 500, true, "ii", playerid, 1);
Roll_Status[playerid][1] = true;
}
if(clickedid == roulette_TD[6])
{
if(!Roll_Cell[playerid][0] || Roll_Status[playerid][1])return true;
ShowPlayerDialog(playerid, CHANGE_CEIL_DIALOG, 0, "", "Вы действительно хотите изменить призы за {00ff00}0 {ffffff}рублей?", "Да", "Отмена");
}
PHP:
Update_Roulette(playerid, type);
Update_Roulette(playerid, type)
{
if(Roll_Count[playerid] > 9) Roll_Count[playerid] = 0;
PlayerTextDrawColor(playerid, roulette_PTD[playerid][Roll_Count[playerid]], 1974075647);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][Roll_Count[playerid]]);
SetTimerEx("Change_Background", 500*type, false, "ii", playerid, Roll_Count[playerid]);
Roll_Count[playerid]++;
if(++ Roll_Time[playerid] > Roll_Random[playerid])
{
KillTimer(Roll_Timer[playerid]);
if(type)
{
Roll_Random[playerid] = 5 + random(15);
Roll_Timer[playerid] = SetTimerEx("Update_Roulette", 1000, true, "ii", playerid, 2);
return true;
}
new
prize,
string[26 + 5];
switch(Roll_Cell[playerid][Roll_Count[playerid]-1])
{
case 1550:
{
prize = 1+random(10000);
GivePlayerMoney(playerid, prize); // GivePlayerMoney - измените на свою функцию выдачи денег
format(string, sizeof(string), "Вы успешно получили %d$", prize);
}
case 1277:
{
prize = 1+random(8);
Exp += prize; // Exp - измените на свою переменную EXP для игрока
format(string, sizeof(string), "Вы успешно получили %d exp", prize);
}
default:
{
SetPlayerSkin(playerid, Roll_Cell[playerid][Roll_Count[playerid]-1]);
string = "Вы успешно получили скин!";
}
}
SendClientMessage(playerid, -1, string);
Roll_Status[playerid][1] = false;
TextDrawShowForPlayer(playerid, roulette_TD[12]);
PlayerTextDrawSetPreviewModel(playerid, roulette_PTD[playerid][20], Roll_Cell[playerid][Roll_Count[playerid]-1]);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][20]);
SetTimerEx("Hide_Win_Roulette", 5000, false, "i", playerid);
}
return true;
}
Hide_Win_Roulette(playerid);
Hide_Win_Roulette(playerid)
{
PlayerTextDrawHide(playerid, roulette_PTD[playerid][20]);
TextDrawHideForPlayer(playerid, roulette_TD[12]);
}
Change_Background(playerid, roll);
Change_Background(playerid, roll)
{
PlayerTextDrawColor(playerid, roulette_PTD[playerid][roll], -1448476417);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][roll]);
}
PHP:
case CHANGE_CEIL_DIALOG:
{
if(!response)return true;
/*if(/*переменная доната < 0)return SendClientMessage(playerid, -1, "У Вас не достаточно доната!"); Проверка на донат*/
SendClientMessage(playerid, -1, "Вы успешно сменили призы!");
if(Roll_Roulette[playerid][0])
{
for(new i; i < 10; i ++)
{
switch(random(3))
{
case 0: Roll_Cell[playerid][i] = 1550;
case 1: Roll_Cell[playerid][i] = 1277;
case 2: Roll_Cell[playerid][i] = 1 + random(311);
}
PlayerTextDrawSetPreviewModel(playerid, roulette_PTD[playerid][10+i], Roll_Cell[playerid][i]);
PlayerTextDrawShow(playerid, roulette_PTD[playerid][10+i]);
}
}
/*else if(Roll_Roulette[playerid][1])
{
// silver roll
}
else if(Roll_Roulette[playerid][2])
{
// gold roll
}*/
}
Для тех кто не знает, объясню суть рулетки: Есть 3 типа рулетки (Bronze, Silver, Gold), я сделал только 1 (Bronze), Вы же можете добавить Silver и Gold, и изменить Bronze. Вы можете изменить призы нажав на 0, за 0 рублей (проверку на рубли поставите сами). После того, как Вы нажмете "Roll", то пойдет крутиться рулетка, и где остановиться рулетка - там и будет Ваш приз.
Последнее редактирование: