Перейти к содержанию

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

 
 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Mawrak , там движково. Это не расстояние, а интервал от и до в поле зрения. Точно не помню как. Пси аура заканчивается и в следующем радиусе ближе к монстру.

Изменено пользователем andreyholkin
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

andreyholkin посмотрел в движке, судя по всему берется параметр "tube_condition_min_distance" в конфиге. Спасибо за наводку!

  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Neptun Как должна выглядеть схема companion@1? В документации по SDK про неё ни слова, а один хороший сайт со всеми логиками закрыли

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala Есть у меня .pdf файл, в котором похоже всё про логику с того сайта находится, но там не вижу ни слова про xr_companion. https://drive.google.com/file/d/1I6U8WMAtGpRGqRtlflu0I1ciqauPXrEz/view?usp=sharing


Мод в разработке - X-7: Эпицентр

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala xr_companion не имеет встроенных параметров! И соответственно не может настраиваться из логики - это тот минус о котором я говорил.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Prostomod denis2000 Это печально

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala А чего специфического вам может понадобиться? Эта логика заставляет НПС идти, бежать или рашить в строну ГГ в стандартных состояниях движения.

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 Мне и нужно, чтобы нпс в отряде бежали к игроку и стреляли. Если вы в call of duty играли, то должны понять, что я имею в виду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala Ну так они и будут это даелать. Пока не видят врага, бегут с оружием, подбежав на дистанцию боя и заметив противника, начнут стрелять и стрейфиться, поскольку перейдут в состояние боя.

Изменено пользователем denis2000
  • Жму руку 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

denis2000 Так а в логику сквада её как прописать? Я это не понимаю. Просто [companion@1], или к этой секции ещё какие-то приписки есть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala Я же говорю: нет никаких доп параметров.

База такая:

[logic@***_1]
suitable = {=target_squad_name(***)} true
prior = 200
active = companion@1

[companion@1]

[logic@***_2]
suitable = {=target_squad_name(***)} true
prior = 200
active = companion@2

[companion@2]

.....

 

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Очень тупой вопрос хочу задать, но нигде не нашёл рабочего решения. 

Каким способом можно заспавнить аномалию (мину) через Спейс рестриктор. Понятно, что нужно внести функцию в xr_effects, но вопрос касается самой функции, потому что все, что мне удалось найти, либо просто не работает, либо вызывает вылеты. Enable функция тоже не работает корректно конкретно для мин. =spawn_object, понятное дело, также не работает. Отдельно партиклы спавнить не вариант.

Может быть есть знающие люди, а то я второй день голову ломаю.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

нн здесь Ищите спавн аномалий скриптом.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

@нн здесь, такое не прокатит?

function spawn_minefield()
	local obj = alife():create("zone_mine_field", vector():set(105.76, 12.17, -45.00), db.actor:level_vertex_id() , db.actor:game_vertex_id() )
end

Только я не помню, как в ЗП секция мины называлась.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
36 минут назад, Hrust сказал:

@нн здесь, такое не прокатит?


function spawn_minefield()
	local obj = alife():create("zone_mine_field", vector():set(105.76, 12.17, -45.00), db.actor:level_vertex_id() , db.actor:game_vertex_id() )
end

Только я не помню, как в ЗП секция мины называлась.

 

[error]Expression : assertion failed

[error]Function : CCustomZone::CalcDistanceTo

[error]File : F:\ 2.5.40\SourcesAXR\xrGame\CustomZone.cpp

[error]Line : 1561

[error]Description : nearest_s

 

Впринципе так же как и прошлые способы выдает. Никогда с таким ранее не сталкивался

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

@нн здесь, ладно, это ассерт по неназначенному шейпу, можно сделать аномалию через сдк со стейтом disabled и в нужный момент включить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Как сделать рестриктор, чтобы он мгновенно убивал ГГ при входе в него?


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Hrust нн здесь Просто спавна не достаточно. Нужно через правку нетпакета прописать недостающие параметры.

Спойлер

function create_anomalies(section,rad_anom,x,y,z,lv,gv,mode)
     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()
  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())
  return p_obj
end

 

 

Изменено пользователем denis2000
  • Жму руку 2
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

@Ayden, в файле логики рестриктора:

[logic]
active = sr_idle@kill_actor

[sr_idle@kill_actor]
on_actor_inside = sr_idle@nil %=kill_actor%

[sr_idle@nil]

В xr_effects:

