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