[27.05.2014] Вопросы ... ( Мастер)
[16.08.2011] N.M.K ( Digefal)
[15.08.2011] Набор мо... ( ☺[Super]Nub4ik☺)
[15.08.2011] Набор ад... ( ☺[Super]Nub4ik☺)
[15.08.2011] Вышел N.... ( ☺[Super]Nub4ik☺)
[14.08.2011] Hud для ... ( ☺[Super]Nub4ik☺)
[13.08.2011] Тип заяв... ( ☺[Super]Nub4ik☺)
[13.08.2011] Тип заяв... ( ☺[Super]Nub4ik☺)
[11.08.2011] Набор ср... ( ☺[Super]Nub4ik☺)
[10.08.2011] N.M.K MP... ( ☺[Super]Nub4ik☺)
[10.08.2011] Звуки ор... ( ☺[Super]Nub4ik☺)
[10.08.2011] Текстуры... ( ☺[Super]Nub4ik☺)
[10.08.2011] Оружие и... ( ☺[Super]Nub4ik☺)
[10.08.2011] Квесты ( ☺[Super]Nub4ik☺)
[10.08.2011] Нпс ( ☺[Super]Nub4ik☺)
    [17.08.2011] HARDWAR ... ( 0)
[17.08.2011] PostScri... ( 0)
[17.08.2011] Old Good... ( 0)
[17.08.2011] Depressi... ( 0)
[17.08.2011] Killers ... ( 0)
[17.08.2011] Graphic ... ( 0)
[17.08.2011] Новая бр... ( 1)
[17.08.2011] S.T.A.L.... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Чит для ... ( 0)
[15.08.2011] Читы для... ( 0)
[15.08.2011] Вступлен... ( 0)
[15.08.2011] Изменяем... ( 0)
[15.08.2011] Создание... ( 0)
[15.08.2011] Добавлен... ( 0)
[15.08.2011] Создание... ( 0)
[15.08.2011] Возвраще... ( 0)
[15.08.2011] Обзор от... ( 0)
[13.08.2011] Создаём ... ( 0)
[13.08.2011] Как реда... ( 0)
[13.08.2011] Как сдел... ( 0)
[13.08.2011] Гармошка ( 0)
[13.08.2011] Изменени... ( 0)
[13.08.2011] Невидимы... ( 0)
[13.08.2011] увеличен... ( 0)
[13.08.2011] Как пове... ( 0)
Что хотите увидеть в моде N.M.K V1.0?
Всего ответов: 101
Чтото ваше
Главная » Статьи » Модостроение » Модостроение Тень Чернобыля

Создание квеста по поиску и возвращению предмета
Создадим квест по поиску АК74У.

Для начала нужно создать диалог, сделаем его у Волка:

Заходим в gamedata\config\gameplay\dialogs_escape.xml и в самом конце до строчки пишем:


esc_kill_bandits_quest_done
escape_volk_ak74u_start


escape_volk_ak74u_quest_0
1


escape_volk_ak74u_quest_1
2
3


escape_volk_ak74u_quest_2
escape_volk_ak74u_start
new_life.spawn_ak74u


escape_volk_ak74u_quest_3
dialogs.break_dialog




new_life.escape_volk_ak74u_have
escape_volk_ak74u_have
escape_volk_ак74u_done


escape_volk_ak74u_quest_completed_0
1


escape_volk_ak74u_quest_completed_1
2


escape_volk_ak74u_quest_completed_2
escape_volk_ak74u_done
new_life.give_volk_ak74u
3


escape_volk_ak74u_quest_completed_3
new_life.complete_volk_quest




Теперь нужно прописать эти диалоги Волку, для этого заходим в gamedata\config\gameplay\character_desc_escape.xml и находим профиль Волка(он называется esc_wolf), перед строкой пишем:

escape_volk_ak74u_quest
escape_volk_ak74u_quest_completed

Нам понадобятся два диалога: 1 для получения квеста, 2 для передачи автомата.

- Это название диалога

esc_kill_bandits_quest_done - эта строка означает что квест появится только если получен инфопоршень esc_kill_bandits_quest_done

escape_volk_ak74u_start - эта строка означает что если получен инфопоршень escape_volk_ak74u_start , то этот диалог больше не появится.

escape_volk_ak74u_quest_0 - это ссылка на текст фразы меченого

1 - это ссылка на текст с id= 1 , а id= 1 это escape_volk_ak74u_quest_1 (ссылка на текст Волка)

2
3 - эти две строчки означают что идет разветвление диалога

escape_volk_ak74u_start - выдача инфопоршня, после которого начинается квест

new_life.spawn_ak74u - функция вызываемая из скрипта new_life, в данном случае спаунится предмет AK74У

dialogs.break_dialog - функция отвечающая за выход из диалога

Во втором диалоге есть строка new_life.escape_volk_ak74u_have - она отвечает за появление диалога если выполняется функция
escape_volk_ak74u_have

Теперь нужно сделать текст диалога на русском языке, для этого заходим в gamedata\config\tex\rus\stable_dialogs_escape.xml и в нём пишем следующее(в конце перед ):


Здорова Волк, для меня есть какая-нибудь работа?


Да, есть одно дело: вобщем шёл сюда в лагерь к Сидырычу, решил пройти через тоннель чтоб воякам денег не платить, а там собак было штук десять. Ну я начал отстреливаться, где-то шестерых убил и патроны кончились, пришлось АКСУ выкинуть, чтоб от стаи собак убежать. Таки лежит там наверно АКСУ. \nНу как, возьмёшься? Только осторожней там, после последнего выброса появились в тоннеле перещающиеся аномалии электра.


Да, я как раз буду рядом проходить, конечно принесу...


