You are not logged in.
Можно нанять в охрану любого прохожего. Особенно занятно, когда нанимаешь разных по типу педов. Например, если нанять полицейского и криминал, то они будут совместно обстреливать как представителей полиции, так и представителей криминалитета)
Собственно:
{$CLEO}
0000:
wait 0
Model.Load(#MICRO_UZI)
038B: load_requested_models
:NONAME_13
wait 0
$ONMISSION == 0
else_jump @NONAME_13
if and
Model.Available(#MICRO_UZI)
Player.Defined($PLAYER_CHAR)
else_jump @NONAME_13
:NONAME_62
wait 0
00E1: key_Pressed 0 10
else_jump @NONAME_100
jump @NONAME_94
:NONAME_94
wait 0
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
1@ > -1
else_jump @NONAME_94
0631: put_actor 1@ in_group $PLAYER_GROUP
07FE: set_actor 1@ fighting_style_to 7 6
01B2: give_actor 1@ weapon 28 ammo 6000 // Load the weapon model before using this
Actor.WeaponAccuracy(1@) = 100
Actor.Health(1@) = 500
Actor.Armour(1@) = 200
Player.Money($PLAYER_CHAR) += -250
Model.Destroy(#MICRO_UZI)
Actor.RemoveReferences(1@)
:NONAME_100
wait 0
00E1: key_Pressed 0 4
else_jump @NONAME_62
06C9: remove_actor 1@ from_group
jump @NONAME_94Пока не удалось решить проблему с роспуском всей группы "наемников". Один обязательно остается с CJ 
Offline
Capushon , это специально. Вот нет у CJ ни оружия, ни денег, а наркоторговца побить надо ) Или вдруг нападение на завоеванную территорию в войне банд? А ситуация у CJ та же.
Можно сделать честнее, и просто взять охрану в долг:
:NONAME_100
wait 0
00E1: key_Pressed 0 4
else_jump @NONAME_62
06C9: remove_actor 1@ from_group
Player.Money($PLAYER_CHAR) += -250
jump @NONAME_94
Эти вопросы для меня пока не очень важны. Пусть CJ уходит в минус. Или отсутствие проверки наличности чем-то еще чревато?
Но вот почему последний наемник не отпускается? Эх, логика... Не сестра она мне)
Этот вариант скрипта не окончательный по замыслу. Так.., заготовка. Ее бы до ума довести. А уж доведу... Ох, выложу скриптик! Каким я его задумала)
Last edited by svetka (27-05-2008 07:50)
Offline
1) Последний отпускается, но jump @NONAME_94 и он сразу же нанимается...я так думаю
2) Хорошо бы сделать рендомное оружие охранникам
-=YariK=-
http://my-mods.org.ua/
Offline
Yarik,
Последний отпускается, но jump @NONAME_94 и он сразу же нанимается...я так думаю
Я попробую) Спасибо за подсказку:)
Хорошо бы сделать рендомное оружие охранникам
Это в планах. И не просто в планах, а давать оружие каждому нанятому педу на свое усмотрение. Этому я научилась) Пробный скрипт уже есть. По аналогии с вариантом Seemanna. Работает)
Last edited by svetka (27-05-2008 12:20)
Offline
Да, Yarik. Ты прав на счет jump @NONAME_94. Никак пока что-то не соображу как исправить код.
Вот тот же код с рендомным оружием. Только вот непонятно почему текстуры некоторых моделей не всегда загружаются. Т.е. пед из пустых рук палит, как из винтовки (и выстрел есть, и огонь), но самой ее нет.
Вобщем вот код по аналогии с кодом Seemanna про цветы и пр.
{$CLEO}
0000:
:NONAME_2
wait 250
if
Player.Defined($PLAYER_CHAR)
jf @NONAME_2
if
$ONMISSION == 0
jf @NONAME_2
:NONAME_3
if
0AB0: key_pressed 90 // Z
jf @NONAME_159
:NONAME_4
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
1@ > -1
jf @NONAME_4
0209: 2@ = random_int_in_ranges #chromegun #minigun
Model.Load(2@)
:NONAME_101
not Model.Available(2@)
jf @NONAME_124
wait 0
jump @NONAME_101
:NONAME_124
0085: 3@ = 2@ // (int)
3@ -= 324
01B2: give_actor 1@ weapon 3@ ammo 6000 // Load the weapon model before using this
0631: put_actor 1@ in_group $PLAYER_GROUP
07FE: set_actor 1@ fighting_style_to 7 6
actor.SetImmunities(1@,0,1,1,0,0)
Actor.WeaponAccuracy(1@) = 100
Actor.Health(1@) = 500
Actor.Armour(1@) = 200
Model.Destroy(2@)
wait 1000
:NONAME_159
wait 0
0AB0: key_pressed 88 // X
jf @NONAME_2
0632: release_group $PLAYER_GROUP
jump @NONAME_2
Last edited by svetka (31-05-2008 10:18)
Offline
Как мне остановить процесс поиска педов? Или я не в ту сторону думаю?)
Last edited by svetka (29-05-2008 06:13)
Offline
Ёлки-палки!!! 0632: release_group $PLAYER_GROUP !!! И все с умным видом молчали ) Ну, с памятью у меня на опкоды не ай-яй))
Всё. Теперь нажатием "Х" распускаем сразу всю группу.
Но я так и не поняла - почему же оружие не всегда проявляется, хотя и стреляет? Хоть на это ответьте? М?:) Может нельзя выходить за рамки группы оружия?
Offline
Seemann, и все же есть один непонятный (даже неприятный) момент, в т.ч. и в твоем варианте скрипта о цветах. Если я жму F (я про твой вариант) несколько раз на одном и том же педе - все появляющиеся у него в руках дидлы и цветы он в ходе перебора прячет за пазухой. Если педа прибить - весь набор вызванных ранее штучек будет вращаться над его трупом. Ведь это ненормально или как?
Offline
1. В блоке NONAME_159 нужно изменить метки NONAME_3 на NONAME_2, иначе скрипт зацикливается между проверками нажатий и не проверяет состояние игрока и ONMISSION.
2.
jump @NONAME_4 :NONAME_4
если JUMP идет на метку, которая стоит сразу после этого JUMP, то jump не нужен. В данном случае, нужно убрать jump @NONAME_4.
3.
0209: 2@ = random_int_in_ranges #chromegun #minigun
Эта команда выбирает случайное число в интервале 349..361, хотя #minugun = 362. Это особенность этого опкода 0209, что он возвращает число в интервале A..B-1, где A и B - заданные числа. Если ты хочешь, чтобы у наемника появлялся миниган (читерство!), то нужно увеличить второе число на 1 (#satchel). Это раз.
Второе.
01B2: give_actor 1@ weapon 3@ ammo 6000 // Load the weapon model before using this
здесь для передачи игроку оружия используется номер оружия. Номер для каждой модели можно найти в справке SB (Документация по SCM-SA). Для получения нужного номера в скрипте с цветами я использовал простой трюк - отнимал от номера модели, полученного при помощи 0209, число 311. Это отлично подходило для цветов и дилдо (см. таблицу):
10 321 #gun_dildo1 11 322 #gun_dildo2 12 323 #gun_vibe1 13 324 #gun_vibe2 14 325 #flowera 15 326 #gun_cane
Для этого же скрипта такой трюк не пройдет. У тебя был правильный ход мыслей с числом 324, но к сожалению для всех вариантов моделей это число не подойдет:
25 349 #chromegun // подходит 30 355 #ak47 // не подходит 31 356 #m4 // не подходит 33 357 #cuntgun // подходит
Кроме того, в заданном интервале моделей есть число 354, а это не относится к доступной модели оружия (по крайней мере в таблице в справке такого числа нет).
Поэтому когда выпадают числа 354, 355, 356 - скрипт отрабатывает неправильно (модель загружается, но актеру передается оружие по другому номеру, поэтому нет визуального отображения модели)
Вывод: вариант со случайной выборкой модели как в скрипте с цветами тут не подойдет.
Как вариант, можно сделать так: выбирать число от 0 до 11 (по числу оружия), потом выпавшее число использовать в опкоде 0871, 0872. В 0871 сделать набор вариантов, где в 2 переменные будут записываться номер модели и номер оружия (например для 0 - н.м. = #chromegun, н.о. = 25). Переменные с номерами модели и оружия потом использовать как обычно.
Насчет дублирования оружия при передаче одному и тому же актеру - можно добавить проверку на наличие у актера такого оружия (0491), если есть, то не передавать.
Offline
Спасибо, Seemann, за подробный ответ. Осталось освоить такие незамысловатые опкоды, как 0871, 0872
Надеюсь, что разберусь) Я их всегда боялась 
Offline
Спасибо, Seemann, за подробный ответ. Осталось освоить такие незамысловатые опкоды, как 0871, 0872
Надеюсь, что разберусь) Я их всегда боялась
Испацтала:
З0чем тебе эти jump table? Они поидее ненужны нигде и только усложняют работу=)
Last edited by 3Doomer (31-05-2008 21:13)
GIMS developer
Offline
Осталось освоить такие незамысловатые опкоды, как 0871, 0872
Надеюсь, что разберусь) Я их всегда боялась
Sanny Builder Help: Статьи/Опытным пользователям/Таблицы переходов
И чего их бояться. 
Last edited by yelmi (30-05-2008 22:13)
Offline
yelmi, хелп я читала. Если б всё так просто помогало. Только не мне ) Я ж приступая к работе над скриптами как на войну собираюсь. Страшно, но вдруг победю?
Да победю конечно) И с этими "прыгающими столами" тоже разберусь. А пока этот аналог массива мой мозг своей массой и подавляет))
Offline
Там нет ничего сложного, все зависит от значения переменной.
0871: init_jump_table 0@ total_jumps 7 0 @метка_выхода jumps 0 @метка1 1 @метка2 2 @метка3 3 @метка4 4 @метка5 5 @метка6 6 @метка7
Принцип его работы можно представить в таком виде:
:метка1 if 0@ == 0 jf @метка2 <код> jump @метка_выхода :метка2 if 0@ == 1 jf @метка3 <код> jump @метка_выхода …. :метка_выхода
Last edited by yelmi (31-05-2008 10:14)
Offline
2 svetka:
Вот я нашёл хороший способ случайного выбора, через массив
var $BLABLABLA array 5 of int end $BLABLABLA[0] = 33 $BLABLABLA[1] = 38 $BLABLABLA[2] = 31 $BLABLABLA[3] = 30 $BLABLABLA[4] = 29 0209: 2@ = random_int_in_ranges 0 4 Model.Load($BLABLABLA[2@]) и так далее...
Last edited by 3Doomer (31-05-2008 21:31)
GIMS developer
Offline
@3Doomer - такой способ подходит далеко не всегда. В CLEO-скрипте нужно будет использовать локальный массив (1@: array 5 of int). Если массив достаточно большой, или массивов несколько (как в данном скрипте, тут понадобятся 2 массива для номеров моделей и номеров оружия), то 32-х локальных переменных может просто не хватить.
А в некоторых случаях способ очень хорош.
Offline
@3Doomer - такой способ подходит далеко не всегда. В CLEO-скрипте нужно будет использовать локальный массив (1@: array 5 of int). Если массив достаточно большой, или массивов несколько (как в данном скрипте, тут понадобятся 2 массива для номеров моделей и номеров оружия), то 32-х локальных переменных может просто не хватить.
А в некоторых случаях способ очень хорош.
Локальный массив не объявляется, СБ ругается при компиляции на строчку 32@[0] = 33, где я пытаюсь забить в ячейку значение...пишет Неверный символ в идентификаторе 2@
Вот код
var 32@ array 5 of int end 32@[0] = 33
Весь код скрипта почти дописан...
Last edited by 3Doomer (01-06-2008 18:01)
GIMS developer
Offline
А локальные переменные и не получится с индексами-константами использовать. Предполагается, что ты можешь сам вручную посчитать нужный индекс (10@[5] = 15@).
Offline
Скрипт я написал, но всёравно из оружий загружается только миниган, а ещё иногда игра вылетает на загрузке модели......похимичьте если хотите=)
{$CLEO}
0000:
var
$MYARMYSCRid array 5 of int
$MYARMYSCRmodel array 5 of int
end
$MYARMYSCRid[0] = 33
$MYARMYSCRid[1] = 38
$MYARMYSCRid[2] = 31
$MYARMYSCRid[3] = 30
$MYARMYSCRid[4] = 29
$MYARMYSCRmodel[0] = #CUNTGUN
$MYARMYSCRmodel[1] = #MINIGUN
$MYARMYSCRmodel[2] = #M4
$MYARMYSCRmodel[3] = #AK47
$MYARMYSCRmodel[4] = #MP5LNG
:NONAME_2
wait 250
if
Player.Defined($PLAYER_CHAR)
jf @NONAME_2
if
$ONMISSION == 0
jf @NONAME_2
:NONAME_3
if
0AB0: key_pressed 90 // Z
jf @NONAME_159
:NONAME_4
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
1@ > -1
jf @NONAME_4
0209: 2@ = random_int_in_ranges 0 4
Model.Load($MYARMYSCRmodel[2@])
:NONAME_101
not Model.Available($MYARMYSCRmodel[2@])
jf @NONAME_124
wait 0
jump @NONAME_101
:NONAME_124
01B2: give_actor 1@ weapon $MYARMYSCRid[2@] ammo 6000 // Load the weapon model before using this
0631: put_actor 1@ in_group $PLAYER_GROUP
07FE: set_actor 1@ fighting_style_to 7 6
actor.SetImmunities(1@,0,1,1,0,0)
Actor.WeaponAccuracy(1@) = 100
Actor.Health(1@) = 500
Actor.Armour(1@) = 200
Model.Destroy($MYARMYSCRmodel[2@])
wait 1000
:NONAME_159
wait 0
0AB0: key_pressed 88 // X
jf @NONAME_2
0632: release_group $PLAYER_GROUP
jump @NONAME_2
GIMS developer
Offline
А так не пробовал?
{$CLEO}
0000:
5@ = 33
6@ = 38
7@ = 31
8@ = 30
9@ = 29
11@ = #CUNTGUN
12@ = #MINIGUN
13@ = #M4
14@ = #AK47
15@ = #MP5LNG
:NONAME_2
wait 250
if
Player.Defined($PLAYER_CHAR)
jf @NONAME_2
if
$ONMISSION == 0
jf @NONAME_2
:NONAME_3
if
0AB0: key_pressed 90 // Z
jf @NONAME_159
:NONAME_4
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
1@ > -1
jf @NONAME_4
0209: 2@ = random_int_in_ranges 0 5
Model.Load(11@(2@,5i))
:NONAME_101
not Model.Available(11@(2@,5i))
jf @NONAME_124
wait 0
jump @NONAME_101
:NONAME_124
01B2: give_actor 1@ weapon 5@(2@,5i) ammo 6000 // Load the weapon model before using this
01B9: set_actor 1@ armed_weapon_to 5@(2@,5i)
0631: put_actor 1@ in_group $PLAYER_GROUP
07FE: set_actor 1@ fighting_style_to 7 6
actor.SetImmunities(1@,0,1,1,0,0)
Actor.WeaponAccuracy(1@) = 100
Actor.Health(1@) = 500
Actor.Armour(1@) = 200
Model.Destroy(11@(2@,5i))
wait 1000
:NONAME_159
wait 0
0AB0: key_pressed 88 // X
jf @NONAME_2
0632: release_group $PLAYER_GROUP
jump @NONAME_2
Offline
Я опробовала скрипт. Пока без проблем)
Эх, ребята и молодцы же вы все! 
Спешу всех поблагодарить за помощь. Сегодня мне инет должны отключить)
Всем В-О-О-О-Т такое спасибо! ))
Offline
Номер оружия можно найти опкодом:
0781: get_weapon_with_ID $AMMU_SELECTED_WEAPON model_to $AMMU_SELECTED_WEAPON_MODEL
---
Точнее наоборот позволяет узнать модель оружия по его ид, но в любом случае это позволяет использовать только один массив, экономя локальные переменные:
{$CLEO}
var
0@: Array 5 of Integer
5@: Integer
end
0@ = 29
1@ = 30
2@ = 31
3@ = 33
4@ = 38
while true
wait 250
if
Player.Defined($PLAYER_CHAR)
then
if
0AB0: key_pressed 90
then
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 5@ closest_ped_to 6@
if
6@ > -1
then
5@ = Random(0, 5)
0781: get_weapon_with_ID 0@[5@] model_to 7@
Model.Load(7@)
while not Model.Available(7@)
wait 0
end
0631: put_actor 6@ in_group $PLAYER_GROUP
01B2: give_actor 6@ weapon 0@[5@] ammo 9999 // Load the weapon model before using this
Model.Destroy(7@)
end
end
if
0AB0: key_pressed 88
then
0632: release_group $PLAYER_GROUP
end
end
end
Last edited by Fess (02-06-2008 10:46)
Offline
Все то же самое, но только с таблицей переходов, используем всего 2 переменные.
{$CLEO}
0000:
:NONAME_2
wait 250
if and
Player.Defined($PLAYER_CHAR)
$ONMISSION == 0
jf @NONAME_2
:NONAME_3
if
0AB0: key_pressed 90 // Z
jf @NONAME_159
:NONAME_4
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
if
1@ > -1
jf @NONAME_4
:NONAME_5
0209: 2@ = random_int_in_ranges 0 5
0871: init_jump_table 2@ total_jumps 5 default_jump 0 @END jumps 0 @CUNTGUN 1 @MINIGUN 2 @M4 3 @AK47 4 @MP5LNG -1 @END -1 @END
:CUNTGUN
5@ = 33
6@ = #CUNTGUN
jump @END
:MINIGUN
5@ = 38
6@ = #MINIGUN
jump @END
:M4
5@ = 31
6@ = #M4
jump @END
:AK47
5@ = 30
6@ = #AK47
jump @END
:MP5LNG
5@ = 29
6@ = #MP5LNG
jump @END
:END
wait 100
Model.Load(6@)
038B: load_requested_models
:NONAME_101
not Model.Available(6@)
jf @NONAME_124
wait 0
jump @NONAME_101
:NONAME_124
01B2: give_actor 1@ weapon 5@ ammo 6000 // Load the weapon model before using this
01B9: set_actor 1@ armed_weapon_to 5@
02E2: set_actor 1@ weapon_accuracy_to 85
0631: put_actor 1@ in_group $PLAYER_GROUP
077A: set_actor 1@ default_action 4 to_actors_pedtype 6
077A: set_actor 1@ default_action 4 to_actors_pedtype 7
077A: set_actor 1@ default_action 4 to_actors_pedtype 9
077A: set_actor 1@ default_action 4 to_actors_pedtype 10
077A: set_actor 1@ default_action 4 to_actors_pedtype 11
077A: set_actor 1@ default_action 4 to_actors_pedtype 12
077A: set_actor 1@ default_action 4 to_actors_pedtype 13
077A: set_actor 1@ default_action 4 to_actors_pedtype 14
0350: toggle_actor 1@ maintain_position_when_attacked 1
actor.SetImmunities(1@,0,1,1,0,0)
Actor.Health(1@) = 500
Actor.Armour(1@) = 200
Model.Destroy(6@)
:NONAME_159
wait 0
0AB0: key_pressed 88 // X
jf @NONAME_2
0632: release_group $PLAYER_GROUP
jump @NONAME_2
Offline
Зачем таблица перехода или масив
Просто рандомно взять номер ID и по нему получить имя модели
0781: get_weapon_with_ID $AMMU_SELECTED_WEAPON model_to $AMMU_SELECTED_WEAPON_MODEL
-=YariK=-
http://my-mods.org.ua/
Offline