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

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

 

 

возможно ты про can_select_item_rules, это в движке on_after_take если верно помню

Получается, подбор оружия неписями в ТЧ - это движковое? Я думал, что какая-то схема логики...

Такой момент: сценка с Юриком при входе на Свалку, с последующей помощью Бесу. У меня Юрик топает от места сценки к месту, где стоит Бес. Если возле Беса кинуть ствол, к примеру МР-5, то Юрик его подбирает. Но, в дальнейшей перестрелке с бандюками, его не использует. Не сложно было выяснить причину - ствол-то он подбирает, а патронов к нему у него нет. Для теста, сделал спавн ему нужных патронов, после их спавна Юрик сразу переключается на МР-5 и в последующей перестрелке исправно его использует.

Тут я подумал - на кой ПЫСы сделали подбор стволов, если их непись не будет использовать? Логично было сделать, при подборе ствола, сразу спавн подходящих боеприпасов. Думал, что этим схема рулит какая-то, потому и хотел ее найти, чтоб попробовать доделать спавн патронов. Но раз это движковое - то видно пока не судьба...

 

Р.S. Попытался сделать спавн патронов через добавление в motivator_binder кэллбэка on_item_take, вроде спавн получился, но сразу же наткнулся на грабли - вылеты при интенсивной боевке.

 

 

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

@UnLoaded, я это в движке зарубил, а для оригинальной работы просто в коллбеке на перезарядку скармливаю неписю те патроны, что у него в стволе. Но вообще в оригинальном виде у непися должен быть бесконечный боезапас, так как, в противном случае, в силу кривизны неписей они весь свой боезапас моментально расстреливают и пускаются в бега.

 

А так да, движковое, из универсального в скриптах там помоему два комбата (точнее три, но один не используется), да хели хантер, ну еще раненый, но это уже гибрид, и вроде все, но может чего еще есть, разумеется тут я не завожу речь о стейтах и вообще передвижении, там конечно с головой всяких прекондишнов.

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

UnLoaded, у меня доспаун патронов сделан в amk_offline_alife в process_trade, при net_spawn актора, пока все еще в оффлайне. Что бы не ходить по граблям онлайновых объектов. Там как раз каждый непись продал все лишнее оружие и у него осталось то, которое он будет использовать. Вот его можно и проверить, сколько патронов имеется, чем заряжено и т.п. и доспаунить нужное, подремонтировать поломанное.

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

Товарищи, прям очень нужна ваша помощь! Такой вопрос: как можно по ходу игры поменять имя ГГ и его иконку? Мне бы пример готовый, я ни бум-бум в таких ситуациях...

Ранее был известен под ником BoBaH_671.

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

@BoBaH_671, выведи две write функции на имя и на иконку, только имя нужно будет еще в серверную часть записать.

 

Готовый пример, ну, например, у меня бы все выглядело как-то так:

actor:set_character_icon("ui_npc_monster_kontroler")
actor:set_character_name("Контролер")
Если я это вызываю в режиме диалога или вроде того, то еще вызвать функцию принудительного апдейта текущего окна, ее можно написать на все движковые окошки + расширить через скриптовую оболочку еще и на скриптовые окна, если нужно.
  • Полезно 1
Ссылка на комментарий

 

 

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

 

 

Мне бы пример готовый, я ни бум-бум в таких ситуациях...

В личке, вроде, ты сказал, что это нереально много файлов, так чего же ты хочешь, чтобы я тут сделал? :D

Это очень сложно для меня будет. Быть может, @Nazgool сможет помочь? :)

Ранее был известен под ником BoBaH_671.

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

@UnLoaded, Ну есть в конфигах такие weapon_class'ы как  : shotgun, assault_rifle, sniper_rifle, heavy_weapon. Ну и думаю можно это как-то скриптом проверить?

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

Доброй ночи: Встретился хороший мод "Содержимое рюкзака ГГ на худе" (копирайты не удаляю, просто хочу добавить несколько дополнительных строк, чтобы выводило)

 

Но если бы его модернизировать (цены ему не будет):

Не удалось вывести через мод на экран данные следующий вещей:

ammo_vog-25p
ammo_vog-25
ammo_og-7b

 

Ошибка a nil value
Возможно ли её обойти? (как порылось, ошибка из-за самого языка программирования Lua, но раз выводит на экран (как-то GSC обошла ошибку (вариант через кавычки или скобки не помог)) когда оружие с подствольными гранатами у тебя в руках и активирован режим стрельбы гранатами)
Заранее спасибо за ответ.

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

TIGER_VLAD, в моде АМК-2 был такой код

