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

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

 

 

но разве при загрузке сохранок память не очищается?

А после загрузки сохранки в любом случае происходит нетспавн актора. И в этот момент еще нет в онлайне никаких нпс. На мой взгляд идеальный момент для сбора подобных таблиц.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

- function actor_binder:take_item_from_box(box, item) в конец добавить ts_mod_soc.ts_on_item_take(item) --TS_MOD-- - function actor_binder:on_item_take (obj) в конец добавить ts_mod_soc.ts_on_item_take(item) --TS_MOD--

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

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


@=VENOM=, а по секции не проще опознать?

name будет что-то вроде секция+id, и если пушки не вбиты гвоздями в аллспавн, неизвестно заранее какое имя проверять.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@aromatizer,

local ex_sects = { -- сюда занести секции орудий которые ненадо разряжать

}

function ts_ammo_discharge(wpn)
local name = wpn:name()
local wpsec = wpn:section()
for k, v in pairs(ex_sects) do
    if v == wpsec then return end
end
вообще-то на этом форуме вроде не любят просьбы вида "сделайте мне".

@=VENOM=, вот только у клиентских объектов нет такого метода, есть просто section.

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

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

навскидку

Навскидку мне не поможет: не знаком с программированием. Поэтому и выложил скрипт целиком в надежде получить готовое решение.

 

 

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

Вроде нормально, а в чем подвох? Оружие в ящик перекладывается с инвентаря ГГ, т.е. уже разряженное при попадании в него.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

 

 

Оружие в ящик перекладывается с инвентаря ГГ

Не всегда, есть еще тайники в которых может быть оружие не побывавшее в инвентаре ГГ.

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

А готовое решение в посте выше...

  • Спасибо 1
  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

тайники в которых может быть оружие не побывавшее в инвентаре ГГ.

Только что проверил:  разряжается оружие при взятии из тайника.

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

разумеется оно разряжается... такое ощущение что мои посты не читают :) ну и ладно.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Так одно дело прочитать, а вот дотунькать что имелось ввиду- совсем другое.)

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий
Тогда, если нам требуется обработка всех сталкеров (серверных объектов, на всех локациях):


FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

