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

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

 
 

Сам цвет задаётся от 0 до 3, а не от 0 до 255

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


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

Alex Kireev да это ерунда. Оно и так работает. Пробовал я и до 3. Там ведь ргба палитра вроде.

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 16.06.2021 в 06:58, ian98 сказал:

мне хочется сделать два разных фонаря

 


Дополнено 7 минуты спустя
5 минут назад, ian98 сказал:

Там ведь ргба палитра вроде

Да, и задаётся она от 0 до 3 то есть полностью синий цвет в паинте это 0, 0, 255, а в сталкере 0.0, 0.0, 3.0

  • Хабар 1

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


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

Alex Kireev все равно не работает. Там сам фонарик не активируется. 


76561198152189716.png

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


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

ian98 замени изменённые файлы

light_night.script

items.ltx

modules.script

xr_motivator.script

xr_light.script

 

То есть те файлы, которые менял из этого списка, замени на не изменённые (оригинальные)

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


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

Alex Kireev я ничего не трогал из списка, а если кто-то что-то трогал, то это ai addiction 2.0 и это скрипты xr_motivator.script и modules.script. А зачем? В общем, сделал.

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

76561198152189716.png

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


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

После заходи в файл 

light_night.script

И меняй 

color = 1.0, 1.0, 1.0, 0.2

color_r2 = 1.2, 1.2, 1.2, 0.2

На

color = 0.0, 0.0, 3.0, 1.0 

color_r2 = 0.0, 0.0, 3.0, 1.0


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

ian98 не понял, как ты пытался сделать фонарь?


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

Файлы которые я скинул, отвечают за работу фонарика, я сейчас это проверил и изменил цвет фонарика, отредактировав файл light_night.script


Дополнено 4 минуты спустя
5 минут назад, ian98 сказал:

В общем, сделал.

А, ну тогда ладно, спокойной ночи

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


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

Alex Kireev https://drive.google.com/file/d/1Knsfswo8FzUkJk95_K_7JFcgeYsUKXQp/view?usp=sharing


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

Alex Kireev Спокойной


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
10 часов назад, Alex Kireev сказал:

окно консоли, которое открывается при нажатии на тильду (~(Ё)) это движковая функция или скриптовая?

движковое


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

ian98 новую секцию еще надо прописать в "actor.ltx" в "attachable_items". Может еще в "system.ltx" slot_persistent_*** (где прописан фонарик) надо поменять на false, я уже точно не помню

Изменено пользователем vader_33
  • Мастер! 1

В беге за рассветом приближаешь свой закат

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


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

vader_33 не подскажешь как быстро можно отредактировать движок? Мне надо добавить одно условие и обработку нажатия на клавишу 


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

Или может быть скрипт какой есть для перехвата событий консоли?


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

ian98 спасибо, по позже посмотрю 

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


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

vader_33 А если я хотел бы, чтобы у нпс также были разные фонари? в "всевозможныхstalker.ltx" в "attachable_items" все прописал и ничего. Ходят с обычными. Потом я понял, что для нпс есть скрипт sr_light и функция check_light(stalker), но ничего там не получается. Получается только включить какой-то один из фонарей.

 


76561198152189716.png

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


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

ian98 скорее всего для нпс есть один объект (клас, функции или что то в этом роде), где описаны настройки фонарика и все энпси берут описание оттуда

Если это так, то можно сделать функцию рандом для каждого нпс, функция передает получившийся параметр в описание настроек фонарика 

То есть есть бандит Васька, при доставания фонарика, включается рандом, и этот рандом передает 3 значения в описание цвета фонарика

Можно ещё сделать таблицу цветов, где для каждого нпс будет прописан свой статический цвет, который не меняется

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


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

Alex Kireev наверное да, мои представления об этом крайне малы.


76561198152189716.png

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


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

Alex Kireev насчет движка не подскажу, не разбираюсь в нём. Если нужен коллбек на нажатия клавиш - проще использовать уже готовый мод движок, ogsr например


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

