Можно создавать пикап в главном потоке игры,но это временами не выходит,поэтому я расскажу о
создании пикапа в своём собственном потоке.
Все пикапы делятся на пикапы оружия ближнего боя,оружия дальнего боя,просто пикапы(броня,
жизнь...) и специальные.
1) Рассмотрим пикапы оружия дальнего боя:
Чтобы создать пикап такого типа надо использовать вот этот опкод:
032B: $Weap = create_weapon_pickup #MODEL type (число) ammo (число) at $X $Y $Z
Теперь рассмотрим этот опкод по параметрам:
032B: - это кодовое слово,явл. основой всей этой команды.
$Weap - имя нашего пикапа,может быть любым,но всегда в начале должно стоять $ или @ в конце.
#MODEL - модель оружия дальнего боя,есть следующие модели данного типа:
модель описание номер(для того,чтобы дать актёру оружее)
#grenade - обыкновенная граната 16
#teargas - газовая граната 17
#molotov - граната "Коктейль Молотова" 18
#satchel - граната на пульте управлния 39
#colt45 - пистолет Кольт45,как у ментов 22
#silenced - пистолет с глушителем 23
#desert_eagle -пистолет "пустынный орёл" 24
#chromegun - однозарядный дробовик 25
#shotgspa - мощьный дробовик с 7-ми патронами 27
#sawnoff - двухстволка 26
#micro_uzi - узи 28
#tec9 - что-то типа узи,только послабее 32
#mp5lng - автомат MP5,в C.S. 1.6 это "B 3.2" 29
#ak47 - автомат Калашникова 30
#m4 - авт. винтовка M4,типа M16 31
#cuntgun - винтовка 33
#sniper - винтовка со снайперским прицелом 34
#rocketla - базука 35
#heatseek - базука с самонаводкой 36
#flame - огнемёт 37
#minigun - миниган или просто шестистволка 38
#spraycan - балончик с краской 41
#fire_ex - огнетушитель 42
#camera - фотоаппарат 43
#nvgoggles - ночное видение 44
#irgoggles - тепловое видение 45
Type - это тип пикапа,есть следующие типы:
1 - за деньги,регенерируется почти сразу
2 - бесплатно, регенерация за 30 минут игрового времени,надо отойти недалеко
3 - бесплатно, одноразовый
9,11 - бомба
15 - эти регенерируется за 6 часов игрового времени или за 6 минут по-нормальному
Ammo - это число патронов,которые будут с оружеем в придачу .
$X - координата по оси X.
$Y - координата по оси Y.
$Z - координата по оси Z.
2) Рассмотрим пикапы оружия ближнего боя:
Чтобы создать пикап такого типа надо использовать вот этот опкод:
$Weap = Pickup.Create(#MODEl, Type, $X, $Y, $Z)
$Weap - имя нашего пикапа,может быть любым,но всегда в начале должно стоять $ или @ в конце.
#MODEL - модель оружия дальнего боя,есть следующие модели данного типа:
модель описание номер(для того,чтобы дать актёру оружее)
#brassknuckle - кастет 1
#golfclub - клюшка для гольфа 2
#nitestick - ментовская дубинка 3
#knifecur - нож 4
#bat - бейсбольная бита 5
#shovel - лопата 6
#poolcue - бильярдный кий 7
#katana - катана 8
#chnsaw - бензопила 9
#gun_dildo1 - большой синий фалоиммитатор 10
#gun_dildo2 - маленький светло-зелёный фалоиммитатор 11
#gun_vibe1 - большой серый фалоиммитатор 12
#gun_vibe2 - маленький деревянный фалоиммитатор 13
#flowera - букет цветов 14
#gun_cane - трость 15
Type - это тип пикапа,остальные типы описаны выше.
$X - координата по оси X.
$Y - координата по оси Y.
$Z - координата по оси Z.
3) Рассмотрим обыкновенные пикапы:
Чтобы создать пикап такого типа надо использовать тот же самый опкод,но я отделил тип простые
пикапы,чтобы было удобнее.
$Weap = Pickup.Create(#MODEl, Type, $X, $Y, $Z)
$Weap - имя нашего пикапа,может быть любым,но всегда в начале должно стоять $ или @ в конце.
#MODEL - модель пикапа,есть следующие модели простых пикапов:
#HEALTH - жизни
#BODYARMOUR - броня
#GUN_PARA - парашут 46
#JETPACK - джетпак,а по-русски - леталка
#INFO - просто пикап,нет никаких свойств
#PICKUPSAVE - значок сохранения,просто значок не обладающий никакими свойствами
#CLOTHESP - значок одежды,просто значок
#KEYCARD - карточка
Есть наверняка и др. простые пикапы,но они практически нигде не встречаются,поэтому я написал,
только те,которые встречаются чаще всех.
4) Специальные пикапы:
Если я не ошибаюсь,то специальных пикапов всего два:
1 - пикап получения денег :
04A6: $Money = create_asset_money_pickup_at $X $Y $Z money $MaxMoney $MaxMoney ,где
$Money - имя пикапа
$X $Y $Z - координаты пикапа,как их определить написано в первой главе
$MaxMoney - эти два одинаковых параметра указывают на максимальное кол-во денег,которое
будет давать пикап.
2 - пикап покупки,можно применять к чему угодно:
0518: $Buy = create_available_asset_pickup 'PROP_3' at $X $Y $Z price $Count
$Buy - имя пикапа
$X $Y $Z - координаты пикапа,как их определить написано в первой главе
$Count - деньги,которые мы платим за покупку,а вот что покупать,это уже надо самим писать.
Чтобы создать стрелку над любым пикапом используем вот этот опкод:
03DC: $mark = create_marker_above_pickup $PickUp
$Mark - имя маркера,
$PickUp - имя пикапа.
Примеры:
1. Давайте создадим несколько пикапов оружия около дома CJ'я :
create_thread @PickUps // создаём поток
:PickUps
wait 0
model.load(#teargas) // командой "model.load" описываем нужные для загрузки модели
model.load(#molotov)
model.load(#desert_eagle)
model.load(#sawnoff)
model.load(#micro_uzi)
model.load(#ak47)
model.load(#m4)
model.load(#sniper)
model.load(#heatseek)
model.load(#flame)
model.load(#minigun)
model.load(#nvgoggles)
038B: load_requested_models // загружаем модели,которые были описаны командой "model.load"
:PickUps_2
wait 0 // весь label PickUps_2 представляет собой проверку на загрузку
if and
model.Available(#teargas)
model.Available(#molotov)
model.Available(#desert_eagle)
model.Available(#sawnoff)
model.Available(#micro_uzi)
model.Available(#ak47)
model.Available(#m4)
jf @PickUps_2
if and
model.Available(#sniper)
model.Available(#heatseek)
model.Available(#flame)
model.Available(#minigun)
model.Available(#nvgoggles)
jf @PickUps_2
:PickUps_3 // В label'е PickUps_3 сначало создаются пикапы .
032B: $Weap = create_weapon_pickup #teargas type 15 ammo 999999 at 2504.5488 -1680.08 13.384
032B: $Weap = create_weapon_pickup #molotov type 15 ammo 999999 at 2504.5488 -1678.08 13.384
032B: $Weap = create_weapon_pickup #desert_eagle type 15 ammo 999999 at 2504.55 -1676.1 13.4
032B: $Weap = create_weapon_pickup #sawnoff type 15 ammo 999999 at 2504.5488 -1674.08 13.384
032B: $Weap = create_weapon_pickup #micro_uzi type 15 ammo 999999 at 2504.5488 -1672.08 13.384
032B: $Weap = create_weapon_pickup #ak47 type 15 ammo 999999 at 2504.5488 -1670.08 13.384
032B: $Weap = create_weapon_pickup #m4 type 15 ammo 999999 at 2504.5488 -1668.08 13.384
032B: $Weap = create_weapon_pickup #sniper type 15 ammo 999999 at 2504.5488 -1666.08 13.384
032B: $Weap = create_weapon_pickup #heatseek type 15 ammo 999999 at 2504.5488 -1664.08 13.384
032B: $Weap = create_weapon_pickup #minigun type 15 ammo 999999 at 2504.5488 -1662.08 13.384
032B: $Weap = create_weapon_pickup #nvgoggles type 15 ammo 1 at 2504.5488 -1660.08 13.384
032B: $Weap = create_weapon_pickup #flame type 15 ammo 999999 at 2504.5488 -1658.08 13.384
wait 100 // делаем небольшую задержку,на всякий случай.
Model.Destroy(#teargas) // командой Model.Destroy(#MODEl) удаляем модель из памяти.
Model.Destroy(#molotov) // Если мы не будем писать эту команду,то модели останутся в памяти,
Model.Destroy(#desert_eagle) // может,если у вас достаточно мощьный компьютер,вы и не заметите
Model.Destroy(#sawnoff type) // никаких тормозов.Честно говоря,я сам принадлежу к числу лю-
Model.Destroy(#micro_uzi) // бителей не проверять модели на загруженность и не выгружать их
Model.Destroy(#ak47) // в конце потока,но я делаю и то и другое,чтобы уже не было того,к чему
Model.Destroy(#m4) // могут придраться другие и просто на всякий случай,так что - пишите !
Model.Destroy(#sniper)
Model.Destroy(#heatseek)
Model.Destroy(#minigun)
Model.Destroy(#nvgoggles)
Model.Destroy(#flame)
end_thread
Теперь компилируем,запускаем SA,начинаем новую игру и смотрим.Создавайте свои пикапы,т.е.
поэксперементируйте с координатами,моделями оружия,только не забывайте их загружать , прове-
рять на загруженность и выгружать из памяти.
Кстати,игру не обязательно перезапускать,после каждой модификации Main'a,можно просто жать
" Новая игра " , но если вы работаете с External(внешними) скриптами,про них есть отдельная
глава,то перезапуск необходим,потому что Main.scm загружается и потом удаляется с памяти,а
script.img - файл внешних скриптов,висит в памяти до тех пор,пока мы не выйдем из игры, а
файл,висящий в памяти перезаписать нельзя никак.