Перейти к контенту

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

Всем здравствуйте!

Изъюзал весь поиск,но так и не нашёл ответа на,казалось бы простой вопрос:

Что такое мины?Как их спаунить? Какие конфиги за них отвечают.

Я имею ввиду простые стационарные мины,спавнящиеся с началом игры.

Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий

Larry76, простые мины палочкой вверх?

Если да, то это аномалии такие, типа мины.

В состоянии idle имеют партикл палочки, а в активном состоянии, когда актор вошёл в зону мины, активное, тоесть хит и партикл взрыва, звук.

Спавнить их в sdk или all.spawn, или скриптом.

Также спавнить, как и аномалии.

Ссылка на комментарий

TREWKO.А поподробнее, с примером?

Я,в принципе понял,что они действуют наподобии аномалий.Но вот примерчик спавна одиночной мины не помешал бы конечно... :blush:

Интересно,а в Сигерусе мины как сделаны? (те,которые с началом игры по локации разбросаны.)

Изменено пользователем Larry76
Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий

Здрасьте.

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

И через какой инфопоршень его желательно вызывать?

FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Ссылка на комментарий

Как можно сделать не большую зону, пр наведении на которую курсор будет надпись и при нажатии кнопки действия мы получим функцию.

 

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

Larry76, спавнятся как и аномалии.

Скриптом я аномалии так и не научился спавнить, скрипт у меня не пашет.

Секция мины = zone_mine_field

Но вот:

function create_anom(section,rad_anom,x,y,z,lv,gv,mode)

-- con(section)

if gv==nil then gv=db.actor:game_vertex_id() end

if lv==nil then lv=db.actor:level_vertex_id() end

if pos==nil then pos=db.actor:position() end

 

local p_obj = alife():create(section,vector():set(x,y,z),lv,gv)

 

local packet = net_packet()

packet:w_begin(0)

p_obj:STATE_Write(packet)

packet:r_seek(2)

 

local game_vertex_id = packet:r_u16()

local cse_alife_object__unk1_f32 = packet:r_float()

local cse_alife_object__unk2_u32 = packet:r_s32()

local level_vertex_id = packet:r_s32()

local object_flags = packet:r_s32()

local custom_data = packet:r_stringZ()

local story_id = packet:r_s32()

local cse_alife_object__unk3_u32 = packet:r_s32()

 

local shape_count = packet:r_u8()

for i=1,shape_count do

local shape_type = packet:r_u8()

if shape_type == 0 then

local center = packet:r_vec3()

local radius = packet:r_float()

else

local box = packet:r_matrix()

end

end

 

local restrictor_type = packet:r_u8()

 

local cse_alife_custom_zone__unk1_f32 = packet:r_float()

local cse_alife_custom_zone__unk2_u32 = packet:r_s32()

local on_off_mode_enabled_time = packet:r_s32()

local on_off_mode_disabled_time = packet:r_s32()

local on_off_mode_shift_time = packet:r_s32()

 

local offline_interactive_radius = packet:r_float()

local artefact_spawn_places_count = packet:r_u16()

local cse_alife_anomalous_zone__unk1_u32 = packet:r_s32()

 

local last_spawn_time_present = packet:r_u8()

 

-- if packet:r_elapsed() ~= 0 then abort("left=%d", packet:r_elapsed()) end

 

packet:w_u16(game_vertex_id)

packet:w_float(cse_alife_object__unk1_f32)

packet:w_s32(cse_alife_object__unk2_u32)

packet:w_s32(level_vertex_id)

packet:w_s32(object_flags)

if mode~=nil then custom_data = mode end

packet:w_stringZ(custom_data)

packet:w_s32(story_id)

packet:w_s32(cse_alife_object__unk3_u32)

 

packet:w_u8(1)

packet:w_u8(0)

local sphere_center = vector()

sphere_center:set(0, 0, 0)

packet:w_vec3(sphere_center)

radius = rad_anom

packet:w_float(radius)

 

packet:w_u8(restrictor_type)

 

packet:w_float(cse_alife_custom_zone__unk1_f32)

cse_alife_custom_zone__unk2_u32 = bit_not(0)

packet:w_s32(cse_alife_custom_zone__unk2_u32)

packet:w_s32(on_off_mode_enabled_time)

packet:w_s32(on_off_mode_disabled_time)

packet:w_s32(on_off_mode_shift_time)

 

packet:w_float(offline_interactive_radius)

packet:w_u16(artefact_spawn_places_count)

packet:w_s32(cse_alife_anomalous_zone__unk1_u32)

 

if mode == nil then

 

packet:w_u8(last_spawn_time_present)

end

p_obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())