ian98 еще в файле xr_light.script надо добавить новую секцию фонаря

  • Хабар 1

В беге за рассветом приближаешь свой закат

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


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

ian98 скачал, закинул, в инвенторе только фонарик, а не повесить не включить его не получается, можно только выбросить, версия 1.0004, честь ТЧ


Дополнено 12 минуты спустя
2 часа назад, vader_33 сказал:

еще в файле xr_light.script надо добавить новую секцию фонаря

А, так я про это писал, только я имел ввиду не добавить, а отредактировать текущий фонарь, что бы он работал, так как надо, а потом сделать дубликат с новым цветом

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


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

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

Спойлер

?imw=5000&imh=5000&ima=fit&impolicy=Lett

Мешает буковка k перед F. Она не всегда появляется. Раз через раз примерно, с чем связано? Можно ли поправить раз и навсегда? Помнится, в детстве еще, наверное на ранних патчах, не было такого бага с этими надписями.


76561198152189716.png

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


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

можно ли как-то менять визуалы через скрипты без последствий в виде вылетов? Меняю визуалы скриптом из ai addiction, я его повесил в закреп. Все работает, но в какой-то момент игра начинает засыпать вылетами. Примерно со свалки это начинается. Я могу предположить, что это из-за анимаций, но как такое можно исправить в таком случае? Сделать всем скинам одну анимацию, обычную? 

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

Спойлер

! error in stalker with visual actors\bandit\stalker_bandit_4 -- тут может быть любой визуал
stack trace:

0023:07FD234B xrGame.dll

БЫВАЕТ ЕЩЕ ТАКОЙ

! error in stalker with visual actors\stalker_mp\stalker_sv_military_vet
stack trace:

0023:75ABA6F2 KERNELBASE.dll
0023:649D8E89 MSVCR80.dll, EH_prolog()
0023:0043ACD0 XR_3DA.exe, Feel::Touch::operator=()
0023:0046605A XR_3DA.exe, CEvent::operator=()
0023:00466518 XR_3DA.exe, CEvent::operator=()

 

xrs_armor.script


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

Ладно, со скинами разобрался, выдам их через конфиги, а вот с рангом бы подсказку. Как их выдавать случайно?

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

Спойлер

local npc_tbl = {
  [ "esc_wolf"  ] = true,
...
  [ "yan_fresh_Zombied" ] = true
}

function change_rank_2()
	local sobj = alife():object( a )
	if sobj and is_stalker( sobj ) and sobj:alive() and sobj.rank and sobj:rank()~=0 then
      local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
      if is_tbl_npc then
		sobj:set_rank(upgrade_exp*lvl+math.random(1,1000))
		end
	end
end

 

 

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

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
14 часов назад, ian98 сказал:

actors\stalker_mp\stalker_sv_military_vet

в ai Additions shoc 2.0f4 для чистого тч нету такой строчки, видимо файл с какой-то адаптации для какого-то мода. Если не используется мод, к которому шла эта адаптация - лучше поставить для чистого тч.


Дополнено 4 минуты спустя
14 часов назад, ian98 сказал:

local sobj = alife():object( a )

что назначается этому "а" в скобках? И где назначается

 

14 часов назад, ian98 сказал:

sobj.rank and sobj:rank()~=0

"sobj.rank" нету такого. Проверяйте в файле lua_help.script, как именно писать


Дополнено 6 минуты спустя
14 часов назад, ian98 сказал:

а вылет.

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

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

В беге за рассветом приближаешь свой закат

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


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

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

Спойлер

