[Reapi] Molotov

[Reapi] Molotov 2.5.1

Нет прав для скачивания
Сообщения
330
Реакции
-22
Не подтвердилось
подтвердилось! Мне показать все жалобы игроков? Это проблема раз через раз может воспроизвестись! Возможно какие-то бонусы скальпеля конфликтуют, не уверен но есть такое предположение.
 
Сообщения
2,288
Реакции
1,738
Помог
31 раз(а)
подтвердилось! Мне показать все жалобы игроков? Это проблема раз через раз может воспроизвестись! Возможно какие-то бонусы скальпеля конфликтуют, не уверен но есть такое предположение.
Какие ваши доказательства?
14 Июн 2021
Мне показать все жалобы игроков?
Это не факты.
Это проблема раз через раз может воспроизвестись! Возможно какие-то бонусы скальпеля конфликтуют, не уверен но есть такое предположение.
Вот и разбирайтесь с чем конфликт У ВАС.
 
Сообщения
330
Реакции
-22
Вот и разбирайтесь с чем конфликт У ВАС.
Я это не решу в любом случае, у скальпеля нет исходников, а он сказал баги исправлять будет не ближе к осени, то есть не скоро, нет времени у него.
 
Сообщения
775
Реакции
291
Помог
11 раз(а)
SergeyPanov, ну так , а почему авторы других плагинов, должны этим заниматься. Создавайте отдельную тему, либо ищите человека, который за плату будет разбираться в дебрях вашего сервера.
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Код:
bind_pcvar_num(create_cvar(
        .name = "reapi_molotov_checking_buy_zone",
        .string = "1",
        .description = CVAR_DESC("CHECKING_BUY_ZONE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        eCvarData[CHECKING_BUY_ZONE]
    )
if(eCvarData[CHECKING_BUY_ZONE] && eCvarData[TIME_TO_BUY] > 0)
    {
        BuyTime = time() + eCvarData[TIME_TO_BUY]
    }
Что будет когда квар сменится в средине раунда? Верно BuyTime будет неверным. Посмотреть исходники регейма и найти мембер который содержит время старта раунда путь для слабаков.
15 Июн 2021
Код:
@FixGive(id)
{
    if(CheckRound < eCvarData[ROUND_LIMIT_ISSUING]) return

    if(get_user_flags(id) & SpwReadFlags == SpwReadFlags)
    {
        if(eCvarData[GIVE_LIMIT] > 0) GiveLimit[id]++
        GiveMolotov(id)
    }
}
Что мы фиксим мне непонятно. Возможно проверяем?
15 Июн 2021
Код:
if(FClassnameIs(item, ITEM_CLASSNAME))
    {
        new Buffer[64]

        ArrayGetString(SaveModels, 0, Buffer, charsmax(Buffer))
        SetHookChainArg(2, ATYPE_STRING, Buffer)

        Buffer[0] = EOS

        ArrayGetString(SaveModels, 1, Buffer, charsmax(Buffer))
        SetHookChainArg(3, ATYPE_STRING, Buffer)

        SetHookChainArg(4, ATYPE_INTEGER, MOLOTOV_ANIM_DRAW)
    }
Использовать динамические массивы для хранения 3 строк? Как так раньше никто до такого не догадался.
15 Июн 2021
Код:
#if WEAPON_NEW_ID != WEAPON_GLOCK
    MsgIdWeaponList = get_user_msgid("WeaponList")

    if(MsgIdWeaponList)
    {
        MsgHookWeaponList = register_message(MsgIdWeaponList, "@HookWeaponList")
    }
    else
    {
        FwdRegUserMsg = register_forward(FM_RegUserMsg, "@RegUserMsg_Post", true)
    }
#endif
Оставил код с хилки в неизменном виде. Зачем я так понял даже не знаешь сам ибо не разобрался (хотя писал в теме что цена основанная на времени потраченном на то, чтобы разобратся)
15 Июн 2021
Код:
if(CheckCheck[get_member(item, m_pPlayer)])
{
    SoundAndCheckLong(get_member(item, m_pPlayer), 1)
}

CheckCheck[get_member(item, m_pPlayer)] = false
    
SoundAndCheckLong(iPlayer, value=0)
{
    if(value == 0)
    {
        // ...
        CheckCheck[iPlayer] = true
    }
}
Логика покинула чат
15 Июн 2021
Код:
new iMuzzleFlash = get_member(item, m_Weapon_iFamasShotsFired)

    if(!is_nullent(iMuzzleFlash))
    {
        set_entvar(iMuzzleFlash, var_flags, FL_KILLME)

        set_member(item, m_flStartThrow, 0.0)
        set_member(item, m_Weapon_iFamasShotsFired, NULLENT)
        set_member(item, m_Weapon_flNextPrimaryAttack, 0.5)
        set_member(item, m_Weapon_flTimeWeaponIdle, 0.75)
    }
Отличная идея хранить ентити в айтеме :rofl::rofl::rofl:. А когда айтем умрет, думать куда она делась
15 Июн 2021
Код:
@Dummy1(time1) return

@Dummy2(time2) return
У-уникальность. И она должна быть между 1 и 2
15 Июн 2021
Код:
GiveMolotov(const id)
{
    set_task(0.3, "@ammosound", id)
}

@ammosound(id)
{
    new Buffer[64]
    ArrayGetString(SaveSound, 6, Buffer, charsmax(Buffer))

    rh_emit_sound2(id, 0, CHAN_ITEM, Buffer)
}
Использовать уже существующий хук выдачи аммо это удел глупых.
15 Июн 2021
Подсказка
Код:
giveAmmo(const id, const amount, const ammo, const max)
{
    if(get_entvar(id, var_flags) & FL_SPECTATOR) return

    new count = get_member(id, m_rgAmmo, ammo)
    new add = min(amount, max - count)

    if(add < 1) return

    set_member(id, m_rgAmmo, count + add, ammo)

    emessage_begin(MSG_ONE, MsgIdAmmoPickup, .player = id)
    ewrite_byte(ammo)
    ewrite_byte(add)
    emessage_end()
}
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
fantom, мне лень расписывать по всем пунктам) но спасибо
 
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Pokemoshka, не зря, просто я был на работе, а на работе работают, вот и время не было.

Как руки доберутся делать обнову, так и постараюсь учесть всё, что тут пишут дельного.

ТАМ своя логика!! хех) (с) пружинщик