[error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ... of chernobyl\gamedata\scripts\sk_zombie_life.script:526: attempt to index global 'quest_npc' (a nil value)

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

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

Народ, ну вот кто, кто вас учит так делать?

for k, v in pairs(ex_sects) do
    if v == wpsec then return end
end

Так делать не надо ни-ког-да. Надо делать вот так

if ex_sects[ wpsec ] then return end


А в ex_sects естественно надо добавлять вот так

local ex_sects = {
  [ "wpn_ognemet" ] = true,
}

И я, естественно, не стиль имею ввиду.

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

В общем я не скриптер, максимум могу копипастить, вот скрипт из "Zombie-shooter_mod_1.5"(адаптирую к ОП-2):

--[[----------------------------
Основной скрипт превращения в зомби Zombie-shooter mod'а.
Автор is SkyLoader.
Версия: 1.5
Последнее изменение скрипта - 13.08.10 
Огромное спасибо Erlik'y и Artos'y за помощь в изучении скриптов.
--------------------------------]]

local ZombieVictim, ZombieTime
local ZombieFlag = false

local novice_zombies = {
"zombie_trup2",
"zombie_trup",
"zombie_weak",
"zombie_hell13",
"zombie_babka_weak",
"burer_weak",
"fracture_weak",
"oboroten",
"electro_zombie",
"elekt_zomb1"
}

local experienced_zombies = {
"zombie_normal",
"zombie_hell14",
"zombie_hell12",
"zombie_hell10",
"zombie_hell1",
"zombie_babka_normal",
"burer_normal",
"vypolzen_red",
"elekt_zomb2",
"elekt_zomb3",
"elekt_zomb4"
}

local veteran_zombies = {
"zombie_ghost",
"zombie_blow",
"zombie_beee",
"zombie_hell15",
"zombie_babka_normal",
"zombie_immortal",
"zombie_hell9",
"zombie_hell8",
"zombie_hell7",
"zombie_hell6",
"zombie_hell5",
"zombie_hell4",
"dog_zombie",
"dog_skeleton",
"controller_babka",
"elekt_zomb5",
"elekt_zomb6",
"elekt_zomb7"
}

local master_zombies = {
"zombie_plague_komar",
"zombie_plague",
"zombie_babka_strong",
"zombie_strong",
"vodjanoj",
"snork_jumper",
"spider",
"molerat",
"deathclaw_weak",
"controller_flame",
"elekt_zomb8",
"electro_zombie_0",
"electro_zombie_1",
"electro_zombie_2",
"electro_zombie_3"
}

local ammo = {
"ammo_9x18_fmj",
"ammo_9x18_pmm",
"ammo_9x19_fmj",
"ammo_9x19_pbp",
"ammo_5.45x39_fmj",
"ammo_5.45x39_ap",
"ammo_5.56x45_ss190",
"ammo_5.56x45_ap",
"ammo_9x39_ap",
"ammo_9x39_sp5",
"ammo_9x39_pab9",
"ammo_12x70_buck",
"ammo_12x76_dart",
"ammo_12x76_zhekan"
}

function zombie_timer(seconds, victim) --\таймер на "безвылетность"
ZombieTime = time_global()+seconds*1000
ZombieVictim = victim
end

function life_zombie()
	local function Nilim() --\дабы не писать много, заделаем в одну функцию и будем ее подгружать
ZombieVictim = nil--\нилим юзердату жертвы и таймер
ZombieTime  = nil
ZombieFlag = true
end

    if (ZombieVictim and ZombieTime) then 
		if  ZombieTime<time_global() then
				if not ZombieFlag then
--\Добавление с 2.08.10
--\Чтобы был хоть какой-то шмот, Зомбированные не превращаются в зомби
if ZombieVictim:character_community() == "zombied" or string.find(ZombieVictim:section(),"arena") or ZombieVictim:character_community()=="arena_enemy" then
Nilim()
else
--\Добавление с 5.08.10
--\Неписей с квестовыми предметами пропускать
			if ZombieVictim:object("esc_wolf") or ZombieVictim:object("esc_fox") or ZombieVictim:object("esc_shustryi") or ZombieVictim:object("arhara_zaton") or ZombieVictim:object("volna_svidetel") or ZombieVictim:object("Escape_dinamite") or ZombieVictim:object("svalka_plot_stalk") or ZombieVictim:object("esc_kidalo") or ZombieVictim:object("warlab_stalker_oso") or ZombieVictim:object("mil_Svoboda_leader") or ZombieVictim:object("bodi_pantera1") or ZombieVictim:object("stalk_kluk") or ZombieVictim:object("land_green_stalk_4") or ZombieVictim:object("piligrim") or ZombieVictim:object("mil_Svoboda_engineer") or ZombieVictim:object("esc_hunter_zaschita_2") or ZombieVictim:object("Mil_Kap") or ZombieVictim:object("alexandrych_marsh") or ZombieVictim:object("marsh_ariadna") or ZombieVictim:object("esc_fanat") or ZombieVictim:object("Escape_novice_lager_volk") or ZombieVictim:object("esc_pantera_zadan_soldier") or ZombieVictim:object("kidalo_friend3") or ZombieVictim:object("kidalo_friend2") or ZombieVictim:object("kidalo_friend1") or ZombieVictim:object("zat_kidalo2") or ZombieVictim:object("zat_romale") or ZombieVictim:object("zat_kidalo") or ZombieVictim:object("upiter_baty") or ZombieVictim:object("kuzmat_zaton") or ZombieVictim:object("buusty_zaton") or ZombieVictim:object("volna_svidetel") or ZombieVictim:object("esc_kuzmat") or ZombieVictim:object("esc_buusty") or ZombieVictim:object("mil_stalker_killer") or ZombieVictim:object("yan_ecolog_help1") or ZombieVictim:object("agr_nebo_chromov1") or ZombieVictim:object("labirint_shade_monolit1") or ZombieVictim:object("warlab_sekret_ekolog1") or ZombieVictim:object("land_sniper_chimaera1") or ZombieVictim:object("dar_corpse_kalugin1") or ZombieVictim:object("yantar_baty1") or ZombieVictim:object("dohlji_ljsji") or ZombieVictim:object("journalist_npc") or ZombieVictim:object("gromoboi_volna") or ZombieVictim:object("locman_volna") or ZombieVictim:object("elbrus_volna") or ZombieVictim:object("fenix_volna") or ZombieVictim:object("kogot_volna") or ZombieVictim:object("nazar_volna") or ZombieVictim:object("grif_volna") or ZombieVictim:object("chudak_npc") or ZombieVictim:object("nazar_npc") or ZombieVictim:object("dasha_npc") or ZombieVictim:object("masha_npc") or ZombieVictim:object("zaton_dasha") or ZombieVictim:object("zaton_masha") or ZombieVictim:object("noi_npc") or ZombieVictim:object("grom_npc") or ZombieVictim:object("klesh_npc") or ZombieVictim:object("fotograf_npc") or ZombieVictim:object("dragunof_npc") or ZombieVictim:object("sar_monolith") or ZombieVictim:object("cit_doctor") or ZombieVictim:object("aes_sidorovich") or ZombieVictim:object("aes_monolit2") or ZombieVictim:object("aes_monolit1") or ZombieVictim:object("aes_kvartet") or ZombieVictim:object("aes_pustelga") or ZombieVictim:object("aes_sapsan") or ZombieVictim:object("rad_suicide") or ZombieVictim:object("rad_entrance_guard2") or ZombieVictim:object("rad_entrance_guard1") or ZombieVictim:object("yan_specnaz_corpse") or ZombieVictim:object("yan_mapspot_from_vasilyev") or ZombieVictim:object("yan_semenov_help") or ZombieVictim:object("yan_vasilyev") or ZombieVictim:object("yan_general_ecolog") or ZombieVictim:object("yan_ecolog_help") or ZombieVictim:object("pri_monolith_leader") or ZombieVictim:object("pri_wave4_monolith8") or ZombieVictim:object("pri_wave2_monolith_victim2") or ZombieVictim:object("pri_wave2_monolith_victim1") or ZombieVictim:object("Mil_Dolg_Khutor") or ZombieVictim:object("Mil_Miser") or ZombieVictim:object("Mil_Freedom_base") or ZombieVictim:object("Mil_Sniper2") or ZombieVictim:object("Mil_Sniper3") or ZombieVictim:object("Mil_Sniper1") or ZombieVictim:object("Mil_Controller") or ZombieVictim:object("Mil_Cook") or ZombieVictim:object("Mil_Hunter3") or ZombieVictim:object("Mil_Hunter2") or ZombieVictim:object("Mil_Hunter1") or ZombieVictim:object("Mil_patrol_kamikadze3") or ZombieVictim:object("Mil_patrol_kamikadze2") or ZombieVictim:object("Mil_patrol_kamikadze1") or ZombieVictim:object("Mil_Informator") or ZombieVictim:object("Mil_Killer3") or ZombieVictim:object("Mil_Killer2") or ZombieVictim:object("Mil_Killer1") or ZombieVictim:object("Mil_Silence") or ZombieVictim:object("Mil_Courier") or ZombieVictim:object("Mil_Freedom_Kamikadze") or ZombieVictim:object("Mil_Dolg_Zoneguard") or ZombieVictim:object("Mil_Lukash") or ZombieVictim:object("Mil_Sniper") or ZombieVictim:object("Mil_Crazy") or ZombieVictim:object("Mil_Master_Max") or ZombieVictim:object("Freedom_patrol_commander_level") or ZombieVictim:object("Freedom_patrol_commander_base") or ZombieVictim:object("rostok_kruglov_finish") or ZombieVictim:object("rostok_offline_walker_4") or ZombieVictim:object("rostok_offline_walker_3") or ZombieVictim:object("rostok_offline_walker_2") or ZombieVictim:object("rostok_offline_walker_1") or ZombieVictim:object("rostok_banda_volkodava") or ZombieVictim:object("rostok_naemnik") or ZombieVictim:object("bar_dolg_locator") or ZombieVictim:object("bar_arena_locator") or ZombieVictim:object("bar_bar_locator") or ZombieVictim:object("bar_barin") or ZombieVictim:object("bar_zastava_commander") or ZombieVictim:object("bar_psih") or ZombieVictim:object("bar_dolg_guard_commander") or ZombieVictim:object("bar_bar_osvedomitel") or ZombieVictim:object("bar_svoboda_ambush_tiran") or ZombieVictim:object("bar_crazy_veterans_leader") or ZombieVictim:object("bar_drunk_dolg") or ZombieVictim:object("bar_freedom_volkodav") or ZombieVictim:object("bar_water_tower") or ZombieVictim:object("bar_dolg_general_voronin") or ZombieVictim:object("bar_dolg_polkovnik_petrenko") or ZombieVictim:object("bar_dolg_captain_ivancov") or ZombieVictim:object("bar_hunter") or ZombieVictim:object("bar_ecolog_professor") or ZombieVictim:object("bar_hunter_toz") or ZombieVictim:object("val") or ZombieVictim:object("val_bandit_rpg_dead") or ZombieVictim:object("val_borov") or ZombieVictim:object("val_escort_wounded") or ZombieVictim:object("val_sos_stalker") or ZombieVictim:object("val_stopper_soldier3") or ZombieVictim:object("val_stopper_soldier2") or ZombieVictim:object("val_stopper_soldier1") or ZombieVictim:object("val_tunnel_bandit") or ZombieVictim:object("val_escort_guard2") or ZombieVictim:object("val_escort_guard1") or ZombieVictim:object("val_escort_nap1") or ZombieVictim:object("val_sacrifice_guard2") or ZombieVictim:object("val_sacrifice_guard1") or ZombieVictim:object("val_prisoner") or ZombieVictim:object("val_escort_captive") or ZombieVictim:object("agro_adrenalin") or ZombieVictim:object("agr_stalker_look_point") or ZombieVictim:object("agr_captains_chamber") or ZombieVictim:object("agr_factory_skirmish1") or ZombieVictim:object("gar_stalker_flame_quest23") or ZombieVictim:object("gar_stalker_corpse") or ZombieVictim:object("gar_seryi_drug_wounded") or ZombieVictim:object("gar_spot_bandit_agr") or ZombieVictim:object("gar_spot_dolg_blokpost") or ZombieVictim:object("gar_spot_swamp") or ZombieVictim:object("gar_bandit_post") or ZombieVictim:object("gar_newbie_in_tunnel") or ZombieVictim:object("gar_wounded") or ZombieVictim:object("gar_dolg_blockpost") or ZombieVictim:object("gar_bandits_leader") or ZombieVictim:object("gar_boars_nest") or ZombieVictim:object("gar_dm_novice") or ZombieVictim:object("gar_dm_bandit3") or ZombieVictim:object("gar_dm_bandit2") or ZombieVictim:object("gar_dm_bandit1") or ZombieVictim:object("Garbage_Seriy") or ZombieVictim:object("escape_provodnik") or ZombieVictim:object("esc_dead_tunel_novice") or ZombieVictim:object("esc_kuznetsov") or ZombieVictim:object("soldiers_bridge") or ZombieVictim:object("esc_wounded_follower_2") or ZombieVictim:object("esc_secret_shustryi") or ZombieVictim:object("esc_lager_leader") or ZombieVictim:object("esc_leader_killers") or ZombieVictim:object("esc_bandits_factory") or ZombieVictim:object("esc_level_patrol") or ZombieVictim:object("esc_helicopter") or ZombieVictim:object("esc_vagon_newbie2") or ZombieVictim:object("esc_vagon_newbie1") or ZombieVictim:object("Escape_raid_commander2") or ZombieVictim:object("Escape_raid_commander1") or ZombieVictim:object("Escape_bridge_stalkers") or ZombieVictim:object("Escape_novice_lager_volk") or ZombieVictim:object("Escape_stalker_from_raid") or ZombieVictim:object("Escape_tutorial_wounded") or ZombieVictim:object("Escape_Trader") or ZombieVictim:object("Escape_trader_self") or ZombieVictim:object("Escape_blockpost_case") or ZombieVictim:object("esc_kostya") or ZombieVictim:object("rostok_stalker") or ZombieVictim:object("bar_rostok_james") or ZombieVictim:object("radar_monolit_dead") or ZombieVictim:object("mil_trader_gavr") or ZombieVictim:object("marsh_dan") or ZombieVictim:object("dark_bland") or ZombieVictim:object("agr_ratcatcher_new") or ZombieVictim:object("marsh_barman") or ZombieVictim:object("marsh_remont") or ZombieVictim:object("val_bandit_krisyk") or ZombieVictim:object("val_bandit_trader") or ZombieVictim:object("Sherstuk") or ZombieVictim:object("bar_docent") or ZombieVictim:object("dolgovazyi") or ZombieVictim:object("Doktor1") or ZombieVictim:object("Doktor") or ZombieVictim:object("Sak") or ZombieVictim:object("military_ecolog_agro1") or ZombieVictim:object("yakut_agro") or ZombieVictim:object("stalker_agro_und") or ZombieVictim:object("yakut_agro2") or ZombieVictim:object("new_prizrak") or ZombieVictim:object("rost_siv") or ZombieVictim:object("esc_zver") or ZombieVictim:object("esc_tirex") or ZombieVictim:object("stalker_rost_sysh") or ZombieVictim:object("sniper_kosoi") or ZombieVictim:object("mil_naemnik_zondr") or ZombieVictim:object("stalker_green_zahar") or ZombieVictim:object("naem_zahar1") or ZombieVictim:object("ecolog_wound_bunker") or ZombieVictim:object("tamaz_garbage") or ZombieVictim:object("new_prizrak_treasure3") or ZombieVictim:object("new_prizrak_treasure2") or ZombieVictim:object("new_prizrak_treasure1") or ZombieVictim:object("tamaz_body2") or ZombieVictim:object("esc_akim") or ZombieVictim:object("peshera_shaxter") or ZombieVictim:object("land_medik") or ZombieVictim:object("land_sniper_chimaera") or ZombieVictim:object("gen_solvador1") or ZombieVictim:object("gen_andersen1") or ZombieVictim:object("prip_dok_arh") or ZombieVictim:object("atp_mobil_torgovetz") or ZombieVictim:object("chaes2_mono_fugas") or ZombieVictim:object("gen_sapsan1") or ZombieVictim:object("chaes1_prizrak") or ZombieVictim:object("devchonka") or ZombieVictim:object("new_kluk_nz") or ZombieVictim:object("generators_udav") or ZombieVictim:object("marsh_udav") or ZombieVictim:object("generators_zvezdochet") or ZombieVictim:object("generators_prizrak") or ZombieVictim:object("marsh_pantera") or ZombieVictim:object("village_pantera") or ZombieVictim:object("kolmogor") or ZombieVictim:object("radar_vitamin") or ZombieVictim:object("warlab_golograma") or ZombieVictim:object("tehnik_golograma") or ZombieVictim:object("warlab_vitamin") or ZombieVictim:object("pantera") or ZombieVictim:object("aver_hunter_stalk_4") or ZombieVictim:object("otshelnik") or ZombieVictim:object("land_lazaret_starik") or ZombieVictim:object("labirint_shade_monolit") or ZombieVictim:object("atp_kalinin") or ZombieVictim:object("puzir_crest") or ZombieVictim:object("bkot") or ZombieVictim:object("shadowman") or ZombieVictim:object("kot_hos") or ZombieVictim:object("black_doctor") or ZombieVictim:object("scromnyi") or ZombieVictim:object("kashei") or ZombieVictim:object("borman") or ZombieVictim:object("kalmyak") or ZombieVictim:object("esc_saha") or ZombieVictim:object("clear_scy_leader") or ZombieVictim:object("city_starshoy") or ZombieVictim:object("zapasnoy_foto_muzhik") or ZombieVictim:object("esc_foto_muzhik") or ZombieVictim:object("milit_zapas_fotomuzhik") or ZombieVictim:object("military_fotomuzhik") or ZombieVictim:object("dcity_last_rasstrel1") or ZombieVictim:object("dsity_rasstrel2") or ZombieVictim:object("dsity_rasstrel1") or ZombieVictim:object("molniy") or ZombieVictim:object("aver_zlobnuy") or ZombieVictim:object("esc_pantera_bomba") or ZombieVictim:object("esc_father_pant") or ZombieVictim:object("trezv_kapitan") or ZombieVictim:object("agro_chsovoy_trezv") or ZombieVictim:object("yantar_chernomor") or ZombieVictim:object("forest_lastday_snip1") or ZombieVictim:object("pripyt_kluk") or ZombieVictim:object("radist_after") or ZombieVictim:object("stalk_radist") or ZombieVictim:object("nevid_monolit") or ZombieVictim:object("odnonogiy_stalk") or ZombieVictim:object("yantar_baty") or ZombieVictim:object("final_piligrim") or ZombieVictim:object("final_dok_arh") or ZombieVictim:object("final_prizrak") or ZombieVictim:object("final_arhara") or ZombieVictim:object("final_petrenko") or ZombieVictim:object("final_otshelnik") or ZombieVictim:object("final_muxa") or ZombieVictim:object("forest_lesnik") or ZombieVictim:object("pri_dimak") or ZombieVictim:object("aaz_upi") or ZombieVictim:object("dyak") or ZombieVictim:object("mil_Svoboda_zoneguard") or ZombieVictim:object("warlab_solvador2") or ZombieVictim:object("bar_zastava_commander_1") or ZombieVictim:object("andersen") or ZombieVictim:object("zemlyk") or ZombieVictim:object("bar_bar_guard") or ZombieVictim:object("military_vitamin") or ZombieVictim:object("peshera_plennyi") or ZombieVictim:object("peshera_stahanov") or ZombieVictim:object("peshera_xabaruch") or ZombieVictim:object("ozersky") or ZombieVictim:object("volazar_new") or ZombieVictim:object("volazar") or ZombieVictim:object("vesker_zaton") or ZombieVictim:object("gena_oso") or ZombieVictim:object("elsa_yantar") or ZombieVictim:object("snegir_kordon") or ZombieVictim:object("snegir_2chaes") or ZombieVictim:object("maria_kordon") or ZombieVictim:object("bibliofrend_talk_black_zaton") or ZombieVictim:object("bibliofrend_talk_zaton") or ZombieVictim:object("wolffrend_talk_zaton") or ZombieVictim:object("wolffrend_talk_zaton2") or ZombieVictim:object("anna_zaton2") or ZombieVictim:object("proper70_zaton") or ZombieVictim:object("ariadna_zaton") or ZombieVictim:object("kotobegemot_zaton") or ZombieVictim:object("snp_ucheniy2") or ZombieVictim:object("snp_nolik") or ZombieVictim:object("ariadna_bar") or ZombieVictim:object("ludmila_zaton") or ZombieVictim:object("boroda_zaton") or ZombieVictim:object("brodaga_zaton") or ZombieVictim:object("snp_ucheniy1") or ZombieVictim:object("snp_semetskiy") or ZombieVictim:object("fenrir_jupiter") or ZombieVictim:object("suslov_marsh") or ZombieVictim:object("anna_jupiter") or ZombieVictim:object("resident_evil_jupiter") or ZombieVictim:object("proper70_jupiter") or ZombieVictim:object("lobsang_zaton") or ZombieVictim:object("bubulyka_zaton") or ZombieVictim:object("anna_zaton") or ZombieVictim:object("resident_evil_zaton") or ZombieVictim:object("fenrir_zaton") or ZombieVictim:object("kotobegemot_bar") or ZombieVictim:object("akill_npc") or ZombieVictim:object("tm_brother_2chaes") or ZombieVictim:object("stalker_green_zahar") or ZombieVictim:object("bar_zastava_guard_3") or ZombieVictim:object("bar_zastava_commander_1") or ZombieVictim:object("sim_dolg_veteran_barin") or ZombieVictim:object("bar_arena_manager") or ZombieVictim:object("rostok_stalker") or ZombieVictim:object("bar_stalker_freeman") or ZombieVictim:object("bar_arena_man") or ZombieVictim:object("bar_stalker_0001") or ZombieVictim:object("bar_bar_lisiy") or ZombieVictim:object("bar_bar_drunk_dolg") or ZombieVictim:object("bar_bar_visitor_hunter") or ZombieVictim:object("bar_bar_osvedomitel") or ZombieVictim:object("bar_bar_guard") or ZombieVictim:object("bar_dolg_regular_5") or ZombieVictim:object("bar_dolg_leader") or ZombieVictim:object("bar_dolg_petrenko") or ZombieVictim:object("bar_dolg_ivancov") or ZombieVictim:object("val_bandit_trader") or ZombieVictim:object("val_lager_bandits_borov") or ZombieVictim:object("val_sos_wounded") or ZombieVictim:object("val_escort_nap1") or ZombieVictim:object("val_escort_captive") or ZombieVictim:object("himik_zl") or ZombieVictim:object("prigorshnya_zl") or ZombieVictim:object("himik_trup") or ZombieVictim:object("gek") or ZombieVictim:object("chuk") or ZombieVictim:object("sak_military_stalker") or ZombieVictim:object("agr_ratcatcher") or ZombieVictim:object("agr_krot") or ZombieVictim:object("gar_dm_novice") or ZombieVictim:object("gar_seryi") or ZombieVictim:object("amk_vitek_voron") or ZombieVictim:object("amk_artem_kulinar") or ZombieVictim:object("gar_dolg_blokpost_4") or ZombieVictim:object("gar_hellcar") or ZombieVictim:object("peshera_plennyi") or ZombieVictim:object("peshera_stahanov") or ZombieVictim:object("peshera_xabaruch") or ZombieVictim:object("esc_pantera_zadan_soldier") or ZombieVictim:object("esc_provodnik") or ZombieVictim:object("esc_bridge_soldier5") or ZombieVictim:object("esc_stalker_fanat") or ZombieVictim:object("esc_novice_attacker1") or ZombieVictim:object("esc_vagon_wounded") then
Nilim()
				else --\для обычный неписей делаем стандарт
--\Добавление с 1.08.10
--\Так как играть невозможно с рандомными зомби, пришлось прибегнуть к рангам неписей
			local Zombie_rank
			Zombie_rank = ranks.get_obj_rank_name(ZombieVictim)
			if Zombie_rank ~= nil then
--\Добавление с 5.08.10
--\Выпадение патронов с трупов
--\Решил отказаться от этой идеи, т.к. грузит комп. Сделал легче: с мастеров падают рандомные патроны.
				if Zombie_rank == "novice" then
				alife():release(alife():object(ZombieVictim:id()), true)
				alife():create(novice_zombies[math.random(table.getn(novice_zombies))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
Nilim()
				elseif Zombie_rank == "experienced" then
				alife():release(alife():object(ZombieVictim:id()), true)
				alife():create(experienced_zombies[math.random(table.getn(experienced_zombies))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
Nilim()
				elseif Zombie_rank == "veteran" then
				alife():release(alife():object(ZombieVictim:id()), true)
				alife():create(veteran_zombies[math.random(table.getn(veteran_zombies))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
				alife():create(ammo[math.random(table.getn(ammo))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
Nilim()
				elseif Zombie_rank == "master" then
				alife():release(alife():object(ZombieVictim:id()), true)
				alife():create(master_zombies[math.random(table.getn(master_zombies))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
				alife():create(ammo[math.random(table.getn(ammo))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
				alife():create(ammo[math.random(table.getn(ammo))], ZombieVictim:position() , ZombieVictim:level_vertex_id() , ZombieVictim:game_vertex_id())
Nilim()
				end
			end
		end
	end
end
            else
    ZombieFlag = false
        end
    end
end

function give_money(victim,who)
--\Добавление с 6.08.10
--\Получение денег за убийства зомби
	if who:id() == db.actor:id() then --для актора
		if victim and (victim:section() == "zombie_trup2" or victim:section() == "zombie_trup" or victim:section() == "zombie_weak" or victim:section() == "zombie_hell13" or victim:section() == "zombie_babka_weak" or victim:section() == "electro_zombie" or victim:section() == "elekt_zomb1") then
local n = math.random(5,40)
dialogs.relocate_money(db.actor,n,"in")
elseif victim and (victim:section() == "zombie_normal" or victim:section() == "zombie_hell14" or victim:section() == "zombie_hell12" or victim:section() == "zombie_hell10" or victim:section() == "zombie_hell1" or victim:section() == "zombie_babka_normal" or victim:section() == "zombie" or victim:section() == "elekt_zomb2" or victim:section() == "elekt_zomb3" or victim:section() == "elekt_zomb4") then
local n = math.random(20,70)
dialogs.relocate_money(db.actor,n,"in")
elseif victim and (victim:section() == "zombie_ghost" or victim:section() == "zombie_blow" or victim:section() == "zombie_beee" or victim:section() == "zombie_hell15" or victim:section() == "zombie_babka_normal" or victim:section() == "zombie_immortal" or victim:section() == "zombie_hell9" or victim:section() == "zombie_hell8" or victim:section() == "zombie_hell7" or victim:section() == "zombie_hell6" or victim:section() == "zombie_hell5" or victim:section() == "zombie_hell4" or victim:section() == "elekt_zomb5" or victim:section() == "elekt_zomb6" or victim:section() == "elekt_zomb5" or victim:section() == "controller_babka") then
local n = math.random(60,110)
dialogs.relocate_money(db.actor,n,"in")
elseif victim and (victim:section() == "zombie_plague_komar" or victim:section() == "zombie_plague" or victim:section() == "zombie_babka_strong" or victim:section() == "zombie_strong" or victim:section() == "vodjanoj" or victim:section() == "controller_flame" or victim:section() == "elekt_zomb8" or victim:section() == "electro_zombie_0" or victim:section() == "electro_zombie_1" or victim:section() == "electro_zombie_2" or victim:section() == "electro_zombie_3") then
local n = math.random(120,500)
dialogs.relocate_money(db.actor,n,"in")
		end
	end
			if who:id() ~= db.actor:id() and not IsMonster(who) then --\для непися
				if victim and (victim:section() == "zombie_trup2" or victim:section() == "zombie_trup" or victim:section() == "zombie_weak" or victim:section() == "zombie_hell13" or victim:section() == "zombie_babka_weak" or victim:section() == "electro_zombie" or victim:section() == "elekt_zomb1") then
local n = math.random(5,40)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and (victim:section() == "zombie_normal" or victim:section() == "zombie_hell14" or victim:section() == "zombie_hell12" or victim:section() == "zombie_hell10" or victim:section() == "zombie_hell1" or victim:section() == "zombie_babka_normal" or victim:section() == "zombie" or victim:section() == "carlic_weak" or victim:section() == "vypolzen_red" or victim:section() == "elekt_zomb2" or victim:section() == "elekt_zomb3" or victim:section() == "elekt_zomb4") then
local n = math.random(20,70)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and (victim:section() == "zombie_ghost" or victim:section() == "zombie_blow" or victim:section() == "zombie_beee" or victim:section() == "zombie_hell15" or victim:section() == "zombie_babka_normal" or victim:section() == "zombie_immortal" or victim:section() == "zombie_hell9" or victim:section() == "zombie_hell8" or victim:section() == "zombie_hell7" or victim:section() == "zombie_hell6" or victim:section() == "zombie_hell5" or victim:section() == "zombie_hell4" or victim:section() == "elekt_zomb5" or victim:section() == "elekt_zomb6" or victim:section() == "elekt_zomb5" or victim:section() == "controller_babka") then
local n = math.random(60,110)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and (victim:section() == "zombie_plague_komar" or victim:section() == "zombie_plague" or victim:section() == "zombie_babka_strong" or victim:section() == "zombie_strong" or victim:section() == "vodjanoj" or victim:section() == "controller_flame" or victim:section() == "wolf" or victim:section() == "elekt_zomb8" or victim:section() == "electro_zombie_0" or victim:section() == "electro_zombie_1" or victim:section() == "electro_zombie_2" or victim:section() == "electro_zombie_3") then
local n = math.random(120,500)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
			end
		end
end 

Вчера пытались переписать функцию "function give_money(victim,who)" , на выдачу денег за секции зомби - максимум что вышло:

 

 

--\Добавление с 6.08.10
--\Получение денег за убийства зомби
--\Оптимизировал Romann
function give_money(victim,who)
local nov_zomb = {
"zombie_trup2",
"zombie_trup",
"zombie_weak",
"zombie_hell13",
"zombie_babka_weak",
"burer_weak",
"fracture_weak",
"oboroten",
"electro_zombie",
"elekt_zomb1"
}
local exp_zomb = {
"zombie_normal",
"zombie_hell14",
"zombie_hell12",
"zombie_hell10",
"zombie_hell1",
"zombie_babka_normal",
"zombie",
"burer_normal",
"vypolzen_red",
"elekt_zomb2",
"elekt_zomb3",
"elekt_zomb4"
}
local vet_zomb = {
"zombie_ghost",
"zombie_blow",
"zombie_beee",
"zombie_hell15",
"zombie_babka_normal",
"zombie_immortal",
"zombie_hell9",
"zombie_hell8",
"zombie_hell7",
"zombie_hell6",
"zombie_hell5",
"zombie_hell4",
"dog_zombie",
"dog_skeleton",
"controller_babka",
"elekt_zomb5",
"elekt_zomb6",
"elekt_zomb7"
}
local mast_zomb = {
"zombie_plague_komar",
"zombie_plague",
"zombie_babka_strong",
"zombie_strong",
"ghoul",
"vodjanoj",
"snork_jumper",
"spider",
"molerat",
"deathclaw_weak",
"controller_flame",
"elekt_zomb8",
"electro_zombie_0",
"electro_zombie_1",
"electro_zombie_2",
"electro_zombie_3"
}

	if who:id() == db.actor:id() then --для актора
    if victim and victim:section[nov_zomb] then
	local n = math.random(5,40)
    dialogs.relocate_money(db.actor,n,"in")
elseif victim and victim:section[exp_zomb] then
	local n = math.random(20,70)
    dialogs.relocate_money(db.actor,n,"in")
elseif victim and victim:section[vet_zomb] then
	local n = math.random(60,110)
    dialogs.relocate_money(db.actor,n,"in")
elseif victim and victim:section[mast_zomb] then
	local n = math.random(120,500)
    dialogs.relocate_money(db.actor,n,"in")
		end
	end
	if who:id() ~= db.actor:id() and not IsMonster(who) then --\для непися
    if victim and victim:section[nov_zomb] then
	local n = math.random(5,40)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and victim:section[exp_zomb] then
	local n = math.random(20,70)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and victim:section[vet_zomb] then
	local n = math.random(60,110)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", nil, nil, 2000)
elseif victim and victim:section[mast_zomb] then
	local n = math.random(120,500)
				who:give_money(n)
				game_stats.money_quest_update(n)
				news_manager.send_tip(db.actor,who:character_name().."%c[255,0,253,13] получил "..n.." рублей%c[default]", 0, 15, nil, nil, 2000)
			end
		end
end

 

 

Сначала думал работает, но оказалось деньги выдаются не за секции в таблицах, а вообще за всех мутантов - решил забить, т.к. работает и в старом коде.

Теперь другая проблема:в строке "120" -  "--\Неписей с квестовыми предметами пропускать",  т.е. схема не должна срабатывать на квестовиках, но она срабатывает, что не есть хорошо, помогите исправить..

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

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

 

 

Народ, ну вот кто, кто вас учит так делать?

Ну дааа... вы правы.

Хотя в посте вопрошающего говорилось о двух исключениях - гравипушка и огнемет. Перебрать таблицу из двух элементов заняло бы не сильно больше времени чем в вашем варианте.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

Хотя в посте вопрошающего говорилось о двух исключениях - гравипушка и огнемет

 

Ты ведь какая штука. И ты о ней упоминал. Один создал табличку с двумя элементами. А второй, потом, или вообще десятый, запихает в эту табличку еще сотню. Ну потому, что он не скриптер и т.д.

 

Просто есть вещи, которые не понимающему человеку не нужно делать никогда. Лучше таким людям делать шаблонно и не задумываться, будет это быстрее вон того варианта, при двух элементах в таблице, или не будет. Тем более, что таких мыслей и не возникнет. :)

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

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

Хотя у меня есть оправдание :) я для своих кодов вообще крайне редко делаю таблицы вида [ключ] = true/false. обычно у меня значения таблицы более содержательны. Таблица - хранилище данных как-никак, так что можно во многих случаях так организовать код чтобы там действительно хранились сложные и полезные данные, и это было востребовано.

Хотя это уже лирика конечно.

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Оружие, для которого не требуется авторазряжание, встречается в модах в единичных случаях, подобных мной описанному. В ТТ2 это два оружия на весь мод, и навряд ли в других  модах его наберется более пяти единиц. Возможно, рациональнее избавиться от таблицы и перенести перечень оружия, не требующего авторазряжания, в тело функции? Конечно, если это корректно.

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

Чет, не хочет у меня работать: или вылет или не разряжает все оружие. Вылет:

 

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: d:\games\tt2+aa2\gamedata\scripts\_g.script:1248: attempt to index global 'ts_mod_soc' (a nil value)

 

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

Ссылка на комментарий
Поэтому рациональнее

нуу, эээ... да еще и в тело функции. А там  оно в каком виде будет, не таблицы чтоли?

Ах да, я догадался. if-then-портянку соорудить видимо надо.

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

 

зы. если серьезно и если про вылет. ошибка синтаксиса, внимательнее надо с кодом обращаться.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Так скопипастил- и не работает. А вылеты уже из-за метода ненаучного тыка.

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

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

Чисто гипотетически, на мой взгляд, это даже не так надо делать, а как-то вроде

if get_bool( wpsec, script_name() .. ".ignore" ) then return end

Ну и в секции оружия добавить

ts_mod_soc.ignore = true

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

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

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

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

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

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

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

Войти

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

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

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