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

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


Svoboда

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

death_generic не используется для монстров. Пропадает любая вещь, пришлось сперва спавнить её на земле а потом в инвентарь переносить, тогда уже нормально.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

> ! Unknown command:

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

 

> nil говорит о том, что сообщение, которое ты выводил в консоль = nil, тоесть его попросту нету.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

KD87

Возможно мои данные устарели, т.к конкретно с присовением story_id через нет-пакет я ещё в 2008 что то делать пытался, но если мне не изменяет память, если создать объект и приписать ему story_id, то потребуется операция save\load чтобы игра его правильно засчитала. Возможно я ошибаюсь, т.к тогда мало что по этому поводу знал. А что именно делал тогда уже не помню.

 

ziStam

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

 

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Artos

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

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

 

ziStam

Тоесть создав новый класс ты лишь можешь взять за основу существующий. В движке CDemon-а НЕ СУЩЕСТВУЕТ.

И в движок ты его НЕ ДОБАВИШЬ. Ты можешь лишь сделать свой класс на основе существующего, что для тебя никакой выгоды в данный момент не несёт. А в движке из летающих монстров разве что Ворона, а она кроме как летать ничего не умеет.

 

Единственное что я тебе могу посоветовать - делать Демона на классе Снорка. Он умеет прыгать, что можно анимацией переделать на полёт. И будет твой демон (из Метро я полагаю) как бэ по земле ползать да "летать" (делать большие прыжки) при виже противника.

Это лучшее что ты сможешь сделать со своей идеей. Всё что тебе надо, это подстроить модель Демона на кости и снорка (я тут тонкостей уже не знаю, это в другую тему) И никакой новый класс не нужен.

 

Artos: Если экспериментируешь с новым классом то, совет: не добавлять свой clsid напрямую в таблицы, а добавлять после проверки наличия его, т.е. типа:

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

По крайнем мере такое (имхо) стоит делать уже после тестирования объекта.

 

Подредактировал пост. В дальнейшем, адресуя слова одному - не забывай переключаться в посте на другого ... --/Artos

Изменено пользователем Artos

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Кстати говоря. В ЗП по умолчанию аномалии никак не реагируют на сталкеров, это движково или как то регулируется в конфигах\скриптах? И если да, можно ли скриптово включать\выключать эту реакцию? (ЗП\ЧН)

 

Artos

Хотел спросить тебя по поводу твоей схемы net-пакетов. У меня возможно не самая новая версия (как раз та, где ты первый раз ввёл универсальную функцию, которая сама определяет тип объекта) но там ты в пакетах объектов помимо зашитых свойств также читаешь\записываешь св-ва объекта из скриптов (где функции save\load во всяких se_stalker.script и тому подобных)

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

 

Можно ли (и как правильно) заменить чтение вот таких скриптовых кусков пакета на просто запись\чтение остатка или типа того?

Ведь доступ к этим данным можно получить напрямую в св-вах объекта, не трогая его net-пакет.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Как узнать под какой скриптовой схемой сейчас находится НПС? И как расшифровать полученную информация.

 

Ленимся листать топик? #3637 --/Artos

Изменено пользователем Artos

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

rusMAFIA

Здесь всё зависет от твоих целей, если тебе надо просто заспавнить НПС, то спавн скриптами никак не будет отличаться от спавна через all.spawn. Тебе надо будет просто один раз вызвать функцию, которая создаст твоего НПС. Главное выбрать правильное для этого место в скриптах,чтобы не пришлось делать лишние проверки. Как вариант в скрипте bind_stalker.script есть функция

function actor_binder:net_spawn(data)

Которая вызывается каждый раз при загрузке сохранения, достаточно где нить в самом конце функции (это важно) вставить проверку вида:

 

if not db.actor:has_info("mod_new_game") then
-- спавнишь своих нпс --

------------------------------
db.actor:give_info_portion("mod_new_game")
end

 

Другое дело что all.spawn представляет больше возможностей для тонкой настройки НПС, в частности можно укзаать им направление взгляда, story_id, name и прочие параметры, которые тебе могут пригодится в частности если решишь делать квесты. Это всё тоже можно обойти через скрипты, но тебе это явно пока не по зубам.

 

Написанное выше актуально для ЧН/ТЧ. В ЗП НПС и так скриптами появляются.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

ferrari314

1) Тут в коде опечатка, после actor_position не точка а запятая.

2) actor_position, actor_leve_id, actor_global_id и actor_id это переменные, которых у тебя наверно нету, замени каждую alife() строчку на:

alife():create("kolbasa", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

С водкой точно также.

3) Колбек на юзанье предмета по аналогии надо ещё выключать из net_destroy(), но думаю на текущую ошибку это не влияет.

 

Попробуй сперва это, а потом если что продолжим.

 

И удаление болта, как посоветовал Unnamed Black Wolf будет происходить только при загрузке игры (и сохранений), так что тоже учти это.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

ХЕМУЛЬ36RUS

Гляннул bind_stalker от ЗП и не нашёл там такого кода.

Более того, sleep_manager там не существует. За сон отвечает совсем другой скрипт.

(разве что ты адаптируешь мод, который переносит сон из ЗП на ТЧ, тогда это другое дело)

 

Что касается твоей ошибки то Artos уже ответил.

