shape1
shape2
shape3
shape4
shape7
shape8

Система Baccarat


Fantomxx

Освоившийся
Пользователь
25.11.2021
97
29
0
Игра Dragon vs Tiger ( Baccarat )
Смысл всего лишь в том что выигрывает тот - у кого больше карта.

  • В строке last win показывает последние 14 выигрышей стола ( красный - дракон, желтый - тигр, зеленый - ничья )
  • Кнопка repeat повторяет предыдущую ставку. Ставку прошлой игры
  • Кнопка x2 удваивает текущую ставку
  • Кнопка Cancel убирает все ставки
  • Кнопка Exit выходит из-за стола
  • Колонка Total wins показывает сколько всего раз был исход за колоду.
  • По нажатию на красный/зеленый/оранжевый квадраты делается ставка ( или прибавляется к текущей ) равная минимальной ставке стола
  • Все действия игрока сопровождаются звуками и интуитивно понятны
  • Всего есть 4 стола, они все автономны, минимальные и максимальные ставки меняются в коде в одном месте
1. Включаем файл в моде (Файл прикреплен ) *жмяк*
Код:
#include "dragontiger.inc"

2. В OnPlayerConnect вставляем (это у нас будет создание текстдравов ForPlayer):

Код:
dragodTiger_init_player_text(playerid);

3. В OnPlayerDisconnect ( это удаление при дисконекте ):

Код:
dragodTiger_exit_player_text(playerid);

4. В OnPlayerLeaveDynamicArea:

Код:
if(areaid >= casino_dragon_tiger_stol[0] && areaid <= casino_dragon_tiger_stol[3])
    {
        DeletePVar(playerid, "stol_dragon_prenumb");
    }

5. В OnPlayerEnterDynamicArea:

Код:
if(areaid >= casino_dragon_tiger_stol[0] && areaid <= casino_dragon_tiger_stol[3])
    {
      
        SetPVarInt(playerid, "stol_dragon_prenumb", (casino_dragon_tiger_stol[3] - areaid)+1);
        PlayerPlaySound(playerid, 5400, 0.0,0.0,0.0);
        GameTextForPlayer(playerid,"~g~PRESS ENTER",1300,4);
        return 1;
    }
 
  • Like
Реакции: Jaliba_Baron

Fantomxx

Освоившийся
Пользователь
25.11.2021
97
29
0
Продолжаю описывать урок. (Сразу все не влезло)

6. В ежесекундный таймер:

