-
Постов
67 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Календарь
Весь контент La Sombra del Mar
-
И все равно звук зависает, теперь не сразу, но после 4-5 применений. Провела эксперимент, заспавнив несколько раз перед собой просто активатор - вроде бы по части звука все в порядке. Похоже дело все же в скрипте самой трубки, а не активатора со спеллом. Вроде бы там все просто - появился активатор, кастанул спелл, пропал. Но хоть убей не пойму что именно вызывает такой эффект. Может быть такое что скрипт реагирует на наличие в инвентаре лунного сахара не один раз, а зацикливает результат? Вот в этом фрагменте: elseif ( button == 0 ) if ( player->GetItemCount, ingred_moon_sugar_01 > 0 ) player->RemoveItem, "ingred_moon_sugar_01", 1 PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0 Set status to 0 return else MessageBox "Для этого нужен лунный сахар" Set status to 0 return endif
-
Один раз. Дефолтная вот, это еще вообще до начала каких-либо изменений: Begin _skooma_smoke float timer short state short doOnce if ( state == 0 ) ; play smoke sound, fade out, make player fall Playsound, "Blackoutin" FadeOut 2 Player->ModCurrentFatigue -999 Set state to 1 elseif ( state == 1 ) ; smoking in progress Set timer to ( timer + GetSecondsPassed ) if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once if ( doOnce == 0 ) Set doOnce to 1 Cast, "wh_skooma_smoke_effect", Player endif endif if ( timer > 2 ) ; fade in, make player stand up FadeIn 1.5 Player->ModCurrentFatigue 999 Set timer to 0 Set state to 2 endif else ; get rid of this object if ( timer == 0 ) disable ; disabling object endif if ( timer < 5 ) Set timer to ( timer + GetSecondsPassed ) endif if ( timer >= 5 ) setdelete 1 ; deleting object endif return endif End
-
После того как активатор кастанул спелл, звук каста не прекращается, а воспроизводится снова и снова, в ускоренном темпе. Экран темнеет, потом светлеет, тут все в порядке. Спелл срабатывает, но эффекта нет, что тоже не норма - в дефолтном варианте с этим проблем не было. Сам спелл с тех пор не менялся, только скрипты. Месседжбокс добавила, хоть и не совсем понимаю как это должно было помочь. Не помогло.
-
Не повлияло. Вообще ничего не помогает, и никак не могу понять что вообще провоцирует это зацикливание. То ли дело в скрипте активатора, кастующего спелл, то ли в скриптах самих трубок где-то закрался косяк. Сделала по-другому, без стадий, зацикливание звука теперь начинается сразу, после первого же применения. До этого было после нескольких, где-то после 5-6. И, что характерно, звук каста идет, но действия эффекта нет. Begin _skooma_smoke_2 short doonce float TimePassed set TimePassed to (TimePassed + GetSecondsPassed) if ( doonce == 0 ) Playsound, "Blackoutin" FadeOut 3 Cast, "wh_skooma_smoke_effect", player set doonce to 1 endif if ( TimePassed >= 3 ) FadeIn 1.5 set TimePassed to 0 disable setDelete, 1 endif end Вот еще раз на всякий случай скрипты трубок, может с ними как-то связано: Begin _skooma_pipe short button short pickup short status if ( pickup == 1 ) Set pickup to 0 activate return endif if ( OnActivate == 1 ) if ( MenuMode == 0 ) MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Взять" Set status to 1 else Set pickup to 1 return endif endif endif If ( status == 1 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == 0 ) if ( player->GetItemCount, ingred_moon_sugar_01 > 0 ) player->RemoveItem, "ingred_moon_sugar_01", 1 PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0 Set status to 0 return else MessageBox "Для этого нужен лунный сахар" Set status to 0 return endif elseif ( button == 1 ) Set status to 0 Set pickup to 1 endif endif End begin Skooma_pipe_act short button short status if ( OnActivate == 1 ) if ( MenuMode == 0 ) MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Ничего" Set status to 1 else Set status to 0 return endif endif If ( status == 1 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == 0 ) if ( player->GetItemCount, ingred_moon_sugar_01 > 0 ) player->RemoveItem, "ingred_moon_sugar_01", 1 PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0 Set status to 0 return else MessageBox "Для этого нужен лунный сахар" Set status to 0 return endif elseif ( button == 1 ) Set status to 0 return endif endif endif End
-
1. Уменьшить скорость оказалось достаточно, спасибо. 2. Вообще ни на что не повлияло. Мб есть еще какие способы? Не то чтобы это прямо критично, просто было бы удобнее иметь возможность поднять книгу без активации, как и все другие. 3. Теперь темнота вообще не рассеивается, а звук кастуемого спелла проигрывается бесконечно. Begin _skooma_smoke float timer short state short doOnce if ( timer < 5 ) Set timer to ( timer + GetSecondsPassed ) endif if ( timer >= 5 ) disable setdelete 1 return endif if ( state == 0 ) ; play smoke sound, fade out, make player fall Playsound, "Blackoutin" FadeOut 3 Set state to 1 elseif ( state == 1 ) ; smoking in progress if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once if ( doOnce == 0 ) Cast, "wh_skooma_smoke_effect", Player Set doOnce to 1 return endif endif if ( timer > 5 ) ; fade in, make player stand up FadeIn 1.5 Set state to 2 endif else ; get rid of this object if ( timer == 0 ) disable endif endif End
-
В таком виде не прокатило, но в целом бабка была права - с помощью переменных действительно можно выйти из положения. Благодарю за наводку. И пачка свежих проблем: 1. Тут хотелось бы подкрутить таймер, или что нужно подкрутить для того чтобы объект опускался вниз плавно, в течение ~10 секунд, а не проваливался резко и сразу. begin MoveStairs float timer short On if (MenuMode == 0) if ( GetJournalIndex PuzzleCanal_Treasury == 90 ) if (On == 0) set timer to 0 set On to 1 PlaySound3Dvp "Door Stone Open" 1.0 1.0 endif endif if (On == 1) set timer to timer + GetSecondsPassed if (timer <=10) move z, -512 elseif (timer > 10) set On to 2 endif endif endif end 2. Немного доработала скрипт с книгами, и возник вопрос - как сделать чтобы можно было поднять книгу через инвентарь без активации. Сейчас при перетаскивании она каждый раз открывается, пробовала по-всякому, в т.ч. создавать новую локальную переменную помимо pickedup, но ничего не помогло. begin NOM_book_adv short doonce short PCSkipEquip short OnPCEquip short pickedup if ( pickedup == 1 ) set pickedup to 0 if ( doonce == 0 ) if ( GetJournalIndex NOM_recipes < 20 ) if ( player->GetItemCount "sc_paper plain" > 0 ) Journal NOM_recipes 20 PlaySound "skillraise" messagebox "Вы узнали новые рецепты из книги 'Пища Богов'." player->RemoveItem "sc_paper plain" 1 player->AddItem "NoM_list_book_02" 1 PlaySound "scroll" messagebox "Вы выписываете список использованных в этой книге ингредиентов на чистый лист бумаги. Он вам пригодится в процессе готовки." set doonce to 1 elseif ( player->GetItemCount "sc_paper plain" < 1 ) PlaySound "NoM_BadButton" messagebox "Вам нужен чистый лист бумаги, чтобы выписать список использованных в этой книге ингредиентов." endif endif endif endif if ( OnPCEquip == 1 ) set OnPCEquip to 0 if ( doonce == 0 ) if ( GetJournalIndex NOM_recipes < 20 ) if ( player->GetItemCount "sc_paper plain" > 0 ) Journal NOM_recipes 20 PlaySound "skillraise" messagebox "Вы узнали новые рецепты из книги 'Пища Богов'." player->RemoveItem "sc_paper plain" 1 player->AddItem "NoM_list_book_02" 1 PlaySound "scroll" messagebox "Вы выписываете список использованных в этой книге ингредиентов на чистый лист бумаги. Он вам пригодится в процессе готовки." set doonce to 1 elseif ( player->GetItemCount "sc_paper plain" < 1 ) PlaySound "NoM_BadButton" messagebox "Вам нужен чистый лист бумаги, чтобы выписать список использованных в этой книге ингредиентов." endif endif endif endif if ( PCSkipEquip == 1 ) set PCSkipEquip to 0 set OnPCEquip to 0 set pickedup to 1 return endif if ( OnActivate == 1 ) Activate set pickedup to 1 endif end 3. Немного изменила скрипт трубки скуума, и он перестал работать как надо, что в одном варианте, что в другом (нужны оба) - после некотороого количества последовательных использований зацикливается звук каста. Плюс сам спелл перестает срабатывать после первого раза, или вообще не дает эффекта. Что тут не так? Это для переносной трубки: Begin _skooma_pipe short button short pickup short status if ( pickup == 1 ) Set pickup to 0 activate return endif if ( OnActivate == 1 ) if ( MenuMode == 0 ) MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Взять" Set status to 1 else Set pickup to 1 return endif endif endif If ( status == 1 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == 0 ) if ( player->GetItemCount, ingred_moon_sugar_01 > 0 ) player->RemoveItem, "ingred_moon_sugar_01", 1 PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0 Set status to 0 return else MessageBox "Для этого нужен лунный сахар" Set status to 0 return endif elseif ( button == 1 ) Set status to 0 Set pickup to 1 endif endif End Это для стационарной: begin Skooma_pipe_act short button short status if ( OnActivate == 1 ) if ( MenuMode == 0 ) MessageBox "Что вы хотите сделать с трубкой скуума?" , "Курить", "Ничего" Set status to 1 else Set status to 0 return endif endif If ( status == 1 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == 0 ) if ( player->GetItemCount, ingred_moon_sugar_01 > 0 ) player->RemoveItem, "ingred_moon_sugar_01", 1 PlaceAtPC "wh_skooma_spell_activator" 1, 0, 0 Set status to 0 return else MessageBox "Для этого нужен лунный сахар" Set status to 0 return endif elseif ( button == 1 ) Set status to 0 return endif endif endif End Это скрипт срабатывания спелла (его практически не меняла): Begin _skooma_smoke float timer short state short doOnce if ( timer < 5 ) Set timer to ( timer + GetSecondsPassed ) endif if ( timer >= 5 ) disable setdelete 1 return endif if ( state == 0 ) ; play smoke sound, fade out, make player fall Playsound, "Blackoutin" FadeOut 5 Set state to 1 elseif ( state == 1 ) ; smoking in progress Set timer to ( timer + GetSecondsPassed ) if ( timer > 2 ) ; player is already lying and screen is black - cast skooma smoke effect once if ( doOnce == 0 ) Cast, "wh_skooma_smoke_effect", Player Set doOnce to 1 return endif endif if ( timer > 2 ) ; fade in, make player stand up FadeIn 1.5 Set timer to 0 Set state to 2 endif else ; get rid of this object if ( timer == 0 ) disable endif endif End
-
Вот и новый вопрос подъехал. Ситуация такая: есть моб (или нпс/предмет, тут неважно), появление/исчезновение которого завязано на значение индекса дневниковой записи (если = нужной цифре - enable, если < или > - disable). Сам принцип работает нормально, но особенность ситуации в том, что это мультиплеер со всеми вытекающими, т.е. когда в локацию с мобом заходит игрок с нужным индексом - моб энейблится, но если следом зайдет другой, у которого нужная стадия отсутствует - снова уходит в дисейбл. Собственно, в чем вопрос - как построить скрипт чтобы "зафиксировать" результат более поздней стадии (появление моба), чтобы он не перекрывался более ранней и не срабатывал триггер, запускающий дисейбл? Может со стадиями (в плане state, а не дневника) что-то похимичить или return где-то прописать.. Сейчас скрипт выглядит вот так: begin scriptname if ( GetJournalIndex TT_Assarnibibi < 10 ) disable elseif ( GetJournalIndex TT_Assarnibibi > 10 ) disable elseif (GetJournalIndex TT_Assarnibibi == 10 ) enable end
-
Куча лишних endif, вот так: elseif ( button == 0 ) StartScript NOM_frying_meat elseif ( button == 1 ) StartScript NOM_frying_fish elseif ( button == 2 ) StartScript NOM_frying_vegetables elseif ( button == 3 ) StartScript NOM_frying_omelette elseif ( button == 4 ) StartScript NOM_frying_rice endif stopScript NOM_frying set state to 0 endif end Сорри, с телефона не получается нормально процитировать. Все заработало, спустя 3 месяца ковыряний могу сказать - ЭТО ПОБЕДА! Низкий поклон за подсказки и подталкивания в нужном направлении, самостоятельно я хз сколько бы еще времени разгребала. В целом до меня доперло по какому принципу там все работает, и в основном все запарывали endif'ы где не надо и нераспознаваемые переменные. В общем, от души. Не прощаюсь, думаю скоро приду с новыми вопросами.)
-
1. Разобралась со всем кроме нескольких скриптов. Точнее определенных моментов в этих скриптах. Вот один из них, отвечающий за готовку на сковороде. Работает все кроме одного - если выбрать вариант "Рыба", исполнение прекращается. И так со всеми подобными скриптами, именно если выбран вариант, висящий на второй кнопке. Сам скрипт, отвечающий за жарку рыбы (NOM_frying_fish), рабочий, как и во всех подобных случаях. Но с кнопки не запускается. Так что дело тут явно не в самом скрипте, похоже что-то не то именно с кнопками. Но вот что именно? 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 return 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 endif set button to -1 set state to 20 endif ;--Handles menu selection if ( state == 20 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == button_max ) EnablePlayerControls set NoM_busy to 0 elseif ( button == 0 ) StartScript NOM_frying_meat endif elseif ( button == 1 ) StartScript NOM_frying_fish endif elseif ( button == 2 ) StartScript NOM_frying_vegetables endif elseif ( button == 3 ) StartScript NOM_frying_omelette endif elseif ( button == 4 ) StartScript NOM_frying_rice endif stopScript NOM_frying set state to 0 endif end Вот оригинал этого скрипта до моих правок, вдруг чем-то поможет. begin NOM_frying ;--Frying: Main menu. short button short button_max short known_recipes short state set known_recipes to ( NOM_cook_base + NOM_cook_adv + NoM_cook_flavours ) if ( NOM_cooking == 1 ) set NOM_cooking to 0 set state to 10 elseif ( state == 0 ) if ( known_recipes == 0 ) PlaySound "NoM_BadButton" messagebox "Вы не умеете готовить на сковороде." stopScript NOM_frying return elseif ( NOM_fireplace <= 0 ) PlaySound "NoM_BadButton" messagebox "Подойдите к огню." stopScript NOM_frying return else DisablePlayerControls set state to 10 set NoM_busy to 1 MenuTest 0 endif return ;--Menu elseif ( state == 10 ) if ( known_recipes == 3 ) messagebox "Что вы хотите приготовить?" "Мясо >" "Рыбу >" "Овощи >" "Омлет >" "Соленый рис >" "- Отмена -" set button_max to 5 elseif ( known_recipes == 2 ) if ( NoM_cook_flavours == 0 ) messagebox "Что вы хотите приготовить?" "Мясо >" "Рыбу >" "Овощи >" "Омлет >" "Соленый рис >" "- Отмена -" set button_max to 5 elseif ( NoM_cook_adv == 0 ) messagebox "Что вы хотите приготовить?" "Мясо >" "Овощи >" "Соленый рис >" "- Отмена -" set button_max to 3 elseif ( NoM_cook_base == 0 ) messagebox "Что вы хотите приготовить?" "Рыбу >" "Овощи >" "Омлет >" "- Отмена -" set button_max to 3 endif else if ( NoM_cook_base == 1 ) messagebox "Что вы хотите приготовить?" "Мясо >" "Овощи >" "Соленый рис >" "- Отмена -" set button_max to 3 elseif ( NOM_cook_adv == 1 ) messagebox "Что вы хотите приготовить?" "Рыбу >" "Омлет >" "- Отмена -" set button_max to 2 elseif ( NOM_cook_flavours == 1 ) messagebox "Что вы хотите приготовить?" "Овощи >" "- Отмена -" set button_max to 1 endif endif set button to -1 set state to 20 ;--Handles menu selection elseif ( state == 20 ) set button to GetButtonPressed if ( button == -1 ) return elseif ( button == button_max ) EnablePlayerControls set NoM_busy to 0 elseif ( button == 0 ) if ( NOM_cook_base == 1 ) StartScript NOM_frying_meat elseif ( NoM_cook_adv == 1 ) StartScript NOM_frying_fish else StartScript NOM_frying_vegetables endif elseif ( button == 1 ) if ( known_recipes == 3 ) StartScript NOM_frying_fish elseif ( known_recipes == 2 ) if ( NOM_cook_flavours == 0 ) StartScript NOM_frying_fish else StartScript NOM_frying_vegetables endif else if ( NOM_cook_adv == 1 ) StartScript NOM_frying_omelette else StartScript NOM_frying_vegetables endif endif elseif ( button == 2 ) if ( known_recipes == 3 ) StartScript NOM_frying_vegetables elseif ( known_recipes == 2 ) if ( NOM_cook_flavours == 0 ) StartScript NOM_frying_vegetables elseif ( NOM_cook_adv == 0 ) 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 stopScript NOM_frying set state to 0 endif end
-
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'ы на месте. Есть еще некоторое количество похожих скриптов, и все они не работают.
-
Подскажите пжлст что можно сделать со звуком wav-формата, проигрывающимся командой PlayLoopSound3DVP, в скрипте, висящем на нпс, чтобы не страдало качество? Поменять битрейт? Или может есть какие-то вариации этой команды? Проблемы начинаются именно при использовании на нпс, с активаторами все норм, но, увы, на активатор вешать не вариант - звук должен останавливаться вместе с исчезновением нпс, но это не работает. Вот фрагмент скрипта: if ( GetSoundPlaying "Crowd01" == 0 ) PlayLoopSound3DVP "Crowd01", 1.0, 1.0 endif
-
Исправила, но погоды это не сделало - все равно не идет дальше выбора блюда. Если я правильно понимаю, должно быть вот так: 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. Со скриптами девайсов разобралась, заработало. Теперь та же проблема со скриптами отдельных блюд. Например при выборе Что приготовить->Мясо->Панированную куриную ножку скрипт останавливается с потерей контроля над персонажем. Подскажите пжлст где что добавить/убрать. 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
-
А если необходимо чтобы были выполнены оба этих условия, или несколько сразу? Неработавшую переменную изученного рецепта я заменила на дневниковую запись, добавляющуюся после прочтения книги. Не лучшее решение, но другого выхода пока не вижу. Переменные можно было суммировать. А вот с дневниковыми записями возможно провернуть что-то подобное? Активация в скрипте самой сковородки, с ним вроде все в порядке. При выборе "Приготовить что-то" должен запускаться скрипт 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
-
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 end2. В этом скрипте все сделано по образцу скрипта 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
-
Да, все есть. Скрипт отваров заработал, большое спасибо. Но со всеми остальными похожая беда - скрипт использования предмета запускается, но дальше 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 Поясните, если не трудно, что именно не так в обоих случаях. Иначе придется скидывать сюда еще несколько подобных скриптов с той же проблемой.
-
Она там есть. Дополнительно short NOM_cook_tisane я дописала т.к. с самого начала были сомнения в том что эта переменная вообще распознается скриптом. Ну с переменной понятно, в принципе ее можно вообще не юзать и заменить на другое условие - в последней версии, что я скинула, так и сделано. Там проблема теперь в другом - то ли код изначально кривой, то ли руки у меня, что более вероятно.
-
И как тогда ее переделать в глобальную? Выяснилось что скрипт NOM_tisane не запускался потому что не распознавалась переменная NOM_cook_tisane. Пока поменяла условие для запуска скрипта на наличие в инвентаре списка ингредиентов (NOM_list_tisane_02). Скрипт стал запускаться. НО - работает все только до момента выбора из списка отвара, который будем готовить. После этого тупо ничего не происходит, но срабатывает DisablePlayerControls (блок Base State) и на этом все заканчивается. Вот тут я вобще не понимаю почему все так. Что-то не то с кнопками и/или стадиями? 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
-
Что за тег code и где его юзать? Табуляции в смысле отступы выровнять? В оригинальном скрипте было именно так, и он работал, до некоторых пор. Вот в этом блоке указано что от того изучен ли рецепт отвара (NOM_cook_tisane) зависит запустится ли скрипт заварника (NOM_tisane), и именно этот месседжбокс все время вылезает. Несмотря на то, что рецепт изучен. Даже после того как прописываю в консоли set NOM_cook_tisane to 2. А когда прописываю startscript nom_tisane - снова сообщение про "вы не умеете". Т.е. все, по всей видимости, упирается именно в эту переменную. Только вот непонятно что мешает исполнению скрипта если NOM_cook_tisane уже = 2.