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

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


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

Ник


Пароль


Запомнить?




» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное






Форумы > S.T.A.L.K.E.R. Тень Чернобыля > Модификации > Script SPAWN

Страница 10 из 13Первая«78910111213 »Последняя
Быстрый переход:


 

Автор Сообщение
nik1t0zz
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 359
Откуда: Russia
Занятие: That spy ant' on our side!
Возраст: 29

27-03-2008
28-01-2008 14:28 GMT3 часа #489595   Split
Никто не разобрался почему если спавнить NPC таким способом:

alife():create("%s", vector():set(44.65,-4.43,-273.35), 57448,1480)

То в инвентаре у NPC патроны не появляються, хотя они прописаны у него в профиле (character_desc_%s.xml)

Или надо отдельно тама спавнить?

Сообщение было успешно отредактировано nik1t0zz (28-01-2008 14:28 GMT3 часа, назад)

Pecunia est ancilla, si scis uti. Si nescis domina.
Web Strikеr
[20] Сталкер
Онлайн статус=0  Профиль    



Я всё вижу...

Посты: 3925
Откуда: Балхаш сити
Занятие: Боевая тактика, Биатлон, Велоспорт
Возраст: 32

05-01-2010
27-01-2008 04:08 GMT3 часа #489908   Split
Feldar
Цитата
можно ли заспаунить вагон или зеленый кунг, который часто встречается на блокпостах военных.
Это не возможно, т.к. это обьекты карты, а не отдельные модели.


Зона поражения 3 (20ХХ)


работа-дом-Работа дом... Дурдом...
userbar
zdalker
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 860
Откуда: Лысьва
Занятие: ...
Возраст: 30

17-02-2008
27-01-2008 11:24 GMT3 часа #489984   Split
nik1t0zz и ты ещё в ргр тим?Я думал туда самых-самых набирают....


"Мой дар убог, и голос мой не громок,
Но я живу, и на земле мое
Кому-нибудь любезно бытие..." (с) Е. А. Баратынский
"...Он шел своей дорогой, один и независим." (с) А. С. Пушкин
nik1t0zz
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 359
Откуда: Russia
Занятие: That spy ant' on our side!
Возраст: 29

27-03-2008
27-01-2008 15:31 GMT3 часа #490119   Split
Из головы выбилось!! Я уже пробовал и инклудом файлов типо:

#include "gameplay/ammo/character_5.45x39_fmj.xml"

А внутри:

ammo_5.45x39_fmj = 1 \n

И все-равно эффекта 0.

Ладно, будем спавнить отдельно...


Pecunia est ancilla, si scis uti. Si nescis domina.
damirazo
[1] Странник
Онлайн статус=0  Профиль    




Посты: 165
Откуда: Казань
Занятие:
Возраст: 37

