[SoC] Ковыряемся в файлах - Страница 174 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

Да. Прописать новую группировку, сделать её нужные отношения, и эту группировку приделать неписю.

Guzerus,

монстры группировок сталкеров не различают. Для них есть только сталкеры и актор.

Выходит, если поставить группировке monster отношение 1000 к группировке test (введённой нами), то всё равно ничего? Извиняюсь, не знал.

Guzerus,

нет такой группировки monster. Если заглянуть в файл game_relations.ltx, то увидим две таблицы: одна - только для отношений между группировками сталкеров. Монстров там нет. Другая - для отношений между монстрами. Кроме монстров там ещё есть actor и human. Т.е. актора можно подружить с монстрами, а других сталкеров - только всех сразу. Одного никак, разве что в логику исключения проставлять. Но это надо в скрипты лезть.

Помогите с модом швыряния предметами.Идем в

bind_stalker.script function actor_binder:on_item_drop (obj)

добавляем снизу

thrower.throw_object(self.object,obj).

 

Пишем функцию:

 

function throw_object(npc,obj)

printf("thrower 0")

if npc == nil

then

npc = db.actor

end

if obj == nil then return end

 

local dir = npc:direction()

local pos = obj:position()

dir:mul(1300)

pos:add(dir)

printf("thrower 1 %s %s vector %d %d %d",npc:section(),obj:section(),dir.x,dir.y,dir.z)

 

до сих пор все ОК: есть объект, есть вектор в направлении от неписи.Теперь,как его бросать?

local shell = obj:get_physics_shell()

получаем nil

obj.mass - тоже 0, из предмета не получается физической модели.

 

Пробую просто переместить его:

npc:mark_item_dropped(obj)

obj:set_desired_position(pos)

Все равно не выходит.

 

malandrinus, Касательно отношений монстр-группировка,я знаю ,что репутация у монстров только нпс и актору меняется,а как в таком случае селана взаимная нейтральность монстров и "Монолита" ,а так же зомбированых или они то же монстрами считаются как Сидор
malandrinus, Касательно отношений монстр-группировка,я знаю ,что репутация у монстров только нпс и актору меняется,а как в таком случае селана взаимная нейтральность монстров и "Монолита" ,а так же зомбированых или они то же монстрами считаются как Сидор

Это правильно заметил. Монстры разделены на виды, по ним и считаются отношения. У каждого монстра в конфиге есть параметр

 

species                = bloodsucker

у сталкеров

species                = human

 

SCRIPT,

тут все просто - делаешь новый вид, прописываешь его своему сталкеру, настраиваешь отношения.

Изменено пользователем Bak

подскажите еще такой вопрос. Как сделать так что-бы после обыска трупа или тайника или вообще любой вещи актору давалась инфа типа <give_info>podguz_razvod_start</give_info>

Всем еще раз привет! кто мне может написать логику нпсу чтобы он спал и никогда вообще ни на что не реагировал? не просыпался, не разговаривал. вообще ничего. просто спал.

просто я сам не догоняю чуть

 

Добавлено через 99 мин.:

и еще, как заспавнить мертвого нпс через скрипт БЕЗ амк

Изменено пользователем SCRIPT

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

meet=no_meet

combat ignor=always

danger ignor=always

А мертвого без АМК через скрипт кажется нельзя,проще через алл спавн -хелч =0 поставить

[sleeper3@esc_lager]

path_main = sleep3

combat_ignore_cond = always

meet = meet@no_meet

пример работающей логики из лагеря новичков

Изменено пользователем gruber

gruber, Разве?

А может лучше заспавнить обычного, а потом убить?

 

function deth_npc()
local sobj = alife():create("npc",vector():set(x,y,z),lv,gv)
sobj:on_death()
end

 

автор Garry_Galler

 

ЗЫ и писали этот вопрос 4 страницы назад.

_Призрак_

сделать активацию чего угодно - хоть скрипта хоть выдачи поршня - при обыске трупа можно через коллбек на использование объекта.

в файле xr_motivator есть такая функция

function motivator_binder:use_callback(obj, who)

 

находишь там строчку self.treasure_processed = true - это в самом конце и после нее вписываешь что тебе надо.

можно например активацию функции

имя_файла.имя_функции()

или выдачу поршня

db.actor:give_info_portion("info")

 

сделать такой же коллбек на обыска игрового тайника тоже вроде можно, но придется делать проверку на сид тайника.

сиды тайников есть в файле game_story_ids - соответственно пишем функцию которая будет перебирать сиды всех тайников и сравнивать их с сидом объекта который юзается игроком при обыске.

Точно не уверен но вроде коллбек на юзание должен работать для тайников.

 

кстати вот так можно выдать Меченому сразу все тайники игры.

function name_secret()
local ini = ini_file("misc\\treasure_manager.ltx")
if ini:section_exist("list") then
    local n = ini:line_count("list")
local id, value = "",""
for i=0,n-1 do
result, id, value= ini:r_line("list",i,"","")
treasure_manager.get_treasure_manager():give_treasure(tostring(id))
end
end
end

 

max_max_08, смотри файл death_manager.script, там много чего интересного по твоему вопросу.

Ray, а ты напиши функцию,которая в зависимости от разрешения будет вставлять в строку \\n

Одна проблема - разрешение определить я не знаю как...

Изменено пользователем Monnoroch

а это не подойдет

C++ class CServerList : CUIWindow {

CServerList ();

 

function SetPlayerName(string);

function GetFont();

function SetWindowName(string);

function Enable(boolean);

function SetHeight(number);

function SetFilters(SServerFilters&);

function RefreshList(boolean);

function SetSortFunc(string, boolean);

function SetAutoDelete(boolean);

function NetRadioChanged(boolean);

function ShowServerInfo();

function RefreshQuick();

function AttachChild(CUIWindow*);

function GetWidth() const;

function SetWndPos(number, number);

function Init(number, number, number, number);

function Init(Frect*);

function ConnectToSelected();

function DetachChild(CUIWindow*);

function SetPPMode();

function WindowName();

function IsShown();

function SetWndSize(number, number);

function SetWndRect(Frect);

function SetWndRect(number, number, number, number);

function GetHeight() const;

function SetWidth(number);

function Show(boolean);

function IsEnabled();

function ResetPPMode();

function SetFont(CGameFont*);

function IsAutoDelete();

};

 

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...