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
endSeemann ты не против если я этот скрипт добавлю в свой мультимод?
Offline
да добавляй мне не жалко
Offline
@444andrei444 - ты молодец что это сделал, только вот теме уже 4 года и боюсь вряд-ли кому-нибудь сейчас это пригодится, особенно svetka.
Offline
Я это себе сделал. Ну и думаю может кому нибудь пригодится, а цитирую сообщение, чтобы не писать тоже самое.
Ой ой ой. Я тут что то намудрил, вообщем он че то не работает. Как будет хорошое расположение души исправлю.
Last edited by 444andrei444 (22-10-2011 19:56)
Offline