Money-Roulette

Money-Roulette 2.6.3

Нет прав для скачивания
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
У всех свой стиль написания. Если я сделал как сделал, значит на тот момент мне показалось это логически правильным.
5 Мар 2019
У всех свой стиль написания. Если я сделал как сделал, значит на тот момент мне показалось это логически правильным.
А также, свое обновление я проверил! Все хорошо с последней обновленной версией, можно юзать.
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
346
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
melfyk, на данный момент, код более не менее оптимизирован, что особо больших нагрузок он не несет. В следующих версиях, будет учтено.
 
Сообщения
658
Реакции
230
Помог
11 раз(а)
wopox1337, я в чем то ошибся? или сделал что то неправильно? в чем моя ошибка, разъясни пожалуйста.
 
Сообщения
72
Реакции
10
Limbooc, не надобности в get_maxplayers(), можно просто использовать константу MaxClients
 
Последнее редактирование:
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Работает и работает! Нагрузки особо не несет! Что-вы честное слово...

Порой начнешь оптимизировать или модернизировать, только хуже сделаешь...
 
Сообщения
72
Реакции
10
Работает и работает! Нагрузки особо не несет! Что-вы честное слово...

Порой начнешь оптимизировать или модернизировать, только хуже сделаешь...
И первая и вторая фраза чистого рода бред, хотя это как смотреть
Кроме конечно оптимизация, что может стать хуже при оптимизации?
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Когда я писал, я вкладывал смысл.
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Minni, а примерчик можно, смутно понимаю.
 
Сообщения
2,143
Реакции
1,223
Помог
44 раз(а)
wellasgood,
Код:
public func_info(id)
{
--    for(new i=1; i <= get_maxplayers(); i++)
--    {
--        if(Count < 10)   // чекер что-бы убрать напоминалку (настроить по своему на кжд раунд)
--        {
--        client_print_color(i, print_chat, "^3[^4Денежная рулетка^3] ^1Как начать? ^3>> ^1пиши в чате: ^4сервердайденег")
--        }
--    }

++    if(Count < 10)   // чекер что-бы убрать напоминалку (настроить по своему на кжд раунд)
++    {
++        client_print_color(0, print_chat, "^3[^4Денежная рулетка^3] ^1Как начать? ^3>> ^1пиши в чате: ^4сервердайденег")
++    }
    Count = Count + 1
}
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Minni, sbelov020, странно что я это пропустил.. В остальном коде все поменено.