local npc_tbl = {
  [ "esc_wolf"  ] = true,
  [ "esc_fanat" ] = true,
  [ "esc_fox" ] = true,
  [ "esc_tutorial_wounded" ] = true,
  [ "esc_shustryi" ] = true,
  [ "esc_killer_specnaz" ] = true,
  [ "esc_bandit_novice" ] = true,
  [ "esc_stalker_novice" ] = true,
  [ "esc_ranger" ] = true,
  [ "esc_soldier_commander" ] = true,
  [ "esc_soldier_regular" ] = true,
  [ "esc_soldier_blockpost_commander" ] = true,
  [ "esc_soldier_blokpost" ] = true,
  [ "esc_soldier_specnaz" ] = true,
  [ "esc_killer_master" ] = true,
  [ "esc_provodnik" ] = true,
  [ "gar_seriy" ] = true,
  [ "gar_dram_novice" ] = true,
  [ "gar_bandit_novice_wounded" ] = true,
  [ "gar_bandit_leader" ] = true,
  [ "gar_bandit_novice" ] = true,
  [ "gar_bandit_general" ] = true,
  [ "gar_stalker_general" ] = true,
  [ "gar_wounded_bandit" ] = true,
  [ "gar_dolg_blokpost" ] = true,
  [ "gar_dolg_blokpost_commander" ] = true,
  [ "gar_sniper" ] = true,
  [ "gar_bandit_dm" ] = true,
  [ "agr_krot" ] = true,
  [ "agr_ratcatcher" ] = true,
  [ "agr_nii_commander" ] = true,
  [ "agr_stalker_general" ] = true,
  [ "agr_soldier_regular" ] = true,
  [ "agr_soldier_specnaz" ] = true,
  [ "agr_soldier_commander" ] = true,
  [ "agr_soldier_sniper" ] = true,
  [ "agr_bandit_general" ] = true,
  [ "sim_bandit_novice" ] = true,
  [ "sim_bandit_general" ] = true,
  [ "sim_bandit_veteran" ] = true,
  [ "sim_bandit_master" ] = true,
  [ "sim_stalker_novice" ] = true,
  [ "sim_stalker_general" ] = true,
  [ "sim_stalker_veteran" ] = true,
  [ "sim_stalker_master" ] = true,
  [ "sim_stalker_sniper" ] = true,
  [ "sim_dolg_regular" ] = true,
  [ "sim_dolg_veteran" ] = true,
  [ "sim_dolg_master" ] = true,
  [ "sim_dolg_sniper" ] = true,
  [ "sim_Svoboda_regular" ] = true,
  [ "sim_Svoboda_specnaz" ] = true,
  [ "sim_Svoboda_master" ] = true,
  [ "sim_Svoboda_sniper" ] = true,
  [ "sim_killer_general" ] = true,
  [ "sim_killer_veteran" ] = true,
  [ "sim_killer_master" ] = true,
  [ "sim_killer_sniper" ] = true,
  [ "sim_monolith_regular" ] = true,
  [ "sim_monolith_specnaz" ] = true,
  [ "sim_monolith_master" ] = true,
  [ "sim_monolith_sniper" ] = true,
  [ "sim_ecolog" ] = true,
  [ "sim_zombied_novice" ] = true,
  [ "sim_zombied_veteran" ] = true,
  [ "sim_zombied_master" ] = true,
  [ "sim_fresh_Zombied" ] = true,
  [ "sim_Soldier_regular" ] = true,
  [ "sim_Soldier_specnaz" ] = true,
  [ "sim_Soldier_commander" ] = true,
  [ "sim_Soldier_sniper" ] = true,
  [ "sim_Soldier_master" ] = true,
  [ "sim_stalker_veteran_gusarov" ] = true,
  [ "sim_Svoboda_specnaz_leshii" ] = true,
  [ "sim_stalker_master_chuchelo" ] = true,
  [ "sim_stalker_general_upir" ] = true,
  [ "sim_stalker_master_diador" ] = true,
  [ "sim_ecolog_zob" ] = true,
  [ "sim_stalker_novice_neumeha" ] = true,
  [ "sim_bandit_master_kocherga" ] = true,
  [ "sim_dolg_veteran_barin" ] = true,
  [ "sim_stalker_veteran_vorobey" ] = true,
  [ "sim_stalker_master_master" ] = true,
  [ "sim_dolg_veteran_prapor" ] = true,
  [ "sim_svoboda_specnaz_prut" ] = true,
  [ "sim_stalker_veteran_umnik" ] = true,
  [ "sim_bandit_master_fraer" ] = true,
  [ "sim_stalker_master_polkan" ] = true,
  [ "bar_arena_stalker_1" ] = true,
  [ "bar_arena_stalker_2" ] = true,
  [ "bar_arena_stalker_3_1" ] = true,
  [ "bar_arena_stalker_3_2" ] = true,
  [ "bar_arena_stalker_4_1" ] = true,
  [ "bar_arena_stalker_4_2" ] = true,
  [ "bar_arena_stalker_4_3" ] = true,
  [ "bar_arena_stalker_4_4" ] = true,
  [ "bar_arena_stalker_5_1" ] = true,
  [ "bar_arena_stalker_5_2" ] = true,
  [ "bar_arena_stalker_6_1" ] = true,
  [ "bar_arena_stalker_6_2" ] = true,
  [ "bar_arena_stalker_6_3" ] = true,
  [ "bar_arena_stalker_6_4" ] = true,
  [ "bar_arena_stalker_6_5" ] = true,
  [ "bar_arena_stalker_6_6" ] = true,
  [ "bar_arena_stalker_7" ] = true,
  [ "bar_arena_stalker_8_1" ] = true,
  [ "bar_arena_stalker_8_2" ] = true,
  [ "bar_arena_stalker_8_3" ] = true,
  [ "bar_arena_stalker_8_4" ] = true,
  [ "mil_Svoboda_specnaz" ] = true,
  [ "mil_Svoboda_engineer" ] = true,
  [ "mil_Svoboda_regular" ] = true,
  [ "mil_Svoboda_sniper" ] = true,
  [ "mil_Svoboda_stukach" ] = true,
  [ "mil_Svoboda_zoneguard" ] = true,
  [ "mil_Svoboda_bodyguard" ] = true,
  [ "mil_Svoboda_leader" ] = true,
  [ "mil_Svoboda_trader" ] = true,
  [ "mil_Svoboda_master_Max" ] = true,
  [ "mil_Svoboda_master" ] = true,
  [ "mil_Svoboda_cook" ] = true,
  [ "mil_Svoboda_blockpost_leader" ] = true,
  [ "mil_Svoboda_master_Ugrumiy" ] = true,
  [ "mil_Dolg_specnaz" ] = true,
  [ "mil_Dolg_specnaz_silence" ] = true,
  [ "mil_Dolg_specnaz_cherep" ] = true,
  [ "mil_Killer_informator" ] = true,
  [ "mil_Killer_specnaz" ] = true,
  [ "mil_killer_sniper" ] = true,
  [ "mil_killer_master" ] = true,
  [ "mil_Stalker_master" ] = true,
  [ "mil_Stalker_veteran" ] = true,
  [ "mil_Svoboda_zombi_stalker" ] = true,
  [ "mil_Monolit_regular" ] = true,
  [ "mil_Monolit_master" ] = true,
  [ "bar_stalker_white_novice" ] = true,
  [ "bar_stalker_brown_novice" ] = true,
  [ "bar_stalker_general" ] = true,
  [ "bar_stalker_dolg" ] = true,
  [ "bar_stalker_bandit" ] = true,
  [ "bar_stalker_killer" ] = true,
  [ "bar_stalker_guard" ] = true,
  [ "bar_bar_osvedomitel" ] = true,
  [ "bar_bar_hunter" ] = true,
  [ "bar_bar_drunk_dolg" ] = true,
  [ "bar_bar_lisiy" ] = true,
  [ "bar_psih" ] = true,
  [ "bar_arena_manager" ] = true,
  [ "bar_arena_guard" ] = true,
  [ "bar_arena_savage" ] = true,
  [ "bar_dolg_leader" ] = true,
  [ "bar_dolg_petrenko" ] = true,
  [ "bar_dolg_ivancov" ] = true,
  [ "bar_dolg_guard_commander" ] = true,
  [ "bar_zastava_commander" ] = true,
  [ "bar_ecolog_professor" ] = true,
  [ "bar_svoboda_attack_commander" ] = true,
  [ "bar_killer_ambush_tiran" ] = true,
  [ "bar_crazy_veterans_lucky" ] = true,
  [ "bar_crazy_veterans" ] = true,
  [ "bar_stalker_freeman" ] = true,
  [ "bar_dolg_regular" ] = true,
  [ "bar_dolg_sniper" ] = true,
  [ "bar_dolg_veteran" ] = true,
  [ "bar_dolg_master" ] = true,
  [ "bar_stalker_novice" ] = true,
  [ "bar_stalker_general" ] = true,
  [ "bar_stalker_veteran" ] = true,
  [ "bar_ecolog_guard" ] = true,
  [ "bar_killer_regular" ] = true,
  [ "bar_killer_sniper" ] = true,
  [ "bar_killer_sniper_on_enter" ] = true,
  [ "bar_killer_rpg" ] = true,
  [ "bar_killer_specnaz" ] = true,
  [ "val_bandit_borov" ] = true,
  [ "val_bandit_bodyguard" ] = true,
  [ "val_bandit_novice" ] = true,
  [ "val_bandit_general" ] = true,
  [ "val_bandit_veteran" ] = true,
  [ "val_watchtower_bandit_guard" ] = true,
  [ "val_watchtower_bandit_sniper" ] = true,
  [ "val_dolg_regular" ] = true,
  [ "val_escort_halfdead" ] = true,
  [ "val_escort_nap1" ] = true,
  [ "val_escort_captive" ] = true,
  [ "val_monolith_regular" ] = true,
  [ "val_soldier_regular" ] = true,
  [ "val_soldier_specnaz" ] = true,
  [ "val_stalker_novice" ] = true,
  [ "val_stalker_general" ] = true,
  [ "dar_stalker_explorer" ] = true,
  [ "dar_corpse" ] = true,
  [ "dar_corpse_kalugin" ] = true,
  [ "dar_military_scout" ] = true,
  [ "aes_Monolit_rpg" ] = true,
  [ "aes_Monolit_specnaz" ] = true,
  [ "aes_Monolit_specnaz_rg6" ] = true,
  [ "aes_Monolit_sniper" ] = true,
  [ "aes_Monolit_sniper_gauss" ] = true,
  [ "aes_Monolit_master" ] = true,
  [ "aes_Soldier_commander" ] = true,
  [ "aes_Soldier_military" ] = true,
  [ "aes_Soldier_specnaz" ] = true,
  [ "aes_Soldier_specnaz_aes" ] = true,
  [ "aes_Soldier_sniper" ] = true,
  [ "aes_x" ] = true,
  [ "pri_monolith_ambush" ] = true,
  [ "pri_monolith_ambush_specnaz" ] = true,
  [ "pri_monolith_ambush_exo" ] = true,
  [ "pri_monolith_regular" ] = true,
  [ "pri_monolith_specnaz" ] = true,
  [ "pri_monolith_exo" ] = true,
  [ "pri_monolith_leader" ] = true,
  [ "pri_followers_bomber" ] = true,
  [ "pri_followers_leader" ] = true,
  [ "pri_followers_stalker" ] = true,
  [ "pri_soldier_suicide" ] = true,
  [ "pri_zombied_suicide" ] = true,
  [ "pri_zombied_veteran" ] = true,
  [ "pri_zombied" ] = true,
  [ "rad_monolit_bunker" ] = true,
  [ "rad_monolit_sniper" ] = true,
  [ "rad_monolit_specnaz" ] = true,
  [ "rad_monolit_master" ] = true,
  [ "rad_monolit_rpg" ] = true,
  [ "rad_zombied" ] = true,
  [ "rad_zombied_veteran" ] = true,
  [ "rad_stalker_master" ] = true,
  [ "rad_soldier_specnaz" ] = true,
  [ "rad_Svoboda_master" ] = true,
  [ "rad_dolg_master" ] = true,
  [ "rad_ecolog" ] = true,
  [ "sar_monolith_specnaz" ] = true,
  [ "sar_monolith_exo" ] = true,
  [ "sar_monolith_commander" ] = true,
  [ "sar2_monolith_regular" ] = true,
  [ "sar2_monolith_specnaz" ] = true,
  [ "sar2_monolith_exo" ] = true,
  [ "sar2_monolith_specnaz2" ] = true,
  [ "sar_monolith_exo_crystal" ] = true,
  [ "yan_ecolog_help" ] = true,
  [ "yan_Semenov" ] = true,
  [ "yan_ecolog_vasilyev" ] = true,
  [ "yan_ghost" ] = true,
  [ "yan_ecolog" ] = true,
  [ "yan_zombied" ] = true,
  [ "yan_zombied_veteran" ] = true,
  [ "yan_zombied_ambush" ] = true,
  [ "yan_zombied_master" ] = true,
  [ "yan_zombied_dolg" ] = true,
  [ "yan_fresh_Zombied" ] = true
}

