Скрипты - неотъемлемая часть GECK. При написании возникает очень много казусов. Данная тема должна помочь не наступать на "грабли" новичкам и делиться опытом с другими более продвинутых мододелов.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №991
написано: 20 сентября 2013, 20:06
| Отредактировано: Joopeeter - 20 сентября 2013, 20:13
Ладно, подумал, что может быть я совсем квалификацию потерял, что скрипт из трёх строк в уме составить не могу... Запустил ГЭКК, скопипастил туда этот квестовый скрипт - нет, работает. Именно этот. Если он "вживлялся" в другой, видоизменялся или дополнялся каким-то образом, то прошу предъявить код. Эффект не проверял, но что там может не сработать, даже не представляю.
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №992
написано: 20 сентября 2013, 20:23
| Отредактировано: Hellraiser - 20 сентября 2013, 20:30
if (GetStage a03HellRobotPitti >= 65) && DayX==0 set DayX to GameDaysPassed+1 elseif DayX > GameDaysPassed ;ничего не делать else set DayX to 10000000 ShowMessage a10HellThreeDaysPastMessage a10TroopersEnableRef.enable a10DeleteCorpseSupermutansXMarker.disable a10DisableMiscItemXMarker.enable a01PostNCRDisableRef.disable a09PostNCRXMarker.enable Setstage a01HellOfficeBuildingII 5 StopQuest a03HellRobotPitti
endif
Разобрался. Спасибо. Моей ошибкой было вставить дополнительное условие в первой строке. Тогда как мне запустить этот отсчет именно после нужной стадии квеста?
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №993
написано: 20 сентября 2013, 20:45
| Отредактировано: Joopeeter - 20 сентября 2013, 20:50
Да, ещё. Можно (и даже лучше, наверное) заменить тип переменной с short на float. Тогда скрипт будет отсчитывать именно по 24 часа, а не просто отслеживать, что наступил новый день.
Тогда как мне запустить этот осчет именно после нужной сталии квеста?
Добавить это условие в соответствующую проверку, то есть
Код
if (GetStage a03HellRobotPitti >= 65) && DayX==0 set DayX to GameDaysPassed+1 elseif DayX > GameDaysPassed ;ничего не делать elsif GetStage a03HellRobotPitti >= 65 && DayX<GameDaysPassed set DayX to 10000000 ShowMessage a10HellThreeDaysPastMessage a10TroopersEnableRef.enable a10DeleteCorpseSupermutansXMarker.disable a10DisableMiscItemXMarker.enable a01PostNCRDisableRef.disable a09PostNCRXMarker.enable Setstage a01HellOfficeBuildingII 5 StopQuest a03HellRobotPitti
endi
Там со стадиями такая особенность - если квест уже побывал на стадии, допустим, 65 или больше, то даже если он потом перешёл на стадию с меньшим номером, то GetStage всё равно будет возвращать 65 или больше. Тут, по идее, это не должно влиять, но можно запускать таймер из результ-скрипта самой стадии. То есть как-то так:
Код
if (GetStage a03HellRobotPitti >= 65) && DayX== -1 set DayX to GameDaysPassed+1 elseif DayX > GameDaysPassed ;ничего не делать elsif GetStage a03HellRobotPitti >= 65 && DayX<GameDaysPassed set DayX to 10000000 ShowMessage a10HellThreeDaysPastMessage a10TroopersEnableRef.enable a10DeleteCorpseSupermutansXMarker.disable a10DisableMiscItemXMarker.enable a01PostNCRDisableRef.disable a09PostNCRXMarker.enable Setstage a01HellOfficeBuildingII 5 StopQuest a03HellRobotPitti
endi
а в результ-скрипте стадии:
Код
set [ID квеста стаймером].DayX to -1
Изменение репутации для пользователя Hellraiser
HellraiserOffline
Сообщение №994
написано: 20 сентября 2013, 20:46
| Отредактировано: Hellraiser - 20 сентября 2013, 23:01
Joopeeter, Разобрался. У меня заработала вот такая конструкция:
if (GetStage a03HellRobotPitti == 65) if DayX==0 set DayX to GameDaysPassed+1 elseif DayX > GameDaysPassed ;ничего не делать else set DayX to 10000000 ShowMessage a10HellThreeDaysPastMessage a10TroopersEnableRef.enable a10DeleteCorpseSupermutansXMarker.disable a10DisableMiscItemXMarker.enable a01PostNCRDisableRef.disable a09PostNCRXMarker.enable Setstage a01HellOfficeBuildingII 5 StopQuest a03HellRobotPitti endif endif
Еще раз спасибо за помощь! Кстати, поменял переменную на float - стал честно отсчитывать часы. UPD Пошел по вашему совету - оставил часть в квестовом скрипте, а часть в результ-скрипте нужной стадии. Получилось элегантно и красиво.
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
Изменение репутации для пользователя nortgen
nortgenOffline
Сообщение №995
написано: 30 сентября 2013, 14:04
| Отредактировано: KAIN48 - 30 сентября 2013, 14:08
гекк с глюкоисправителем + NVSE корорый не хочет скрипт сохранять ругается Set ITUHMannequinFemale01Ref.Pose to 2 типа такой функции не понимает
уже вижу кто то бился с этой проблемой может кто что подскажет
scn EHMannequinScript short Activated short type short button Short Pose short RePose Short EndPose short WasPossed Float Timer REF ActorName REF MoveToPos begin OnLoad Set Timer to .1 SetActorsAI 0 Set Repose to 1 SetGhost 1 SetPlayerTeammate 0 end Begin OnActivate Player if IsActionRef Player == 1 && Activated == 0 If GetISID EHMannequinMale showmessage EHMannequinMessage else showmessage EHMannequinMessage02 endif endif end Begin GameMode If GetInSameCell EHMannequinsStartREF == 0 Set MoveToPos to GetLinkedRef if MoveToPos == 0 ;doesnt have a linked reference Disable MarkForDelete else SetActorAlpha 0 Moveto MoveToPos endif endif IF GetInSameCell player set button to getbuttonpressed if button == 0
SetPlayerTeammate 1 OpenTeammateContainer SetPlayerTeammate 0 Set Pose to 2 elseif button ==1 Set WasPossed to 0 Disable
If GetIsReference EHMannequinMale01 EHMannequinFemale01.Enable removeallitems EHMannequinFemale01 Set EHMannequinFemale01.Pose to 2 elseIf GetIsReference EHMannequinMale02 EHMannequinFemale02.Enable removeallitems EHMannequinFemale02 Set EHMannequinFemale02.Pose to 2 elseIf GetIsReference EHMannequinMale03 EHMannequinFemale03.Enable removeallitems EHMannequinFemale03 Set EHMannequinFemale03.Pose to 2 elseIf GetIsReference EHMannequinMale04 EHMannequinFemale04.Enable removeallitems EHMannequinFemale04 Set EHMannequinFemale04.Pose to 2 elseIf GetIsReference EHMannequinMale05 EHMannequinFemale05.Enable removeallitems EHMannequinFemale05 Set EHMannequinFemale05.Pose to 2 elseIf GetIsReference EHMannequinMale06 EHMannequinFemale06.Enable removeallitems EHMannequinFemale06 Set EHMannequinFemale06.Pose to 2 elseIf GetIsReference EHMannequinMale07 EHMannequinFemale07.Enable removeallitems EHMannequinFemale07 Set EHMannequinFemale07.Pose to 2 elseIf GetIsReference EHMannequinMale08 EHMannequinFemale08.Enable removeallitems EHMannequinFemale08 Set EHMannequinFemale08.Pose to 2 elseIf GetIsReference EHMannequinMale09 EHMannequinFemale09.Enable removeallitems EHMannequinFemale09 Set EHMannequinFemale09.Pose to 2 elseIf GetIsReference EHMannequinMale10 EHMannequinFemale10.Enable removeallitems EHMannequinFemale10 Set EHMannequinFemale10.Pose to 2 elseIf GetIsReference EHMannequinMale11 EHMannequinFemale11.Enable removeallitems EHMannequinFemale11 Set EHMannequinFemale11.Pose to 2 elseIf GetIsReference EHMannequinMale12 EHMannequinFemale12.Enable removeallitems EHMannequinFemale12 Set EHMannequinFemale12.Pose to 2 endif elseif button ==2 Set WasPossed to 0 Disable If GetIsReference EHMannequinFemale01 == 1 EHMannequinMale01.Enable removeallitems EHMannequinMale01 Set EHMannequinMale01.Pose to 2 elseIf GetIsReference EHMannequinFemale02 == 1 EHMannequinMale02.Enable removeallitems EHMannequinMale02 Set EHMannequinMale02.Pose to 2 elseIf GetIsReference EHMannequinFemale03 == 1 EHMannequinMale03.Enable removeallitems EHMannequinMale03 Set EHMannequinMale03.Pose to 2 elseIf GetIsReference EHMannequinFemale04 == 1 EHMannequinMale04.Enable removeallitems EHMannequinMale04 Set EHMannequinMale04.Pose to 2 elseIf GetIsReference EHMannequinFemale05 == 1 EHMannequinMale05.Enable removeallitems EHMannequinMale05 Set EHMannequinMale05.Pose to 2 elseIf GetIsReference EHMannequinFemale06 == 1 EHMannequinMale06.Enable removeallitems EHMannequinMale06 Set EHMannequinMale06.Pose to 2 elseIf GetIsReference EHMannequinFemale07 == 1 EHMannequinMale07.Enable removeallitems EHMannequinMale07 Set EHMannequinMale07.Pose to 2 elseIf GetIsReference EHMannequinFemale08 == 1 EHMannequinMale08.Enable removeallitems EHMannequinMale08 Set EHMannequinMale08.Pose to 2 elseIf GetIsReference EHMannequinFemale09 == 1 EHMannequinMale09.Enable removeallitems EHMannequinMale09 Set EHMannequinMale09.Pose to 2 elseIf GetIsReference EHMannequinFemale10 == 1 EHMannequinMale10.Enable removeallitems EHMannequinMale10 Set EHMannequinMale10.Pose to 2 elseIf GetIsReference EHMannequinFemale11 == 1 EHMannequinMale11.Enable removeallitems EHMannequinMale11 Set EHMannequinMale11.Pose to 2 elseIf GetIsReference EHMannequinFemale12 == 1 EHMannequinMale12.Enable removeallitems EHMannequinMale12 Set EHMannequinMale12.Pose to 2 endif elseif button == 3 ;equip weapon Set pose to 1 AddItem EHMannequinAmmoList, 1, 1 elseif button == 4 ;unequip weapon Set pose to 2 endif if Timer > 0 set Timer to Timer - GetSecondsPassed elseif EndPose == 1 && GetAnimAction != 0 && GetAnimAction != 1 ; Pose, stage 2. Turn off AI to freeze it in place. RemoveScriptPackage EHMannequinWeaponReady RemoveScriptPackage EHMannequinWeaponHolster SetActorsAI 0 Set EndPose to 0 RemoveItem EHMannequinAmmoList, 1, 1 Set Activated to 0 SetActorAlpha 1 elseIf Pose == 1 SetActorAlpha 0 Set Activated to 1 SetActorsAI 1 set Timer to 4 set EndPose to 1 Set WasPossed to 1 Set Pose to 0 AddScriptPackage EHMannequinWeaponReady EvaluatePackage EHMannequinWeaponReady ;SetPlayerTeammate 0
elseIf Pose == 2 SetActorAlpha 0 Set Activated to 1 SetActorsAI 1 set Timer to 2 set EndPose to 1 Set WasPossed to 0 Set Pose to 0 AddScriptPackage EHMannequinWeaponHolster EvaluatePackage EHMannequinWeaponHolster ;SetPlayerTeammate 0 elseIf RePose == 1 && GetInSameCell Player == 1 Set MoveToPos to GetLinkedRef Moveto MoveToPos
If WasPossed == 1 Set Pose to 1 Set RePose to 0 AddItem EHMannequinAmmoList, 1, 1 else Set Pose to 2 Set RePose to 0 endif endif endif END
Ёмаё, кто ж пишет в скрипте всё в одну строчку? Не разобрать же ничего! Надеюсь, хоть в ГЭКК ты его не в таком виде копируешь?
А позу искать в скриптах, висящих на тех манекенах. ГЭКК же не знает, что ты только ещё собираешься создать все те объекты и переменные, которые упоминаешь в своём скрипте, вот и намекает тебе на это: "неизвестная функция или переменная". То есть перед тем, как сохранять этот скрипт, надо повесить на манекены их собственные скрипты, в которых должна быть объявлена эта переменная Pose, разместить в мире реф-копии манекенов и дать им всем такие RefID, под которыми они фигурируют в приведённом скрипте. И разбить скрипт на строки! Или это уже говорил?..
Ты их просто не увидела. Joopeeter об этом и писал, когда говорил про "в одну строку"
<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> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Всем привет! Опять всё тот же TTW. Нужно сделать так, чтобы человек, начавший в СП, при активации двери начинал проходить сюжет НВ. Ставил в скрипт строчку setstage VCG00 0. Всё начиналось хорошо - интро НВ, затем меня куда-то телепортировало (предполагаю, что к Доку), а дальше белый экран и всё. Как "заставить" продолжить квест? Что я делаю не так?
Вис, на мой взгляд - т.к. перс уже создан, то там надо начинать со следующего квеста. Какой там идёт первый в мэйн ветке? Всё, что имеет в идентификаторе CG - это элементы генерации персонажа (character generator). Главный квест вроде бы имеет MQ в ИД.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
DoorRef.disable ; скрыть дверь DoorRef.markfordelete ; эту строку пишите, если больше не будете пользоваться этой дверью
Внимание: DoorRef - это ваша копия в мире, а не базовый объект.
Если хотите открыть дверь: DoorRef.SetOpenState 1 если хотите закрыть дверь: DoorRef.SetOpenState 0
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
Death is the old debt, which sooner or later will have to pay. This is as good a day to die as any, but at your funeral nobody will come. Your way in hell you'll have to do yourself... Happy journey! Alright, guys, all will be there, but you before...
magnumspec, через чарген надо проходить? Если нет, то мэйнквест начинается как раз при выходе за дверь дома дока. Ну на еще можно попытаться не с первого щага чаргена начинать, а с последнего. Я не помню, какие именно там стадии.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
привет! подскажите пожалуйста ответ на один вроде простой вопрос: довольно часто в скриптах напротив функций условий не используются цифровые значения, например: If Player.GetItemCount BabahGUN и все. правильно ли я понимаю, что скрипт будет работать при любом значении кроме нуля? и будет ли такой способ работать так же если я объвляю переменную, например:
QuazarX, да. В условных выражениях используется приведение к булевым типам, в которых 0 - ложь, не ноль - истина. Я в руководстве для начинающих вроде бы писал об этом.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя Вис
ВисOffline
Сообщение №1009
написано: 7 октября 2013, 16:40
| Отредактировано: Вис - 7 октября 2013, 16:41
Если чарген - это генератор внешности, то, да, надо. Необходимо пройти всё - от интро до двери Дока. Пока работает только интро, а дальше белый экран...
Вис, ясенько. У меня сейчас нет под рукой конструктора, потому не могу предположить что именно вызывает краш. Если решишь сам - отпишись. Я в ближайшее время (неделя-две) постараюсь поставить гекк и посмотреть.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Еще раз извиняюсь но все не как не могу разобраться с командами .RePose to 1 .Pose to 2 .Pose to 1 откуда это брать вот 3 скрипта на манекенов
scn EHMannequinScript
short Activated short type short button Short Pose short RePose Short EndPose short WasPossed
Float Timer REF ActorName REF MoveToPos
begin OnLoad Set Timer to .1 Set Repose to 1 SetActorsAI 0 SetGhost 1 SetPlayerTeammate 1 end
begin OnActivate
if IsActionRef Player == 1 && Activated == 0
If GetIsID EHMannequin01 == 1 showmessage EHMannequinMessageCF set type to 0 else showmessage EHMannequinMessageCM set type to 1 endif endif
end
Begin GameMode
IF GetInSameCell player
set button to getbuttonpressed
if button == 0
OpenTeammateContainer Set Pose to 2
elseif button ==1
;Change Mannequin Sex
if type == 0
Set WasPossed to 0 Disable
If GetIsReference EHMannequin01REF == 1 EHMannequinFemale01REF.Enable removeallitems EHMannequinFemale01REF Set EHMannequinFemale01REF.Pose to 2
elseIf GetIsReference EHMannequin02REF == 1 EHMannequinFemale02REF.Enable removeallitems EHMannequinFemale02REF Set EHMannequinFemale02REF.Pose to 2
elseIf GetIsReference EHMannequin03REF == 1 EHMannequinFemale03REF.Enable removeallitems EHMannequinFemale03REF Set EHMannequinFemale03REF.Pose to 2
elseIf GetIsReference EHMannequin04REF == 1 EHMannequinFemale04REF.Enable removeallitems EHMannequinFemale04REF Set EHMannequinFemale04REF.Pose to 2
elseIf GetIsReference EHMannequin05REF == 1 EHMannequinFemale05REF.Enable removeallitems EHMannequinFemale05REF Set EHMannequinFemale05REF.Pose to 2
elseIf GetIsReference EHMannequin06REF == 1 EHMannequinFemale06REF.Enable removeallitems EHMannequinFemale06REF Set EHMannequinFemale06REF.Pose to 2
elseIf GetIsReference EHMannequin07REF == 1 EHMannequinFemale07REF.Enable removeallitems EHMannequinFemale07REF Set EHMannequinFemale07REF.Pose to 2
elseIf GetIsReference EHMannequin08REF == 1 EHMannequinFemale08REF.Enable removeallitems EHMannequinFemale08REF Set EHMannequinFemale08REF.Pose to 2
elseIf GetIsReference EHMannequin09REF == 1 EHMannequinFemale09REF.Enable removeallitems EHMannequinFemale09REF Set EHMannequinFemale09REF.Pose to 2
elseIf GetIsReference EHMannequin10REF == 1 EHMannequinFemale10REF.Enable removeallitems EHMannequinFemale10REF Set EHMannequinFemale10REF.Pose to 2
elseIf GetIsReference EHMannequin11REF == 1 EHMannequinFemale11REF.Enable removeallitems EHMannequinFemale11REF Set EHMannequinFemale11REF.Pose to 2
elseIf GetIsReference EHMannequin12REF == 1 EHMannequinFemale12REF.Enable removeallitems EHMannequinFemale12REF Set EHMannequinFemale12REF.Pose to 2
elseIf GetIsReference EHMannequin13REF == 1 EHMannequinFemale13REF.Enable removeallitems EHMannequinFemale13REF Set EHMannequinFemale13REF.Pose to 2
elseIf GetIsReference EHMannequin14REF == 1 EHMannequinFemale14REF.Enable removeallitems EHMannequinFemale14REF Set EHMannequinFemale14REF.Pose to 2
elseIf GetIsReference EHMannequin15REF == 1 EHMannequinFemale15REF.Enable removeallitems EHMannequinFemale15REF Set EHMannequinFemale15REF.Pose to 2
elseIf GetIsReference EHMannequin16REF == 1 EHMannequinFemale16REF.Enable removeallitems EHMannequinFemale16REF Set EHMannequinFemale16REF.Pose to 2
endif
elseif type == 1
Set WasPossed to 0 Disable
If GetIsReference EHMannequinFemale01REF == 1 EHMannequin01REF.Enable removeallitems EHMannequin01REF Set EHMannequin01REF.Pose to 2
elseIf GetIsReference EHMannequinFemale02REF == 1 EHMannequin02REF.Enable removeallitems EHMannequin02REF Set EHMannequin02REF.Pose to 2
elseIf GetIsReference EHMannequinFemale03REF == 1 EHMannequin03REF.Enable removeallitems EHMannequin03REF Set EHMannequin03REF.Pose to 2
elseIf GetIsReference EHMannequinFemale04REF == 1 EHMannequin04REF.Enable removeallitems EHMannequin04REF Set EHMannequin04REF.Pose to 2
elseIf GetIsReference EHMannequinFemale05REF == 1 EHMannequin05REF.Enable removeallitems EHMannequin05REF Set EHMannequin05REF.Pose to 2
elseIf GetIsReference EHMannequinFemale06REF == 1 EHMannequin06REF.Enable removeallitems EHMannequin06REF Set EHMannequin06REF.Pose to 2
elseIf GetIsReference EHMannequinFemale07REF == 1 EHMannequin07REF.Enable removeallitems EHMannequin07REF Set EHMannequin07REF.Pose to 2
elseIf GetIsReference EHMannequinFemale08REF == 1 EHMannequin08REF.Enable removeallitems EHMannequin08REF Set EHMannequin08REF.Pose to 2
elseIf GetIsReference EHMannequinFemale09REF == 1 EHMannequin09REF.Enable removeallitems EHMannequin09REF Set EHMannequin09REF.Pose to 2
elseIf GetIsReference EHMannequinFemale10REF == 1 EHMannequin10REF.Enable removeallitems EHMannequin10REF Set EHMannequin10REF.Pose to 2
elseIf GetIsReference EHMannequinFemale11REF == 1 EHMannequin11REF.Enable removeallitems EHMannequin11REF Set EHMannequin11REF.Pose to 2
elseIf GetIsReference EHMannequinFemale12REF == 1 EHMannequin12REF.Enable removeallitems EHMannequin12REF Set EHMannequin12REF.Pose to 2
elseIf GetIsReference EHMannequinFemale13REF == 1 EHMannequin13REF.Enable removeallitems EHMannequin13REF Set EHMannequin13REF.Pose to 2
elseIf GetIsReference EHMannequinFemale14REF == 1 EHMannequin14REF.Enable removeallitems EHMannequin14REF Set EHMannequin14REF.Pose to 2
elseIf GetIsReference EHMannequinFemale15REF == 1 EHMannequin15REF.Enable removeallitems EHMannequin15REF Set EHMannequin15REF.Pose to 2
elseIf GetIsReference EHMannequinFemale16REF == 1 EHMannequin16REF.Enable removeallitems EHMannequin16REF Set EHMannequin16REF.Pose to 2
endif
endif
elseif button == 2 ;equip weapon Set pose to 1 AddItem EHMannequinAmmoList, 1, 1
elseif button == 3 ;unequip weapon Set pose to 2
endif
if Timer > 0 set Timer to Timer - GetSecondsPassed
elseif EndPose == 1 && GetAnimAction != 0 && GetAnimAction != 1 ; Pose, stage 2. Turn off AI to freeze it in place. RemoveScriptPackage EHMannequinWeaponReady RemoveScriptPackage EHMannequinWeaponHolster SetActorsAI 0 Set EndPose to 0 RemoveItem EHMannequinAmmoList, 1, 1 Set Activated to 0 SetActorAlpha 1
elseIf Pose == 1 SetActorAlpha 0 Set Activated to 1 SetActorsAI 1 set Timer to 4 set EndPose to 1 Set WasPossed to 1 Set Pose to 0 AddScriptPackage EHMannequinWeaponReady EvaluatePackage EHMannequinWeaponReady
elseIf Pose == 2 SetActorAlpha 0 Set Activated to 1 SetActorsAI 1 set Timer to 2 set EndPose to 1 Set WasPossed to 0 Set Pose to 0 AddScriptPackage EHMannequinWeaponHolster EvaluatePackage EHMannequinWeaponHolster
elseIf RePose == 1 && GetInSameCell Player == 1
Set MoveToPos to GetLinkedRef Moveto MoveToPos
If WasPossed == 1 Set Pose to 1 Set RePose to 0 AddItem EHMannequinAmmoList, 1, 1 else Set Pose to 2 Set RePose to 0 endif
endif endif
END
scn EHMannequinSciptPosition
Short DoOnce Short DoOnceB
Begin GameMode
;Males
if Player.GetInSameCell EHMannequinsStartREF == 0 && DoOnce == 0
If EHMannequin01REF.GetDisabled == 0 Set EHMannequin01REF.RePose to 1 endif If EHMannequin02REF.GetDisabled == 0 Set EHMannequin02REF.RePose to 1 endif If EHMannequin03REF.GetDisabled == 0 Set EHMannequin03REF.RePose to 1 endif If EHMannequin04REF.GetDisabled == 0 Set EHMannequin04REF.RePose to 1 endif If EHMannequin05REF.GetDisabled == 0 Set EHMannequin05REF.RePose to 1 endif If EHMannequin06REF.GetDisabled == 0 Set EHMannequin06REF.RePose to 1 endif If EHMannequin07REF.GetDisabled == 0 Set EHMannequin07REF.RePose to 1 endif If EHMannequin08REF.GetDisabled == 0 Set EHMannequin08REF.RePose to 1 endif If EHMannequin09REF.GetDisabled == 0 Set EHMannequin09REF.RePose to 1 endif If EHMannequin10REF.GetDisabled == 0 Set EHMannequin10REF.RePose to 1 endif If EHMannequin11REF.GetDisabled == 0 Set EHMannequin11REF.RePose to 1 endif If EHMannequin12REF.GetDisabled == 0 Set EHMannequin12REF.RePose to 1 endif If EHMannequin13REF.GetDisabled == 0 Set EHMannequin13REF.RePose to 1 endif If EHMannequin14REF.GetDisabled == 0 Set EHMannequin14REF.RePose to 1 endif If EHMannequin15REF.GetDisabled == 0 Set EHMannequin15REF.RePose to 1 endif If EHMannequin16REF.GetDisabled == 0 Set EHMannequin16REF.RePose to 1 endif
;Females If EHMannequinFemale01REF.GetDisabled == 0 Set EHMannequinFemale01REF.RePose to 1 endif If EHMannequinFemale02REF.GetDisabled == 0 Set EHMannequinFemale02REF.RePose to 1 endif If EHMannequinFemale03REF.GetDisabled == 0 Set EHMannequinFemale03REF.RePose to 1 endif If EHMannequinFemale04REF.GetDisabled == 0 Set EHMannequinFemale04REF.RePose to 1 endif If EHMannequinFemale05REF.GetDisabled == 0 Set EHMannequinFemale05REF.RePose to 1 endif If EHMannequinFemale06REF.GetDisabled == 0 Set EHMannequinFemale06REF.RePose to 1 endif If EHMannequinFemale07REF.GetDisabled == 0 Set EHMannequinFemale07REF.RePose to 1 endif If EHMannequinFemale08REF.GetDisabled == 0 Set EHMannequinFemale08REF.RePose to 1 endif If EHMannequinFemale09REF.GetDisabled == 0 Set EHMannequinFemale09REF.RePose to 1 endif If EHMannequinFemale10REF.GetDisabled == 0 Set EHMannequinFemale10REF.RePose to 1 endif If EHMannequinFemale11REF.GetDisabled == 0 Set EHMannequinFemale11REF.RePose to 1 endif If EHMannequinFemale12REF.GetDisabled == 0 Set EHMannequinFemale12REF.RePose to 1 endif If EHMannequinFemale13REF.GetDisabled == 0 Set EHMannequinFemale13REF.RePose to 1 endif If EHMannequinFemale14REF.GetDisabled == 0 Set EHMannequinFemale14REF.RePose to 1 endif If EHMannequinFemale15REF.GetDisabled == 0 Set EHMannequinFemale15REF.RePose to 1 endif If EHMannequinFemale16REF.GetDisabled == 0 Set EHMannequinFemale16REF.RePose to 1 endif
Set DoOnce to 1
elseif Player.GetInSameCell EHMannequinsStartREF Set DoOnce to 0 endif
и везде одно и тоже я налетаю на не известная функция .Pose to 1
Это не функция. Это установка переменной. Т.е. в скрипте, что висит на манекене EHMannequinFemale02REF есть переменная Pose. Чтобы её установить в нужное значение из другого скрипта применяется т.н. "оператор доступа" - точка. Т.о. строка Set EHMannequin10REF.Pose to 2 означает, что в переменную Pose в скрипте, повешенном на объект EHMannequin10REF, записывается значение 2. Я в руководстве вроде писал об этом. Надо проверить. ЗЫ Проверил - написал. Пункт 3.3.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
nortgen, а что надоть то? Что тебя в имеющихся скриптах не устраивает. Какова задача вообще? Если хочешь на свои манекены перевешать, то нужно соответственно свои и REF`ы вписать вместо HMannequinХХREF. Перед этим их, естественно, прописав - в окне рендера даблклик на нужном манекене и в строке ReferenceID (емнип) пишешь нужное (пункт 3.2. упомянутого ранее руководства).
Что то я сам запутался - не надо скрипт менять. Надо твоим манекенам прописать ReferenceID из скриптов - так проще будет. Ну и если твоих манекенов меньше, то лишние строки из скриптов лучше убрать.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
да все так создал манекенов создал метки и все что к ним относится, но как только начинаю сохранять скрипт он пишет не известная функция .Pose to 1 .RePose to 1 .Pose to 2 каждыи скрипт тормозит на позах и все я не чего не могу хотя в том моде я переносил манекенов в другую ячейку без проблем
Изменение репутации для пользователя Artem13
Artem13Offline
Сообщение №1016
написано: 8 октября 2013, 16:22
| Отредактировано: Artem13 - 8 октября 2013, 16:22
nortgen, а скрипт на манекенах то уже висит? Тут, похоже, надо сделать так - создать пустую заготовку для скрипта (с объявленными переменными), повесить ее на манекены, а потом уже дописывать скрипт - я не вижу другого способа, чтобы компилятор не ругался. Скрин окошка свойств (с ReferenceID) хоть одного манекена выложи.
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя nortgen
nortgenOffline
Сообщение №1017
написано: 8 октября 2013, 16:38
| Отредактировано: nortgen - 8 октября 2013, 16:41
Это не интересно. Там же всё работает. Там, где НЕ работает в чём отличия?
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)
Изменение репутации для пользователя nortgen
nortgenOffline
Сообщение №1019
написано: 8 октября 2013, 17:03
| Отредактировано: nortgen - 8 октября 2013, 17:07
Так. По порядку. Манекены считаю, что уже созданы. 1. Теперь рисуем скрипт для манекенов
Код
scn EHMannequinScript
short Activated short type short button Short Pose short RePose Short EndPose short WasPossed
Float Timer REF ActorName REF MoveToPos
begin OnLoad Set Timer to .1 Set Repose to 1 SetActorsAI 0 SetGhost 1 SetPlayerTeammate 1 end
begin OnActivate
if IsActionRef Player == 1 && Activated == 0
If GetIsID EHMannequin01 == 1 showmessage EHMannequinMessageCF set type to 0 else showmessage EHMannequinMessageCM set type to 1 endif endif
end
END
Теперь скрипт должен сохраниться без проблем.
2. Вешаем этот скрипт на манекены.
3. А вот теперь добавляем остальные строки.
ЗЫ Кстати, если в этом ворнинге нажать Да или Отмена - скрипт сохранится?
<a class="link" href="http://nick-name.ru/sertificates/278209/" rel="nofollow" target="_blank"> border="0" alt=""/</a> Да, мы бандиты и бродяги, как злословит молва, Мы попадаем в передряги, помня эти слова. Смотри вперед и не сдавайся ты на милость судьбе! Предай их всех, останься верен себе. (Канцлер Ги - Кантри Бреган Д'Эрт)