Так, дело движется, мод - строится.......
Спасибо Arist, а то я бы и дальше тупил, где подключать функции в bind_stalker.
Да к стати Arist, если так подумать, то мне кажется что места где можно спрятаться от выброса либо прописаны в одном из скриптов (наверняка там где то указаны координаты каждого убежища либо это как то привязано к гулагам)
И такой вопросик на последок....
Можно ли в модели ogg вместо пути к текстуре указать путь к файлу .ltx, это помогло бы сменять текстуры и сделать видимость смены рук при смене костюмов. А если нет, то можно как нибудь заставить игру переименовывать файлы ну или заставить думать что этот файл называется по другому??
добавлено спустя 13 минут
Arist
Нашёл, уже :-cool)
в файле ogsm_surge.script записаны координаты "убежишь", осталось лишь координаты новых уктытий записать и дело в шляпе !:buba
отредактировал(а) PoG ne Riba: 11-02-2012 12:31 GMT3 час. гений - нуб ^^'
Arist
я то не забыл, но вот подключить силу выброса забыл, на болотах, к примеру выброс вообще не вредит.
а размеры наверняка одни и теже используются, не подумал об этом ?
добавлено спустя 1 минуту
хотя если честно меня сейчас заботит совмещение с этим выбросом мод ai, а то там одни и теже скрипты используются
добавлено спустя 1 минуту
Я сейчас сделаю новое меню для своего мода, а потом опять полазаю в скриптах, там не сложно, надо лишь немного помозговать
отредактировал(а) PoG ne Riba: 11-02-2012 13:43 GMT3 час. гений - нуб ^^'
PoG ne Riba
l01 - это часть названия локации.Если ПЫСы назвали бы просто escape,так бы и было.А если бы Сообщество Мапперов указывало бы на выходе из СДК ,l13_boloto,так бы и называлось.Номер ничего не значит.
Это только к примеру?Если взять МапПак,к примеру.Есть "дебильный" метот(сам делал).
1.Ставишь МапПак.
2.Распаковываешь all.spawn.
3.Открываешь acdc.pl и находишь там:
package levels;
use strict;
use constant levels_info => (
{ gvid0 =>3700, },
{ gvid0 => 3337, name => 'marsh' },
{ gvid0 => 3324, name => 'lost_village' },
{ gvid0 => 3224, name => 'red_forest' },
{ gvid0 => 3153, name => 'warlab' },
{ gvid0 => 3076, name => 'generators' },
{ gvid0 => 3028, name => 'hospital' },
{ gvid0 => 2988, name => 'limansk' },
{ gvid0 => 2909, name => 'av_peshera' },
{ gvid0 => 2886, name => 'aver' },
{ gvid0 => 2881, name => 'puzir' },
{ gvid0 => 2862, name => 'peshera' },
{ gvid0 => 2792, name => 'atp_for_test22' },
{ gvid0 => 2661, name => 'l10u_bunker' },
Вычеркиваешь ненужную локу.
4.Там же в acdc,файл all.ltx. Вычеркиваеш ненужную локу.
5.Собираешь all.spawn и кидаешь в игру.
6.Из папки levels выкидываешь ненужную локацию и из других папок ненужный мусор связанный с ней.
Если выкинуть таким методом:пещеру,логово,какую-нибудь не сквозную(Как Свалка) локацию,метод пойдёт,а с проходной локой,обориётся связь между геймграфами и соответственно стрелка,напрвляющая на цель квеста,будет показывать неправильно,плюс НПСи не смогут переходить на другие локи,плюс,наверняка останется много текстурного мусора.Наверно ещё есть плюсы(ТОчнее минусы).
Но если одну,две локи - давай.
Возможно нам придётся переделывать и старые укрытия.Сделал в МГ четыре,а там ещё два,и одно за оградой.Я думаю координаты у скриптовых рестрикторов посбивались из-за новых лок.
отредактировал(а) Arist: 11-02-2012 16:09 GMT3 час.
Arist
Я так и не смог настроить выбрас на других локах. Названия нужно правильно писать. Хорошо хоть есть мод такой, а там уже сами разберёмя..... там в скриптах вроде 2 функции укрытия, для гг и для нпс. Тут всё ясно, а вот с позициями укрытий намудрили. Я лично вижу лишь 2 координаты и радиус зоны, а где параметр высоты ??? Непонятно
REKSID1
у тебя постоянно одни вылеты
зырь там где делал последние изменения, откат короче говоря, а вообще то нужно следить за той последовательностью изменений которую ты вносишь в игру. (у меня была такая фигня, был вылет без лога на ростке, пришлось всё с нуля делать)
Выброс на новых локациях должен появиться автоматически.А вот координаты рестрикторов,мне по крайней мере придётся менять.Для ГГ,файл ogsm_hideout.script, функция function first_run()
-- Бункер Сидора
spawn_restrictor("l01_escape", vector():set(-249.9,-24.8,-134.4), 10136, 7, "fake_", 3) -- где 3 - размер рестриктора.Дальше. В файле ogsm_surge есть функция
-- Обновление менеджера выброса. Вызывается из актор-байндера
function update_surge()
**************----******
if level_name == "l01_escape" then
if actor_in_zone(-211,-198,-132,-125,-23,-20) == 1 or -- Подвал 1 в лагере новичков
actor_in_zone(-256,-246,-137,-132,-25,-20) == 1 or -- Бункер Сидора и т. д.
Шесть цифр.Представь параллелепипед.Первые четыре цыфры - это его основание,последние две - высота.Координата Сидора по Х -249,9
Первые две цифры второй функции -256 и -246.Это и есть размер по Х.(256-246=10) и сразу же и координаты.
Дальше -24,8 - высота.Во второй функции,высота последние цифры -23 и -20(Размер 3)
И последняя в рестрикторе цифра:-- -134.4.Это ширина нашего параллелепипеда.Ей соответствуют
цыфры -137 и-132.Сразу же и координаты.Размер = 5.
И эти же данные есть в первом файле ogsm_hideout.script
function is_in_specific_zone(npc)
if npc_in_zone(npc,"l01_escape",-256,-246,-137,-132,-25,-20) or -- Бункер Сидора
Я,правда, новые убежища добавил в следующую функцию:
function is_in_hide(npc)
if npc_in_zone(npc,"l01_escape",-211,-198,-132,-125,-23,-20) or -- Подвал 1 в лагере новичков
Хотя, это наверное, одно и то же.Непонятно,почему убежища военных(их 2) на Блокпосте,бандитов(АТП),элеватор,свиноферма и у Лиса есть только рестриктор,а они работают.
Скорей всего я перемудрил,но мои укрытия тоже работают.
Arist
Ну раз работают, значит хорошо....
А вот про выброс на других локах. У меня на них есть тоже выброс но он не наносит урона ГГ и нет радиации вообще..
Да и я ни как не могу к этому моду подключить мод ai_add, там функции из xr_logic вызываются, я их добавлял но игра вылетает с одним и тем же логом, наверно в xr_motivator ошибся
добавлено спустя 1 час 13 минут
У меня вопросик. Можно ли задать свой таймер, чтобы он циклично выдавал один и тот же ифопоршень через заданный промежуток времени (скажем, через несколько часов)
отредактировал(а) PoG ne Riba: 11-02-2012 19:55 GMT3 час. гений - нуб ^^'
Я попытался решить проблему с вылетом, но на место старого вылета пришел новый. Лог вылета: Expression : fatal error
Function : CInifile::r_string
File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp
Line : 352
Description :
Arguments : Can't find variable type in [smart_terrain]
puma-sniper вылет на 20 строку файла _g.script, происходит не из-за косяка самого файла, а данных, которые передаются в эту строку. Могу тебе сказать, что у меня этот вылет связан в основном в ошибке логики НПС (логические, синтаксические), поскольку я 80% времени отведённых на модинг провожу именно с логикой. Но это далеко не единственная причина, их может быть куда больше. Вот комментарии уважаемых мной людей:
Ошибка распространённая. На первый взгляд кажется, что ошибка как раз в скриптах, но всё может быть иначе. Делаем так: открываем файл _g.script блокнотом, закоменчиваем 20 строку (ставим перед строкой --) и идём к тому месту где поймали вылет. Так мы получим более развёрнутый ответ. Участник:Призрак: Автор прав в том что вылет очень распространен, но так его исправлять нельзя, т.к. nil передается в эту функцию только при каком-то форс мажоре. Поэтому необходимо перейти в _g.script в функцию printf и перед log1(string.format(fmr,..)) дописать: get_console():execute("load "..fmt). После этого запустить еще раз игру и посмотреть при передачи какой строки игра вылетает. Потом найти эту строку в скриптах игры и прикинуть почему аргумент (у нас это аргумент №2 (bad argument #2)) равен nil
.
Что касается второго вылета: "Can't find variable type in [smart_terrain]", то это вероятно причины того, что ты пытаешься удалить локацию на которой размещены гулаги, которые в свою очередь прописаны в скриптах, а поскольку ты удалил локацию, то и данные для гулага брать не от куда. Вот собственно и делай вывода...
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Оброщаюсь с Уважением, окончательно отчаявшись к Мастерам скриптования и к гуру логики.......
Прочитал я кучу разных статей, на многих сайтах и так и не смог разобраться с созданием новых скриптов
Во многих статьях, где обучали делать моды есть такие места как "создайте новый скрипт" и тут я упёрся лбом в стену непонимания. Дело в том, что я ни как не могу удачно создать новый скрипт так, чтобы его функции выполнялись. Мне нужна простая функция спавна мобов, точнее импровизированная версия респавна мутантов. Я собираюсь спавнить мутантов таким образом:
к примеру скрипт называется spawn_mob.script
function spawn_monster()
alife():create("m_flesh_e",vector(0,0,0):set(-208.064193725586,-22.534460067749,-128.362594604492),0,0)
end
теперь на сколько я знаю нужно вызвать этот инфопоршень с помощью, скажем диалога
spawn_mob.spawn_monster
Объясните мне, делаю ли я всё правильно, если нет то что не так, и как задать таймер, который будет циклично выдавать этот поршень через заданное кол-во времени....
Зарание спасибо, надеюсь на помощь
п.с. Нужно ли где ни будь регистрировать новый скрипт?
PoG ne Riba.
Понятие "создать новый скрипт" это не что иное, как бан
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Всё ты делаешь правильно.Я не знаю,как делать по таймеру,но если поставишь "Выброс",то можешь в файл ogsm_surge.script дополнить функцию:
-- Вызов спавна артефактов для каждого уровня
function spawn_arts()
local level_name = level.name()
if level_name == "l01_escape" then
proceed_art_spawn("af_medusa", 1)
proceed_art_spawn("af_vyvert", 1)
proceed_art_spawn("af_blood", 1)
proceed_art_spawn("af_electra_sparkler", 1) proceed_art_spawn("boar_weak", 1)
proceed_art_spawn("dog_strong", 1)
end
if level_name == "l02_garbage" or level_name == "l03_agroprom" then
proceed_art_spawn("af_cristall_flower", 1)
proceed_art_spawn("af_gravi", 1)
proceed_art_spawn("af_rusty_thorn", 1)
proceed_art_spawn("af_mincer_meat", 1) proceed_art_spawn("gigant_strong", 1)
end
Или пусть монстры спавнятся каждый раз,когда ты переходишь на новую локу.И опять же вопрос,откуда автор взял вертексы локаций?
Извините ,что не для всех уровней,исправлюсь Так,таблица у нас есть ,теперь нам нужно написать функцию спавна.
Давайте покажу на Монстрах создадим таблицу с секциями спавна монстров:
Таблицу записали ,наконец приступим к оформлению главной функции
function spawn_monster()
local count = math.random(5,20) --выбираем кол-во заспавненых мобов
local section = mutants[math.random(table.getn(mutants))] -- выбираем секцию моба
local lv = math.random(level_vertexes[level.name()]["lvid"]) --выбираем левел вертекс
local gv = level_vertexes[level.name()]["gvid"] --выбираем гэйм вертекс
for ind = 1, count do
alife():create(section, level.vertex_position(lv), lv, gv)--\\level.vertex_position(lv) - позиция левел вертекса
end
end
Далее помещаем вызов функции в bind_stalker.script в net_spawn() и при каждой загрузке будут спавнится мобы в рандомной точке.
--' Загружаем настройки дропа
death_manager.init_drop_settings()
spawn_mob.spawn_monster()
Вроде нормальный вариант,если хочешь побольше монстров.
добавлено спустя 3 минут
ColR_iT
Привет!Пока ты здесь,объясни пожалуйста,откуда берутся гейм и левелвертексы локаций?
Arist, если подождёшь, минут двадцать, напишу как это делаю я, ну или завтра посмотришь уже завтра...
To be continued...
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Спасибо.И насчёт убежищ от выброса.Я их прописываю в трёх местах.А на Кордоне их девять,а только трём заданы размеры для НПСей.Хотя,главное.что работают.Просто,хотелось бы попроще.
Лично я делаю это при помощи программы Graph Viewer 0.1 (вот ссылка если что: >>Click Me<< Не знаю, если ли более новые версии или нет).
Собственно как это происходит...
Открываем программу и видим вот такое окошко:
Нажимаем "Файл/Открыт...", появляется следующее окошко:
Нажимаем на "Поиск" и далее в открывшемся окошке идём в папку нужной тебе локации, для которой мы хотим узнать количество level_vertexов и game_vertexов:
Для того чтобы узна
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.