Пользователей: 1
Гостей: 652
Всего: 653

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

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









Автор Сообщение
nik1t0zz
    
Посты: 359
Откуда: Russia
Возраст: 30
26-01-2008 19:09 GMT3 час. #489595   
Никто не разобрался почему если спавнить NPC таким способом:

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

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

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

отредактировал(а) nik1t0zz: 28-01-2008 12:28 GMT3 час.

Pecunia est ancilla, si scis uti. Si nescis domina.
WebStr
    
Посты: 3927
Откуда: Балхаш сити
Возраст: 33
27-01-2008 02:08 GMT3 час. #489908   
Feldar

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


Зона поражения 3 (когда ни будь в другой реальности...)

работа-дом-Работа дом… Дурдом...

zdalker
    
Посты: 860
Откуда: Лысьва
Возраст: 31
27-01-2008 09:24 GMT3 час. #489984   
nik1t0zz и ты ещё в ргр тим?Я думал туда самых-самых набирают....


"Мой дар убог, и голос мой не громок,
Но я живу, и на земле мое
Кому-нибудь любезно бытие..." (с) Е. А. Баратынский
"...Он шел своей дорогой, один и независим." (с) А. С. Пушкин
nik1t0zz
    
Посты: 359
Откуда: Russia
Возраст: 30
27-01-2008 13:31 GMT3 час. #490119   
Из головы выбилось!! Я уже пробовал и инклудом файлов типо:

#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
    
Посты: 165
Откуда: Казань
Возраст: 37
27-01-2008 14:11 GMT3 час. #490142   
Может мне кто нибудь скинуть РАБОЧИЙ пример спавна только не на основе мода, а на чистом 1.0004 патче? Хочу попробовать сделать свой спавн, чтобы можно ьыло только свои переменные подставлять. Да кстати, желательно чтобы спавн был завязан на диалог (action к диалогу привязывать обучен. Также образец желатель закидывать мне в личку, т.к. на форуме бываю не часто. Буду очень благодарен за ответ.


Занимаюсь логикой НПС, скриптами
nik1t0zz
    
Посты: 359
Откуда: Russia
Возраст: 30
28-01-2008 12:24 GMT3 час. #490738   
Вон тебе сверху рабочее не придумаешь. Только вместо %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 к диалогу.


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


Pecunia est ancilla, si scis uti. Si nescis domina.
damirazo
    
Посты: 165
Откуда: Казань
Возраст: 37
28-01-2008 12:32 GMT3 час. #490743   
nik1t0zz
Огромное тебе спасибо! Сейчас тестить буду!
А координаты ставить после set в скобках я правильно понял? Значит дальше там level and game vertex'ы?
Кстати в какой файл этот скрипт писать? (или под каким именем сохранять?


Занимаюсь логикой НПС, скриптами
weron_team
    
Посты: 1352
Откуда: МО Лыткарин
Возраст: 35
28-01-2008 14:44 GMT3 час. #490802   
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
    
Посты: 165
Откуда: Казань
Возраст: 37
28-01-2008 18:36 GMT3 час. #491041   
Спасибо за образцы скрипта, но в каком файле это прописывать?


Занимаюсь логикой НПС, скриптами
weron_team
    
Посты: 1352
Откуда: МО Лыткарин
Возраст: 35
28-01-2008 18:39 GMT3 час. #491047   
damirazo
Свой создавай .scripts
Просто скопируй существующий, переименуй. очисть и впихни свой скрипт:ye)


damirazo
    
Посты: 165
Откуда: Казань
Возраст: 37
28-01-2008 18:49 GMT3 час. #491055   

# weron_team :
damirazo
Свой создавай .scripts
Просто скопируй существующий, переименуй. очисть и впихни свой скрипт:ye)



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


Занимаюсь логикой НПС, скриптами
nik1t0zz
    
Посты: 359
Откуда: Russia
Возраст: 30
28-01-2008 19:03 GMT3 час. #491066   
Берешь Total Commander --> создаешь файл с расширением .txt, только вот называешь его %s.script - где %s название файла.

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


Pecunia est ancilla, si scis uti. Si nescis domina.
damirazo
    
Посты: 165
Откуда: Казань
Возраст: 37
28-01-2008 19:09 GMT3 час. #491072   
nik1t0zz
ок! большое спасибо!


Занимаюсь логикой НПС, скриптами
R_A 5+
    
