Добро пожаловать на BlackSAMP - ФОРУМ

  • Приватные и секретные разделы доступны только зарегистрированным пользователям.

    Вся важная информация в нашем ТГ: t.me/gtablack

    На данном форуме запрещено публиковать контент нарушающий Российское законодательство, за это последует блокировка ФА.

система казика

jameshack

𝐂𝐇𝐀𝐍𝐄𝐋 𝟏
Пользователь
Регистрация
17 Авг 2024
Сообщения
51
Решения
1
Реакции
10
Баллы
28
Система больше меньше

постарался все прокомментировать

#include <a_samp>
#include <zcmd>

#define DICE_OBJECT_POS_X 10.0 // коорд объекта X
#define DICE_OBJECT_POS_Y 1000.0 // коорд объекта Y
#define DICE_OBJECT_POS_Z -2824.0 // коорд объекта Z
#define MAX_DICE_DISTANCE 2.0 // максимальная дистанция от игрового автомата

new PlayerDiceBet[MAX_PLAYERS];
new PlayerDiceChoice[MAX_PLAYERS];
new PlayerDiceTimer[MAX_PLAYERS];
new PlayerDiceCountdown[MAX_PLAYERS];
new Text:PlayerDiceTD[MAX_PLAYERS];

public OnGameModeInit()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
PlayerDiceTD = TextDrawCreate(320.0, 200.0, "_");
TextDrawFont(PlayerDiceTD, 2);
TextDrawLetterSize(PlayerDiceTD, 0.6, 2.0);
TextDrawColor(PlayerDiceTD, 0xFFFF00AA);
TextDrawSetOutline(PlayerDiceTD, 1);
TextDrawSetShadow(PlayerDiceTD, 0);
TextDrawAlignment(PlayerDiceTD, 2);
TextDrawHideForAll(PlayerDiceTD);
}
return 1;
}

CMD:dice(playerid, params[])
{
if(!IsPlayerNearDiceObject(playerid))
{
SendClientMessage(playerid, 0xFF0000AA, "Вы должны находиться у стойки казино, чтобы играть в кости!");
return 1;
}

ShowPlayerDiceDialog(playerid);
return 1;
}

bool:IsPlayerNearDiceObject(playerid)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);

if(GetPlayerVirtualWorld(playerid) == 0 && GetPlayerInterior(playerid) == 0)
{
if(VectorSize(x - DICE_OBJECT_POS_X, y - DICE_OBJECT_POS_Y, z - DICE_OBJECT_POS_Z) < MAX_DICE_DISTANCE)
{
return true;
}
}
return false;
}

ShowPlayerDiceDialog(playerid)
{
new dialog[256];
format(dialog, sizeof(dialog),
"Игра в кости\n\nВаш баланс: $%d\n\nВыберите 'Больше' если думаете что выпадет 4-6\nВыберите 'Меньше' если думаете что выпадет 1-3",
GetPlayerMoney(playerid));

ShowPlayerDialog(playerid, 1500, DIALOG_STYLE_MSGBOX, "Казино: Игра в кости", dialog, "Больше", "Меньше");
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1500)
{
if(!IsPlayerNearDiceObject(playerid))
{
SendClientMessage(playerid, 0xFF0000AA, "Вы отошли от стойки казино!");
return 1;
}

PlayerDiceChoice[playerid] = response;
ShowPlayerDialog(playerid, 1501, DIALOG_STYLE_INPUT, "Казино: Ставка", "Введите сумму ставки:", "Поставить", "Отмена");
return 1;
}
else if(dialogid == 1501)
{
if(!IsPlayerNearDiceObject(playerid))
{
SendClientMessage(playerid, 0xFF0000AA, "Вы отошли от стойки казино!");
return 1;
}

if(!response) return 1;

new bet = strval(inputtext);

if(bet < 2000)
{
SendClientMessage(playerid, 0xFF0000AA, "Ставка должна быть больше 2000₽!");
ShowPlayerDiceDialog(playerid);
return 1;
}

if(GetPlayerMoney(playerid) < bet)
{
SendClientMessage(playerid, 0xFF0000AA, "У вас недостаточно денег для такой ставки!");
ShowPlayerDiceDialog(playerid);
return 1;
}

PlayerDiceBet[playerid] = bet;
GivePlayerMoney(playerid, -bet);

PlayerDiceCountdown[playerid] = 3;
TextDrawSetString(PlayerDiceTD[playerid], "3");
TextDrawShowForPlayer(playerid, PlayerDiceTD[playerid]);

PlayerDiceTimer[playerid] = SetTimerEx("DiceCountdown", 1000, true, "i", playerid);
return 1;
}
return 0;
}

forward DiceCountdown(playerid);
public DiceCountdown(playerid)
{
PlayerDiceCountdown[playerid]--;

if(PlayerDiceCountdown[playerid] > 0)
{
new count_str[2];
format(count_str, sizeof(count_str), "%d", PlayerDiceCountdown[playerid]);
TextDrawSetString(PlayerDiceTD[playerid], count_str);
}
else
{
KillTimer(PlayerDiceTimer[playerid]);

new dice = random(6) + 1;
new win = 0;

if((dice >= 4 && PlayerDiceChoice[playerid] == 1) ||
(dice <= 3 && PlayerDiceChoice[playerid] == 0))
{
win = PlayerDiceBet[playerid] * 2;
GivePlayerMoney(playerid, win);
}

new result[128];
format(result, sizeof(result), "~y~Результат: ~w~%d~n~~r~%s ~g~$%d",
dice,
(win > 0) ? "ВЫИГРЫШ" : "ПРОИГРЫШ",
(win > 0) ? win : PlayerDiceBet[playerid]);

TextDrawSetString(PlayerDiceTD[playerid], result);
TextDrawShowForPlayer(playerid, PlayerDiceTD[playerid]);

SetTimerEx("HideDiceResult", 3000, false, "i", playerid);
}
}

forward HideDiceResult(playerid);
public HideDiceResult(playerid)
{
TextDrawHideForPlayer(playerid, PlayerDiceTD[playerid]);
}

stock Float:VectorSize(Float:x, Float:y, Float:z)
{
return floatsqroot(x*x + y*y + z*z);
}
 
Последнее редактирование:

DarkPhantom

Активный
Администратор
Регистрация
18 Авг 2024
Сообщения
103
Решения
2
Реакции
28
Баллы
28


Ну мог бы тег "код" использовать )

offtop
 
Сверху Снизу