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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

AndreySol

1. Цитируя, не раздергивая смысловую фразу на слова ... Так можно из 'буковок' любыю "цитату" составить ...

Фраза:

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

Расписывать подробно не вижу смысла, т.к. по сути 90% "картинок" в игре выводится именно подобным способом (см. например, описатель ui_iconstotal). Ничего (кроме лени) не мешает создать подобный описатель хоть для всех иконок в ui_icon_equipment.dds и использовать их. Тем более это удобно, т.к. создав и для широкоформатника - не потребуются заморочки с адаптациями под широкоформатники иль наоборот.

Например, в новостные строки на экран можно запросто выводить иконки из описателя ui_icons_npc, используя типа:

sTextureFile = "ui\\ui_iconsTotal"

posTexture = Frect():set(x,y,w,h)

db.actor:give_game_news(sText, sTextureFile, posTexture, iTimeOut*1000, iTimeShow*1000)

 

А вопрос по классам "зачем остальные и как использовать" - адресуй в тематический топик. Тут я не помощник, предпочитаю самостоятельно пробовать/проверять и уж потом задаваться вопросами. Ине люблю отвечать тем, кто ждет ответов на вопросы, не удосужившись самому ничего не сделать для получения ответа ...

  Раскрывающийся текст (Показать)
Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

О Боже... Зачем же так мудрить:

add_item.item_icon:Init("ui\\ui_icon_equipment",x, y, width, height) -- это где расположить на экране.

Чтобы вырезать из текстуры область есть метод SetOriginalRect(x,y,w,h)

т.е.

add_item.item_icon:Init("ui\\ui_icon_equipment",x, y,width,height) -- из какой текстуры и куда поместить на экране.

add_item.item_icon:SetOriginalRect(x,y,w,h) -- откуда вырезать из текстуры.

Ссылка на комментарий

Просто добавлю к посту Shadows более общий вариант написания кодов:

--/ заданные координаты окна (левый верхний угол, ширина и высота)
local iPosX, iPosY, iWidth, iHeight --/ numbers (x,y,width,height)
--/ в качестве примера взята иконка аптечки из ui_icon_equipment
local x, y, width, height = 300, 700, 100, 50 --/ абсолютные координаты иконки в общей текстуре

--/ создаем объект класса статик
wnd = CUIStatic() --/ userdata

--/ инициализируем окно (по координатам-размерам) и в нем текстуру
wnd:Init("ui\\ui_icon_equipment", iPosX, iPosY, iWidth, iHeight)

--/ проецируем в окно фрейм иконки из общей текстуры (по координатам-размерам)
wnd:SetOriginalRect(x, y, width, height) --/ показываем иконку аптечки

--/ растягиваем/сжимаем текстуру фрейма (иконки) по размеру основного окна
wnd:SetStretchTexture(true)

 

При необходимости можно в этом же окне сменить текстуру:

wnd:InitTexture("new_texture")

и/или заново назначить отображаемый фрейм новой иконки:

wnd:SetOriginalRect(new_x, new_y, new_width, new_height)

 

(все это достаточно легко самостоятельно посмотреть в реальных кодах игры/модов)

 

P.S. Следует учитывать версию игры и оконные классы к которым применяются подобные коды.

Для ЧН/ЗП в некоторых случаях требуется инициализация основного окна через:

 

wnd:SetWndRect( Frect():set( iPosX, iPosY, iWidth, iHeight) )

 

c последующей инициализацией нужной текстуры.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Такой вот вопрос, товарищи. Если я прописываю неписям новую звуковую схему со всеми возгласами, криками итд. - звуки, положим, все где положено лежат. А вот нужно ли новую схему озвучки в скрипты прописывать куда-нибудь? Или движок сам цепляет её, если в character_desc она указана?

Изменено пользователем ColR_iT
Ссылка на комментарий

Если конкретный непись - в логике указываешь, если вообще всем, то добавь в character_descr ссыль на папку со своей озвучкой, но смотри чтобы все файлы присутствовали, например у зомби нет половины озвучки в отличие от сталкеров, потому что не предусмотрено скриптом, что они будут говорить.

Изменено пользователем ColR_iT
Ссылка на комментарий

Капрал Хикс, выражай мысли понятнее, иначе и сам путаешься ...

1. Схема, и тем более новая, подразумевает как минимус скрипты - новый файл или изменение существующего.

2. Новая звуковая тема - тоже требует внесения ее в sound_theme.script.

3. Добавка новых звуковых файлов может и не требовать каких-либо правок (если добавляешь рандомные звуки) или их регистрацию в script_sound.ltx (и ему подобным).

4. В character_desc указывается путь к папкам, соотв. типу/группировке непися, а не к "новым схемам/файлам".

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Здрасте не подскажете как создать логику вертолета на чн. Зарание спасибо.

 

Так же как и на ТЧ. --/Artos

Изменено пользователем Artos
Ссылка на комментарий
Строгое предупреждение от модератора Cyclone
Если с первого раза не доходит, хорошо. П. 2.1.2., дублирование сообщений. Занесение в шкалу.
Ссылка на комментарий

