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

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

@NMD, Длинноствольное оружие тоже правили, чтоб в пистолетный слот вставлять?

Самое простое: убрать из папки gamedata файлы

gamedata\config\ui\inventory_new_16.xml

gamedata\config\inventory_sect.ltx

и, если правили оружие, вертать взад slot = 2

Да, перед этим войти в игру и очистить пистолетный слот и пояс с артефактами, сохраниться

Изменено пользователем Murarius
  • Полезно 1
 

10.png

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

@NMD, В дополнение Eugen81

 

Убрать файлы:
расширенный пистолетный слот:
папка config/ui
inventory_new.xml
inventory_new_16.xml
папка scripts
hidden_slots.script
папка textures/ui
amk_ui_base_texture.dds
Это файлы из правки от alen_fantom под редакцией karavan150

 

  • Полезно 2

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

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

 

Intel Core i7-4702MQ 2,2-3,2 ГГц , RAM 16 GB (2x8 GB) , SSD 120 GB OCZ Vertex 3 , HDD 2х1 ТB , NVIDIA GeForce GTX 760M (2 GB GDDR5) , Intel HD 4600 , Windows 8.1

 

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

karavan150, еще раз: комментировать надо не функцию, а то, что у нее внутри. Иначе у тебя так и будет регулярно случаться "P.S. Проблемка. При сдаче квеста на ремящики и снятию ранга Монолитовца был вылет."

 

Это надо просто запомнить: function bla-bla-bla() end

Ну или function bla-bla-bla() return true end/function bla-bla-bla() return false end - для диалогов.

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

дефолтной атаке сосыча...

Придется ручками, ручками, а синтаксис почти не знаю, поэтому самому найти сложно.

Просто вырезаешь всё это:

 

 

 --/#+# 'засос кровососа боксёра' --------------------------------------------------
    if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 then
      local oTarget = self.object:get_enemy()
      if oTarget and IsStalker(oTarget) and self.object:see(oTarget) then
        --/ если у кровососа есть враг/цель и кровосос его видит то ...
        local iDist = self.object:position():distance_to(oTarget:position())
        if iDist <= 2.5 then --/ дистанция для анимации 'засоса'
          local iTime = time_global()
          --/ таймер для анимации и хита ...
          if (self.timer_anim or 0) < iTime then
            self.timer_anim = iTime + 2000 --/ таймер анимации ~ 2 сек
            if self.object:animation_count() > 0 then
              self.object:clear_animations()
            end
            self.object:add_animation("wounded_2_out") --/ варианты: "vampire_0" | "idle"
            --/ озвучка 'засоса'
            --local oSnd = sound_object("material\\dead-body\\collide\\hithard06hl")
            --oSnd:play_no_feedback(oTarget, sound_object.s2d, 0, vector(), 5.0)
          end
          --/ хит жертве (притягиваем)
          if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 2000 >= iTime) then
            self.timer_hit = iTime + 800 --/ таймер хита ~ 0.5 сек
            local vDir = self.object:direction() --/ вектор кровососа
            local vDirHit = vector_rotate_y(vDir,math.random(-180,180))
            local h = hit()
            h.draftsman = self.object
            h.direction = vDirHit --/ направление хита
            h:bone("bip01_spine") --/ для учета 'брони'
            h.power     = 0.60
            --level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")
            h.impulse   = 60/iDist --/ чем ближе - тем сильнее 'засос'
            h.type      = hit.wound --hit.strike
            oTarget:hit(h) --/ наносим хит жертве
            --/ разворот жертвы на кровососа.
             if oTarget:id() == db.actor:id() and math.random()<level.get_game_difficulty()/20 then --/ жертва == актор? (а нужно?)
              oTarget:set_actor_direction(vDirHit:getH())
            end
          end
        end
      end
    end
    --/<-----------------------------------------------------------------------

 

 

можно и с цифрами "поиграть" в некоторых условиях...

Кровосос Сосыч

Изменено пользователем alen_fantom
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@hypercatt, Худы. Различные. Посмотри может что нибудь подберешь,тут https://yadi.sk/d/ZyBScl5BbvLZU

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

ОП-2,2; железо:матьMAXIMUS VI FORMULA:,DDR3(2000Mhz)-32Гб,Intel Core i7-4770K 3.5GHz, GeForce RTX 4070 , ssd-248gb,win11prof.x64

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

Помню, где-то была такая правка, но я ее что-то не нашел.. Да и в любом случае, с конвейерным выпуском патчей, лучше править самому. В общем, bind_fot.script:

-- монстры
		if IAmAMonster[clsid] and obj:alive() and db.actor:see(obj) and not protected_items.is_monster_friend(section) then
			-- сначала смотрим тихую охоту
			if  (has_alife_info("silent_hunt_start") and not has_alife_info("silent_hunt_done")) and
				(silent_hunt_monsters[clsid] and not has_alife_info("monster_stealth_"..silent_hunt_monsters[clsid])) and
				self:obj_in_shot(obj:bone_position("bip01_head"), 0, 2, 3.5, true, nil, true)
			then
				-- удачный снимок и такого еще не было

Правильно ли я понимаю, что в  группе чисел <0, 2, 3.5> 2 - пресловутая дистанция до головы моба? Достаточно ли будет изменить ТОЛЬКО ее, чтобы тихая охота работала, скажем, с 10 метров? Ибо дальше 

local act_pos = device().cam_pos
	local dist = act_pos:distance_to(trg_pos)
	if (dist >= min_dist) and (dist <= max_dist) then
		-- дистанция подходящая
		local trg_dir = vector():sub(trg_pos,act_pos):normalize()
		local angle_cos = device().cam_dir:dotproduct(trg_dir)

		-- эффективный угол в пересчете на дистанцию в радианах
		local disp = math.sin(math.rad(max_angle))*max_dist -- дисперсия
		if disp > dist/2 then -- но не больше 30 градусов
			disp = dist/2
		end

Но max_dist в тексте файла нигде не объявлена..

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

я здесь лишний

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

Правильно ли я понимаю, что в  группе чисел <0, 2, 3.5> 2 - пресловутая дистанция до головы моба?

Да, от 0 до 2-х метров

0 - min_dist - минимальная дистанция до объекта, чтобы фото считалось удачным

2 - max_dist - максимальная дистанция до объекта, чтобы фото считалось удачным

3.5 - max_angle - максимальный угол отклонения позиции цели от направления взгляда на max_dist, в градусах, чтобы фото считалось удачным

Но max_dist в тексте файла нигде не объявлена..

Объявлена сдесь

....
self:obj_in_shot(obj:bone_position("bip01_head"), 0, 2, 3.5, true, nil, true)
.....
function foto_binder:obj_in_shot(trg_pos, min_dist, max_dist, max_angle, use_scope, trg_loc, actor_danger)
Где:

