[ZP] Избавляемся от вознаграждений за убийства и конца раундов
начать игру
В общем, в Pawn я любитель с 6 летним стажем, а так сижу на C#.
     При разработке зомби сервера без донатов меня сбесил DHUD и я решил избавиться от него полностью (конечно в кабинете будет возможность показывать игроку этот DHUD) и я решил сменить аммо на денежную систему, после того как изменил некоторые параметры в zombie_plague40 и поиграв немного... Я заметил, что появились вознаграждения за убийство, выиграш / проигрыш раунда.
После раздумий и поиска информации в помойке, ой то есть, в интернете я понял, что там ничего нет.
Решением моих проблем стало следующее...
Кстати говоря, почему я решил сделать сервер без донатов... Играл на сервере с зомби и там был типичный игрок с боссом, который убивал весь баланс игры, раздавая топ оружия всем налево и направо, давая по десяток тысяч аммо своим, также брал себе 600 брони... Ну вы понимаете, что в таком сервере невозможно играть. Писал на форумах сайта, тупо проигнорили и удалили записи


Ищем
Player vars

После добавляем пару переменных (в начале, в конец - абсолютно без разницы)
new moneyExelent[33] // Переменная с массивом для хранения денег в дамбе ([33] отвечает за хранение отдельно для каждого игрока
new bool:moneyBloock = false // Булевая переменная для блокирования хранен

После находим
public plugin_init()

Если в ней нет события, то добавляем (Событие отвечает за выполнение метода при изменении худа с деньгами, message_money - любое название метода)
register_message(get_user_msgid("Money"), "message_money")

Ищем
public message_money

Выглядит всё так:
public message_money(msg_id, msg_dest, msg_entity)
{
    // Remove money setting enabled?
    if (!get_pcvar_num(cvar_removemoney))
    return PLUGIN_CONTINUE;

    fm_cs_set_user_money(msg_entity, 0)
    return PLUGIN_HANDLED;
}

Добавляем в начало следующий код
if (!moneyBloock)
    moneyExelent[msg_entity] = cs_get_user_money(msg_entity)
else
    cs_set_user_money(msg_entity, moneyExelent[msg_entity])

И получаем
public message_money(msg_id, msg_dest, msg_entity)
{
    if (!moneyBloock) // Проверка, хранение не заблокировано, то выполняем
        moneyExelent[msg_entity] = cs_get_user_money(msg_entity) // Закидываем в дамб наш баланс
    else
        cs_set_user_money(msg_entity, moneyExelent[msg_entity]) // Иначе ставим баланс актуальным на дамбе

    // Remove money setting enabled?
    if (!get_pcvar_num(cvar_removemoney))
        return PLUGIN_CONTINUE;

    fm_cs_set_user_money(msg_entity, 0)
        return PLUGIN_HANDLED;
}


Также не обойтись без событий логирования начала и конца раундов
Если есть (2, "1=Round_Start") и 2, "1=Round_End")), но с другими именами методов,
пожалуйста, не делайте из своего кода мусоросборник, прорабатывайте всё в активном
register_logevent("logevent_round_start", 2, "1=Round_Start")
register_logevent("logevent_round_end", 2, "1=Round_End")

Ищем
public plugin_cfg()

И добавляем к таскам ниже (если там они есть) следующий код, если их нет, в конце листинга метода (перед - "}")
set_task(0.5, "logevent_round_start") // Чтобы сервер не лег, запуск через .5 сек метода.

После добавляем в public logevent_round_start()
moneyBloock = false

И получаем
public logevent_round_start()
{
    // Freezetime ends
    moneyBloock = false
    g_freezetime = false
}

После добавляем в public logevent_round_end()
moneyBloock = true

И получаем
public logevent_round_end()
{
    moneyBloock = true
    <...> // Код ниже
}
Ищем public fw_PlayerKilled(victim, attacker, shouldgib)
public fw_PlayerKilled(victim, attacker, shouldgib)
{        
    if (!is_user_bot(attacker) && is_user_alive(attacker))
        cs_set_user_money(attacker, cs_get_user_money(attacker) - 300, 0)

    <...> // Код ниже
}

Таким образом наш баланс будет правильным, и мы сможем работать с изменением валюты в свою пользу, к примеру за 100 урона давать 10 долларов и т.д.