function amkGetWeaponClass(oWeapon)
    local iID = get_clsid(oWeapon)
    if iID == clsid.wpn_vintorez_s or iID == clsid.wpn_svd_s or iID == clsid.wpn_svu_s then
        return 1    -- снайперские винтовки
    elseif iID == clsid.wpn_ak74_s or iID == clsid.wpn_lr300_s or iID == clsid.wpn_groza_s or iID == clsid.wpn_val_s then
        return 2    -- штурмовые винтовки
    elseif iID == clsid.wpn_hpsa_s or iID == clsid.wpn_walther_s or iID == clsid.wpn_usp45_s or iID == clsid.wpn_pm_s then
        return 3    -- пистолеты
    elseif iID == clsid.wpn_bm16_s or iID == clsid.wpn_shotgun_s then
        return 4    -- дробовики, ружья
    elseif iID == clsid.wpn_rpg7_s or iID == clsid.wpn_grenade_f1 or iID == clsid.wpn_grenade_rgd5 or iID == clsid.wpn_rg6_s then
        return 5    -- гранаты, гранатометы, ракеты
    elseif iID == clsid.wpn_knife_s then
        return 6    -- нож
    else
        return 0    -- не определено
    end
end
  • Спасибо 1
  • Полезно 1

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

Возможно ли прописать дополнительный вид состояния ранения и лечения (чтобы на него всех квестовых NPC перевести)?

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

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

 

 

как можно по ходу игры поменять имя ГГ и его иконку

Поднимал уже вопрос - в движок лезть...
Скриптами проблему не решим...

Не соответствует правилам.

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

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

Ссылка на комментарий
@TIGER_VLAD, в ЧН/ЗП для этого экспортирован отдельный gui-класс, в ТЧ - можно с помощью CUIStatic сделать. Изменено пользователем naxac
  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

ЗП. Помогите понять как работать с нет пакетами. Допустим я хочу перепаковать нет пакет аномалии

Как я понял, чтобы правильно считать а затем записать обратно, мне требуется знать структуру.

Вот как выглядит первая попавшаяся аномалия в распакованном с помощью ACDC олл спавне:

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[4645]

; cse_abstract properties
section_name = zone_mine_gravitational_weak
name = esc_zone_mine_gravitational_weak
position = -238.472381591797, -14.1582250595093, -18.8305053710938
direction = -0.00182200002018362, -0.000296000012895092, -0.160981997847557
id = 65535
version = 128
script_version = 12
spawn_id = 1158

; cse_alife_object properties
game_vertex_id = 386
distance = 44.099998
level_vertex_id = 19709
object_flags = 0xffffff3e

; cse_shape properties
shapes = 1
shape_0:type = sphere
shape_0:offset = 0,0,0
shape_0:radius = 3

; cse_alife_space_restrictor properties
restrictor_type = 0

; cse_alife_custom_zone properties

; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 32
artefact_position_offset = 0x24c0

; se_zone_anom properties

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

 

 

Нашёл такой вот код для перепаковки аномалии:

 

 

	local p_obj = alife():create(section,vector():set(pos.x+10,pos.y,pos.z+10),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)
	 
	if time1 ~= nil then
		packet:w_s32(time1)
	else
		packet:w_s32(on_off_mode_enabled_time)
	end
	 
	if time2 ~= nil then
		packet:w_s32(time2)
	else		
		packet:w_s32(on_off_mode_disabled_time)
	end
	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()) 

 

 

Да, он вроде как работает, но то что считывает и перезаписывает скрипт не соответствует строкам аномалии в распакованном олл спавне,  где же тогда конструкцию узнавать и как понимать каким именно методом читать нужно?:/

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

@FonSwong, в распакованном спавне не все параметры написаны, а только те, которые отличаются от дефолтных. Для того, чтобы узнать структуру пакета, открывай acdc.pl (желательно тот, который чисто для ЗП предназначен) и изучай классы - начиная с того, который тебе нужен - и дальше по наследованию.

Или проще - есть много готовых парсеров (от Artos, xSrteam), используй их (есть в теме "Сборочный цех").

  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

 

 

TIGER_VLAD, в ЧН/ЗП для этого экспортирован отдельный gui-класс, в ТЧ - можно с помощью CUIStatic сделать.

В ТЧ SetWndPos тоже присутствует, и все работает.

 

 

 

ЗП. Помогите понять как работать с нет пакетами.

По уму с нет-пакетами лучше совсем не работать. Советую направить силы на понимание как работать БЕЗ нет-пакетов, совсем без них не выйдет, но минимизировать и локализировать их использование очень даже удастся.

  • Спасибо 1
Ссылка на комментарий

@Карлан, при чем тут SetWndPos? Я про экспортированный в ЗП и ЧН класс прогресс-бара, которого нет в ТЧ.

 

upd: пардон, в ТЧ он тоже есть, но недоэкспортирован нормально.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac, еще раз, я написал, что прогресс-бар в ТЧ работает, конкретно вопрошающему необходим SetWndPos, о котором я и упомянул.

  • Спасибо 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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