Нет, Волк, сам туда иди...


Привет, Волк, ну как оно?...


Сидор водку не даёт, хе хе, а так всё хорошо.


Вот, нашел я твой АКСУ.


Эх спасибо тебе Меченый, вот держи, может на что-нибудь хватит.


Итак, диалог готов, теперь нужно сделать сам квест, для этого заходим в gamedata\config\gameplay\tasks_escape.xml и в самом конце пишем:


Найти потерянный АКСУ

Найти потерянный АКСУ
ui_iconsTotal_weapons
escape_volk_ak74u_done
tex_escape_volk_ak74u



Найти АКСУ
new_life.escape_volk_ak74u_have
escape_volk_ak74u_have


Принести АКСУ Волку
blue_location
Escape_novice_lager_volk
escape_volk_ak74u_done



- id квеста

Найти потерянный АКСУ - название квеста

Найти потерянный АКСУ - тоже название квеста))

ui_iconsTotal_weapons - иконка задания

escape_volk_ak74u_done - квест будет выполнен, если был получен инфопоршень escape_volk_ak74u_done

tex_escape_volk_ak74u
- ссылка на текстовый файл с описанием задания

Найти АКСУ - название подзадачи

new_life.escape_volk_ak74u_have - проверка на наличие предмета

escape_volk_ak74u_have если функция new_life.escape_volk_ak74u_have выполнилась, то выдаётся инфопоршень escape_volk_ak74u_have и выполняется подзадача

Принести АКСУ Волку - название второй подзадачи

blue_location - указатель на Волка

Escape_novice_lager_volk - id Волка в Файле gamedata\config\game_story_ids.ltx

escape_volk_ak74u_done - если будет получен этот инфопоршень, то выполнится подзадача и соответственно сам квест

Нужно сделать инфопоршни, заходим в gamedata\config\gameplay\info_l01escape.xml и в нём в конце до строчки пишем:


escape_volk_ak74u








Теперь нужно сделать описание квеста, заходим в gamedata\config\gameplay\storyline_info_escape.xml и пишем в конце:


ui\ui_icon_equipment
tex_escape_volk_ak74u


Сделаем описание на русском, заходим в stable_dialogs_escape.xml и в конце до строки пишем:


Волк попросил принести потерянный в туннеле АКСУ


Теперь создадим скриптовый файл new_life в gamedata\scripts\new_life.script и пишем:

function spawn_ak74u()
amk.spawn_item("wpn_ak74u",vector():set(-78.85,-1.29,154.74),163,189935) -- спавн ak74u в тоннеле на кордоне
end

function escape_volk_ak74u_have()
return sak.have_item_namber("wpn_ak74u",1) ~= false -- проверка на нахождение предмета в рюкзаке
end

function give_volk_ak74u(first_speaker, second_speaker) -- передача предмета
sak.out_item_namber("wpn_ak74u", 1)
end

function complete_volk_quest(first_speaker, second_speaker) -- получение награды
dialogs.relocate_money(second_speaker, 1500, "in")
end

Чтобы эти скрипты заработали, нужно создать файлы amk.script и sak.script, в аmk.script пишем

function spawn_item(spawn_item, pos, gv,lv)
if gv==nil then gv=db.actor:game_vertex_id() end
if lv==nil then lv=db.actor:level_vertex_id() end
return alife():create(spawn_item, pos, lv, gv)
end

function remove_item_from_inventory(remove_item,npc)
if npc==nil then npc=db.actor end
if remove_item~=nil then
-- npc:mark_item_dropped(remove_item)
alife():release(alife():object(remove_item:id()), true)
return true
end
return false
end

В sak.script пишем

local items_count=0
local itemin=nil

function have_item_namber(itm,need_namber)
local actor=db.actor
items_count=0
itemin=itm
actor:iterate_inventory(cheking_item,actor)
if items_count>=need_namber then
return true
else
return false
end
end
function cheking_item(actor,item)
local items=item:section()
if items==itemin then
items_count=items_count+1
end
end
function create_items(npc,section,number)
for i=1,number do
alife():create(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id())
end
end
local reloc_params={}
local stalk
function out_item_namber(itm_section,need_number)
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found =0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(out_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function relocate_item_namber(stalker,itm_section,need_number)
stalk=stalker
reloc_params.itm_section=itm_section
reloc_params.itm_cnt=need_number
reloc_params.itm_cnt_found=0
db.actor:iterate_inventory(checkout_items_count,db.actor)
reloc_params.itm_cnt_found=0
if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then
db.actor:iterate_inventory(reloc_items_count,db.actor)
end
news_manager.relocate_item(db.actor, "out", itm_section)
reloc_params={}
end
function checkout_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section then
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function reloc_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found db.actor:transfer_item(item, stalk)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end
function out_items_count(actor,item)
if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found amk.remove_item_from_inventory(item, actor)
reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1
end
end

ВСё! Можно тестировать.

ПРИМЕЧАНИЕ!!!Если вы делаете такой квест на оригинальном сталкере, то ОБЯЗАТЕЛЬНО нужно создать файлы amk.script и sak.script

Если вы делаете квест на amk моде, то нужно создать только файл sak.script
Категория: Модостроение Тень Чернобыля | Добавил: ☺[Super]Nub4ik☺ (01.08.2011)
Просмотров: 697
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
   

СТАЛКЕР!
Я всегда рад видеть
еще одну живую душу!
Но я незнаю кто ты?
Регистрация
Вход!
Модостроение Тень Чернобыля [66]
Модостроение Чистое Небо [14]
Модостроение Зов Припяти [19]
Общее [13]
Чтото ваше

В зоне всего: 1
Врагов: 1
Друзей 0

______________________

   









  Хостинг от uCoz