Добавление новых графических опций — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Добавление новых графических опций — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Мы платим за лайки! - Оплата по требованию!)
(Отмена правки 14867, сделанной участником 77.37.156.23 (обс.))
Строка 1: Строка 1:
Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.  
+
Будем учиться добавлять новые опции в меню графики.
+
<br />Нам понадобятся файлы:
Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.  
+
<br />'''user.ltx'''
+
<br />'''ui_mm_opt_video.script'''
Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,  
+
<br />'''ui_mm_opt_video_adv.script'''
   
+
<br />'''ui_mm_opt.xml'''
достаточно просто зарегистрироваться на нашем сервисе. > www.like.zarplatt.ru <  
+
<br />'''ui_st_mm.xml'''
+
 
Вывод заработанных средств ежедневно в течении нескольких минут.
+
Для начала, идём в '''user.ltx''' и ищем там графические параметры.
 +
<pre>_preset Extreme
 +
ai_use_torch_dynamic_lights on
 +
unbindall
 +
bind left kLEFT
 +
bind right kRIGHT
 +
bind up kUP
 +
bind down kDOWN
 +
bind jump kSPACE
 +
bind crouch kLCONTROL
 +
bind accel kLSHIFT
 +
bind sprint_toggle kX
 +
bind forward kW
 +
bind back kS
 +
bind lstrafe kA
 +
bind rstrafe kD
 +
bind llookout kQ
 +
bind rlookout kE
 +
bind cam_zoom_in kADD
 +
bind cam_zoom_out kSUBTRACT
 +
bind torch kL
 +
bind night_vision kN
 +
bind wpn_1 k1
 +
bind wpn_2 k2
 +
bind wpn_3 k3
 +
bind wpn_4 k4
 +
bind wpn_5 k5
 +
bind wpn_6 k6
 +
bind artefact k7
 +
bind wpn_next kY
 +
bind wpn_fire mouse1
 +
bind wpn_zoom mouse2
 +
bind wpn_reload kR
 +
bind wpn_func kV
 +
bind wpn_firemode_prev k9
 +
bind wpn_firemode_next k0
 +
bind pause kPAUSE
 +
bind drop kG
 +
bind use kF
 +
bind scores kTAB
 +
bind chat kCOMMA
 +
bind chat_team kPERIOD
 +
bind screenshot kF12
 +
bind quit kESCAPE
 +
bind console kGRAVE
 +
bind inventory kI
 +
bind buy_menu kB
 +
bind skin_menu kO
 +
bind team_menu kU
 +
bind active_jobs kP
 +
bind map kM
 +
bind contacts kH
 +
bind vote_begin kF5
 +
bind vote kF6
 +
bind vote_yes kF7
 +
bind vote_no kF8
 +
bind speech_menu_0 kC
 +
bind speech_menu_1 kZ
 +
bind use_bandage kRBRACKET
 +
bind use_medkit kLBRACKET
 +
bind quick_save kF6
 +
bind quick_load kF7
 +
cam_inert 0.
 +
cam_slide_inert 0.25
 +
cl_cod_pickup_mode 1
 +
cl_dynamiccrosshair on
 +
g_always_run on
 +
g_autopickup on
 +
g_backrun on
 +
g_corpsenum 10
 +
g_eventdelay 0
 +
g_game_difficulty gd_novice
 +
hud_crosshair on
 +
hud_crosshair_dist off
 +
hud_info on
 +
hud_weapon on
 +
load_last_save all
 +
mm_mm_net_srv_dedicated off
 +
mm_net_con_publicserver off
 +
mm_net_con_spectator 20
 +
mm_net_con_spectator_on off
 +
mm_net_filter_empty on
 +
mm_net_filter_full on
 +
mm_net_filter_listen on
 +
mm_net_filter_pass on
 +
mm_net_filter_wo_ff on
 +
mm_net_filter_wo_pass on
 +
mm_net_srv_gamemode st_deathmatch
 +
mm_net_srv_maxplayers 32
 +
mm_net_srv_name MICROSOF-80B663
 +
mm_net_srv_reinforcement_type 1
 +
mm_net_weather_rateofchange 1.
 +
mouse_invert off
 +
mouse_sens 0.12
 +
net_cl_icurvesize 0
 +
net_cl_icurvetype 0
 +
net_cl_interpolation 0.
 +
net_cl_log_data off
 +
net_dbg_dump_export_obj 0
 +
net_dbg_dump_import_obj 0
 +
net_dbg_dump_update_read 0
 +
net_dbg_dump_update_write 0
 +
net_dedicated_sleep 5
 +
net_sv_gpmode 0
 +
net_sv_log_data off
 +
net_sv_pending_lim 3
 +
net_sv_update_rate 30
 +
ph_frequency 100.00000
 +
ph_iterations 38
 +
r1_dlights on
 +
r1_dlights_clip 75.
 +
r1_glows_per_frame 16
 +
r1_lmodel_lerp 0.1
 +
r1_pps_u 0.
 +
r1_pps_v 0.
 +
r1_ssa_lod_a 64.
 +
r1_ssa_lod_b 48.
 +
r1_tf_mipbias 0.
 +
r2_aa off
 +
r2_aa_break 0.800000,0.500000,0.000000
 +
r2_aa_kernel 0.5
 +
r2_aa_weight 0.250000,0.250000,0.000000
 +
r2_allow_r1_lights off
 +
r2_gi off
 +
r2_gi_clip 0.001
 +
r2_gi_depth 1
 +
r2_gi_photons 16
 +
r2_gi_refl 0.9
 +
r2_gloss_factor 1.5
 +
r2_ls_bloom_fast off
 +
r2_ls_bloom_kernel_b 0.7
 +
r2_ls_bloom_kernel_g 3.
 +
r2_ls_bloom_kernel_scale 0.7
 +
r2_ls_bloom_speed 100.
 +
r2_ls_bloom_threshold 0.001
 +
r2_ls_depth_bias -0.0003
 +
r2_ls_depth_scale 1.00001
 +
r2_ls_dsm_kernel 0.7
 +
r2_ls_psm_kernel 0.7
 +
r2_ls_squality 1.
 +
r2_ls_ssm_kernel 0.7
 +
r2_mblur 0.
 +
r2_parallax_h 0.02
 +
r2_slight_fade 0.3333
 +
r2_ssa_lod_a 64.
 +
r2_ssa_lod_b 48.
 +
r2_sun on
 +
r2_sun_depth_far_bias -0.00001
 +
r2_sun_depth_far_scale 1.
 +
r2_sun_depth_near_bias 0.00001
 +
r2_sun_depth_near_scale 1.
 +
r2_sun_details off
 +
r2_sun_focus on
 +
r2_sun_lumscale 1.
 +
r2_sun_lumscale_amb 0.5
 +
r2_sun_lumscale_hemi 1.
 +
r2_sun_near 12.
 +
r2_sun_near_border 0.75
 +
r2_sun_tsm on
 +
r2_sun_tsm_bias -0.01
 +
r2_sun_tsm_proj 0.3
 +
r2_tf_mipbias 0.
 +
r2_tonemap on
 +
r2_tonemap_adaptation 1.
 +
r2_tonemap_amount 0.7
 +
r2_tonemap_lowlum 0.0001
 +
r2_tonemap_middlegray 0.6
 +
r2_wait_sleep 0
 +
r2_zfill off
 +
r2_zfill_depth 0.5
 +
r2em 2.2
 +
r__detail_density 0.2
 +
r__geometry_lod 1.
 +
r__supersample 2
 +
r__tf_aniso 16
 +
renderer renderer_r2
 +
rs_c_brightness 1.
 +
rs_c_contrast 1.
 +
rs_c_gamma 1.
 +
rs_fullscreen on
 +
rs_refresh_60hz on
 +
rs_stats off
 +
rs_v_sync off
 +
rs_vis_distance 1.
 +
snd_acceleration on
 +
snd_cache_size 16
 +
snd_efx on
 +
snd_targets 24
 +
snd_volume_eff 1.
 +
snd_volume_music 1.
 +
sv_anomalies_enabled 1
 +
sv_anomalies_length 3
 +
sv_artefact_respawn_delta 30
 +
sv_artefact_spawn_force 0
 +
sv_artefact_stay_time 3
 +
sv_artefacts_count 10
 +
sv_auto_team_balance 0
 +
sv_auto_team_swap 1
 +
sv_bearercantsprint 1
 +
sv_client_reconnect_time 60
 +
sv_console_update_rate 1
 +
sv_dedicated_server_update_rate 100
 +
sv_dmgblockindicator 1
 +
sv_dmgblocktime 0
 +
sv_forcerespawn 0
 +
sv_fraglimit 10
 +
sv_friendly_indicators 0
 +
sv_friendly_names 0
 +
sv_friendlyfire 1.
 +
sv_hail_to_winner_time 7
 +
sv_max_ping_limit 2000
 +
sv_pda_hunt 1
 +
sv_reinforcement_time 0
 +
sv_remove_corpse 1
 +
sv_remove_weapon 1
 +
sv_returnplayers 1
 +
sv_rpoint_freeze_time 0
 +
sv_shieldedbases 1
 +
sv_spectr_firsteye 1
 +
sv_spectr_freefly 0
 +
sv_spectr_freelook 1
 +
sv_spectr_lookat 1
 +
sv_spectr_teamcamera 1
 +
sv_statistic_collect 1
 +
sv_statistic_save_auto 0
 +
sv_teamkill_limit 3
 +
sv_teamkill_punish 1
 +
sv_timelimit 0
 +
sv_vote_enabled 255
 +
sv_vote_participants 0
 +
sv_vote_quota 0.51
 +
sv_vote_time 1.
 +
sv_warm_up 0
 +
texture_lod 0
 +
vid_mode 1280x1024
 +
</pre>
 +
<br />Это мой полный.
 +
<br />Возмём к примеру графический параметр '''r2_gi'''
 +
<br />Префикс r2 означает что он будет работать только на полном динамическом освещении.
 +
<br />Далее идём в файл '''ui_mm_opt_video_adv.script
 +
'''
 +
<lua>class "opt_video_adv" (CUIWindow)
 +
 
 +
function opt_video_adv:__init() super()
 +
end
 +
 
 +
function opt_video_adv:__finalize()
 +
end
 +
 
 +
function only_2_mode(ctrl, _id)
 +
local bEnabled = _id==2
 +
ctrl:Enable (bEnabled)
 +
end
 +
 
 +
function only_12_mode(ctrl, _id)
 +
local bEnabled = _id==1 or _id==2
 +
ctrl:Enable (bEnabled)
 +
end
 +
 
 +
function opt_video_adv:InitControls(x, y, xml, handler)
 +
local ctl
 +
self:Init (x,y, 738, 416)
 +
self:SetAutoDelete (true)
 +
 +
self.bk = xml:InitFrame ("frame_videoadv", self)
 +
self.scroll_v = xml:InitScrollView ("video_adv:scroll_v", self)
 +
 
 +
local _st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_vis_dist", _st)
 +