trg_pos = (obj:bone_position("bip01_head")

min_dist = 0

max_dist = 2

max_angle = 3.5

use_scope = true - использовать ли прицел при съемке? - да.

trg_loc = nil - если задано - только на данной локации.

actor_danger = true - Если true, то фото засчитывается только если ГГ не видят враги

  • Полезно 3
 

10.png

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

 

 

одно место спавна тайника Коллектора

ОП-2. 1 место спавна тайников Колл-ра. Некоторые переложены. 2.05-7

  • Спасибо 1
  • Нравится 2

Не делайте мне больно, господа...

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

Традиционно это делается в netspawn(),

там где --[[local bad_object_names и т.д.

 

Тогда ничего не пищит.

 

Можно удаление даже готовое оставить, и по аналогии слепить создание.

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

Привет, вот задание по квесту "Дом духов" на АС, я бы хотел его бы досрочно выполнить....Я пробовал закоментрировать появление полтеров, результата ноль, видать чего то не доделал... Подскажите люди добрые, что надо сделать.

-- ДОМ ДУХОВ

function ohota_polter_bitva()

--[[ alife():create("ohota_polter_flame",vector():set(-307.23669433594,-22.18186378479,208.25445556641),37070,1788)

alife():create("ohota_polter_tele",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795) ]]

amk.start_timer("battle", 0, {"l07_military", 32, 1})

db.actor:give_info_portion("ohota_polter_spawn")

end

function ohota_polter_battle1()

alife():create("ohota_polter1",vector():set(-307.23669433594,-22.18186378479,208.25445556641),37070,1788)

--[[ alife():create("ohota_polter_tele",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795) ]]

end

function ohota_polter_battle2()

--[[ alife():create("ohota_polter_flame",vector():set(-307.23669433594,-22.18186378479,208.25445556641),37070,1788)

alife():create("ohota_polter2",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795) ]]

end

function ohota_polter_battle3()

--[[ alife():create("ohota_polter_flame",vector():set(-307.23669433594,-22.18186378479,208.25445556641),37070,1788)

alife():create("ohota_polter_tele",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795)

alife():create("ohota_polter_flame",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795) ]]

end

function ohota_polter_battle4()

--[[ alife():create("ohota_polter_tele",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795)

alife():create("ohota_polter_tele",vector():set(-307.50021362305,-22.188982009888,215.30061340332),37078,1795)

alife():create("ohota_polter3",vector():set(-302.36279296875,-22.183567047119,217.58489990234),41063,1788) ]]

end

function souls_house_have(task, info)

      if level.get_time_hours() >= 0 and level.get_time_hours() < 5 and 

db.actor:has_info("ohota_polter1_dead") --[[ and 

db.actor:has_info("ohota_polter2_dead") and 

db.actor:has_info("ohota_polter3_dead") ]] then

db.actor:give_info_portion("souls_house_have")

return true

     end

return false

end

function souls_house_done()

sak.create_items_actor("wpn_g3sg1",1)

sak.create_items_actor("ammo_7.62x51_fmj",2)

sak.create_items_actor("ammo_kumul_82",2)

sak.create_items_actor("ammo_357_ap_mag",2)

sak.create_items_actor("af_prisoska",1)

table_treasure_l.treasure()

end

 

 

Спавнится 1 полтер, вали его между 0 и 5-ю ночи.

Изменено пользователем Eugen81
  • Спасибо 1
  • Нравится 2
 

10.png

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

for i=1,65534 do
  local kobj = alife():object(i)
  if kobj then
	local sect = kobj:section_name()
	local txt = ""
		if string.find(sect,"val_taynik") then
			txt = "Тайник Коллекционера №"..n
			level.map_add_object_spot_ser(kobj.id, "treasure", txt)
		end
  end
end 

Как я понимаю,это код для установки метки на тайник. Что означает эта цифирь   "1,65534"?

 

Все возможные id, от 1 до 65534, кроме самого ГГ, у которого id 0. dc

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

за спиной всегда кто-то есть.

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

если проделать эти манипуляции в игре, как ты описал, я правильно понимаю - Ахтунги исчезнут.

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

С поправкой на:

Традиционно это делается в netspawn(),там где --[[local bad_object_names...Можно удаление даже готовое оставить, и по аналогии слепить создание.

на тех же вертухах:

 

- сделать сейв перед Агро.

- в bind_stalker.script в код по удалению глючных объектов вписываем имена(name) и сразу рас комментировать само условие, т.е.:

local bad_object_names = {"agro_final_vert1", "agro_final_vert2", "agr_nii_heli", "agr_helicopter1", "agr_helicopter2", "agr_helicopter3", "agr_helicopter4" }  
local i, se_name, se_obj

for i, se_name in ipairs(bad_object_names) do
se_obj = alife():object(se_name)
   if se_obj then
    news_manager.send_tip(db.actor,"Удалили глючный объект:"..se_name,nil,nil,1000)
    alife():release(se_obj, true)  
  end
end
где сработает удаление перечисленных объектов при загр. сейва до Агро.

- в вашем скрипте:

function perespawn()
local zaglushka = false
if level.name() == "l03_agroprom" then -- условие на каком уровне сработает, в данном случае Агропром, можно и без него, тогда спавн сработает при загр. сейва до Агро. и нужно убрать последнее end...
alife():create(4421) -- сам спавн объектов
alife():create(4422)
alife():create(4662)
alife():create(4727)
alife():create(4731)
alife():create(4733)
alife():create(4732)
zaglushka = true
end
end
end
- по аналогии с пред. постом: добавляем в bind_stalker.script, в function actor_binder:update(delta)(можно сразу под ним)

название вашего скрипта.perespawn()
Загружаете послед. сейв - переход на Агро. - делаете сейв( только не сразу, 2 мин достаточно) - ахтунгов нет..?

Выходим из игры и проделываем манипуляции в bind_stalker.script по каментированию запущенных условий...

 

 

Изменено пользователем alen_fantom
  • Нравится 1
  • Полезно 1
Ссылка на комментарий

for i, v in ipairs( {"agro_final_vert1", "agro_final_vert2", "agr_nii_heli", "agr_helicopter1", "agr_helicopter2", "agr_helicopter3", "agr_helicopter4" } ) do

v = alife():object( v )

if v then alife():release( v, true ) end

end

for i, v in ipairs( { 4421, 4422, 4662, 4727, 4731, 4733, 4732 } ) do alife():create( v ) end

 

Можно, в принципе, еще сами списки подсократить - не все вертухи одинаково полезны. ;)

 

А совсем правильно - удаление всем списком на всех локах повесить на

if self.bCheckStart then ... self.bCheckStart = nil end, а спавн каждого конкретного верта - на условие. Но это опять работы много, и результат - до каждого следующего фикса/патча.

Изменено пользователем Dennis_Chikin
  • Нравится 2
Ссылка на комментарий

Как будто, после сдачи кейса С Агро.(по ориг. сюжету), эти ("agr_nii_heli", "agr_helicopter1", "agr_helicopter2", "agr_helicopter3", "agr_helicopter4") не нужны..?

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

И до - тоже не нужны. Кроме одного единственного момента.

Аналогично - та же деревня.

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

Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   1 пользователь

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