Модострой:Вопросница
|
|
|
Статус: |
|
Легенда: |
|
Сообщений: |
2258 |
Награды: |
15 |
Регистрация: |
05.04.2010 |
|
Задаем разные вопросы касательно создания модов.
|
|
Среда, 02.03.2011, 09:50
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
05.04.2010 |
|
|
|
|
|
Статус: |
|
Бывалый: |
|
Сообщений: |
876 |
Награды: |
11 |
Регистрация: |
16.12.2010 |
|
KupuJLJL25, молодец, съешь печеньку и начни новую игру. Диалог, скорее всего, появится.
|
|
Четверг, 16.06.2011, 18:18
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
16.12.2010 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
нифига я пытался все равно нету
|
|
Четверг, 16.06.2011, 18:19
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|
|
Статус: |
|
Бывалый: |
|
Сообщений: |
876 |
Награды: |
11 |
Регистрация: |
16.12.2010 |
|
Quote (KupuJLJL25) все равно нету При верном составлении он проявится в обязательном порядке. "Правильный" пример. Ветка дезертира у Волка: Схема правильная, проблема скорее всего в самом диалоге.
|
|
Четверг, 16.06.2011, 18:32
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
16.12.2010 |
|
|
|
|
|
RICK
Четверг, 16.06.2011, 18:34 | Сообщение # 589
Статус: |
|
Опытный: |
|
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
<has_info>new_dialog</has_info>
если непоявляется диалог попробуй удалить этот поршень чуть верху который или заменить на
<has_info>storyline_actor_start</has_info>
|
|
Четверг, 16.06.2011, 18:34
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
спс Kail, заработало))Добавлено (16.06.2011, 18:54) --------------------------------------------- Kail, еще вопрос а как сделать чтобы после диалога нпц ушел допустим на свою базу?
|
|
Четверг, 16.06.2011, 18:54
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|
|
RICK
Четверг, 16.06.2011, 19:02 | Сообщение # 591
Статус: |
|
Опытный: |
|
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
это логика
надо две логики писать первая
стоим и ждем гг пока он неподойдем и непоговорим некуда неуходим
а вторую логику поговорили все я могу идти
и затем в аллспавне а имено в фале way_локация.ltx прописать ваипоенты
на вики посмотри про логику
|
|
Четверг, 16.06.2011, 19:02
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
|
: |
|
Сообщений: |
|
Регистрация: |
|
|
Так как поменять логику через диалог?
|
|
Четверг, 16.06.2011, 19:06
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
|
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
Мне кароче надо когда я подошел к нпц и поговорил с ним он уходит в опр.местность
|
|
Четверг, 16.06.2011, 19:12
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|
|
RICK
Четверг, 16.06.2011, 21:04 | Сообщение # 594
Статус: |
|
Опытный: |
|
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
;------------------------ ;Nikitos817 ;----------------------
в логике указывает info_portion на твой диалог и после того как с нпс поговорили он выполняет свою логику которую ты ему дал
|
|
Четверг, 16.06.2011, 21:04
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
Kail, слушай а как сделать чтобы мой нпц так скажем говорил к примеру как волк (подходи пообщаемся)Добавлено (16.06.2011, 21:13) --------------------------------------------- Kail, И обьясни плиз как квест создать))))В других статьях не получается а с твоей помощью получается)))
|
|
Четверг, 16.06.2011, 21:13
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|
|
RICK
Четверг, 16.06.2011, 21:13 | Сообщение # 596
Статус: |
|
Опытный: |
|
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
мне как жется это в спайс рестриктор надо пишем мол гг стоит отнас на 5 метров или меньше говорим ему подходи пообщаемсся я ксожелению в этом слаб
я сам хочу сделать заспавнил нпс тоесть суслова но хочу сделать как в чн к суслову подходиш и он говорит вот молодец живой пришол
Сообщение отредактировал Kail - Четверг, 16.06.2011, 21:15
|
|
Четверг, 16.06.2011, 21:13
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
ясн а насчет квеста?
|
|
Четверг, 16.06.2011, 21:32
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|
|
RICK
Четверг, 16.06.2011, 22:06 | Сообщение # 598
Статус: |
|
Опытный: |
|
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
итак я Kail я хочу вас научить создавать простые квесты найти принести давайте востановим квест волку найти динамит
1.список файлов
--[[ gamedata/scripts/создадим свой новый скрипт gamedata/config/gameplay/character_desc_escape gamedata/config/dialogs_escape gamedata/config/text/rus/stable_dialogs_escape gamedata/config/gameplay/infol01_escape gamedata/config/gameplay/storyline_info_escape gamedata/config/gameplay/task_escape --]]
сначало заспавним предмет для квеста заспавним динамит на атп как было в старых билдах
заходим в gamedata/scripts и создаем новый скрипт любое название скриптa допустим quest_new
и в этом скрипте пишим
---------------------------квест волка найти динамит------------------------------ function spawn_dynamite() -- спавн предмета тоесть динамита quest_add.alife():create("dynamite",vector():set(106.24745178223,-7.1400456428528,2.6464221477509),407116,119) end function esc_wolf_dynamite_have() return quest.have_item_namber("dynamite",1) ~= false end function give_esc_wolf_dynamite(first_speaker, second_speaker) quest.out_item_namber("dynamite",1) end function complete_esc_wolf_quest(first_speaker, second_speaker) dialogs.relocate_money(second_speaker, 2000, "in") -- принес гг данимит получил награду денги и патроны dialogs.relocate_item_section(second_speaker, "ammo_9x18_fmj", "in") dialogs.relocate_item_section(second_speaker, "ammo_5.45x39_fmj","in") end
затем создаем скрипт название quest и в него пишим
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<reloc_params.itm_cnt then 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<reloc_params.itm_cnt then aln_quest.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end
затем создаем скрипт quest_add и внего пишим
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
все со скриптами закончили
2.создание диалога для квеста
заходим в gamedata/config/gameplay/character_desc_escape
ищем профиль волка и добавим ветки диалога
нужна две ветки диалога первая ветка для квеста ,а вторая ветка для завершения квеста и получения награды
<start_dialog>escape_lager_volk_talk</start_dialog> <start_dialog>dm_hello_dialog</start_dialog> <actor_dialog>dm_cool_info_dialog</actor_dialog> <actor_dialog>dm_help_wounded_medkit_dialog</actor_dialog> <actor_dialog>tm_wolf_dialog</actor_dialog> <actor_dialog>tm_wolf_reward</actor_dialog> <actor_dialog>esc_wolf_dynamite_quest</actor_dialog> -- вот наш диалог <actor_dialog>esc_wolf_dynamite_quest_completed</actor_dialog> -- и вот наш диалог </specific_character>
3.создание скелета диалога
заходим в gamedata/config/dialogs_escape
в самом низу перед </game_dialogs> пишим
<dialog id="esc_wolf_dynamite_quest"> -- первый диалог на получения квеста и начало квеста <dont_has_info>esc_wolf_dynamite_start</dont_has_info> <phrase_list> <phrase id="0"> <text>esc_wolf_dynamite_quest_0</text> <next>1</next> </phrase> <phrase id="1"> <text>esc_wolf_dynamite_quest_1</text> <next>2</next> <next>3</next> </phrase> <phrase id="2"> <text>esc_wolf_dynamite_quest_2</text> <give_info>esc_wolf_dynamite_start</give_info> <action>quest_new.spawn_dynamite</action> </phrase> <phrase id="3"> <text>esc_wolf_dynamite_quest_3</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog> <dialog id="esc_wolf_dynamite_quest_completed">--второй диалог нашли динамит получаем награду <precondition>quest_new.esc_wolf_dynamite_have</precondition> <has_info>esc_wolf_dynamite_have</has_info> <dont_has_info>esc_wolf_dynamite_done</dont_has_info> <phrase_list> <phrase id="0"> <text>esc_wolf_dynamite_quest_completed_0</text> <next>1</next> </phrase> <phrase id="1"> <text>esc_wolf_dynamite_quest_completed_1</text> <next>2</next> </phrase> <phrase id="2"> <text>esc_wolf_dynamite_quest_completed_2</text> <action>quest_new.complete_esc_wolf_dynamite_quest</action> <give_info>esc_wolf_dynamite_done</give_info> <action>quest_new.give_esc_wolf_dynamite</action> <next>3</next> </phrase> <phrase id="3"> <text>esc_wolf_dynamite_quest_completed_3</text> <action>quest_new.complete_esc_wolf_quest</action> </phrase> </phrase_list> </dialog>
диалог готов руссифицируем 4. идем сюда в gamedata/config/text/rus/stable_dialogs_escape
в самом низу перед </string_table> пишим
<string id="esc_wolf_dynamite_quest_0"> <text>Привет Волк работа есть для меня?</text> </string> <string id="esc_wolf_dynamite_quest_1"> <text>да как раз найдется для тебя работенка тут такое дело наши ребята нашли динамит но попути когда они тащили динамит сюда в лагерь на них бандиты на пали и динамит забрали ты немог бы вернуть динамит ребята сказали что видели что бандиты динамит в сторону атп тащили, вообщем верни динамит ,а я отблагадарю. ну что согласен?</text> </string> <string id="esc_wolf_dynamite_quest_2"> <text>Хорошо попробую найти динамит</text> </string> <string id="esc_wolf_dynamite_quest_3"> <text>в другой раз</text> </string> <string id="esc_wolf_dynamite_quest_completed_0"> <text>привет Волк</text> </string> <string id="esc_wolf_dynamite_quest_completed_1"> <text>ну как нашол?</text> </string> <string id="esc_wolf_dynamite_quest_completed_2"> <text>да. нашол тяжелый немного держи</text> </string> <string id="esc_wolf_dynamite_quest_completed_3"> <text>спасибо меченый ,а вот и награда как я и обещал</text> </string> <string id="tex_esc_wolf_dynamite"> <text>Волк попросил найти динамит который украли бандиты</text> </string>
диалог готов 5.создадим поршни идем сюда gamedata/config/gameplay/infol01_escape
в самом конце перед </game_information_portions>
пишим <!--квест Волка найти динамит--> <info_portion id="esc_wolf_dynamite_start"> <task>esc_wolf_dynamite</task> </info_portion> <info_portion id="esc_wolf_dynamite_have"> </info_portion> <info_portion id="esc_wolf_dynamite_done"> </info_portion>
6. теперь историю квеста создадим я так это называю идем сюда gamedata/config/gameplay/storyline_info_escape в самом конце пишим
<!--квест волка найти динамит--> <article id="tex_esc_wolf_dynamite" name="найти и вернуть динамит волку" article_type="task"> <texture x="200" y="900" width="100" height="100">ui\ui_icon_equipment</texture> <text>tex_esc_wolf_dynamite</text> </article>
7.
все и последнее осталось добавить запись о квесте идем сюда
gamedata/config/gameplay/task_escape
в самом низу допишим
<game_task id="esc_wolf_dynamite"> <title>Найти украденый бандитами динамит</title> <objective> <text>Найти украденый бандитами динамит</text> <icon>ui_iconsTotal_lost_thing</icon> <infoportion_complete>esc_wolf_dynamite_done</infoportion_complete> <article>tex_esc_wolf_dynamite</article> </objective> <objective> <text>Найти украденый бандитами динамит</text> <function_complete>quest_new.esc_wolf_dynamite_have</function_complete> <infoportion_set_complete>esc_wolf_dynamite_have</infoportion_set_complete> </objective> <objective> <text>вернуть динамит Волку</text> <map_location_type hint="Волк">blue_location</map_location_type> <object_story_id>Escape_novice_lager_volk</object_story_id> <infoportion_complete>esc_wolf_dynamite_done</infoportion_complete> </objective> </game_task>
все теперь новую игру начали можем сразу взять задание у волка вернуть динамит
Сообщение отредактировал Kail - Четверг, 16.06.2011, 22:13
|
|
Четверг, 16.06.2011, 22:06
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
|
: |
|
Сообщений: |
|
Регистрация: |
|
|
Елки палки, можно куда проще. Но это тоже годится. Так где ставить инфопоршни в логике? Поподробнее
|
|
Четверг, 16.06.2011, 22:21
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
|
|
|
|
|
|
Статус: |
|
Новичок: |
|
Сообщений: |
330 |
Награды: |
2 |
Регистрация: |
01.06.2011 |
|
Expression : fatal error Function : CInifile::Load File : E:\stalker\patch_1_0004\xrCore\Xr_ini.cpp Line : 175 Description : <no expression> Arguments : Duplicate section 'wpn_mp5' found.
подскажите что делать?
|
|
Четверг, 16.06.2011, 22:50
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
01.06.2011 |
|
|
|
|