помогаем задаем вопросы и общаемяДобавлено (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