function kill_actor(actor, npc)
	db.actor:kill(db.actor)
end

 

  • Жму руку 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Доброго вечера! Не знаю в правильный ли топик обратился, вопрос больше по anomaly, но я думаю что вопрос имеет много общего с COP.
Вообщем есть функция
 

Спойлер

 

function how_much_repair( item_name, item_condition )    
    local cost = ini_sys:r_u32(item_name, "cost")
    local class = ini_sys:r_string_ex(item_name, "class")
    local cof = game_difficulties.get_eco_factor("repair") or 3.67

    --return math.floor( cost * math.pow(1 - item_condition , 3.63) )
    return math.floor( cost * (1 - item_condition) * 3 ) -- CoP formula
end

 

Нужно что бы скрипт расчитал цену определенным образом, но никак не могу понять как это сделать, в скриптах вообще не ало. Нужно что бы цена расчитавалась, что бы ниже определенного процента состояния предмета, цена увеличивалась например в 3 раза, а больше определенного состояния процента оставалась х1 скажем.
 Ну например у брони состояние больше 80% - цена х1, меньше 80% - цена х3.
Или другой вариант, что ниже определенного процента невозможно будет отремонтировать.


Прошу помощи, не вдупляю как это сделать вообще.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Возникла такая проблема, что начиная с этих сквадов игра вылетает:

Спойлер

;ТРЕТЬЯ ВОЛНА

[dolg_third_wave_1_squad]:online_offline_group
faction = dolg
relationship = enemy
npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4
target_smart = final_fight
spawn_point = final_fight_1_spawn_point

[dolg_third_wave_2_squad]:online_offline_group
faction = dolg
relationship = enemy
npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4
target_smart = final_fight
spawn_point = final_fight_3_spawn_point

[dolg_third_wave_3_squad]:online_offline_group
faction = dolg
relationship = enemy
npc = sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4
target_smart = final_fight
spawn_point = final_fight_2_spawn_point

[dolg_third_wave_4_squad]:online_offline_group
faction = dolg
relationship = enemy
npc = sim_default_duty_3, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4, sim_default_duty_3, sim_default_duty_4
target_smart = final_fight
spawn_point = final_fight_1_spawn_point

[dolg_third_wave_5_squad]:online_offline_group
faction = dolg
relationship = enemy
npc = sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_4
target_smart = final_fight
spawn_point = final_fight_3_spawn_point

Спойлер

! [LUA] SCRIPT RUNTIME ERROR
[LUA] Error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value)

FATAL ERROR

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : C:\Users\Dmitry\ixray-1.6-stcop\src\xrScripts\script_storage.cpp
[error]Line          : 533
[error]Description   : see call_stack for details!

stack trace:

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : C:\Users\Dmitry\ixray-1.6-stcop\src\xrScripts\script_engine.cpp
[error]Line          : 61
[error]Description   : <no expression>
[error]Arguments     : LUA error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value)

stack trace:
! [LUA] SCRIPT RUNTIME ERROR
[LUA] Error: [string "smart_terrain"]:586: attempt to index local 'job_data' (a nil value)

Сначала думал, что это из-за того, что у меня в строчке npc_in_squad было значение 6, 8. Я думал, что может движок не поддерживает такое, потому что всегда видел значение 3, 5. Но нет, вылет не изчез. Ещё у меня до этих сквадов спавнится 7 сквадов по 5-6 нпс, т.е. суммарно выходит 35-40 нпс, и возможно есть какое-то ограничение, в которое упирется движок, но к моменту спавна третьей волны те нпс уже были мертвы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
12 минут назад, ishps сказал:

Ну например у брони состояние больше 80% - цена х1, меньше 80% - цена х3.

function how_much_repair( item_name, item_condition )    
	local cost = ini_sys:r_u32(item_name, "cost")
	local class = ini_sys:r_string_ex(item_name, "class")
	local cof = game_difficulties.get_eco_factor("repair") or 3.67
	local final_cost = cost
	if item_condition <= 0.8 then
		final_cost = cost * 3
    end
	--return math.floor( cost * math.pow(1 - item_condition , 3.63) )
	return math.floor(final_cost * (1 - item_condition) * 3) -- CoP formula
end

От балды накинул такое, можно и алгебраическую прогрессию сделать, но это матан подучить стоит.

  • Сталкерский лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Hrust Огромное спасибо! Очень выручил!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Skala проблема в логике нпс

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

    Ни одного зарегистрированного пользователя не просматривает данную страницу