Приветик Люфт
Давай я в начале расскажу как что работает

Моя модификация сампа в основном заключается в том, что я его заставляю грузить мою dll. Эта dll правит память гта и сампа, чтобы изменить работу с архивом сампа и чтобы подправить остальные мелкие вещи (типа, снять лимит высоты транспорта). То есть, я могу на языке c/c++ править память и/или заменять функции своими. Так что использовать для патчей клео нет необходимости.
Чтобы работал мультиплеер я взял файлы main.scm/script.img из юнайтед мультиплеера, который был официально выпущен. Я там смог только переодеть сиджея и убрать неиспользуемый код подсчета стунд боносов (нитка там была, но она никем не запускалась). Я могу привести полный код, на котором сейчас живет гостон сервер:
| Код |
|---|
DEFINE OBJECTS 0
DEFINE MISSIONS 0
DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0
{$VERSION 3.1.0027}
//-------------MAIN---------------
thread 'MAIN'
fade 0 0
042C: set_total_missions_to 0
030D: set_max_progress 0
01F0: set_max_wanted_level_to 0
set_wb_check_to 0
00C0: set_current_time_hours_to 1 minutes_to 0
01EB: set_traffic_density_multiplier_to 0.0
03DE: set_pedestrians_density_multiplier_to 0.0
0@ = -542.58
1@ = -303.73
2@ = 14.75
04E4: unknown_refresh_game_renderer_at 0@ 1@
Camera.SetAtPos(0@, 1@, 2@)
062A: change_float_stat 165 to 999.0
062A: change_float_stat 163 to 999.0
062A: change_float_stat 229 to 999.0
062A: change_float_stat 223 to 999.0
062A: change_float_stat 230 to 999.0
0629: change_integer_stat 68 to 0
062A: change_float_stat 23 to 0.0
062A: change_float_stat 22 to 999.0
062A: change_float_stat 225 to 999.0
062A: change_float_stat 21 to 0.0
062A: change_float_stat 160 to 0.0
0629: change_integer_stat 181 to 4
0629: change_integer_stat 68 to 0
062A: change_float_stat 81 to 10.0
$PLAYER_CHAR = Player.Create(#NULL, 0@, 1@, 2@)
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
fade 0 0
09BA: show_entered_zone_name 0
wait 0
03B7: process_cutscene_only 0
0169: set_fade_color_RGB 0 0 0
03B7: process_cutscene_only 1
Actor.Angle($PLAYER_ACTOR) = 128.0
:MAIN_WAIT_PLAYER_DEFINE
if
Player.Defined($PLAYER_CHAR)
else_jump @MAIN_WAIT_PLAYER_DEFINE
set_weather 1
Player.SetClothes($PLAYER_CHAR, "HAWAIIWHT", "HAWAII", Torso)
Player.SetClothes($PLAYER_CHAR, "WORKTRGREY", "WORKTR", Legs)
Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
Player.SetClothes($PLAYER_CHAR, "GLASSES03DARK", "GLASSES03", 15)
Player.Build($PLAYER_CHAR)
select_interior 0
Player.CanMove($PLAYER_CHAR) = True
055E: set_player $PLAYER_CHAR max_health += 100
01B7: release_weather
016C: restart_if_wasted_at 83.4176 -118.5215 13.9375 angle 0.0 town_number 0
016D: restart_if_busted_at 61.6553 -59.3304 14.7291 angle 30.0 town_number 0
0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here
$DEFAULT_WAIT_TIME = 0
0703: set_tags_painted_percentage_at -3000.0 -3000.0 3000.0 3000.0 value 255
03E6: remove_text_box
01E8: create_forbidden_for_cars_cube_cornerA -100000.0 -100000.0 -100000.0 cornerB 100000.0 100000.0 100000.0
022B: create_forbidden_for_peds_cube_cornerA -100000.0 -100000.0 -100000.0 cornerB 100000.0 100000.0 100000.0
01EB: set_traffic_density_multiplier_to 0.0
03DE: set_pedestrians_density_multiplier_to 0.0
0581: enable_radar 0
wait 250
fade 1 250
:MAIN_LOOP
wait $DEFAULT_WAIT_TIME
jump @MAIN_LOOP
|
После компиляции сани билдером этого скрипта, получаются main.scm и script.img которые используются в мультиплеере. На самом деле сейчас хочется сделать парашют, а остальное не сильно важно.
Парашют является внешним скриптом (по типу клео

), но когда сани декомпилит main.scm, он также декомпилит все внешние скрипты из script.img, поэтому какой то исходник получить можно

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

В общем, я пока на скрипты забил. В сампе используется скрипт парашюта из самой гта, видимо без изменений. Так что просто нужен человек, который в scm понимает.
Самп в stream.ini меняет только размер памяти для игры (до 256 мегобайт). Твоя гипотеза, что на траву влияет файл серфейс, я думаю не правильная. Там только коэффициенты скольжения.
В общем, сейчас хочется работающий парашют и траву, без остального можно обойтись. С травой пока все гибло, с парашютом я повозился и пока завязал. Если надумаешь что делать, напиши мне личку тут или Анлиме, я тебе пришлю файлы мультиплеера в открытом виде.