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

    Всего на сайте: 4
    Гостей: 4
    Пользователи: - отсутствуют
    Роботы: - отсутствуют

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

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

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 4-11-2011, 11:21 Просмотров: 3668

    find_ent_by_class Функция ищет объекты по имени класса

    Предположим что вы делаете мод в котором не должно быть "Зоны закупки" на карте, не переделывать же из за этого карты, да и блокировать команды игроков, тоже как то не особо хочется, можно же просто удалить зоны закупки, для этого необходимо их найти, как узнать на какой карте для данного объекта id, что бы потом его удалить? Вижу правильно думаете, с помощью функции find_ent_by_class

    Инфо из engine.inc:
    /* Finds an entity in the world, will return 0 if nothing is found */
    native find_ent_by_class(iIndex, const szClass[]);


    Синтаксис:
    find_ent_by_class ( StartEntity, Classname[] )

    • StartEntity - id ентити, используйте -1, если не знаете id
    • Classname[] - Имя класса


    Тип функции:
    Native

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

    #include <amxmodx>
    #include <amxmisc>
    #include <engine>

    #define PLUGIN "[engine.inc] find_ent_by_class"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        new buy_zone = find_ent_by_class(-1,"func_buyzone")
        server_print("%d",buy_zone)
        
        
        new name_ent[32]
        entity_get_string(buy_zone,EV_SZ_classname,name_ent,31)
        server_print("%s",name_ent)

        remove_entity(buy_zone)

    }


    Описание:
    В данном примере выполняется парочка простых функций, разумеется для наглядности.
    Так как мы решили удалить зону закупки ( да да именно одну зону), то нам нужно узнать id этой зоны, для этого создаем переменную куда запишем id полученной зоны с помощью функции find_ent_by_class.

    На этом по большому счету работа функции закончена, но для наглядности выведем в консоль сервере id объекта, затем получим его имя по id ну и наконец удалим объект.

    Если же вы хотите удалить обе зоны, то придется делать цикл, так как функция поиска объекта возвращает первый же результат и прекращает работу.
    Или можно записать один и тот же код несколько раз подряд ( Но это и не красиво и не совсем правильно)
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    find_ent_by_class Функция ищет объекты по имени класса
    arwel

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

    А как узнать id зоны покуки?
    Admin

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

    new buy_zone = find_ent_by_class(-1,"func_buyzone")

    Это и есть получение id зоны покупки.
    Читай внимательнее )
    --------------------
    arwel

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

    Ааа точно feel
    True_Hacker

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

    Спасибо хорошая статья bully
    KoHb_XD

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

    Думаю, это первый коммент за этот год. Да и наверное первый за лет 5. Надеюсь, ответят) Так вот
    Функция find_ent_by_tname, как я понял, работает так же, но ищет объект по его имени, да? К примеру, у меня на карте есть дверь с значением targetname = MyDoor. То код, чтобы получить его ид будет выглядеть так:

    new IdDoor = find_ent_by_tname(-1, "MyDoor");

    Верно? (по такому же принципу, по идее, должны работать остальные функции поиска энтити по чему-либо)

    Информация

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

Реклама