27-01-2008 16:11 GMT3 часа #490142   Split
Может мне кто нибудь скинуть РАБОЧИЙ пример спавна только не на основе мода, а на чистом 1.0004 патче? Хочу попробовать сделать свой спавн, чтобы можно ьыло только свои переменные подставлять. Да кстати, желательно чтобы спавн был завязан на диалог (action к диалогу привязывать обучен. Также образец желатель закидывать мне в личку, т.к. на форуме бываю не часто. Буду очень благодарен за ответ.


Занимаюсь логикой НПС, скриптами
nik1t0zz
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 359
Откуда: Russia
Занятие: That spy ant' on our side!
Возраст: 29

27-03-2008
28-01-2008 14:24 GMT3 часа #490738   Split
Вон тебе сверху рабочее не придумаешь. Только вместо %s2 ставим id NPC из npc_profile.xml. Привязываем action к диалогу и происходит спавн. Файл должен выглядить так:

function %s1( position, total )
local obj
local a = vector()
local b = vector()
local c = vector()
local d = vector()
local f = vector()
local e = vector()
local dir = db.actor:direction()

alife():create("%s2", vector():set(161.30,0.53,44.16), 41809, 1230)

end
Где %s1 название функции и %s2 id NPC'a.


Вот так выглядит action к диалогу.

<phrase id="1111111">
<text>escape_lager_volk_talk_1111111</text>
<action>%s3.%s2</action> --; вот наш action это имя файла (%s3) и имя функции (%s2) (имя файла должно быть без расширения .script) (Спавн будет на диалоге "Предлагаешь в одиночку?" с Волчарой в главной роли)
<next>11111111</next>
</phrase>


Pecunia est ancilla, si scis uti. Si nescis domina.
damirazo
[1] Странник
Онлайн статус=0  Профиль    




Посты: 165
Откуда: Казань
Занятие:
Возраст: 37

28-01-2008 14:32 GMT3 часа #490743   Split
nik1t0zz
Огромное тебе спасибо! Сейчас тестить буду!
А координаты ставить после set в скобках я правильно понял? Значит дальше там level and game vertex'ы?
Кстати в какой файл этот скрипт писать? (или под каким именем сохранять?


Занимаюсь логикой НПС, скриптами
weron_team
[1] Странник
Онлайн статус=0  Профиль    




Посты: 1352
Откуда: МО Лыткарин
Занятие:
Возраст: 34

11-03-2008
28-01-2008 16:44 GMT3 часа #490802   Split
zdalker
Цитата
nik1t0zz и ты ещё в ргр тим?Я думал туда самых-самых набирают....

А ты на что намекаешь?
Мы берем людей, у которых есть желание работать

nik1t0zz
По поводу скрипта. Есть гораздо более легкий путь.
См.
function %s1
local obj
local a = vector()
local dir = db.actor:direction()
a.x = X
a.y = Y
a.z = Z
alife():create("id,a,13193,8,65535)
-- creating npc
end


damirazo
[1] Странник
Онлайн статус=0  Профиль    




Посты: 165
Откуда: Казань
Занятие:
Возраст: 37

28-01-2008 20:36 GMT3 часа #491041   Split
Спасибо за образцы скрипта, но в каком файле это прописывать?


Занимаюсь логикой НПС, скриптами
weron_team
[1] Странник
Онлайн статус=0  Профиль    




Посты: 1352
Откуда: МО Лыткарин
Занятие:
Возраст: 34

11-03-2008
28-01-2008 20:39 GMT3 часа #491047   Split
damirazo
Свой создавай .scripts
Просто скопируй существующий, переименуй. очисть и впихни свой скрипт


damirazo
[1] Странник
Онлайн статус=0  Профиль    




Посты: 165
Откуда: Казань
Занятие:
Возраст: 37

28-01-2008 20:49 GMT3 часа #491055   Split
Цитата
# weron_team :
damirazo
Свой создавай .scripts
Просто скопируй существующий, переименуй. очисть и впихни свой скрипт



Извини конечно меня за мою откровенную тупость, но какой именно файл для этого можно использовать, и можно ли на чистом патче, без модов?


Занимаюсь логикой НПС, скриптами
nik1t0zz
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 359
Откуда: Russia
Занятие: That spy ant' on our side!
Возраст: 29

27-03-2008
28-01-2008 21:03 GMT3 часа #491066   Split
Берешь Total Commander --> создаешь файл с расширением .txt, только вот называешь его %s.script - где %s название файла.

Все-таки никто не разобрался с патронами?? А то лишнее место на эти заспавнивания тратить...


Pecunia est ancilla, si scis uti. Si nescis domina.
damirazo
[1] Странник
Онлайн статус=0  Профиль    




Посты: 165
Откуда: Казань
Занятие:
Возраст: 37

28-01-2008 21:09 GMT3 часа #491072   Split
nik1t0zz
ок! большое спасибо!


Занимаюсь логикой НПС, скриптами
R_A 5+
[1] Странник
Онлайн статус=0  Профиль    




Посты: 11
Откуда:
Занятие:
Возраст:

25-02-2008 20:24 GMT3 часа #519414   Split
Никто не подскажет как работать с xrSPAWNER? А то ничо не понял


weron_team
[1] Странник
Онлайн статус=0  Профиль    




Посты: 1352
Откуда: МО Лыткарин
Занятие:
Возраст: 34

11-03-2008
25-02-2008 21:09 GMT3 часа #519501   Split
R_A 5+
Ищи соовтестующую тему.
В поиске вбей xrSpawner 0.13 beta


S-T-A-L-K-E-R
[1] Странник
Онлайн статус=0  Профиль    




Посты: 148
Откуда: Черновцы
Занятие: Программирование, веб-дизайн
Возраст: 30

28-02-2008 18:14 GMT3 часа #522028   Split
А на версии 1.0005 всё без проблем спавнится? Я старался всё сделать как тут написано, но зомбаки не спаунятся(


Шепард
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие: Творческая деятельность
Возраст:

01-03-2008 21:39 GMT3 часа #523749   Split
Damn... Как меня заколебали эти скрипты. Ничерта не работает, хотя я перелопатил хрен знает сколько страниц тем, посвещенных скрипту спавна. Я перепробовал все, что было выложено на форуме, протрахал мозги в течении всего дня, но так и не получил никаких результатов! Кто-нибудь смог сделать действительно РАБОТАЮЩИЙ скрипт спавна нпс? Вразумительных ответов на возникшие вопросы я так и не нашел - пришлось доходить до всего своими многострадальными мозгами, которые уже плавятся от обилия хреновых формул и функций, с которыми я никогда не работал. И, поймите мяня правильно, я выразил свои чувства в наилегчайшей форме. Итак, что у нас есть на данный момент? Хренова тьма странных, не имеющих нормального объяснения обрывков скриптов, которые фактически собой ничто не представляют. Это хорошо? Не очень. Много людей задавало вопросы касательно спавна нпс НЕ через диалог и, как я понял, результатов они тоже не получили. Меня волнуют следующие вопросы, на которые мне бы ОЧЕНЬ хотелось получить вразумительные ответы.

1. Как спавнить НПС НЕ через диалог, а при старте новой игры (или же загрузке локации)
2. Что такое "серверный объект" и как получить его номер?
3. Почему приведенные в этой теме скрипты не работают?
4. Кто-нибудь может выложить нормальный, действительно РАБОТАЮЩИЙ скрипт спавна НПС, не привязанный к диалогу?

Я же столкнулся со следующей проблемой: я создал новый класс для своего нпс (character_desc_escape, npc_profile и spawn_sections я обновил, добавив его туда), использовал все спавн-скрипты, которые здесь есть, но ни один не работает. НПС не появляется там, где должен - его попросту нет. Я думаю, что это как-то связано с номером серверного объекта, который нужен для онлайн объекта, но я не знаю как получить этот номер. Еще есть мысль, что это может быть связано с тем, что я редактировал all.spawn - изменил инвентарь и место появление игрока на карте (теперь это в паре шагов от перевернутого грузовика с трупами монолитовцев на Кордоне). Вот собственно и все. У кого-нибудь есть идеи по этому поводу?


Бери, но отдавай равноценное тому, что взял.
Lost_Stranger
[1] Странник
Онлайн статус=0  Профиль    




Посты: 212
Откуда: Новороссийск
Занятие:
Возраст: 50

03-03-2008 17:22 GMT3 часа #525653   Split
Шепард, со скриптспавном на самом деле всё просто. Этот способ совершенно не зависит от того, вызываешь ли ты его через диалог, или в начале новой игры, или при переходе на другую локацию - это всего лишь точки вызова функции спавна, которую ты используешь. Поэтому для простоты примера и отработки используй пока любой диалог чистой игры без модов (например, взятие самого первого квеста у Волка). Итак:
1. в диалоге вставь строчку типа <action>имя_файла_скрипта.имя_функции</action>
2. в скрипте имя_файла_скрипта.script, который должен лежать в папке scripts, ты должен завести функцию имя_функции, в которой спавнишь непися, например так:

Код:
function имя_функции()
local name_section = "esc_bandit_respawn_1"
local pos = db.actor:position()
alife():create(name_section, pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
end


в данном случае спавниться непись по секции esc_bandit_respawn_1 в ближейшем к ГГ вертексе....

меняя секции, pos и вертексы в 3 и 4 параметре функции alife():create(), ты можешь регулировать местоположение и тип объекта для спавна....


Истина всегда для нас за горизонтом событий
Шепард
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие: Творческая деятельность
Возраст:

04-03-2008 10:32 GMT3 часа #526547   Split
Lost_Stranger, спасибо. Метод с диалогами работает замечательно, но дело в том, что мне нужен спавн конкретного нпс не через диалог, а при старте новой игры. Я настроен сделать альтернативную сюжетную линию, в которой ключевые персонажи оригинального Сталкера участвовать не будут (а в перспективе - и вовсе их убрать). То есть всякие Волки, Сидоры, Бармены и прочие оболтусы тихо курят в сторонке. Игрок появляется в отдалении от любых нпс, поэтому мне нужно заспавнить своего уникального нпс при старте рядом с игроком, а уже через него с помощью диалога спавнить остальных - и так далее по цепочке. Именно поэтому диалог в самом начале неприемлем - будет как минимум коряво смотреться, если для начала сюжета нужно говорить с Волком или Сидором, которые к нему вообще никакого отношения не имеют.


Бери, но отдавай равноценное тому, что взял.
Lost_Stranger
[1] Странник
Онлайн статус=0  Профиль    




Посты: 212
Откуда: Новороссийск
Занятие:
Возраст: 50

04-03-2008 12:07 GMT3 часа #526583   Split
Шепард, в таком случае тебе нужен не механизм скриптспавна, а всего лишь точка, от которой ты можешь оттолкнуться.... Могу посоветовать тебе посмотреть механизм такой проверки в моде АМК.
А именно function on_game_load() и function on_game_start() в amk.script. Взяв за основу механизм этой проверки можешь ставить там точку вызова своей стартовой функции....


Истина всегда для нас за горизонтом событий
Шепард
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие: Творческая деятельность
Возраст:

04-03-2008 18:24 GMT3 часа #526892   Split
Понятно. Буду пробовать.


Бери, но отдавай равноценное тому, что взял.
Crocks
[1] Странник
Онлайн статус=0  Профиль    




Посты: 85
Откуда: Кропоткин
Занятие: учусь модмейкерству, чтобы затем, донести до людей
Возраст: 32

21-07-2008
22-03-2008 20:30 GMT3 часа #545802   Split
Прочитал всю тему, зашёл на Mod Wiki, попытался реализовать первый практический пример оттуда - нифига!!!. Создал файл esc_zombie.script, в нём прописал:

local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"}
function spawn_zombies( position, total )
local zombie_index
local new_pos, x_offset, z_offset
for zombie_index=1, total do
x_offset = math.random(5)
z_offset = math.random(5)
new_pos = position
new_pos.x = new_pos.x + x_offset
new_pos.z = new_pos.z + z_offset -
alife():create(zombie_types[math.random(5)],new_pos,db.actor:326087,db.actor:91)
end
end
function zomby_story_1( actor, npc )
local spawn_point = vector():set(43.21,2.14,47.16)
spawn_zombies( spawn_point, 10 )
end


В xr_statistic прописал по инструкции :

Добавим в 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"

Кто знает, в чём моя ошибка?Плиз! Очень надо!

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

Когда захожу в игру, при виде Сидоровича она виснет. Кстати, может кто-нить просто выложит минимод с этим примером? Буду благодарен за любую помощь и советы.

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

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

Сообщение было успешно отредактировано Crocks (22-03-2008 20:30 GMT3 часа, назад)

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие:
Возраст:

23-03-2008 14:00 GMT3 часа #546414   Split
Lost_Stranger

спс большое , пользуюсь твоим скриптом , вот только у меня вопросы

1 и самый главный

"esc_bandit_respawn_1" , это бандит , а где ещё названия сталкеров,ментов ,животных , где это можно узнать.

2 как твой скрипт зделать циклическим?

3 как добавить твой скрипт в мой диалог , пока получалось только в чей нибуть . а свой они у меня невидят.

буду примногом благодарен.


в папке text ,папки rus почемуто нет.

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

с первым разобрался сам , теперь осталось вопрос по диалогам

добавлено спустя 9 часа 34 минут

и ещё вопрос , как добавлять через этот скрипт монстров.

Сообщение было успешно отредактировано vadim90 (23-03-2008 14:00 GMT3 часа, назад)

Crocks
[1] Странник
Онлайн статус=0  Профиль    




Посты: 85
Откуда: Кропоткин
Занятие: учусь модмейкерству, чтобы затем, донести до людей
Возраст: 32

21-07-2008
23-03-2008 16:39 GMT3 часа #546802   Split
Когда нашёл в чём моя ошибка, просто валялся по полу от смеха - я забыл проставить запятые в файле xr_statistic.
Виснуть перестало, но обещанных зомби не наблюдается. Вопрос по прежнему открыт.


Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие:
Возраст:

23-03-2008 18:55 GMT3 часа #547009   Split
используй так.

function as1()
local name_section = "esc_bandit_respawn_1"
local pos = db.actor:position()
alife():create(name_section, vector():set(-100,-13,-168), db.actor:level_vertex_id(), db.actor:game_vertex_id())
end

заспаунит бандита.


потом подставишь свои значения и всё.


Вопрос остался открытым!

2 как твой скрипт зделать циклическим?

3 как добавить твой скрипт в мой диалог , пока получалось только в чей нибуть . а свой они у меня невидят.

1 как добавить монстров.



есть знающие люди по скриптам? дайте сваю асю. я оч быстр овсё понимаю , вопросами не надоем. мне только пару примеров и всё.


vadim90
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие:
Возраст:

24-03-2008 11:40 GMT3 часа #547732   Split
c 3сам всё зделал.

но некак немагу зделать цеклическим скрипт , чтобы например, он после 1 включения обрабатывался каждые скажем 10 мин.(альтернатива респауну)

И ВОЗМОЖНО ЛИ ЧЕРЕЗ НЕГО ДОБАВИТЬЬ МОНСТРОВ? ЕСЛИ НЕТ ТО КАКОЙ СКРИПТ ПОСОВЕТУЕТЕ?


Crocks
[1] Странник
Онлайн статус=0  Профиль    




Посты: 85
Откуда: Кропоткин
Занятие: учусь модмейкерству, чтобы затем, донести до людей
Возраст: 32

21-07-2008
26-03-2008 00:52 GMT3 часа #550513   Split
ЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ!!!!!Сделал!
О, сладок, сладок миг победы!
Парни, вы конечно не обижайтесь, но объяснялы из вас хр***вые (по крайней мере некоторые). Обычному новичку дойти оч сложно! А эти долбанные баги в примерах на Wiki просто задолбали!(Извините за тофтологию, но у меня уже просто не хватает злости!) Авторы, перед тем как публиковать, хотя б на ошибки проверили! Даю голову на отсечение, что у большей половины новичков приведённый пример не получился. А если и получился, то только через несколько дней, полных экспериментов, ошибок и стоивших нач. модератору нескольких тысяч нервных клеток. Если бы я раньше не имел дело с HTML, то и не заметил бы:
Когда автор только строит скрипт у него zombie_story_1 , а когда вставляет функцию в скрипт, уже zomby_story_1 Найдите два отличия, мать ...
Да и потом, эти постоянные недомолвки, недоъобяснения...Зачем всё так усложнять? Фух, выговорился, а то наболело. Короче, сёдня или завтра выложу в понятной форме, spicial for you, для новичков в смысле - авось пригодится. А то как я - почти неделю будете долбиться на форумах, на Wiki, а в конце концов, как всегда, придётся доходить своими мозгами (не без помощи некоторых товарищей, правда))).
P.S.: я не злой, просто потратил времени на эти долбанные скрипты больше, чем они того заслуживают.

Сообщение было успешно отредактировано Crocks (26-03-2008 00:52 GMT3 часа, назад)

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
weron_team
[1] Странник
Онлайн статус=0  Профиль    




Посты: 1352
Откуда: МО Лыткарин
Занятие:
Возраст: 34

11-03-2008
26-03-2008 15:04 GMT3 часа #551063   Split
Crocks
Точняк пригодится. Замонали уже мну))) Без обид