-- add_spot_on_map(p_obj.id,"red_location","Аномалия")

 

 

return p_obj

end

 

 

 

 

Вызвать так:

Ниже этого скрипта пиши:

function anm_cr()
    create_anom("zone_mine_field",radius,x,y,z,lv,gv, nil) -- пропиши координаты и радиус.
end

Сам толком не проверял.

Изменено пользователем TREWKO
Ссылка на комментарий

~<Red>~,

function spawn_vintorez()
alife():create("имя_нпс_из_файла_character_descr_***",vector():set(-179.04676818848,9.4119186401367,76.59033203125),582891,145)
end

Где *** имя локации.

(-179.04676818848,9.4119186401367,76.59033203125),582891,145)

Координаты. В нашём случае спаун на затоне в одном из домов сгоревшего хутора.

И через какой инфопоршень его желательно вызывать?
Хм... Это как? Вызвать функцию можешь из диалога тегом
<action>имя_скрипта.имя_функции_спауна</action>

Всё.

ЗЫ: И вот это прочти. Много нового узнаешь.

 

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

А как удалить предмет из инвентаря скриптом?

Ссылка на комментарий

Как и любой другой объект в игре :).

в цикле по инвентарю ищешь название и удаляешь по id

либо просто отбираешь у игрока :)(посмотри в сторону dialogs.script или amk_mod.script)

Ссылка на комментарий

а тогда как?

FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Ссылка на комментарий

Здрасте народ! Никто не подскажет возможен ли какой нибудь счетчик диалогов? Например если один и тот же диалог например прошел 3 раза то чего нибудь делаем...

Не соответствует. N6260

Ссылка на комментарий

Подскажите, кто знает:

1. как узнать использован ли в данный момент оптический прицел главным героем ?

2. как убрать/вернуть весь индикаторный худ как по клавишам "серый минус"/"серый плюс" ?

 

malandrinus, это для ТЧ.

1. оружие с оптическим прицелом в состоянии прицеливания.

2. level.hide_indicators()/level.show_indicators() эквивалентны -/+, hud_weapon on/off убирает руки с оружием, hud_info on/off не заметил изменений на экране, а остальное не пробовал из-за ненадобности.

Изменено пользователем sapsan
Ссылка на комментарий
Никто не подскажет возможен ли какой нибудь счетчик диалогов?

В диалогах можно завести тег action. Вписываешь туда свою функцию и делаешь там что надо. Можно и счётчик завести.

 

1. как узнать использован ли в данный момент оптический прицел главным героем ?

2. как убрать/вернуть весь индикаторный худ как по клавишам "серый минус"/"серый плюс" ?

1. Уточнить бы вопрос. Надет прицел на текущем оружии или оружие в состоянии прицеливания? Если установленность прицела, то в ТЧ это только через нетпакеты. Начиная с ЧН есть вроде функция у ствола weapon_is_scope

2. Для манипуляции элементами худа можно использовать консольные команды (через get_console():execute()):

hud_crosshair on/off

hud_crosshair_dist on/off

hud_info on/off

hud_weapon on/off

и функции:

level.hide_indicators()

level.show_indicators()

Что из этого заменяет +/- уже не помню.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Подскажите пожалуйста, АМК таймеры от ТЧ подойдут к ЗП?

Ссылка на комментарий
кровоSTALKER, а почему не пойдут-то? Это всего лишь проверка времени (с последствиями в виде запуска нужных событий) повешенная на апдейт актора. :)
Ссылка на комментарий

Как сделать чтобы при подходе ГГ к НПС с определенным SIDом ближе чем на 10метров его(ГГ) бил хит(слабенький) + постэффект и появлялось сообщение что ближе мол нельзя убьёт.

87728-stalker.gif
Ссылка на комментарий

ФеНиКс:

Впервые я могу что-то предложить:

Ну во-первых тебе надо сделать проверку на дистанцию:

local flobals = false

function bind_hit_static()
  for a=1,65635,1 do 
    local obj=level.object_by_id(a) 
    if obj and string.find(obj:name(),"имя нпс") and not flobals then
     if obj:position():distance_to(db.actor:position()) < 10 then
      local h = hit ();
      h.power = 1;
      h.direction = vector():set (0, 0, 0);
      h.impulse = 0;
      h.draftsman = obj;
      h.type = hit.explosion;
      obj:hit (h);
      flobals = true
     end
    end
  end
end

Вот мы и получили хит... по моему)))

Теперь надо сделать сообщение, получаем такое:

local flobals = false

