Перейти к содержанию

Требуется помощь со скриптами


Рекомендуемые сообщения

И снова здравствуйте. Возвращаюсь к теме скриптов кулинарии, которые я пытаюсь адаптировать для мультиплеера. С изучением рецептов вроде бы вопрос решить получилось, но возникла другая проблема - при попытках использования девайсов для готовки неизменно вылезает месседжбокс про "Вы не умеете пользоваться <название дейвайса>", хотя нужное значение переменной, отвечающей за умение готовить, уже получено в результате прочтения книги рецептов (в данном случае это NOM_cook_tisane). Все остальные условия тоже выполнены, но хоть ты тресни - "вы не умеете". Я уже просто отчаялась понять что еще тут может быть не так. Вот один из скриптов изучения рецептов из книги (приготовление отваров):

 
begin NOM_book_tisane2
 
short NOM_cook_tisane
short PCSkipEquip
short pickedup
 
if ( pickedup == 1 )
set pickedup to 0
if ( NOM_cook_tisane == 0 )
if ( player->GetItemCount "sc_paper plain" > 0 )
set NOM_cook_tisane to 2
PlaySound "skillraise"
messagebox "Вы узнали новые рецепты из 'Книги Отваров'."
player->RemoveItem "sc_paper plain" 1
player->AddItem "NoM_list_tisane_02" 1
PlaySound "scroll"
messagebox "Вы выписываете список использованных в этой книге ингредиентов на чистый лист бумаги. Он вам пригодится в процессе готовки."
elseif ( player->GetItemCount "sc_paper plain" < 1 )
PlaySound "NoM_BadButton"
messagebox "Вам нужен чистый лист бумаги, чтобы выписать список использованных в этой книге ингредиентов."   
endif
endif
endif
 
if ( PCSkipEquip == 1 )
   set PCSkipEquip to 0
   set pickedup to 1
   return
endif
 
if ( MenuMode == 1 )
return
endif
 
if ( OnActivate == 1 )
   Activate
   set pickedup to 1
endif
 
end
 
А это скрипт девайса, использующегося для приготовления (заварник):
 
begin NOM_tisane
;--Tisane: Menu.
short button
short button_max
short state
short NOM_cook_tisane
short canBrew
short water_tot ; how much water the PC has
short ingred_tot ; temp variable
short cooking ; tells if the PC is cooking
float myTimer ; a timer for cooking
 
if ( myTimer < 0 )
set myTimer to ( myTimer + GetSecondsPassed )
return
elseif ( cooking == 1 )
set cooking to 0
 
set water_tot to ( water_tot - 1 )
if ( player->GetItemCount, "NOM_waterskin_1" > 0 )
player->RemoveItem, "NOM_waterskin_1", 1
player->AddItem, "NOM_waterskin_empty", 1
elseif ( player->GetItemCount, "misc_com_bottle_02_water1" > 0 )
player->RemoveItem, "misc_com_bottle_02_water1", 1
player->AddItem, "misc_com_bottle_02", 1
elseif ( player->GetItemCount, "misc_com_bottle_09_water1" > 0 )
player->RemoveItem, "misc_com_bottle_09_water1", 1
player->AddItem, "misc_com_bottle_09", 1
elseif ( player->GetItemCount, "misc_com_bottle_03_water1" > 0 )
player->RemoveItem, "misc_com_bottle_03_water1", 1
player->AddItem, "misc_com_bottle_03", 1
elseif ( player->GetItemCount, "NOM_waterskin_2" > 0 )
player->RemoveItem, "NOM_waterskin_2", 1
player->AddItem, "NOM_waterskin_1", 1
elseif ( player->GetItemCount, "misc_com_bottle_03_water2" > 0 )
player->RemoveItem, "misc_com_bottle_03_water2", 1
player->AddItem, "misc_com_bottle_03_water1", 1
elseif ( player->GetItemCount, "NOM_waterskin_3" > 0 )
player->RemoveItem, "NOM_waterskin_3", 1
player->AddItem, "NOM_waterskin_2", 1
elseif ( player->GetItemCount, "misc_com_bottle_03_water3" > 0 )
player->RemoveItem, "misc_com_bottle_03_water3", 1
player->AddItem, "misc_com_bottle_03_water2", 1
elseif ( player->GetItemCount, "NOM_waterskin_4" > 0 )
player->RemoveItem, "NOM_waterskin_4", 1
player->AddItem, "NOM_waterskin_3", 1
elseif ( player->GetItemCount, "NOM_waterskin_5" > 0 )
player->RemoveItem, "NOM_waterskin_5", 1
player->AddItem, "NOM_waterskin_4", 1
elseif ( player->GetItemCount, "NOM_waterskin_6" > 0 )
player->RemoveItem, "NOM_waterskin_6", 1
player->AddItem, "NOM_waterskin_5", 1
elseif ( player->GetItemCount, "misc_com_bottle_02_water" > 0 )
player->RemoveItem, "misc_com_bottle_02_water", 1
player->AddItem, "misc_com_bottle_02_water1", 1
elseif ( player->GetItemCount, "misc_com_bottle_09_water" > 0 )
player->RemoveItem, "misc_com_bottle_09_water", 1
player->AddItem, "misc_com_bottle_09_water1", 1
elseif ( player->GetItemCount, "misc_com_bottle_03_water" > 0 )
player->RemoveItem, "misc_com_bottle_03_water", 1
player->AddItem, "misc_com_bottle_03_water3", 1
endif
 
PlaySound "Drink"
set GameHour to ( GameHour + 0.2 ) ;12 minutes passing for every tisane
if ( state == 20 )
messagebox "Вы завариваете и выпиваете чашку отвара Горячей Крови."
if ( NOM_tisane_effect_1 == 1 )
set NOM_tisane_effect_1 to -2
else
StartScript NOM_tisane_warming
endif
elseif ( state == 30 )
messagebox "Вы завариваете и выпиваете чашку отвара Живучести Огрима."
if ( NOM_tisane_effect_2 == 1 )
set NOM_tisane_effect_2 to -2
else
StartScript NOM_tisane_healing
endif
elseif ( state == 40 )
messagebox "Вы завариваете и выпиваете чашку отвара Чистоты Восприятия"
if ( NOM_tisane_effect_3 == 1 )
set NOM_tisane_effect_3 to -2
else
StartScript NOM_tisane_meditation
endif
elseif ( state == 50 )
messagebox "Вы завариваете и выпиваете чашку отвара Бдительности Часового."
elseif ( state == 60 )
messagebox "Вы завариваете и выпиваете чашку отвара Варева Трора."
if ( NOM_tisane_effect_4 == 1 )
set NOM_tisane_effect_4 to -2
else
StartScript NOM_tisane_alcol
endif
elseif ( state == 70 )
messagebox "Вы завариваете и выпиваете чашку отвара Поддержки Пилигрима."
if ( NOM_tisane_effect_5 == 1 )
set NOM_tisane_effect_5 to -2
else
StartScript NOM_tisane_ht
endif
endif
set state to 10
return
endif
 
;Base state
if ( state == 0 )
set canBrew to ( NOM_fireplace + NOM_ovenplace )
if ( NOM_cook_tisane < 1 )
PlaySound "NoM_BadButton"
messagebox "Вы не умеете готовить отвары. Изучите хотя бы один рецепт."
stopScript NOM_tisane
elseif ( canBrew == 0 )
PlaySound "NoM_BadButton"
messagebox "Подойдите к огню\печи."
stopScript NOM_tisane
else
set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )
set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )
set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )
set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )
set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )
set ingred_tot to ( ingred_tot * 2 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )
set ingred_tot to ( ingred_tot * 2 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )
set ingred_tot to ( ingred_tot * 3 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )
set ingred_tot to ( ingred_tot * 3 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )
set ingred_tot to ( ingred_tot * 4 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )
set ingred_tot to ( ingred_tot * 5 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )
set ingred_tot to ( ingred_tot * 6 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )
set ingred_tot to ( ingred_tot * 2 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )
set ingred_tot to ( ingred_tot * 2 )
set water_tot to ( water_tot + ingred_tot )
set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )
set ingred_tot to ( ingred_tot * 4 )
set water_tot to ( water_tot + ingred_tot )
          set state to 10
set NoM_busy to 1
DisablePlayerControls
MenuTest 0
endif
return
endif
 
;--Menu
if ( state == 10 )
if ( NOM_cook_tisane == 2 )
messagebox "Какой отвар вы хотите приготовить?" "Горячей Крови" "Живучести Огрима" "Чистоты Восприятия" "Бдительности Часового" "Варево Трора" "Поддержки Пилигрима" "- Отмена -"
set button_max to 6
endif
set button to -1
set state to 15
return
 
;--Handles menu choice
elseif ( state == 15 )
set button to GetButtonPressed
if ( button == -1 )
return
elseif ( button == button_max )
set state to 0
set NoM_busy to 0
EnablePlayerControls
stopScript NOM_tisane
else
set state to ( ( 10 * button ) + 20 )
endif
return
endif
 
