Простые скрипты.
|
|
Luna | Дата: Пятница-Fredas, 20.09.2013, 12:36 | Сообщение # 1 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Результирующие скрипты в диалогах:
Добавление заклинания игроку (или НПС, если заменить Player на ID НПСа) Player.addspell aaaSelPriziv
Удаление заклинания у игрока (или НПС, если заменить Player на ID НПСа) Player.removespell aaaSelPriziv
Перевести игрока во фракцию кого-то с рангом 1 ( в данном случае это позволит игроку стать другом НПС) Player.SetFactionRank aaaSelena, 1
Удалить из инвентаря игрока вещь aaaSelBook в количестве 1 Player.RemoveItem aaaSelBook 1
ДОбавить игроку вещь aaaSelBook в количестве 1 Player.AddItem aaaSelBook 1
Старт квеста и переход на другую стадию квеста (в данном случае на 10) startquest aaaSelQuest1 SetStage aaaSelQuest1 10
Проверка суммы денег у игрока ( в данном случае, чтоб было не меньше 100 золотых, тогда деньги у игрока изымаются, а предмет купленный добавляется в инвентарь) if ( Player.GetGold <100 ) Messagebox "У Вас нет таких денег" else Player.RemoveItem gold001 100 Player.AddItem aaaSelBook 1 endif
Заставляет НПС напасть на игрока startcombat player
Проверка текущего местонахождения НПС и добавление, в зависимости от этого, AI пакета ( в данном случае - НПС будет есть в тавернах городов) RemoveScriptPackage if ( GetInCell Bruma == 1 ) AddScriptPackage aaaSelEatBruma else if ( GetInCell Bravil == 1 ) AddScriptPackage aaaSelEatBravil else if ( GetInCell Anvil == 1 ) AddScriptPackage aaaSelEatAnvil else if ( GetInCell Cheydinhal == 1 ) AddScriptPackage aaaSelEatCheyd else if ( GetInCell Chorrol == 1 ) AddScriptPackage aaaSelEatCor else if ( GetInCell IC == 1 ) AddScriptPackage aaaSelEatIC else if ( GetInCell Leyawiin == 1 ) AddScriptPackage aaaSelEatLeyav else if ( GetInCell Skingrad == 1 ) AddScriptPackage aaaSelEatSk else AddScriptPackage aaaSelEat11 endif endif endif endif endif endif endif endif
Восстановление здоровья игроку Player.ResetHealth
Скрипты, которые "вешаются на предметы или квесты
Переход на следующую стадию квеста при добавлении вещи в инвентарь игрока (навешивается на предмет, добавляемый в инвентарь) ScriptName aaaSelQuest2Scr Begin OnAdd if ( GetStage aaaSelQuest2 == 10 ) SetStage aaaSelQuest2 20 endif End
Переход на следующую стадию квеста после смерти некоего НПС ScriptName aaaDrem1 Begin OnDeath if ( GetStage aaaDom == 10 ) SetStage aaaDom 20 endif End
Скрипт на покупку замка (продает НЕ НПС) scn aaaZamokProv Short button Short activated begin onActivate If ( activated == 0 ) MessageBox "Желаешь купить замок за 500000 септимов?","Да","Нет" Set activated to 1 elseif ( activated > 1) MessageBox "Замок уже твой." EndIf End Begin GameMode If ( activated == 1 ) Set button to GetButtonPressed If ( button == 1 ) MessageBox "Твое дело. Но посмотри, от чего ты отказываешься! Если передумаешь, приходи." Set activated to 0 elseif ( button == 0 ) if ( Player.GetGold <500000 ) Messagebox "У тебя нет таких денег. Иди подзаработай и приходи позже." Set activated to 0 else Messagebox "Поздравляю! Замок твой! Держи ключ!" Player.RemoveItem gold001 500000 Player.AddItem aaaKey1 1 Set activated to 2 endif endif endif endif end
Скрипт на активацию бани, появление пара и восстановление здоровья игрока scn aaaBanya Short button Short activated begin onActivate If ( activated == 0 ) MessageBox "Попаримся?","Да","Нет" Set activated to 1 elseif ( activated >= 2) MessageBox "С легким паром!" AAALunaMistRef.Disable EndIf End Begin GameMode If ( activated == 1 ) Set button to GetButtonPressed If ( button == 1 ) AAALunaMistRef.Disable MessageBox "Передумаешь, поддай парку." Set activated to 0 elseif ( button == 0 ) Messagebox "Легкого пара! Сейчас ты будешь, как новенький." AAALunaMistRef.Enable Player.ResetHealth Set activated to 2 endif endif endif end
Скрипт для заклинания телепортации 1) телепортация после кастования заклинания (тип Magic, вешается на заклинание)
ScriptName 17 Begin ScriptEffectStart Player.MoveTo 155245555 End
2) добавление заклинания телепортации игроку после прочтения книги
scn aaaBashna short read Begin OnActivate if(read == 0) set read to 1 Player.AddSpell 154422222 endif activate end
Открывание двери при наличии необходимых вещей в инвентаре игрока scn aaaLuk Begin OnActivate if ( player.getitemcount 458796 > 0 )&&( player.getitemcount 45896547 > 0 )&&( player.getitemcount 458878 > 0 ) SetStage aaaPodval 20 endif if ( GetStage aaaPodval< 20 ) MessageBox "Вы не можете открыть этот люк. У Вас нет всех необходимых вещей" return elseif ( GetStage aaaPodval >= 20 ) Activate endif End
Скрипт, который заставляет НПС атаковать игрока, если квест находится на определенной стадии scn aaaDremSCRIPT begin gamemode if ( GetStage aaaDom >= 10 ) StartCombat player endif endif end
Скрипт на общение с домашними животными (шуточный) scn aaaDreug short button short doonce begin onactivate player if ( doonce == 0 ) StopCombat player messagebox "Что собираетесь делать?" "Кормить" "Снова кормить" "Гладить" set doonce to 1 endif end begin gamemode if ( doonce == 1 ) set button to getbuttonpressed if ( button == 0 ) if ( player.getitemcount HumanHeart > 0 ) player.removeitem HumanHeart 1 elseif ( player.getitemcount HumanHeart <= 0 ) messagebox "Вам нечем кормить дреуга" endif set doonce to 0 elseif ( button == 1 ) messagebox "Осторожно! Дреуг уже поел и его может стошнить." set doonce to 0 elseif ( button == 2 ) messagebox "Вы уверены? Надеюсь, у Вас хороший личный хирург." StartCombat player set doonce to 0 endif endif end
Ну вот пока все))) Попозже добавлю другие скрипты, в том числе, с использованием ОБСЕ
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
ProfessorSeverus | Дата: Пятница-Fredas, 20.09.2013, 13:13 | Сообщение # 2 |
Партурнакс Георгиевич
Группа: Главный администратор
Сообщений: 17608
Награды: 157
Статус: Выехал
| Luna, очень полезная информация, для тех кто хочет познать скрипты - очень пригодится! Надо её в Статьи выложить! Сделать там категорию, может, соответствующую?
О! Эльберет Гильтониэль! Где бы не были бестолковые животные, хищники всегда неподалеку... Янус Гассилдор
Моя главная проблема в жизни — это равнодушие к внешнему миру. ©Карл Лагерфельд
|
|
| |
Luna | Дата: Пятница-Fredas, 20.09.2013, 13:16 | Сообщение # 3 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| насчет статей - не знаю. не уверена, что это там к месту будет.
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
ProfessorSeverus | Дата: Пятница-Fredas, 20.09.2013, 13:25 | Сообщение # 4 |
Партурнакс Георгиевич
Группа: Главный администратор
Сообщений: 17608
Награды: 157
Статус: Выехал
| Luna, а почему нет? Если у нас есть Мастер по скриптам, то надо, наверное, этим пользоваться!)))
О! Эльберет Гильтониэль! Где бы не были бестолковые животные, хищники всегда неподалеку... Янус Гассилдор
Моя главная проблема в жизни — это равнодушие к внешнему миру. ©Карл Лагерфельд
|
|
| |
Luna | Дата: Пятница-Fredas, 20.09.2013, 13:27 | Сообщение # 5 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| ну уж про Мастера ты загнул конечно, профессор) Но все равно приятно)))
Тогда давай сделаем, пусть там будет))
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
ProfessorSeverus | Дата: Пятница-Fredas, 20.09.2013, 13:55 | Сообщение # 6 |
Партурнакс Георгиевич
Группа: Главный администратор
Сообщений: 17608
Награды: 157
Статус: Выехал
| Luna, не загибал, а сказал Правду!))
О! Эльберет Гильтониэль! Где бы не были бестолковые животные, хищники всегда неподалеку... Янус Гассилдор
Моя главная проблема в жизни — это равнодушие к внешнему миру. ©Карл Лагерфельд
|
|
| |
Luna | Дата: Пятница-Fredas, 20.09.2013, 14:00 | Сообщение # 7 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Мастер - это Алекс Тирекс.
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
Luna | Дата: Суббота-Loredas, 21.09.2013, 09:51 | Сообщение # 8 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Продолжаю выкладывать примеры скриптов:
Скрипт на появление надписи при активации объекта scn 012yhyhyhyhy begin onActivate if isActionRef player == 1 messagebox "Скройся в ужасе, двери нет" endif End
Оживание противника после смерти (со спецэффектами) scn AaaBloodScript begin OnDeath PlayMagicShaderVisuals effectSummonMythicDawn 5 PlaySound AMBThunder Resurrect 1 end
Появление НПС при воздействии на некий активатор, начало разговора, инициируемое НПС ScriptName aaaBoyScr Short activ begin onActivate If Activ == 0 aaaBoyRef.Enable aaaBoyRef.StartConversation player, Greeting Set activ to 1 endif end
Отслеживание выбора только одного предмета из предложенных нескольких вариантов )навешивается на ВСЕ предлагаемые для выбора предметы с небольшими различиями по IP) ScriptName aaaChmot1Scr begin onAdd Player MessageBox "Вы можете выбрать только одну вещь из шести" If ( Player.GetItemCount aaSmot2 == 1) Player.RemoveItem aaSmot2 1 aaaChost15Ref.AddItem aaSmot2 1 else If ( Player.GetItemCount aaaSmot3 == 1) Player.RemoveItem aaaSmot3 1 aaaChost14Ref.AddItem aaaSmot3 1 else If ( Player.GetItemCount aaaaSmot4 == 1) Player.RemoveItem aaaaSmot4 1 aaaChost13Ref.AddItem aaaaSmot4 1 else If ( Player.GetItemCount aaaaaSmot5 == 1) Player.RemoveItem aaaaaSmot5 1 aaaChost12Ref.AddItem aaaaaSmot5 1 else If ( Player.GetItemCount aaaaaaSmot6 == 1) Player.RemoveItem aaaaaaSmot6 1 aaaChost11Ref.AddItem aaaaaaSmot6 1 endif endif endif endif endif
При взятии вещи из контейнера ( в данном случае, гроба) рядом с гробом с ревом появляется мертвец и нападает на игрока, происходит переход на следующую стадию квеста Scn aaaDosp1Scr Begin onAdd Player SetStage aaaSklep 50 aaaZombi1Ref.Enable playsound npczombieattack aaaZombi1Ref.StartCombat Player End
При воздействии на активатор любым из магических или простых ударов происходит переход на следующую стадию квеста и перемещение игрока в следующую локацию к маркеру Scn aaaIslandScr begin onMagicEffectHit FIDG Player.MoveTo aaaDeadIslandMarker SetStage aaaSklep 125 end begin onMagicEffectHit FRDG Player.MoveTo aaaDeadIslandMarker SetStage aaaSklep 125 end begin onMagicEffectHit SHDG Player.MoveTo aaaDeadIslandMarker SetStage aaaSklep 125 end begin OnHitWith Player.MoveTo aaaDeadIslandMarker SetStage aaaSklep 125 end
При прикосновении к активатору игрок получает выбор - умереть или отдать силу ScriptName aaaKolyaskaScr short Button short Var begin onActivate if ( Var == 0 ) MessageBox "Это Призрачная Инвалидная Коляска. Прикоснувшийся к ней умрет, если не отдаст Коляске свою силу." "Отдать силу" "Не отдавать силу" Set Var to 1 endif end onActivate begin GameMode if ( Var == 1 ) Set Button to GetButtonPressed if ( Button == 0 ) Cast SE05HerdirTortureSpell1 Player player.ModActorValue Strength -20 Message " Сила в обмен на душу. Выгодная сделка!" Set Var to 0 elseif ( Button == 1 ) player.kill endif endif endif end
При взаимодействии с триггером гаснет свет Scn aaaLampCavScr begin OnTrigger Player aaaLamp2Ref.Disable aaaLamp1Ref.Disable End
При надевании определенного предмета гардероба игрок переносится в другую локацию Scn aaaLYUK1Scr short shmot begin onActivate If shmot < 7 If ( Player.GetEquipped aSmot1 ==1 ) Player.moveto aaaMarkerLocation1Ref, 0, 0, 0 Autosave Set shmot to 1 elseIf ( Player.GetEquipped aaSmot2 ==1 ) Player.moveto aaaMarkerLokation2Ref, 0, 0, 0 Autosave Set shmot to 2 elseIf ( Player.GetEquipped aaaSmot3 ==1) Player.moveto aaaLokation3Ref, 0, 0, 0 Autosave Set shmot to 3 elseIf ( Player.GetEquipped aaaaSmot4 ==1 ) Player.moveto aaaMarkerPustotaRef, 0, 0, 0 Autosave Set shmot to 4 elseIf ( Player.GetEquipped aaaaaSmot5 ==1 ) Player.moveto aaaMarkerLokation5Ref, 0, 0, 0 Autosave Set shmot to 5 elseIf ( Player.GetEquipped aaaaaaSmot6 ==1 ) Player.moveto aaaLocation6MarkerRef, 0, 0, 0 Autosave Set shmot to 6 else MessageBox "Вы не можете открыть этот люк, наденьте амулет или кольцо" elseif (shmot >= 7) MessageBox "Люк больше не откроется" endif endif endif endif endif endif endif endif end
ТИПО замаскировался))))) Если на игроке не надет полный комплект костюмчика, дверь его не пропустит)) Scn aaaPPPPPP1Scr short shmot begin onActivate If ( Player.GetEquipped aa11245432 ==1 ) && ( Player.GetEquipped aa11545123 == 1)&& ( Player.GetEquipped aa14421213 == 1)&& ( Player.GetEquipped aa21556363455 == 1)&& ( Player.GetEquipped aa44565578531 == 1)&& ( Player.GetEquipped aaaWeapEbonyClaymore == 1) MessageBox " Хозяин! Простите, не признала! Проходите!" set shmot to 1 Player.moveto aaaIslandMarkerRef, 0, 0, 0 else MessageBox " Ты не Властитель душ! " Cast SE05HerdirTortureSpell1 Player return endif end
Изъятие у игрока читерского оружия на выходе из локации)) Scn aaaPPPPPP2Scr Short Door begin onActivate If ( Player.GetItemCount aaaWeapEbonyClaymore == 1) MessageBox " Меч Властителя Душ должен остаться на острове!" Set Door to 0 return else activate Set Door to 1 endif end
Общение с ведьмой-креатуром и результат разговора в зависимости от его начала ScriptName aaaSpaiderScr short Button short Var begin onActivate if ( Var == 0 ) MessageBox "Ведьма! Мне нужен проход на остров Горестей. " "Красавица, дай пройти" "Убирайся с дороги!" "Возьми мою силу" "Я заплачу тебе 1000 монет" Set Var to 1 endif end onActivate begin GameMode if ( Var == 1 ) Set Button to GetButtonPressed if ( Button == 0 ) Player.AddSpell aaaSpiderSpell1 SetStage aaaSklep 30 Set Var to 2 elseif ( Button == 1 ) StartCombat player Set Var to 2 elseif ( Button == 2 ) player.ModActorValue Strength -30 Message " У Вас взята сила" SetStage aaaSklep 30 Set Var to 2 elseif ( Button == 3 ) if (Player.getGold < 1000) MessageBox " У вас нет таких денег!" Set Var to 0 Return else Player.RemoveItem Gold001 1000 Set Var to 2 SetStage aaaSklep 30 Endif endif endif endif endif endif end Begin OnDeath SetStage aaaSklep 40 End
Раздача "новогодних подарков"))))))) Отдать правильный предмет стражу-креатуру ScriptName aaaStrazhBezumiaScr short Button short MyVar begin onActivate MessageBox "Страж!" "Возьми эту вещь!" "Ничего" Set MyVar to 1 end onActivate begin GameMode if ( MyVar == 1 ) Set Button to GetButtonPressed if ( Button == 0 ) aaaStrazhBezumiaChestRef.Activate player 1 Set MyVar to -1 Return elseif ( Button == 1 ) AddScriptPackage aaaStrazhWander Set MyVar to -1 Return endif endif
Переход стадии квеста на следующую при активации предмета в инвентаре (надеть, рассмотреть) Scn aaaTGAscript003 begin onequip setstage aaaTGAquest001 25 end
При активации предмета рядом с игроком появляется его точная копия и атакует его Scn Stone1Scr begin onActivate short Stone Ref New If Stone == 0 Set New to player.CreateFullActorCopy Set Stone to 1 new.StartCombat player Endif End Begin GameMode If New.GetDead == 1 New.RemoveItem aaSmot2 1 Endif End
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
Luna | Дата: Понедельник-Morndas, 18.11.2013, 23:07 | Сообщение # 9 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Продолжу.. Еще немного свежих скриптов.
Скрипт на кодовый замок. Открывается при наборе правильной комбинации из 4 цифр (2914).
Scn aaaaMaormerSeyfOnScript
Short Popitka Short Button1 Short Button2 Short Button3 Short Button4 Short CombiRight Short ChestOpen Short DoOnce
Begin OnActivate if ( ChestOpen == 2 ) Activate else Set chestopen to 1 set Popitka to 0 set CombiRight to 0 endIf end
Begin GameMode if (ChestOpen == 1) if (Popitka == 0) MessageBox,"Введите первую цифру кода","0","1","2","3","4","5","6","7","8","9" Set Popitka to 1 endif endif
if (Popitka == 1) set button1 to Getbuttonpressed if button1 == -1 return else Set Popitka to 2 endif endif
if (Popitka == 2) MessageBox,"Введите вторую цифру кода","0","1","2","3","4","5","6","7","8","9" Set Popitka to 3 endif
if (Popitka == 3) set button2 to Getbuttonpressed if button2 == -1 return else Set Popitka to 4 endif endif
if (Popitka == 4) MessageBox,"Введите третью цифру кода","0","1","2","3","4","5","6","7","8","9" Set Popitka to 5 endif
if (Popitka == 5) set button3 to Getbuttonpressed if button3 == -1 return else Set Popitka to 6 endif endif
if (Popitka == 6) MessageBox,"Введите четвертую цифру кода","0","1","2","3","4","5","6","7","8","9" Set Popitka to 7 endif
if (Popitka == 7) set button4 to Getbuttonpressed if button4 == -1 return else Set Popitka to 8 endif endif
if (Popitka == 8) if button1 == 2 Set CombiRight to CombiRight + 1 endif if button2 == 9 Set CombiRight to CombiRight + 1 endif if button3 == 1 Set CombiRight to CombiRight + 1 endif if button4 == 4 Set CombiRight to CombiRight + 1 endif
if (Popitka == 8) && (CombiRight == 4) Set ChestOpen to 2 set Popitka to 0 return endif
if (Popitka == 8) && (CombiRight <= 3) MessageBox"Код неверен." Set Popitka to 0 Set ChestOpen to 0 endif
elseif (chestopen == 0) return elseif (chestopen == 2) if Doonce == 0 set doonce to 1 Activate return endif else return endif end
Ларчик, выдающий деньги. (карманный банкомат )
Scn aaaMRLarecScr
Short Var Short Button Short Alarm Short Maxim
Begin OnEquip If aaaMRDreamMercyChestRef.Summa == 100000 Set aaaMRDreamMercyChestRef.Larchik to 1 Set Var to -1 else MessageBox "Постарайтесь не жадничать. Какая сумма Вам нужна?", "1 септим", "10 септимов", "100 септимов", "1000 септимов", "10000 септимов", "100000 септимов" Set Var to 1 endif end
Begin GameMode If Var == 1 Set Button to GetButtonPressed if ( Button == 0 ) If aaaMRDreamMercyChestRef.Summa+1<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+1 Player.AddItem gold001 1 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif elseif ( Button == 1 ) If aaaMRDreamMercyChestRef.Summa+10<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+10 Player.AddItem gold001 10 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif elseif ( Button == 2 ) If aaaMRDreamMercyChestRef.Summa+100<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+100 Player.AddItem gold001 100 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif elseif ( Button == 3 ) If aaaMRDreamMercyChestRef.Summa+1000<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+1000 Player.AddItem gold001 1000 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif elseif ( Button == 4 ) If aaaMRDreamMercyChestRef.Summa+10000<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+10000 Player.AddItem gold001 10000 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif elseif ( Button == 5 ) If aaaMRDreamMercyChestRef.Summa+100000<=100000 Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+100000 Player.AddItem gold001 100000 else Set Maxim to 100000-aaaMRDreamMercyChestRef.Summa Set aaaMRDreamMercyChestRef.Summa to aaaMRDreamMercyChestRef.Summa+Maxim Player.AddItem gold001 Maxim Set Var to -1 endif Endif Endif
Интересный и полезный прием - создание скрипта, содержащего одни переменные. Скрипт - объектный, объявленные в нем переменные могут использоваться в других скриптах. (что-то вроде глобальной переменной, но менее капризно)
Скрипт переменных. Навешан, например, на сундук с ID REF aaaMRDreamMercyChestRef Scn aaaMRVarScr
Short doonce Short Da Short HitVar Short Larchik Short Summa
При необходимости использовать переменную из этого скрипта, в нужном месте другого скрипта эта переменная запишется как, например, aaaMRDreamMercyChestRef.doonce
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |
Luna | Дата: Понедельник-Morndas, 10.02.2014, 20:17 | Сообщение # 10 |
Министр Иносайтных дел
Группа: Администраторы
Сообщений: 16776
Награды: 155
Статус: Выехал
| Еще немного скриптов:
Скрипт на переименование таверны ( с использованием ОБСЕ не ниже 19 версии)
Scn TavernScr
short button string_var NewName ; текстовая переменная
begin OnAdd aaaaaAZJRef OpenTextInput "Введите название %r | Принять | Не менять название" 0 1000 end
begin MenuMode 1001 UpdateTextInput; чтоб меню не закрывалось end
begin GameMode set button to GetButtonPressed if ( button == 0 ) set NewName to GetInputText ; присвоение таверне введенного названия SetCellFullName AAAAPlayerInn $NewName ; переименование ячейки таверны, чтоб новое название отображалось при входе в локацию MessageEX "Новое название таверны %z" NewName Player.RemoveItem gold001 800 ; игрок инвестирует 800 золотых в таверну ( по условию диалога) aaaaViveskaRef.Enable ; добавляется вывеска возле таверны aaaaaAZJRef.SetInvestmentGold 800 ; деньги игрока инвестируются торговцу в таверне Player.SetFactionRank aaaaTavernHoz, 1 ; игрок становится членом фракции "хозяин таверны" SetStage aaaaDohodQuest 10 ; переход на следующую стадию квеста CloseTextInput elseif ( button == 1 ) ; условие, если игрок название не хочет менять, но хочет быть совладельцем таверны CloseTextInput Player.RemoveItem gold001 800 aaaaViveskaRef.Enable aaaaaAZJRef.SetInvestmentGold 800 Player.SetFactionRank aaaaTavernHoz, 1 SetStage aaaaDohodQuest 10 endif end
Скрипт,чтобы можно было залезать в инвентарь компаньона или любого другого созданного НПС. Составлен на основе скрипта из туториала Руководство по созданию компаньонов-NPC v2.01 Надеюсь, автор меня простит)))
Столкнулась с небольшой проблемой по поводу НПС, вернее, их инвентаря. Делала для обычных НПС, не компаньонов, возможность обменяться с ними вещами. По накатанной дорожке взяла скрипт на инвентарь компаньона, который Evil привел для примера в своем туториале о создании компаньонов. НО у обычных НПС инвентарь не открывался. Когда начала разбираться, оказалось, что у тех НПС, у которых есть уже свои АИ пакеты, добавленные пакеты, как это сделано для компаньонов, не срабатывают. Заменила добавление АИ пакетов следования Follow и удаление его на скриптовую переменную: 1 Выбрала статичный объект, присвоила ему Ref ID: aaampmVariableRef
2 Навесила на него скрипт переменных Scn aaampmVariableScr Short Inv1
3 В диалогах с НПС после нужной фразы, которая должна запускать открытие инвентаря добавила: Set aaampmVariableRef.Inv1 to 1
4 Скрипт, который навешивается на НПС, изменила таким образом:
scn aaaMPMGerl1InvScr short inventory short invactiv ref chest Begin GameMode if aaampmVariableRef.Inv1 == 1 set inventory to 1 endif if inventory == 1 if invactiv == 0 set chest to aaaMPMDungNecroChest01Ref chest.setOwnership set invactiv to 1 endif if invactiv == 1 toggleActorsAI RemoveAllItems aaaMPMDungNecroChest01Ref aaaMPMDungNecroChest01Ref.Activate Player set invactiv to 2 endif if invactiv == 2 && MenuMode == 0 set invactiv to 3 aaaMPMDungNecroChest01Ref.RemoveAllItems aaaMPMNPC8Gerl1Ref endif if invactiv == 3 set invactiv to 0 aaaMPMNPC8Gerl1Ref.AddItem Torch02 1 aaaMPMNPC8Gerl1Ref.Equipitem Torch02 aaaMPMNPC8Gerl1Ref.RemoveItem Torch02 1 toggleActorsAI set inventory to 0 Set aaampmVariableRef.Inv1 to 0 endif endif End
Теперь инвентарь открывается в любом случае, невзирая на то, постоянные АИ пакеты у НПС или добавленные.
Чем больше я сплю, тем меньше от меня вреда......
|
|
| |