You are not logged in.
Скажите. А вот как сделать, чтобы солдаты, которые стоят на полозьях вертолёта когда их убьёшь, падали бы на землю, как в некоторых миссиях. Я пробовал чисто сделать по образцу, но не вышло... Вот скрип мой. Всё работает, но дописать новые команды для дела не вышло. Что делать?
3@ = Actor.CreateAsDriver(Cop, #SWAT, 1@) 4@ = Actor.CreateAsPassenger(Cop, #SWAT, 1@, 0) 5@ = Actor.CreateAsPassenger(Cop, #SWAT, 1@, 1) 6@ = Actor.CreateAsPassenger(Cop, #SWAT, 1@, 2) Actor.GiveWeaponAndAmmo(5@, M4, 9999) Actor.WeaponAccuracy(5@) = 70 Actor.GiveWeaponAndAmmo(6@, M4, 9999) Actor.WeaponAccuracy(6@) = 70 054A: set_actor 3@ can_be_shot_in_a_car 1 054A: set_actor 4@ can_be_shot_in_a_car 1 054A: set_actor 5@ can_be_shot_in_a_car 1 054A: set_actor 6@ can_be_shot_in_a_car 1 Actor.SetMaxHealth(3@, 1500) Actor.SetMaxHealth(4@, 1500) 039E: set_actor 3@ locked 1 while_in_car Car.StorePos(1@, $TEMPVAR_FLOAT_1, $TEMPVAR_FLOAT_2, $TEMPVAR_FLOAT_3) 0362: remove_actor 5@ from_car_and_place_at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 0639: AS_actor 5@ rotate_to_actor $PLAYER_ACTOR 0465: remove_actor 5@ from_turret_mode 0856: set_actor 5@ enable_crouch 1 0464: put_actor 5@ into_turret_on_car 1@ at_car_offset -1.0 -0.3 0.0 position 1 shooting_angle_limit 180.0 with_weapon 31 Actor.Angle(5@) = 200.0 0362: remove_actor 6@ from_car_and_place_at $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 0465: remove_actor 6@ from_turret_mode 0856: set_actor 6@ enable_crouch 1 0464: put_actor 6@ into_turret_on_car 1@ at_car_offset 1.2 -0.3 0.0 position 3 shooting_angle_limit 180.0 with_weapon 31 0639: AS_actor 6@ rotate_to_actor $PLAYER_ACTOR 05E2: AS_actor 5@ kill_actor $PLAYER_ACTOR 0350: set_actor 5@ maintain_position_when_attacked 1 05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR 0350: set_actor 6@ maintain_position_when_attacked 1 Model.Destroy(#SWAT) Model.Destroy(#M4)
можно сделать проверку: если в врага здоровья <==10, то он выходит с вертолета:D
Offline
Подскажите как убрать увел. Хп до 250 после завершения мед.работ cj что бы например есть у меня сейв 100% проходняк и там 250 хп. Поставил скрипт а там огран токо 100(и полоска меньше)
Code:
0627: change_stat 24 to 100
Last edited by SHooZ (23-07-2013 20:46)
Offline
RitrS wrote:Подскажите как убрать увел. Хп до 250 после завершения мед.работ cj что бы например есть у меня сейв 100% проходняк и там 250 хп. Поставил скрипт а там огран токо 100(и полоска меньше)
Code:
0627: change_stat 24 to 100
Вот спасибо
Offline
кто знает, можно ли сделать так, чтобы автомобили двигались только по одной полосе, иными словами чтобы моя полоса была всегда пуста?
Offline
Я делал скрипт, который отключает движение по крайней правой полосе на шоссе: http://modsforgta.ucoz.ru/load/modifika … 4/2-1-0-64
Offline
спасибо, это как раз то, что нужно:)
Offline
Offline
А тебе какая разница? Будешь другой моделью управлять, бегать, прыгать, анимации проигрывать. Или тебе что-то другое нужно?
Offline
А тебе какая разница? Будешь другой моделью управлять, бегать, прыгать, анимации проигрывать. Или тебе что-то другое нужно?
Разница есть, но я уже решил проблему
Попробуй такой вариант, но не знаю, что получится:
008A: $player_actor = 0@ // (int) 0@ - переменная педа
Не, не катит)
Offline
Попробуй такой вариант, но не знаю, что получится:
008A: $player_actor = 0@ // (int) 0@ - переменная педа
Полный бред. Управление игроком никак не зависит от переменной, куда записан его хендл.
Можно посмотреть структуру CPlayer. Там в самом первом поле стоит указатель на структуру педа игрока. Можно попробовать подменить указатель.
UPD. Если подменить указатель - вылет. Видимо нужно ещё что-то где-то менять.
Last edited by Voron295 (31-07-2013 08:11)
Offline
где-то видел скрипт, в котором при нажатии 'F' активируется управление ближайшим педом.
Offline
Как получить хендл кара на который я целюсь?
Offline
1) Получить координаты прицеливания игрока + проверить, что он целится.
// Проверяем, что игрок прицеливается. 0A8D: 0@ = read_memory {CCamera > CCam > camMode } 0xB6F1A8 size 2 virtual_protect 0 if and 0@ <> 8 0@ <> 51 0@ <> 53 then continue end // Нам нужно построить линию прицеливания игрока. Начало этой линий - позиция кости правой руки + оффсет. // Конец - координаты прицеливания камеры. // Находим координаты начала линии прицеливания игрока (2@, 3@, 4@). 0A96: 0@ = actor $PLAYER_ACTOR struct 0A8E: 1@ = 0@ + 0x18 0A8D: 1@ = read_memory {CPed > rwObject} 1@ size 4 virtual_protect 0 0AA7: call_function {GetAnimHierarchyFromSkinClump} 0x734A40 num_params 1 pop 1 _clump 1@ _result 1@ if 1@ <> 0 // Если у скина есть иерархия - получаем координаты кости правой руки и добавляем к ним оффсет. then 0AA7: call_function {RpHAnimIDGetIndex} 0x7C51A0 num_params 2 pop 2 _boneId 24 _hierarchy 1@ _result 2@ 1@ += 8 0A8D: 1@ = read_memory {RpHAnimHierarchy > pMatrixArray} 1@ size 4 virtual_protect 0 2@ *= 0x40 005A: 1@ += 2@ 5@ = 1.0 6@ = 0.0 7@ = 0.0 0AA5: call {RwV3dTransformPoint} 0x7EDD60 num_params 3 pop 3 _transformMatrix 1@ _pointIn 5@v _pointOut 2@v else // Если у скина нет иерархии - получаем кординаты скина и добавляем к ним оффсет. 04C4: store_coords_to 2@ 3@ 4@ from_actor $PLAYER_ACTOR with_offset 0.0 1.5 0.7 end // Находим координаты конца линии прицеливания игрока (5@, 6@, 7@). 0AA6: call_method {CCamera::Find3rdPersonCamTargetVector} 0x514970 struct 0xB6F028 num_params 6 pop 0 _targetOut 5@v _cameraOut 8@v _z 4@ _y 3@ _x 2@ _range 15.0 // На выходе, получили - // 2@, 3@, 4@ - начало линии прицеливания игрока // 5@, 6@, 7@ - конец линии прицеливания игрока
2) Выполнить ProcessLineOfSight для этих координат.
0AA7: call_function {CWorld::ProcessLineOfSight} 0x56BA00 num_params 12 pop 12 0 0 0 0 _objects 1 _peds 1 _vehicles 1 _buildings 1 _pEntity 1@v _colPoint 20@ _end 5@v _start 2@v _result: 13@ if 08B7: test 13@ bit 0 then continue end
3) Проверить, что полученный Entity - автомобиль.
0A8E: 2@ = 1@ + 0x36 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0 0B10: 2@ = 2@ AND 7 if 2@ <> 2 then continue end
4) Перевести struct в handle.
0AEB: 0@ = car_struct 1@ handlep
Также к просмотру: скрипт Aimdrivers с исходным кодом.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Есть так называемые косяки с баскетболом и пулом в san andreas. При сохранении рядом с тригерами этих скриптов, далее такие скрипты больше не запускаются (после загрузки конечно). Проблема может решиться: надо обнулить глобальные переменные, но я не знаю как их обнулить так, чтобы перед сохранением обнулилось, а потом вернулось, если тригер включен, для текущей игры. Я смотрел скрипт supervars, а именно метод сохранения доп. переменных, но тут немного другая ситуация, так как надо обнулить перед сохранением.
I know everything and nothing...
Offline
каким опкодом заставить автомобиль двигаться с соблюдением правил (остановка на светофорах и т.п.)?
Offline
@mfisto - баги с пулом и баскетболом и пути их решения описаны тут
http://www.gtaforums.com/index.php?showtopic=159320
Offline
каким опкодом заставить автомобиль двигаться с соблюдением правил (остановка на светофорах и т.п.)?
В справке (раздел Статьи - Транспорт) есть такие опкоды:
Car.SetToNormalDriver($Car) - устанавливает машине нормального водителя. 00AE: unknown_set_car 71@ to_ignore_traffic_lights 2 - машина игнорирует светофоры(2-да).
Last edited by Den_spb (01-08-2013 23:51)
Offline
@SHooZ -
08F7: get_player $PLAYER_CHAR bodypart 0 textureCRC_to $9665 modelCRC_to $9666 0942: item_with_textureCRC $SELECTED_MENU_ITEM is_clothing
Offline