xml:InitTrackBar ("video_adv:track_vis_dist", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_geometry_lod", _st)
 +
xml:InitTrackBar ("video_adv:track_geometry_lod", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_detail_density", _st)
 +
xml:InitTrackBar ("video_adv:track_detail_density", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_texture_lod", _st)
 +
xml:InitTrackBar ("video_adv:track_texture_lod", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_aniso", _st)
 +
xml:InitTrackBar ("video_adv:track_aniso", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_ssample", _st)
 +
xml:InitTrackBar ("video_adv:track_ssample", _st)
 +
 
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_r2_sun", _st)
 +
ctl = xml:InitCheck ("video_adv:check_r2_sun", _st)
 +
handler.m_preconditions[ctl] = only_2_mode
 +
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_r2_sun_details", _st)
 +
ctl = xml:InitCheck ("video_adv:check_r2_sun_details", _st)
 +
handler.m_preconditions[ctl] = only_2_mode
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_light_distance", _st)
 +
ctl = xml:InitTrackBar ("video_adv:track_light_distance", _st)
 +
handler.m_preconditions[ctl] = only_12_mode
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_npc_torch", _st)
 +
xml:InitCheck ("video_adv:check_npc_torch", _st)
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_particles_distance", _st)
 +
ctl = xml:InitTrackBar ("video_adv:track_particles_distance", _st)
 +
handler.m_preconditions[ctl] = only_12_mode
 +
 
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_vsync", _st)
 +
xml:InitCheck ("video_adv:check_vsync", _st)
 +
 +
_st = xml:InitStatic ("video_adv:templ_item", self.scroll_v)
 +
xml:InitStatic ("video_adv:cap_60hz", _st)
 +
xml:InitCheck ("video_adv:check_60hz", _st)
 +
 
 +
btn = xml:Init3tButton ("video_adv:btn_to_simply", self)
 +
handler:Register (btn, "btn_simply_graphic")
 +
end
 +
</lua>
 +
<br />Как нам хорошо видно, тут выписаны функции всех параметров в видео опциях игры. Обратите внимание, что существует два вида опции. Ползунок и кнопка. Ползунок используется для опций, где необходимо числовое вычисление. А кнопка, где функция работает
 +
 
 +
<br />Копируем, вставляем с новым именем перед концом скрипта.
 +
 
 +
 
 +
<lua><br /> _st = xml:InitStatic
 +
<br /> ("video_adv:templ_item", self.scroll_v)
 +
<br /> xml:InitStatic
 +
<br /> ("video_adv:cap_r2gi", _st)
 +
<br /> xml:InitCheck
 +
<br /> ("video_adv:check_r2gi", _st)</lua>
 +
 
 +
 
 +
 
 +
 
 +
 
 +
Переписываем вот так и вставляем перед
 +
<lua> btn = xml:Init3tButton ("video_adv:btn_to_simply", self) </lua>
 +
 
 +
Сохраняем и закрываем.
 +
<br /> Идём в''' ui_mm_opt.xml'''  
 +
 
 +
<br /> Вписываем в любое место каркас
 +
<xml><cap_r2gi x="20" y="0" width="143" height="21">
 +
<text font="letterica16" r="215" g="195" b="170">ui_mm_r2gi</text>
 +
</cap_r2gi>
 +
<check_r2gi x="194" y="0" width="30" height="21">
 +
<options_item entry="r2_gi" group="mm_opt_video_adv"/>
 +
</check_r2gi></xml>
 +
<br /> Разберём подробно
 +
 
 +
<br /> '''<cap_r2gi x="20" y="0" width="143" height="21">'''
 +
<br /> Название нашей кнопки, и кординаты её расположения
 +
<br /> '''*вторая строчка*'''
 +
<br /> Тут всё просто. Шрифт, и URL на текст
 +
<br /> '''<check_r2gi x="194" y="0" width="30" height="21">'''
 +
<br /> Плохо знаю зачем нужна, но всегда нужно заполнять. Связана с проверкой
 +
<br /> '''<options_item entry="r2_gi" group="mm_opt_video_adv"/>'''
 +
<br /> А вот тут всё очень интересно. Первое, указан изменяемый параметр(из user.ltx) и группа(класс) скрипта, в котором записана обрабатывающая функция
 +
<br /> Вот и всё. Теперь идём в '''ui_st_mm.xml'''
 +
<xml><string id="ui_mm_r2gi">
 +
<text>Продать все</text>
 +
</string></xml>
 +
<br /> Записываем в самый конец эту тему, и всё. Функция добавлена.
 +
[[Категория:Скрипты]]

Версия 21:25, 9 февраля 2017

Будем учиться добавлять новые опции в меню графики.
Нам понадобятся файлы:
user.ltx
ui_mm_opt_video.script
ui_mm_opt_video_adv.script
ui_mm_opt.xml
ui_st_mm.xml

Для начала, идём в user.ltx и ищем там графические параметры.

_preset Extreme
ai_use_torch_dynamic_lights on
unbindall
bind left kLEFT
bind right kRIGHT
bind up kUP
bind down kDOWN
bind jump kSPACE
bind crouch kLCONTROL
bind accel kLSHIFT
bind sprint_toggle kX
bind forward kW
bind back kS
bind lstrafe kA
bind rstrafe kD
bind llookout kQ
bind rlookout kE
bind cam_zoom_in kADD
bind cam_zoom_out kSUBTRACT
bind torch kL
bind night_vision kN
bind wpn_1 k1
bind wpn_2 k2
bind wpn_3 k3
bind wpn_4 k4
bind wpn_5 k5
bind wpn_6 k6
bind artefact k7
bind wpn_next kY
bind wpn_fire mouse1
bind wpn_zoom mouse2
bind wpn_reload kR
bind wpn_func kV
bind wpn_firemode_prev k9
bind wpn_firemode_next k0
bind pause kPAUSE
bind drop kG
bind use kF
bind scores kTAB
bind chat kCOMMA
bind chat_team kPERIOD
bind screenshot kF12
bind quit kESCAPE
bind console kGRAVE
bind inventory kI
bind buy_menu kB
bind skin_menu kO
bind team_menu kU
bind active_jobs kP
bind map kM
bind contacts kH
bind vote_begin kF5
bind vote kF6
bind vote_yes kF7
bind vote_no kF8
bind speech_menu_0 kC
bind speech_menu_1 kZ
bind use_bandage kRBRACKET
bind use_medkit kLBRACKET
bind quick_save kF6
bind quick_load kF7
cam_inert 0.
cam_slide_inert 0.25
cl_cod_pickup_mode 1
cl_dynamiccrosshair on
g_always_run on
g_autopickup on
g_backrun on
g_corpsenum 10
g_eventdelay 0
g_game_difficulty gd_novice
hud_crosshair on
hud_crosshair_dist off
hud_info on
hud_weapon on
load_last_save all
mm_mm_net_srv_dedicated off
mm_net_con_publicserver off
mm_net_con_spectator 20
mm_net_con_spectator_on off
mm_net_filter_empty on
mm_net_filter_full on
mm_net_filter_listen on
mm_net_filter_pass on
mm_net_filter_wo_ff on
mm_net_filter_wo_pass on
mm_net_srv_gamemode st_deathmatch
mm_net_srv_maxplayers 32
mm_net_srv_name MICROSOF-80B663
mm_net_srv_reinforcement_type 1
mm_net_weather_rateofchange 1.
mouse_invert off
mouse_sens 0.12
net_cl_icurvesize 0
net_cl_icurvetype 0
net_cl_interpolation 0.
net_cl_log_data off
net_dbg_dump_export_obj 0
net_dbg_dump_import_obj 0
net_dbg_dump_update_read 0
net_dbg_dump_update_write 0
net_dedicated_sleep 5
net_sv_gpmode 0
net_sv_log_data off
net_sv_pending_lim 3
net_sv_update_rate 30
ph_frequency 100.00000
ph_iterations 38
r1_dlights on
r1_dlights_clip 75.
r1_glows_per_frame 16
r1_lmodel_lerp 0.1
r1_pps_u 0.
r1_pps_v 0.
r1_ssa_lod_a 64.
r1_ssa_lod_b 48.
r1_tf_mipbias 0.
r2_aa off
r2_aa_break 0.800000,0.500000,0.000000
r2_aa_kernel 0.5
r2_aa_weight 0.250000,0.250000,0.000000
r2_allow_r1_lights off
r2_gi off
r2_gi_clip 0.001
r2_gi_depth 1
r2_gi_photons 16
r2_gi_refl 0.9
r2_gloss_factor 1.5
r2_ls_bloom_fast off
r2_ls_bloom_kernel_b 0.7
r2_ls_bloom_kernel_g 3.
r2_ls_bloom_kernel_scale 0.7
r2_ls_bloom_speed 100.
r2_ls_bloom_threshold 0.001
r2_ls_depth_bias -0.0003
r2_ls_depth_scale 1.00001
r2_ls_dsm_kernel 0.7
r2_ls_psm_kernel 0.7
r2_ls_squality 1.
r2_ls_ssm_kernel 0.7
r2_mblur 0.
r2_parallax_h 0.02
r2_slight_fade 0.3333
r2_ssa_lod_a 64.
r2_ssa_lod_b 48.
r2_sun on
r2_sun_depth_far_bias -0.00001
r2_sun_depth_far_scale 1.
r2_sun_depth_near_bias 0.00001
r2_sun_depth_near_scale 1.
r2_sun_details off
r2_sun_focus on
r2_sun_lumscale 1.
r2_sun_lumscale_amb 0.5
r2_sun_lumscale_hemi 1.
r2_sun_near 12.
r2_sun_near_border 0.75
r2_sun_tsm on
r2_sun_tsm_bias -0.01
r2_sun_tsm_proj 0.3
r2_tf_mipbias 0.
r2_tonemap on
r2_tonemap_adaptation 1.
r2_tonemap_amount 0.7
r2_tonemap_lowlum 0.0001
r2_tonemap_middlegray 0.6
r2_wait_sleep 0
r2_zfill off
r2_zfill_depth 0.5
r2em 2.2
r__detail_density 0.2
r__geometry_lod 1.
r__supersample 2
r__tf_aniso 16
renderer renderer_r2
rs_c_brightness 1.
rs_c_contrast 1.
rs_c_gamma 1.
rs_fullscreen on
rs_refresh_60hz on
rs_stats off
rs_v_sync off
rs_vis_distance 1.
snd_acceleration on
snd_cache_size 16
snd_efx on
snd_targets 24
snd_volume_eff 1.
snd_volume_music 1.
sv_anomalies_enabled 1
sv_anomalies_length 3
sv_artefact_respawn_delta 30
sv_artefact_spawn_force 0
sv_artefact_stay_time 3
sv_artefacts_count 10
sv_auto_team_balance 0
sv_auto_team_swap 1
sv_bearercantsprint 1
sv_client_reconnect_time 60
sv_console_update_rate 1
sv_dedicated_server_update_rate 100
sv_dmgblockindicator 1
sv_dmgblocktime 0
sv_forcerespawn 0
sv_fraglimit 10
sv_friendly_indicators 0
sv_friendly_names 0
sv_friendlyfire 1.
sv_hail_to_winner_time 7
sv_max_ping_limit 2000
sv_pda_hunt 1
sv_reinforcement_time 0
sv_remove_corpse 1
sv_remove_weapon 1
sv_returnplayers 1
sv_rpoint_freeze_time 0
sv_shieldedbases 1
sv_spectr_firsteye 1
sv_spectr_freefly 0
sv_spectr_freelook 1
sv_spectr_lookat 1
sv_spectr_teamcamera 1
sv_statistic_collect 1
sv_statistic_save_auto 0
sv_teamkill_limit 3
sv_teamkill_punish 1
sv_timelimit 0
sv_vote_enabled 255
sv_vote_participants 0
sv_vote_quota 0.51
sv_vote_time 1.
sv_warm_up 0
texture_lod 0
vid_mode 1280x1024


Это мой полный.
Возмём к примеру графический параметр r2_gi
Префикс r2 означает что он будет работать только на полном динамическом освещении.
Далее идём в файл ui_mm_opt_video_adv.script

class "opt_video_adv" (CUIWindow)
 
function opt_video_adv:__init() super()
end
 
function opt_video_adv:__finalize()
end
 
function only_2_mode(ctrl, _id)
	local bEnabled	= _id==2
	ctrl:Enable		(bEnabled)
end
 
function only_12_mode(ctrl, _id)
	local bEnabled	= _id==1 or _id==2
	ctrl:Enable		(bEnabled)
end
 
function opt_video_adv:InitControls(x, y, xml, handler)
	local ctl
	self:Init									(x,y, 738, 416)
	self:SetAutoDelete							(true)
 
	self.bk			= xml:InitFrame				("frame_videoadv", self)
	self.scroll_v	= xml:InitScrollView		("video_adv:scroll_v", self)
 
	local _st		= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_vis_dist",				_st)
	xml:InitTrackBar							("video_adv:track_vis_dist",			_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_geometry_lod",			_st)
	xml:InitTrackBar							("video_adv:track_geometry_lod",		_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_detail_density",		_st)
	xml:InitTrackBar							("video_adv:track_detail_density",		_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_texture_lod",			_st)
	xml:InitTrackBar							("video_adv:track_texture_lod",			_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_aniso",					_st)
	xml:InitTrackBar							("video_adv:track_aniso",				_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_ssample",				_st)
	xml:InitTrackBar							("video_adv:track_ssample",				_st)
 
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_r2_sun",				_st)
	ctl			= xml:InitCheck					("video_adv:check_r2_sun",				_st)
	handler.m_preconditions[ctl]		= only_2_mode
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_r2_sun_details",		_st)
	ctl			= xml:InitCheck		("video_adv:check_r2_sun_details",		_st)
	handler.m_preconditions[ctl]		= only_2_mode
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_light_distance",		_st)
	ctl				= xml:InitTrackBar			("video_adv:track_light_distance",		_st)
	handler.m_preconditions[ctl]		= only_12_mode
 
	_st											= xml:InitStatic						("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_npc_torch",				_st)
	xml:InitCheck								("video_adv:check_npc_torch",			_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_particles_distance",	_st)
	ctl				= xml:InitTrackBar			("video_adv:track_particles_distance",	_st)
	handler.m_preconditions[ctl]		= only_12_mode
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_vsync",					_st)
	xml:InitCheck								("video_adv:check_vsync",				_st)
 
	_st				= xml:InitStatic			("video_adv:templ_item",				self.scroll_v)
	xml:InitStatic								("video_adv:cap_60hz",					_st)
	xml:InitCheck								("video_adv:check_60hz",				_st)
 
	btn		= xml:Init3tButton					("video_adv:btn_to_simply",	self)	
	handler:Register							(btn, "btn_simply_graphic")	
end
 


Как нам хорошо видно, тут выписаны функции всех параметров в видео опциях игры. Обратите внимание, что существует два вида опции. Ползунок и кнопка. Ползунок используется для опций, где необходимо числовое вычисление. А кнопка, где функция работает


Копируем, вставляем с новым именем перед концом скрипта.


<br /> _st				= xml:InitStatic
<br /> ("video_adv:templ_item",				self.scroll_v)
<br /> xml:InitStatic
<br />	("video_adv:cap_r2gi",					_st)
<br /> xml:InitCheck
<br /> ("video_adv:check_r2gi",				_st)



Переписываем вот так и вставляем перед

	btn		= xml:Init3tButton					("video_adv:btn_to_simply",	self)

Сохраняем и закрываем.
Идём в ui_mm_opt.xml


Вписываем в любое место каркас

<cap_r2gi x="20" y="0" width="143" height="21">
		<text font="letterica16" r="215" g="195" b="170">ui_mm_r2gi</text>
		</cap_r2gi>
		<check_r2gi x="194" y="0" width="30" height="21">
			<options_item entry="r2_gi" group="mm_opt_video_adv"/>
		</check_r2gi>


Разберём подробно


<cap_r2gi x="20" y="0" width="143" height="21">
Название нашей кнопки, и кординаты её расположения
*вторая строчка*
Тут всё просто. Шрифт, и URL на текст
<check_r2gi x="194" y="0" width="30" height="21">
Плохо знаю зачем нужна, но всегда нужно заполнять. Связана с проверкой
<options_item entry="r2_gi" group="mm_opt_video_adv"/>
А вот тут всё очень интересно. Первое, указан изменяемый параметр(из user.ltx) и группа(класс) скрипта, в котором записана обрабатывающая функция
Вот и всё. Теперь идём в ui_st_mm.xml

<string id="ui_mm_r2gi">
		<text>Продать все</text>
	</string>


Записываем в самый конец эту тему, и всё. Функция добавлена.

Другие места
LANGUAGE