Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

@CRAZY_STALKER666, функцию такую сделать определенно нельзя, тут остается только костылить, можно сделать группировку-двойник, можно на выходе в онлайн вылавливать мужиков из нужной группировки и каждого персонально ссорить с другой группировкой, это наверное меньшее из зол. Но это так, с первого взгляда, возможно что-то и лучше можно сделать.

Поделиться этим сообщением


Ссылка на сообщение

@CRAZY_STALKER666, нет, я говорю о том, что бы не объекты друг с другом ссорить, а группировку с объектом, то есть устанавливаем ENEMIES константу в оба варианта, и чтобы мужик относился плохо к группировке, и группировка к мужику.

Поделиться этим сообщением


Ссылка на сообщение

@CRAZY_STALKER666, это не пустышка, но она и не работает. Я ее у себя худо-бедно починил, но она все равно работает не так, как задумывали разрабы, чтобы сделать нормально там надо небольшой таймер написать, мне просто было лень, так что не заморачивайся.

Поделиться этим сообщением


Ссылка на сообщение

@CRAZY_STALKER666, пробуй играть от кости, от центра, все попробуй. У других же работает. Брать тут вектор позиции на мой взгляд не совсем верно.

Поделиться этим сообщением


Ссылка на сообщение

У меня такой вопрос, для чего задумывался массив db.info_restr? Что он делает сейчас - понятно (ага, sr_danger&sr_territory рыдают), но это в корне не вяжется с его описанием от разрабов (в самих файлах). Возможно кто-то знает секрет. Пока мое предположение такое: разрабы задумывали и неписей гонять по локациям (без потери самих неписей) и выдавать им нужные инфопорции в определенных рестрикторах. Возможно я опять думаю антипартийно, но в итоге мне кажется, что меня обвинят в том что я слишком много всего зарезал, и не потому, что я зарезал нужное, а потому, что зарезал рабочее, но, черт возьми, никто же за 9 лет и не пользовался.

 

В общем тут вопрос такой больше философский, я прошу привести реальный пример из практики где это хотя бы раз когда-то использовалось (и, самое главное, оправданно), также, если такого не найдется, то я прошу каждого попытаться придумать теоретический пример где бы это было оправданно использовано, в противном случае не вижу причин оставлять это в скриптах, по мне так это очередной рудиментарный хлам, почему я считаю, что он рудиментарный - я объяснить смогу.

 

Итак, у кого есть желание побеседовать - давайте побеседуем, а пока я помещаю это все в список "под нож".

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

@UnLoaded, возможно ты про can_select_item_rules, это в движке on_after_take если верно помню, можешь посмотреть, обычная строка конфига, работает только на подбор оружия (а точнее CWeapon, если опять же не ошибаюсь), другого поднятия итемов там нет.

 

По дез менеджеру, ну, как тебе сказать, да, для трупов, но и не только (проверь сам, удивишься, только прежде чем следующий вопрос задавать - подумай) ;).

Поделиться этим сообщением


Ссылка на сообщение

@UnLoaded, я это в движке зарубил, а для оригинальной работы просто в коллбеке на перезарядку скармливаю неписю те патроны, что у него в стволе. Но вообще в оригинальном виде у непися должен быть бесконечный боезапас, так как, в противном случае, в силу кривизны неписей они весь свой боезапас моментально расстреливают и пускаются в бега.

 

А так да, движковое, из универсального в скриптах там помоему два комбата (точнее три, но один не используется), да хели хантер, ну еще раненый, но это уже гибрид, и вроде все, но может чего еще есть, разумеется тут я не завожу речь о стейтах и вообще передвижении, там конечно с головой всяких прекондишнов.

Поделиться этим сообщением


Ссылка на сообщение

@BoBaH_671, выведи две write функции на имя и на иконку, только имя нужно будет еще в серверную часть записать.

 

Готовый пример, ну, например, у меня бы все выглядело как-то так:

actor:set_character_icon("ui_npc_monster_kontroler")
actor:set_character_name("Контролер")
Если я это вызываю в режиме диалога или вроде того, то еще вызвать функцию принудительного апдейта текущего окна, ее можно написать на все движковые окошки + расширить через скриптовую оболочку еще и на скриптовые окна, если нужно.
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

TIGER_VLAD, в ЧН/ЗП для этого экспортирован отдельный gui-класс, в ТЧ - можно с помощью CUIStatic сделать.

В ТЧ SetWndPos тоже присутствует, и все работает.

 

 

 

ЗП. Помогите понять как работать с нет пакетами.

По уму с нет-пакетами лучше совсем не работать. Советую направить силы на понимание как работать БЕЗ нет-пакетов, совсем без них не выйдет, но минимизировать и локализировать их использование очень даже удастся.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@naxac, еще раз, я написал, что прогресс-бар в ТЧ работает, конкретно вопрошающему необходим SetWndPos, о котором я и упомянул.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