client_print_color(0, print_chat,

вместо print_chat нужно просто 0, ибо тогда не будет корректно.

По поводу цикла перебора игроков, согласен, в этом примере можно обойтись и без него, но, если мы хотим как то отделить на разные категории, или добавить совместно с циклом другие правила, то лучше использовать как раз вместе с циклом..
 
Сообщения
1,419
Реакции
2,509
Помог
59 раз(а)
Если интересно изменение плагина, то вот мое мнение:

  • Строковые #define заменить на new const.

    Пример:
    Код:
    -#define PLUGIN "Money-Roulette"
    +new const PLUGIN[] = "Money-Roulette";
  • Использовать константы:

    Код:
    -new ReloadMoney[33]
    -new CheckProtect[33]
    +new ReloadMoney[MAX_PLAYERS+1]
    +new CheckProtect[MAX_PLAYERS+1]
    В AMXX 1.8.2 их нет, если планируется оставлять поддержку, то тогда нужно добавить как-то так:
    Код:
    #if !defined MAX_PLAYERS
        #define MAX_PLAYERS 32
    #endif
  • Исправить формат:
    Код:
    new MONEY_ENABLED, MoneyCvar
    Две одинаковые переменные, в том смысле что обе для кваров, формат разный, что плохо.

  • Убрать эти русские команды, это троллинг?
  • Всё что в func_info(id) сделано ужасно. Условие if(iCount < 10) можно сделать намного проще в плане чтобы не на весь код длинный растягивалось, а просто кинуть return. Далее:
    Что это такое вообще?
    if(zFl & ADMIN_CFG && zFl & ADMIN_LEVEL_E)
    Как минимум:
    if(zFl & (ADMIN_CFG|ADMIN_LEVEL_E))
    А если надо чтобы все флаги совпадали то как-то так:
    Код:
    #define ADMIN_FLAGS (ADMIN_CFG|ADMIN_LEVEL_E)
    if((zFl & ADMIN_FLAGS) == ADMIN_FLAGS)
    Далее, в той же функции, ужасно сделаны уровни условий, выровнять нужно все else if, почему каждое новое else if ещё ниже? Так не должно быть.

    Кроме этого, весь этот код - хардкод, тут никак нормально флаги не поменять, нет никаких настроек нормально, пользователь никак не сможет адекватно поменять под себя (конечно это касается всего плагина в общем, но да ладно).

    Код:
    -client_print_color(id, 0, "^3[^4Денежная рулетка^3] ^1Как начать? ^3>> ^1пиши в чате: ^4сервердайденег")
    +client_print_color(id, print_team_default, "^3[^4Денежная рулетка^3] ^1Как начать? ^3>> ^1пиши в чате: ^4сервердайденег")
    Использовать print_team_default в этом случае вместо 0, ибо 0 не несёт никакой смысловой нагрузки. Далее, команду "сервердайденег" (выше уже описывал надо заменить на нормальный вариант) лучше тогда вынести в константу чтобы если поменял команду в константе то сразу и в регистрации поменялось и в чат сообщениях.

    Код:
    -Count = Count + 1
    +Count++;
  • Куда мультиязычность делась? Не нужно переводы держать в исходнике.
  • Почему в client_connect(id) и client_disconnect(id) делается одно и то же? Зачем делать одно и то же 2 раза? Можно сделать только disconnect(ed) только и всё.
  • Функция: money_gladmin(id). Условие делается и смотрится куда лучше таким образом:

    Код:
    if(!(get_user_flags(id) & ADMIN_CFG))
        return PLUGIN_HANDLED;
    Соответственно, я уже выше описывал что тут нет никакой удобности, хардкод флаг.

    Код:
    new MyMoney[32]
    MyMoney[id] = cs_get_user_money(id)
    Это шутка наверное? Даже если бы это работало по такой логике, тут должно было быть не 32 а 33 (MAX_PLAYERS+1). Но это не так работает. Ты получаешь целое число а не строку. Соответственно: new iMoney = cs_get_user_money(id);. Однако, тут не нужно создавать переменную, в этом нет никакой выгоды. Используй сразу натив во время установки денег и после для отображения.

    Про формат уже писал выше, у show_dhudmessage в этой функции в конце скобка с пробелом, хотя в начале она без пробела, соответственно лучше убрать пробел.

  • Следующая функция: give_money(id). Тут прям дичь какая-то творится. Если правильно понял суть, то должно быть как-то так, смотри комментарии к коду так же:

    Код:
    public give_money(id)
    {
        if(!is_user_alive(id))
        {
            // Нет перевода + print_team_default нужно вместо 0
            client_print_color(id, print_team_default, "^3[^4Сервер^3] ^1Ув. Игрок, ^3Вы ^1не в ^4игре^1! Сейчас недоступно!")
            return PLUGIN_HANDLED;
        }
    
        if(!(get_user_flags(id) & (ADMIN_LEVEL_E|ADMIN_USER)))
            return PLUGIN_HANDLED;
    
        if(get_pcvar_num(MONEY_ENABLED) == 1 && ReloadMoney[id] < time())
        {
            if(CheckProtect[id])
                // Нет перевода + print_team_default нужно вместо 0
                client_print_color(id, print_team_default, "^3[^4Сервер^3] ^1Ув. Игрок, у ^3Вас ^1осталось: ^4%d ^1использований рулетки!", CheckProtect[id]);
            else
                // // Нет перевода + print_team_default нужно вместо 0
                client_print_color(id, print_team_default, "^3[^4Сервер^3] ^1Ув. Игрок, ^3Вы ^1исчерпали использование рулетки!");
    
            // Хардкод приза
            cs_set_user_money(id, cs_get_user_money(id) + random_num(150, 500));
    
            set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.71, 1, 2.6, 2.6, 0.1, 4.5);
            // Нет перевода
            show_dhudmessage(id, "Ув. Игрок, Вам выдано рандомное кол-во денег: %d$", cs_get_user_money(id));
    
            ReloadMoney[id] = time() + get_pcvar_num(MoneyCvar);/* Activate Reload */
            // Упрощено
            CheckProtect[id]--;
    
            // Не указывался id таска
            set_task(10.0, "func_info", id);
            set_task(5.0, "info_gladmin", id);
        }
        else
        {
            if(get_pcvar_num(MONEY_ENABLED) != 1)
                // print_team_default вместо 0
                client_print_color(id, print_team_default, "^3[^4Сервер^3] ^1Ув. Игрок, ^3сейчас ^1недоступно!");
            else
            {
                new iSec = ReloadMoney[id] - time();
                // // print_team_default вместо 0
                client_print_color(id, print_team_default, "^3[^4Сервер^3] ^1Ув. Игрок, ^3до ^4повторного ^1использования рулетки: ^4%d ^3сек^1.", iSec);
            }
        }
    
        return PLUGIN_HANDLED;
    }
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Спасибо за критику, Вы помогаете мне быть лучше. В следующих версиях буду делать по новому, с учётом Ваших правильных примеров. Заодно и на будущее мне..

А вообще, для остальных, кто пользует данный плагин сейчас у себя, можете дальше пользоваться. Работоспобность 99%. :scratch_one-s_head::rofl:
9 Мар 2019
Только оптимизация хромает немного..
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу