Дата: Вторник, 26.02.2013, 14:44 | Сообщение # 303
Группа: Пользователи
Сообщений: 2
Статус: Offline
Всем привет!Хочу написать скрипт, а точнее подправить Headshot. Нужно, чтобы при выстреле в голову был звук "Headshot" и в углу экрана на 2 сек выводилась картика хэдшота(как в контре). Вот скрипт: ---------------------------------------------------------
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder....files/SASCM.rar) on 13.10.2007
{$VERSION 3.1.0027} {$CLEO .cs}
//-------------MAIN--------------- thread 'HEDSHOT' 0662: NOP "CREATED BY COIN-GOD" 0662: NOP "ORIGINALLY FOR BIOHAZARD ALERT" 0652: 0@ = integer_stat 130
Цель у меня - создать актёра-пустышку, который ничего не умеет, кроме заданных свойств (т.е., стоит на месте, не реагирует на угрозы оружием и транспортом, атакует игрока только, когда игрок атакует его, и то лишь в выгодных условиях). Но с этим кодом ничего толком не выходит. Актёры неправильно всё делают: то не поднимают руки вверх при нацеливании (как надо), то опять начинают поднимать; спасаются от взрывов и наездов машин; после нацеливания не только поднимают руки вверх, но и уходят на некоторое расстояние, после чего останавливаются; ходят смотреть на дохлых собратьев... В общем, не выходит человека-пустышки, как ни крути, а надо. Как это сделать? Буду очень рад помощи!
Добавлено (13.04.2013, 22:10) --------------------------------------------- Ура! Я смог решить проблему! Если у кого будет примерно так, как у меня, то надо создать Decision Maker только в одном экземпляре и отдельно от основного кода. У меня есть массив из 50 актёров, каждый из которых при создании получит этот DM. В общем, создавайте отдельно и не удаляйте из памяти. У меня теперь всё работает, вот, кстати, видео о том, что я делаю и для чего был этот вопрос.
Дата: Суббота, 20.04.2013, 16:36 | Сообщение # 310
Группа: Проверенные
Сообщений: 206
Статус: Offline
MISTER_GONWIK, нее, у меня не сборник читов и возможностей, как это было в Creator, это уже другая модификация, здесь узкое направление, да и всего по минимому, только нужное. SCRIPTER
Дата: Суббота, 08.06.2013, 17:58 | Сообщение # 312
Группа: Проверенные
Сообщений: 206
Статус: Offline
ILYALION, попробуй через опкод определения дистанции между точками определять, насколько далеко эти точки. Можно сделать цикл, который не закончится, пока не будет найдена действительно ближайшая дорога. Из-за 038B у меня никогда не вылетало, если этот опкод значится в scmlog, то попробуй обратить внимание на модели, может быть, ты неверно их написал (или что-то в этом роде, как я когда-то давно взял модель машины вместо актёра). SCRIPTER
Дата: Понедельник, 10.06.2013, 22:36 | Сообщение # 313
Группа: Проверенные
Сообщений: 325
Статус: Offline
Пишу скрипт подрыва поезда. Код:
Код
{$CLEO} 0000: while true wait 0 if not player.Defined($PLAYER_CHAR) then continue end if 0AE2: 6@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 6000.0 find_next 0 pass_wrecked 1 //IF and SET then repeat 0A97: 7@ = car 6@ struct 0A8E: 31@ = 7@ + 1424 // int 0A8D: 31@ = read_memory 31@ size 1 virtual_protect 0 if 31@ == 6 then if 8981: not train 6@ wrecked then 0407: store_coords_to 0@ 1@ 2@ from_car 6@ with_offset 17.0 2.5 3.0 0407: store_coords_to 3@ 4@ 5@ from_car 6@ with_offset -17.0 -2.5 -3.0 if and 0356:explosion_type -1 in_cube_cornerA 0@ 1@ 2@ cornerB 3@ 4@ 5@ 8356: not explosion_type 1 in_cube_cornerA 0@ 1@ 2@ cornerB 3@ 4@ 5@ 8356: not explosion_type 4 in_cube_cornerA 0@ 1@ 2@ cornerB 3@ 4@ 5@ 8356: not explosion_type 5 in_cube_cornerA 0@ 1@ 2@ cornerB 3@ 4@ 5@ 8356: not explosion_type 12 in_cube_cornerA 0@ 1@ 2@ cornerB 3@ 4@ 5@ then {while true 0A97: 7@ = car 6@ struct 7@ += 0x5D0 0A8D: 7@ = read_memory 7@ size 4 virtual_protect 0 if 7@ == 0 then break else 0085: 6@ = 7@ // (int) end end} 078A: 6@ = get_train 6@ carriage 0 handle 0A97: 6@ = car 6@ struct while 6@ <> 0 0A8E: 17@ = 6@ + 0x40 // int 0A8E: 18@ = 6@ + 0x5B9 // int 0A8D: 19@ = read_memory 17@ size 4 virtual_protect 0 0A8D: 20@ = read_memory 18@ size 1 virtual_protect 0 08C3: clear 19@ bit 2 08C3: clear 19@ bit 17 08BD: set 20@ bit 0 0A8C: write_memory 17@ size 4 value 19@ virtual_protect 0 0A8C: write_memory 18@ size 1 value 20@ virtual_protect 0 6@ += 0x5D4 0A8D: 6@ = read_memory 6@ size 4 virtual_protect 0 end end end end until 8AE2: not 6@ = random_vehicle_near_point 0.0 0.0 0.0 in_radius 6000.0 find_next 1 pass_wrecked 1 //IF and SET end end
После подрыва начинает проседать FPS, колёса у сошедшего с рельс поезда почему-то продолжают крутиться (Оживление компонентов моделей вагонов 1.1), при подрыве поезда с середины первые 2 вагона продолжают ехать по путям. В чём прикол?
Сообщение отредактировал ILYALION - Понедельник, 10.06.2013, 22:37
Дата: Вторник, 11.06.2013, 21:18 | Сообщение # 314
Группа: Проверенные
Сообщений: 206
Статус: Offline
ILYALION, тут, конечно, очень сложный для меня код, всё это из-за адресов памяти, которые я пока недолюбливаю, но посоветую в цикле while 6@ <> 0 поставить wait 0. У меня когда-то было нечто подобное, я перебирал примерно тысячу объектов в цикле, чтобы найти, повреждён ли он игроком, пытался так сделать разрушение (вышло, как всегда, убого, дом просто исчезал и всё, там оставался жуткий LOD). У меня не было мелкой задержки в for, и игра жутко тормозила, но после wait 0 это убралось. SCRIPTER
Дата: Вторник, 11.06.2013, 22:35 | Сообщение # 315
Группа: Проверенные
Сообщений: 325
Статус: Offline
Vital, дело не в этом цикле. Он прекрасно сносит поезд с рельсов. Я проверял, лагов нету. Проблема в том, что мне не удаётся получить первый вагон поезда.