Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 16
    Гостей: 9
    Пользователи: - отсутствуют
    Роботы: Google AdSense, Yandex Bot, Yandex Bot, crawl Bot, robot Bot, Yandex Bot, Yandex Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 9-07-2012, 00:01 Просмотров: 7171

    Функция изменяет количество патронов в магазине.

    Достаточно часто встречается вопрос "как выдать патроны", но особая сложность возникает при выдачи их в магазин(обойму), не говоря уже о том, что используют зачастую целый модуль ради одной функции. Лично я предпочитаю писать палгины на fakemeta и hamsandwich так как они способны заменить сразу несколько других модулей.

    Что бы изменить патроны игроку, используются две функции:
    • set_pdata_int
    • get_pdata_cbase -Получает данные от блока памяти, в данном случае это Offset_active_item, активное оружие игрока.


    Синтаксис:
    set_pdata_int(get_pdata_cbase(id, 373), 51, AMMO)

    • get_pdata_cbase(id, 373) - id заменить на индекс игрока ( если он в вашей функции не id)
    • 51 - не трогайте.(OFFSET_CLIPAMMO )
    • AMMO - Сколько патронов выдать


    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <fakemeta>
    #include <hamsandwich>


    #define PLUGIN "[http://amxxmodx.ru] ammo"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        register_clcmd("say /ammo","give_ammo")
        
    }
    public give_ammo(id){
        
        set_pdata_int(get_pdata_cbase(id, 373), 51, 3)//В магазин
    }


    Описание:
    В любой момент времени напишите в чат /ammo и у активного оружия станет 3 патрона.
    Приятно то, что можно выдать патронов больше, чем в магазине по умолчанию.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Функция изменяет количество патронов в магазине.
    Plrip

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    а как в запас?
    Monstr™

    29.09.2011
    ICQ: 631967458
    Публикаций: 12
    Комментариев: 22
    Репутация: -  0  +

    http://amxxmodx.ru/cstrike/392-cs_set_user_bpammo-funkciya-ustanavlivaet-igroku-
    patrony-v-zapas.html
    Plrip

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Monstr™,
    уже увидел wink
    Другие новости на эту тему:
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    А как не у активного,а у определённого?
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Артист
    Вопрос поставлен не корректно и ответа не имеет.
    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Как не корректно?
    Я спросил:
    Как сделать так чтоб в обойме(например)elite,было 40 патронов.
    Вот я допустим выдаю игроку elite:
    give_item(id, "weapon_elite")
    далее как сделать чтоб патронов не 30 было а 40,не на один раунд,а на все время.
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    артист, сейчас вопрос уже более корректный, но не до конца.

    Для начала посмотри сюда:
    http://wiki.amxmodx.org/CS_Weapons_Information
    Как видно, у разных пушек одинаковые патроны, например:
    fiveseven и p90

    Потом что значит на все время?
    Сервер сам по себе ТУПОЙ ребенок. которому нужно объяснять ВСЕ до буквы.
    Если ты не можешь объяснить что ты хочешь самому себе - серверу ты это точно не объяснишь.

    Но если ты не хочешь пытаться въехать в суть, то вот тебе решение:
    set_pdata_int(id, OFFSET_*, ammo)

    OFFSET_* - офсет патронов

    --------------------
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    На всё время-это,как выдал elite.так у него и должно быть 40 патронов в обойме))
    В том плане,что в следующем раунде,у него опять будет 40 патронов.
    Хотя всё идёт же по кругу,при респавне игроку снова выдаётся elite...
    Вот так правильно?:
    give_item(id, "weapon_elite" ==(set_pdata_int(id,OFFSET_40, ammo)))


    п.с.еслиб не было интересно,яб заказал)
    Просто материалов по amxx мало...
    артист

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Так ругается на оффсет.
    а если вместо оффсет_40 поставить просто 40,ругается на аммо...
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Ну тогда буду мучить ;)

    Для начала расскажи мне синтаксис данной функции:
    set_pdata_int(id, OFFSET_*, ammo)

    Что такое:
    id
    OFFSET
    ammo

    Пока ты этого не поймешь, дальше идти бессмысленно.

    --------------------

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама