You are not logged in.
Вас обидели в игре? Какой-то негрила "задел" вашу челюсть кулаком? Кто-то сломал кий о вашу спину? Менты не успевают перезаряжать обоймы? Есть выход!
В общем скрипт до банальности прост. Если вам кто-то наносит повреждение оружием (ручным или огнестрельным), просто делаем с обидчиком все, что захотим. Я например решил поджигать хулиганов
Работает только на v1.0
{$CLEO} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if 031D: actor $PLAYER_ACTOR hit_by_weapon 57 then 0A96: 1@ = actor $PLAYER_ACTOR struct 1@ += 0x764 0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0 if 0@ > 0 then 0A8D: 8@ = read_memory 0x00B74490 size 4 virtual_protect 0 0AA8: call_function_method 0x4442D0 struct 8@ num_params 1 pop 0 0@ 1@ if 056D: actor 1@ defined then 0467: clear_actor $PLAYER_ACTOR last_weapon_damage // здесь с актером, который в вас стрелял, можно делать что угодно. его хендл в 1@ // например, подожжем!!!! 055D: make_player $PLAYER_CHAR fireproof 1 // это на всякий случай, можно убрать 0326: 9@ = create_actor 1@ fire end end end end end
Если у вас есть более интересные идеи насчет этого скрипта, не стесняйтесь высказывать их.
Offline
Взрывать их к чертовой быбушке!:crazy: Жалко, что в СА педы не разрываются, как в Тройке.(А кстати, это никак нельзя включить?)
А что означают адреса памяти?
Offline
Доработал скрипт. Написал 4 возможных случая нанесение повреждений актеру или машине. Эти примеры можно использовать в аналогичных скриптах, например, для получения хендла машины, сбившей вас или толкнувшей вашу машину. Написанные функции можно использовать для любого актера/машины, не обязательно игрока.
{$CLEO} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then {********************************************** если актера $PLAYER_ACTOR ранил другой актер, получаем хендл атаковавшего актера в 1@ **********************************************} if 031D: actor $PLAYER_ACTOR hit_by_weapon 57 // 57 by any weapon then if 0AB1: call_scm_func @GetActorDamagingPed 1 $PLAYER_ACTOR 1@ then 0467: clear_actor $PLAYER_ACTOR last_weapon_damage // здесь с актером, который в вас стрелял, можно делать что угодно. его хендл в 1@ // например, подожжем!!!! 055D: make_player $PLAYER_CHAR fireproof 1 // это на всякий случай, можно убрать 0326: 9@ = create_actor 1@ fire end end {********************************************** если актера $PLAYER_ACTOR сбили машиной, получаем хендл сбившей машины в 1@ **********************************************} if 031D: actor $PLAYER_ACTOR hit_by_weapon 49 // 49 by vehicle then if 0AB1: call_scm_func @GetActorDamagingVehicle 1 $PLAYER_ACTOR 1@ then 0467: clear_actor $PLAYER_ACTOR last_weapon_damage // здесь с машиной, которая вас сбила, можно делать что угодно. ее хендл в 1@ // например, подожжем!!!! 055D: make_player $PLAYER_CHAR fireproof 1 // это на всякий случай, можно убрать 0325: 9@ = create_car 1@ fire end end if Actor.Driving($PLAYER_ACTOR) then 03C0: 0@ = actor $PLAYER_ACTOR car {********************************************** если машину 0@ повредили из оружия, получаем хендл атаковавшего актера в 1@ **********************************************} if 031E: car 0@ hit_by_weapon 57 then if 0AB1: call_scm_func @GetVehicleDamagingPed 1 0@ 1@ then 0468: clear_car 0@ last_weapon_damage // здесь с актером, который повредил машину, можно делать что угодно. его хендл в 1@ // например, подожжем!!!! 0326: 9@ = create_actor 1@ fire end end {********************************************** если машину 0@ толкнули другой машиной, получаем хендл толкнувшей машины в 1@ **********************************************} if 031E: car 0@ hit_by_weapon 49 then if 0AB1: call_scm_func @GetVehicleDamagingVehicle 1 0@ 1@ then 0468: clear_car 0@ last_weapon_damage // здесь с актером, который повредил машину, можно делать что угодно. его хендл в 1@ // например, подожжем!!!! 0325: 9@ = create_car 1@ fire end end {**********************************************} end end end :GetActorDamagingPed 0A96: 1@ = actor 0@ struct 1@ += 0x764 :TestPed 0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0 if 0@ > 0 then 0A8D: 8@ = read_memory 0x00B74490 size 4 virtual_protect 0 0AA8: call_function_method 0x4442D0 struct 8@ num_params 1 pop 0 0@ 1@ if 056D: actor 1@ defined then 0AB2: ret 1 1@ end end 0AB2: ret 1 -1 :GetActorDamagingVehicle 0A96: 1@ = actor 0@ struct 1@ += 0x764 :TestVehicle 0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0 if 0@ > 0 then 0A8D: 8@ = read_memory 0x00B74494 size 4 virtual_protect 0 0AA8: call_function_method 0x424160 struct 8@ num_params 1 pop 0 0@ 1@ if 056E: car 1@ defined then 0AB2: ret 1 1@ end end 0AB2: ret 1 -1 :GetVehicleDamagingPed 0A97: 1@ = car 0@ struct 1@ += 0x50C jump @TestPed :GetVehicleDamagingVehicle 0A97: 1@ = car 0@ struct 1@ += 0x50C jump @TestVehicle
Значения функций:
GetActorDamagingPed
0AB1: call_scm_func @GetActorDamagingPed 1 $PLAYER_ACTOR 1@
функция возвращает в 1@ хендл актера, который атаковал актера $PLAYER_ACTOR.
Если например написать
0AB1: call_scm_func @GetActorDamagingPed 1 10@ 5@(1@,2i)
то функция запишет в 5@(1@,2i) хендл актера, который атаковал актера 10@.
GetActorDamagingVehicle
записывает хендл машины, которая сбила актера.
GetVehicleDamagingPed
записывает хендл актера, который повредил машину
GetVehicleDamagingVehicle
записывает хендл машины, которая толкнула машину
Все функции работают как УСЛОВИЯ. Это значит, проверка на 0AB1: call_scm_func @GetActorDamagingPed будет верна, если правильный хендл актера был получен. Смотрите примеры.
Last edited by Seemann (12-06-2008 08:01)
Offline
Надо, чтобы нарушителей атаковала и преследовала полиция. А то какой-нибудь баллас стреляет в меня и ему за это ничего. Попробуй я в него выстрели, так тут все против меня. Полиция вообще ни на кого толком не реагирует. Пед угоняет машину, а полицейскому хоть бы хны )
Или я уже о другом скрипте говорю?
Offline
Надо, чтобы нарушителей атаковала и преследовала полиция. А то какой-нибудь баллас стреляет в меня и ему за это ничего. Попробуй я в него выстрели, так тут все против меня. Полиция вообще ни на кого толком не реагирует. Пед угоняет машину, а полицейскому хоть бы хны )
Или я уже о другом скрипте говорю?
Полностью согласеН.:clap:
Ещё копы должны преследовать педов за ношение оружия.
Last edited by Admiral (20-07-2008 19:48)
Моды - вот что украшает игру!
Offline
Надо, чтобы нарушителей атаковала и преследовала полиция. А то какой-нибудь баллас стреляет в меня и ему за это ничего. Попробуй я в него выстрели, так тут все против меня. Полиция вообще ни на кого толком не реагирует. Пед угоняет машину, а полицейскому хоть бы хны )
Или я уже о другом скрипте говорю?
ну я потратил минут 10 и вот сделал все таки, вроде работает
{$CLEO} wait 5000 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then 01C0: 11@ = player $PLAYER_CHAR wanted_level if 11@ == 0 then if 031D: actor $PLAYER_ACTOR hit_by_weapon 57 then 0A96: 1@ = actor $PLAYER_ACTOR struct 1@ += 0x764 0A8D: 0@ = read_memory 1@ size 4 virtual_protect 0 if 0@ > 0 then 0A8D: 8@ = read_memory 0x00B74490 size 4 virtual_protect 0 0AA8: call_function_method 0x4442D0 struct 8@ num_params 1 pop 0 0@ 1@ if 056D: actor 1@ defined then 0467: clear_actor $PLAYER_ACTOR last_weapon_damage 0AE1: 10@ = random_actor_near_point 11@ 12@ 13@ in_radius 20.0 find_next 1 pass_deads 1 if or 02F2: actor 10@ model == #LAPD1 02F2: actor 10@ model == #SFPD1 02F2: actor 10@ model == #LVPD1 02F2: actor 10@ model == #CSHER 02F2: actor 10@ model == #LAPDM1 then 05E2: AS_actor 10@ kill_actor 1@ end end end end end end
Seemann ты не против если я этот скрипт добавлю в свой мультимод?
Offline
да добавляй мне не жалко
Offline
@444andrei444 - ты молодец что это сделал, только вот теме уже 4 года и боюсь вряд-ли кому-нибудь сейчас это пригодится, особенно svetka.
Offline
Я это себе сделал. Ну и думаю может кому нибудь пригодится, а цитирую сообщение, чтобы не писать тоже самое.
Ой ой ой. Я тут что то намудрил, вообщем он че то не работает. Как будет хорошое расположение души исправлю.
Last edited by 444andrei444 (22-10-2011 19:56)
Offline