You are not logged in.
Как узнать хэндл педа, атакующего авто?
Offline
в папку к каждому ЕХЕ придётся класть дллки клео, аси и пр.
Не, я имел в виду что gta_sa.exe и gta_vc.exe будут в одной папке. В том и идея, чтобы запустить какой нибудь глобальный мод, не держа на винте несколько копий SA.
Вобщем сделал небольшое исследование в этом направлении, всё вроде как получилось. Такая связка:
работает, зима/лето регулируются наличием virtualimg.asi в корне SA, если нужен united - запуск через gta_un.exe
Единственное, United выдаёт чёрный экран при загрузке с cleo-скриптами, видимо какой-то из них конфликтует.
UPD. Так и есть, cleo-затычка решила проблему.
Last edited by Sergey81 (19-10-2010 15:14)
Offline
У меня такая ситуация. Надо выполнить проверку, что актёр падает с высоты. Анимацию проверить нельзя, потому что я ему присвоил другую анимацию и сохраняется во время падения.
Пробовал код 0819: 25@ = actor $PLAYER_ACTOR distance_from_ground – в мануале написано что он записывает в переменную 25@ расстояние между актёром и землёй. Далее проверял так 25@ > 2. Но проверка срабатывает всегда, даже если актёр на земле.
Есть ещё какие-то способы?
Offline
Offline
25@ > 2
Срабатывает всегда, потому что 25@ - float. Пиши
25@ > 2.0
Offline
25@ > 2Срабатывает всегда, потому что 25@ - float. Пиши
25@ > 2.0
Спасибо, вот это помогло.
Теперь ещё такой вопрос – как сделать чтоб анимация сохранялась даже если актёр мертв? Вот я актёру установил анимацию падения на спину, а когда использую команды убивающие его, он вскакивает и падает на живот.
Offline
Offline
Offline
Offline
Ну так M4_shoot это партикл выстрела, он даже не статичный. Я пробовал сделать модель лазера, потом аттачил её к гг, в этом способе только непонятно, как заставить эту модель всегда быть в координатах от оружия до того места, куда целимся. Но в mta судя по всему не через модель сделано.
Offline
Ну так M4_shoot это партикл выстрела, он даже не статичный.
Что значит "не статичный"? Если надо, чтобы луч существовал всё время, то следует создавать его постоянно (в цикле). Можно посмотреть опкод 06BC в ИДА и все сопутствующие функции - может удастся выдернуть только луч и изменить его цвет на красный.
Last edited by Den_spb (21-10-2010 20:46)
Offline
Ну так M4_shoot это партикл выстрела, он даже не статичный.
Что значит "не статичный"? Если надо, чтобы луч существовал всё время, то следует создавать его постоянно (в цикле). Можно посмотреть опкод 06BC в ИДА и все сопутствующие функции - может удастся выдернуть только луч и изменить его цвет на красный.
Ну использовал я этот опкод по нажатию кнопки, у меня получилось то же самое, если бы из оружия стрелять. Там же не цельный луч идёт от одной точки к другой, а несколько отрезков двигаются. + игрок реагирует на это действо, если встать на пути, жизни не отнимаются, но видно что пули эти идут в игрока.
Возможно в чистой игре не так, у меня bullet.asi стоит.
Offline
Лучше наверно через 04D5, как Ryosuke делал в accessory.cs. Там как раз и цвет красный будет. Я только не понял, как и куда цеплять этот самый луч, чтоб он шёл от оружия в точку прицеливания.
UPD. В виде модификации accessory.cs получилось как-то так:
Кстати, а перекрестие прицела через память можно отключить?
Last edited by Sergey81 (22-10-2010 09:46)
Offline
Лучше наверно через 04D5, как Ryosuke делал в accessory.cs. Там как раз и цвет красный будет.
Да, это проще будет.
Я только не понял, как и куда цеплять этот самый луч, чтоб он шёл от оружия в точку прицеливания
Луч ни к чему не цепляется, а создаётся в координатах - их надо вычислить через память.
Offline
0x726D2B - call createBulletTrail
0AC6: 0@ = label @CreateLaserParticle offset 0A8C: write_memory 0x726D2C size 4 value 0@ virtual_protect 1 :CreateLaserParticle hex { 06BC: create_M4_shoot_from 0@ 1@ 2@ target 3@ 4@ 5@ energy 6@ } end
:DisableCrosshair 0A8C: write_memory 0x58FBBF size 5 value 0x90 virtual_protect 1
I was goning to do this, but I don't have the required ASM skills. Planned to grab the parameters passed to :CreateLaserParticle and create either another thread (passing the params) or a corona, if possible.
Last edited by Deji (22-10-2010 17:38)
Offline
@Deji - :DisableCrosshair works fine, thanks for address.
With accessory.cs, to prevent crash, code is:
0A8C: write_memory 0x58FBBC size 4 value 0x903475C0 virtual_protect 1 0A8C: write_memory 0x58FBC0 size 4 value 0x90909090 virtual_protect 1
Last edited by Sergey81 (22-10-2010 19:26)
Offline
Ah, well I saw the post before the edit, so I fetched the alphas of the crosshair textures.
These allow you to have more control over what is visible, anyway... All dwords.
// Crosshair Textures (all weapons except camera and sniper rifle) 0x58E2EC // top right 0x58E3BF // top left? 0x58E420 // bottom right? 0x58E461 // bottom left? 0x58E287 // middle dot // Sniper Rifle and Camera 0x58E8F6 // top right 0x58E96C // top left? 0x58E9DC // bottom right? 0x58EA4B // bottom left?
Last edited by Deji (22-10-2010 19:35)
Offline
Offline
{$cleo} wait 0 while true wait 0 Model.Load(#NVGOGGLES) 20@ = 17 20@ *= 2 20@ += 0xB73458 if and Player.Defined($PLAYER_CHAR) 80DF: not actor $PLAYER_ACTOR driving 8818: not actor $PLAYER_ACTOR in_air 0AB0: key_pressed 50 then 0470: 0@ = actor $PLAYER_ACTOR current_weapon wait 10 if 8611: not actor $PLAYER_ACTOR performing_animation "WEAPON_crouch" then 01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1 wait 20 0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0 wait 1100 01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@ end if 0611: actor $PLAYER_ACTOR performing_animation "WEAPON_crouch" then 01B2: give_actor $PLAYER_ACTOR weapon 44 ammo 1 wait 20 0A8C: write_memory 20@ size 2 value 0xFF virtual_protect 0 wait 1100 01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0@ 0A8C: write_memory 0xB7347C size 2 value 0xFF virtual_protect 0 end end // if and Player.Defined($PLAYER_CHAR) 00DF: actor $PLAYER_ACTOR driving 0AB0: key_pressed 50 then wait 100 0A8D: 1@ = read_memory 0xC402B8 size 4 virtual_protect 0 if 1@ == 0 then 25@ = 5 08B1: enable_night_vision 1 else 25@ = 0 08B1: enable_night_vision 0 end end if and 25@ == 5 00DF: actor $PLAYER_ACTOR driving 00E1: player 0 pressed_key 15 then 08B1: enable_night_vision 0 25@ = 0 end end
В принципе, скрипт работает нормально, я вот только думаю, Model.Destroy нужно делать или так сойдёт?
Offline
Теперь у меня такая проблема. Мне нужно чтоб актёр стоял в боевой стойке (ну это я ему анимацию присвою) и следил за игроком, как будто держа его на прицеле. Т.е. всегда поворачивался в сторону игрока. Можно использовать 0639: AS_actor -1 rotate_to_actor 86@, хотя это не совсем то что надо, но здесь ещё проблема в том что анимация пропадает. Я ещё думал сделать пак действий, но тогда анимация начинается раньше чем актёр повернётся.
Offline