Посты: 11
Откуда:
Возраст:
25-02-2008 18:24 GMT3 час. #519414   
8-(Никто не подскажет как работать с xrSPAWNER? А то ничо не понял


weron_team
    
Посты: 1352
Откуда: МО Лыткарин
Возраст: 35
25-02-2008 19:09 GMT3 час. #519501   
R_A 5+
Ищи соовтестующую тему.
В поиске вбей xrSpawner 0.13 beta


S-T-A-L-K-E-R
    
Посты: 148
Откуда: Черновцы
Возраст: 31
28-02-2008 16:14 GMT3 час. #522028   
А на версии 1.0005 всё без проблем спавнится? Я старался всё сделать как тут написано, но зомбаки не спаунятся(


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

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

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


Бери, но отдавай равноценное тому, что взял.
Lost_Stranger
    
Посты: 212
Откуда: Новороссийск
Возраст: 50
03-03-2008 15:21 GMT3 час. #525653   
Шепард, со скриптспавном на самом деле всё просто. Этот способ совершенно не зависит от того, вызываешь ли ты его через д**500540b7e12bf63c3891**"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
[/code]

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

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


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


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


Истина всегда для нас за горизонтом событий
Шепард
    
Посты: 66
Откуда:
Возраст:
04-03-2008 16:24 GMT3 час. #526892   
Понятно. Буду пробовать.:mailpishu:


Бери, но отдавай равноценное тому, что взял.
Crocks
    
Посты: 85
Откуда: Кропоткин
Возраст: 33
22-03-2008 17:48 GMT3 час. #545802   
Прочитал всю тему, зашёл на 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 18:30 GMT3 час.

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
    
Посты: 66
Откуда:
Возраст:
23-03-2008 00:50 GMT3 час. #546414   
Lost_Stranger

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

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

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

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

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

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


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

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

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

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

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

отредактировал(а) vadim90: 23-03-2008 12:00 GMT3 час.

Crocks
    
Посты: 85
Откуда: Кропоткин
Возраст: 33
23-03-2008 14:39 GMT3 час. #546802   
Когда нашёл в чём моя ошибка, просто валялся по полу от смеха - я забыл проставить запятые в файле xr_statistic.:lol)
Виснуть перестало, но обещанных зомби не наблюдается. Вопрос по прежнему открыт.


Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
    
Посты: 66
Откуда:
Возраст:
23-03-2008 16:55 GMT3 час. #547009   
используй так.

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
    
Посты: 66
Откуда:
Возраст:
24-03-2008 09:40 GMT3 час. #547732   
c 3сам всё зделал.

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

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


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

отредактировал(а) Crocks: 25-03-2008 22:52 GMT3 час.

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
weron_team
    
Посты: 1352
Откуда: МО Лыткарин
Возраст: 35
26-03-2008 13:04 GMT3 час. #551063   
Crocks
Точняк пригодится. Замонали уже мну))):-) Без обид;-)


Crocks
    
Посты: 85
Откуда: Кропоткин
Возраст: 33
27-03-2008 00:17 GMT3 час. #551999   
Итак, как и обещал, привожу пример ПРОСТЕЙШЕГО спавна монстров через скрипт. Прежде всего перелестните эту страницу форума на страничку с номером 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) может пригодиться, но я с ней особо не разбирался, так что полистайте, если хотите предыдущие страницы, там кажись чёт было по этому тэгу (грубо говоря). Следующие две строки я не совсем понял, впрочем как и ещё три, следующие за ними, если кто знает поясните, хотя в принципе они нам и не нужны. Так, двигаемся дальше.:ye) 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 найдите строки:

escape_lager_volk_talk_11111111
111111111
111111112
и поменяйте на

escape_lager_volk_talk_11111111
esc_zombie.zombie_story_1
111111111
111111112
Сохраняем и всё. Вы в первый раз говорите с волком на Кордоне, соглашаетесь спасти сталкеров на фабрике, выходите на дорогу, доходите до остановки и встречаете 10 неубиваемых зомби. Только не пытайтесь их обыскать - игра вылетит. Если хотите, почитайте там же где и всегда, как избавиться и от этого, а также статью, посвящённую созданию диалогов (на вышеуказанном портале). Но будете осторожны - многие примеры не работают на том портале (в том числе из-за орфографических ошибок), поэтому прежде чем тупо копировать код скрипта, просмотрите его, авось и вы найдёте баг. Так, пока вроде всё. Ещё раз повторяю - это пример простейшего спауна, рассчитанный на новичков. Бывалым скриптёрам это объяснение возможно покажется комичным, но более понятно, я думаю, не объяснить. Итак, база заложена. Научусь чему нибудь ещё - обязательно выложу (это что касательно скриптового спауна).
P.S.:э-эх, до полуночи не уложился. Надеюсь смайлики развеселили смотрящих эту страницу, потому как я готов рвать и метать от злости, потому что когда я уже почти закончил, браузер выдал ошибку и закрыл окно, а у меня была сохранена только половина текста.:ary():-(:ary()8-(:ary()

отредактировал(а) Crocks: 15-07-2008 10:11 GMT3 час.

Кто в логике шарит, пишите в асю или ПМ - нужна помощь.
Всем, кому интересно - журнал.
vadim90
    
Посты: 66
Откуда:
Возраст:
27-03-2008 01:30 GMT3 час. #552061   
как спаунить через этот скрипт например Нпц (бандитов,сталкеров) скажешь?

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




Форумы Трилогия серии игр S.T.A.L.K.E.R » Модификации и квесты Script SPAWN


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

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