Код:
for(new dr; dr<max_stol_dragontiger; dr++)
    {
      
      
        dragon_stol[dr][dTime] --;
      
        new str_t_drag[52];

        if(dragon_stol[dr][dTime] >= 0)
        {
            format(str_t_drag, sizeof(str_t_drag), "Time left: %d sec", dragon_stol[dr][dTime]);
            TextDrawSetString(time_left_table[dr], str_t_drag);
        }

        if(dragon_stol[dr][dTime] == 2)
        { // закрываем ставки
            foreach(new d: Player)
            {
                if(get_stol_dragontiger(d) != dr)continue;
                PlayerPlaySound(d, 5408, 0.0,0.0,0.0);
            }
        }

        if(dragon_stol[dr][dTime] == 0) // первая карта
        {
            dragon_stol[dr][dDragon_card] = 1+random(12);

            format(str_t_drag, sizeof(str_t_drag), "LD_CARD:cd%d%s", dragon_stol[dr][dDragon_card], random_cards_casino[random(3)]);

            TextDrawSetString(card_dragon[dr], str_t_drag);

            foreach(new d: Player)
            {
                if(get_stol_dragontiger(d) != dr)continue;
                TextDrawShowForPlayer(d, card_dragon[dr]);
            }
        }

        if(dragon_stol[dr][dTime] == -3) // вторая карта
        {
            dragon_stol[dr][dTiger_card] = 1+random(12);

            format(str_t_drag, sizeof(str_t_drag), "LD_CARD:cd%d%s", dragon_stol[dr][dTiger_card], random_cards_casino[random(3)]);

            TextDrawSetString(card_tiger[dr], str_t_drag);

            foreach(new d: Player)
            {
                if(get_stol_dragontiger(d) != dr)continue;
                TextDrawShowForPlayer(d, card_tiger[dr]);
            }
          
        }

        if(dragon_stol[dr][dTime] == -5) // результаты
        {
            if(dragon_stol[dr][dDragon_card] > dragon_stol[dr][dTiger_card])
            {// дракон выиграл
                printf("dragon win");
                dragon_stol[dr][dDragon_win] ++;
                set_last_wins_dragontiger(dr,dragon_bet_dragon);

                foreach(new d: Player)
                {
                    if(get_stol_dragontiger(d) != dr)continue;
                    GameTextForPlayer(d,"~r~Dragon Win",2000,6);

                    if(GetPVarInt(d, "dragon_bet") == dragon_bet_dragon)
                    {
                      
                        GiveMoney(d, GetPVarInt(d, "dragon_bet_money")*2);
                        PlayerPlaySound(d, 5448, 0.0,0.0,0.0);

                        format(str_t_drag, sizeof(str_t_drag), "last win: %d $", GetPVarInt(d, "dragon_bet_money")*2);
                      
                    }
                    else
                    {
                        format(str_t_drag, sizeof(str_t_drag), "last win: 0 $");
                    }
                    PlayerTextDrawSetString(d,drag_last_win[d], str_t_drag);

                    format(str_t_drag, sizeof(str_t_drag), "money: %d $", pData[d][pCash]);
                    PlayerTextDrawSetString(d,balans_label_drag[d], str_t_drag);

                    end_dragon_game_for_player(d, dr);

                }
            }
            else if(dragon_stol[dr][dDragon_card] < dragon_stol[dr][dTiger_card])
            {// тигр выиграл
                //fTextDrawBoxColor(dragon_box, 0x5b0909DD);
                dragon_stol[dr][dTiger_win] ++;
                set_last_wins_dragontiger(dr,dragon_bet_tiger);

                foreach(new d: Player)
                {
                    if(get_stol_dragontiger(d) != dr)continue;
                    GameTextForPlayer(d,"~Y~Tiger Win",2000,6);

                    if(GetPVarInt(d, "dragon_bet") == dragon_bet_tiger)
                    {
                      
                        GiveMoney(d, GetPVarInt(d, "dragon_bet_money")*2);
                        PlayerPlaySound(d, 5448, 0.0,0.0,0.0);

                        format(str_t_drag, sizeof(str_t_drag), "last win: %d $", GetPVarInt(d, "dragon_bet_money")*2);
                      
                    }
                    else
                    {
                        format(str_t_drag, sizeof(str_t_drag), "last win: 0 $");
                    }
                    PlayerTextDrawSetString(d,drag_last_win[d], str_t_drag);

                    format(str_t_drag, sizeof(str_t_drag), "money: %d $", pData[d][pCash]);
                    PlayerTextDrawSetString(d,balans_label_drag[d], str_t_drag);

                    end_dragon_game_for_player(d, dr);
                }
            }
            else
            {//ничья
                dragon_stol[dr][dTie_win] ++;
                set_last_wins_dragontiger(dr,dragon_bet_tie);

                foreach(new d: Player)
                {
                    if(get_stol_dragontiger(d) != dr)continue;
                    GameTextForPlayer(d,"~g~TIE",2000,6);

                    if(GetPVarInt(d, "dragon_bet") == dragon_bet_tie)
                    {
                      
                        GiveMoney(d, GetPVarInt(d, "dragon_bet_money")*11);
                        PlayerPlaySound(d, 5448, 0.0,0.0,0.0);

                        format(str_t_drag, sizeof(str_t_drag), "last win: %d $", GetPVarInt(d, "dragon_bet_money")*11);
                      
                    }
                    else
                    {
                        format(str_t_drag, sizeof(str_t_drag), "last win: 0 $");
                    }
                    PlayerTextDrawSetString(d,drag_last_win[d], str_t_drag);

                    end_dragon_game_for_player(d, dr);
                }
            }
            dragon_stol[dr][dTime] = 13;

            format(str_t_drag, sizeof(str_t_drag), "~r~D~w~%d~y~ T~w~%d~g~ T~w~%d", dragon_stol[dr][dDragon_win],dragon_stol[dr][dTiger_win]
,dragon_stol[dr][dTie_win]);
            TextDrawSetString(total_win_text[dr], str_t_drag);

            format_last_wins(dr);

        }
    }

7. В OnGameModeExit:

Код:
dragodTiger_exit_global_text();

8. В OnGameModeInit:

Код:
dragodTiger_init_global_text(); // 4 дракона игра Дракон - тигр

9. В OnPlayerKeyStateChange:

Код:
if(!(newkeys & KEY_SECONDARY_ATTACK) && oldkeys & KEY_SECONDARY_ATTACK)
    {
      
        if(    IsPlayerInDynamicArea(playerid, casino_dragon_tiger_stol[0]) || IsPlayerInDynamicArea(playerid, casino_dragon_tiger_stol[1]) ||
               IsPlayerInDynamicArea(playerid, casino_dragon_tiger_stol[2]) || IsPlayerInDynamicArea(playerid, casino_dragon_tiger_stol[3])    )
        {
            SetPVarInt(playerid, "number_stol_dragont", GetPVarInt(playerid, "stol_dragon_prenumb"));
            dragonTiger_show_text(playerid);

            new dragon_str[32];
            format(dragon_str, sizeof(dragon_str),"money: %d $", pData[playerid][pCash]);
            PlayerTextDrawSetString(playerid, balans_label_drag[playerid],dragon_str);

        }
}
 
  • Like