Дополню только то, что лучше будет не просто где то выше ставить, а открыть скрипт, откуда ты это копировал и посмотреть где находится post_time и туда же его вставить у себя.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Существует ли способ скриптово поменять предмету из ивненторя его name или description?

Ну вообщем имя и описание.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Капрал Хикс

Тогда мне придётся продублировать в игре всё оружие и всю броню :D

 

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Artos

Может мне ещё скриншоты прикладывать и выделять там красным для непонятливых?

Стоит простой вопрос - можно ли изменить инвентарному предмету его имя и описание. А ты тут какие то статьи не пойми про что пишешь.

Специально для этого дописал name и descriotion в своём посте, какой description у имени персонажа или профиля может быть?

 

malandrinus

К сожалению цель не стоит таких усилий. Раз нет штатного способа значит нет, спс. за разьяснение.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Мне всего то надо помечать определённые предметы каким либо образом, чтобы игрок знал что этот предмет отличается от другого такого же. :)

Для этого хотел как вариант дописывать в имя предмета какой то знак, имя соответственно везде отображалось бы по другому, и это не тока к оружию относится. Вариант с правкой движка этого не стоит, тем более я работаю под ЧН. Тогда уж попробую через нет-пакеты дописывать предмету апгрейд с нужным мне текстом, всё лучше чем ничего. У меня правда есть перехватчик от alpet-а но я не разобрался пока как там работать с памятью.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Ты пишешь 100500 там где должна стоят "in"

Думаю что 100500 должна стоять после "in", и то это тока в ЗП по моему работает (ЗЫ - 100500 предметов по моему это слишком)

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Поменяй местами "in" и 100500 В ЗП вроде сработает.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Есть ли в игре штатная функция, которая отправляла бы НПС в оффлайн, но при этом, если он находился в зоне действия онлайн-элайфа - он возвращался обратно без посторонних действий скриптера (без таймеров, проверок на расстояние и прочее, только движковые методы). Тоесть это должен быть не принудительный флаг перевода в оффлайн\онлайн. Мне просто надо симулировать движковые (не ручные) вызовы switch_online\offline из se_stalker.script

 

Если такой функции нету, то как правильно собрать её самому. У меня у НПС стоит принудительный флаг нахождения в онлайне, и когда он отключается, мне надо чтобы у этого НПС вызвался либо switch_offline метод (с ним проблем нету, если НПС был за радиусом действия онлайна, он и так перейдёт в оффлайн), либо switch_online (а вот с ним у меня проблема, ибо НПС уже в онлайне, а мне необходимо вызвать эту функцию)

Зарание спасибо. :)

___

    sim:set_switch_online  (id, true)
    sim:set_switch_offline (id, true)

Если я так сделаю, то тогда НПС будет сам переходить в онлайн\оффлайн в зависимости от расстояния от игрока как по дефолту?

Вопрос наверно глупый, просто раньше не работал с этим.

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

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Спасибо, проглядел, выручил.. :)

Ещё и add_call используется, хоть буду знать как с ним работать, совсем забыл про него.

Вот только если объект находится вне зоны радиуса онлайна, но в данный момент принудительно онлайн, как тогда поведёт себя скрипт?

Я так понял его кинет в оффлайн, потом в онлайн, а потом его игра обратно в оффлайн затащит?

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

В alife.ltx помима параметра switch_distance есть параметр switch_factor, как правильно, используя два этих параметра, узнать находится ли НПС в зоне переключения оффлайн\онлайн или нет. Или может быть есть готовая функция определения, нужно ли НПС переключится.

 

И вот ещё, можно ли перевести НПС принудительно в оффлайн, но чтобы он сам вернулся в онлайн, если попадал под радиус действия switch_zone, скрипт что дал Artos мне не совсем подошёл, т.к он возвращает НПС обратно в онлайн.

Проблема в том, что я работаю не с одним НПС, а со сквадом, и в ЧН, а там они в оригинале вообще в оффлайн до смены локации не уходят, если хоть раз были в онлайне. Я это частично пофиксил, но осталась проблема с флагом того, что сквад онлайн\оффлайн. Он ставится только из колбеков на switch_online\offline

 

Мне сейчас надо либо научить их переходу в оффлайн, и самостоятельно в онлайн при необходимости, либо зарание делать проверку на расстояние, и вручную менять флаги.

 

_____

 

Нашёл в se_stalker методы can_switch_offline\can_switch_online, странно что раньше не заметил, попробую их.

 

_____

 

Кажется управился.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

Оказалось can_switch_-ы не делают проверку на расстояние =\

Немного покапавшись подсчитал что переход происходит так:

Offline: > SD + (SD * SF)

Online: < SD - (SD * SF)

 

Тоесть если SD = 10, а SF = 0.2, то в оффлайн персонаж перейдёт на расстоянии 12 метров от игрока, а в онлайн около 8 метров.

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

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

Ежели я использую твою функцию, непись всегда в онлайн возвращается, а дальше из за особенностей ЧН-овской войны группировок, ему опять ставится флаг "только онлайн"

 

И кстати, если судить логически, разве:

alife():set_switch_online(id, true)

alife():set_switch_offline(id, true)

 

Не должен делать примерно то, о чём я говорю? Тоесть делать так, чтобы НПС переходил в онлайн\оффлайн в зависимости от расстояния между ним и игроком.

Пока проблему решил подсчётом расстояния от игрока до НПС по формуле выше. Но в идеале конечно хочется 100%-ый вариант.

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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


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

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