Форум Игромании

Форум Игромании (http://forum.igromania.ru/index.php)
-   Fallout (http://forum.igromania.ru/forumdisplay.php?f=213)
-   -   Редактор Garden of Eden Construction Kit (http://forum.igromania.ru/showthread.php?t=79971)

Doctor M 22.04.2009 21:30

есть скрипт:
Скрытый текст:
scn AABlenderScript

short HasItems
short Button

short item1
short item2
short item3
short item4

Begin OnActivate
if IsActionRef player == 1
ShowMessage AABlenderMsg
endif
End

Begin GameMode

set Button to GetButtonPressed

if ( button == 1 )
; purified water
; 1. check for components
if ( player.GetItemCount WaterUnpurified > 9 ) && ( player.GetItemCount RadAway > 0 ) && ( player.GetItemCount NukaCola > 0 ) && ( player.GetItemCount BoxDetergent > 0 )
; 2. make it
ShowMessage AABlenderSuccessWater
player.RemoveItem WaterUnpurified 10 1
player.RemoveItem RadAway 1 1
player.RemoveItem NukaCola 1 1
player.RemoveItem BoxDetergent 1 1
player.AddItem WaterPurified 10 1
else
; 3. failure message
set item1 to player.GetItemCount WaterUnpurified
set item2 to player.GetItemCount RadAway
set item3 to player.GetItemCount NukaCola
set item4 to player.GetItemCount BoxDetergent
ShowMessage AABlenderFailureWater, item1, item2, item3, item4
endif
endif

if ( button == 2 )
; quantum nuka-cola
; 1. check for components
if ( player.GetItemCount NukaCola > 1 ) && ( player.GetItemCount RadAway > 0 ) && ( player.GetItemCount WaterPurified > 0 ) && ( player.GetItemCount FissionBattery > 0 )
; 2. make it
ShowMessage AABlenderSuccessQuantum
player.RemoveItem NukaCola 2 1
player.RemoveItem RadAway 1 1
player.RemoveItem WaterPurified 1 1
player.RemoveItem FissionBattery 1 1
player.AddItem MS05NukaColaQtm 1 1
player.AddItem Caps001 1 1
else
; 3. failure message
set item1 to player.GetItemCount NukaCola
set item2 to player.GetItemCount RadAway
set item3 to player.GetItemCount WaterPurified
set item4 to player.GetItemCount FissionBattery
ShowMessage AABlenderFailureQuantum, item1, item2, item3, item4
endif
endif

if ( button == 3 )
; bloodi marri
; 1. check for components
if ( player.GetItemCount Whiskey > 4 ) && ( player.GetItemCount Vodka > 0 ) && ( player.GetItemCount BloodPack > 0 ) && ( player.GetItemCount RadscorpionPoisonGland > 0 )
; 2. make it
ShowMessage AABlenderSuccessBM
player.RemoveItem Whiskey 5 1
player.RemoveItem Vodka 1 1
player.RemoveItem BloodPack 1 1
player.RemoveItem RadscorpionPoisonGland 1 1
player.AddItem WineBlood 6 1
else
; 3. failure message
set item1 to player.GetItemCount Whiskey
set item2 to player.GetItemCount Vodka
set item3 to player.GetItemCount BloodPack
set item4 to player.GetItemCount RadscorpionPoisonGland
ShowMessage AABlenderFailureBM, item1, item2, item3, item4
endif
endif


if ( button == 4 )
; feral meat
; 1. check for components
if ( player.GetItemCount YaoGuaiMeat > 0 ) && ( player.GetItemCount MirelurkMeat > 0 ) && ( player.GetItemCount Beer > 0 ) && ( player.GetItemCount WonderGlue > 0 )
; 2. make it
ShowMessage AABlenderSuccessFM
player.RemoveItem YaoGuaiMeat 1
player.RemoveItem MirelurkMeat 1 1
player.RemoveItem Beer 1 1
player.RemoveItem WonderGlue 1 1
player.AddItem FeralMeat 1 1
else
; 3. failure message
set item1 to player.GetItemCount YaoGuaiMeat
set item2 to player.GetItemCount MirelurkMeat
set item3 to player.GetItemCount Beer
set item4 to player.GetItemCount WonderGlue
ShowMessage AABlenderFailureFM, item1, item2, item3, item4
endif
endif

if button == 5
; meat concentrat
ShowMessage AABlenderMsgConcentrat
if Button == 1
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatSoftshell 1 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 1 1
endif
if Button == 2
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatSoftshell 2 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 2 1
endif
if Button == 3
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatHatchling 4 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 4 1
endif
if Button == 4
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem BrahminSteak 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 5
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem DogMeat 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 6
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MoleRatMeat 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 7
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem AntMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
if Button == 8
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem RadroachMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
if Button == 9
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem BloatflyMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
endif
End

В нем проблемма: при нажатии кнопок из формы AABlenderMsgConcentrat соответсвующие действия не выполняются, зато выпроняются действия, для соответсвующих кнопок формы AABlenderMsg. Как эту проблемму решить?

Sergey_Ros 22.04.2009 22:05

Doctor M, Ооо. Тут несколько вариантов. Если чесно, я сам с такой проблемой сталкивался. Мне пришлось добовлять доп. условия на кнопки.
Может быть можно сделать квест и в его скрипте объявить переменные. Хотя, здесь надо тоже задуматься.
Завтра подробней опишу, если не решишь проблему.

LKI 22.04.2009 23:03

Цитата:

scn CreatQuestNPC

Short doOnce

Begin OnActivate player
if (doOnce == 0)
AMarker.PlaceAtMe AtMTeoMarko, 1
BeginQuest "Название квеста"
SetStage "Название квеста" "Стадия квеста"
Activate
Set doOnce to 1
else
Activate
end
ругается на BeginQuest говорит такой команды нет ...я искал в ВИКИ по ГЕКУ там такой нет команды...

Doctor M 22.04.2009 23:43

Цитата:

Сообщение от Sergey_Ros (Сообщение 5942923)
Мне пришлось добовлять доп. условия на кнопки.

Сделал вот так:
Скрытый текст:
scn AABlenderScript

short HasItems
short Button
short DoOnce

short item1
short item2
short item3
short item4

Begin OnActivate
if IsActionRef player == 1
ShowMessage AABlenderMsg
set DoOnce to 0
endif
End

Begin GameMode
if DoOnce != 1
set Button to GetButtonPressed
if ( button == 1 )
; purified water
; 1. check for components
if ( player.GetItemCount WaterUnpurified > 9 ) && ( player.GetItemCount RadAway > 0 ) && ( player.GetItemCount NukaCola > 0 ) && ( player.GetItemCount BoxDetergent > 0 )
; 2. make it
ShowMessage AABlenderSuccessWater
player.RemoveItem WaterUnpurified 10 1
player.RemoveItem RadAway 1 1
player.RemoveItem NukaCola 1 1
player.RemoveItem BoxDetergent 1 1
player.AddItem WaterPurified 10 1
else
; 3. failure message
set item1 to player.GetItemCount WaterUnpurified
set item2 to player.GetItemCount RadAway
set item3 to player.GetItemCount NukaCola
set item4 to player.GetItemCount BoxDetergent
ShowMessage AABlenderFailureWater, item1, item2, item3, item4
endif
endif

if ( button == 2 )
; quantum nuka-cola
; 1. check for components
if ( player.GetItemCount NukaCola > 1 ) && ( player.GetItemCount RadAway > 0 ) && ( player.GetItemCount WaterPurified > 0 ) && ( player.GetItemCount FissionBattery > 0 )
; 2. make it
ShowMessage AABlenderSuccessQuantum
player.RemoveItem NukaCola 2 1
player.RemoveItem RadAway 1 1
player.RemoveItem WaterPurified 1 1
player.RemoveItem FissionBattery 1 1
player.AddItem MS05NukaColaQtm 1 1
player.AddItem Caps001 1 1
else
; 3. failure message
set item1 to player.GetItemCount NukaCola
set item2 to player.GetItemCount RadAway
set item3 to player.GetItemCount WaterPurified
set item4 to player.GetItemCount FissionBattery
ShowMessage AABlenderFailureQuantum, item1, item2, item3, item4
endif
endif

if ( button == 3 )
; bloodi marri
; 1. check for components
if ( player.GetItemCount Whiskey > 4 ) && ( player.GetItemCount Vodka > 0 ) && ( player.GetItemCount BloodPack > 0 ) && ( player.GetItemCount RadscorpionPoisonGland > 0 )
; 2. make it
ShowMessage AABlenderSuccessBM
player.RemoveItem Whiskey 5 1
player.RemoveItem Vodka 1 1
player.RemoveItem BloodPack 1 1
player.RemoveItem RadscorpionPoisonGland 1 1
player.AddItem WineBlood 6 1
else
; 3. failure message
set item1 to player.GetItemCount Whiskey
set item2 to player.GetItemCount Vodka
set item3 to player.GetItemCount BloodPack
set item4 to player.GetItemCount RadscorpionPoisonGland
ShowMessage AABlenderFailureBM, item1, item2, item3, item4
endif
endif

if ( button == 4 )
; feral meat
; 1. check for components
if ( player.GetItemCount YaoGuaiMeat > 0 ) && ( player.GetItemCount MirelurkMeat > 0 ) && ( player.GetItemCount Beer > 0 ) && ( player.GetItemCount WonderGlue > 0 )
; 2. make it
ShowMessage AABlenderSuccessFM
player.RemoveItem YaoGuaiMeat 1
player.RemoveItem MirelurkMeat 1 1
player.RemoveItem Beer 1 1
player.RemoveItem WonderGlue 1 1
player.AddItem FeralMeat 1 1
else
; 3. failure message
set item1 to player.GetItemCount YaoGuaiMeat
set item2 to player.GetItemCount MirelurkMeat
set item3 to player.GetItemCount Beer
set item4 to player.GetItemCount WonderGlue
ShowMessage AABlenderFailureFM, item1, item2, item3, item4
endif
endif
endif

if button == 5
; meat concentrat
set DoOnce to 1
set Button to -1
ShowMessage AABlenderMsgConcentrat
set Button to GetButtonPressed
if Button == 1
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatSoftshell 1 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 1 1
endif
if Button == 2
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatSoftshell 2 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 2 1
endif
if Button == 3
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MirelurkMeatHatchling 4 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 4 1
endif
if Button == 4
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem BrahminSteak 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 5
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem DogMeat 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 6
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem MoleRatMeat 5 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 5 1
endif
if Button == 7
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem AntMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
if Button == 8
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem RadroachMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
if Button == 9
ShowMessage AABlenderSuccessConcentrat
player.RemoveItem BloatflyMeat 6 1
player.AddItem ConcMeat 1 1
player.AddItem WaterUnpurified 6 1
endif
endif
End

Теперь ненужные действия не выполняются, но и нужные из второй формы почему-то не работают.

LKI 23.04.2009 11:39

Цитата:

Сообщение от LKI (Сообщение 5943380)
ругается на BeginQuest говорит такой команды нет ...я искал в ВИКИ по ГЕКУ там такой нет команды...

исправил BeginQuest на StartQuest ...вроде все , теперь осталось квест сделать и привязать, что бы провести тест скрипта....

Sergey_Ros 23.04.2009 13:19

LKI,
Цитата:

Сообщение от LKI (Сообщение 5944827)
исправил BeginQuest на StartQuest ...вроде все , теперь осталось квест сделать и привязать, что бы провести тест скрипта....

Точно. Подзабыл уже, на память писал. :)

Doctor M, а что ты добавил? Я горворил про условия для кнопок такого вида:
Цитата:

if (Button == 7) && (Button2 == 1)
Это для примера.

LKI 23.04.2009 13:33

кто знает как сделать в квесте , условие его выполнения по деньгам и предмету.
Т.Е. для прохождения квеста надо найти определенную сумму и предмет (ну предмет как найти это я знаю)...

Sergey_Ros 23.04.2009 14:02

LKI,
Цитата:

if (player.GetItemCount Caps001 >= "нужная сумма (кол-во)")

Doctor M 23.04.2009 16:57

Цитата:

Сообщение от Sergey_Ros (Сообщение 5945239)
Doctor M, а что ты добавил?

Условие:
if DoOnce != 1
вокруг первых кнопок и
set DoOnce to 1
при нажатии пятой

Sergey_Ros 23.04.2009 17:13

Doctor M, нет, это не то. Я тут думаю на счет вариантов. Попробуй так: создай глобальную переменную, и делай на нее проверку.
Ну, или добовляй к каждой button по условию.

Doctor M 23.04.2009 17:23

Нет, этот метод исполнение ненужныйх действий исправил. Я просто не могу понять, почему не работают кнопки из второй формы - при нажатии на них вообще ничего не происходит!

Sergey_Ros 23.04.2009 18:02

Проверь скрипт хорошенько. Точно что-нибудь увидишь.

Doctor M 23.04.2009 18:33

Вот если б я знал принципы работы скриптового языка, сразу бы все понял - чай не один язык програмирования знаю...
Вот бы справочку хорошую по языку ГЕККа - так бы и сам разобрался, ато пока знаю его лишь расшифровывая чужие скрипты.
Например текущую проблемму резрешили бы ответы на да два вопроса:
- Как в деталях работает функция GetButtonPressed?
- В каком порядке выполняется код скрипта (потому что логика подсказывает, что не последовательно, а возвращается на предыдущие строчки, знать бы только как)

LKI 23.04.2009 18:42

по скриптованию, читай OSFM v1.2.0 для облы...но они очень похожи скрипты и там и тут ...
ну или читай официальный Wiki по GECKу :
http://geck.bethsoft.com/index.php/

Doctor M 23.04.2009 18:45

LKI, мне бы по-русски чего...

LKI 23.04.2009 18:56

OSFM v1.2.0 русский !Вот залил , пользуйся:
http://ifolder.ru/control/?file_id=1...6979fa19da7d43

Добавлено через 4 минуты
Хоть он и для облы, все равно вещь полезная...сам пользуюсь регулярно..

Doctor M 23.04.2009 19:05

LKI, а на что-нибудь человеческое можешь залить, ну на депозит, или хоть на слил, ато с той странички, куда ведет твоя ссілка почти нереально что-то скачать, да и сама она загружается минут пять.

LKI 23.04.2009 19:42

http://depositfiles.com/files/s7lbjwfrh - OSFM v1.2.0

IgorLutiy 23.04.2009 20:38

Ребята, а не проще дать нормальную ссылку, без идиотских файлообменников? Вот держите:
OSFM v1.2.0 Том 1. Базовый курс скриптинга TES 4 Oblivion
http://modder.ucoz.ru/load/3-1-0-68
переходим по ссылке, правой клавишей по "Скачать с сервера", и дальше "Сохранить как...". Никаких ограничений.
ЗЫ: скриптовый язык Фаллаута практически такой же как и Обливионский. Отличия в том, что некоторые функции убрали, и некоторые добавили. В остальном все одинаково работает.

LKI 23.04.2009 21:12

Оо, а я как то и не подумал оттуда скачать...точнее я не видел там OSFM :) Ну впринципе какая разница.....


Часовой пояс GMT +4, время: 23:55.

Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.