Чтобы перенести сервер полностью под Money через zombie_plague40 - Пишите, добавлю статью... (Там попросту нужно в некоторых местах изменить g_ammopacks на cs_set_user_money и cs_get_user_money - Не везде!

Пользователи, которые меняют сервер на Money через вспомогательный плагин (По типу Buy Menu) - нам не по пути. Плагин тот - мусор.




Дополнение:
Если вас раздражает анимация "+300", то можно сделать так:
if (!is_user_bot(attacker) && is_user_alive(attacker))
{
    cs_set_user_money(attacker, cs_get_user_money(attacker) - 300, 0)
    set_task_ex(0.0, "remove_money_post", attacker) // Вызываем метод, созданный нами через set_task_ex ((set_task_ex - первым параметров поставил время на 0.0, на деле он быстрее 0.1 не работает, это вам на заметку))
}

public remove_money_post(attacker)  cs_set_user_money(attacker, cs_get_user_money(attacker), 1) // Устанавливаем на баланс баланс, чтобы анимация быстрее исчезла, <span style="color:rgb(84,172,210);">3-й</span> параметр это <span style="color:rgb(235,107,86);">вкл/вкл</span> анимации худа добавление или убыли <span style="color:rgb(26,188,156);">денег</span>, у меня в инклуде по умолчанию стоит <span style="color:rgb(84,172,210);">0</span>, а у вас <span style="color:rgb(84,172,210);">1</span>

Привет, наша адмнистрация публикует только пушечный контент, поставь лайк под постом ниже и напишите самый топовый комментарий, мы готовим материал только для тебя, любимый Гость.

Комментариев 3
  1. ArtemPro
    К сожалению от таких серверов не избавится, они как были, так и будут всегда. У меня в копилке уже двое человек (включая тебя) которые делают сервера без доната. Статья отличная, мне понравилась.

    P.S - Можно ли узнать IP адрес твоего сервера  083-smart
    • 6 ноября 2020 17:21
    1. Arniliys
      IP пока не будет, потому что сервер откроется одновременно с модом PUBG + FORTNITE в CS 1.6.
      C#, Object Pascal (Delphi), PHP, Asp .Net, ну и Pawn
      • 6 ноября 2020 20:15
  2. IonGames271
    Пили статью о переводе мода на $  025-rich
    • 11 ноября 2020 09:40
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наши партнеры
Основа для вашей сборки
ReHLDS 3.4.0.654

ReHLDS (Reverse-engineered) - это новый шаг вперед, который дает второе дыхание нашим серверам. ReHLDS работает в 2 раза быстрей, чем HLDS.

AmxModx 1.8.3

AMXModX - это Metamod дополнение, которое позволяет создавать новые модификации для Half-Life на языке Pawn

Reunion 0.1.92

Reunion является продолжением Dproto для ReHLDS. Это metamod плагин, который позволяет заходить 47/48 Non-Steam на сервер.

Revoice 0.1.0.32

Revoice - это Metamod plugin, который дает возможность общения голосовым чатом между non-steam и steam клиентами.

Metamod-r 1.3.0.127

Новый Metamod-r содержит огромное количество оптимизаций производительности и намного более чистый код. Ядро было написано с использованием JIT-компилятора.

Ultimate Unprecacher 1.1

Ultimate Unprecacher являет плагином для MetaMod, работает он по принципу отключение не нужных ресурсов на вашем сервере, тем самым вы сможете освободить места для ресурсов под ваши плагины, с помощью данного модуля можно избавиться от ошибки 512!

ReAuthCheck 0.1.6

ReAuthCheck - это Metamod плагин, который занимается проверкой ваших игроков на валидность, с помощью данного модуля для REHLDS вы сможете защитить свой сервер от ботов, которые постоянно спамят рекламу или просто забивают слот на сервере!

NetBufExtender (NBEX) 1.0

NetBufExtender или NBEX - это метамод-плагин, который расширяет "интернет-буфер": буферы сервера и клиента(гарантия не 100%). Расширяет до 64 кб. Это значит, что у игроков уменьшается вероятность быть кикнутыми с ошибкой "Reliable channel overflowed".

UserInfoNetOptimizer (UINO) 1.0

UINO — metamod-плагин, который позволяет удалять ненужные поля из userinfo(setinfo) когда движок передаёт его другим игрокам на сервере. Данная мера уменьшает объём передаваемых данных и немного сокращает шанс быть кикнутым с "Reliable channel overflowed".

Информация

Добро пожаловать на CS-FADE.RU!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт