Пользователей: 0
Гостей: 1507
Всего: 1507

» Подробно
» Сегодня

Привет, гость!









Автор Сообщение
G-H-O-S-T
    
Посты: 101
Откуда: Тында
Возраст: 30
30-09-2010 17:05 GMT3 час. #1354505   
SkyLoader Это понятно. А если в логике прописать walker сделать путь например до остова грузовика возле "АТП". Только я незнаю как сделать чтобы неписи пошли после того как Петруха даст команду:obstenu:


Darkscape
    
Посты: 692
Откуда: Якутск
Возраст: 27
30-09-2010 17:05 GMT3 час. #1354506   
SkyLoader
Я бы посмотрел,но комп слетел.
Сестра скоро должна принести диск с виндоузом.
Да и что в нём надо делать?


SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
30-09-2010 17:12 GMT3 час. #1354515   
G-H-O-S-T, там надо с инфопоршнями работать. А потом, там места нету**500540b7e12bf63c3891**]$game_data$ = false| true| $fs_root$| gamedata\[/code]


Хочешь работать нормально, работай один!
G-H-O-S-T
    
Посты: 101
Откуда: Тында
Возраст: 30
30-09-2010 17:18 GMT3 час. #1354520   
SkyLoader А вот почему их сделали только четверых, вот блин проказники...Получается, можно сделать так, я "спавню" " неписей "с другой стороны "АПТ", потом беру "квест" бегу туда, а "неписи" уже воюют. а я подкатываю со своими.Думаю так будет удобнее, ну по крайней мере легче.


SkyLoader
    
Посты: 755
Откуда: Москва
Возраст:
30-09-2010 17:21 GMT3 час. #1354526   
G-H-O-S-T, а если квест не взял, то они там уже повоевали :-G Надо уж в диалоге с Петрухой сделать спавн.


Хех, а у меня еще пол седьмого) ;-)

отредактировал(а) SkyLoader: 30-09-2010 17:28 GMT3 час.

Хочешь работать нормально, работай один!
G-H-O-S-T
    
Посты: 101
Откуда: Тында
Возраст: 30
30-09-2010 17:23 GMT3 час. #1354529   
SkyLoader Ну да ладно как-нибудь разберусь. Ладно спасибо я пошел спать.


MRN$
    
Посты: 114
Откуда:
Возраст: 16
30-09-2010 19:02 GMT3 час. #1354615   
Тут, выше про fsgame.ltx упоминали - с 2008 года сижу на таком варианте и счастлив, устан


всё легко
Darkscape
    
Посты: 692
Откуда: Якутск
Возраст: 27
30-09-2010 19:09 GMT3 час. #1354617   
Вопрос
И ещё,какую строчку надо менять чтоб торгаши покупали вещи по любой цене?

отредактировал(а) Darkscape: 01-10-2010 04:27 GMT3 час.

Artos
    
Посты: 4176
Откуда:
Возраст: 65
30-09-2010 19:13 GMT3 час. #1354620   
MRN$
Сравни: :-)[sp**500140b7e12bf63c3891** = true | false| $mycop_data_root$| logs\
$screenshots$ = true | false| $mycop_data_root$| screenshots\
[/code]


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
MRN$
    
Посты: 114
Откуда:
Возраст: 16
30-09-2010 19:32 GMT3 час. #1354635   
У нас по разному: у меня - сейвы, скриншоты, логи и user.ltx-ы, у каждого мода свои, у тебя - общие, но в корне... если у тебя один мод, то ничего...

Наша разница:
У тебя: "$app_data_root$ в $fs_root$",
а у меня: "$app_data_root$ в $game_data$".

отредактировал(а) MRN$: 30-09-2010 20:08 GMT3 час.

всё легко
С Н А Й П Е Р
    
Посты: 115
Откуда: Самара
Возраст: 31
30-09-2010 20:07 GMT3 час. #1354650   
Люди, повторная просьба, расскажите мне, тупому, как спавнить в игре через скрипт персонажей, арты, предметы и монстров, кучу статей просмотрел, не понятно, да и написано тока как спавнить сталкеров, а про предметы и монстров ни слова....


Очень обидно, когда у тебя Stayr Aug A2 и Нано-костюм, а какой-то драный бандит снял тебя с ПМ в голову!!!
Artos
    
Посты: 4176
Откуда:
Возраст: 65
30-09-2010 20:09 GMT3 час. #1354652   
MRN$
Ты невнимательно прочел:
Логи и скриншоты (мусор) перенаправлены с физичекого диска в RAM диск ($app_data_root$ -> $mycop_data_root$) => + скорость и отсутствие мусора (логов/скринов).
Сэйвы и user.ltx - действительно общие, но(!) имена сэйвам ты сам задаешь и не сложно их различать, user.ltx же вообще в основном под твой комп (именно под юзера), а не под мод, поэтому удобнее общий иметь дабы не копировать в каждый ...
Хотя конечно у каждого свои предпочтения :-)

