Кстати по скриптовым диалогам:В статье по ним на АМК написано, что первую фразу надо делать такой:
dlg:AddPhrase(Text, "0", "", -10000)
Или я чего не понял, но так не правильно.Будут глюки, которые я раньше описывал..по крайней мере у меня глючило.А вот если сделать так:
dlg:AddPhrase(Text, "0", "-1", -10000)
то все будет работать на отлично. Максим Р.
Хм, ну не знаю, у меня глючило.Фиг с эим, главное щас не глючит:-)
отредактировал(а) Stalk15: 26-09-2010 19:39 GMT3 час. Новые фишки для сталкера(см. журнал)
Stalk15, я в своём моде торговлю информацией писал через скриптовый диалог и первая фраза в нём выглядит так:
...
local phr = dlg:AddPhrase("dm_general_trade_info","0","",-10000)
...
Скриптовые диалоги - в топку их!
Не, если в них разобраться, то в некоторых случаях они очень даже полезны. Считай в моём случае с торговлей информацией, если бы не скриптовые диалоги, то мне бы пришлось составлять порядка сотни текстовых фраз для каждой информации, потом их дублировать для разной стоимости. После чего составлять здоровенный диалог с огромной развилкой. Потом всё равно бы пришлось писать сриптовую функцию для определения цены. А так, считай, у меня всего 5 фраз, а меняются только значения переменных.
отредактировал(а) Максим Р.: 26-09-2010 20:16 GMT3 час.
Мартышка к старости слаба глазами стала;
А у людей она слыхала,
Что это зло еще не так большой руки:
Лишь стоит завести Очки.
Очков с полдюжины себе она достала;
Вертит Очками так и сяк:
То к темю их прижмет, то их на хвост нанижет,
То их понюхает, то их полижет;
Очки не действуют никак.
«Тьфу пропасть!» говорит она: «и тот дурак,
Кто слушает людских всех врак:
Всё про Очки лишь мне налгали;
А проку на?-волос нет в них».
Мартышка тут с досады и с печали
О камень так хватила их,
Что только брызги засверкали. К несчастью, то ж бывает у людей:
Как ни полезна вещь,— цены не зная ей,
Невежда про нее свой толк всё к худу клонит;
А ежели невежда познатней,
Так он ее еще и гонит.
Artos
Насчет перехвата консоли сталкера - действительно единственный способ это постоянно(в режиме апдейта) писать всю активность консоли в лог ( через get_console():execute("flush") и потом (опять же в режиме апдейта) мониторить лог_файл внешней прогой на предмет наличия в нем введенной в консоль своей строки-команды?
Пока это единственное, что приходит в голову - но это явно очень неоптимальное решение и наверняка постоянная запись лог-файла будет грузить систему.
...Но ведь люди как то реализовали(тут недавно пост был на тему смены fov -) использование СВОИХ консольных команд - вот только как... правда пишут что вроде как dll-ку правили - но это тоже не очень понятно как именно сделано, да и сложновато выходит.
-----------------------------------------------------------------------------------------------------
писать активность консоли в лог-файл - оч.неумное решение.
Ну когда других вариантов(кроме правки dll) нет - только это и приходит в голову :-)
А так согласен - тем паче если это приведет к фризам.
Очень жаль, что разрабы не экспортировали в скрипты метод чтения консоли - (типа Console.Readline() как в C#), вместо этого зачем то сделали совершенно ненужные методы вроде get_console():show() - открыть консоль и get_console():hide() - закрыть консоль. И кому они могут понадобиться...:no)
отредактировал(а) erlik: 27-09-2010 00:12 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
писать активность консоли в лог-файл - оч.неумное решение.
1. В собственно лог-файл попадет только тогда, когда иль движек иль 'ты' выгрузишь из буфера командой 'get_console():execute("flush")'. В противном случае в логе ты ничего не обнаружишь (точнее будешь иметь 'старую' порцию данных).
2. Ну а ежели будешь использовать 'flush' -> тормоза обеспечены и немалые!
Да и опять же придется писать/задействовать внешний парсинг лог-файла, что тоже далеко от 'идеала'.
Так что ... остается вариант правки движка (dll'ек), но это уже особый случае и если только овчинка стОит выделки.
'Как правили'? Не могу точно сказать, но можно предположить:
Набор кончольных команд известен. Варианта два:
а) - дописать свою комманду -> полная перекомпилляция движка/части.
б) - использовать уже имеющуюся, но не используемую или малоиспользуемую и подправить 'под себя'. Менее трудоемко, но тоже не простенько. P.S.
... И кому они могут понадобиться ...
Догадываюсь ;-) самим разрабам! Точнее их тех.поддержке. При закрытой консоле игрок НЕ видит 'красноты' в логе и 'спокоен'.
Эх, сколь таких горе-игрунов еще есть, которые от красно/желтых строк в консоле теряют нервы ... ;-)
Artos Да это я понимаю.
Мне нужно что бы координаты менялись в зависимости от случайности.
Пытался сделть вот так.
local obj = {
alife():create("npc_help_my", vector():set(190.56, -28.89, 408.756), 1216218, 4029),
alife():create("npc_help_my", vector():set(196.85, -28.89, 508.856), 1216218, 4029),
alife():create("npc_help_my", vector():set(160.34, -28.89, 105.256), 1216218, 4029)
}
Спавнит трех НПС.
А мне нужно что-бы выбирало одну позицию из данных в таблице.
---------------
А вообще возможно заспавнить НПС в случайной точки на локации?
karavan
Если тебе понятно - то и задавай вопрос так, чтобы его понял и другой!
Чт**500140b7e12bf63c3891**.p3.lv, pos_tabl.p3.gv)
local pos = pos_tabl[math.random(1,#pos_tabl)] --/ рандомная позиция!
local se_obj_rnd = alife():create("npc_my", vector():set(pos.x,pos.y,pos.z), pos.lv, pos.gv)
[/code]
Спавнить 'в случайной точке' - чревато! Необходимо проверять ее на валидность вертексов!!! да и ... по высоте - НЕ промахнись, а то засунешь в 'подземелье' иль в полет отправишь. Sakar74
Во-первых, соблюдай правила простейшей грамматики! А то пишешь аналогично: "Казнить нельзя помиловать". Гадайте мол сами ...
Во-вторых, сделать можно, дерзай! (мы не против &P)
Artos Чет всё равно спавнятся три НПС.
А можно еще варианты? :-)
----------------------
И если возможно то хотелось бы увидить примерчик спавна в случайном месте, т.е. на вертексы.
Я у себя в архивах нашел вот такой:
function get_random_coordinates(lname)
local gvn, gvx, lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname]
local min_dist = 100000
local data = {}
data.lvid = math.random(1, lvx)
data.pos = level.vertex_position(data.lvid)
data.gvid = 0
for a = gvn, gvx do
g1 = game_graph():vertex(a):game_point()
if g1:distance_to(data.pos) < min_dist then
min_dist = g1:distance_to(data.pos)
data.gvid = a
end
end
return data
end
но что-то ни как не могу его понять. Точнее где там именно спавн НПС. :-(
------------------------------
Razvedchick Ответ можно. Но СДК тебе по любому будет нужен для прописывания анимок в модель ОГФ.
Возникла идея создать систему критического востановления жизненных сил на продвинутых бронниках(костюмы Экологов,экзоскелет).
И ещё костюм надо редко пополнять запасами медикаментов(ну не бесконечно же он будет лечить).Когда уровень здоровья упадёт ниже 20-25 хп,то эта система резко восстановит уровень здоровья до 85-90 хп.
Что надо писать/делать?
karavan
твои вопросы/просьбы начинают навевать скуку ...
Спрашиваешь про создание таблички - оказывается тебе 'ведомо' ...
Спрашиваешь о табличке для спавна по рандомным точкам - опять 'не то' ...
Тебе дал заготовку таблицы с тремя точками спавна (ты из сам вписывай).
Там спавнится три непися по трем заданным точкам из таблицы и в конце примера - спавн непися по рандомной из заданных трех. При чем тут "всё равно спавнятся три"?
Спавни хоть сколько неписей, используя последний вариант - вот тебе и таблица и задание точки для рандомного спавна.
Более вариантов давать не буду, все же своей головой думать в первую очередь нужно!
А то уже почти скатились до вопросов типа 'как заспавнить чего-то' ...
Я уже тебе пряснил про 'случайные' точки! Их НЕ может быть!!!
Для "рандомного спавна" требуется:
1. Определить нужную локацию/карту;
2. Определить диапазоны вертексов (game- & level-). Диапазоны можно брать из готовых таблиц или определять сканированием нужной локации;
3. Из диапазонов рандомно выбрать вертексы (game- & level-), проверив их на валидность - это и будет основа точки спавна!
4. По выбранным вертексам (по game-) - определить позицию (position, т.е. координаты x,y,z).
...
СтОит возможно еще проверить, не занята ли точка спавна (чтобы не угодить в ранее заспавненный объект, хотя и не критично) иль не болтается ли рядом кучка врагов, дабы не быть сразу-убиенным ...
Все, что перечисленно уже не раз тут обсуждалось и давались готовые примеры. Немало примеров и в готовых модах.
В 'твоем' примере есть таблицы для вертексов и функция рандомного выбора точки спавна ('data' - это и есть pos,lv,gv) по этим таблицам. Спавна там нет, да и он собственно уже и банально делается штаным способом с использованием 'data'.
Преподносить тебе все это на блюдечке - сорри, но времени и желания(!) не имею. Darkscape
Писать нужно схему. Недавно это обсуждалось. Готовые подобные схемы 'самолечебных' броников можно посмотреть в Zenobian-моде и в Симбионе.
Кто мне ответит на вопрос, отчего могут спонтанно "переодеваться" неписи? Примеры:
1. бандосы могут носить любые шмотки, начиная от сталкерских, заканчивая долговскими и свободовскими.
2. наймы шляются в сталкерских костюмах.
3. некоторые квестовые персы "переодеваются" как им захочется, к примеру, место Охотника прописал визуал Лесника, первый раз захожу на локацию Бар всё норм, стоит Лесник, второй раз захожу, стоит просто сталкер, но это Лесник просто визуал поменялся. Та же история с пьяным долговцем, я его переделал на Зулуса, а он у меня вечно "переодевается" в различные долговские броником, в сталкерском одеянии я его не замечал. У него прописана группировка Долг.
Я – хозяин своей судьбы, но только судьба знает, где закончится мой путь.
TheDoktor
Спонтанность 'твоего' переодевания в 'xrs_armor.script' (или его аналоге).
Заимствуя схему переодевания неписей стОит все же задуматься о корректности работы своего мода от такого заимствования, т.е. как же она (схема) работает и что может 'натворить' и как её 'обуздать'.
Кидать в мод 'все до кучи шоб былО' врядли стОит ...
TheDoktor
Хе хе, ну ты и выдал. :lol) За столько времени не можем выучить схемы, которые были созданы года эдак 2-3 назад а то и больше, да и к тому же в редми по АИ паку от Стрима тоже все расписано. Соглашусь с Artos,ом, не всегда кое-какие фитчи подходят к тому или иному моду, и кидать все до жопы много я тоже бы не советовал,лучше мало но хорошо, чем много но херово...
Спустя некоторое время
Ну лан, поделюсь с вами интересующей меня темой :-) Короче я тут прикинул... а можно ли (чисто теоретически) переделать пистолетный слот в слот для шлемов (аля зп, ё-моё) или там завал полный? Ведь согласитесь - слот для пистолетов в игре (особенно для опытных игроков) не нужная игрушка.
отредактировал(а) Fantom2323: 27-09-2010 08:51 GMT3 час. Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
#Darkscape :
Возникла идея создать систему критического востановления жизненных сил на продвинутых бронниках(костюмы Экологов,экзоскелет).
И ещё костюм надо редко пополнять запасами медикаментов(ну не бесконечно же он будет лечить).Когда уровень здоровья упадёт ниже 20-25 хп,то эта система резко восстановит уровень здоровья до 85-90 хп.
Что надо писать/делать?
можешь в ОГСЕ глянуть, там есть и в бронике такая система с голосым сообщением, и как отдельно устройство
До каких пор людей, по крохам собиравших державу и беспощадно каравших её врагов, мы будем обзывать палачами, а индивидов, разваливших страну и пустивших на ветер труды целых поколений, именовать реформаторами? (Ф.М. Достоевский)
qwqwqwqw1 Настройки спавна артефактов призводятся в конфигах аномалий:
artefacts = af_vyvert,0.8, af_gravi, 0.2, af_gold_fish, 0.00 ;типы артефактов и коэффициенты их соотношений. spawn_blowout_artefacts = on ;включение возможности рождения артефактов artefact_spawn_probability = 0.14 ;вероятность, что во время срабатывания аномалии будет рожден артефакт artefact_spawn_idle = 24 ;насколько часто спонить артефакты в офлайне, в часах artefact_spawn_rnd = 50 ;вероятность заспавнить артефакт в процентах.
Данные параметры отвечают именно за рождение (спавн) артефактов. Манипулируя данными параметрами, можно заставить аномалию рождать артефакты каждый час. Респавна у артефактов нету. Они спавнятся не зависимо от имеющегося количества.
win win
Если проанализировать данные параметры, то можно заметить, что идловый спавн артефактов производится только в оффлайне. Тоесть, на неактивной локации. На активной локации, спавн может быть произведён только при активации аномалии.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
win win
Это работает, ИМХО, я как-то давно читал форум, там один перс рассказывал (и даже показывал) что будет если значение поменять в конфигах аномалий, там у аномалии была Горень всяких разных артефактов. Так что...
Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
Возможно ли создать проверку если ГГ убил НПС, который был другом для ГГ?
Я просто не могу понять что здесь нужно отслеживать... От когополучен Хит? А главное как это отследить? :-)
Artos
Спасибо я разобрался. Реализовал не много не так как в примере но главное работает.
скажите куда еще прописать оружие просто вылет при убийстве
Function : get_rank
File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\Restrictions.cpp
Line : 34
Description : cannot find rank for
Arguments : wpn_p90
на вики не посылать
Horrible area modВидео в журнале
--------------------------------------------------------------------
Важнейшая задача цивилизации - научить человека мыслить
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.