Конкретнее... Вообще логику никак не реанимируешь - надо самому ее прописать. А сам вертолет и все его движения типа, атаки, перемещения заложены в движке. Разговоры пилотов - в скрипте. Логику надо писать самому, почитай здесь пункт 15.3.12

Ссылка на комментарий

Люди может кто помочь с логикой?

Нужно чтоб НПС лежал раненым, а после помощи ему от ГГ переходил в на камп логику.

  код (Показать)
Изменено пользователем Artos
Ссылка на комментарий

qwqwqw, схема раненого (wounded) не управляется 'в ручную', т.е. она в(от)ключается автоматически для всех неписей в зависимости от состояния их здоровья (health или psy_health).

Соответственно у нее отсутствует функция 'set_scheme', которая вызывается при внешем включении общих схем, что и приводит к вылету в твоем случае.

Очевидно тебе требуется использовать какую-нибудь переходную фазу (например remark), из которой НПС при ранении и последующего выздоровления переходил бы в 'kamp' или замутить подобное на инфопоршне: ранили -> включится условие перехода в камп-схему.

 

Ну а чтобы НПС уже лежал раненым - следует его 'сделать' раненым. См. как это сделано для того же Толика на Кордоне в ТЧ.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Прочитал этот урок. Не помогло. В лог вывелись секции из алл.спавна.

Могу выложить всё что я редактировал/создавал.\

Алл спавн:

  alife... (Показать)
Изменено пользователем ColR_iT

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

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

  Раскрывающийся текст (Показать)
Ссылка на комментарий
qwqwqw, могу ошибаться, но, кажется, для перехода из схемы "wounded" в схему "kamp" нужно выдать инфопоршень "+info_red_strannik_dial_1". Лечение аптечкой здесь не при чем.

Даёшь новый сюжет СТАЛКЕР-2!

Ссылка на комментарий

qwqwqw, Определись уже наконец!

1. Ты спавнишь его раненым, а в логике просто прописываешь камп, и под действием аллайфа после выздоровления он пойдет на камп

2. спавнишь живого-здорового но указываешь в логике wound и условия перехода на kamp

НО НЕ НАДО ДЕЛАТЬ ВСЕ СРАЗУ!Сложно будет...

Ссылка на комментарий

qwqwqw, бездумные попытки писать/править скрипты/логику ни к чему хорошему НЕ приведут.

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

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

Твои ошибки:

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

2. Прописав в активной схеме (remark) свои условия для схемы 'раненый' ты хотя бы понял ЧТО ты написал?

Перевожу на понятный язык: "При здоровие менее 101%" - валяться раненым и просить о помощи. Автолечение аптечкой (это из модов) запрещено. При получении инфопоршня - перейти к схеме 'kamp'."

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

И что же ты удивляешься что твоя "логика" не работает?

Если бы даже твой НПС съел бы данную ему аптечку, игнорировав запрет на автолечение, то наберется ли он от аптечки 101% здоровья? Вообще он может набрать 101 процент здоровья, чтобы выйти из схемы раненого? И не просто схемы с дефолтными параметрами, а именно тобою ему прописанного - здоровым валяться и взывать к помощи.

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

Повторю: Бездумные попытки писать логику - напрасная трата времени. Ну а другим ... надоедает помогать напрасно тратить время.

 

Старлей, дык он даже здорового (101%) валит с ног своей "логикой" и еще чего то ждет ...

 

Добавлено через 13 мин.:

strelok200, если ты считаешь по принципу: "Я буду ковыряться в кодах - а дядя будет искать мои ошибки и подсказывать как и что править" - то ошибаещся. Врядли кому хочется копаться в твоих портяках кодов в поисках ошибок и гадать чего же ты наковырял.

Ты даже неудосужился до сих пор понять что такое лог-файл и чем он может и должен помогать моддмейкеру ...

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

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

 

Причин 'битья' сэйвов и безлоговых вылетов - великое множество и перечисять их тут и гадать никто не будет для тебя персонально.

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Возник вопрос: (ЗП 1.6.00)

Поставил на функцию спавна цикл, но тот действует только один раз, а должен 15, можете подсказать, в чём ошибка?

function spawn_item(spawn_item, npc)
  for i=1, 15 do
    if npc==nil then
      npc=db.actor 
    end
    return alife():create( items[math.random(#items)],
      npc:position(),
      npc:level_vertex_id(),  
      npc:game_vertex_id(),
      npc:id())
  end
end

Изменено пользователем Artos
Ссылка на комментарий

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

  Цитата
for i=1 to 15 do

Неверно, здесь Tris прав, однако тут

  Цитата
return alife():create(items[math.random(#items)], npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id())

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

Следует либо убрать его совсем, либо, если нужны все 15 серверных объектов, заспавненных в рюкзак к npc, можно заполнять таблицу и возвращать уже ее.

  Например (Показать)
Изменено пользователем Artos

ТЧ 1.0004. SAP и Trans mod

github

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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