Я это не решу в любом случае, у скальпеля нет исходников, а он сказал баги исправлять будет не ближе к осени, то есть не скоро, нет времени у него.
SergeyPanov , до осени еще надо дожить - хД)

У меня пока что депрессия и нету мотивации как то, ну хотя даже и хочется делать обнову, ну прямо блок какой-то...
Пью крепкий китайский чай и слушаю рэпчик. ? Мб полегчает.
 
Последнее редактирование:
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Код:
bind_pcvar_num(create_cvar(
        .name = "reapi_molotov_checking_buy_zone",
        .string = "1",
        .description = CVAR_DESC("CHECKING_BUY_ZONE"),
        .has_min = true,
        .min_val = 0.0,
        .has_max = true,
        .max_val = 1.0),
        eCvarData[CHECKING_BUY_ZONE]
    )
if(eCvarData[CHECKING_BUY_ZONE] && eCvarData[TIME_TO_BUY] > 0)
    {
        BuyTime = time() + eCvarData[TIME_TO_BUY]
    }
Что будет когда квар сменится в средине раунда? Верно BuyTime будет неверным. Посмотреть исходники регейма и найти мембер который содержит время старта раунда путь для слабаков.
15 Июн 2021
Код:
@FixGive(id)
{
    if(CheckRound < eCvarData[ROUND_LIMIT_ISSUING]) return

    if(get_user_flags(id) & SpwReadFlags == SpwReadFlags)
    {
        if(eCvarData[GIVE_LIMIT] > 0) GiveLimit[id]++
        GiveMolotov(id)
    }
}
Что мы фиксим мне непонятно. Возможно проверяем?
15 Июн 2021
Код:
if(FClassnameIs(item, ITEM_CLASSNAME))
    {
        new Buffer[64]

        ArrayGetString(SaveModels, 0, Buffer, charsmax(Buffer))
        SetHookChainArg(2, ATYPE_STRING, Buffer)

        Buffer[0] = EOS

        ArrayGetString(SaveModels, 1, Buffer, charsmax(Buffer))
        SetHookChainArg(3, ATYPE_STRING, Buffer)

        SetHookChainArg(4, ATYPE_INTEGER, MOLOTOV_ANIM_DRAW)
    }
Использовать динамические массивы для хранения 3 строк? Как так раньше никто до такого не догадался.
15 Июн 2021
Код:
#if WEAPON_NEW_ID != WEAPON_GLOCK
    MsgIdWeaponList = get_user_msgid("WeaponList")

    if(MsgIdWeaponList)
    {
        MsgHookWeaponList = register_message(MsgIdWeaponList, "@HookWeaponList")
    }
    else
    {
        FwdRegUserMsg = register_forward(FM_RegUserMsg, "@RegUserMsg_Post", true)
    }
#endif
Оставил код с хилки в неизменном виде. Зачем я так понял даже не знаешь сам ибо не разобрался (хотя писал в теме что цена основанная на времени потраченном на то, чтобы разобратся)
15 Июн 2021
Код:
if(CheckCheck[get_member(item, m_pPlayer)])
{
    SoundAndCheckLong(get_member(item, m_pPlayer), 1)
}

CheckCheck[get_member(item, m_pPlayer)] = false

SoundAndCheckLong(iPlayer, value=0)
{
    if(value == 0)
    {
        // ...
        CheckCheck[iPlayer] = true
    }
}
Логика покинула чат
15 Июн 2021
Код:
new iMuzzleFlash = get_member(item, m_Weapon_iFamasShotsFired)

    if(!is_nullent(iMuzzleFlash))
    {
        set_entvar(iMuzzleFlash, var_flags, FL_KILLME)

        set_member(item, m_flStartThrow, 0.0)
        set_member(item, m_Weapon_iFamasShotsFired, NULLENT)
        set_member(item, m_Weapon_flNextPrimaryAttack, 0.5)
        set_member(item, m_Weapon_flTimeWeaponIdle, 0.75)
    }