С Н А Й П Е Р
Для таких как ты, уже давно написаны статьи/мануалы и пр.
Спавн предмета - простейший вариант спавна непися.
Читай вики, читай топики! Это только в дет.саду каждый раз каждого с ложечки кормят ... и то в младших группах.

отредактировал(а) Artos: 30-09-2010 20:16 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
30-09-2010 20:20 GMT3 час. #1354659   
как сделать квест перед стартовым диалогом чтобы после него появилось задание поговорить с волком а раннее никак


Horrible area mod Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
karavan
    
Посты: 940
Откуда:
Возраст:
30-09-2010 20:54 GMT3 час. #1354677   
С Н А Й П Е Р Через что ты собираешся спавнить? Как сказал товарищь Artos мануалов море. А с**500140b7e12bf63c3891**e]function name()
local obj = alife():create("yan_zombied_respawn_1",vector():set(-243,-20,-129),13586,8)
end[/code]

СидырыЧЪ Шаманить с инфо_поршнями.


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
СидырыЧЪ
    
Посты: 208
Откуда:
Возраст: 30
30-09-2010 21:01 GMT3 час. #1354684   
karavan
ну это понятно я создал диалог а вот только как создать такой поршень чтобы только после него задание к волку появилось


Horrible area mod Видео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
karavan
    
Посты: 940
Откуда:
Возраст:
30-09-2010 21:10 GMT3 час. #1354686   
СидырыЧЪ Что значит?

такой поршень чтобы только после него задание к волку появилось

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


Анонс мода-аддона "S.T.A.L.K.E.R. - Безопасная земля"
Узнай о моде больше - подпишись на канал (кликабельно)
Mehanik Yar
    
Посты: 469
Откуда: Уфа
Возраст:
30-09-2010 21:26 GMT3 час. #1354697   
Ребят, а что в моде ОГЕС сделали, что в тачки можно хабар складывать? Надеюсь не с движком игры связано?
А то вроде все скопировал (вроде), но не высвечивается надпись, мол нажми таб и т.д., да и если нажать ничего не происходит.


Shape
    
Посты: 34
Откуда: Запорожье
Возраст: 49
30-09-2010 21:37 GMT3 час. #1354704   
Возможно ли получить имя/название левела имея его левел/гейм-вертексы?
Допустим на обьекте стоит метка,возможно ли получить текст,который у неё в описании/названии?


win win
    
Посты: 258
Откуда: о_О
Возраст: 12
30-09-2010 21:55 GMT3 час. #1354708   
Кто нить знает чё значит этот вылет
Expression : ai().get_game_graph() && ai().get_level_graph() && ai().get_cross_table() && (ai().level_graph().level_id() != u32(-1))
Function : CAI_Stalker::net_Spawn
File : E:\stalker\patch_1_0004\xr_3da\xrGame\Ai\Stalker\ai_stalker.cpp
Line : 376
Description : There is no AI-Map, level graph, cross table, or graph is not compiled into the game graph!

Делаю карту для мультиплеера
Вылетает при Клиент Синхроизация...


Мои модельки NEW!
erlik
    
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
01-10-2010 00:57 GMT3 час. #1354739   
Shape

Возможно ли получить имя/название левела имея его левел/гейм-вертексы?

