Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
DeusExMechanicus, теоретически - нулю. Но лучше на это не полагаться, а явно инициализировать переменные (если необходимо).
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя DeusExMechanicus
Дорисовал статейку по Мультирежимному оружию, ждём модераторов
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя DeusExMechanicus
DeusExMechanicusOffline
Сообщение №157
написано: 29 апреля 2011, 13:22
| Отредактировано: DeusExMechanicus - 29 апреля 2011, 13:23
Взял скрипт из статьи Artem13, при компиляции пишет "Exepted end of line" в строке 16. Строка сама - player.EquipItem 01Lasgun 1 0 1. Яподставил только свои ID, больше не менял в скрипте ничего. Что может быть не так?
На всякий случай, приведу полностью:
Code
scn 01A13WeaponModeChoiceScript short A13Key float A13WeaponCond begin OnEquip player if MenuMode 1002 ShowMessage 01ChangeWeapon endif end begin MenuMode 1002 set A13Key to GetButtonPressed if A13Key < 1 return elseif A13Key == 1 set A13WeaponCond to player.GetWeaponHealthPerc player.AddItem 01Lasgun 1 1 player.EquipItem 01Lasgun 1 0 1 player.SetWeaponHealthPerc A13WeaponCond removeme elseif A13Key == 2 set A13WeaponCond to player.GetWeaponHealthPerc player.AddItem 01LasgunAutomatic 1 1 player.EquipItem 01LasgunAutomatic 1 0 1 player.SetWeaponHealthPerc A13WeaponCond removeme endif end
DeusExMechanicus, сорри, напутал немного. Функция EquipItem имеет только два параметра. Я этот кусок по памяти писал и с чем то спутал, видимо. первую единицу убери. Т.е. должно остаться player.EquipItem 01Lasgun 0 1
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя DeusExMechanicus
[PAIN], няз, стандартными средствами нереализуемо, т.к. нет команды, которая возвратила бы это самое место прицеливания. Возможно, что нечто подобное есть в НВСЕ, но им я не владею, можно сказать из принципа.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
А, да, не подумал, возможно,наверное. Но для этого тебе нужно распотрошить Алгоритм Евклида Ибо у мну времени нет. А насчей телепорта - надо в нужную точку помещать триггер со скриптом телепортации.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Подскажите, можно ли написать скрипт отправляющий всех компаньонов по домам?
Попотрошил Dead Money и нашел такой скрипт:
Code
scn NVDLC01VillaTravelTriggerScript ; JSH ; Knocks the player out and transports him to the Villa.
;CES 10/18/10 ;Fine tuning and polishing the gassing part of the script
short StartUp ;1= Player has tripped the trigger zone short EndStartUp float TimerA float TimerB float TimerC float TimerD float TimerE float TimerZ ;Added for first timer to trigger player teleportation
short bTimerZDone
BEGIN OnTrigger player
; Complete NVDLC01MQ00 and get the player set up to be knocked out. if (StartUp == 0) && (GetStageDone NVDLC01MQ00 10 == 1)
if (VNPCFollowers.bBooneHired == 1) ;set CraigBooneRef.Waiting to 1 elseif (VNPCFollowers.ArcadeHired == 1) ;set ArcadeRef.Waiting to 1 elseif (VNPCFollowers.RaulHired == 1) ;set RaulRef.Waiting to 1 elseif (VNPCFollowers.bVeronicaHired == 1) ;set VeronicaRef.Waiting to 1 elseif (VNPCFollowers.bLilyHired == 1) ;set LilyRef.Waiting to 1 elseif (VNPCFollowers.bCassHired == 1) ;set RoseOfSharonCassidyRef.Waiting to 1 endif
if (VNPCFollowers.RexHired == 1) ;set RexRef.Waiting to 1 elseif (VNPCFollowers.bEdEHired == 1) ;set EDE1Ref.Waiting to 1 ;set EDE2Ref.Waiting to 1 ;set EDE3Ref.Waiting to 1 endif
SetObjectiveCompleted NVDLC01MQ00 10 1 SetStage NVDLC01MQ00 100 DisablePlayerControls 1 1 1 1 1 1 1 Set TimerA to 1 Set TimerA to .2 Set StartUp to 1 ApplyImageSpaceModifier ExplosionInFace
Но насколько я понял он действует только на стандартных игровых компаньонов. Для ясности мне нужен следующий эффект: игрок подходит к двери, заходит, но при этом все (отмечу ВСЕ) компаньоны уходят и игрок остается один.
Galko, а есть универсальная команда? Я конечно нашел выход, отрезал компьонов от игрока через player.moveto
Не знаю насчет половины, я этот скрипт из Dead Money взял, а там он работает полностью.
Мне нужен скрипт запускающийся через Begin onActivate. Как его активировать это не важно, мне главное чтобы он разгонял левых компаньонов. Тех что добавленны по модам. Но судя по конструкции скрипта так нельзя, нужно прописывать каждого поименно.
Galko, Еще раз перепроверил скрипт работает полностью, все строки читаются, компаньоны уходят. (Проверял взяв только строки с запятыми). В Dead Money делалось так, разработчики разогнали всех стандартных компаньонов и телепортировали игрока через player.moveto в недосягаемую для левых компаньонов локацию (это конечно не панацея, так как скиллы ни куда не деваются), придется мне сделать так же (хоть рядом с игроком никого не будет). Спасибо за помощь.
Еще раз перепроверил скрипт работает полностью, все строки читаются, компаньоны уходят. (Проверял взяв только строки с запятыми). В Dead Money делалось так, разработчики разогнали всех стандартных компаньонов и телепортировали игрока через player.moveto в недосягаемую для левых компаньонов локацию (это конечно не панацея, так как скиллы ни куда не деваются), придется мне сделать так же (хоть рядом с игроком никого не будет). Спасибо за помощь.
А вы понимаете что если вы будете использовать этот скрипт то те кто не прошол дед-мани будут начинать стадию 100 в том квесте ?
...-Вот такой вот парадокс. Мы делаем моды для игр, в которые уже давно не играем...
Scail, поаккуратнее. Похоже, скрипт работает исключительно за счёт квеста, поэтому сначала попробуй скрипт без упоминания квеста. И если он сработает, то я ничего не понимаю, ибо ; - это комментарий.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Graf, при чем тут Dead Money? Я взял скрипт и подгоняю его под свой квест. Для моего мода Dead Money даже не нужен. Artem13, подогал под свой квест ; убрал, действительно не работало. А так все в порядке.
насчет отправки компаньонов по домам - советую посмотреть скрипт на триггере в убежище 87 (Fallout 3) в том месте, где гг попадает в засаду анклава. в последних блоках этого скрипта как раз и отсылаются по домам все компаньоны.
У меня получилось, чтобы предмет появлялся в месте прицеливания, но с ним через скрипты взаимодействовать не выходит, так-как у них нет Ref-ID, есть ли какая нибудь команда, которая через скрипт добавила только-что созданному объекту Ref-ID?
Oh no, not me, I never lost control. You're face to face With the man who sold the world.
В том то и дело, что в моем случае появляется не копия из мира, а сам обьект, не имеющий копий в мире и не имеющий ref названия, а чтобы его перемещать нужно указывать имя его копии. Если что не так, поправьте пожалуйста
Oh no, not me, I never lost control. You're face to face With the man who sold the world.
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №177
написано: 6 мая 2011, 15:18
| Отредактировано: Artem13 - 6 мая 2011, 15:19
[PAIN], в корне неверно. Кажется, я этот момент в туторе описывал. У любого объекта есть ссылка. В цифровом мире, в отличие от реального, любой объект будет практически являться копией некого виртуального "оригинала". У ссылки не обязательно наличие символьного имени - у неё есть уникальный цифровой идентификатор.
ЗЫ Я для чего, вообще, тутор писал
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя ITU
ITUOffline
Сообщение №178
написано: 6 мая 2011, 15:48
| Отредактировано: ITU - 6 мая 2011, 18:11
В том то и дело, что в моем случае появляется не копия из мира, а сам обьект, не имеющий копий в мире и не имеющий ref названия, а чтобы его перемещать нужно указывать имя его копии. Если что не так, поправьте пожалуйста
так я ж сказал ищи в скриптах мертвых денег в название со словом snowglobe (точно не скажу, нету гекка в данный момент), там же работает изменение координаты объекту который спавнится скриптом
я это нашел, когда хотел чтоб в моем домике на полку выставлялся этот самый шар и не мог это сделать ксати может кто подскажет возможно ли это?
добавлено: если сделать так, прокатит? if рефрешшарика_со_скриптом.название_переменной_в_скрипте шарик.enable endif
Изменение репутации для пользователя [HazarDous]
[HazarDous]Offline
Сообщение №179
написано: 6 мая 2011, 17:05
| Отредактировано: [PAIN] - 6 мая 2011, 17:06