Отличная идея хранить ентити в айтеме :rofl::rofl::rofl:. А когда айтем умрет, думать куда она делась
15 Июн 2021
Код:
@Dummy1(time1) return

@Dummy2(time2) return
У-уникальность. И она должна быть между 1 и 2
15 Июн 2021
Код:
GiveMolotov(const id)
{
    set_task(0.3, "@ammosound", id)
}

@ammosound(id)
{
    new Buffer[64]
    ArrayGetString(SaveSound, 6, Buffer, charsmax(Buffer))

    rh_emit_sound2(id, 0, CHAN_ITEM, Buffer)
}
Использовать уже существующий хук выдачи аммо это удел глупых.
15 Июн 2021
Подсказка
Код:
giveAmmo(const id, const amount, const ammo, const max)
{
    if(get_entvar(id, var_flags) & FL_SPECTATOR) return

    new count = get_member(id, m_rgAmmo, ammo)
    new add = min(amount, max - count)

    if(add < 1) return

    set_member(id, m_rgAmmo, count + add, ammo)

    emessage_begin(MSG_ONE, MsgIdAmmoPickup, .player = id)
    ewrite_byte(ammo)
    ewrite_byte(add)
    emessage_end()
}
fantom ,

1. Согласен, так будет правильней, посмотрю.
2. Согласен, ну там, я подразумевал что эта функция между делом как-бы, такая нужна была отдельная) поправлю, да проверяем и выполняем другую функцию.
3. Дин. Массивы сделаны для удобства, читается из ini файла данные.
4. Оставил, но примерно понимаю для чего оно. (СВязано с айди)
5. Ну сделал вот так, там особая логика была.
6. Ну сложновато чего говорить, сделал как смог, и работает по моей логике.
7. Исправлю. (Сделал почему-то так, можно и одинаковые, знаю, в разных функциях)
8. Хм, мне зачем-то нужна была задержка, поправлю, проверю
 
Последнее редактирование:
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Готовится обновление.

По тихоньку делаю на работе, когда есть свободные промежутки времени.

Что будет:

1. Новые нативы (возможно форварды)
2. Учтены многие моменты о которых писали.
3. Приведён код в порядок.
 
Сообщения
102
Реакции
219
Пара вопросов, не знаю поднимались тут уже или нет, но попробую уточнить
1) Почему нельзя сделать нанесение урона через Ham_TakeDamage? И тем самым сделав поддержку абсолютно любого дамагера/плагина который как-либо обрабатывает урон, убрать часть кода с форсированием Ham_Killed, я что-то не знаю?
2) Почему форварды/нативы названы абсолютно рандомными именами без стилистики?
А как же вариант, что я например буду писать плагин с использванием молотова, не открывая плагин молотова и пытаясь вспомнить как же там API вызывается то? Ах да точно, player_takes_damage, и не важно что там не слова про молотов нет и так может называться функция из любого плагина в принципе=)
Предлагаю как минимум сделать базовые вещи интуитивно более понятными, квары ведь имеют адекватные названия и сразу понятно с какого плагина, верно? Почему нельзя так-же работать с нативами и форвардами?

Как минимум вид нативов:
reapi_molotov_give
reapi_molotov_have
Форварды
reapi_molotov_fwd_.....

А ещё, посмотрел мельком функционал форвардов, первое на что обратилось внимание, форвард взрыва, в который даже индекс молотова не передаётся, я извиняюсь, а зачем в таком случае этот форвард в котором мы можем узнать только овнера а что за граната где взорвалась что с ней случилось шансов узнать ровно 0? Хотя в обратном случае если в форвард взрыва передать индекс энтити то из неё можно получить и точку взрыва и овнера того же и всё что хочется

P.S Не навязываю свою стилистику, просто предлагаю обдумать этот вопрос
P.S.S Не предьява, давно слежу за плагинами автора, но некоторые вещи вообще не понимаю=)
 
Последнее редактирование:
Сообщения
1,408
Реакции
182
Помог
2 раз(а)
Droads, согласен. Спасибо за потраченное время и четкую обратную связь.

Как будет время сделаю по уму, на счет натив и форвардов как-то забыл что приставку надо)) расслабился)
 
Сообщения
1,495
Реакции
1,496
Помог
2 раз(а)
wellasgood, Все так же кострами горит? Из стен, воздуха и т.д.?
Ну а почему-бы и нет
Автор бы в первую очередь это бы исправил,так как этот баг считается на данный момент самый важный ?
Стоит создать блокнот и весь сбор багов,которые здесь пишут - туда и вносить
Это я к тому,что Автор так и говорил,что много чего забывает в последнее время
Но - я его не виню - есть много чего в жизни,которое мешает / перебивает всё сделать и доделать из за нехватки времени ?
 

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

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