Crocks
[1] Странник
Онлайн статус=0  Профиль    




Посты: 85
Откуда: Кропоткин
Занятие: учусь модмейкерству, чтобы затем, донести до людей
Возраст: 32

21-07-2008
15-07-2008 13:11 GMT3 часа #551999   Split
Итак, как и обещал, привожу пример ПРОСТЕЙШЕГО спавна монстров через скрипт. Прежде всего перелестните эту страницу форума на страничку с номером 1. Там подробно написано о том как узнать координаты и вертексы (level_vertex, game_vertex_id) с помощью скрипта, который необходимо прописать в файле ui_main_menu.script (если уж кто вобще чайник, то script это расширение) по адрессу STALKER/gamedata/scripts. Дальнейший материал взят с портала http://sdk.stalker-game.com/ru/index.php/C%D0%BF%D0%B0%D0%B2%D0%BD_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82. Прежде всего читаем первую часть Теории с вышеуказанного портала (без неё никак!), а с практикой я помогу. Заходим в игру, узнаём кординаты и вертексы. (Весь двльнейший текст одна сплошная цитата) Далее в папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование. (Я же просто редактирую оригиналы извлечённых файлов, предварительно поместив их backup версии (копии) в отдельную папку).
В файлах игры присутствуют 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

Все. Сохраняем изменения и закрываем файл. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script. ( В строке тип файла ставим галочку на пункт "all files", а после названия ставим точку и прописываем "script". Всё, сохранили, как файл с расширеним "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 zombie_story_1( actor, npc )
-- десять зомби на фабрике (Кордон)
local spawn_point = vector():set( 115, -6, -16 ) -- здесь указываем координаты,
выбранные нами для спавна, когда «летали» камерой :)
spawn_zombies( spawn_point, 10 ) -- собственно вызов предыдущей функции
с передачей ей координат и количества объектов
end