;--Warm-Blood Tisane
if ( state == 20 )
if ( player->GetItemCount "ingred_green_lichen_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен зеленый лишайник."
elseif ( player->GetItemCount "ingred_red_lichen_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен красный лишайник."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_green_lichen_01" 1
player->RemoveItem "ingred_red_lichen_01" 1
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
return
endif
 
;--Troll's Vitality
if ( state == 30 )
if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен лист хакльлоу."
elseif ( player->GetItemCount "ingred_stoneflower_petals_01" < 2 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужны лепестки каменевки с 2х цветков."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_hackle-lo_leaf_01" 1
player->RemoveItem "ingred_stoneflower_petals_01" 2
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
return
endif
 
;--Brilliance Essence
if ( state == 40 )
if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен лист хакльлоу."
elseif ( player->GetItemCount "ingred_heather_01" < 2 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужно 2 веточки вереска."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_hackle-lo_leaf_01" 1
player->RemoveItem "ingred_heather_01" 2
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
return
endif
 
;--Sentinel's Eye
if ( state == 50 )
if ( player->GetItemCount "ingred_trama_root_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен корень трамы."
elseif ( player->GetItemCount "ingred_kresh_fiber_01" < 2 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужно 2 пучка волокон креша."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_trama_root_01" 1
player->RemoveItem "ingred_kresh_fiber_01" 2
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
return
endif
 
;--Thror's Brew
if ( state == 60 )
if ( player->GetItemCount "ingred_bittergreen_petals_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужно 2 пучка лепестков горьколистника."
elseif ( player->GetItemCount "ingred_trama_root_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен корень трамы."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_bittergreen_petals_01" 1
player->RemoveItem "ingred_trama_root_01" 1
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
return
endif
 
;--Pilgrim's Support
if ( state == 70 )
if ( player->GetItemCount "ingred_stoneflower_petals_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужны лепестки каменевки с 2х цветков."
elseif ( player->GetItemCount "ingred_gold_kanet_01" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен золотой канет."
elseif ( player->GetItemCount "ingred_bc_coda_flower" < 1 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужен цветок коды."
elseif ( water_tot == 0 )
PlaySound "NoM_BadButton"
set myTimer to -0.5
set state to 10
messagebox "Для этого нужна вода."
else
player->RemoveItem "ingred_stoneflower_petals_01" 1
player->RemoveItem "ingred_gold_kanet_01" 1
player->RemoveItem "ingred_bc_coda_flower" 1
PlaySound "fv_boil"
set myTimer to -5
set cooking to 1
endif
endif
 
end
 
Похоже что-то мешает запуску скрипта NOM_tisane, который отвечает за процесс готовки, или останавливает его (скрипт). Но что именно - отловить у меня так и не выходит. Очень надеюсь на помощь, ибо бьюсь над проблемой уже больше месяца, а воз и ныне там.
 
Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 117
  • Создана
  • Последний ответ

Топ авторов темы

Возвращаюсь к теме скриптов кулинарии, которые я пытаюсь адаптировать для мультиплеера

 

Насколько мне известно в мультиплеере (tes3mp) не работает сохранение переменных. Из за чего может возникать эта проблема.

Разработчик tes3mp делал сохранение локальных переменных TES3MP/CoreScripts но я не проверял все ли корректно работает так, как нужно пересобирать проект.

 

В теории можно разработать серверный скрипт на lua, который будет показывать сохранять состояние игрока на сервере и показывать меню крафта.

Ссылка на комментарий
Поделиться на другие сайты

Скрипт слишком большой, в морровинде есть ограничения на длину.

Попробуйте юзать тег code, и расставить обычные табуляции ддя if endif, вообще не понятно где что.

 

Этот предмет NoM_list_tisane_02 вообще нигде не используется. В переменная NOM_cook_tisane локальная, так что изучение рецепта ни на что не влияет.

 

if ( myTimer < 0 )

set myTimer to ( myTimer + GetSecondsPassed )

return

elseif ( cooking == 1 )

set cooking to 0

Где endif отсюда непонятно. Нудно переписать так, чтобы было как можно меньше вложенных if.

Ссылка на комментарий
Поделиться на другие сайты

Насколько мне известно в мультиплеере (tes3mp) не работает сохранение переменных. Из за чего может возникать эта проблема.

Разработчик tes3mp делал сохранение локальных переменных TES3MP/CoreScripts но я не проверял все ли корректно работает так, как нужно пересобирать проект.

 

В теории можно разработать серверный скрипт на lua, который будет показывать сохранять состояние игрока на сервере и показывать меню крафта.

Ну вообще я сначала тестирую все в сингловом OpenMW, и там оно энивей не работает. Но за ссылку спасибо, пригодится.

Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

Попробуйте юзать тег code, и расставить обычные табуляции ддя if endif, вообще не понятно где что.

Что за тег code и где его юзать? Табуляции в смысле отступы выровнять? В оригинальном скрипте было именно так, и он работал, до некоторых пор.

 

В переменная NOM_cook_tisane локальная, так что изучение рецепта ни на что не влияет.

Вот в этом блоке указано что от того изучен ли рецепт отвара (NOM_cook_tisane) зависит запустится  ли скрипт заварника (NOM_tisane), и именно этот месседжбокс все время вылезает. Несмотря на то, что рецепт изучен. Даже после того как прописываю в консоли set NOM_cook_tisane to 2. А когда прописываю startscript nom_tisane - снова сообщение про "вы не умеете". Т.е. все, по всей видимости, упирается именно в эту переменную. Только вот непонятно что мешает исполнению скрипта если NOM_cook_tisane уже = 2. 

;Base state

if ( state == 0 )
set canBrew to ( NOM_fireplace + NOM_ovenplace )
if ( NOM_cook_tisane < 1 )
PlaySound "NoM_BadButton"
messagebox "Вы не умеете готовить отвары. Изучите хотя бы один рецепт."
stopScript NOM_tisane
elseif ( canBrew == 0 )
PlaySound "NoM_BadButton"
messagebox "Подойдите к огню\печи."
stopScript NOM_tisane
 
 

 

Ссылка на комментарий
Поделиться на другие сайты

Что за тег code и где его юзать? Табуляции в смысле отступы выровнять? В оригинальном скрипте было именно так, и он работал, до некоторых пор.

 

 

Вот в этом блоке указано что от того изучен ли рецепт отвара (NOM_cook_tisane) зависит запустится  ли скрипт заварника (NOM_tisane), и именно этот месседжбокс все время вылезает. Несмотря на то, что рецепт изучен. Даже после того как прописываю в консоли set NOM_cook_tisane to 2. А когда прописываю startscript nom_tisane - снова сообщение про "вы не умеете". Т.е. все, по всей видимости, упирается именно в эту переменную. Только вот непонятно что мешает исполнению скрипта если NOM_cook_tisane уже = 2.

 

Форумный тег, чтоб отступы было видно.

Это две разных переменных в двух скриптах, не смотря на то, что у них одно название. Ну сделайте ее глобальной.

Ссылка на комментарий
Поделиться на другие сайты

Это две разных переменных в двух скриптах, не смотря на то, что у них одно название. Ну сделайте ее глобальной.

Она итак глобальная, типа short. :dontknow:

Ссылка на комментарий
Поделиться на другие сайты

Локальная:

begin NOM_tisane

;--Tisane: Menu.

short button

short button_max

short state

short NOM_cook_tisane

И как тогда ее переделать в глобальную?

 

Выяснилось что скрипт NOM_tisane не запускался потому что не распознавалась переменная NOM_cook_tisane. Пока поменяла условие для запуска скрипта на наличие в инвентаре списка ингредиентов (NOM_list_tisane_02). Скрипт стал запускаться. НО - работает все только до момента выбора из списка отвара, который будем готовить. После этого тупо ничего не происходит, но срабатывает DisablePlayerControls (блок Base State) и на этом все заканчивается. Вот тут я вобще не понимаю почему все так. Что-то не то с кнопками и/или стадиями? :wall:

begin NOM_tisane
;--Tisane: Menu.
short button
short button_max
short state
short canBrew
short water_tot			; how much water the PC has
short ingred_tot		; temp variable
short cooking			; tells if the PC is cooking
float myTimer			; a timer for cooking

if ( myTimer < 0 )
	set myTimer to ( myTimer + GetSecondsPassed )
	return
elseif ( cooking == 1 )
	set cooking to 0

	set water_tot to ( water_tot - 1 )
	if ( player->GetItemCount, "NOM_waterskin_1" > 0 )
		player->RemoveItem, "NOM_waterskin_1", 1
		player->AddItem, "NOM_waterskin_empty", 1
	elseif ( player->GetItemCount, "misc_com_bottle_02_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_02_water1", 1
		player->AddItem, "misc_com_bottle_02", 1
	elseif ( player->GetItemCount, "misc_com_bottle_09_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_09_water1", 1
		player->AddItem, "misc_com_bottle_09", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water1", 1
		player->AddItem, "misc_com_bottle_03", 1
	elseif ( player->GetItemCount, "NOM_waterskin_2" > 0 )
		player->RemoveItem, "NOM_waterskin_2", 1
		player->AddItem, "NOM_waterskin_1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water2" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water2", 1
		player->AddItem, "misc_com_bottle_03_water1", 1
	elseif ( player->GetItemCount, "NOM_waterskin_3" > 0 )
		player->RemoveItem, "NOM_waterskin_3", 1
		player->AddItem, "NOM_waterskin_2", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water3" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water3", 1
		player->AddItem, "misc_com_bottle_03_water2", 1
	elseif ( player->GetItemCount, "NOM_waterskin_4" > 0 )
		player->RemoveItem, "NOM_waterskin_4", 1
		player->AddItem, "NOM_waterskin_3", 1
	elseif ( player->GetItemCount, "NOM_waterskin_5" > 0 )
		player->RemoveItem, "NOM_waterskin_5", 1
		player->AddItem, "NOM_waterskin_4", 1
	elseif ( player->GetItemCount, "NOM_waterskin_6" > 0 )
		player->RemoveItem, "NOM_waterskin_6", 1
		player->AddItem, "NOM_waterskin_5", 1
	elseif ( player->GetItemCount, "misc_com_bottle_02_water" > 0 )
		player->RemoveItem, "misc_com_bottle_02_water", 1
		player->AddItem, "misc_com_bottle_02_water1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_09_water" > 0 )
		player->RemoveItem, "misc_com_bottle_09_water", 1
		player->AddItem, "misc_com_bottle_09_water1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water", 1
		player->AddItem, "misc_com_bottle_03_water3", 1
endif

PlaySound "Drink"
	set GameHour to ( GameHour + 0.2 )		;12 minutes passing for every tisane
	if ( state == 20 )
		messagebox "Вы завариваете и выпиваете чашку отвара Горячей Крови."
		if ( NOM_tisane_effect_1 == 1 )
			set NOM_tisane_effect_1 to -2
		else
			StartScript NOM_tisane_warming
		endif
	elseif ( state == 30 )
		messagebox "Вы завариваете и выпиваете чашку отвара Живучести Огрима."
		if ( NOM_tisane_effect_2 == 1 )
			set NOM_tisane_effect_2 to -2
		else
			StartScript NOM_tisane_healing
		endif
	elseif ( state == 40 )
		messagebox "Вы завариваете и выпиваете чашку отвара Чистоты Восприятия"
		if ( NOM_tisane_effect_3 == 1 )
			set NOM_tisane_effect_3 to -2
		else
			StartScript NOM_tisane_meditation
		endif
	elseif ( state == 50 )
		messagebox "Вы завариваете и выпиваете чашку отвара Бдительности Часового."
	elseif ( state == 60 )
		messagebox "Вы завариваете и выпиваете чашку отвара Варева Трора."
		if ( NOM_tisane_effect_4 == 1 )
			set NOM_tisane_effect_4 to -2
		else
			StartScript NOM_tisane_alcol
		endif
	elseif ( state == 70 )
		messagebox "Вы завариваете и выпиваете чашку отвара Поддержки Пилигрима."
		if ( NOM_tisane_effect_5 == 1 )
			set NOM_tisane_effect_5 to -2
		else
			StartScript NOM_tisane_ht
		endif
	endif
	set state to 10
	return
endif

;Base state
if ( state == 0 )
set canBrew to ( NOM_fireplace + NOM_ovenplace )
if ( player->GetItemCount "NOM_list_tisane_02" < 1 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить отвары. Изучите хотя бы один рецепт."
		stopScript NOM_tisane
	elseif ( canBrew == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню\печи."
		stopScript NOM_tisane
	else
          set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )
		set ingred_tot to ( ingred_tot * 3 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )
		set ingred_tot to ( ingred_tot * 3 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )
		set ingred_tot to ( ingred_tot * 4 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )
		set ingred_tot to ( ingred_tot * 5 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )
		set ingred_tot to ( ingred_tot * 6 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )
		set ingred_tot to ( ingred_tot * 4 )
		set water_tot to ( water_tot + ingred_tot )
          set state to 10
		set NoM_busy to 1
		DisablePlayerControls
          MenuTest 0
endif
return
endif

;--Menu
if ( state == 10 )
if ( player->GetItemCount "NOM_list_tisane_02" >= 1 )
	messagebox "Какой отвар вы хотите приготовить?" "Горячей Крови" "Живучести Огрима" "Чистоты Восприятия" "Бдительности Часового" "Варево Трора" "Поддержки Пилигрима" "- Отмена -"
	set button_max to 6
	endif
endif
set button to -1
	set state to 15
	return

;--Handles menu choice
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	if ( button == button_max )
		set state to 0
		set NoM_busy to 0
		EnablePlayerControls
		stopScript NOM_tisane
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return
endif
endif

;--Warm-Blood Tisane
if ( state == 20 )
	if ( player->GetItemCount "ingred_green_lichen_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен зеленый лишайник."
	elseif ( player->GetItemCount "ingred_red_lichen_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен красный лишайник."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_green_lichen_01" 1
		player->RemoveItem "ingred_red_lichen_01" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Troll's Vitality
if ( state == 30 )
	if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен лист хакльлоу."
	elseif ( player->GetItemCount "ingred_stoneflower_petals_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужны лепестки каменевки с 2х цветков."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_hackle-lo_leaf_01" 1
		player->RemoveItem "ingred_stoneflower_petals_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Brilliance Essence
if ( state == 40 )
	if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен лист хакльлоу."
	elseif ( player->GetItemCount "ingred_heather_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 веточки вереска."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_hackle-lo_leaf_01" 1
		player->RemoveItem "ingred_heather_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Sentinel's Eye
if ( state == 50 )
	if ( player->GetItemCount "ingred_trama_root_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен корень трамы."
	elseif ( player->GetItemCount "ingred_kresh_fiber_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 пучка волокон креша."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_trama_root_01" 1
		player->RemoveItem "ingred_kresh_fiber_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Thror's Brew
if ( state == 60 )
	if ( player->GetItemCount "ingred_bittergreen_petals_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 пучка лепестков горьколистника."
	elseif ( player->GetItemCount "ingred_trama_root_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен корень трамы."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_bittergreen_petals_01" 1
		player->RemoveItem "ingred_trama_root_01" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Pilgrim's Support
if ( state == 70 )
	if ( player->GetItemCount "ingred_stoneflower_petals_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужны лепестки каменевки с 2х цветков."
	elseif ( player->GetItemCount "ingred_gold_kanet_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен золотой канет."
	elseif ( player->GetItemCount "ingred_bc_coda_flower" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен цветок коды."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_stoneflower_petals_01" 1
		player->RemoveItem "ingred_gold_kanet_01" 1
		player->RemoveItem "ingred_bc_coda_flower" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
endif

end
Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

И как тогда ее переделать в глобальную?

 

Выяснилось что скрипт NOM_tisane не запускался потому что не распознавалась переменная NOM_cook_tisane. Пока поменяла условие для запуска скрипта на наличие в инвентаре списка ингредиентов (NOM_list_tisane_02). Скрипт стал запускаться. НО - работает все только до момента выбора из списка отвара, который будем готовить. После этого тупо ничего не происходит, но срабатывает DisablePlayerControls (блок Base State) и на этом все заканчивается. Вот тут я вобще не понимаю почему все так. Что-то не то с кнопками и/или стадиями? :wall:

 

begin NOM_tisane
;--Tisane: Menu.
short button
short button_max
short state
short canBrew
short water_tot			; how much water the PC has
short ingred_tot		; temp variable
short cooking			; tells if the PC is cooking
float myTimer			; a timer for cooking

if ( myTimer < 0 )
	set myTimer to ( myTimer + GetSecondsPassed )
	return
elseif ( cooking == 1 )
	set cooking to 0

	set water_tot to ( water_tot - 1 )
	if ( player->GetItemCount, "NOM_waterskin_1" > 0 )
		player->RemoveItem, "NOM_waterskin_1", 1
		player->AddItem, "NOM_waterskin_empty", 1
	elseif ( player->GetItemCount, "misc_com_bottle_02_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_02_water1", 1
		player->AddItem, "misc_com_bottle_02", 1
	elseif ( player->GetItemCount, "misc_com_bottle_09_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_09_water1", 1
		player->AddItem, "misc_com_bottle_09", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water1" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water1", 1
		player->AddItem, "misc_com_bottle_03", 1
	elseif ( player->GetItemCount, "NOM_waterskin_2" > 0 )
		player->RemoveItem, "NOM_waterskin_2", 1
		player->AddItem, "NOM_waterskin_1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water2" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water2", 1
		player->AddItem, "misc_com_bottle_03_water1", 1
	elseif ( player->GetItemCount, "NOM_waterskin_3" > 0 )
		player->RemoveItem, "NOM_waterskin_3", 1
		player->AddItem, "NOM_waterskin_2", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water3" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water3", 1
		player->AddItem, "misc_com_bottle_03_water2", 1
	elseif ( player->GetItemCount, "NOM_waterskin_4" > 0 )
		player->RemoveItem, "NOM_waterskin_4", 1
		player->AddItem, "NOM_waterskin_3", 1
	elseif ( player->GetItemCount, "NOM_waterskin_5" > 0 )
		player->RemoveItem, "NOM_waterskin_5", 1
		player->AddItem, "NOM_waterskin_4", 1
	elseif ( player->GetItemCount, "NOM_waterskin_6" > 0 )
		player->RemoveItem, "NOM_waterskin_6", 1
		player->AddItem, "NOM_waterskin_5", 1
	elseif ( player->GetItemCount, "misc_com_bottle_02_water" > 0 )
		player->RemoveItem, "misc_com_bottle_02_water", 1
		player->AddItem, "misc_com_bottle_02_water1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_09_water" > 0 )
		player->RemoveItem, "misc_com_bottle_09_water", 1
		player->AddItem, "misc_com_bottle_09_water1", 1
	elseif ( player->GetItemCount, "misc_com_bottle_03_water" > 0 )
		player->RemoveItem, "misc_com_bottle_03_water", 1
		player->AddItem, "misc_com_bottle_03_water3", 1
endif

PlaySound "Drink"
	set GameHour to ( GameHour + 0.2 )		;12 minutes passing for every tisane
	if ( state == 20 )
		messagebox "Вы завариваете и выпиваете чашку отвара Горячей Крови."
		if ( NOM_tisane_effect_1 == 1 )
			set NOM_tisane_effect_1 to -2
		else
			StartScript NOM_tisane_warming
		endif
	elseif ( state == 30 )
		messagebox "Вы завариваете и выпиваете чашку отвара Живучести Огрима."
		if ( NOM_tisane_effect_2 == 1 )
			set NOM_tisane_effect_2 to -2
		else
			StartScript NOM_tisane_healing
		endif
	elseif ( state == 40 )
		messagebox "Вы завариваете и выпиваете чашку отвара Чистоты Восприятия"
		if ( NOM_tisane_effect_3 == 1 )
			set NOM_tisane_effect_3 to -2
		else
			StartScript NOM_tisane_meditation
		endif
	elseif ( state == 50 )
		messagebox "Вы завариваете и выпиваете чашку отвара Бдительности Часового."
	elseif ( state == 60 )
		messagebox "Вы завариваете и выпиваете чашку отвара Варева Трора."
		if ( NOM_tisane_effect_4 == 1 )
			set NOM_tisane_effect_4 to -2
		else
			StartScript NOM_tisane_alcol
		endif
	elseif ( state == 70 )
		messagebox "Вы завариваете и выпиваете чашку отвара Поддержки Пилигрима."
		if ( NOM_tisane_effect_5 == 1 )
			set NOM_tisane_effect_5 to -2
		else
			StartScript NOM_tisane_ht
		endif
	endif
	set state to 10
	return
endif

;Base state
if ( state == 0 )
set canBrew to ( NOM_fireplace + NOM_ovenplace )
if ( player->GetItemCount "NOM_list_tisane_02" < 1 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить отвары. Изучите хотя бы один рецепт."
		stopScript NOM_tisane
	elseif ( canBrew == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню\печи."
		stopScript NOM_tisane
	else
          set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )
		set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )
		set ingred_tot to ( ingred_tot * 3 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )
		set ingred_tot to ( ingred_tot * 3 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )
		set ingred_tot to ( ingred_tot * 4 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )
		set ingred_tot to ( ingred_tot * 5 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )
		set ingred_tot to ( ingred_tot * 6 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )
		set ingred_tot to ( ingred_tot * 2 )
		set water_tot to ( water_tot + ingred_tot )
		set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )
		set ingred_tot to ( ingred_tot * 4 )
		set water_tot to ( water_tot + ingred_tot )
          set state to 10
		set NoM_busy to 1
		DisablePlayerControls
          MenuTest 0
endif
return
endif

;--Menu
if ( state == 10 )
if ( player->GetItemCount "NOM_list_tisane_02" >= 1 )
	messagebox "Какой отвар вы хотите приготовить?" "Горячей Крови" "Живучести Огрима" "Чистоты Восприятия" "Бдительности Часового" "Варево Трора" "Поддержки Пилигрима" "- Отмена -"
	set button_max to 6
	endif
endif
set button to -1
	set state to 15
	return

;--Handles menu choice
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	if ( button == button_max )
		set state to 0
		set NoM_busy to 0
		EnablePlayerControls
		stopScript NOM_tisane
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return
endif
endif

;--Warm-Blood Tisane
if ( state == 20 )
	if ( player->GetItemCount "ingred_green_lichen_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен зеленый лишайник."
	elseif ( player->GetItemCount "ingred_red_lichen_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен красный лишайник."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_green_lichen_01" 1
		player->RemoveItem "ingred_red_lichen_01" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Troll's Vitality
if ( state == 30 )
	if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен лист хакльлоу."
	elseif ( player->GetItemCount "ingred_stoneflower_petals_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужны лепестки каменевки с 2х цветков."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_hackle-lo_leaf_01" 1
		player->RemoveItem "ingred_stoneflower_petals_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Brilliance Essence
if ( state == 40 )
	if ( player->GetItemCount "ingred_hackle-lo_leaf_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен лист хакльлоу."
	elseif ( player->GetItemCount "ingred_heather_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 веточки вереска."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_hackle-lo_leaf_01" 1
		player->RemoveItem "ingred_heather_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Sentinel's Eye
if ( state == 50 )
	if ( player->GetItemCount "ingred_trama_root_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен корень трамы."
	elseif ( player->GetItemCount "ingred_kresh_fiber_01" < 2 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 пучка волокон креша."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_trama_root_01" 1
		player->RemoveItem "ingred_kresh_fiber_01" 2
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Thror's Brew
if ( state == 60 )
	if ( player->GetItemCount "ingred_bittergreen_petals_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужно 2 пучка лепестков горьколистника."
	elseif ( player->GetItemCount "ingred_trama_root_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен корень трамы."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_bittergreen_petals_01" 1
		player->RemoveItem "ingred_trama_root_01" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
	return
endif

;--Pilgrim's Support
if ( state == 70 )
	if ( player->GetItemCount "ingred_stoneflower_petals_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужны лепестки каменевки с 2х цветков."
	elseif ( player->GetItemCount "ingred_gold_kanet_01" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен золотой канет."
	elseif ( player->GetItemCount "ingred_bc_coda_flower" < 1 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужен цветок коды."
	elseif ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		set myTimer to -0.5
		set state to 10
		messagebox "Для этого нужна вода."
	else
		player->RemoveItem "ingred_stoneflower_petals_01" 1
		player->RemoveItem "ingred_gold_kanet_01" 1
		player->RemoveItem "ingred_bc_coda_flower" 1
		PlaySound "fv_boil"
		set myTimer to -5
		set cooking to 1
	endif
endif

end
Вот теперь код гораздо лучше понятен. Глобальная переменная создается в меню Globals из панели игструментов. А локальные названия этой переменной нужно убрать.
Ссылка на комментарий
Поделиться на другие сайты

Глобальная переменная создается в меню Globals из панели игструментов. А локальные названия этой переменной нужно убрать.

Она там есть. Дополнительно short NOM_cook_tisane я дописала т.к. с самого начала были сомнения в том что эта переменная вообще распознается скриптом. Ну с переменной понятно, в принципе ее можно вообще не юзать и заменить на другое условие - в последней версии, что я скинула, так и сделано. Там проблема теперь в другом - то ли код изначально кривой, то ли руки у меня, что более вероятно.

Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

Там все глобальные переменные созданы? Например NOm_busy.

 

Заменить блок вот на этот:

 

 

;--Menu

if ( state == 10 )

if ( player->GetItemCount "NOM_list_tisane_02" >= 1 )

messagebox "Какой отвар вы хотите приготовить?" "Горячей Крови" "Живучести Огрима" "Чистоты Восприятия" "Бдительности Часового" "Варево Трора" "Поддержки Пилигрима" "- Отмена -"

set button_max to 6

set button to -1

set state to 15

endif

Return

Endif

 

;--Handles menu choice

if ( state == 15 )

set button to GetButtonPressed

if ( button == -1 )

return

Elseif ( button == button_max )

set state to 0

set NoM_busy to 0

EnablePlayerControls

stopScript NOM_tisane

else

set state to ( ( 10 * button ) + 20 )

endif

return

endif

 

;--Warm-Blood Tisane

Изменено пользователем Larkin
Ссылка на комментарий
Поделиться на другие сайты

Там все глобальные переменные созданы? Например NOm_busy.

Да, все есть. Скрипт отваров заработал, большое спасибо. Но со всеми остальными похожая беда - скрипт использования предмета запускается, но дальше DisablePlayerControls ничего не идет. Вот пример одного из таких скриптов:

begin NoM_bake
;--Bread making
short state
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short water_tot			; how much water the PC has
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	PlaySound "Item Ingredient Up"
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "ingred_bread_01" 1
		messagebox "Вы испекли буханку хлеба."
	elseif ( state == 35 )
		player->AddItem "NOM_sltw_food_bread_corn" 1
		messagebox "Вы испекли буханку кукурузного хлеба."
	elseif ( state == 45 )
		player->AddItem "NOM_food_bread_ash" 1
		messagebox "Вы испекли буханку хлеба из пепельного батата."
	endif
	return
endif

;--Base state
if ( state == 0 )
if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете печь. Изучите хотя бы один рецепт."
		stopScript NOM_bake
		return
	else
		set state to 10
		set NoM_busy to 1
		DisablePlayerControls
		MenuTest 0
	endif
	set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )
	set ingred_tot to ( ingred_tot * 3 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )
	set ingred_tot to ( ingred_tot * 3 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )
	set ingred_tot to ( ingred_tot * 4 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )
	set ingred_tot to ( ingred_tot * 5 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )
	set ingred_tot to ( ingred_tot * 6 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )
	set ingred_tot to ( ingred_tot * 4 )
	set water_tot to ( water_tot + ingred_tot )
	return

elseif ( state == 10 )
	set cooking to 0
	set button to -1
if ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
		messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"
		set button_max to 3
 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "- Отмена -"
			set button_max to 2
	 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 2
	 		set state to 16
elseif ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 2
	 		set state to 18
		endif
elseif ( GetJournalIndex NOM_recipes == 10 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "- Отмена -"
			set button_max to 1
	 		set state to 15
		elseif ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "- Отмена -"
			set button_max to 1
	 		set state to 18
		elseif ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 1
	 		set state to 19
		endif
	endif
endif
endif
endif
	return

;--Handle menu selection
elseif ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return

elseif ( state == 16 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 20 * button ) + 20 )
	endif
	return

elseif ( state == 18 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 10 * button ) + 30 )
	endif
	return

elseif ( state == 19 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to 40
	endif
	return
endif

;--Виквитовый хлеб
if ( state == 20 )
	set cook_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	set cook_tot to ( cook_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 пучка виквита."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_saltrice_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен соленый рис."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок виквитового хлеба вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок виквитового хлеба вы хотите испечь?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	endif

elseif ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return

elseif ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "ingred_wickwheat_01" 2
		player->RemoveItem "ingred_saltrice_01" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Кукурузный хлеб
if ( state == 30 )
	set cook_tot to ( player->GetItemCount "NOM_food_corn" )
	set cook_tot to ( cook_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 початка кукурузы."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_food_lard" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно сало."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок кукурузного хлеба вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок кукурузного хлеба вы хотите испечь?" "1" "5"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return

elseif ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_corn" 2
		player->RemoveItem "NoM_food_lard" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Хлеб из пепельного батата
if ( state == 40 )
	set cook_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен виквит."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_ash_yam_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен пепельный батат."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок хлеба из пепельного батата вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок хлеба из пепельного батата вы хотите испечь?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	endif

elseif ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return

elseif ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "ingred_wickwheat_01" 1
		player->RemoveItem "ingred_ash_yam_01" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

end

И еще один:

begin NOM_grill
;--Grilling
short state
short canGrill
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short meat_tot			; how much meat the PC has
short fish_tot			; how many fishes the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking
float myX
float myY
float myZ
float myRot
short myRandom

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	if ( NoM_cooking_device == 0 )
		PlaySound "Item Ingredient Up"
	endif
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "NOM_food_meat_grilled2" 1
		messagebox "Вы пожарили мясо."
	elseif ( state == 35 )
		player->AddItem "NOM_food_grilled_fish" 1
		messagebox "Вы пожарили рыбу."
	elseif ( state == 45 )
		player->AddItem "NOM_food_meat_grilled" 1
		messagebox "Вы пожарили говядину."
	elseif ( state == 55 )
		player->AddItem "NOM_food_chickenleg1_cook" 1
		messagebox "Вы пожарили куриную ножку."
	elseif ( state == 65 )
		player->AddItem "NOM_food_guar_rib_grill" 1
		messagebox "Вы пожарили гуарье ребрышко."
	elseif ( state == 75 )
		player->AddItem "NOM_food_skewer_kag" 3
		messagebox "Вы пожарили 3 шашлыка из мяса кагути."
	endif
	return
endif

;--Base state
if ( state == 0 )
     set canGrill to ( NOM_fireplace + NOM_ovenplace )
	if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить на гриле. Изучите хотя бы один рецепт."
		stopScript NOM_grill
elseif ( canGrill == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню/печи."
		stopScript NOM_grill
	else
		set state to 10
		set NoM_busy to 1
		DisablePlayerControls
		MenuTest 0
	endif
endif
	return

elseif ( state == 10 )
	set cooking to 0
	set myX to NoM_cooking_x
	set myY to NoM_cooking_y
	set myZ to NoM_cooking_z
	set button to -1
if ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 40 )
messagebox "Что вы хотите приготовить?" "Жареное на гриле мясо" "Жареную на гриле рыбу" "Жареную говядину" "Жареную куриную ножку" "Жареное гуарье ребрышко" "Шашлык из мяса кагути" "- Отмена -"
		set button_max to 6
 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 10 )
		messagebox "Что вы хотите приготовить?" "Жареное на гриле мясо" "Жареную на гриле рыбу" "Жареную говядину" "Жареную куриную ножку" "Жареное гуарье ребрышко" "- Отмена -"
		set button_max to 5
 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 40 )
		messagebox "Что вы хотите приготовить?" "Шашлык из мяса кагути" "- Отмена -"
		set button_max to 1
 		set state to 18
endif
endif
return

;--Handle menu selection
elseif ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_grill
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return

elseif ( state == 18 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_grill
	else
		set state to 70
	endif
	return
endif

;--Grilled Meat
if ( state == 20 )
	set myZ to ( myZ + ( 3 * NoM_cooking_scale ) )
	set meat_tot to ( player->GetItemCount "ab01ingred_bird_meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_mouse_meat_MVA" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Parastylus_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Ornada_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Mutton" )
	set meat_tot to meat_tot + ( player->GetItemCount "plx_ingred_kriin_flesh" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Boar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Guar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kwama" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Alit" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_wolf_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_bear_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_durzog_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ab01ingred_turtlemeat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_rat_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_hound_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_dragon_meat_mwa" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorker_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatCliffracer_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKwama_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatOrnada_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKagouti_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatAlit_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatGuar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatParastylus_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatMutton_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorse_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBeef_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_GuarMeat_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "plx_guar_meat" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_HorseMeat01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatVenison_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_02" )
    set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Darkmeat" )
     set cook_tot to meat_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно мясо любого животного."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return

elseif ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "ab01ingred_bird_meat" > 0 )
			player->RemoveItem "ab01ingred_bird_meat" 1
		elseif ( player->GetItemCount "ingred_mouse_meat_MVA" > 0 )
			player->RemoveItem "ingred_mouse_meat_MVA" 1
		elseif ( player->GetItemCount "TR_Ingred_Parastylus_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Parastylus_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Ornada_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Ornada_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Mutton" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Mutton" 1
		elseif ( player->GetItemCount "plx_ingred_kriin_flesh" > 0 )
			player->RemoveItem "plx_ingred_kriin_flesh" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Boar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Boar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Guar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Guar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kwama" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kwama" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Alit" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Alit" 1
		elseif ( player->GetItemCount "ingred_wolf_meat_SA" > 0 )
			player->RemoveItem "ingred_wolf_meat_SA" 1
		elseif ( player->GetItemCount "ingred_bear_meat_SA" > 0 )
			player->RemoveItem "ingred_bear_meat_SA" 1
		elseif ( player->GetItemCount "ingred_durzog_meat_01" > 0 )
			player->RemoveItem "ingred_durzog_meat_01" 1
		elseif ( player->GetItemCount "ab01ingred_turtlemeat" > 0 )
			player->RemoveItem "ab01ingred_turtlemeat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Cliffracer" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kagouti" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kagouti" 1
		elseif ( player->GetItemCount "ingred_rat_meat_01" > 0 )
			player->RemoveItem "ingred_rat_meat_01" 1
		elseif ( player->GetItemCount "ingred_hound_meat_01" > 0 )
			player->RemoveItem "ingred_hound_meat_01" 1
		elseif ( player->GetItemCount "ingred_dragon_meat_mwa" > 0 )
			player->RemoveItem "ingred_dragon_meat_mwa" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorker_01" > 0 )
			player->RemoveItem "T_IngFood_MeatHorker_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatOrnada_01" > 0 )
			player->RemoveItem "T_IngFood_MeatOrnada_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_GuarMeat_01" > 0 )
			player->RemoveItem "AB_IngCrea_GuarMeat_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatParastylus_01" > 0 )
			player->RemoveItem "T_IngFood_MeatParastylus_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKwama_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKwama_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatCliffracer_01" > 0 )
			player->RemoveItem "T_IngFood_MeatCliffracer_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatAlit_01" > 0 )
			player->RemoveItem "T_IngFood_MeatAlit_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatGuar_01" > 0 )
			player->RemoveItem "T_IngFood_MeatGuar_01" 1
          elseif ( player->GetItemCount "plx_guar_meat" > 0 )
			player->RemoveItem "plx_guar_meat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKagouti_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKagouti_01" 1
          elseif ( player->GetItemCount "A-DI-RAWMEAT" > 0 )
			player->RemoveItem "A-DI-RAWMEAT" 1
          elseif ( player->GetItemCount "T_IngCrea_MeatDark_01" > 0 )
			player->RemoveItem "T_IngCrea_MeatDark_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_HorseMeat01" > 0 )
			player->RemoveItem "AB_IngCrea_HorseMeat01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatVenison_01" > 0 )
			player->RemoveItem "T_IngFood_MeatVenison_01" 1
         elseif ( player->GetItemCount "T_IngFood_MeatBoar_02" > 0 )
			player->RemoveItem "T_IngFood_MeatBoar_02" 1
          elseif ( player->GetItemCount "TR_Ingred_Darkmeat" > 0 )
			player->RemoveItem "TR_Ingred_Darkmeat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatMutton_01" )
               player->RemoveItem "T_IngFood_MeatMutton_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBoar_01" )
               player->RemoveItem "T_IngFood_MeatBoar_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorse_01" )
               player->RemoveItem "T_IngFood_MeatHorse_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBeef_01" )
               player->RemoveItem "T_IngFood_MeatBeef_01" 1
          endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_meat" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Fish
if ( state == 30 )
	set myZ to ( myZ + ( 3.25 * NoM_cooking_scale ) )
	set fish_tot to ( player->GetItemCount "NOM_food_fish" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_01" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_02" )
     set fish_tot to fish_tot + ( player->GetItemCount "RR_I_fish_raw" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishBrowntrout_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishChrysophant_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishCod_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishLeaperTail_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishPikeperch_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishSpr_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishStrid_01" )
     set cook_tot to fish_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна любая рыба."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return

elseif ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "NOM_food_fish" > 0 )
			player->RemoveItem "NOM_food_fish" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_01" > 0 )
			player->RemoveItem "NOM_food_fish_fat_01" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_02" > 0 )
			player->RemoveItem "NOM_food_fish_fat_02" 1
          elseif ( player->GetItemCount "RR_I_fish_raw" > 0 )
			player->RemoveItem "RR_I_fish_raw" 1
          elseif ( player->GetItemCount "T_IngFood_FishBrowntrout_01" > 0 )
			player->RemoveItem "T_IngFood_FishBrowntrout_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishChrysophant_01" > 0 )
			player->RemoveItem "T_IngFood_FishChrysophant_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishCod_01" > 0 )
			player->RemoveItem "T_IngFood_FishCod_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishLeaperTail_01" > 0 )
			player->RemoveItem "T_IngFood_FishLeaperTail_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishPikeperch_01" > 0 )
			player->RemoveItem "T_IngFood_FishPikeperch_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishSpr_01" > 0 )
			player->RemoveItem "T_IngFood_FishSpr_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishStrid_01" > 0 )
			player->RemoveItem "T_IngFood_FishStrid_01" 1
		endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_fish" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Beef
if ( state == 40 )
	set myZ to ( myZ + ( 3.4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_meat" )
	if ( cook_tot >= 10 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна говядина."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return

elseif ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_meat" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_beef" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Chicken Leg
if ( state == 50 )
	set myZ to ( myZ + ( 2 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_chickenleg1" )
	if ( cook_tot >= 10 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 52
	elseif ( cook_tot >= 5 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 52
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 55
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна куриная ножка."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 52 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 55
	return

elseif ( state == 55 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_chickenleg1" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_chicken" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Guar Rib
if ( state == 60 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_guar_rib" )
	if ( cook_tot >= 10 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 62
	elseif ( cook_tot >= 5 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 62
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 65
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно гуарье ребрышко."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 62 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 65
	return

elseif ( state == 65 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_guar_rib" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_rib" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Kagouti Skewers
if ( state == 70 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set ingred_tot to ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set cook_tot to ( ingred_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 порции мяса кагути."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "Ingred_scrib_cabbage_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна скрибовая капуста."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_lard" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно сало."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15" "30"
		set button to -1
		set state to 72
	elseif ( cook_tot >= 5 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15"
		set button to -1
		set state to 72
	else
		set cook_tot to 1
		set state to 75
	endif

elseif ( state == 72 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 75
	return

elseif ( state == 75 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "TR_Ingred_Meat_Kagouti" 2
		player->RemoveItem "Ingred_scrib_cabbage_01" 1
		player->RemoveItem "NOM_food_lard" 1
		player->RemoveItem "NOM_salt" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_skewer" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

end

Поясните, если не трудно, что именно не так в обоих случаях. Иначе придется скидывать сюда еще несколько подобных скриптов с той же проблемой.

Ссылка на комментарий
Поделиться на другие сайты

Все перепутано как есть.

endif

set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )

set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )

set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )

set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )

set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )

set ingred_tot to ( ingred_tot * 2 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )

set ingred_tot to ( ingred_tot * 2 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )

set ingred_tot to ( ingred_tot * 3 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )

set ingred_tot to ( ingred_tot * 3 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )

set ingred_tot to ( ingred_tot * 4 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )

set ingred_tot to ( ingred_tot * 5 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )

set ingred_tot to ( ingred_tot * 6 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )

set ingred_tot to ( ingred_tot * 2 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )

set ingred_tot to ( ingred_tot * 2 )

set water_tot to ( water_tot + ingred_tot )

set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )

set ingred_tot to ( ingred_tot * 4 )

set water_tot to ( water_tot + ingred_tot )

return

 

Тут сверху endif переместить вниз.

 

if ( GetJournalIndex NOM_recipes == 10 )

if ( GetJournalIndex NOM_recipes == 20 )

if ( GetJournalIndex NOM_recipes == 40 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"

set button_max to 3

set state to 15

elseif ( GetJournalIndex NOM_recipes == 10 )

if ( GetJournalIndex NOM_recipes == 20 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "- Отмена -"

set button_max to 2

set state to 15

elseif ( GetJournalIndex NOM_recipes == 10 )

if ( GetJournalIndex NOM_recipes == 40 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Хлеб из пепельного батата" "- Отмена -"

set button_max to 2

set state to 16

elseif ( GetJournalIndex NOM_recipes == 20 )

if ( GetJournalIndex NOM_recipes == 40 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"

set button_max to 2

set state to 18

endif

elseif ( GetJournalIndex NOM_recipes == 10 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "- Отмена -"

set button_max to 1

set state to 15

elseif ( GetJournalIndex NOM_recipes == 20 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "- Отмена -"

set button_max to 1

set state to 18

elseif ( GetJournalIndex NOM_recipes == 40 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Хлеб из пепельного батата" "- Отмена -"

set button_max to 1

set state to 19

endif

endif

endif

endif

endif

return

 

Тут вообще швах, надо четко, один if и под ним endif. Эти три условия подряд не сработают.

 

Остальная часть скрипта нормальная.

Ссылка на комментарий
Поделиться на другие сайты

1.Теперь доходит до меню выбора "какой хлеб хотите испечь?" и на этом останавливается с DisablePlayerControls. Где я опять накосячила?

begin NoM_bake
;--Bread making
short state
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short water_tot			; how much water the PC has
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	PlaySound "Item Ingredient Up"
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "ingred_bread_01" 1
		messagebox "Вы испекли буханку хлеба."
	elseif ( state == 35 )
		player->AddItem "NOM_sltw_food_bread_corn" 1
		messagebox "Вы испекли буханку кукурузного хлеба."
	elseif ( state == 45 )
		player->AddItem "NOM_food_bread_ash" 1
		messagebox "Вы испекли буханку хлеба из пепельного батата."
	endif
	return
endif

;--Base state
if ( state == 0 )
if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете печь. Изучите хотя бы один рецепт."
		stopScript NOM_bake
	elseif ( NOM_ovenplace <= 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню/печи."
		stopScript NOM_bake
	else
		set state to 10
		set NoM_busy to 1
		DisablePlayerControls
		MenuTest 0
	set water_tot to ( player->GetItemCount, "NOM_waterskin_1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_02_water1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_09_water1" )
	set water_tot to water_tot + ( player->GetItemCount, "misc_com_bottle_03_water1" )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_2" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water2" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_3" )
	set ingred_tot to ( ingred_tot * 3 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water3" )
	set ingred_tot to ( ingred_tot * 3 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_4" )
	set ingred_tot to ( ingred_tot * 4 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_5" )
	set ingred_tot to ( ingred_tot * 5 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "NOM_waterskin_6" )
	set ingred_tot to ( ingred_tot * 6 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_02_water" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_09_water" )
	set ingred_tot to ( ingred_tot * 2 )
	set water_tot to ( water_tot + ingred_tot )
	set ingred_tot to ( player->GetItemCount, "misc_com_bottle_03_water" )
	set ingred_tot to ( ingred_tot * 4 )
	set water_tot to ( water_tot + ingred_tot )
	return
endif
endif

if ( state == 10 )
	set cooking to 0
	set button to -1
if ( GetJournalIndex NOM_recipes >= 10 )
		messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"
		set button_max to 3
 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "- Отмена -"
			set button_max to 2
	 		set state to 15
elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 2
	 		set state to 16
elseif ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 2
	 		set state to 18
		endif
elseif ( GetJournalIndex NOM_recipes == 10 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "- Отмена -"
			set button_max to 1
	 		set state to 15
		elseif ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Кукурузный хлеб" "- Отмена -"
			set button_max to 1
	 		set state to 18
		elseif ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Какой сорт хлеба вы хотите испечь?" "Хлеб из пепельного батата" "- Отмена -"
			set button_max to 1
	 		set state to 19
		endif
	endif
endif
endif
	return

;--Handle menu selection
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return

elseif ( state == 16 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 20 * button ) + 20 )
	endif
	return

elseif ( state == 18 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to ( ( 10 * button ) + 30 )
	endif
	return

elseif ( state == 19 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_bake
	else
		set state to 40
	endif
	return
endif

;--Виквитовый хлеб
if ( state == 20 )
	set cook_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	set cook_tot to ( cook_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 пучка виквита."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_saltrice_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен соленый рис."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок виквитового хлеба вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок виквитового хлеба вы хотите испечь?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	endif

elseif ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return

elseif ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "ingred_wickwheat_01" 2
		player->RemoveItem "ingred_saltrice_01" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Кукурузный хлеб
if ( state == 30 )
	set cook_tot to ( player->GetItemCount "NOM_food_corn" )
	set cook_tot to ( cook_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 початка кукурузы."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_food_lard" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно сало."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок кукурузного хлеба вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок кукурузного хлеба вы хотите испечь?" "1" "5"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return

elseif ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_corn" 2
		player->RemoveItem "NoM_food_lard" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Хлеб из пепельного батата
if ( state == 40 )
	set cook_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен виквит."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_ash_yam_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен пепельный батат."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_Yeast" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны дрожжи."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( water_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна вода."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько буханок хлеба из пепельного батата вы хотите испечь?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько буханок хлеба из пепельного батата вы хотите испечь?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	endif

elseif ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return

elseif ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "ingred_wickwheat_01" 1
		player->RemoveItem "ingred_ash_yam_01" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_yeast" 1
		PlaySound "fv_oven"
		set myTimer to -5
		set cooking to 1
	endif
endif

end

2. В этом скрипте все сделано по образцу скрипта NOM_tisane, но процесс готовки не запускается, не доходит даже до меню выбора. Плюс нет месседжбокса про "вы не умеете" если рецепт не изучен. Помогите-спасите.

begin NOM_frying
;--Frying: Main menu.
short button
short canFry
short button_max
short state

if ( NOM_cooking == 1 )
	set NOM_cooking to 0
	set state to 10
endif

if ( state == 0 )
set canFry to ( NOM_fireplace + NOM_ovenplace ) 
	if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить на сковороде. Изучите хотя бы один рецепт."
		stopScript NOM_frying
	elseif ( canFry == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню/печи."
		stopScript NOM_frying
	else
		DisablePlayerControls
		set state to 10
		set NoM_busy to 1
		MenuTest 0
	endif
	return
endif

;--Menu
if ( state == 10 )
if ( GetJournalIndex NOM_recipes >= 10 )
               messagebox "Что вы хотите приготовить?"  "Мясо  >" "Рыбу  >" "Овощи  >" "Омлет  >" "Соленый рис  >" "- Отмена -"
			set button_max to 5
elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Что вы хотите приготовить?"  "Мясо  >" "Рыбу  >" "Овощи  >" "Омлет  >" "Соленый рис  >" "- Отмена -"
			set button_max to 5
elseif ( GetJournalIndex NOM_recipes == 10 )
if Journal NOM_recipes == 40
			messagebox "Что вы хотите приготовить?"  "Мясо  >" "Овощи  >" "Соленый рис  >" "- Отмена -"
			set button_max to 3
elseif ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Что вы хотите приготовить?"  "Рыбу  >" "Овощи  >" "Омлет  >" "- Отмена -"
			set button_max to 3
		endif
	else
if ( GetJournalIndex NOM_recipes == 10 )
			messagebox "Что вы хотите приготовить?"  "Мясо  >" "Овощи  >" "Соленый рис  >" "- Отмена -"
			set button_max to 3
		elseif ( GetJournalIndex NOM_recipes == 20 )
			messagebox "Что вы хотите приготовить?"  "Рыбу  >" "Омлет  >" "- Отмена -"
			set button_max to 2
		elseif ( GetJournalIndex NOM_recipes == 40 )
			messagebox "Что вы хотите приготовить?"  "Овощи  >" "- Отмена -"
			set button_max to 1
		endif
	endif
endif
endif
	set button to -1
	set state to 20
return

;--Handles menu selection
elseif ( state == 20 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set NoM_busy to 0
	stopScript NOM_frying
	set state to 0
	elseif ( button == 0 )
if ( GetJournalIndex NOM_recipes == 10 )
			StartScript NOM_frying_meat
		elseif ( GetJournalIndex NOM_recipes == 20 )
			StartScript NOM_frying_fish
		else
			StartScript NOM_frying_vegetables
		endif
	elseif ( button == 1 )
if ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
			StartScript NOM_frying_fish
		elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
				StartScript NOM_frying_fish
			else
				StartScript NOM_frying_vegetables
			endif
		else
			if ( GetJournalIndex NOM_recipes == 20 )
				StartScript NOM_frying_omelette
			else
				StartScript NOM_frying_vegetables
			endif
		endif
	elseif ( button == 2 )
if ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
if ( GetJournalIndex NOM_recipes == 40 )
			StartScript NOM_frying_vegetables
		elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 20 )
				StartScript NOM_frying_vegetables
			elseif ( GetJournalIndex NOM_recipes == 10 )
if ( GetJournalIndex NOM_recipes == 40 )
				StartScript NOM_frying_rice
			else
				StartScript NOM_frying_omelette
			endif
		else
			StartScript NOM_frying_rice
		endif
	elseif ( button == 3 )
		StartScript NOM_frying_omelette
	elseif ( button == 4 )
		StartScript NOM_frying_rice
	endif
endif
endif
endif
endif
endif
endif

end
Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

endif

endif

return

Отсюда return убрать. И в этом блоке теперь на один endif больше чем нужно.

 

elseif ( GetJournalIndex NOM_recipes == 10 )

if ( GetJournalIndex NOM_recipes == 20 )

messagebox "Какой сорт хлеба вы хотите испечь?" "Виквитовый хлеб" "Кукурузный хлеб" "- Отмена -"

set button_max to 2

 

Эти два условия подряд не сработают, видимо elseif отсюда убрать, щаменить на endif.

 

Второй скрип вообще не понятен, там нет активации, от чего он должен сработать. If ( onactivate )

 

И опять три нерабочих условия подряд

if ( GetJournalIndex NOM_recipes == 10 )

if ( GetJournalIndex NOM_recipes == 20 )

if ( GetJournalIndex NOM_recipes == 40 )

Оставить одно.

Ссылка на комментарий
Поделиться на другие сайты

Эти два условия подряд не сработают, видимо elseif отсюда убрать, щаменить на endif.

А если необходимо чтобы были выполнены оба этих условия, или несколько сразу? Неработавшую переменную изученного рецепта я заменила на дневниковую запись, добавляющуюся после прочтения книги. Не лучшее решение, но другого выхода пока не вижу. Переменные можно было суммировать. А вот с дневниковыми записями возможно провернуть что-то подобное?

 

Второй скрип вообще не понятен, там нет активации, от чего он должен сработать. If ( onactivate )

Активация в скрипте самой сковородки, с ним вроде все в порядке. При выборе "Приготовить что-то" должен запускаться скрипт NOM_frying.

begin NOM_fryingLS
;--Frying pan.
short onPCEquip
short state

;--Equip/Activate
if ( onPCEquip )
	set onPCEquip to 0
	set NoM_cooking_device to 0
	startScript NOM_frying

elseif ( onActivate )
	if ( MenuMode == 0 )
		messagebox "Что вы хотите сделать со сковородой?" "Приготовить что-нибудь" "Взять" "- Отмена -"
		set state to -1
	else
		Activate
	endif

;--Quick exit
elseif ( state == 0 )
	return

;--Handle menu choice
elseif ( state == -1 )
	set state to getButtonPressed
	if ( state == -1 )
		return
	elseif ( state == 0 )
		set NoM_cooking_x to GetPos x
		set NoM_cooking_y to GetPos y
		set NoM_cooking_z to GetPos z
		set NoM_cooking_rot to GetAngle z
		set NoM_cooking_scale to GetScale
		set NoM_cooking_device to 1
		player->startScript NOM_frying
	elseif ( state == 1 )
		return
	elseif ( state == 2 )
		set state to 0
		return
	endif

;--Pick Up
elseif ( state == 1 )
	set state to 0
	Activate
endif

end
Ссылка на комментарий
Поделиться на другие сайты

А если необходимо чтобы были выполнены оба этих условия, или несколько сразу? Неработавшую переменную изученного рецепта я заменила на дневниковую запись, добавляющуюся после прочтения книги. Не лучшее решение, но другого выхода пока не вижу. Переменные можно было суммировать. А вот с дневниковыми записями возможно провернуть что-то подобное?

 

 

Активация в скрипте самой сковородки, с ним вроде все в порядке. При выборе "Приготовить что-то" должен запускаться скрипт NOM_frying.

 

begin NOM_fryingLS
;--Frying pan.
short onPCEquip
short state

;--Equip/Activate
if ( onPCEquip )
	set onPCEquip to 0
	set NoM_cooking_device to 0
	startScript NOM_frying

elseif ( onActivate )
	if ( MenuMode == 0 )
		messagebox "Что вы хотите сделать со сковородой?" "Приготовить что-нибудь" "Взять" "- Отмена -"
		set state to -1
	else
		Activate
	endif

;--Quick exit
elseif ( state == 0 )
	return

;--Handle menu choice
elseif ( state == -1 )
	set state to getButtonPressed
	if ( state == -1 )
		return
	elseif ( state == 0 )
		set NoM_cooking_x to GetPos x
		set NoM_cooking_y to GetPos y
		set NoM_cooking_z to GetPos z
		set NoM_cooking_rot to GetAngle z
		set NoM_cooking_scale to GetScale
		set NoM_cooking_device to 1
		player->startScript NOM_frying
	elseif ( state == 1 )
		return
	elseif ( state == 2 )
		set state to 0
		return
	endif

;--Pick Up
elseif ( state == 1 )
	set state to 0
	Activate
endif

end
Дневниковую запись это как переменная. Но она обычно только увеличивается. Снова поменять на переменную видимо.

 

Тогда надо убрать эти три условия подряд getjournslindex, нужно чтобы под if был endif.

Ссылка на комментарий
Поделиться на другие сайты

1. Со скриптами девайсов разобралась, заработало. Теперь та же проблема со скриптами отдельных блюд. Например при выборе Что приготовить->Мясо->Панированную куриную ножку скрипт останавливается с потерей контроля над персонажем. Подскажите пжлст где что добавить/убрать.

begin NOM_frying_meat
;--Frying pan: Meat
short state
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking
float myX
float myY
float myZ
float myRot
short myRandom

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	if ( NoM_cooking_device == 0 )
		PlaySound "Item Ingredient Up"
	endif
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "NOM_food_chickenleg1_breaded" 1
		messagebox "Вы приготовили панированную куриную ножку."
	elseif ( state == 35 )
		player->AddItem "NOM_food_bittersweet" 3
		messagebox "Вы приготовили пряную говядину и разделили ее на 3 порции."
	elseif ( state == 45 )
		player->AddItem "NOM_food_guar_rib_succ" 1
		messagebox "Вы приготовили пряное гуарье ребрышко."
	endif
	return
endif

;--Base state
if ( state == 0 )
	set state to 10
	return
endif

elseif ( state == 10 )
	set cooking to 0
	set myX to NoM_cooking_x
	set myY to NoM_cooking_y
	set myZ to NoM_cooking_z
	set button to -1
	if ( GetJournalIndex NOM_recipes >= 10 )
		messagebox "Что вы хотите приготовить?" "Панированную куриную ножку" "Пряную говядину" "Пряное гуарье ребрышко" "<  Назад"
		set button_max to 3
		set state to 15
	endif
	return
endif

;--Handles menu selection
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		set NOM_cooking to 1
		StopScript NOM_frying_meat
		StartScript NOM_frying
		set state to 0
	else
		set state to ( ( 10 * button ) + 20 )
endif
return
endif

;Breaded Chicken Leg
if ( state == 20 )
	set myZ to ( myZ + ( 1.8 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_chickenleg1" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна куриная ножка."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_egg2" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно куриное яйцо."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен виквит."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько панированных куриных ножек вы хотите приготовить?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько панированных куриных ножек вы хотите приготовить?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	endif

elseif ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return
endif

elseif ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_chickenleg1" 1
		player->RemoveItem "NOM_food_egg2" 1
		player->RemoveItem "ingred_wickwheat_01" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_chicken_bread" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

;Bittersweet Beef
if ( state == 30 )
	set myZ to ( myZ + ( 3 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_meat" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна говядина."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_scuttle_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен скаттл."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_a_apple" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно яблоко."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_sltw_food_a_onion" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна луковица."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_sugar" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен сахар."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько порций пряной говядины вы хотите приготовить?" "2" "10" "20"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько порций пряной говядины вы хотите приготовить?" "2" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return

elseif ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_meat" 1
		player->RemoveItem "ingred_scuttle_01" 1
		player->RemoveItem "NOM_food_a_apple" 1
		player->RemoveItem "NOM_sltw_food_a_onion" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_sugar" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_beef_bitter" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

;Succulent Guar Rib
if ( state == 40 )
	set myZ to ( myZ + ( 2.6 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_guar_rib" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно гуарье ребрышко."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_a_lemon" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен лимон."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_bittergreen_petals_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны лепестки горьколистника."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_wine_08" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_02" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_03" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_04" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_09" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно вино."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько пряных гуарьих ребрышек вы хотите приготовить?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько пряных гуарьих ребрышек вы хотите приготовить?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	endif

elseif ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return

elseif ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_guar_rib" 1
		player->RemoveItem "NOM_food_a_lemon" 1
		player->RemoveItem "ingred_bittergreen_petals_01" 1
		player->RemoveItem "NOM_salt" 1
		if ( player->GetItemCount "NOM_wine_08" > 0 )
			player->RemoveItem "NOM_wine_08" 1
		elseif ( player->GetItemCount "NOM_wine_02" > 0 )
			player->RemoveItem "NOM_wine_02" 1
		elseif ( player->GetItemCount "NOM_wine_03" > 0 )
			player->RemoveItem "NOM_wine_03" 1
		elseif ( player->GetItemCount "NOM_wine_04" > 0 )
			player->RemoveItem "NOM_wine_04" 1
		elseif ( player->GetItemCount "NOM_wine_09" > 0 )
			player->RemoveItem "NOM_wine_09" 1
		endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_rib_succulent" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

end

2. Скрипт песочных часов. При активации есть выбор - узнать время или поднять. Время показывает нормально, но при выборе "поднять" ничего не работает. В чем тут косяк?

begin HourGlass

Short OnPCEquip
Short PCSkipEquip
short button
short state
short messageOn

if ( menumode == 1)
	return
endif

Set PCSkipEquip to 1

If ( OnPCEquip == 1)
   If (Month == 0)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Утренней Звезды", GameHour, Day
   elseif (Month == 1)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Восхода", GameHour, Day
   elseif (Month == 2)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Первоцвета", GameHour, Day
   elseif (Month == 3)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Дождя", GameHour, Day
   elseif (Month == 4)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Сева", GameHour, Day
   elseif (Month == 5)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Середины Года", GameHour, Day
   elseif (Month == 6)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Солнцеворота", GameHour, Day
   elseif (Month == 7)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Урожая", GameHour, Day
   elseif (Month == 8)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Огня", GameHour, Day
   elseif (Month == 9)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Мороза", GameHour, Day
   elseif (Month == 10)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Заката", GameHour, Day
   elseif (Month == 11)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day
endif
endif

Set OnPCEquip to 0

if ( OnActivate == 1 )
	Set messageOn to 2
endif

if ( messageOn == 0 )
	return
endif

if ( messageOn == 2 )
	MessageBox "Что вы хотите сделать?" "Узнать время." "Поднять."
	Set messageOn to 1
endif

if ( messageOn == 1 )
	set button to GetButtonPressed
	if ( button == 0 )
     If (Month == 0)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Утренней Звезды", GameHour, Day
   elseif (Month == 1)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Восхода", GameHour, Day
   elseif (Month == 2)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Первоцвета", GameHour, Day
   elseif (Month == 3)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Дождя", GameHour, Day
   elseif (Month == 4)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Сева", GameHour, Day
   elseif (Month == 5)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Середины Года", GameHour, Day
   elseif (Month == 6)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Солнцеворота", GameHour, Day
   elseif (Month == 7)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Урожая", GameHour, Day
   elseif (Month == 8)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Огня", GameHour, Day
   elseif (Month == 9)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Мороза", GameHour, Day
   elseif (Month == 10)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Заката", GameHour, Day
   elseif (Month == 11)
	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day	
		Set messageOn to 0
	endif
	if ( button == 1 )
		Activate
		Set messageOn to 0
		return
	endif
endif
endif

end
Ссылка на комментарий
Поделиться на другие сайты

Для начала elseif -> if:

 

 

if ( state == 0 )

set state to 10

return

endif

 

elseif ( state == 10 )

 

_----

2 elseif -> if:

 

elseif ( state == 25 )

if ( cook_tot <= 0 )

 

3 заменить на это

MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day

Endif

Set messageOn to 0

elseif ( button == 1 )

Ссылка на комментарий
Поделиться на другие сайты

Для начала elseif -> if:

 

 

if ( state == 0 )

set state to 10

return

endif

 

elseif ( state == 10 )

 

_----

2 elseif -> if:

 

elseif ( state == 25 )

if ( cook_tot <= 0 )

Исправила, но погоды это не сделало - все равно не идет дальше выбора блюда.

 

 

3 заменить на это

MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day

Endif

Set messageOn to 0

elseif ( button == 1 )

Если я правильно понимаю, должно быть вот так: 

	MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day	
		Set messageOn to 0
	elseif ( button == 1 )
		Activate
		Set messageOn to 0
		return
	endif
endif
endif

Не работает, на активацию реакции нет.

 

3. Вот в этом скрипте вроде тоже все блоки закрыты endif'ами, но скрипт не работает. Похоже, дело в чем-то другом..

begin NOM_grill
;--Grilling
short state
short canGrill
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short meat_tot			; how much meat the PC has
short fish_tot			; how many fishes the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking
float myX
float myY
float myZ
float myRot
short myRandom

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	if ( NoM_cooking_device == 0 )
		PlaySound "Item Ingredient Up"
	endif
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "NOM_food_meat_grilled2" 1
		messagebox "Вы пожарили мясо."
	elseif ( state == 35 )
		player->AddItem "NOM_food_grilled_fish" 1
		messagebox "Вы пожарили рыбу."
	elseif ( state == 45 )
		player->AddItem "NOM_food_meat_grilled" 1
		messagebox "Вы пожарили говядину."
	elseif ( state == 55 )
		player->AddItem "NOM_food_chickenleg1_cook" 1
		messagebox "Вы пожарили куриную ножку."
	elseif ( state == 65 )
		player->AddItem "NOM_food_guar_rib_grill" 1
		messagebox "Вы пожарили гуарье ребрышко."
	elseif ( state == 75 )
		player->AddItem "NOM_food_skewer_kag" 3
		messagebox "Вы пожарили 3 шашлыка из мяса кагути."
	endif
	return
endif

;--Base state
if ( state == 0 )
     set canGrill to ( NOM_fireplace + NOM_ovenplace )
	if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить на гриле. Изучите хотя бы один рецепт."
		stopScript NOM_grill
elseif ( canGrill == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню/печи."
		stopScript NOM_grill
	else
		set state to 10
		set NoM_busy to 1
		DisablePlayerControls
		MenuTest 0
	endif
endif
	return
endif

if ( state == 10 )
	set cooking to 0
	set myX to NoM_cooking_x
	set myY to NoM_cooking_y
	set myZ to NoM_cooking_z
	set button to -1
if ( GetJournalIndex NOM_recipes >= 10 )
messagebox "Что вы хотите приготовить?" "Жареное на гриле мясо" "Жареную на гриле рыбу" "Жареную говядину" "Жареную куриную ножку" "Жареное гуарье ребрышко" "Шашлык из мяса кагути" "- Отмена -"
		set button_max to 6
 		set state to 15
endif
endif
return
endif

;--Handle menu selection
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_grill
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return
endif

;--Grilled Meat
if ( state == 20 )
	set myZ to ( myZ + ( 3 * NoM_cooking_scale ) )
	set meat_tot to ( player->GetItemCount "ab01ingred_bird_meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_mouse_meat_MVA" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Parastylus_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Ornada_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Mutton" )
	set meat_tot to meat_tot + ( player->GetItemCount "plx_ingred_kriin_flesh" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Boar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Guar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kwama" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Alit" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_wolf_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_bear_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_durzog_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ab01ingred_turtlemeat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_rat_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_hound_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_dragon_meat_mwa" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorker_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatCliffracer_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKwama_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatOrnada_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKagouti_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatAlit_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatGuar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatParastylus_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatMutton_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorse_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBeef_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_GuarMeat_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "plx_guar_meat" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_HorseMeat01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatVenison_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_02" )
    set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Darkmeat" )
     set cook_tot to meat_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно мясо любого животного."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return
endif

if ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "ab01ingred_bird_meat" > 0 )
			player->RemoveItem "ab01ingred_bird_meat" 1
		elseif ( player->GetItemCount "ingred_mouse_meat_MVA" > 0 )
			player->RemoveItem "ingred_mouse_meat_MVA" 1
		elseif ( player->GetItemCount "TR_Ingred_Parastylus_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Parastylus_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Ornada_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Ornada_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Mutton" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Mutton" 1
		elseif ( player->GetItemCount "plx_ingred_kriin_flesh" > 0 )
			player->RemoveItem "plx_ingred_kriin_flesh" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Boar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Boar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Guar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Guar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kwama" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kwama" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Alit" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Alit" 1
		elseif ( player->GetItemCount "ingred_wolf_meat_SA" > 0 )
			player->RemoveItem "ingred_wolf_meat_SA" 1
		elseif ( player->GetItemCount "ingred_bear_meat_SA" > 0 )
			player->RemoveItem "ingred_bear_meat_SA" 1
		elseif ( player->GetItemCount "ingred_durzog_meat_01" > 0 )
			player->RemoveItem "ingred_durzog_meat_01" 1
		elseif ( player->GetItemCount "ab01ingred_turtlemeat" > 0 )
			player->RemoveItem "ab01ingred_turtlemeat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Cliffracer" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kagouti" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kagouti" 1
		elseif ( player->GetItemCount "ingred_rat_meat_01" > 0 )
			player->RemoveItem "ingred_rat_meat_01" 1
		elseif ( player->GetItemCount "ingred_hound_meat_01" > 0 )
			player->RemoveItem "ingred_hound_meat_01" 1
		elseif ( player->GetItemCount "ingred_dragon_meat_mwa" > 0 )
			player->RemoveItem "ingred_dragon_meat_mwa" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorker_01" > 0 )
			player->RemoveItem "T_IngFood_MeatHorker_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatOrnada_01" > 0 )
			player->RemoveItem "T_IngFood_MeatOrnada_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_GuarMeat_01" > 0 )
			player->RemoveItem "AB_IngCrea_GuarMeat_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatParastylus_01" > 0 )
			player->RemoveItem "T_IngFood_MeatParastylus_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKwama_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKwama_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatCliffracer_01" > 0 )
			player->RemoveItem "T_IngFood_MeatCliffracer_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatAlit_01" > 0 )
			player->RemoveItem "T_IngFood_MeatAlit_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatGuar_01" > 0 )
			player->RemoveItem "T_IngFood_MeatGuar_01" 1
          elseif ( player->GetItemCount "plx_guar_meat" > 0 )
			player->RemoveItem "plx_guar_meat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKagouti_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKagouti_01" 1
          elseif ( player->GetItemCount "A-DI-RAWMEAT" > 0 )
			player->RemoveItem "A-DI-RAWMEAT" 1
          elseif ( player->GetItemCount "T_IngCrea_MeatDark_01" > 0 )
			player->RemoveItem "T_IngCrea_MeatDark_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_HorseMeat01" > 0 )
			player->RemoveItem "AB_IngCrea_HorseMeat01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatVenison_01" > 0 )
			player->RemoveItem "T_IngFood_MeatVenison_01" 1
         elseif ( player->GetItemCount "T_IngFood_MeatBoar_02" > 0 )
			player->RemoveItem "T_IngFood_MeatBoar_02" 1
          elseif ( player->GetItemCount "TR_Ingred_Darkmeat" > 0 )
			player->RemoveItem "TR_Ingred_Darkmeat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatMutton_01" )
               player->RemoveItem "T_IngFood_MeatMutton_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBoar_01" )
               player->RemoveItem "T_IngFood_MeatBoar_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorse_01" )
               player->RemoveItem "T_IngFood_MeatHorse_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBeef_01" )
               player->RemoveItem "T_IngFood_MeatBeef_01" 1
          endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_meat" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Fish
if ( state == 30 )
	set myZ to ( myZ + ( 3.25 * NoM_cooking_scale ) )
	set fish_tot to ( player->GetItemCount "NOM_food_fish" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_01" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_02" )
     set fish_tot to fish_tot + ( player->GetItemCount "RR_I_fish_raw" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishBrowntrout_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishChrysophant_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishCod_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishLeaperTail_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishPikeperch_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishSpr_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishStrid_01" )
     set cook_tot to fish_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна любая рыба."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return
endif

if ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "NOM_food_fish" > 0 )
			player->RemoveItem "NOM_food_fish" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_01" > 0 )
			player->RemoveItem "NOM_food_fish_fat_01" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_02" > 0 )
			player->RemoveItem "NOM_food_fish_fat_02" 1
          elseif ( player->GetItemCount "RR_I_fish_raw" > 0 )
			player->RemoveItem "RR_I_fish_raw" 1
          elseif ( player->GetItemCount "T_IngFood_FishBrowntrout_01" > 0 )
			player->RemoveItem "T_IngFood_FishBrowntrout_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishChrysophant_01" > 0 )
			player->RemoveItem "T_IngFood_FishChrysophant_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishCod_01" > 0 )
			player->RemoveItem "T_IngFood_FishCod_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishLeaperTail_01" > 0 )
			player->RemoveItem "T_IngFood_FishLeaperTail_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishPikeperch_01" > 0 )
			player->RemoveItem "T_IngFood_FishPikeperch_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishSpr_01" > 0 )
			player->RemoveItem "T_IngFood_FishSpr_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishStrid_01" > 0 )
			player->RemoveItem "T_IngFood_FishStrid_01" 1
		endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_fish" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Beef
if ( state == 40 )
	set myZ to ( myZ + ( 3.4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_meat" )
	if ( cook_tot >= 10 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна говядина."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return
endif

if ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_meat" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_beef" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Chicken Leg
if ( state == 50 )
	set myZ to ( myZ + ( 2 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_chickenleg1" )
	if ( cook_tot >= 10 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 52
	elseif ( cook_tot >= 5 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 52
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 55
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна куриная ножка."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 52 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 55
	return
endif

if ( state == 55 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_chickenleg1" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_chicken" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Guar Rib
if ( state == 60 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_guar_rib" )
	if ( cook_tot >= 10 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 62
	elseif ( cook_tot >= 5 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 62
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 65
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно гуарье ребрышко."
		set state to 10
		set myTimer to -0.5
		return
	endif

if ( state == 62 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 65
	return
endif

if ( state == 65 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_guar_rib" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_rib" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif
endif

;--Kagouti Skewers
if ( state == 70 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set ingred_tot to ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set cook_tot to ( ingred_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 порции мяса кагути."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "Ingred_scrib_cabbage_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна скрибовая капуста."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_lard" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно сало."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15" "30"
		set button to -1
		set state to 72
	elseif ( cook_tot >= 5 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15"
		set button to -1
		set state to 72
	else
		set cook_tot to 1
		set state to 75
	endif
endif

if ( state == 72 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 75
	return
endif

if ( state == 75 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "TR_Ingred_Meat_Kagouti" 2
		player->RemoveItem "Ingred_scrib_cabbage_01" 1
		player->RemoveItem "NOM_food_lard" 1
		player->RemoveItem "NOM_salt" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_skewer" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

end
Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

Исправила, но погоды это не сделало - все равно не идет дальше выбора блюда.

 

 

 

Если я правильно понимаю, должно быть вот так: 

 

MessageBox, "Ваши часы показывают, что сейчас %.0f час %.0f дня месяца Вечерней Звезды", GameHour, Day	
		Set messageOn to 0
	elseif ( button == 1 )
		Activate
		Set messageOn to 0
		return
	endif
endif
endif
Не работает, на активацию реакции нет.

 

3. Вот в этом скрипте вроде тоже все блоки закрыты endif'ами, но скрипт не работает. Похоже, дело в чем-то другом..

begin NOM_grill
;--Grilling
short state
short canGrill
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short meat_tot			; how much meat the PC has
short fish_tot			; how many fishes the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking
float myX
float myY
float myZ
float myRot
short myRandom

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	if ( NoM_cooking_device == 0 )
		PlaySound "Item Ingredient Up"
	endif
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "NOM_food_meat_grilled2" 1
		messagebox "Вы пожарили мясо."
	elseif ( state == 35 )
		player->AddItem "NOM_food_grilled_fish" 1
		messagebox "Вы пожарили рыбу."
	elseif ( state == 45 )
		player->AddItem "NOM_food_meat_grilled" 1
		messagebox "Вы пожарили говядину."
	elseif ( state == 55 )
		player->AddItem "NOM_food_chickenleg1_cook" 1
		messagebox "Вы пожарили куриную ножку."
	elseif ( state == 65 )
		player->AddItem "NOM_food_guar_rib_grill" 1
		messagebox "Вы пожарили гуарье ребрышко."
	elseif ( state == 75 )
		player->AddItem "NOM_food_skewer_kag" 3
		messagebox "Вы пожарили 3 шашлыка из мяса кагути."
	endif
	return
endif

;--Base state
if ( state == 0 )
     set canGrill to ( NOM_fireplace + NOM_ovenplace )
	if ( GetJournalIndex NOM_recipes < 10 )
		PlaySound "NoM_BadButton"
		messagebox "Вы не умеете готовить на гриле. Изучите хотя бы один рецепт."
		stopScript NOM_grill
elseif ( canGrill == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Подойдите к огню/печи."
		stopScript NOM_grill
	else
		set state to 10
		set NoM_busy to 1
		DisablePlayerControls
		MenuTest 0
	endif
endif
	return
endif

if ( state == 10 )
	set cooking to 0
	set myX to NoM_cooking_x
	set myY to NoM_cooking_y
	set myZ to NoM_cooking_z
	set button to -1
if ( GetJournalIndex NOM_recipes >= 10 )
messagebox "Что вы хотите приготовить?" "Жареное на гриле мясо" "Жареную на гриле рыбу" "Жареную говядину" "Жареную куриную ножку" "Жареное гуарье ребрышко" "Шашлык из мяса кагути" "- Отмена -"
		set button_max to 6
 		set state to 15
endif
endif
return
endif

;--Handle menu selection
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		EnablePlayerControls
		set state to 0
		set NoM_busy to 0
		StopScript NOM_grill
	else
		set state to ( ( 10 * button ) + 20 )
	endif
	return
endif

;--Grilled Meat
if ( state == 20 )
	set myZ to ( myZ + ( 3 * NoM_cooking_scale ) )
	set meat_tot to ( player->GetItemCount "ab01ingred_bird_meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_mouse_meat_MVA" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Parastylus_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Ornada_Meat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Mutton" )
	set meat_tot to meat_tot + ( player->GetItemCount "plx_ingred_kriin_flesh" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Boar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Guar" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kwama" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Alit" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_wolf_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_bear_meat_SA" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_durzog_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ab01ingred_turtlemeat" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" )
	set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_rat_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_hound_meat_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "ingred_dragon_meat_mwa" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorker_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatCliffracer_01" )
	set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKwama_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatOrnada_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatKagouti_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatAlit_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatGuar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatParastylus_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatMutton_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatHorse_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBeef_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_GuarMeat_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "plx_guar_meat" )
     set meat_tot to meat_tot + ( player->GetItemCount "AB_IngCrea_HorseMeat01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatVenison_01" )
     set meat_tot to meat_tot + ( player->GetItemCount "T_IngFood_MeatBoar_02" )
    set meat_tot to meat_tot + ( player->GetItemCount "TR_Ingred_Darkmeat" )
     set cook_tot to meat_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько мяса вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно мясо любого животного."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return
endif

if ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "ab01ingred_bird_meat" > 0 )
			player->RemoveItem "ab01ingred_bird_meat" 1
		elseif ( player->GetItemCount "ingred_mouse_meat_MVA" > 0 )
			player->RemoveItem "ingred_mouse_meat_MVA" 1
		elseif ( player->GetItemCount "TR_Ingred_Parastylus_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Parastylus_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Ornada_Meat" > 0 )
			player->RemoveItem "TR_Ingred_Ornada_Meat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Mutton" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Mutton" 1
		elseif ( player->GetItemCount "plx_ingred_kriin_flesh" > 0 )
			player->RemoveItem "plx_ingred_kriin_flesh" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Boar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Boar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Guar" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Guar" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kwama" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kwama" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Alit" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Alit" 1
		elseif ( player->GetItemCount "ingred_wolf_meat_SA" > 0 )
			player->RemoveItem "ingred_wolf_meat_SA" 1
		elseif ( player->GetItemCount "ingred_bear_meat_SA" > 0 )
			player->RemoveItem "ingred_bear_meat_SA" 1
		elseif ( player->GetItemCount "ingred_durzog_meat_01" > 0 )
			player->RemoveItem "ingred_durzog_meat_01" 1
		elseif ( player->GetItemCount "ab01ingred_turtlemeat" > 0 )
			player->RemoveItem "ab01ingred_turtlemeat" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Cliffracer" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Cliffracer" 1
		elseif ( player->GetItemCount "TR_Ingred_Meat_Kagouti" > 0 )
			player->RemoveItem "TR_Ingred_Meat_Kagouti" 1
		elseif ( player->GetItemCount "ingred_rat_meat_01" > 0 )
			player->RemoveItem "ingred_rat_meat_01" 1
		elseif ( player->GetItemCount "ingred_hound_meat_01" > 0 )
			player->RemoveItem "ingred_hound_meat_01" 1
		elseif ( player->GetItemCount "ingred_dragon_meat_mwa" > 0 )
			player->RemoveItem "ingred_dragon_meat_mwa" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorker_01" > 0 )
			player->RemoveItem "T_IngFood_MeatHorker_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatOrnada_01" > 0 )
			player->RemoveItem "T_IngFood_MeatOrnada_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_GuarMeat_01" > 0 )
			player->RemoveItem "AB_IngCrea_GuarMeat_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatParastylus_01" > 0 )
			player->RemoveItem "T_IngFood_MeatParastylus_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKwama_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKwama_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatCliffracer_01" > 0 )
			player->RemoveItem "T_IngFood_MeatCliffracer_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatAlit_01" > 0 )
			player->RemoveItem "T_IngFood_MeatAlit_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatGuar_01" > 0 )
			player->RemoveItem "T_IngFood_MeatGuar_01" 1
          elseif ( player->GetItemCount "plx_guar_meat" > 0 )
			player->RemoveItem "plx_guar_meat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatKagouti_01" > 0 )
			player->RemoveItem "T_IngFood_MeatKagouti_01" 1
          elseif ( player->GetItemCount "A-DI-RAWMEAT" > 0 )
			player->RemoveItem "A-DI-RAWMEAT" 1
          elseif ( player->GetItemCount "T_IngCrea_MeatDark_01" > 0 )
			player->RemoveItem "T_IngCrea_MeatDark_01" 1
          elseif ( player->GetItemCount "AB_IngCrea_HorseMeat01" > 0 )
			player->RemoveItem "AB_IngCrea_HorseMeat01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatVenison_01" > 0 )
			player->RemoveItem "T_IngFood_MeatVenison_01" 1
         elseif ( player->GetItemCount "T_IngFood_MeatBoar_02" > 0 )
			player->RemoveItem "T_IngFood_MeatBoar_02" 1
          elseif ( player->GetItemCount "TR_Ingred_Darkmeat" > 0 )
			player->RemoveItem "TR_Ingred_Darkmeat" 1
          elseif ( player->GetItemCount "T_IngFood_MeatMutton_01" )
               player->RemoveItem "T_IngFood_MeatMutton_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBoar_01" )
               player->RemoveItem "T_IngFood_MeatBoar_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatHorse_01" )
               player->RemoveItem "T_IngFood_MeatHorse_01" 1
          elseif ( player->GetItemCount "T_IngFood_MeatBeef_01" )
               player->RemoveItem "T_IngFood_MeatBeef_01" 1
          endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_meat" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Fish
if ( state == 30 )
	set myZ to ( myZ + ( 3.25 * NoM_cooking_scale ) )
	set fish_tot to ( player->GetItemCount "NOM_food_fish" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_01" )
	set fish_tot to fish_tot + ( player->GetItemCount "NOM_food_fish_fat_02" )
     set fish_tot to fish_tot + ( player->GetItemCount "RR_I_fish_raw" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishBrowntrout_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishChrysophant_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishCod_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishLeaperTail_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishPikeperch_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishSpr_01" )
     set fish_tot to fish_tot + ( player->GetItemCount "T_IngFood_FishStrid_01" )
     set cook_tot to fish_tot
	if ( cook_tot >= 10 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько рыб вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна любая рыба."
		set state to 10
		set myTimer to -0.5
		return
	endif

elseif ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return
endif

if ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		if ( player->GetItemCount "NOM_food_fish" > 0 )
			player->RemoveItem "NOM_food_fish" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_01" > 0 )
			player->RemoveItem "NOM_food_fish_fat_01" 1
		elseif ( player->GetItemCount "NOM_food_fish_fat_02" > 0 )
			player->RemoveItem "NOM_food_fish_fat_02" 1
          elseif ( player->GetItemCount "RR_I_fish_raw" > 0 )
			player->RemoveItem "RR_I_fish_raw" 1
          elseif ( player->GetItemCount "T_IngFood_FishBrowntrout_01" > 0 )
			player->RemoveItem "T_IngFood_FishBrowntrout_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishChrysophant_01" > 0 )
			player->RemoveItem "T_IngFood_FishChrysophant_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishCod_01" > 0 )
			player->RemoveItem "T_IngFood_FishCod_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishLeaperTail_01" > 0 )
			player->RemoveItem "T_IngFood_FishLeaperTail_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishPikeperch_01" > 0 )
			player->RemoveItem "T_IngFood_FishPikeperch_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishSpr_01" > 0 )
			player->RemoveItem "T_IngFood_FishSpr_01" 1
          elseif ( player->GetItemCount "T_IngFood_FishStrid_01" > 0 )
			player->RemoveItem "T_IngFood_FishStrid_01" 1
		endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_fish" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Beef
if ( state == 40 )
	set myZ to ( myZ + ( 3.4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_meat" )
	if ( cook_tot >= 10 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько кусков говядины вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна говядина."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return
endif

if ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_meat" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_beef" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Chicken Leg
if ( state == 50 )
	set myZ to ( myZ + ( 2 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_chickenleg1" )
	if ( cook_tot >= 10 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 52
	elseif ( cook_tot >= 5 )
		messagebox "Сколько куриных ножек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 52
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 55
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна куриная ножка."
		set state to 10
		set myTimer to -0.5
		return
	endif
endif

if ( state == 52 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 55
	return
endif

if ( state == 55 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_chickenleg1" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_chicken" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

;--Grilled Guar Rib
if ( state == 60 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_guar_rib" )
	if ( cook_tot >= 10 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5" "10"
		set button to -1
		set state to 62
	elseif ( cook_tot >= 5 )
		messagebox "Сколько гуарьих ребрышек вы хотите пожарить?" "1" "5"
		set button to -1
		set state to 62
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 65
	else
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно гуарье ребрышко."
		set state to 10
		set myTimer to -0.5
		return
	endif

if ( state == 62 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 65
	return
endif

if ( state == 65 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_guar_rib" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 90 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 270 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 250 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_rib" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif
endif

;--Kagouti Skewers
if ( state == 70 )
	set myZ to ( myZ + ( 4 * NoM_cooking_scale ) )
	set ingred_tot to ( player->GetItemCount "TR_Ingred_Meat_Kagouti" )
	set cook_tot to ( ingred_tot / 2 )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно 2 порции мяса кагути."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "Ingred_scrib_cabbage_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна скрибовая капуста."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_lard" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно сало."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15" "30"
		set button to -1
		set state to 72
	elseif ( cook_tot >= 5 )
		messagebox "Сколько шашлыков из мяса кагути вы хотите приготовить?" "3" "15"
		set button to -1
		set state to 72
	else
		set cook_tot to 1
		set state to 75
	endif
endif

if ( state == 72 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 75
	return
endif

if ( state == 75 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "TR_Ingred_Meat_Kagouti" 2
		player->RemoveItem "Ingred_scrib_cabbage_01" 1
		player->RemoveItem "NOM_food_lard" 1
		player->RemoveItem "NOM_salt" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 180 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 340 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 160 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_skewer" myX myY myZ myRot
		endif
		PlaySound "fv_fire_grill"
		set myTimer to -5
		set cooking to 1
	endif
endif

end
1 покажите что там.

2 нет, тот код, что у вас заменить на то что я написал, вставить вмемто него.

Ссылка на комментарий
Поделиться на другие сайты

1 покажите что там.

2 нет, тот код, что у вас заменить на то что я написал, вставить вмемто него.

 

1. Не срабатывает момент перехода от стадии 10 к 15, либо от 15 к 20.

begin NOM_frying_meat
;--Frying pan: Meat
short state
short button
short button_max
short ingred_tot		; how much of a certain ingredient the PC has
short cook_tot			; how many dishes of a certain kind the PC can cook
short cooking			; tells if the PC is cooking
float myTimer 			; a timer for cooking
float myX
float myY
float myZ
float myRot
short myRandom

if ( myTimer < 0 )
	if ( cooking == 1 )
		set myTimer to ( myTimer + GetSecondsPassed )
	elseif ( MenuMode == 0 )
		set myTimer to ( myTimer + GetSecondsPassed )
	endif
	return
elseif ( cooking == 1 )
	if ( MenuMode == 1 )
		return
	endif
	set cooking to 0
	set cook_tot to ( cook_tot - 1 )
	if ( NoM_cooking_device == 0 )
		PlaySound "Item Ingredient Up"
	endif
	set myTimer to -0.3
	set GameHour to ( GameHour + 0.1 )		;6 minutes passing for every dish
	if ( state == 25 )
		player->AddItem "NOM_food_chickenleg1_breaded" 1
		messagebox "Вы приготовили панированную куриную ножку."
	elseif ( state == 35 )
		player->AddItem "NOM_food_bittersweet" 3
		messagebox "Вы приготовили пряную говядину и разделили ее на 3 порции."
	elseif ( state == 45 )
		player->AddItem "NOM_food_guar_rib_succ" 1
		messagebox "Вы приготовили пряное гуарье ребрышко."
	endif
	return
endif

;--Base state
if ( state == 0 )
	set state to 10
	return
endif

if ( state == 10 )
	set cooking to 0
	set myX to NoM_cooking_x
	set myY to NoM_cooking_y
	set myZ to NoM_cooking_z
	set button to -1
	if ( GetJournalIndex NOM_recipes >= 10 )
		messagebox "Что вы хотите приготовить?" "Панированную куриную ножку" "Пряную говядину" "Пряное гуарье ребрышко" "<  Назад"
		set button_max to 3
		set state to 15
	endif
	return
endif

;--Handles menu selection
if ( state == 15 )
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button == button_max )
		set NOM_cooking to 1
		StopScript NOM_frying_meat
		StartScript NOM_frying
		set state to 0
	else
		set state to ( ( 10 * button ) + 20 )
endif
return
endif

;Breaded Chicken Leg
if ( state == 20 )
	set myZ to ( myZ + ( 1.8 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_chickenleg1" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна куриная ножка."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_egg2" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно куриное яйцо."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_wickwheat_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен виквит."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько панированных куриных ножек вы хотите приготовить?" "1" "5" "10"
		set button to -1
		set state to 22
	elseif ( cook_tot >= 5 )
		messagebox "Сколько панированных куриных ножек вы хотите приготовить?" "1" "5"
		set button to -1
		set state to 22
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 25
	endif
endif

if ( state == 22 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 25
	return
endif

if ( state == 25 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_chickenleg1" 1
		player->RemoveItem "NOM_food_egg2" 1
		player->RemoveItem "ingred_wickwheat_01" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_chicken_bread" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

;Bittersweet Beef
if ( state == 30 )
	set myZ to ( myZ + ( 3 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_meat" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна говядина."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_scuttle_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен скаттл."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_a_apple" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно яблоко."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_sltw_food_a_onion" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна луковица."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_sugar" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен сахар."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько порций пряной говядины вы хотите приготовить?" "2" "10" "20"
		set button to -1
		set state to 32
	elseif ( cook_tot >= 5 )
		messagebox "Сколько порций пряной говядины вы хотите приготовить?" "2" "10"
		set button to -1
		set state to 32
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 35
	endif
endif

if ( state == 32 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 35
	return
endif

if ( state == 35 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_meat" 1
		player->RemoveItem "ingred_scuttle_01" 1
		player->RemoveItem "NOM_food_a_apple" 1
		player->RemoveItem "NOM_sltw_food_a_onion" 1
		player->RemoveItem "NOM_salt" 1
		player->RemoveItem "NOM_sugar" 1
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_beef_bitter" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

;Succulent Guar Rib
if ( state == 40 )
	set myZ to ( myZ + ( 2.6 * NoM_cooking_scale ) )
	set cook_tot to ( player->GetItemCount "NOM_food_guar_rib" )
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно гуарье ребрышко."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_food_a_lemon" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужен лимон."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "ingred_bittergreen_petals_01" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужны лепестки горьколистника."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NoM_salt" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужна соль."
		set state to 10
		set myTimer to -0.5
		return
	endif
	set ingred_tot to ( player->GetItemCount "NOM_wine_08" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_02" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_03" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_04" )
	set ingred_tot to ingred_tot + ( player->GetItemCount "NOM_wine_09" )
	if ( ingred_tot < cook_tot )
		set cook_tot to ingred_tot
	endif
	if ( cook_tot == 0 )
		PlaySound "NoM_BadButton"
		messagebox "Для этого нужно вино."
		set state to 10
		set myTimer to -0.5
		return
	endif
	if ( cook_tot >= 10 )
		messagebox "Сколько пряных гуарьих ребрышек вы хотите приготовить?" "1" "5" "10"
		set button to -1
		set state to 42
	elseif ( cook_tot >= 5 )
		messagebox "Сколько пряных гуарьих ребрышек вы хотите приготовить?" "1" "5"
		set button to -1
		set state to 42
	elseif ( cook_tot > 0 )
		set cook_tot to 1
		set state to 45
	endif
endif

if ( state == 42 )
	set button to GetButtonPressed
	if ( button == 0 )
		set cook_tot to 1
	elseif ( button == 1 )
		set cook_tot to 5
	elseif ( button == 2 )
		set cook_tot to 10
	else
		return
	endif
	set state to 45
	return
endif

if ( state == 45 )
	if ( cook_tot <= 0 )
		set state to 10
		return
	else
		player->RemoveItem "NOM_food_guar_rib" 1
		player->RemoveItem "NOM_food_a_lemon" 1
		player->RemoveItem "ingred_bittergreen_petals_01" 1
		player->RemoveItem "NOM_salt" 1
		if ( player->GetItemCount "NOM_wine_08" > 0 )
			player->RemoveItem "NOM_wine_08" 1
		elseif ( player->GetItemCount "NOM_wine_02" > 0 )
			player->RemoveItem "NOM_wine_02" 1
		elseif ( player->GetItemCount "NOM_wine_03" > 0 )
			player->RemoveItem "NOM_wine_03" 1
		elseif ( player->GetItemCount "NOM_wine_04" > 0 )
			player->RemoveItem "NOM_wine_04" 1
		elseif ( player->GetItemCount "NOM_wine_09" > 0 )
			player->RemoveItem "NOM_wine_09" 1
		endif
		set myRandom to Random 4
		if ( myRandom == 0 )
			set myRot to NoM_cooking_rot
		elseif ( myRandom == 1 )
			set myRot to ( NoM_cooking_rot + 250 )
		elseif ( myRandom == 2 )
			set myRot to ( NoM_cooking_rot + 70 )
		elseif ( myRandom == 3 )
			set myRot to ( NoM_cooking_rot + 170 )
		endif
		if ( NoM_cooking_device == 1 )
			PlaceItem "NoM_c_rib_succulent" myX myY myZ myRot
		endif
		PlaySound "fv_fry"
		set myTimer to -5
		set cooking to 1
	endif
endif

end

2. Тьфу блин, пропустила один endif, мой косяк. Все заработало, спасибо!

 

А с 3-м скриптом что не так? Все endif'ы на месте. Есть еще некоторое количество похожих скриптов, и все они не работают.

Изменено пользователем La Sombra del Mar
Ссылка на комментарий
Поделиться на другие сайты

1 с виду все правильно. Модет с журнальгыми записями что;

2 DisablePlayerControls

MenuTest 0

endif

endif

return

Лишний endif.

 

Больше не вижу ошибок, с логикой что-то может.

Ссылка на комментарий
Поделиться на другие сайты

Привет. Подскажите мне, пожалуйста, в чём тут кроется ошибка и как её можно устранить. Я скачал один мод из Нексуса. Называется он "Go_To_Jail_3_7". Это очень интересный плагин, правда англоязычный, где можно сидеть в тюрьме или на каторге в прямом смысле, за свои преступления в игре. Перевести его на русский язык не такая уж проблема. Там всё с ним немного куда сложнее. Там что-то неправильно в его скриптах указано и постоянно выдаёт ошибку поэтому. Короче, в нём есть две версии. Обычная и для плагина NOM, этот тот, который для необходимостей персонажа был сделан - есть там, пить, срать, спать и т.п. Какую бы я из них не подключал и не запускал потом игру, мне постоянно, помимо ошибки о разных версий игры (их первоначальная английская от русской), выдаётся ещё вот это сообщение: "Script '' in file 'Go To Jail 3.7 - NOM.esp' has not been compiled." И потом сразу за ним идёт следующий с примерно таким же сообщением: "Script 'GTJ_WaterScript' in file 'Go To Jail 3.7 - NOM.esp' has not been compiled.". Что это значит?

"Перекомпиляция" скриптов от самого конструктора и даже от проги "NWEdit" не помогает. В последней проге, при выборе опции "Compile" проблемного скрипта выпадает ошибка, что: "Error: Compiled 199 lines in 0.00669 secs! (0 Warning, 1 Errors). Что это всё значит я не знаю. Вообще со скриптами этой игры никогда не умел обращаться. Даже не знаю, для чего вообще нужна эта опция с ними, как какая-то там "перекомпиляция" и что она даёт сама по себе.

Короче, этот мод мне никак без всяких ошибок у себя не запустить, но очень бы хотелось. Если я перевожу его на русском в самом конструкторе, в том числе и скрипты там его, то при запуске игры всё равно потом выводится сообщение об новых ошибках, с которыми невозможно будет играть. Что тут можно сделать? Вот этот самый мод: http://mw.modhistory.com/download-46-6160

Я изначально нашёл его на Нексусе, но по скачиванию там почему-то переходит на другой иностранный сайт.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...