Иконка ресурса

[Shop] Betting latest

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #1
Пользователь White Wolf разместил новый ресурс:

Betting - Возможность делать ставки на кредиты

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

Узнать больше об этом ресурсе...

К сообщению прикреплена версия плагина 1.6 декомпилированная благодаря @Kailo . Данная версия исходника была в свое время потеряна.
 

Вложения

  • shop_betting_1.6_decompiled.sp
    20.8 КБ · Просмотры: 43
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
Re: [Shop] Bets

PHP:
HookEvent("round_end", Event_OnRoundEnd, EventHookMode_PostNoCopy);
..
GetEventInt(event, "winner");
Это ничего?

PHP:
if (!(2<=iWinnerTeam<=3))
А не проще ли
PHP:
if (iWinnerTeam < 2)
Ну если уж очень переживаешь то:
PHP:
if (iWinnerTeam != 2 && iWinnerTeam != 3)
Конкретное сравнение равно/не равно быстрее чем больше/меньше/равно.

Мне кажется было бы рациональнее сделать 1 цикл. Т.к. Лучше каждый раз проверять WinnerTeam > 1 чем в каждом из циклов if (IsClientInGame(i) && g_iPlayerPot)

Это уже выигрыш.

PHP:
static last_time[MAXPLAYERS+1];
    new curr_time = GetTime();
    new time = curr_time - last_time[client];
Почему бы curr_time и time так же не сделать static ?

PHP:
public Action:Command_Bet(client, args)
{
    if (client && IsClientInGame(client))
    {
        if (g_bBettingDead)
        {
            if (IsPlayerAlive(client))
            {
                ReplyToCommand(client, "[Shop|Bet] Вы должны быть мертвы чтобы делать ставки.");
                return Plugin_Handled;
            }
        }
        if (GetClientCount() < g_iBettingMinPl)
        {
            ReplyToCommand(client, "[Shop|Bet] Недостаточно игроков, нужно %d", g_iBettingMinPl);
            return Plugin_Handled;
        }
        else if (g_iBettingPeriod && g_iBettingStart+g_iBettingPeriod < GetTime())
        {
            ReplyToCommand(client, "[Shop|Bet] Период ставок истёк");
            return Plugin_Handled;
        }
        else if (Flood(client)) return Plugin_Handled;
        else if (args < 2)
        {
            ReplyToCommand(client, "[Shop|Bet] sm_bet <t/ct> <bet/all/cancel>");
            return Plugin_Handled;
        }
        /* else if (g_iPlayerPot[client])
        {
            ReplyToCommand(client, "[Shop|Bet] Вы уже сделали ставку (%d кр.)", g_iPlayerPot[client]);
            return Plugin_Handled;
        } */
       
        decl String:sTeam[4], String:sAmount[8];
        GetCmdArg(1, sTeam, sizeof(sTeam));
        GetCmdArg(2, sAmount, sizeof(sAmount));
       
        if (StrEqual(sTeam, "t", true))
            g_iPlayerTeam[client] = CS_TEAM_T;
        else if (StrEqual(sTeam, "ct", true))
            g_iPlayerTeam[client] = CS_TEAM_CT;
        else
        {
            ReplyToCommand(client, "[Shop] Неверная команда");
            return Plugin_Handled;
        }
       
        new hascredits = Shop_GetClientCredits(client);
        new credits = StringToInt(sAmount);
        if (StrEqual(sAmount, "all", true))
        {
            g_iPlayerPot[client] = hascredits;
            PrintToChatAll("[\x03Shop|Bet\x01] \x04%N \x01поставил все свои кредиты (%d кр) на команду \x04%s", client, hascredits, sTeam);
            PrintToChat(client, "[\x03Shop|Bet\x01] Ваша ставка составляет %d кр.", g_iPlayerPot[client]);
            PrintToChat(client, "[\x03Shop|Bet\x01] В случае успеха ваш выйгрыш составит \x03%d \x01кр.", RoundToCeil(g_iPlayerPot[client] * g_fMultiplier));
            Shop_SetClientCredits(client, 0);
            return Plugin_Handled;
        }
        else if (StrEqual(sAmount, "cancel", true))
        {
            Shop_GiveClientCredits(client, g_iPlayerPot[client]);
            g_iPlayerPot[client] = 0;
            g_iPlayerTeam[client] = CS_TEAM_NONE;
            ReplyToCommand(client, "[Shop|Bet] Вы отменили свою ставку");
            return Plugin_Handled;
        }
        else if (credits < 0)
        {
            PrintToChat(client, "[\x03Shop|Bet\x01] Неверное количество кредитов.");
            return Plugin_Handled;
        }
        else if (credits < hascredits)
        {
            g_iPlayerPot[client] += credits;
            PrintToChatAll("[\x03Shop|Bet\x01] \x04%N \x01 поставил \x04%d кр. \x01на команду \x04%s", client, credits, sTeam);
            PrintToChat(client, "[\x03Shop|Bet\x01] Ваша ставка составляет %d кр.", g_iPlayerPot[client]);
            PrintToChat(client, "[\x03Shop|Bet\x01] В случае успеха ваш выйгрыш составит \x03%d \x01кр.", RoundToCeil(g_iPlayerPot[client] * g_fMultiplier));
            Shop_TakeClientCredits(client, credits);
            return Plugin_Handled;
        }
        else
        {
            ReplyToCommand(client, "[Shop|Bet] У вас недостаточно кредитов")
        }
    }
    return Plugin_Handled;
}
Зачем везде return Plugin_Handled; если у тебя идет конструкция else if. Если одно условие выполнилось дальше уже не пойдет.

PHP:
if (StrEqual(sTeam, "t", true))
            g_iPlayerTeam[client] = CS_TEAM_T;
        else if (StrEqual(sTeam, "ct", true))
            g_iPlayerTeam[client] = CS_TEAM_CT;
Может стоит добавить "т" и "кт" ?
 
Последнее редактирование:

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #3
Версия: 1.1
Поправлены ошибки.
 

smoke96

Участник
Сообщения
1,134
Реакции
175
Вот допустим если уже победила команда и игрок делает ставку , то у него креды на 0 ставятся потом возвращаются в новом раунде. Если ты поставил все креды на команду выиграл , проверяешь в этом раунде магаз все ок , в следующем раунде кредов в два раза больше , то есть выигрышь выдается 2 раза что ли
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #5
Версия: 1.2
Поправлен баг когда кредиты выдавались в начале раунда.
Исправлен баг когда игрок мог сделать ставку в конце раунда.
 
Последнее редактирование:

Barsminsk

Участник
Сообщения
55
Реакции
2
Версия 1.1 работала, версия 1.2 после 2х рестартов сервера так и не заработала.
в error логе пусто
 

666pro

Участник
Сообщения
186
Реакции
25
Было бы круто , если интегрировать в меню шопа , а то пока всем объяснишь и т.д.

Так , через меню шопа , об этом многие узнают сразу )
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #9
666pro, хорошая идея. Если автор не сделает - я сделаю.
 

DiSonDS

Участник
Сообщения
79
Реакции
16
Хотелось бы чтобы можно было ставить только за свою команду, а то некоторые специально поддаются.
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #11
Плагин обновлён до версии 1.4.
Изменения в первом посте.
 

antonnn598

Участник
Сообщения
152
Реакции
9
Сделайте, пожалуйста, версию без рекламы в чате.
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #13
Сделайте, пожалуйста, версию без рекламы в чате.
Обновление плагина.
Версия: 1.6
Уведомление о ставках регулируется кваром:
PHP:
sm_shop_bet_advert 1 // Отображать уведомление о ставках в начале раунда
 

Денис Шорохов

Участник
Сообщения
2
Реакции
0
Обновление плагина.
Версия: 1.6
Уведомление о ставках регулируется кваром:
PHP:
sm_shop_bet_advert 1 // Отображать уведомление о ставках в начале раунда

А можешь сделать чтобы можно было сделать ставку командой в чате? В консоли не всем удобно это делать!
 

Fentazzi

Участник
Сообщения
38
Реакции
0
Можно ли как нибудь сменить цвет рекламы в чате? Просто весь шоп настроен цветной, а этот плагин тусклый, исходника нет не как не изменить цвет.
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • Автор ресурса
  • #18
Fentazzi, кнопка Исходник в первом посте ни о чем не говорит?
 

Похожие темы

Ответы
44
Просмотры
12К
Ответы
629
Просмотры
130К
Сверху Снизу