Доступ к готовым решениям

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Игра казино 'Zeppelin'

faraday.

Эксперт
Регистрация
15 Окт 2015
Сообщения
1,667
Лучшие ответы
77
Репутация
1,008
Награды
1
Суть игры:

- Игрок делает ставку >> запускает игру >> Коэффициент растет >> успел забрать вовремя - WIN
>>Захотел больше кэф, а он сгорел - FAIL

Техническая часть:

Коэффициент растет 1 раз в 50ms, если он меньше 5.0, то прибавляем 0.01
если выше, то прибавляем 0.1

На каждую итерацию шанс проигрыша 1 к 99, но как показано на видео фейлы случаются и на 3.0 и на 1.1, на тестах доходил до 8.0.



C++:
#define DIALOG_BET_ZEPPELIN 1340

new PlayerText:gameTextDraw_player[MAX_PLAYERS][2];
new Text:gameTextDraw_all[6];

new Float: score_game_zeppelin[MAX_PLAYERS] = {1.0, ...};
new Float: bet_zeppelin[MAX_PLAYERS],
    Float: bet_static_win[MAX_PLAYERS];

new bool:start_game[MAX_PLAYERS];
new player_timer[MAX_PLAYERS];





public OnGameModeInit()
{
    createTextDrawToAll();
    return 1;
}
public OnPlayerConnect(playerid)
{
    createTextDrawToPlayer(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_BET_ZEPPELIN) {

        /*if (playerInfo[playerid][money] < bet_zeppelin[playerid])
                                return SendClientMessage(playerid, -1, "У вас нет столько денег");*/
        bet_zeppelin[playerid] = strval(inputtext)*1.0;
        /*playerInfo[playerid][money] -= bet_zeppelin[playerid]*/
        score_game_zeppelin[playerid] = 1.0;
        new string_game_zeppelin[35]; //для большей суммы
        format(string_game_zeppelin, sizeof string_game_zeppelin, "%.2f~n~~b~%.0f$", score_game_zeppelin[playerid], bet_zeppelin[playerid]);
        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][0], string_game_zeppelin);
    }
    return 1;
}


CMD:casino(playerid) {
    SetPVarInt(playerid, #game, 1);
    showBoxZeppelin(playerid, 1);
}


forward timerGameZeppelin(playerid);
public timerGameZeppelin(playerid)
{

    if (random(100) != 5) { // если выпадет '5' - игра проиграна

        if ( score_game_zeppelin[playerid] <= 5.0 ) score_game_zeppelin[playerid] += 0.01;//если кэф ниже 5 то прибавляем по 1/100 раз в 50 мс
        else score_game_zeppelin[playerid] += 0.10; //в ином случае по 1/10 в 50мс

        bet_static_win[playerid] = score_game_zeppelin[playerid]*bet_zeppelin[playerid];

        new string_game_zeppelin[35];
        format(string_game_zeppelin, sizeof string_game_zeppelin, "%.2f~n~~b~%.0f$", score_game_zeppelin[playerid], bet_static_win[playerid]);
        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][0], string_game_zeppelin);

        player_timer[playerid] = SetTimerEx("timerGameZeppelin", 5_0, false, "i", playerid);//50ms
    }
    else {
        bet_zeppelin[playerid] = 0.0;
        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][0], "~r~FAIL");
        setGame(playerid, 1);
    }
  
}
stock gameZeppelinStart(playerid)
{

    score_game_zeppelin[playerid] = 1.0;
    player_timer[playerid] = SetTimerEx("timerGameZeppelin", 5_0, false, "i", playerid);//50ms

    return 1;
}

stock showBoxZeppelin(playerid, int) {

    if ( int ) {
        for(new i; i<6; i++) {
            TextDrawShowForPlayer(playerid,gameTextDraw_all[i]);
        }
        PlayerTextDrawShow(playerid, gameTextDraw_player[playerid][0]);
        PlayerTextDrawShow(playerid, gameTextDraw_player[playerid][1]);
        SelectTextDraw ( playerid, 0xFFFFFF80 ) ;
    }
    else {
        for(new i; i<6; i++) {
            TextDrawHideForPlayer(playerid,gameTextDraw_all[i]);
        }
              
            //скрываем тд
      
        PlayerTextDrawHide(playerid,gameTextDraw_player[playerid][0]);
        PlayerTextDrawHide(playerid,gameTextDraw_player[playerid][1]);

        CancelSelectTextDraw(playerid);
        //
        start_game[playerid] = false;//статус игры
        KillTimer(player_timer[playerid]);//убираем таймер
        bet_zeppelin[playerid] = 0;

        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][1], "BET________START");
        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][0], "1.00");
    }
}

stock setGame(playerid, status) { // запуск / остановка игры

    if ( !status ) {

        if (bet_zeppelin[playerid] <= 0) return SendClientMessage(playerid, -1, "Сделайте ставку, прежде чем начать игру!");

        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][1], "BET_________STOP");

        start_game[playerid] = true;

        gameZeppelinStart(playerid);//запускаем игру

    } else {

        if(bet_zeppelin[playerid])    {//проверяем сдлали ставку

            new string_game_zeppelin[35];
      
            format(string_game_zeppelin, sizeof string_game_zeppelin, "~g~WIN!!!~n~%d$", floatround(bet_static_win[playerid]));
            PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][0], string_game_zeppelin);

            GivePlayerMoney(playerid, floatround(bet_static_win[playerid]));//Изменить на свою выдачу денег
            /*playerInfo[playerid][money] += floatround(bet_static_win[playerid]);*/

            bet_static_win[playerid] = 0.0;
            bet_zeppelin[playerid] = 0.0;
        }

        PlayerTextDrawSetString(playerid, gameTextDraw_player[playerid][1], "BET________START");

        start_game[playerid] = false;//статус игры
      
        KillTimer(player_timer[playerid]);//убираем таймер
    }
    return 1;
}


public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
    if (clickedid == gameTextDraw_all[3]) {
        if(start_game[playerid]) return 1; //запрещаем нажимать 'BET'
        ShowPlayerDialog(playerid, DIALOG_BET_ZEPPELIN, DIALOG_STYLE_INPUT, "Сделайте вашу ставку", " ", "Принять", "Закрыть");
    }
    if (clickedid == gameTextDraw_all[4]) {
        setGame(playerid, start_game[playerid]);
    }
    if(GetPVarInt(playerid, #game)) {

        if(clickedid == Text:INVALID_TEXT_DRAW) {
            showBoxZeppelin(playerid, 0);
            DeletePVar(playerid, #game);
        }
        return 1;
    }
                  
    return 1;
}

createTextDrawToPlayer(playerid)
{
    gameTextDraw_player[playerid][0] = CreatePlayerTextDraw(playerid, 291.2500, 201.9259, "1.00"); //кэф
    PlayerTextDrawLetterSize(playerid, gameTextDraw_player[playerid][0], 0.3908, 3.0577);
    PlayerTextDrawTextSize(playerid, gameTextDraw_player[playerid][0], 348.0000, 0.0000);
    PlayerTextDrawAlignment(playerid, gameTextDraw_player[playerid][0], 1);
    PlayerTextDrawColor(playerid, gameTextDraw_player[playerid][0], -1);
    PlayerTextDrawBackgroundColor(playerid, gameTextDraw_player[playerid][0], 255);
    PlayerTextDrawFont(playerid, gameTextDraw_player[playerid][0], 2);
    PlayerTextDrawSetProportional(playerid, gameTextDraw_player[playerid][0], 1);
    PlayerTextDrawSetShadow(playerid, gameTextDraw_player[playerid][0], 257);


    gameTextDraw_player[playerid][1] = CreatePlayerTextDraw(playerid, 299.1665, 299.9259, "BET________START"); // название для кнопок
    PlayerTextDrawLetterSize(playerid, gameTextDraw_player[playerid][1], 0.3033, 1.3407);
    PlayerTextDrawAlignment(playerid, gameTextDraw_player[playerid][1], 1);
    PlayerTextDrawColor(playerid, gameTextDraw_player[playerid][1],  -2139062017);
    PlayerTextDrawBackgroundColor(playerid, gameTextDraw_player[playerid][1], 255);
    PlayerTextDrawFont(playerid, gameTextDraw_player[playerid][1], 1);
    PlayerTextDrawSetProportional(playerid, gameTextDraw_player[playerid][1], 1);
    PlayerTextDrawSetShadow(playerid, gameTextDraw_player[playerid][1], 0);
}


createTextDrawToAll()
{
    gameTextDraw_all[0] = TextDrawCreate(257.9165, 149.5553, "Box"); // основа
    TextDrawLetterSize(gameTextDraw_all[0], 0.0000, 19.2499);
    TextDrawTextSize(gameTextDraw_all[0], 380.0000, 0.0000);
    TextDrawAlignment(gameTextDraw_all[0], 1);
    TextDrawColor(gameTextDraw_all[0], -1);
    TextDrawUseBox(gameTextDraw_all[0], 1);
    TextDrawBoxColor(gameTextDraw_all[0], 80);
    TextDrawBackgroundColor(gameTextDraw_all[0], 1768516090);
    TextDrawFont(gameTextDraw_all[0], 1);
    TextDrawSetProportional(gameTextDraw_all[0], 1);
    TextDrawSetShadow(gameTextDraw_all[0], 0);

    gameTextDraw_all[1] = TextDrawCreate(257.9167, 158.8886, "Box"); // шапка для названия
    TextDrawLetterSize(gameTextDraw_all[1], 0.0000, 1.1666);
    TextDrawTextSize(gameTextDraw_all[1], 303.0000, 0.0000);
    TextDrawAlignment(gameTextDraw_all[1], 1);
    TextDrawColor(gameTextDraw_all[1], -1);
    TextDrawUseBox(gameTextDraw_all[1], 1);
    TextDrawBoxColor(gameTextDraw_all[1], 96);
    TextDrawBackgroundColor(gameTextDraw_all[1], 255);
    TextDrawFont(gameTextDraw_all[1], 1);
    TextDrawSetProportional(gameTextDraw_all[1], 1);
    TextDrawSetShadow(gameTextDraw_all[1], 0);

    gameTextDraw_all[2] = TextDrawCreate(260.4165, 158.3701, "ZEPPELIN"); // название
    TextDrawLetterSize(gameTextDraw_all[2], 0.2865, 1.1124);
    TextDrawTextSize(gameTextDraw_all[2], -4.0000, 0.0000);
    TextDrawAlignment(gameTextDraw_all[2], 1);
    TextDrawColor(gameTextDraw_all[2], -1);
    TextDrawBackgroundColor(gameTextDraw_all[2], 255);
    TextDrawFont(gameTextDraw_all[2], 1);
    TextDrawSetProportional(gameTextDraw_all[2], 1);
    TextDrawSetShadow(gameTextDraw_all[2], 0);

    gameTextDraw_all[3] = TextDrawCreate(285.4162, 293.9630, "LD_SPAC:white"); // бокс для кнопки start/stop
    TextDrawTextSize(gameTextDraw_all[3], 44.0000, 24.0000);
    TextDrawAlignment(gameTextDraw_all[3], 1);
    TextDrawColor(gameTextDraw_all[3], -1378294017);
    TextDrawBackgroundColor(gameTextDraw_all[4], 255);
    TextDrawFont(gameTextDraw_all[3], 4);
    TextDrawSetProportional(gameTextDraw_all[4], 0);
    TextDrawSetShadow(gameTextDraw_all[3], 0);
    TextDrawSetSelectable(gameTextDraw_all[3], true);

    gameTextDraw_all[4] = TextDrawCreate(331.6663, 293.9630, "LD_SPAC:white"); // бокс для bet
    TextDrawTextSize(gameTextDraw_all[4], 44.0000, 24.0000);
    TextDrawAlignment(gameTextDraw_all[4], 1);
    TextDrawColor(gameTextDraw_all[4], -5963521);
    TextDrawBackgroundColor(gameTextDraw_all[4], 255);
    TextDrawFont(gameTextDraw_all[4], 4);
    TextDrawSetProportional(gameTextDraw_all[4], 0);
    TextDrawSetShadow(gameTextDraw_all[4], 0);
    TextDrawSetSelectable(gameTextDraw_all[4], true);

    gameTextDraw_all[5] = TextDrawCreate(257.9165, 184.8147, "Box"); // белый фонт для надписи с кэфом
    TextDrawLetterSize(gameTextDraw_all[5], 0.0000, 8.0416);
    TextDrawTextSize(gameTextDraw_all[5], 380.0000, 0.0000);
    TextDrawAlignment(gameTextDraw_all[5], 1);
    TextDrawColor(gameTextDraw_all[5], -1);
    TextDrawUseBox(gameTextDraw_all[5], 1);
    TextDrawBoxColor(gameTextDraw_all[5], -1431655872);
    TextDrawBackgroundColor(gameTextDraw_all[5], 255);
    TextDrawFont(gameTextDraw_all[5], 1);
    TextDrawSetProportional(gameTextDraw_all[5], 1);
    TextDrawSetShadow(gameTextDraw_all[5], 0);
}



FS:
 
Сверху Снизу