Реакции: Jaliba_Baron

Fantomxx

Освоившийся
Пользователь
25.11.2021
97
29
0
Продолжение.
10. В конец мода куда-нибудь:
!! Вот здесь замените pCash на свою переменную с деньгами !!

Код:
stock end_dragon_game_for_player(playerid, dr)
{
    TextDrawHideForPlayer(playerid, card_dragon[dr]);
    TextDrawHideForPlayer(playerid, card_tiger[dr]);
    TextDrawHideForPlayer(playerid, fishka_dragon);
    TextDrawHideForPlayer(playerid, fishka_tiger);
    TextDrawHideForPlayer(playerid, fishka_tie);

    PlayerTextDrawHide(playerid, money_dragon[playerid]);
    PlayerTextDrawHide(playerid, money_tiger[playerid]);
    PlayerTextDrawHide(playerid, money_tie[playerid]);

    new str_t_drag[32];
    format(str_t_drag, sizeof(str_t_drag), "money: %d $", pData[playerid][pCash]);
    PlayerTextDrawSetString(playerid,balans_label_drag[playerid], str_t_drag);

    DeletePVar(playerid, "dragon_bet");
    DeletePVar(playerid, "dragon_bet_money");
}

11. В OnPlayerClickTextDraw:

Код:
if(clickedid == cancel_but_drag)
    {
        GiveMoney(playerid, GetPVarInt(playerid, "dragon_bet_money"));
        end_dragon_game_for_player(playerid, get_stol_dragontiger(playerid));
        return 1;
    }

    if(clickedid == drag_exit_but)
    {
        dragonTiger_hide_text(playerid);
        DeletePVar(playerid, "number_stol_dragont");
        return 1;
    }
    if(clickedid == x2_but_drag)
    {
        new stol = get_stol_dragontiger(playerid);

        if(dragon_stol[stol][dTime] < 2 )
            return SCM(playerid,COLOR_GREY," Игра уже началась!");

        if(pData[playerid][pCash] < GetPVarInt(playerid, "dragon_bet_money"))
            return SCM(playerid,COLOR_GREY," Недостаточно средств!");

        if(GetPVarInt(playerid, "dragon_bet_money")*2  > dragon_stol[stol][dMax_bet])
            return SCM(playerid,COLOR_GREY," Максимальная ставка ограничена!");

        GiveMoney(playerid, -GetPVarInt(playerid, "dragon_bet_money"));
        SetPVarInt(playerid, "dragon_bet_money", GetPVarInt(playerid, "dragon_bet_money")*2);

        new dragon_str[32];
        format(dragon_str, sizeof(dragon_str),"%d $", GetPVarInt(playerid, "dragon_bet_money"));

        if(GetPVarInt(playerid, "dragon_bet") == dragon_bet_dragon)
        {
            PlayerTextDrawSetString(playerid, money_dragon[playerid],dragon_str);
        }
        if(GetPVarInt(playerid, "dragon_bet") == dragon_bet_tiger)
        {
            PlayerTextDrawSetString(playerid, money_tiger[playerid],dragon_str);
        }
        if(GetPVarInt(playerid, "dragon_bet") == dragon_bet_tie)
        {
            PlayerTextDrawSetString(playerid, money_tie[playerid],dragon_str);
        }

        format(dragon_str, sizeof(dragon_str),"money: %d $", pData[playerid][pCash]);
        PlayerTextDrawSetString(playerid, balans_label_drag[playerid],dragon_str);

        PlayerPlaySound(playerid, 1083, 0.0,0.0,0.0);
        //dragon_game
        return 1;
    }
    if(clickedid == dragon_box)
    {
        new stol = get_stol_dragontiger(playerid);
        if(dragon_stol[stol][dTime] < 2 )
            return SCM(playerid,COLOR_GREY," Игра уже началась!");

        if(pData[playerid][pCash] < dragon_stol[stol][dMin_bet])
            return SCM(playerid,COLOR_GREY," Недостаточно средств!");

        if(GetPVarInt(playerid, "dragon_bet_money") + dragon_stol[stol][dMin_bet] > dragon_stol[stol][dMax_bet])
            return SCM(playerid,COLOR_GREY," Максимальная ставка ограничена!");

        PlayerTextDrawShow(playerid, money_dragon[playerid]);
        TextDrawShowForPlayer(playerid, fishka_dragon);

        SetPVarInt(playerid, "dragon_bet", dragon_bet_dragon);
        GiveMoney(playerid, -dragon_bet_min);
        SetPVarInt(playerid, "dragon_bet_money", GetPVarInt(playerid, "dragon_bet_money")+dragon_bet_min);

        new dragon_str[32];
        format(dragon_str, sizeof(dragon_str),"%d $", GetPVarInt(playerid, "dragon_bet_money"));
        PlayerTextDrawSetString(playerid, money_dragon[playerid],dragon_str);

        format(dragon_str, sizeof(dragon_str),"money: %d $", pData[playerid][pCash]);
        PlayerTextDrawSetString(playerid, balans_label_drag[playerid],dragon_str);

        PlayerPlaySound(playerid, 1083, 0.0,0.0,0.0);
        //dragon_game
        return 1;
    }
    if(clickedid == tiger_box)
    {
        new stol = get_stol_dragontiger(playerid);
        if(dragon_stol[stol][dTime] < 2 )
            return SCM(playerid,COLOR_GREY," Игра уже началась!");

        if(pData[playerid][pCash] < dragon_stol[stol][dMin_bet])
            return SCM(playerid,COLOR_GREY," Недостаточно средств!");

        if(GetPVarInt(playerid, "dragon_bet_money") + dragon_stol[stol][dMin_bet] > dragon_stol[stol][dMax_bet])
            return SCM(playerid,COLOR_GREY," Максимальная ставка ограничена!");

        PlayerTextDrawShow(playerid, money_tiger[playerid]);
        TextDrawShowForPlayer(playerid, fishka_tiger);

        SetPVarInt(playerid, "dragon_bet", dragon_bet_tiger);
        GiveMoney(playerid, -dragon_bet_min);
        SetPVarInt(playerid, "dragon_bet_money", GetPVarInt(playerid, "dragon_bet_money")+dragon_bet_min);

        new dragon_str[32];
        format(dragon_str, sizeof(dragon_str),"%d $", GetPVarInt(playerid, "dragon_bet_money"));
        PlayerTextDrawSetString(playerid, money_tiger[playerid],dragon_str);

        format(dragon_str, sizeof(dragon_str),"money: %d $", pData[playerid][pCash]);
        PlayerTextDrawSetString(playerid, balans_label_drag[playerid],dragon_str);

        PlayerPlaySound(playerid, 1083, 0.0,0.0,0.0);
        //dragon_game
        return 1;
    }
    if(clickedid == box_tie_dragon)
    {
        new stol = get_stol_dragontiger(playerid);
        if(dragon_stol[stol][dTime] < 2 )
            return SCM(playerid,COLOR_GREY," Игра уже началась!");

        if(pData[playerid][pCash] < dragon_stol[stol][dMin_bet])
            return SCM(playerid,COLOR_GREY," Недостаточно средств!");

        if(GetPVarInt(playerid, "dragon_bet_money") + dragon_stol[stol][dMin_bet] > dragon_stol[stol][dMax_bet])
            return SCM(playerid,COLOR_GREY," Максимальная ставка ограничена!");

        PlayerTextDrawShow(playerid, money_tie[playerid]);
        TextDrawShowForPlayer(playerid, fishka_tie);

        SetPVarInt(playerid, "dragon_bet", dragon_bet_tie);
        GiveMoney(playerid, -dragon_bet_min);
        SetPVarInt(playerid, "dragon_bet_money", GetPVarInt(playerid, "dragon_bet_money")+dragon_bet_min);

        new dragon_str[32];
        format(dragon_str, sizeof(dragon_str),"%d $", GetPVarInt(playerid, "dragon_bet_money"));
        PlayerTextDrawSetString(playerid, money_tie[playerid],dragon_str);

        format(dragon_str, sizeof(dragon_str),"money: %d $", pData[playerid][pCash]);
        PlayerTextDrawSetString(playerid, balans_label_drag[playerid],dragon_str);

        PlayerPlaySound(playerid, 1083, 0.0,0.0,0.0);
        //dragon_game
        return 1;
    }

В инклуде замените
Код:
dragon_stol[0][dMin_bet]     = 2000;
    dragon_stol[0][dMax_bet]    = 2000000;

    dragon_stol[1][dMin_bet]     = 2000;
    dragon_stol[1][dMax_bet]    = 2000000;

    dragon_stol[2][dMin_bet]     = 2000;
    dragon_stol[2][dMax_bet]    = 2000000;

    dragon_stol[3][dMin_bet]     = 2000;
    dragon_stol[3][dMax_bet]    = 2000000;

И на номер вашего виртуального мира казино 4-дракона, чтобы актеры были видны

Код:
SetActorVirtualWorld(casino_dragon_tiger_actor[0], 1);
    SetActorVirtualWorld(casino_dragon_tiger_actor[1], 1);
    SetActorVirtualWorld(casino_dragon_tiger_actor[2], 1);
    SetActorVirtualWorld(casino_dragon_tiger_actor[3], 1);

На этом все. Автор системы. plakapenka.
 
  • Like
Реакции: Jaliba_Baron и Cocolemunto