function bind_hit_static()
  for a=1,65635,1 do 
    local npc=level.object_by_id(a) 
    if npc and string.find(npc:name(),"имя нпс") and not flobals then
     if npc:position():distance_to(db.actor:position()) < 10 then
      local h = hit ();
      h.power = 1;
      h.direction = vector():set (0, 0, 0);
      h.impulse = 0;
      h.draftsman = obj;
      h.type = hit.explosion;
      npc:hit (h);
      flobals = true
    local sactor = alife():actor() 
    local cactor = level.object_by_id(sactor.id) 
    cactor:give_game_news(
        "%c[255,255,1,1]Имя того, кто это скажет\\n%c[255,1,255,1]Дальше подойти нельзя! Опасная зона!",   
        "ui\\ui_iconstotal",        
        Frect():set(1245,517,83,47),  
        math.random(1000, 2000),     -- задержка появления сообщения. корейский рандом)))
        5000 -- сколько продержится это сообщение.                         
        )
     end
    end
  end
end

Но вот я не понял, эффект какой, пост эффект?

Или аним?

К сожалению не врубился, как прописать sid... Может: level.object_by_sid(номер сида)?

 

 

Кстати:

Засунул в скрипт test.script это:

local lamps_marsh_vr_on = false

function bind()
    local id, obj
    for id=0, 65535 do
        obj = level.object_by_id(id)
        if obj ~= nil and
           obj:section() == "lights_hanging_lamp" and
           string.find(obj:name(), "light_alarm_glass_0001")
        then
            local hl = obj:get_hanging_lamp()
            if hl ~= nil then
                                if lamps_marsh_vr_on then 
                     hl:turn_on()
                                   else
                     hl:turn_off()
                                end
            end
        end
    end
end

Прописал в биндер сталка: test.bind()

То есть, при запуске игры выключается лампочка в подвале у сидора.

Но как только запускаю игру, игра идёт нормально... как только сидор махнул рукой - бац вылет!

Вылет без лога.

Удаляю скрипт--> игра работает без проблем.

Результат выключения лампочки увидеть не могу, так как слишком быстро всё происходит.

Изменено пользователем TREWKO
Ссылка на комментарий

Ещё вопрос по худу - как узнать был ли убран худ пользователём с помощью "-"? Если нет явного способа, то можно ли сделать это неявно - проверкой наличия какого-то стандартного элемента худа (например миникарты)?

 

Проверил с помощью проверки на наличие часов:

get_hud():GetCustomStatic("hud_show_time")

так они всегда присутствуют...

 

malandrinus, а сам элемент есть такой ? "hud_show_time" - это в Солянке часы выводятся...

Код

        local guiHidedManually = not cs
        get_console():execute("load ~#I#: guiHidedManually="..tostring(guiHidedManually))
        get_console():execute("load ~#I#: cs:wnd():IsEnabled()="..tostring(cs:wnd():IsEnabled()))
        get_console():execute("load ~#I#: cs:wnd():IsShown()="..tostring(cs:wnd():IsShown()))
        get_console():execute("load ~#I#: cs:wnd():GetWidth()="..tostring(cs:wnd():GetWidth()))
        get_console():execute("load ~#I#: cs:wnd():GetHeight()="..tostring(cs:wnd():GetHeight()))
        get_console():execute("load ~#I#: cs:wnd():GetTextX()="..tostring(cs:wnd():GetTextX()))
        get_console():execute("load ~#I#: cs:wnd():GetTextY()="..tostring(cs:wnd():GetTextY()))

всегда возвращает:

! Cannot find saved game ~#i#: guihidedmanually=false
! Cannot find saved game ~#i#: cs:wnd():isenabled()=true
! Cannot find saved game ~#i#: cs:wnd():isshown()=true
! Cannot find saved game ~#i#: cs:wnd():getwidth()=98
! Cannot find saved game ~#i#: cs:wnd():getheight()=19
! Cannot find saved game ~#i#: cs:wnd():gettextx()=22
! Cannot find saved game ~#i#: cs:wnd():gettexty()=1

Изменено пользователем sapsan
Ссылка на комментарий

sapsan,

странно, у меня эта же проверка стабильно выдаёт nil. Но если есть статик, то можно попытаться проверить видимость или положение окна, связанного с ним.

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Привет всем. Люди добрые, подскажите мне пожайлуста как прикрутить аномалию(например - электра) к конкретному объекту(например - бочка с бензином)? :russian_ru:


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Присоединиться к обсуждению

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

Гость
К сожалению, ваш пост содержит слова, запрещенные в нашем сообществе. Пожалуйста, измените ваш текст так, чтобы в нем не оставалось слов, указанных ниже. Помните, что публикация вами даже видоизмененного запрещенного слова может нарушать законодательство РФ и Правила форума.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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

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

AMK-Team.ru

×
×
  • Создать...