Я и PAWN | Изучаю, потому что интересно

Сообщения
1,697
Реакции
1,510
Помог
25 раз(а)
d3m37r4, а что не так?
 
Сообщения
702
Реакции
54
Я тут, в процессе написания системы одной, но есть проблема. Она состоит в том, что я не понимаю, каким образом можно получить/отследить урон. Ну тип, как мне поймать урон. допустим по своим.
Я видел реализацию убийства за дамаг по своим от BlackSignature, но честно говоря, не совсем понял. Там банально одна переменная вписана. Как это работает?
 
Сообщения
1,277
Реакции
2,262
Помог
57 раз(а)
ThePhoenix, зависит от того, для какой цели это делается. Если требуется урон заблочить, нужно юзать пре-хуки. Т.е. Ham_TakeDamage или RG_CBasePlayer_TakeDamage. Если блок не нужен, можно использовать пост-варианты (register_event() или те же самые хуки в пост-варианте).

Как это работает?
что именно? как teamattack определить? в хуке нанесения урона проверить что атакер это игрок, и что команда атакера равна команде жертвы. Если так, то это teamattack. Для гранат чуть иначе, там
https://github.com/s1lentq/ReGameDL...d41a5ae89922/regamedll/dlls/ggrenade.cpp#L915
Ну и про ffa-квар регейма не забываем. Его надо тоже учитывать.
 
Сообщения
702
Реакции
54
BlackSignature, Как заблокировать урон, у меня есть код :)
Мне понять, как именно отловить, ну т.е, наносится урон, я хочу его записать в переменную, чтобы для чего-то посчитать или из-за него что-то сделать. Как мне его записать/отловить?

Код:
g_fTeamDamage[id] += fDamage

    if(g_fTeamDamage[id] >= Float:g_iCvar[CVAR__DMG_LIMIT]) {
        if(g_iCvar[CVAR__SOUND]) {
            rh_emit_sound2(id, 0, CHAN_ITEM, SOUND__THUNDERCLAP)
        }
Как g_fTeamDamage стал носителем количества урона по своим?

Из-за проверки в тэйк дамаге на команду убийцы и жертвы он стал носителем именно тимурона, а += fDamage даёт ему сам урон?

p.s. .cpp - для меня дремучий лес, я там ничего не понимаю :D А даже, если бы и понимал, то не в курсе, как оно применяется, т.е как знаний из .cpp превратить в код плагина амхх))
 
Последнее редактирование:
Сообщения
1,277
Реакции
2,262
Помог
57 раз(а)
а += fDamage даёт ему сам урон?
да

ThePhoenix, += это сахар. по сути это
Код:
g_fTeamDamage[id] = g_fTeamDamage[id] + fDamage
т.е. туда "складывается" урон по своим. нафигачил больше положенного - получай палкой по жопе
 
Сообщения
702
Реакции
54
Каким образом можно сохранить client index игрока? Ну т.е я хочу допустим запомнить игрока, который меня ослепил и в новом раунде уже хукнуть его index, чтобы наказать.
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
ThePhoenix, если наказание зависит от конкретного игрока, меню, например, всплывает с предложением наказать обидчика или если наказание стакается от других игроков которых тоже ослепили, то можно что-то вроде стека или очереди запилить в которых хранить пару ослеплённый-ослепивший и опустошать эту структуру в эвенте начала раунда. Если нужно просто запомнить, что конкретный игрок слепил своих, то можно создать простой массив булов или битсумму и просто пробегать по каждому игроку в начале раунда и наказывать если он хулиганит, и соответственно так же обнулять массив (битсумму).
 
Сообщения
219
Реакции
184
Помог
3 раз(а)
ThePhoenix, создатт двумерный массив[33][33], отловить кто кого ослепил. g_bFlash[flashed][flasher] = true

У меня складывается ощущение, что ты берешь заказы, а тут под видом обучения спрашиваешь то что сделать не можешь
 
Сообщения
702
Реакции
54
irrumabo_me_nomen, gyxoBka, я просто хочу меню выводить с вопросом о наказании. Мол, вас ослепили, наказать? Если да, то мне надо же как-то получить айдишник игрока, который ослепил, ибо дойдя до стадии ослепил? Вывести меню для жертвы - это понятно, а вот как дальше, если это будет уже отдельный паблик и там айдишкой будет тот, кто вызывает, т.е жертва, но нам надо же ещё обидчик.

Случаем нет примеров подобной реализации?

А можно ли уже изначально вызывая паблик самой менюшки с кейсами указать в переменных обоих игроков? Ну то есть обидчика и жертву.

gyxoBka, по поводу заказов. В чём то ты прав, а именно, что я спрашиваю только то, что мне надо. Я спрашиваю всегда только то, что мне надо, но в случае с этой темой, я спрашиваю для себя. Про получение оружия в реапи спрашивал, чтобы пополнять патроны, а именно заменить себе квары ригейма для всех, на пополнение личностям отдельным.

Ну, а то, что я беру заказы, дак почему бы и нет, если там не сложно и у меня есть подобная реализация кодом на своём же сервере)

Я спрашиваю конкретику и потом по сути её отрабатываю и собсна так и учимся, на примерах.

Доказать обратное твоему мнению, я вряд ли смогу, т.к у меня в голове картинка есть, а ты ей вряд ли поверишь..

В данном случае, меня интересует получение аттакера для доработки во вторую очередь:
https://c-s.net.ua/forum/topic91365.html#entry1123578
А в первую, что бы сделать наказания зависящими от выбора игрока, жертвы, а не от погоды.
 
Последнее редактирование:
Сообщения
225
Реакции
90
Помог
1 раз(а)
ThePhoenix, вариант духовки проще всего сделать, если хочется самоутвердиться и лвлапнуться то можно мой первый вариант реализовать.
Причины убийств в джаилбрейках вроде похоже реализованы.
 
Сообщения
219
Реакции
184
Помог
3 раз(а)
ThePhoenix, вариант духовки проще всего сделать, если хочется самоутвердиться и лвлапнуться то можно мой первый вариант реализовать.
Причины убийств в джаилбрейках вроде похоже реализованы.
не нужно хранить конкретную пару, и то что Вы сказали это не левелАп, а трата ресурсов. Например, я с ослепил 32 игрок и будут сохранены 32 пары id - id2 и так с каждым. на примеру выше, то же самое только менее затратное, имеем игрока и тех кто его ослепил. ЛевелАпом будет использование одномерного массива и битовых операций.
 
Сообщения
702
Реакции
54
gyxoBka, А нельзя, когда регаешь паблик менюшки, указать в переменных несколько индексов? И потом указать кто есть кто?
 
Сообщения
219
Реакции
184
Помог
3 раз(а)
ThePhoenix, что угодно можно "зарегать". Вопрос в том как туда передать?
 
Сообщения
219
Реакции
184
Помог
3 раз(а)
ThePhoenix, я сказал как делать, какие еще вопросв могут быть?
 
Сообщения
225
Реакции
90
Помог
1 раз(а)
gyxoBka, и перебирать игроков до максимального id.
Задумался о высоком и забыл, что в кс 32 игрока максимум :crazy:
 
Сообщения
219
Реакции
184
Помог
3 раз(а)
irrumabo_me_nomen, чо там перебирать.. цикл с 1 до 32. если массив[id] == 0 то скип ,если нет то цикл с битовой проверкой пробежаться.
 
Сообщения
702
Реакции
54
gyxoBka, сорян, с мобилы писал. Потерял слово "был" ("вопрос был")
 

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

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