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

ian98

Сталкеры
  • Публикаций

    834
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные ian98


  1.   

    Только что, ian98 сказал:
      скрипт (Показать контент)

     

    
    
    function remove_random_item()
      local important_objects = {  -- Здесь предметы, которые нельзя удалять
        [ "bolt"       ] = true,
        [ "device_pda" ] = true,
      }
      local tbl = {}
      local cnt = 0
      db.actor:iterate_inventory(
        function( dummy, obj )
          if obj and not important_objects[ obj:section() ] then
            cnt = cnt + 1
            table.insert( tbl, obj:id() )
          end
        end
      )
      if cnt == 0 then return end
      local rnd  = tbl[ math.random( table.getn( tbl ) ) ]
      local sobj = alife():object( rnd )
      if sobj then
        news_manager.relocate_item( db.actor, "out", sobj:section_name() )
        alife():release( sobj, true )
      end
    end

     

    подскажите, как удалить сразу 10 предметов этим скриптом? Прощупать не могу, а по знаниям 0. Умею только таблицы заполнять, если они есть)

     

    Подскажите 


  2. Спойлер

     

    
    function remove_random_item()
      local important_objects = {  -- Здесь предметы, которые нельзя удалять
        [ "bolt"       ] = true,
        [ "device_pda" ] = true,
      }
      local tbl = {}
      local cnt = 0
      db.actor:iterate_inventory(
        function( dummy, obj )
          if obj and not important_objects[ obj:section() ] then
            cnt = cnt + 1
            table.insert( tbl, obj:id() )
          end
        end
      )
      if cnt == 0 then return end
      local rnd  = tbl[ math.random( table.getn( tbl ) ) ]
      local sobj = alife():object( rnd )
      if sobj then
        news_manager.relocate_item( db.actor, "out", sobj:section_name() )
        alife():release( sobj, true )
      end
    end

     

    подскажите, как удалить сразу 10 предметов этим скриптом? Прощупать не могу, а по знаниям 0. Умею только таблицы заполнять, если они есть)


  3. билды какие-то не прикольные. В тех же билдах тч можно было бегать, прыгать, стрелять, пить водку и торговать, проходить миссии. Можно было миссии и не проходить. В общем, было весело.


  4. Mopa Хорошо, что я и не пробовал с 

    [spawner]

    cond = never

    А по аномалиям, то обязательно нужно менять строчку

    spawn_blowout_artefacts = on/off

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


  5. Mopa т.е, если я не хочу их спавнить, то мне выкрутить пропы на 0? Я уже замучался с этим спавном. Удалить из него ничего не получается - в 100% случаев вылет. Прятать под землю, блин, оно иногда вылазит в разных местах. Ужас. В зп почему-то не было таких проблем вообще. Удалил что-то из спавна и удалил. Здесь же... Хотя, вот прям сейчас мысль пришла, можно ли прописывать всему в спавне вот такое, как с машинами:

    [spawner]
    cond = never

    Может хоть так уберу эти горы лута по всей чзо?


  6. Alex Kireev Не понял, на какой карте? Аномалии рандомно все-таки рожают артефакты? И как этим управлять можно? 


    Дополнено 30 минуты спустя
    Спойлер
    
    [zone_mosquito_bald]
    GroupControlSection	= spawn_group_zone
    $spawn 			= "zones\mosquito bald"
    $prefetch 		= 16
    class			= ZS_MBALD
    hit_impulse_scale	= 0.3;0.5 ;0.1
    effective_radius	= 0.85 ;размер радиуса в процентах от оригинального, где действует зона
    actor_blowout_radius_percent	= 0.75
    
    ef_anomaly_type			= 1
    ef_weapon_type			= 13
    
    sound			= zone_mosquito_bald
    
    postprocess		= mosquito_bald
    
    
    BirthProbability	= 0.1
    hit_type			= strike
    
    ;----------- Anomaly settings -----------------------
    min_start_power		= 0.99
    max_start_power		= 1.00
    attenuation			= 1
    period				= 1
    min_artefact_count	= 0
    max_artefact_count	= 0
    
    idle_particles		= anomaly2\bold_idle
    blowout_particles	= anomaly2\gravity_blast_01
    
    hit_small_particles			= hit_fx\hit_metal_02
    hit_big_particles			= anomaly2\gravity_damage_02_blood2
    idle_small_particles		= anomaly2\gravity_damage_01_smoke
    idle_big_particles			= anomaly2\gravity_damage_02_smoke
    entrance_small_particles	= anomaly2\gravity_entrance_small
    entrance_big_particles		= anomaly2\gravity_entrance_big ;anomaly2\gravity_entrance_big
    
    idle_sound			= anomaly\gravi_rumble1; ambient\fx2		;постоянный звук
    blowout_sound		= anomaly\anomaly_gravy_blast1; anomaly_gravy_blast01	;во время выброса(удара) в центре аномалии	
    hit_sound			= anomaly\anomaly_gravy_hit1								;на персонаже, когда тот получает хит
    entrance_sound		= anomaly\anomaly_gravy_hit1								;при попадании объекта в аномалию
    
    
    awaking_time		= 50;100
    blowout_time		= 500	
    accamulate_time		= 1000 ;10;200
    
    blowout_light_time		= 200
    blowout_explosion_time	= 200
    blowout_particles_time	= 200
    blowout_sound_time  	= 100
    
    disable_time		= 5000		;время игнорирования неживого объекта в зоне (-1 если не нужно)
    disable_time_small	= 5000		;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
    disable_idle_time	= 100		;время отключения idle партиклов
    
    ignore_nonalive		= false
    ignore_small		= true
    ignore_artefacts	= true
    
    blowout_light		= on
    light_color		    = 0.5,0.4,0.3
    light_range		    = 30.0
    light_time 		    = 0.9;0.35
    light_height		= 1.5			;подъем источника света на высоту
    
    
    idle_light			= off
    
    visible_by_detector = on
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;рождение артефактов 
    
    artefacts		= af_medusa,0.7, af_cristall_flower, 0.25,af_night_star, 0.05
    
    ;;во время срабатывания в online
    spawn_blowout_artefacts = on
    
    artefact_spawn_probability = 0.09				;вероятность, что во время срабатывания аномалии будет рожден артефакт
    artefact_spawn_particles = anomaly2\pux_blast	;партиклы, которые отыграются на месте рождения артефакта (опционально)
    artefact_born_sound =  anomaly\pux_blast		;звук, который отыграются на месте рождения артефакта (опционально)
    
    throw_out_power = 50			;импульс с которым артефакт будет выброшен из зоны в произвольном направлении
    artefact_spawn_height = 3		;(м) высота на центром зоны где будет рожден артефакт
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; ветер
    blowout_wind		= on
    
    blowout_wind_time_start     = 0
    blowout_wind_time_peak      = 300
    blowout_wind_time_end		= 501; 899
    blowout_wind_power			= 0.5			;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak 
    
    
    
    [zone_mosquito_bald_weak]:zone_mosquito_bald
    $spawn 			= "zones\mosquito bald_weak"
    awaking_time		= 80;100
    blowout_time		= 500	
    
    hit_impulse_scale	= 0.1
    effective_radius	= 0.65 
    actor_blowout_radius_percent= 0.6
    
    artefacts		= af_medusa,0.8, af_cristall_flower, 0.2,af_night_star, 0.0
    BirthProbability	= 0.1
    spawn_blowout_artefacts = on
    
    ;----------- Anomaly settings -----------------------
    min_start_power		= 0.49
    max_start_power		= 0.5
    attenuation			= 1
    period				= 1
    min_artefact_count	= 0
    max_artefact_count	= 1
    artefact_spawn_idle	= 24  ;насколько часто спонить артефакты в офлайне, в часах
    artefact_spawn_rnd	= 50  ;вероятность заспавнить артефакт в процентах.
    
    accamulate_time		= 1000 ;10;200
    ignore_nonalive		= false
    ignore_small		= false
    ignore_artefacts	= true
    
    blowout_wind_power			= 0.2
    
    
    ; Не производящая артефактов слабая аномалия
    [zone_mosquito_bald_weak_noart]:zone_mosquito_bald_weak
    $spawn 			= "zones\mosquito bald_weak_noart"
    spawn_blowout_artefacts = off
    min_artefact_count	= 0
    max_artefact_count	= 0
    artefact_spawn_idle	= 24  ;насколько часто спонить артефакты в офлайне, в часах
    
    [zone_mosquito_bald_average]:zone_mosquito_bald
    $spawn 			= "zones\mosquito bald_average"
    awaking_time		= 50
    blowout_time		= 500	
    
    hit_impulse_scale	= 0.2
    effective_radius	= 0.75 
    actor_blowout_radius_percent= 0.8
    
    artefacts		= af_medusa,0.6, af_cristall_flower, 0.4,af_night_star, 0.0
    BirthProbability	= 0.1
    spawn_blowout_artefacts = on
    
    ;----------- Anomaly settings -----------------------
    min_start_power		= 1.19
    max_start_power		= 1.20
    attenuation			= 1
    period				= 1
    min_artefact_count	= 1
    max_artefact_count	= 1
    artefact_spawn_idle	= 24  ;насколько часто спонить артефакты в офлайне, в часах
    artefact_spawn_rnd	= 70  ;вероятность заспавнить артефакт в процентах.
    
    accamulate_time		= 1000 ;10;200
    ignore_nonalive		= false
    ignore_small		= false
    ignore_artefacts	= true
    
    blowout_wind_power			= 0.5
    
    
    [zone_mosquito_bald_strong]:zone_mosquito_bald
    $spawn 			= "zones\mosquito bald_strong"
    awaking_time		= 30
    blowout_time		= 500	
    accamulate_time		= 49
    
    hit_impulse_scale	= 0.2
    effective_radius	= 0.8 
    actor_blowout_radius_percent= 0.85
    
    artefacts		= af_medusa,0.2, af_cristall_flower, 0.6,af_night_star, 0.2
    BirthProbability	= 0.1
    spawn_blowout_artefacts = on
    
    ;----------- Anomaly settings -----------------------
    min_start_power		= 1.99
    max_start_power		= 2.00
    attenuation			= 1
    period				= 1
    min_artefact_count	= 1
    max_artefact_count	= 2
    artefact_spawn_idle	= 24  ;насколько часто спонить артефакты в офлайне, в часах
    artefact_spawn_rnd	= 90  ;вероятность заспавнить артефакт в процентах.
    
    accamulate_time		= 1000 ;10;200
    
    blowout_wind_power			= 1
    
    
    ; Не производящая артефактов слабая аномалия
    [zone_mosquito_bald_strong_noart]:zone_mosquito_bald_strong
    $spawn 			= "zones\mosquito_bald_strong_noart"
    spawn_blowout_artefacts = off
    min_artefact_count	= 0
    max_artefact_count	= 0
    artefact_spawn_idle	= 24  ;насколько часто спонить артефакты в офлайне, в часах
    
    
    
    
    
    
    
    
    
    [zone_sarcofag]
    GroupControlSection	= spawn_group_zone
    $spawn 			= "zones\sarcofag zone"
    $prefetch 		= 16
    class			= Z_MBALD
    hit_impulse_scale	= 0.3;0.5 ;0.1
    effective_radius	= 0.85 ;размер радиуса в процентах от оригинального, где действует зона
    actor_blowout_radius_percent	= 0.75
    
    ef_anomaly_type			= 1
    ef_weapon_type			= 13
    
    sound			= zone_mosquito_bald
    
    postprocess		= mosquito_bald
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;рождение артефактов 
    artefacts		= 
    BirthProbability	= 0.0
    spawn_blowout_artefacts = off
    
    hit_type			= strike
    
    ;----------- Anomaly settings -----------------------
    min_start_power		= 1.69
    max_start_power		= 1.70
    attenuation			= 1
    period				= 1
    min_artefact_count	= 0
    max_artefact_count	= 0
    
    idle_particles		= anomaly2\bold_idle_sarkofag
    blowout_particles	= anomaly2\bold_sarkofag_blast
    
    hit_small_particles			= hit_fx\hit_metal_02
    hit_big_particles			= anomaly2\gravity_damage_02_blood2
    idle_small_particles		= anomaly2\gravity_damage_01_smoke
    idle_big_particles			= anomaly2\gravity_damage_02_smoke
    entrance_small_particles	= anomaly2\gravity_entrance_small
    entrance_big_particles		= anomaly2\gravity_entrance_big ;anomaly2\gravity_entrance_big
    
    idle_sound			= anomaly\gravi_rumble1; ambient\fx2		;постоянный звук
    blowout_sound		= anomaly\anomaly_gravy_blast1; anomaly_gravy_blast01	;во время выброса(удара) в центре аномалии	
    hit_sound			= anomaly\anomaly_gravy_hit1								;на персонаже, когда тот получает хит
    entrance_sound		= anomaly\anomaly_gravy_hit1								;при попадании объекта в аномалию
    
    
    awaking_time		= 50;100
    blowout_time		= 500	
    accamulate_time		= 1000 ;10;200
    
    blowout_light_time		= 200
    blowout_explosion_time	= 200
    blowout_particles_time	= 200
    blowout_sound_time  	= 100
    
    disable_time		= 5000		;время игнорирования неживого объекта в зоне (-1 если не нужно)
    disable_time_small	= 5000		;время игнорирования маленького неживого объекта в зоне (-1 если не нужно)
    disable_idle_time	= 100		;время отключения idle партиклов
    
    ignore_nonalive		= false
    ignore_small		= true
    ignore_artefacts	= true
    
    blowout_light		= on
    light_color		    = 0.5,0.4,0.3
    light_range		    = 30.0
    light_time 		    = 0.9;0.35
    light_height		= 1.5			;подъем источника света на высоту
    
    
    idle_light			= off
    
    visible_by_detector = on
    
    
    
    artefact_spawn_probability = 0.00				;вероятность, что во время срабатывания аномалии будет рожден артефакт
    artefact_spawn_particles = anomaly2\pux_blast	;партиклы, которые отыграются на месте рождения артефакта (опционально)
    artefact_born_sound =  anomaly\pux_blast		;звук, который отыграются на месте рождения артефакта (опционально)
    
    throw_out_power = 50			;импульс с которым артефакт будет выброшен из зоны в произвольном направлении
    artefact_spawn_height = 3		;(м) высота на центром зоны где будет рожден артефакт
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;; ветер
    blowout_wind		= off
    
    blowout_wind_time_start     = 0
    blowout_wind_time_peak      = 300
    blowout_wind_time_end		= 501; 899
    blowout_wind_power			= 0.5			;сила поднимаего ветра (от 0 до 1), в момент blowout_wind_time_peak 

     

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


  7. Nick Proxy получается аномалии рожают)? Если да, то как управлять этим? Как я понял, вот аномальная зона, тут вроде радиация, а снизу что-то про количество артефактов, а что такое position_ofset могу только предположить по первому слову. Для меня это кракозябры. Я давно слышал, что арты из аномалий, но также давно я слышал, что это миф...

    ; cse_abstract properties
    section_name = zone_radioactive_average
    name = val_zone_radioactive_average_0001
    position = -58.2888565063477, -1.92057704925537, -131.032012939453
    direction = 0, 0, 0
    id = 65535
    version = 118
    script_version = 6
    spawn_id = 2536
    
    ; cse_alife_object properties
    game_vertex_id = 880
    distance = 23.799999
    level_vertex_id = 108660
    object_flags = 0xffffff3e
    
    ; cse_shape properties
    shapes = 1
    shape_0:type = sphere
    shape_0:offset = 0,0,0
    shape_0:radius = 4.41640090942383
    
    ; cse_alife_space_restrictor properties
    restrictor_type = 3
    
    ; cse_alife_custom_zone properties
    max_power = 0.0099999998
    
    ; cse_alife_anomalous_zone properties
    offline_interactive_radius = 30
    artefact_spawn_count = 32
    artefact_position_offset = 0x3c32

     


  8. Sergey_Belichenko блин, я легко бы отдал тебе свой галиль из кс гов за 50 баксов, только бы избавить себя от страданий с бесконечным ctrl+c ctrl+v в character_desc конфигах. В закрепе примерно то, что я планирую и очень медленно реализую. Я скинул его на случай, если ты принял мое предложение, вызвался помочь подарив мне этот чудоскрипт

    gameplay.rar


  9. Sergey_Belichenko так что, это, получается только character_desc клонировать профили? 

    И еще вопрос, вот ты мне подарил эту замечательную функцию на удаление случайного предмета, она работает отлично, но есть несколько вопросов. Первый, а можно ли сделать проверку к этой функции на общее кол-во предметов в инвентаре, например 10, чтобы только от 10 предметов в инвентаре гг ее включать? 

    Второй, я клянусь, изменив вот эту строчку

    Спойлер

    news_manager.relocate_item( db.actor, "out", sobj:section_name() )

    я какое-то время вместо потери случайного предмета ПОЛУЧАЛ случайный предмет. Причем это было абсолютно реально, я этим предметом мог пользоваться, и это очень странно, ибо строчка отвечает за уведомление по моим недалеким представлениям. Ключевое здесь это какое-то время. Сейчас я не получаю, а также теряю предмет, а мне просто пишет типо я получил его и все, т.е скрипт заработал как надо. Так вот, вопрос, можно ли выдавать подобной функцией предмет? А то я сейчас пользуюсь, эх, вот этой длиннющей функцией

    Спойлер
    
    function thank_you_old (npc, npz)
    	local reward_item = math.random(1,191)
    	if reward_item == 1 then
    		dialogs.relocate_item_section(npc, "wpn_abakan", "in")
    	end
    	if reward_item == 2 then
    		dialogs.relocate_item_section(npc, "wpn_ak74", "in")
    	end
    ...

     

     


  10. 23 минуты назад, Sergey_Belichenko сказал:

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

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

    character_desc_escape.xml


    Дополнено 0 минут спустя
    Только что, ian98 сказал:

    По аналогии с character_desc только одним файлом для всех нпс разом, или выборочно

     

    loot.xml


  11. 10 часов назад, Sergey_Belichenko сказал:

     

      Код (Показать контент)
    
    
    function remove_random_item()
      local important_objects = {  -- Здесь предметы, которые нельзя удалять
        [ "bolt"       ] = true,
        [ "device_pda" ] = true,
      }
      local tbl = {}
      db.actor:iterate_inventory(
        function( dummy, obj )
          if obj and not important_objects[ obj:section() ] then
            table.insert( tbl, obj:id() )
          end
        end
      )
      local rnd  = tbl[ math.random( table.getn( tbl ) ) ]
      local sobj = alife():object( rnd )
      if sobj then
        news_manager.relocate_item( db.actor, "out", sobj:section_name() )
        alife():release( sobj, true )
      end
    end

     

     

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

    Спойлер

    function if_actor_has_items(first_speaker, second_speaker)
        return first_speaker:object("wpn_abakan") ~= nil or
                 first_speaker:object("wpn_ak74") ~= nil or и т.д

    Однако, даже не обращая внимания на геморрой с наполнением предметов в эту проверку, игрок может скинуть свой важный хабар на землю и считерить отдав какой-нибудь мусор со 100% шансом, что расстраивает, наверное, и игрока(ему кажется, что это какая-то нелепая дыра), что расстраивает и меня(мне кажется, что это какая-то дыра). Поэтому, вопрос, можно ли устроить проверку общего количества предметов в инвентаре не зацикливаясь на конкретных предметах? Есть какая-то идеальная строчка? А то я нашел вот такую проверку, она не подходит... Ну, и я ее не очень понимаю, так что может ее можно как-то поправить и будет в самый раз

    Спойлер
    
    function название функции(first_speaker, second_speaker)
    	local item_sections = {
    		["medkit"] = 5, -- к примеру 5 аптечек
    		["bandage"] = 2} -- и два бинта
     
    	local function calc(temp, item)
    		local sect = item:section()
    		if item_sections[sect] and item_sections[sect]>0 then
    			if item_sections[sect]==1 then
    				item_sections[sect] = nil
    			else
    				item_sections[sect] = item_sections[sect] - 1
    			end
    		end
    	end
     
    	db.actor:iterate_inventory(calc, db.actor)
    	return next(item_sections)==nil
    end 

     

     


  12. Sergey_Belichenko заработало! Большое спасибо


    Дополнено 51 минуты спустя

    Sergey_Belichenko А можно ли перевооружить нпс с помощью скрипта? Без чехарды с character_desc.


  13. Sergey_Belichenko попробую. Болт может удалиться? Спрашиваю, ибо болт дается не через character_desc или all.spawn, и я не знаю как он дается гг, скриптом наверное. Да и там вроде стол есть, можно туда вбить список предметов на удаление? 


  14. vader_33 да я просто забил на реализацию той идеи своей. У меня такой вопрос, есть представление но геморное и долгое и мб как-то быстрее можно это сделать, возможно ли диалогом забрать случайный предмет из инвентаря гг?