Все. Сохраняем и закрываем файл.

(Так, здесь поподробнее, очено важный аспект. С первой строкой, я полагаю, всё понятно - перечисление типов зомби. Следующая строка - function spawn_zombies - говорит о том, что это функция (людям, не знакомым с программированием это слово ничего не скажет), и что называется она spawn_zombies (дословный перевод строки: функция "рождение зомби"). position, total - я так полагаю, составляющие функции - позиция и количество циклов, судя по комментариям, или что-то такое, ну, в общем не важно. Следующая строка ясна, я надеюсь (следите за комментами напротив строки). Следующая строка нам не нужна, а следующая за ней (for zombie_index=1, total do) может пригодиться, но я с ней особо не разбирался, так что полистайте, если хотите предыдущие страницы, там кажись чёт было по этому тэгу (грубо говоря). Следующие две строки я не совсем понял, впрочем как и ещё три, следующие за ними, если кто знает поясните, хотя в принципе они нам и не нужны. Так, двигаемся дальше. alife():create(zombie_types[math.rando(5)],new_pos,db.actor:level_vertex_id(),db.actor:game_vertex_id()) - как следует из комментов, сама функция спауна зомби (Кстати, тоже пишется на одной строке). Дальше разбираем её составляющие. На пером месте за открывающей скобкой, как мы узнали из раздела "Теория" на вышеуказанном портале, должен следовать объект спауна. Ага, кажись понял - [math.rando(5)] - это случайное переменное из перечисленных нами зомби, короче функция (или скрипт, чёрт их разберёт) случайно выбирает один из перечисленных нами типов зомби для спауна. Далее new_pos - позиция, местоположение, но какое- то "скользское", короче оставляем как есть. db.actor:level_vertex - уже знакомая нам из теории миниконструкция, но всё равно поясню - если всё оставить как есть, то будет браться ближайший к актёру level_vertex. Если хотите заспаунить монстра в другом месте, то меняем всё это на цифры, к примеру:329582. С db.actor:game_vertex_id() всё обстоит точно так же.
Переходим к функции function zombie_story_1
local spawn_point = vector():set( 115, -6, -16 ) - местоположение спауна монстров. В скобках координаты, точно как на уроке математики (10 минут вспоминал, как пишется слово), по порядку - X, Y, Z, где Y - высота. spawn_zombies( spawn_point, 10 ) - как я понял, итог, команда выполнения всех прописанных нами условий или что мы там писали При этом, 10 - это количество монстров, которых необходимо заспаунить.)
Пример готового скелета скрипта:

