Делаем моды вместе
|
|
|
Статус: |
|
Гость: |
|
Сообщений: |
33 |
Награды: |
2 |
Регистрация: |
03.08.2011 |
|
помогаем задаем вопросы и общаемяДобавлено (03.08.2011, 13:46) --------------------------------------------- вот статьи
----------------------------------------------------------------------------------------------------------------------------------- Тутореал по снятию денег с трупов. ----------------------------------------------------------------------------------------------------------------------------------- АВТОР: TRIS
Для Зов припяти
Итак к делу:
Для начала идем в папку:gamedata\scripts\ и создаём там файл: lootmoney.script
После этого открываем его и пишим туда вот што:
-----------------------------------------------------------------------------------
function lootmoney(npc) if npc:character_community() ~= "monolith" then local actor = db.actor local money = npc:money() if money ~= nil and money > 0 then local deadmoney = money local npc_rank npc_rank = ranks.get_obj_rank_name(npc) if npc_rank ~= nil then if npc_rank == "novice" and deadmoney >=400 then deadmoney=math.random(25,400) elseif npc_rank == "experienced" and deadmoney >=500 then deadmoney=math.random(50,500) elseif npc_rank == "veteran" and deadmoney >=600 then deadmoney=math.random(100,600) elseif npc_rank == "master" and deadmoney >=700 then deadmoney=math.random(200,700) end end local news_caption = "Мёртвый сталкер: "..npc:character_name() local news_text = "Обнаружено денег: %c[255,255,0,0]"..game.translate_string(deadmoney).."%c[default] руб." --xr_sound.set_sound_play(actor:id(), "pda_news") actor:give_game_news(news_caption, news_text, "ui_iconsTotal_found_money", 0, 10000) actor:give_money(deadmoney) game_stats.money_quest_update(deadmoney) npc:give_money(-money) game_stats.money_quest_update(-money) end end end
function lootmoney_effect(npc,corpse_npc) if corpse_npc:character_community() ~= "monolith" then local num=corpse_npc:money() if num and num >0 then local deadmoney = num local gi_rank gi_rank = ranks.get_obj_rank_name(corpse_npc) if gi_rank ~= nil then if gi_rank == "novice" and deadmoney >=100 then deadmoney=math.random(10,50) elseif gi_rank == "experienced" and deadmoney >=200 then deadmoney=math.random(25,100) elseif gi_rank == "veteran" and deadmoney >=300 then deadmoney=math.random(50,200) elseif gi_rank == "master" and deadmoney >=400 then deadmoney=math.random(100,400) end end npc:give_money(deadmoney) game_stats.money_quest_update(deadmoney) corpse_npc:give_money(-num) g ame_stats.money_quest_update(-num) end end end
--------------------------------------------------------------------------------------- ----------------------------- --- (Полоску вставлять ненадо это я выделил то што нужно вставлять)
Далее...
открываем файл(скрипт):xr_corpse_detection
ищем в нем строчку: corpse_npc:iterate_inventory(get_item, corpse_npc)
и после неё вставляем это: ---------------------------------------------------------------------
if lootmoney then lootmoney.lootmoney_effect(npc, corpse_npc) end
---------------------------------------------------------------------
закрываем и даём подтверждение на сохранение изменений.
далее...
Открываем файл (скрипт) : xr_motivator
Находим там строчку
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who) end else
И после неё вставляем это: --------------------------------------------- if lootmoney then lootmoney.lootmoney(self.object) end
---------------------------------------------
Если всё зделали правильно то при обыске трупа будет выводится сообщение о том скольго денег вы нашли. smile Всё.
АВТОР:TRIS 410
Для Зов припяти Добавлено (03.08.2011, 13:47) --------------------------------------------- АВТОР: TRIS Используя этот материал в своих модах указываейте автора, тоесть меня (TRIS) Спасибо за понимание. В этом уроке я научу вас спавнить НПС через скрипт. Открываем файл \configs\creatures\spawn_sections_zaton В самое начало добавляем это: ;------------------------TRIS410 -------------------- [my_stalker]:stalker $spawn = "respawn\my_stalker" character_profile = my_stalker spec_rank = master community = stalker custom_data = scripts\zaton\my_stalker_npc_logic.ltx
Сохраняем… Далее… Идем в папку
\configs\gameplay
Открываем character_desc_zaton В самый конец добавляем, но перед <\xml>! <specific_character id="my_stalker" team_default = "1"> <name>Tris</name> <icon>ui_inGame2_neutral_4</icon> <map_icon x="1" y="0"></map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>my_stalker</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\stalker\</snd_config>
<rank>65</rank> <reputation>0</reputation> <money min="2500" max="5000" infinitive="0"/>
<visual>actors\stalker_neutral\stalker_neutral_4</visual> <supplies> [spawn] \n wpn_beretta = 1 \n ammo_9x19_fmj = 1 \n grenade_rgd5 = 1 \n #include "gameplay\character_items.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs.xml" </supplies>
#include "gameplay\character_criticals_4.xml" <start_dialog>hello_dialog_my_stalker</start_dialog> <actor_dialog>actor_dialog_my_stalker</actor_dialog> </specific_character>
Сохраняем… открываем файл в этой же папке dialogs_zaton
Вставляем это но перед </game_dialogs>! <dialog id="hello_dialog_my_stalker"> <phrase_list> <phrase id="0"> <text>Кто научил тебя ,меня создавать?</text> </phrase> </phrase_list> </dialog> <dialog id="actor_dialog_my_stalker"> <phrase_list> <phrase id="0"> <text>Tris!!! Скажу ему спасибо.</text> <action>dialogs.break_dialog</action> </phrase> </phrase_list> </dialog>
И открываем все в этой же папке: npc_profile После строчки <!-- НОВЫЕ ПРОФИЛЯ --> добавляем <character id="my_stalker"> <class>my_stalker</class> </character>
Создадим логику для него \configs\scripts\zaton а там файл my_stalker_npc_logic И пишим там Логика для бессмертного: Вставляем это: [logic] active = remark1 danger = danger_ignore invulnerable = true
[danger_ignore] ignore_distance = 5
[remark1] no_move = true anim = choose on_actor_dist_le = 2| remark@hello invulnerable = true meet = meet_guide
[meet_guide] abuse = false use = true allow_break = false meet_on_talking = false
[remark@hello] no_move = true invulnerable = true meet = meet_guide on_actor_dist_le = 10| remark1
А если смертного то Вставляем это: [logic] active = remark1 danger = danger_ignore invulnerable = false
[danger_ignore] ignore_distance = 5
[remark1] no_move = true anim = choose on_actor_dist_le = 2| remark@hello invulnerable = false meet = meet_guide
[meet_guide] abuse = false use = true allow_break = false meet_on_talking = false
[remark@hello] no_move = true invulnerable = false meet = meet_guide on_actor_dist_le = 10| remark1 Далее… Идём в:
gamedata\scripts И создаем скрипт sniper_add.script И пишем там :
function start_add_spawn()--\\ --\\ -- spawn_sniper_one() end
function spawn_sniper_one() local x= 111.75521087646 local y= -3.9362425804138 local z= 185.2212677022 local level_vertex= 1158851 local game_vertex_id= 316 alife():create("my_stalker",vector():set(x,y,z),level_vertex,game_vertex_id) end
function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end
И открываем скрипт : bind_stalker.script
Ищим строку
function actor_binder:update(delta) object_binder.update(self, delta)
if string.find(command_line(), "-designer") then return end
И после неё пишим это if sniper_add.load_variable("spawn_sniper",false)==false then sniper_add.start_add_spawn() sniper_add.save_variable("spawn_sniper",true) end
Всё мы заспаунили НПС он появится около Сыча если всё правильно Сделали… Удачи!
Используя этот материал в своих модах указываейте автора, тоесть меня (TRIS) Спасибо за понимание.
АВТОР: TRIS
|
|
Среда, 03.08.2011, 13:47
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.08.2011 |
|
|
|
|
|
Бульба
Среда, 03.08.2011, 14:39 | Сообщение # 2
Статус: |
|
Бывалый: |
|
Сообщений: |
823 |
Награды: |
1 |
Регистрация: |
21.11.2010 |
|
Profans_mod, умеем пользоваться поиском? Вот тема "Модострой: вопросица"
|
|
Среда, 03.08.2011, 14:39
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
21.11.2010 |
|
|
|
|
|
Renson
Среда, 03.08.2011, 14:42 | Сообщение # 3
[Genesis mod]
Статус: |
|
Бывалый: |
|
Сообщений: |
1053 |
Награды: |
2 |
Регистрация: |
03.07.2010 |
|
|
|
Среда, 03.08.2011, 14:42
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.07.2010 |
|
|
|
|
|
Tris
Среда, 03.08.2011, 14:52 | Сообщение # 4
Dead Forgetting Zone
Статус: |
|
Бывалый: |
|
Сообщений: |
914 |
Награды: |
3 |
Регистрация: |
12.06.2011 |
|
Profans_mod, Откуда ты мои туторы откопал с модсталкер?
|
|
Среда, 03.08.2011, 14:52
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
12.06.2011 |
|
|
|
|
|
Jack
Среда, 03.08.2011, 15:09 | Сообщение # 5
Статус: |
|
Бывалый: |
|
Сообщений: |
909 |
Награды: |
4 |
Регистрация: |
08.06.2010 |
|
Profans_mod, Ударю минусом.
Сообщение отредактировал Jack - Среда, 03.08.2011, 15:10
|
|
Среда, 03.08.2011, 15:09
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.06.2010 |
|
|
|
|
|
FaLcon
Среда, 03.08.2011, 15:22 | Сообщение # 6
Проект Смерти Вопреки
Статус: |
|
Опытный: |
|
Сообщений: |
2022 |
Награды: |
8 |
Регистрация: |
17.07.2011 |
|
ну есть же уже тема модострой.вопросница
|
|
Среда, 03.08.2011, 15:22
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
17.07.2011 |
|
|
|
|
|
Статус: |
|
Гость: |
|
Сообщений: |
33 |
Награды: |
2 |
Регистрация: |
03.08.2011 |
|
Это всё как бы уже давно не новость, но всё же опишу... Пускай начинающие мододелы балуются. Итак, не для кого не секрет, что в ресурсах сталкера имеется модель дымовой гранаты, которая нерационально используется только в мультиплеере. Учитывая что для зрения NPC, дым в синглплеере не преграда. Создадим на базе дымовухи что-то более существенное. Например электрошоковую гранату как в F.E.A.R.
Итак, как её сделать и добавить в игру? Не будем создавать для неё отдельный конфиг - это не рационально. Наша граната будет наследовать конфиг гранаты grenade_gd-05, только с небольшими изменениями. Содержание [убрать]
1 Конфиг 2 Описание 3 Добавление в игру 4 Автор
[править] Конфиг
Добавим конфиг новой гранаты в файл gamedata\config\weapons\w_f1.ltx в самом конце файла добавим конфиг нашей гранаты:
[el_grenade]:grenade_gd-05 ;Электрошоковая граната наследует конфиг гранаты grenade_gd-05 inv_name = el_grenade_name ;Название новой гранаты inv_name_short = el_grenade_name ;Название новой гранаты description = el_grenade_desc ;Описание новой гранаты blast = 3 ;хит от гранаты (300%) blast_r = 5 ;радиус хита (5 м.) hit_type_blast = shock ;тип хита snd_explode = anomaly\electra_blast1 ;звук взрыва explode_particles = anomaly2\electra2_blast ;или anomaly2\electra2_blast_00 ;партикл взрыва
[править] Описание
Теперь добавим описание гранаты в один из файлов в gamedata\config\text\rus\ ну скажем в string_table_enc_weapons.xml ниже тега <string_table> добавляем:
<string id="el_grenade_name"> <text>ЭШГ-1</text> </string> <string id="el_grenade_desc"> <text>Электрошоковая граната.</text> </string>
[править] Добавление в игру
Вот и всё, теперь можно добавлять торговцам: Ну скажем Бармену - в файле gamedata\config\misc\trade_barman.ltx после строчки [supplies_start] добавляем:
el_grenade = 10, 0.9
где:
el_grenade - конфигурационное название предмета 10 - макс. кол-во гранат 0.9 - вероятность их появления (0.9 = 90%)
[править] Автор
THE_ATLAS
|
|
Среда, 03.08.2011, 16:11
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
03.08.2011 |
|
|
|
|
|
Jack
Среда, 03.08.2011, 16:12 | Сообщение # 8
Статус: |
|
Бывалый: |
|
Сообщений: |
909 |
Награды: |
4 |
Регистрация: |
08.06.2010 |
|
Profans_mod, Ты совсем тупой? тебе сказали в специальную тему идти
|
|
Среда, 03.08.2011, 16:12
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
08.06.2010 |
|
|
|
|
|
Бульба
Среда, 03.08.2011, 16:28 | Сообщение # 9
Статус: |
|
Бывалый: |
|
Сообщений: |
823 |
Награды: |
1 |
Регистрация: |
21.11.2010 |
|
Сообщение отредактировал Бульба - Среда, 03.08.2011, 16:32
|
|
Среда, 03.08.2011, 16:28
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
21.11.2010 |
|
|
|
|
|
FEAR97
Среда, 03.08.2011, 16:42 | Сообщение # 10
Статус: |
|
Новичок: |
|
Сообщений: |
259 |
Награды: |
4 |
Регистрация: |
10.06.2011 |
|
ОО блин наехали за то что создал тему которая уже есть!
|
|
Среда, 03.08.2011, 16:42
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
10.06.2011 |
|
|
|
|