| Делаем моды вместе | 
| 
				
			 | 
|  
|  |   
|  
 
  
  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Гость: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 14:42 | Сообщение # 3 Renson  
  
 | 
 
 
 
 
 
[Genesis mod]  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 1053 |   
 | Награды: | 2 |   
 | Регистрация: | 03.07.2010 |  |  |  |  Среда, 03.08.2011, 14:42   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 03.07.2010 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 14:52 | Сообщение # 4 Tris  
  
 | 
 
 
 
 
 
Dead Forgetting Zone  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 914 |   
 | Награды: | 3 |   
 | Регистрация: | 12.06.2011 |  | Profans_mod, Откуда ты мои туторы откопал с модсталкер? |  |  Среда, 03.08.2011, 14:52   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 12.06.2011 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 15:09 | Сообщение # 5 Jack  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 909 |   
 | Награды: | 4 |   
 | Регистрация: | 08.06.2010 |  | Profans_mod, Ударю минусом. Сообщение отредактировал Jack - Среда, 03.08.2011, 15:10 |  |  Среда, 03.08.2011, 15:09   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 08.06.2010 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 15:22 | Сообщение # 6 FaLcon  
  
 | 
 
 
 
 
 
Проект Смерти Вопреки  
  
 | Статус: |  |   
 | Опытный: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 16:12 | Сообщение # 8 Jack  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Бывалый: |  |   
 | Сообщений: | 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 |  |  |  |  | 
|  
|  |   
|  
 
 
 Среда, 03.08.2011, 16:42 | Сообщение # 10 FEAR97  
  
 | 
 
 
 
 
 
 
  
  
 | Статус: |  |   
 | Новичок: |  |   
 | Сообщений: | 259 |   
 | Награды: | 4 |   
 | Регистрация: | 10.06.2011 |  | ОО блин наехали за то что создал тему которая уже есть! |  |  Среда, 03.08.2011, 16:42   
|  |   
|  
 
  
  
  
 | 
 
  
  
 | Статус: |  |   
 | Сообщений: | 666 |   
 | Регистрация: | 10.06.2011 |  |  |  |  |