function change_rank_2()
	local sobj = is_stalker( sobj )
	if sobj and sobj:alive() and sobj:rank()~=0 then
      local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
      if is_tbl_npc then
		sobj:set_rank(upgrade_exp*lvl+math.random(1,1000))
		end
	end
end

function is_stalker( sobj )
  return sobj:clsid() == clsid.script_stalker
end

 

Как мне понимается, то sobj - вообще сталкер.

Если сталкер, если он живой и если его ранк равен нулю тогда

стол, там всякие проверки, дать ранг от 1 до 1000.

Это так понимаю этот скрипт я, а вот игра его понимает вот так

Спойлер

FATAL ERROR
 
[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : .\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to call field 'change_rank2' (a table value)
 

stack trace:

Еще, да, скрипт висит на нетспавне, нормально ему там будет? 

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

76561198152189716.png

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


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

Без нее скрипт вылетает с логом предмет не может быть создан, так как уже создан

оригинальный вылетает? Не замечал такой проблемы. Проверку на визуал там не сделать?

24 минуты назад, ian98 сказал:

Sobj.rank взял из трго же скрипта из ai addiction

там это используется по-другому. Как обращение к таблице и в нет-пакетах, как переменная self.rank, но не применяется непосредственно к объекту (опять же, в паке для оригинала)

24 минуты назад, ian98 сказал:

лог вылета line 73 a nil value

раз указана строчка - должно быть и название скрипта, который вылетает. Скриптов с 73 строчкой много. Больше лога выкладывайте

 

24 минуты назад, ian98 сказал:

можно выдавать скриптом ранг и репутацию?

можно

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

В беге за рассветом приближаешь свой закат

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


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

vader_33 может и сделать, но там такой скрипт, что мне никогда не разобраться. Очень большой и совершенно непонятный. Да, и скорее, в будущем, потихоньку буду отказываться от него. Слишком с ним много вылетов, причем я его не менял, просто туда много очень визуалов всунул(около 200) и раздал каждому нпс по 4 броника с разными пробами: броня 1 ранга - 100, 2 - 40, 3 - 25, 4 - 5., т.е каждый нпс в игре 100% менял визуал, а то и по несколько раз + там реализована '''раскачка'' нпс, что-то вроде Нпс с броней первого ранга имеет ранг новичок-опытный, ну и т.д до мастера. Думал на легке визуалы замиксовать, причем все визуалы тоже из оригинала и вообще были запакованы, пришлось распаковать, чтобы продублировать их по 4 раза каждый. После чего всплыли другие проблемы, уже совершенно непонятные, игра просто крашилась с логом error with visual и я ничего не мог поделать, ничего понять не мог. Лишь со временем обнаружилось, что сюжетные нпс, когда меняют визуал через этот скрипт, либо вообще не выходят из оффлайна, либо выходят частично(как пример бандиты на свалке, которые находились в онлайне только пока был жив бес и при его смерти просто исчезали или сталкеры и вояки на агропроме, или может еще где-то), либо выходят полностью калеками и ломают игру ужасными вылетами стоит им только дать хит или убить. в общем, сплошное расстройство, блин, и большая трагедия.

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

76561198152189716.png

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


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

function change_rank_2()

local sobj = is_stalker( sobj )

sobj не может из неоткуда взяться. Если вам скажут порезать яблоко, его же должны откуда-то взять, не материализуется просто так перед носом. Надо либо в "function change_rank_2()"  передавать объект "function change_rank_2(sobj)" либо перебором искать. Переборы такие - если сталкер в онлайне, то так

for k, v in pairs (db.storage) do
      local obj = level.object_by_id(k)

Если не в онлайне - так:

for a=1,65535 do
          local obj = alife():object(a)

44 минуты назад, ian98 сказал:

его ранк равен нулю тогда

~=0 - это не равен 0. Равен будет ==

45 минут назад, ian98 сказал:

bind_stalker.script:30: attempt to call field 'change_rank2' (a table value)
 

что в этой строчке в бинд сталкере?

 


Дополнено 2 минуты спустя
52 минуты назад, ian98 сказал:

local sobj = is_stalker( sobj )

is_stalker( sobj ) - это проверка, она вернет или true или false. К нему не получится применить sobj:alive() and sobj:rank()~=0, это не объект


В беге за рассветом приближаешь свой закат

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


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

vader_33 там просто вызов change_rank2.change_rank2()

9 минут назад, vader_33 сказал:

for a=1,65535 do
          local obj = alife():object(a)

и так пробовал. Так было в скрипте на рандомную выдачу предмета. Вот тогда у меня был лог уже, что нулевое значение. 

 

9 минут назад, vader_33 сказал:

~=0 - это не равен 0. Равен будет ==

А я думал это проверка, что ранг нулево, как с проверкой на предметы в инвентаре у гг. Там также было ~=. Ну и == я тоже много раз замечал. 


Дополнено 2 минуты спустя
function change_rank_2()
  for a = 1, 65534, 1 do
    local sobj = alife():object( a )
    if sobj and is_stalker( sobj ) and sobj:alive() and sobj:rank()==0 then
      local is_tbl_npc = npc_tbl[ sobj:name() ] or npc_tbl[ sobj:profile_name() ]
      if is_tbl_npc then
		sobj:set_rank(upgrade_exp*lvl+math.random(1,1000))
		end
	end
end

function is_stalker( sobj )
  return sobj:clsid() == clsid.script_stalker
end

а так? даже тестить нет смысла)? Я просто, вроде, уже так пытался. Ничего не выходило. Да, так точно нет смысла.

Спойлер

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : .\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...ow of chernobyl\gamedata\scripts\bind_stalker.script:30: attempt to index global 'change_rank2' (a nil value)
 

 

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

76561198152189716.png

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


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

там просто вызов change_rank2.change_rank2()

скрипт так и называется change_rank2? Либо в самом скрипте синтаксическая ошибка


Дополнено 0 минут спустя
21 минуту назад, ian98 сказал:

function change_rank_2()

функция не закрыта end


Дополнено 5 минуты спустя
25 минут назад, ian98 сказал:

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

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


В беге за рассветом приближаешь свой закат

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


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

vader_33 Действительно, а ведь я её 100500 раз пропускал через чекер. На самом деле, у меня там на рабочем столе такой ахтунг, что проверить и совсем не тот скрипт


76561198152189716.png

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


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

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

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

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

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

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

Войти

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

Войти

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