Передаешь в функцию любой геймвертекс (от любого уровня -**500140b7e12bf63c3891**ph():valid_vertex_id(gvid) then -- проверка на валидность вертекса
lname = alife():level_name(game_graph():vertex(gvid):level_id())
end
return lname or ""
end
[/code]

если требуется перевести имя на русский - то game.translate_string(lname) в помощь.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
DOC_VENOM
    
Посты: 47
Откуда: Мышкин
Возраст: 32
01-10-2010 01:39 GMT3 час. #1354743   
Mehanik Yar :Возможно не кинул какой та из ui_***.ltx

добавлено спустя 1 минуту

Mehanik YarУ меня такая же проблема с gps-маячками

отредактировал(а) DOC_VENOM: 01-10-2010 01:40 GMT3 час.

Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
G-H-O-S-T
    
Посты: 101
Откуда: Тында
Возраст: 30
01-10-2010 09:02 GMT3 час. #1354772   
Что нужно и где прописать, чтобы диалог не повторялся у определенного "непися" дважды


DOC_VENOM
    
Посты: 47
Откуда: Мышкин
Возраст: 32
01-10-2010 13:01 GMT3 час. #1354854   
Ну дак что мне кто нибудь поможет:
Вопрос следущего характера:какой конфиг отвечает за ui_load.dds"текстура экрана загрузки"


Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
puma-sniper
    
Посты: 170
Откуда: information is blocked
Возраст: 33
01-10-2010 13:11 GMT3 час. #1354860   
SkyLoader
мне надо перерисовать мутанта


Artos
    
Посты: 4176
Откуда:
Возраст: 65
01-10-2010 13:21 GMT3 час. #1354869   
DOC_VENOM
"Порадую" тебя немного, за 'ui_load.dds' (текстура экрана загрузки) отвечает не конфиг, а ... движок (XR_3DA.exe). Причем оригинальный exe'шник (НЕ NoDVD) - запакован.
:-G


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
xXx[34rus]
    
Посты: 790
Откуда: Волгоград
Возраст: 29
01-10-2010 14:19 GMT3 час. #1354907   
В каком файле (в какой директории) можно подправить название того или иного предмета, которое отображается в инвентаре при просмотре его описания. Просто в некоторых модах бесят эти - item_<набор букв или цифр>. Хочется нормальных названий. Как это сделать? В каком фале можно прописать своё название вместо уже существующего? Также - где можно подправить тексты диалогов (ужасные орфографические ошибки, типа "не восможно" - глаз не радуют), присутствующих в моде?


Слабый пол сильнее сильного в силу сильной слабости сильного пола к слабому.
Ну да поможет Вам F1, да сохранит Вас F2.
Во имя Control`a, Alt`a и святого Delet`a. Enter.
Strchi
    
Посты: 2581
Откуда: Уфа-Челябинск-Фритаун
Возраст:
01-10-2010 14:25 GMT3 час. #1354910   
xXx[34rus] Хаха Не в итемс.лтх Ищи в gamedata\config\text там все тексты а в конфигах только ссылки на них

добавлено спустя 1 минуту

У меня вопрос срочный Я в меню сделал видео везде а в загрузке синий фон когда видео ставлю Можно ли там видео или хотябы музыку сделать во время загрезки чтобы шла?

добавлено спустя 36 секунд

DOC_VENOM Чувак путь к текстуре там и все что относится к загрузке

добавлено спустя 37 секунд

G-H-O-S-T если уникальный диал то посмотри в ветках диалогов

добавлено спустя 1 минуту


# win win :
Кто нить знает чё значит этот вылет
Expression : ai().get_game_graph() && ai().get_level_graph() && ai().get_cross_table() && (ai().level_graph().level_id() != u32(-1))
Function : CAI_Stalker::net_Spawn
File : E:\stalker\patch_1_0004\xr_3da\xrGame\Ai\Stalker\ai_stalker.cpp
Line : 376
Description : There is no AI-Map, level graph, cross table, or graph is not compiled into the game graph!

Делаю карту для мультиплеера
Вылетает при Клиент Синхроизация...


Локация у тебя битая Компилировал не правильно пиши в ПМ помогу

добавлено спустя 1 минуту


# Mehanik Yar :
Ребят, а что в моде ОГЕС сделали, что в тачки можно хабар складывать? Надеюсь не с движком игры связано?
А то вроде все скопировал (вроде), но не высвечивается надпись, мол нажми таб и т.д., да и если нажать ничего не происходит.


Нет! Не двиг! непонял тя что ты скопировал но багажник там представлен как ящик просто в конфиге Сначала поищи где то в gamedata\models\

добавлено спустя 2 минут


# СидырыЧЪ :
как сделать квест перед стартовым диалогом чтобы после него появилось задание поговорить с волком а раннее никак


секцию кв отвечающую за появление кв раньше.... скажем при начале разговора пиши подробности в ПМ

добавлено спустя 1 минуту


# С Н А Й П Е Р :
Люди, повторная просьба, расскажите мне, тупому, как спавнить в игре через скрипт персонажей, арты, предметы и монстров, кучу статей просмотрел, не понятно, да и написано тока как спавнить сталкеров, а про предметы и монстров ни слова....

Cпавн через скрипт
Теория
В скриптах есть одна единственная функция, отвечающая за спавн объектов:
alife():create(section,position,levelvertex,gamevertex)
Строго говоря, их две: create create_ammo но различия между ними не существенны. Imp 22:45, 23 июля 2007 (EEST)
Первый параметр - секция в конфигурациях, описывающая объект, например "bolt","med_kit" - это простые секции, простых объектов а есть объекты, которые переходят в онлайн/оффлайн, это неписи, монстры и так далее, например mil_killer_respawn_2 - спавнится снайпер группировки киллеров.
С позицией, думаю объяснять не надо, только существует нюанс - высота это Y, а не Z. Задать позицию можно такой конструкцией vector():set(x,y,z), где x, y и z - координаты точки на уровне, где спавним объект.
Дальше сложнее, так как сам толком сформулировать не могу.
Начнем от простого к сложному. На каждом уровне много объектов, все объекты состоят из полигонов, у каждого полигона есть вершины – вертексы.
Именно они и должны здесь указываться, зачем - не особо понимаю, скорее всего для точного позиционирования объекта. Например, можно получить вертекс ближайший к актору - db.actor:level_vertex()
Дальше идет гораздо более интересный параметр game_vertex, это почти то же самое, что и level_vertex, но (!) это глобальные величины! Если level_vertex считается для уровня, то game_vertex - для всей игры, и нужен он для того, чтобы указать на какой карте спавнить объект (более вразумительного объяснения я не нашел).
Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex в четвертом параметре Например:
db.actor:game_vertex()
Итак, чтобы, например, заспавнить болт под ногами актора, пишем:
alife():create("bolt",db.actor():position(),1,db.actor:game_verte())
Почему 1, а не level_vertex? Проверено - разницы особой нет, какой level_vertex, хотя в некоторых случаях надо прописывать валидный вертекс, а то предмет может просто заспавнится не там, где планировалось... Но по большей части все проходит нормально и с единицей. (Игнорирование level_vertex может приводить к проваливанию произведенных предметов/персонажей под землю.) А вот game_vertex решает все - он указывает на каком уровне спавнить предмет, поэтому его надо указывать. Теоретически можно просто найти для каждого уровня по одному game_vertex'у и использовать их в скриптах. На самом деле game_vertex показывает какой фрагмент карты используется (вся карта разбита на кусочки имеющие сквозную нумерацию по всем уровням и game_vertex выбирает нужный) соответсвенно неправильное использование черевато....
Кроме того - есть еще один параметр - ID объекта, если указать ID NPC или актора - то предмет заспавнится у него в инвентаре.
Пример (спавним артефакт Медуза в инвентаре у актора):
alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())
Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.
Серверный обьект позволяет свеже созданного NPC или тайник затарить разными рулезами/артефактами. Например, вот так создадим перед входом к Сидоровичу долговца и засунем в него пачку патронов:
local obj
local a = vector() -- Задаем тип переменной
local dir = db.actor:direction()

a.x = -243.61 -- координата X
a.y = -19.52 -- высота Y
a.z = -127.17 -- координата Z

obj = alife():create("bar_dolg_respawn_3",a,13193,8,65535)
alife():create_ammo("ammo_9x18_fmj",
obj.position,
obj.m_level_vertex_id,
obj.m_game_vertex_id,
obj.id,
20) -- число патронов
Кстати, create_ammo - практически тоже самое, что и create, разница в том, что create_ammo предназначена специально для спавна патронов и позволяет создавать неполные пачки патронов. Возможно есть еще какие-то отличия. Стоит учесть, что сами авторы игры спавнят патроны исключительно через create_ammo. Imp 22:38, 23 июля 2007 (EEST)
Просто минимальный набор - координаты, ID, секция,а из него (серверного объекта) обычно нужен только ID, так как по ID можно получить этот самый серверный объект:
(alife():object(id))
Его можно использовать, чтобы поставить метку, например, но я его лично использую для других целей - спавн сложных объектов, конкретно – NPC.
Например надо решить следующую задачу - надо создать наемника, сменить ему группировку и изменить его инвентарь, ну и в нагрузку - сделать другом для игрока.
В определенный момент заспавненый объект переходит онлайн, в этот момент вызывается callback - net_spawn.
Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!
Если они совпадают, например так:
if obj:id()==saved_id then ...
Важно то, что у серверного объекта ID - это параметр, а у онлайнового объекта ID получается с помощью функции. Это важно, а то можно прогореть.
Итак, мы поймали нашего киллера по ID.
Далее все очень просто - вызываем команды для спавна гаусса и патронов к нему в инвентаре NPC (см. выше), меняем группировку специальной функцией, и делаем его другом.
Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа "NPC", а не с серверными объектами.
Практика (часть 1)
1. Чтобы не повторяться в описании создания нового квеста, просто изучите статью по созданию квестов от Fr3nzy – лучшей статьи на эту тему я просто не видел :) Мы просто свяжем все воедино и научимся спавнить объекты из скрипта.
Небольшое отступление:
Почему предпочтительнее делать спавн скриптом, а не через тот же xrSpawner? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – она делает спавн через файл all.spawn, что приводит к:
• Невозможности совместить два мода, такой спавн использующих
• Необходимости каждый раз начинать новую игру
При спавне через скрипт ситуация иная: в подавляющем большинстве случаев, ранее сохраненные игры будут работать, что не может не радовать :)
Итак, определимся с квестом.
Задача: после разговора с Сидоровичем спавним зомби на территории фабрики в первой локации. Для того, чтобы не повредить оригинальный сюжет игры, задание будет выдаваться после прохождения квеста с флешкой Шустрого, так как появись там зомби одновременно с бандитами и Шустрым... я думаю, исход боя предрешен :)
Реализация: Постараюсь описать все действия максимально подробно, буквально по шагам. Первым делом запустите игру :)
В консоли введите команду:
rs_stats on или rs_stats 1
Тем самым мы включаем вывод информации на экран. Далее вводим еще одну команду:
demo_record 1
И «летим» на фабрику. Нам нужно выбрать место для спавна объектов и данный режим как нельзя лучше подходит для реализации задуманного. Помещаем камеру в точке предполагаемого спавна и записываем координаты - у меня получились 115, -6, -16.
Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).
Другой способ получения тех же сведений - прийти в нужное место и запустить там скрипт, который выдаст все нужные координаты. Я пользуюсь следующим скриптом (вызываю общеизвестным способом, через main_menu):
function main_menu:main_cheat_f3()
-- Выдадим сообщение о нашем местоположении
local text
local vid
local gvid
local a = vector() -- Тип переменной
local text

a = db.actor:position() -- Наше положение в координатах
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end
В результате не нужно эксперементировать мы сразу получаем все, в том числе и level_vertex и game_vertex. Imp 22:38, 23 июля 2007 (EEST)
Выходим из игры, идем в папку с установленной игрой и создаем каталог gamedata (предполагается, что «лепим» свой «мод» на «чистую» игру, без установленных модов, и имеем распакованные ресурсы игры в папке, скажем, gamedata source).
В папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование.
В файлах игры присутствуют 5 моделей гражданских зомби:
файлы zombi_1.ogf, zombi_1_ghost.ogf, zombi_2.ogf, zombi_trup.ogf, zombi_trup_2.ogf
Вернем в игру их всех :)
Уже имеются секции:
[zombie_weak]:m_zombie_e, [zombie_normal]:m_zombie_e, [zombie_strong]:m_zombie_e и [zombie_immortal]:zombie_strong.
Два последних типа используют одну и ту же модель zombi_trup.ogf, хм... непорядок, исправляем. Последняя секция выглядит теперь так:
[zombie_immortal]:zombie_strong
$spawn = "monsters\zombies\zombie_immortal"
visual = monsters\zombi\zombi_trup_2
panic_threshold = 0.05
Добавим пятую модель.
Для этого в конце файла создадим секцию:
[zombie_ghost]:zombie_strong
Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.
Пишем дальше:
$spawn = "monsters\zombies\zombie_ghost"
visual = monsters\zombi\zombi_1_ghost
Все. Сохраняем изменения и закрываем файл.
2. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script.
Отступление третье:
При написании статьи использовался оригинальный скрипт zombie_story.script из horror-mod’а. Концепция спавна перенесена практически без изменений, поэтому на авторство этого способа спавна я никоим образом не претендую :)
Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:
local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"}
Далее пишем функцию:
function spawn_zombies( position, total )
local zombie_index -- тип зомби из массива zombie_types
local new_pos, x_offset, z_offset -- объявляем переменные
for zombie_index=1, total do -- крутим цикл столько раз, сколько
задает переменная total
x_offset = math.random(5) -- случайное (рандомное) x от 1 до 5
z_offset = math.random(5) -- случайное (рандомное) z от 1 до 5
new_pos = position -- передаем координаты в функцию
new_pos.x = new_pos.x + x_offset -- прибавляем к указанной нами
координате x полученное выше рандомное x
new_pos.z = new_pos.z + z_offset -- прибавляем к указанной нами
координате z полученное выше рандомное z
-- Ниже, собственно и вызывается функция спавна случайного типа зомби
zombie_types[math.random(5)] привязанного к нашим координатам
alife():create(zombie_types[math.random(5)],new_pos,db.actor:level_vertex_id(),db.actor:game_vertex_id())
end
end
И последнее:
function zomby_story_1( actor, npc )
-- десять зомби на фабрике (Кордон)
local spawn_point = vector():set( 115, -6, -16 ) -- здесь указываем координаты,
выбранные нами для спавна, когда «летали» камерой :)
spawn_zombies( spawn_point, 10 ) -- собственно вызов предыдущей функции
с передачей ей координат и количества объектов
end
Все. Сохраняем и закрываем файл.
Продолжаем разговор :)
Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование.
Добавим в local killCountProps к монстрам строчку:
zombie_weak = 1, zombie_normal = 2, zombie_strong = 3
В local sect_alias строчку:
zombie_weak = "zombie_weak", zombie_normal = "zombie_normal", zombie_strong = "zombie_strong"
А ниже в monster_classes строчку:
[clsid.zombie_s ] = "zombie"
В функцию getNpcType(npc) добавляем конструкцию:
elseif npc:character_community() == "zombie" then
community = "zombie"
Сохраняем изменения и закрываем файл.
Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.
Expression : fatal error
Function : CInifile::r_string
File : D:\xray-svn\xrCore\Xr_ini.cpp
Line : 351
Description :
Arguments : Can't find variable icon in [zombie_weak]
Все верно – игра не знает какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:
• Если дружите с Фотошопом, отредактировать этот файл (нарисовать, добавить иконки);
• Взять готовый из любого мода, естественно, с разрешения авторов мода. Сейчас мы пропустим данный аспект и присвоим нашим зомби иконки контролера :)
Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр
icon = ui_npc_monster_kontroler
Все. Вылетов не будет.
3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример статью по созданию диалогов от BAC9-FLCL.
Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:

………

escape_trader_talk_info_999
7770
9991
9992
9993
9994
9995
9996


escape_trader_talk_info_9992
99922


escape_trader_talk_info_99922
9996
9995


escape_trader_talk_info_9993
99933


escape_trader_talk_info_9995


escape_trader_talk_info_3121
9996
9995


escape_trader_talk_info_3131
9996
9995


escape_trader_talk_info_41
9996
9995



escape_trader_talk_info_7770
7771


escape_trader_talk_info_7771
7772
7773


escape_trader_talk_info_7772
7777


escape_trader_talk_info_7773
7779


escape_trader_talk_info_7779
9996
9995


escape_trader_talk_info_7777
esc_zombie.zombie_story_1
9996
9995



escape_trader_talk_info_51
9996
9995

……

И также связанный с ним файл stable_dialogs_escape.xml. В самом начале файла пишем следующее:

Происшествий никаких не было?


Да знаешь... Вроде как тихо все у нас. Хотя, вот, вспомнил! Говорили мне
на днях, что на фабрике, ну, там, где бандюки околачиваются постоянно, видели какиих-то то ли
людей, то ли призраков... Мало ли что спьяну почудится - я и сказал этим паникерам, мол,
закусывать надо! Хех, блин, алкаши...



Дык мне по любому мимо фабрики топать - заодно и посмотрю на этих
"людей-призраков".



Да я как-то не собирался в ту сторону...


Ну, смотри сам, все равно будь осторожен.


Ага. Сходи, проветрись. Потом зайдешь, расскажешь, что там и как.


Здесь проход воспрещён, сталкер.

Все. Можно запускать игру, идти на Кордон, после разговороа с Сидоровичем, в зависимости от выбранного Меченным решения, бежим на фабрику и … смотрим сами :)
Готовые файлы примера (смотрите полные файлы примера в конце статьи)
Spawn Lib (204 Кб)
Домашнее задание - вернуть в игру 6-ой тип гражданского зомби :)
Продолжение следует…
Практика (часть 2)
4. Сегодня мы закончим с зомби в полном объеме – добавим их описания в энциклопедию, добавим иконки, и разберемся с «домашним заданием»:) Думаю, что внимательно изучив эту статью, вы сами сможете через скриптовые функции восстановить любого персонажа, не вошедшего в финальный релиз игры. Если у кого хватит времени и желания, те могут даже написать что-то типа «Ночи живых мертвецов» :) - серию квестов, связанную своим собственным сюжетом. Итак, «домашнее задание» - добавляем в игру шестого зомби.
• Создаем в папке gamedata папку meshes, в ней папку monsters, а там – папку zombi. В папке meshes хранятся модели персонажей, объектов, окружения, присутствующих в игре. Как я уже говорил выше, в игре представлено 5 моделей гражданских зомби, а вот текстур – 6. Также немного смутила нумерация моделей – 1, 2, 4... А где третий? Наверное, сбежал :)
• Скопируем из папки с оригинальными файлами игры в созданную нами папку zombi файл zombi_2.ogf и переименуем его в zombi_3.ogf. Откроем файл нашей новой модели любым HexEditor’ом, я использую BiEd (Binary Editor 1.00). Так как данная статья рассчитана не только на «продвинутых юзеров», но и на «обычных чайников», которые, тем не менее, хотят «что-нить замутить» и при этом не сильно «парить моск», я не буду рассказывать здесь про адресацию, двухбайтовую запись и т.д., я просто наглядно покажу, где что поправить :)
Файл модели до редактирования


Файл модели после редактирования

На скринах видно, что мы просто изменили для этой модели путь к текстуре. Все. Без использования 3D-редакторов и затраты кучи времени на обработку модели в них, мы получили абсолютно новую (на внешний вид) модель. :)
5. Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:
[zombie_old]:zombie_normal
$spawn = "monsters\zombies\zombie_old"
visual = monsters\zombi\zombi_3
в файле esc_zombie.script изменяем массив в первой строке:
local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal",
"zombie_old", "zombie_ghost"}
В функции spawn_zombies изменяем строку спавна:
alife():create(zombie_types[math.random(6)],new_pos,
db.actor:level_vertex_id(),db.actor:game_vertex_id())
в функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):
spawn_zombies( spawn_point, 12 )
Всё. Сохраняем и закрываем.
6. Копируем в папку gamedata\config\gameplay\ файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:



ui_npc_monster_zombieg
enc_mutant_zombieg_general

И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:

Зомби, гражданский


Зомби-призрак, гражданский


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



Воздействие Выжигателя мозгов полностью разрушает структуру личности,
оставляя только телесную оболочку.\n\n Побродив немного по Зоне, лишённые разума тела
начинают превращаться в настоящих зомби. Из рефлексов у них остаются лишь самые примитивные,
оружие и экипировка скоро приходят в негодность. В результате зомби становятся собой ни чем
иным, как медлительными полутрупами, которых наличествуют лишь два эффективных раздражителя:
еда и сон. Зомби совершенно неразборчивы в выборе пищи и питья, поэтому их тела буквально
пропитаны радиацией и токсинами. Как правило, эти существа бесцельно бродят по Зоне или,
словно трупы, валяются внутри заброшенных построек. Однако, лишь только зомби почует близкое
присутствие живого человека, он сразу же пытается атаковать. Умудрённые опытом сталкеры
стараются обходить эти неуклюжие опустошённые оболочки.


Копируем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:

зомбированный, гражданский


зомби-призрак, гражданский


зомби, гражданский

Сохраняем и закрываем.
7. И последнее – добавим иконки. Скажу сразу, воспользовался готовым файлом, уже содержащим иконки зомби и других «восстановленных монстров» (спасибо Fr3nzy). Поэтому просто скопируйте файл ui_npc_monster.dds из архива в папку gamedata\textures\ui\, а файл ui_npc_monster.xml – в папку gamedata\config\ui\. Если вы хотите сделать собственные - прочитайте урок по изменению текстур.
Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.
Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку
icon = ui_npc_monster_kontroler
На:
icon = ui_npc_monster_zombie
В секцию [zombie_ghost] добавьте строку:
icon = ui_npc_monster_zombieg
Сохраняйте изменения. Всё.
Вот готовые файлы примера. (256 Кб) Удачи и спасибо за внимание :)
Спавн NPC
Эта часть статьи написана Arhet и создана на примере того, как в SRP Mod были созданы NPC группировки "Грех".
Задействуем файлы:
• gamedata\config\gameplay\character_desc_escape.xml
• gamedata\config\gameplay\npc_profile.ltx
• gamedata\config\creatures\spawn_sections.ltx
Начнем с character_desc_escape.xml. Описание что значит каждая строка писать не буду, так как все до меня уже сделано.
Тут создадим нового персонажа:

GENERATE_NAME_bandit
ui_npc_dark_1

sim_stalker_novice_bio

esc_dark_stalker_01 - вот тут наш новый класс кстати.
dark_stalker stalker_terrain


198
-24

actors\dark_stalker\dark_stalker_1
characters_voice\human_01\monolith\
-1
0

[spawn] \n
wpn_dark_colt1911 \n
ammo_11.43x23_hydro \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"


#include "gameplay\character_criticals_3.xml"

dm_hello_dialog
dm_cool_info_dialog

Впишем наш код после какого-нибудь
Теперь идем в npc_profile.xml и туда вгоняем:

esc_dark_stalker_01
esc_dark_stalker_1

Теперь надо заняться spawn_sections.ltx. Скрипт будет «брать NPC» как раз из этого файла. Пишем туда:
• [esc_dark_stalker_1]:stalker – имя секции для скрипта..
• $spawn = "respawn\esc_dark_stalker_1"
• character_profile = esc_dark_stalker_1 – ссылка на описание нашего NPC
• spec_rank = regular – спец ранг
• community = dark_stalker – группировка.
Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.
Тока забыли что данному НПС будет присвоенная дефолтовая логика (т.е. тупо хожу куда сам не знаю) забыли упомянуть про (ххх - лока):
ххх gulag.script (действия НПС! Где можно: где можно присвоить статус кампера; волкера; и.д.т)
ххх gulag.ltx (дублер логики т.е. дублирует кратко действия НПС)


добавлено спустя 2 минут


# Darkscape :
Вопрос
И ещё,какую строчку надо менять чтоб торгаши покупали вещи по любой цене?

gamedata\misc\config\trade_******.ltx

отредактировал(а) Strchi: 01-10-2010 14:38 GMT3 час.

Artos
    
Посты: 4176
Откуда:
Возраст: 65
01-10-2010 14:46 GMT3 час. #1354928   
Strchi
Ну о-о-очень "содержательный" пост. Портянка на пол-страницы - толку на пару слов ... :-(

1. Видно, что xXx[34rus] незнайка в ковыряниях кодов, поэтому 'голый' путь к папке с кучей 'русских' файлов для него ... 1% пользы.
Лучше бы дал ссылку на статью/вики, иль ФАК, где он смог бы почитоть и после этого отыскать нужную строку для правки.

2. Для DOC_VENOM'а ты даешь подтверждение моему посту? :-)
'Там' - тоже о-о-очень внятный указатель.

3. G-H-O-S-T спрашивкает о конкретной ошибке (вероятно он понимает про кривую компилляцию).
Ответ в стиле флуда, да и топик собственно "Вопросы и ответы", т.е. ответы в нем, и 'прятаться' в ПМ - стыдно что ли? &P

4. Для Mehanik Yar, также ответ в стиле 'пофлудил - отметился'. Толку ~0%.

5. С Н А Й П Е Р'у уже был дан ответ. И раз уж дал тут материал, то хотя бы отметил, что это цитата, а не отсебятина!
Да и ... с самого начала процитированного:

В скриптах есть одна единственная функция, отвечающая за спавн объектов:
alife():create(section,position,levelvertex,gamevertex)

- уже значительная неточность!
Полностью эта функция выглядит так:
  alife():create(section, position, level_vertex_id, game_vertex_id, object_id)
- где 'object_id' необязательный параметр, указываемый при спавне в другой объект (например в рюкзак к неписю иль актору), а не 'просто' на локацию.

6. Darkscape спрашивает про строку для правки, в ответе - путь к файлам торговли.

Резюме: Лучше бы помолчал, чем практически бесполезной портянкой захламлять топик! (ИМХО)


отредактировал(а) Artos: 01-10-2010 15:13 GMT3 час.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Zmey1989
    
Посты: 3
Откуда: Самара
Возраст: 35
01-10-2010 14:50 GMT3 час. #1354933   
Люди, подскажите пожал как адаптировать иконки под широкоформат!!!


Artos
    
Посты: 4176
Откуда:
Возраст: 65
01-10-2010 15:19 GMT3 час. #1354956   
Zmey1989
Адаптируются НЕ иконки, а их отображение на экране. Для адаптации требуется создавать/править файлы, отвечающие за размер ячеек, в которые 'растягиваются иконки' (например: \gamedata\config\ui\nventory_new.xml -> inventory_new_16.xml). файлы с суффиксов '_16' - именно под широкоформатники. Делай размер ячеек на 3:4, а 16:9.

P.S. Strchi
Чувствуется что "бывалый" ... Что ни фраза - одни погадалки. Даже сейчас:

Так я ему написал ...
- ты нафлудил сразу многим, кого же ты за 'ему' теперь имеешь ввиду?
И прочти мою пояснялку под спойлером. Врядли кого интересует 'как ты учился', интересуют ответы!

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

отредактировал(а) Artos: 01-10-2010 15:28 GMT3 час.

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


Форумы Архив » Свалка Вопросы и ответы (ТЧ по 18.11.2010)


Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2025 «Stalker-Portal.ru»