local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"}

function spawn_zombies( position, total )
local zombie_index
local new_pos, x_offset, z_offset
for zombie_index=1, total do
x_offset = math.random(5)
z_offset = math.random(5)
new_pos = position
new_pos.x = new_pos.x + x_offset
new_pos.z = new_pos.z + z_offset

alife():create(zombie_types[math.random(5)],new_pos,326087,91)
end
end

function zombie_story_1(actor, npc)
local spawn_point = vector():set(43.21, 2.14, 47.16)
spawn_zombies(spawn_point, 10)
end

(Два пояснения: первые две строчки пишутся на одной строке - local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"} - эти имеются в виду. И ещё, по идее скрипт работоспособен, но я, насколько помню, тестил с целыми числами в графе координат. Мы молодцы, потсроили скрипт, но это ещё не всё. Дальше опять сплошная цитата.)

Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл 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"

Сохраняем изменения и закрываем файл.
(Очень важное пояснение - обязательно проставьте запятые в этих файлах после вставки!Обязательно следите за запятыми! Если вы этого не сделаете, то игра начнёт виснуть при запуске. Я вначале не обратил внимания на них, и поэтому при запуске новой игры, первым и последним, что я видел был оскал Сидоровича, который могла стереть только волшебная кнопочка на системнике!
И наконец, последняя стадия - в файле по адрессу STALKER/gamedata/config/gameplay/dialogs_escape найдите строки:
<phrase id="11111111">
<text>escape_lager_volk_talk_11111111</text>
<next>111111111</next>
<next>111111112</next>
и поменяйте на
<phrase id="11111111">
<text>escape_lager_volk_talk_11111111</text>
<action>esc_zombie.zombie_story_1</action>
<next>111111111</next>
<next>111111112</next>
Сохраняем и всё. Вы в первый раз говорите с волком на Кордоне, соглашаетесь спасти сталкеров на фабрике, выходите на дорогу, доходите до остановки и встречаете 10 неубиваемых зомби. Только не пытайтесь их обыскать - игра вылетит. Если хотите, почитайте там же где и всегда, как избавиться и от этого, а также статью, посвящённую созданию диалогов (на вышеуказанном портале). Но будете осторожны - многие примеры не работают на том портале (в том числе из-за орфографических ошибок), поэтому прежде чем тупо копировать код скрипта, просмотрите его, авось и вы найдёте баг. Так, пока вроде всё. Ещё раз повторяю - это пример простейшего спауна, рассчитанный на новичков. Бывалым скриптёрам это объяснение возможно покажется комичным, но более понятно, я думаю, не объяснить. Итак, база заложена. Научусь чему нибудь ещё - обязательно выложу (это что касательно скриптового спауна).
P.S.:э-эх, до полуночи не уложился. Надеюсь смайлики развеселили смотрящих эту страницу, потому как я готов рвать и метать от злости, потому что когда я уже почти закончил, браузер выдал ошибку и закрыл окно, а у меня была сохранена только половина текста.

Сообщение было успешно отредактировано Crocks (15-07-2008 13:11 GMT3 часа, назад)

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
[1] Странник
Онлайн статус=0  Профиль    




Посты: 66
Откуда:
Занятие:
Возраст:

27-03-2008 03:30 GMT3 часа #552061   Split
как спаунить через этот скрипт например Нпц (бандитов,сталкеров) скажешь?

пользуюсь щас другим , но этот заинтересовал




Форумы > S.T.A.L.K.E.R. Тень Чернобыля > Модификации > Script SPAWN

Страница 10 из 13Первая«78910111213 »Последняя





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

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