_Призрак_ 11 Опубликовано 5 Октября 2010 Ну давай Ролан с тобой подумаем вот над каким вопросом. Все знаю что в ЗП кол-во артов на поясе записано в двигателе. Я говорил с колмогором по этому поводу и даже копался в движке но ничего не нашел кроме строку belt и дальше 2 пробела (00 00). Собственно вопрос - где та цифра 5 которая жестоко ограничивает читерство? Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 8 Октября 2010 (изменено) Ты где-то не вставил собственно параметры ножа. Объясняю: Когда ты вставляешь во 2 слот оружие то оно появляется по заданным координатам в инвентаре. Допустим пусть это будут координаты wpn2 в файле ui\actor_menu.xml А ты сделал визуальный слот 0. Но ты не прописал какие координаты брать для ножа! То есть нужно найти в дллке где получаются координаты оружия и добавить туда координаты для ножа! Поэтому и [error]Argument 0 : (ничего) а аргумент 2 равен [error]Argument 1 : ui\actor_menu.xml З.Ы. Удивлен что тема дает толк Изменено 8 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 15 Октября 2010 (изменено) Я смог декомпилировать ту функцию что правил Колмогор в своей дллке в который увеличено плотность травы и еще что-то. Поэтому вопрос к тем кто знает графику игры. Нету ли в этих параметрах чего нибудь вкусненького? r__geometry_lod r__detail_density -это плотность травы, так? r__tf_aniso r1_ssa_lod_a r1_ssa_lod_b r1_lmodel_lerp r1_tf_mipbias r1_dlights r1_dlights_clip r1_pps_u r1_pps_v r1_dlights_clip r1_glows_per_frame r2_ssa_lod_a r2_ssa_lod_b r2_tf_mipbias r2em r2_tonemap r2_tonemap_middlegray r2_tonemap_adaptation r2_tonemap_lowlum r2_tonemap_amount r2_ls_bloom_kernel_scale r2_ls_bloom_kernel_g r2_ls_bloom_kernel_b r2_ls_bloom_threshold r2_ls_bloom_speed r2_ls_bloom_fast r2_ls_dsm_kernel r2_ls_psm_kernel r2_ls_ssm_kernel r2_ls_squality r2_zfill r2_zfill_depth r2_allow_r1_lights r2_gloss_factor r2_sun r2_sun_details r2_sun_focus r2_sun_tsm r2_sun_tsm_proj r2_sun_tsm_bias r2_sun_near r2_sun_near_border r2_sun_depth_far_scale r2_sun_depth_far_bias r2_sun_depth_near_scale r2_sun_depth_near_bias r2_sun_lumscale r2_sun_lumscale_hemi r2_sun_lumscale_amb r2_aa r2_aa_kernel r2_mblur r2_gi r2_gi_clip r2_gi_depth r2_gi_photons r2_gi_refl r2_wait_sleep r2_ls_depth_scale r2_ls_depth_bias r2_parallax_h r2_slight_fade r2_aa_break r2_aa_weight Кстати если кто нить хочет посмотреть - вот как эта функция выглядит в оригинале int __cdecl sub_10001610() { int v4; // [sp+50Ch] [bp-18h]@133 int v5; // [sp+50Ch] [bp-18h]@135 int v6; // [sp+510h] [bp-14h]@133 int v7; // [sp+510h] [bp-14h]@135 int v8; // [sp+514h] [bp-10h]@133 int v9; // [sp+514h] [bp-10h]@135 int v10; // [sp+518h] [bp-Ch]@133 int v11; // [sp+518h] [bp-Ch]@135 int v12; // [sp+51Ch] [bp-8h]@133 int v13; // [sp+51Ch] [bp-8h]@135 int v14; // [sp+520h] [bp-4h]@133 int v15; // [sp+520h] [bp-4h]@135 if ( !(dword_10063320 & 1) ) { dword_10063320 |= 1u; CCC_Token__CCC_Token(&dword_10062CD4, "_preset", &unk_10053144, &off_10053148); dword_10062CD4 = (int)&off_10048C80; atexit(sub_10047D50); } CConsole__AddCommand(Console, &dword_10062CD4); if ( !(dword_10063320 & 2) ) { dword_10063320 |= 2u; dword_10062CEC = (int)"screenshot"; byte_10062CF0 = 1; LOBYTE(word_10062CF1) = 1; word_10062CF1 = (unsigned __int8)word_10062CF1; dword_10062CE8 = (int)&off_10048C68; atexit(sub_10047D40); } CConsole__AddCommand(Console, &dword_10062CE8); if ( !(dword_10063320 & 4) ) { dword_10063320 |= 4u; CCC_Float__CCC_Float(&unk_10063308, "r__geometry_lod", &flt_100531B4, 0.1000000014901161, 1.200000047683716); atexit(sub_10047D30); } CConsole__AddCommand(Console, &unk_10063308); if ( !(dword_10063320 & 8) ) { dword_10063320 |= 8u; CCC_Float__CCC_Float(&unk_100632F0, "r__detail_density", "ЪЩЩ>", 0.01999999955296516, 0.6000000238418579);// hh // atexit(sub_10047D20); } CConsole__AddCommand(Console, &unk_100632F0); if ( !(dword_10063320 & 0x10) ) { dword_10063320 |= 0x10u; CCC_Integer__CCC_Integer(&dword_10062D0C, "r__tf_aniso", &unk_100531C4, 1, 16); dword_10062D0C = (int)&off_10048C20; atexit(sub_10047D10); } CConsole__AddCommand(Console, &dword_10062D0C); if ( !(dword_10063320 & 0x20) ) { dword_10063320 |= 0x20u; CCC_Float__CCC_Float(&unk_100632D8, "r1_ssa_lod_a", &dword_100531C8, 16.0, LODWORD(flt_100531C0)); atexit(sub_10047D00); } CConsole__AddCommand(Console, &unk_100632D8); if ( !(dword_10063320 & 0x40) ) { dword_10063320 |= 0x40u; CCC_Float__CCC_Float(&unk_100632C0, "r1_ssa_lod_b", &dword_100531CC, 16.0, LODWORD(flt_100531B0)); atexit(sub_10047CF0); } CConsole__AddCommand(Console, &unk_100632C0); if ( !(dword_10063320 & 0x80) ) { dword_10063320 |= 0x80u; CCC_Float__CCC_Float(&unk_100632A8, "r1_lmodel_lerp", "=¦¦=", 0.0, 0.3330000042915344); atexit(sub_10047CE0); } CConsole__AddCommand(Console, &unk_100632A8); if ( !(dword_10063320 & 0x100) ) { dword_10063320 |= 0x100u; CCC_Float__CCC_Float(&dword_10063290, "r1_tf_mipbias", &unk_10054210, -3.0, 0.5); dword_10063290 = (int)&off_10048C38; atexit(sub_10047CD0); } CConsole__AddCommand(Console, &dword_10063290); if ( !(dword_10063320 & 0x200) ) { dword_10063320 |= 0x200u; CCC_Mask__CCC_Mask(&unk_1006327C, "r1_dlights", &byte_100531D0, 1); atexit(sub_10047CC0); } CConsole__AddCommand(Console, &unk_1006327C); if ( !(dword_10063320 & 0x400) ) { dword_10063320 |= 0x400u; CCC_Float__CCC_Float(&unk_10063264, "r1_dlights_clip", &asc_100531D4[4], *(_DWORD *)&aSs[4], 150.0); atexit(sub_10047CB0); } CConsole__AddCommand(Console, &unk_10063264); if ( !(dword_10063320 & 0x800) ) { dword_10063320 |= 0x800u; CCC_Float__CCC_Float(&unk_1006324C, "r1_pps_u", &dword_10054214, -1.0, 1.0); atexit(sub_10047CA0); } CConsole__AddCommand(Console, &unk_1006324C); if ( !(dword_10063320 & 0x1000) ) { dword_10063320 |= 0x1000u; CCC_Float__CCC_Float(&unk_10063234, "r1_pps_v", &dword_10054218, -1.0, 1.0); atexit(sub_10047C90); } CConsole__AddCommand(Console, &unk_10063234); if ( !(dword_10063320 & 0x2000) ) { dword_10063320 |= 0x2000u; CCC_Float__CCC_Float(&unk_1006321C, "r1_dlights_clip", &asc_100531D4[4], *(_DWORD *)&aSs[4], 150.0); atexit(sub_10047C80); } CConsole__AddCommand(Console, &unk_1006321C); if ( !(dword_10063320 & 0x4000) ) { dword_10063320 |= 0x4000u; CCC_Integer__CCC_Integer(&unk_10063204, "r1_glows_per_frame", &dword_100531DC, 2, 32); atexit(sub_10047C70); } CConsole__AddCommand(Console, &unk_10063204); if ( !(dword_10063320 & 0x8000) ) { dword_10063320 |= 0x8000u; CCC_Float__CCC_Float(&unk_100631EC, "r2_ssa_lod_a", &unk_100531E0, 16.0, LODWORD(flt_100531C0)); atexit(sub_10047C60); } CConsole__AddCommand(Console, &unk_100631EC); if ( !(dword_10063320 & 0x10000) ) { dword_10063320 |= 0x10000u; CCC_Float__CCC_Float(&unk_100631D4, "r2_ssa_lod_b", &unk_100531E4, 32.0, LODWORD(flt_100531B0)); atexit(sub_10047C50); } CConsole__AddCommand(Console, &unk_100631D4); if ( !(dword_10063320 & 0x20000) ) { dword_10063320 |= 0x20000u; CCC_Float__CCC_Float(&dword_100631BC, "r2_tf_mipbias", &unk_1005421C, -0.5, 0.5); dword_100631BC = (int)&off_10048C38; atexit(sub_10047C40); } CConsole__AddCommand(Console, &dword_100631BC); if ( !(dword_10063320 & 0x40000) ) { dword_10063320 |= 0x40000u; CCC_Float__CCC_Float(&dword_10062CF4, "r2em", &dword_10054224, 0.0, 4.0); __asm { xorps xmm0, xmm0 } dword_10062CF4 = (int)&off_10048C50; __asm { movss dword_10054224, xmm0 } atexit(sub_10047C30); } CConsole__AddCommand(Console, &dword_10062CF4); if ( !(dword_10063320 & 0x80000) ) { dword_10063320 |= 0x80000u; CCC_Mask__CCC_Mask(&unk_100631A8, "r2_tonemap", &dword_100531E8, 16); atexit(sub_10047C20); } CConsole__AddCommand(Console, &unk_100631A8); if ( !(dword_10063320 & 0x100000) ) { dword_10063320 |= 0x100000u; CCC_Float__CCC_Float(&unk_10063190, "r2_tonemap_middlegray", &aG[4], 0.0, 2.0); atexit(sub_10047C10); } CConsole__AddCommand(Console, &unk_10063190); if ( !(dword_10063320 & 0x200000) ) { dword_10063320 |= 0x200000u; CCC_Float__CCC_Float(&unk_10063178, "r2_tonemap_adaptation", &aA_0[2], 0.009999999776482582, *(_DWORD *)&aSs[4]); atexit(sub_10047C00); } CConsole__AddCommand(Console, &unk_10063178); if ( !(dword_10063320 & 0x400000) ) { dword_10063320 |= 0x400000u; CCC_Float__CCC_Float(&unk_10063160, "r2_tonemap_lowlum", &unk_100531F8, LODWORD(flt_100531A4), 1.0); atexit(sub_10047BF0); } CConsole__AddCommand(Console, &unk_10063160); if ( !(dword_10063320 & 0x800000) ) { dword_10063320 |= 0x800000u; CCC_Float__CCC_Float(&unk_10063148, "r2_tonemap_amount", &unk_100531FC, 0.0, 1.0); atexit(sub_10047BE0); } CConsole__AddCommand(Console, &unk_10063148); if ( !(dword_10063320 & 0x1000000) ) { dword_10063320 |= 0x1000000u; CCC_Float__CCC_Float(&unk_10063130, "r2_ls_bloom_kernel_scale", &aA_1[2], 0.5, 2.0); atexit(sub_10047BD0); } CConsole__AddCommand(Console, &unk_10063130); if ( !(dword_10063320 & 0x2000000) ) { dword_10063320 |= 0x2000000u; CCC_Float__CCC_Float(&unk_10063118, "r2_ls_bloom_kernel_g", "33S@333?", 1.0, 7.0); atexit(sub_10047BC0); } CConsole__AddCommand(Console, &unk_10063118); if ( !(dword_10063320 & 0x4000000) ) { dword_10063320 |= 0x4000000u; CCC_Float__CCC_Float(&unk_10063100, "r2_ls_bloom_kernel_b", &a33s[4], 0.009999999776482582, 1.0); atexit(sub_10047BB0); } CConsole__AddCommand(Console, &unk_10063100); if ( !(dword_10063320 & 0x8000000) ) { dword_10063320 |= 0x8000000u; CCC_Float__CCC_Float(&unk_100630E8, "r2_ls_bloom_threshold", "ЪЩЩ>=¦L?=¦¦=", 0.0, 1.0); atexit(sub_10047BA0); } CConsole__AddCommand(Console, &unk_100630E8); if ( !(dword_10063320 & 0x10000000) ) { dword_10063320 |= 0x10000000u; CCC_Float__CCC_Float(&unk_100630D0, "r2_ls_bloom_speed", &a33s[8], 0.0, 100.0); atexit(sub_10047B90); } CConsole__AddCommand(Console, &unk_100630D0); if ( !(dword_10063320 & 0x20000000) ) { dword_10063320 |= 0x20000000u; CCC_Mask__CCC_Mask(&unk_100630BC, "r2_ls_bloom_fast", &dword_100531E8, 128); atexit(sub_10047B80); } CConsole__AddCommand(Console, &unk_100630BC); if ( !(dword_10063320 & 0x40000000) ) { dword_10063320 |= 0x40000000u; CCC_Float__CCC_Float(&unk_100630A4, "r2_ls_dsm_kernel", &unk_10053210, 0.1000000014901161, 3.0); atexit(sub_10047B70); } CConsole__AddCommand(Console, &unk_100630A4); if ( !(dword_10063320 & 0x80000000) ) { dword_10063320 |= 0x80000000u; CCC_Float__CCC_Float(&unk_1006308C, "r2_ls_psm_kernel", &unk_10053214, 0.1000000014901161, 3.0); atexit(sub_10047B60); } CConsole__AddCommand(Console, &unk_1006308C); if ( !(dword_10063088 & 1) ) { dword_10063088 |= 1u; CCC_Float__CCC_Float(&unk_10063070, "r2_ls_ssm_kernel", &unk_10053218, 0.1000000014901161, 3.0); atexit(sub_10047B50); } CConsole__AddCommand(Console, &unk_10063070); if ( !(dword_10063088 & 2) ) { dword_10063088 |= 2u; CCC_Float__CCC_Float(&unk_10063058, "r2_ls_squality", &unk_10053254, 0.5, 1.0); atexit(sub_10047B40); } CConsole__AddCommand(Console, &unk_10063058); if ( !(dword_10063088 & 4) ) { dword_10063088 |= 4u; CCC_Mask__CCC_Mask(&unk_10063044, "r2_zfill", &dword_100531E8, 512); atexit(sub_10047B30); } CConsole__AddCommand(Console, &unk_10063044); if ( !(dword_10063088 & 8) ) { dword_10063088 |= 8u; CCC_Float__CCC_Float(&unk_1006302C, "r2_zfill_depth", "=¦¦=", 0.001000000047497451, 0.5); atexit(sub_10047B20); } CConsole__AddCommand(Console, &unk_1006302C); if ( !(dword_10063088 & 0x10) ) { dword_10063088 |= 0x10u; CCC_Mask__CCC_Mask(&unk_10063018, "r2_allow_r1_lights", &dword_100531E8, 1024); atexit(sub_10047B10); } CConsole__AddCommand(Console, &unk_10063018); if ( !(dword_10063088 & 0x20) ) { dword_10063088 |= 0x20u; CCC_Float__CCC_Float(&unk_10063000, "r2_gloss_factor", &unk_10053294, 0.0, *(_DWORD *)&aSs[4]); atexit(sub_10047B00); } CConsole__AddCommand(Console, &unk_10063000); if ( !(dword_10063088 & 0x40) ) { dword_10063088 |= 0x40u; CCC_Mask__CCC_Mask(&unk_10062FEC, "r2_sun", &dword_100531E8, 1); atexit(sub_10047AF0); } CConsole__AddCommand(Console, &unk_10062FEC); if ( !(dword_10063088 & 0x80) ) { dword_10063088 |= 0x80u; CCC_Mask__CCC_Mask(&unk_10062FD8, "r2_sun_details", &dword_100531E8, 8); atexit(sub_10047AE0); } CConsole__AddCommand(Console, &unk_10062FD8); if ( !(dword_10063088 & 0x100) ) { dword_10063088 |= 0x100u; CCC_Mask__CCC_Mask(&unk_10062FC4, "r2_sun_focus", &dword_100531E8, 2); atexit(sub_10047AD0); } CConsole__AddCommand(Console, &unk_10062FC4); if ( !(dword_10063088 & 0x200) ) { dword_10063088 |= 0x200u; CCC_Mask__CCC_Mask(&unk_10062FB0, "r2_sun_tsm", &dword_100531E8, 4); atexit(sub_10047AC0); } CConsole__AddCommand(Console, &unk_10062FB0); if ( !(dword_10063088 & 0x400) ) { dword_10063088 |= 0x400u; CCC_Float__CCC_Float(&unk_10062F98, "r2_sun_tsm_proj", "ьQ8>=¦L-", 0.001000000047497451, 0.800000011920929); atexit(sub_10047AB0); } CConsole__AddCommand(Console, &unk_10062F98); if ( !(dword_10063088 & 0x800) ) { dword_10063088 |= 0x800u; CCC_Float__CCC_Float(&unk_10062F80, "r2_sun_tsm_bias", &aQ8L[4], -0.5, 0.5); atexit(sub_10047AA0); } CConsole__AddCommand(Console, &unk_10062F80); if ( !(dword_10063088 & 0x1000) ) { dword_10063088 |= 0x1000u; CCC_Float__CCC_Float(&unk_10062F68, "r2_sun_near", &aQ8L[8], 1.0, 50.0); atexit(sub_10047A90); } CConsole__AddCommand(Console, &unk_10062F68); if ( !(dword_10063088 & 0x2000) ) { dword_10063088 |= 0x2000u; CCC_Float__CCC_Float(&unk_10062F50, "r2_sun_near_border", &unk_10053264, 0.5, 1.0); atexit(sub_10047A80); } CConsole__AddCommand(Console, &unk_10062F50); if ( !(dword_10063088 & 0x4000) ) { dword_10063088 |= 0x4000u; CCC_Float__CCC_Float(&unk_10062F38, "r2_sun_depth_far_scale", &unk_10053268, 0.5, LODWORD(flt_1005319C)); atexit(sub_10047A70); } CConsole__AddCommand(Console, &unk_10062F38); if ( !(dword_10063088 & 0x8000) ) { dword_10063088 |= 0x8000u; CCC_Float__CCC_Float(&unk_10062F20, "r2_sun_depth_far_bias", &unk_10054220, -0.5, 0.5); atexit(sub_10047A60); } CConsole__AddCommand(Console, &unk_10062F20); if ( !(dword_10063088 & 0x10000) ) { dword_10063088 |= 0x10000u; CCC_Float__CCC_Float(&unk_10062F08, "r2_sun_depth_near_scale", &unk_1005326C, 0.5, LODWORD(flt_1005319C)); atexit(sub_10047A50); } CConsole__AddCommand(Console, &unk_10062F08); if ( !(dword_10063088 & 0x20000) ) { dword_10063088 |= 0x20000u; CCC_Float__CCC_Float(&unk_10062EF0, "r2_sun_depth_near_bias", "м+'¬", -0.5, 0.5); atexit(sub_10047A40); } CConsole__AddCommand(Console, &unk_10062EF0); if ( !(dword_10063088 & 0x40000) ) { dword_10063088 |= 0x40000u; CCC_Float__CCC_Float(&unk_10062ED8, "r2_sun_lumscale", &aM[4], -1.0, 3.0); atexit(sub_10047A30); } CConsole__AddCommand(Console, &unk_10062ED8); if ( !(dword_10063088 & 0x80000) ) { dword_10063088 |= 0x80000u; CCC_Float__CCC_Float(&unk_10062EC0, "r2_sun_lumscale_hemi", &aA_[2], 0.0, 3.0); atexit(sub_10047A20); } CConsole__AddCommand(Console, &unk_10062EC0); if ( !(dword_10063088 & 0x100000) ) { dword_10063088 |= 0x100000u; CCC_Float__CCC_Float(&unk_10062EA8, "r2_sun_lumscale_amb", &aA__0[2], 0.0, 3.0); atexit(sub_10047A10); } CConsole__AddCommand(Console, &unk_10062EA8); if ( !(dword_10063088 & 0x200000) ) { dword_10063088 |= 0x200000u; CCC_Mask__CCC_Mask(&unk_10062E94, "r2_aa", &dword_100531E8, 32); atexit(sub_10047A00); } CConsole__AddCommand(Console, &unk_10062E94); if ( !(dword_10063088 & 0x400000) ) { dword_10063088 |= 0x400000u; CCC_Float__CCC_Float(&unk_10062E7C, "r2_aa_kernel", &unk_10053238, 0.300000011920929, 0.699999988079071); atexit(sub_100479F0); } CConsole__AddCommand(Console, &unk_10062E7C); if ( !(dword_10063088 & 0x800000) ) { dword_10063088 |= 0x800000u; CCC_Float__CCC_Float(&unk_10062E64, "r2_mblur", &unk_1005323C, 0.0, 1.0); atexit(sub_100479E0); } CConsole__AddCommand(Console, &unk_10062E64); if ( !(dword_10063088 & 0x1000000) ) { dword_10063088 |= 0x1000000u; CCC_Mask__CCC_Mask(&unk_10062E50, "r2_gi", &dword_100531E8, 64); atexit(sub_100479D0); } CConsole__AddCommand(Console, &unk_10062E50); if ( !(dword_10063088 & 0x2000000) ) { dword_10063088 |= 0x2000000u; CCC_Float__CCC_Float(&unk_10062E38, "r2_gi_clip", &unk_1005329C, 0.000009999999747378752, 0.1000000014901161); atexit(sub_100479C0); } CConsole__AddCommand(Console, &unk_10062E38); if ( !(dword_10063088 & 0x4000000) ) { dword_10063088 |= 0x4000000u; CCC_Integer__CCC_Integer(&unk_10062E20, "r2_gi_depth", &unk_10053240, 1, 5); atexit(sub_100479B0); } CConsole__AddCommand(Console, &unk_10062E20); if ( !(dword_10063088 & 0x8000000) ) { dword_10063088 |= 0x8000000u; CCC_Integer__CCC_Integer(&unk_10062E08, "r2_gi_photons", &unk_10053244, 8, 256); atexit(sub_100479A0); } CConsole__AddCommand(Console, &unk_10062E08); if ( !(dword_10063088 & 0x10000000) ) { dword_10063088 |= 0x10000000u; CCC_Float__CCC_Float(&unk_10062DF0, "r2_gi_refl", "fff?T", 0.001000000047497451, 0.9900000095367432); atexit(sub_10047990); } CConsole__AddCommand(Console, &unk_10062DF0); if ( !(dword_10063088 & 0x20000000) ) { dword_10063088 |= 0x20000000u; CCC_Integer__CCC_Integer(&unk_10062DD8, "r2_wait_sleep", &unk_10054228, 0, 1); atexit(sub_10047980); } CConsole__AddCommand(Console, &unk_10062DD8); if ( !(dword_10063088 & 0x40000000) ) { dword_10063088 |= 0x40000000u; CCC_Float__CCC_Float(&unk_10062DC0, "r2_ls_depth_scale", &aFff_t[4], 0.5, LODWORD(flt_1005319C)); atexit(sub_10047970); } CConsole__AddCommand(Console, &unk_10062DC0); if ( !(dword_10063088 & 0x80000000) ) { dword_10063088 |= 0x80000000u; CCC_Float__CCC_Float(&unk_10062DA8, "r2_ls_depth_bias", &unk_10053250, -0.5, 0.5); atexit(sub_10047960); } CConsole__AddCommand(Console, &unk_10062DA8); if ( !(dword_10062DA4 & 1) ) { dword_10062DA4 |= 1u; CCC_Float__CCC_Float(&unk_10062D8C, "r2_parallax_h", "\n+г<", 0.0, 0.5); atexit(sub_10047950); } CConsole__AddCommand(Console, &unk_10062D8C); if ( !(dword_10062DA4 & 2) ) { dword_10062DA4 |= 2u; CCC_Float__CCC_Float(&unk_10062D74, "r2_slight_fade", &unk_10053290, 0.01999999955296516, 2.0); atexit(sub_10047940); } CConsole__AddCommand(Console, &unk_10062D74); __asm { xorps xmm0, xmm0 movss [esp+28h+var_C], xmm0 movss [esp+28h+var_8], xmm0 movss [esp+28h+var_4], xmm0 movss xmm0, ds:dword_10048E14 movss [esp+28h+var_18], xmm0 movss [esp+28h+var_14], xmm0 movss [esp+28h+var_10], xmm0 } if ( !(dword_10062DA4 & 4) ) { dword_10062DA4 |= 4u; CCC_Vector3__CCC_Vector3(&unk_10062D4C, "r2_aa_break", &aSsL_[4], v10, v12, v14, v4, v6, v8); atexit(sub_10047930); } CConsole__AddCommand(Console, &unk_10062D4C); __asm { xorps xmm0, xmm0 movss [esp+28h+var_C], xmm0 movss [esp+28h+var_8], xmm0 movss [esp+28h+var_4], xmm0 movss xmm0, ds:dword_10048E14 movss [esp+28h+var_18], xmm0 movss [esp+28h+var_14], xmm0 movss [esp+28h+var_10], xmm0 } if ( !(dword_10062DA4 & 8) ) { dword_10062DA4 |= 8u; CCC_Vector3__CCC_Vector3(&unk_10062D24, "r2_aa_weight", &unk_1005322C, v11, v13, v15, v5, v7, v9); atexit(sub_10047920); } return CConsole__AddCommand(Console, &unk_10062D24); } Большое спасибо Колмогору которого я 2 день мучаю своими дурацкими вопросами Серый Волк Я спросил у колмогора в чем может проблема твоего вылета. Вот что он ответил Kolmogor (23:58:44 14/10/2010) ну серый волк все строчки попереставлял, а в коде адреса не поменял - вот и вылетает Изменено 15 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 21 Октября 2010 (изменено) Министр - отсутствие знаний не повод складывать руки и ложится в гроб. Есть же небольшой шанс научится этому. Время есть, руки сильной кривотой не отличаются.... Я имел в виду такое: Я открыл в Айда рендер_р1. Нашел где упоминается r__detail_density. Это все находилось в такой функции: fld ds:flt_1004C63C or dword_10063320, 8 sub esp, 8 fstp [esp+30h+var_2C] mov ecx, offset unk_100632F0 fld ds:flt_1004C5C0 fstp [esp+30h+var_30] push offset aSs ; "ЪЩЩ>" push offset aR__detail_dens ; "r__detail_density" call ds:??0CCC_Float@@QAE@PBDPAMMM@Z ; CCC_Float::CCC_Float(char const *,float *,float,float) push offset sub_10047D20 ; void (__cdecl *)() call _atexit add esp, 4 Переведя ее я понял что fld ds:flt_1004C63C и fld ds:flt_1004C5C0 задает верхний и нижний параметр плотности травы. Теперь мне их нужно изменить. Жмем на flt_1004C63C и видим такое: .rdata:1004C63C flt_1004C63C dd 0.60000002 ; DATA XREF: sub_10001610+112r Ага, значит задается здесь. Но нам нужно это поменять. При открытии хекс вида мы видим что выделились цифры 9A 99 19 3F. Открыв интеловский документ я понял что тут нет ассамблеровских команд. Тогда возможно это и есть число которое мне нужно - 0.60000002. Но числа в 16-ичном формате пишутся так: 0x999999ef7. В дллке я вообще х - не видел поэтому и спрашиваю Или я где-то ошибся? Изменено 21 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 25 Октября 2010 (изменено) Тут вот появилась небольшая проблемка - хочу посоветоваться. Я смог отредактировать дллку. Делал так: 1. Открыл дллку через Айда 2. Нашел где встречается r__detail_density 3. Нашел строку fld ds:flt_1004F8B0 которая задает верхний параметр плотности травы 4. Шелкнув на нее 2 раза я переместился на строку .rdata:1004F8B0 flt_1004F8B0 dd 0.2 ; DATA XREF: sub_10001A40+12Br 5. Перешел в ХЕКС Виев 6. Нажал дата формат - Single Float 7. Нашел в той стоке значение 0.2 и поменял его на 0.22 8. Сохранил изменение в виде dif файла 9. При помощи программы bpatch соединил дллку и .диф 10. Открыл в айда измененную дллку - изменения произошли 11. Запустил и......... Трава пропала! Вообще! Хотя если ввести в консоли r__detail_density консоль скажет что данный параметр равен 0.22 Во всей дллке я поменял только вот какие строки: xrRender_R1.dll 0004F8B0: CD AE 0004F8B1: CC 47 0004F8B2: 4C 61 это из диф файла. читается так: оффсет, исходное число, изменение Совершенно не понимаю почему могла пропасть трава! Ни вылета, ничего. Айда говорит что изменения приняты Изменено 25 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 25 Октября 2010 r__detail_density является параметром плотности травы - параметр меняется если переместить ползунок в настройках или внести изменение в двиг. Вполне возможно что в ЗП этот параметр изменился. Попробуй изменить данный параметр в ЗП, вдруг результаты будут другие Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 26 Октября 2010 (изменено) "Data format" -> "Single Float (32 bit)" Находится в ХЕКС_ВИЕВ, правая кнопка мыши.... Добавлено через 122 мин.: Заметил одну интересную вещь. А именно: Изменения дллки колмогора по сравнению со стандартной: Рендер_р2: оффсет|У Колмогора|Оригинал|Зачем сделано 00001730|80|38|??? из-за этой правки теперь в функции не fld ds:flt_10064338 а fld ds:flt_10064380 - получается что берется совсем другая переменная??? Прошу помощи знающих людей. У меня 2 вопроса - прав ли я в своих выводах и почему правка значения параметра плотности травы приводит к ее пропаже? И может ли быть такое что этой переменной пользуется не одна, а несколько функций? Одна из которых работает не правильно при изменении параметра? Подтолкнуло меня на это айда: .rdata:10064338 flt_10064338 dd 0.2 ; [b]DATA XREF: sub_10001610+12Br[/b] .rdata:10064338 ; [b]sub_1000AE90+1E1r ...[/b] З.Ы. Колмогор - большое спасибо за выложенные исходники - буду разбирать обязательно З.Ы.Ы. Маландринус, колмогор - пожалуйста прокоментируйте мой пост - прав я или нет? З.Ы.Ы.Ы. РОЛАН - не думаю что ПЫС сейчас сидят на этом форуме и мы все уже нахлдимся под колпаком Изменено 27 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 27 Октября 2010 (изменено) Поздравьте меня! У меня получилось! Трава стоит на 0.07 Изменено 27 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 27 Октября 2010 Тутор напишу, сделаю адаптации под различные патчи/игры. Но попозже Добавлено через 30 мин.: А не подскажите на сколько установленна в сталкере дальность прорисовки травы? Лучше конечно точное значение (если у кого-нить получалось снять) Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 27 Октября 2010 (изменено) Инструкция по изменению плотности травы. Параметр меньше 0.02 не ставить - Колмогор писал что начинает лагать 1. Открываем айда 2. Открываем айда_виев 3. Теперь ищем что нам нужно найти. Нам сейчас нужно найти r__detail_density? Тогда жмем ctrl+t и вводим r__detail_density 4. Находим функцию и тщательно ее разбираем (я ее полностью разбирать не буду, а только укажу где задаются параметры: fld ds:flt_10064400 --нижнее ограничение равное 0.6 or dword_1007CACC, 8 sub esp, 8 fstp [esp+30h+var_2C] mov ecx, offset unk_1007CA9C fld ds:flt_10064380 --верхнее ограничение равное 0.2 fstp [esp+30h+var_30] push offset aSs ; "ЪЩЩ>" push offset aR__detail_dens ; "r__detail_density" call ds:??0CCC_Float@@QAE@PBDPAMMM@Z ; CCC_Float::CCC_Float(char const *,float *,float,float) push offset sub_1005E080 ; void (__cdecl *)() call _atexit add esp, 4 Если вы заметили, то что бы трава стала плотней нужно уменьшить параметр, а что-бы травы стало меньше нужно параметр увеличить 5. Нам нужно увеличить плотность травы: следовательно нужно изменить верхнее ограничение. Как это сделать? Есть 3 варианта: Первый и самый логичный вариант: изменить переменную которая задает. Но тут есть небольшой подвох на котором я попался. Этой переменной может пользоваться не одна функция, а несколько. И не ясно что вы можете сломать, поменяв одну циферку в переменной... Второй: взять другую уже существующую переменную. Хороший вариант которым я и воспользовался. Но и тут есть недочет - переменных в ддлке не так уж и много и можно просто не найти нужную Третий: создать переменную. Отличный вариант. Единственный минус - я не знаю как это сделать Я пошел по второму пути. Два раза шелкнув на ds:flt_10064380 айда отправила меня в дебри под названием .rdata. Там я нашел переменную которая называлась - flt_1006452C и которая имела значение 0.0720999 Вообще-то, как я понял, flt_1006452C - не является названием переменной. Это так сказать сборка из 2 показателей - (тип числа)_(оффсет) В нашем случае это число типа float которое находится в 1006452C. Ну чтож приступим к редактированию! 6. Отправляем в самое начало файла. Как? Сверху есть что-то типа статус бара - строка состоящая из синего,серого,черного цвета. Нажимаем там в любом месте мышкой и ведем влево до конца 7. Опять ищем r__detail_density. Находим в этой функции fld ds:flt_10064338. Дальше самое интересное. Жмем на ХЕКС_ВИЕВ и там у нас выделяются какие-то цифры. Это наше 10064338 только написано наоборот. Сравните: 38 43 06 10 10 06 43 38 Похоже, не правда? Начинаем редактировать. нам нужно поменять 4338 на 452C т.к. в этом и есть различие. Жмем правой кнопкой мыши на этих цифрах и выбираем пункт Edit. Меняем 38 43 на 2С 45. Дальше жмем где нибудь в коде. Это нужно сделать обязательно. После этого жмем правой кнопкой мыши и выбираем commit changes. Но айда не меняет исходный файл. В нашем случае мы можем только создать файл изменений. Делается это так - Файл - Produce file - Create DIF file. Назовем его test. DIF файл можно открыть при помощи блокнота и посмотреть что вы сделали. Теперь так сказать соединит этот файл и дллку. Это можно сделать при помощи bpatch. Качаем и смотрим и запускаем bpatch.cmd. Я думаю что вы сможете его изменить сами если нужно будет. Там все элементарно. Огромное спасибо Kolmogor'у и malandrinus'у. Если бы не они, я бы ничего не сделал. Спасибо вам еще раз Спасибо и Ролану с которым я очень много беседовал и тоже узнал много чего Кстати у меня вопрос. Как создать новую переменную? Колмогор сказал что либо найти пустое место, либо создать новый сектор. Пытаться найти пустое место опасно - оно может быть зарезервированно. А как сделать новый сектор? Изменено 27 Октября 2010 пользователем _Призрак_ 1 Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 28 Октября 2010 Попробуй нажать на F(для чисел) и 1 для перехода обратно в хекс Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 28 Октября 2010 Я пользуюсь скачанной с рутрекера IDA Pro Advanced 5.5 with Hex-Rays 1.1 Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 28 Октября 2010 (изменено) AK74 Тут смотря как сделать выброс. Дело в том что через двигатель можно сделать все что угодно - начиная от супер-пупер выброса и заканчивая просто передачей денег, ведь двигатель - это набор циферок. А скрипты могут тоже многое, но не всегда то что нужно. Поэтому используются обходные пути, которые тоже потребляют ресурсы. Поэтому если сравнивать падение FPS при выбросе в ЗП и в ТЧ - ЗП явно будет лидером. Но если сравнивать какую-то простую вещь - вывод 100 строк в лог - разница я думаю будет небольшая Кстати у меня получилось создать свой сегмент в дллке сталкера и сбросить туда нужные мне переменные. Скоро допишу мою статью Изменено 28 Октября 2010 пользователем _Призрак_ Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 29 Октября 2010 у меня вроде в инструкции висела ссылка на мой (точнее malandrinus'а bpatch) http://ifolder.ru/19981015 Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 31 Октября 2010 Добавление к моей инструкции. Иногда требуется создать новую переменную. Но как это сделать? Искать неиспользованное место в дллке? Опасно. Это место может быть зарезервировано. Что же делать? Есть выход - создать свой сектор, куда мы будем пихать свои данные Для создание нового сектора нам потребуется программка Stud PE. Колмогор и malandrinus рекомендовали PE tools, но к сожалению у меня при задании RAM памяти дллка больше не читалась. Итак: 1. Открываем Stud PE 2. file -> Open PE file -> выбираем нашу дллку 3. Выбираем вкладку Sections 4. Правой кнопкой мыши - New section 5. Выбираем имя секции (лучше не понтоваться и выбрать 4-5 значное имя без чисел) 6. Выбираем виртуал и рам сайз. С размером лучше не шаманить - для начала хватит 0000001 7. В селектион дата ставим fill section with NULL bytes и жмем add Теперь как работать с новой переменной. В айда в конце файла находим нашу секцию. Правой кнопкой мыши - Data В Хексе вводим любое число. Я ввел 04 02 01 3C Перемещаемся в айда_виев и видем что-то типа такого: .pmod:10086000 db 4 .pmod:10086001 db 2 .pmod:10086002 db 1 .pmod:10086003 db 3Ch ; < Для того что-бы айда поняла что это одно число жмем 2 раза d. Ну а дальше для красоты жмем Edit -> Operant type ->Number -> Floating point. Дальше ссылаемся на нашу переменную откуда нужно и все. Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 1 Ноября 2010 в опция выставить полный экран Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 1 Ноября 2010 Подскажите функцию которая вызывается из движка. Очень нужно Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 1 Ноября 2010 start_game_callback вызывается из alife.ltx start_game_callback = _G.start_game_callback ; on starting new game or loading saved one Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 1 Ноября 2010 Народ, я старался, Выкладывал тутор по правке травы а вы даже не удосужились его мельком просмотреть! Там описано как редактировать Freedom Поделиться этим сообщением Ссылка на сообщение
_Призрак_ 11 Опубликовано 2 Ноября 2010 Все в норме. Это просто адрес твоей переменной Freedom Поделиться этим сообщением Ссылка на сообщение