Ну наверное ему нужно все-же SetProgressPos, если разговор о прогресс-баре.

Да, разумеется, я почему-то написал иное, причем дважды, хотя имел ввиду именно SetProgressPos. Сюда же GetProgress, впрочем не так важно, я доносил иную мысль, остальное все видно из сигнатуры класса.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

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

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

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

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

при спавне объектов, движок использует гейм-вертекс - для идентификации уровня, на котором будем спавнить

Тем не менее это ошибочное суждение, для серверного объекта этот параметр важен, при "любом" гейм вертексе могут возникать конфликты с масками, если они будут активно использоваться. Еще так же советую обратить внимание на возможность управления "включенности" гейм вертекса, вы попросту можете отключить не тот вертекс, и это будет ошибкой. Есть еще масса функций управления вершинами, которые использует движок, здесь он, очевидно, будет работать не с той вершиной.

 

Собственно я так и делал, по вертексам

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

Поделиться этим сообщением


Ссылка на сообщение

то условие "if в_кармане == 10 then" не должно выполняться ?

Конкретно здесь оно выполнятся не будет. Это очевидно. Ошибки здесь нет, здесь есть не понимание принципов работы с подобными величинами.

Поделиться этим сообщением


Ссылка на сообщение

 

 

тогда так (для одного НПС):

Тогда вылетишь, если объект будет в оффлайне.

Поделиться этим сообщением


Ссылка на сообщение

 

 

Не подскажете, в чем проблема?

Прежде чем подсказывать объясни мне почему ты пошел таким путем? Допустим я здесь вижу ряд взаимоисключающих вещей, которые неизбежно приведут к ошибкам.

 

 

 

Можно ли скриптом собрать смарты на локации и узнать их координаты?

Можно.

 

 

какие свойства смарта можно узнать скриптом?

Какие угодно.

 

 

 

UnLoaded, на какой странице хоть?

Предположу, что он про нет-пакет. Но тут он явно не прав, потому что в ЗП есть лаконичный метод:

    function get_visual_name() const;

Поделиться этим сообщением


Ссылка на сообщение

Вот тебе бабушка и Юрьев день.

 

@AKKK1, данные любых поинтов ты можешь узнать где угодно. Вот например я сделал дамп барного пути на Кордоне:

 

 

[27.10.16 22:06:45.551] { ----- id table: 2CEA00B0 -----
[27.10.16 22:06:45.551]     [0] =
[27.10.16 22:06:45.551]         { ----- id table: 2CEA0100 -----
[27.10.16 22:06:45.551]             ["gv"] = [1180],
[27.10.16 22:06:45.551]             ["name"] = ["wp00"],
[27.10.16 22:06:45.551]             ["ln"] = ["l05_bar"],
[27.10.16 22:06:45.551]             ["index"] = [0],
[27.10.16 22:06:45.551]             ["lv"] = [42114],
[27.10.16 22:06:45.551]             ["data"] =
[27.10.16 22:06:45.551]                 { ----- id table: 2CEA03A8 -----
[27.10.16 22:06:45.551]                     ["flags"] = <*flags[16/32]>,
[27.10.16 22:06:45.551]                     ["wp00"] = ["true"],
[27.10.16 22:06:45.551]                 },
[27.10.16 22:06:45.551]             ["pos"] = <*vector[x=161.396,y=0.18,z=7285]>,
[27.10.16 22:06:45.551]         },
[27.10.16 22:06:45.551]     ["pathname"] = ["bar_arena_guard_walk"],
[27.10.16 22:06:45.551] }

 

 

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

 

Еще есть у юзеров SDK забава подгонять респавнер для ящиков по миллиметрам. Прямо говорить, ящикам нужен другой подход, респавнеры (для ящиков) в том виде, в каком они есть совершенно не нужны. Сиды оставим, сидом мы ассоциируем смарту ящик, как смарт там разрождается у нас, так мы в этот ящик и суем барахло, откуда дровишки? А прямо из кастом даты ящика.

Поделиться этим сообщением


Ссылка на сообщение

@Sla-Sla, я вот как-то так делаю:

 ['stalker_zombie8'] = {'$outfit|stalker_zombi', 37, 48},
    local visual = string.split(npc:get_visual_name(), '\\');
    visual = drop_outfit_base[visual[3]]; local section = visual[1]

Поделиться этим сообщением


Ссылка на сообщение

@Sla-Sla, сделай функцию для серверного объекта, в нет-пакет же пишется визуал. Класс CSE_Visual, там, как это принято здесь говорить, все интуитивно понятно.

 

@FonSwong, тебе уже ответили, потому-что функция только для текущего левел графа, и доступна только при загруженном уровне, что логично.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

Присоединяюсь к числу пострадавших от мороза.

 

Как актор накапливает радиацию в зонах радиации? Я затерялся в пучине нет-пакета.

 

Для разборок берем грузовик на Кордоне, тот который в сторону свалки от дома где Лис валяется.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...