

Boblen
Почетные Лорды-
Постов
1010 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Календарь
Весь контент Boblen
-
Видел на барахолке, но на 2СD - брать не стал... также видел на ДВД, но в свете того, что у остальных на сидюках, решил, что это, возможно, лажа., просто записали на ДВД содержимое 2 дисков...
-
И еще один скрипт для вашего дома. Вам ведь всегда хотелось иметь в доме бочки с выпивкой, а то она такая тяжелая. Нет ничего проще - создаем активатор, мождель уже есть в игре, и вешаем на него такой скрипт (я приведу скрипт для мацта, для остальных напитков вам придется заменить только ID напитков и их названия в messagebox - ничего сложного). Попробовать в работе можно, подключив плаг из архива и набрав в консоли coc, drink_house Скрипт: begin BES_mazt_script_adv short MessageOn short buttons short capacity;вместимость бочки short tempcapacity short tempcap short active ; active=0 - скрипт не работает ; active=1 - задаем вопросы ; active=10 - секция 10 - заполнение кега ; active=20 - секция 20 - выбираем сколько взять ; active=30 - секция 30 - не используется ; active=40 - секция 40 - взять нужное кол-во ; active=50 - секция 50 - пьем из бочки if ( OnActivate == 1 ) set active to 1 endif if ( active == 0 ) return endif if ( active == 1 ); самое начало скрипта if ( capacity == 0 ); в бочке ничего нет if ( MessageOn == 0 ); спросим и пойдем дальше MessageBox, "В бочке нет мацта", "Заполнить кег", "Ненадо" set MessageOn to 1 elseif ( MessageOn == 1 ); тут будем ждать, пока игрок выберет set buttons to GetButtonPressed if ( buttons == -1 ) return elseif ( buttons == 0 );нажал "Заполнить" set active to 10; идем в секцию 10 set MessageOn to 0 elseif ( buttons == 1 ); нажал "Ненадо" - все сбросим set MessageOn to 0 set active to 0 endif endif elseif ( capacity > 0 ); в бочке что-то есть if ( MessageOn == 0 ); сообщим сколько и спросим побольше MessageBox, "В бочке %g порций мацта", capacity, "Заполнить кег", "Заполнить тару", "Выпить", "Отмена" set MessageOn to 1 elseif ( MessageOn == 1 ); тут будем ждать, пока игрок выберет set buttons to GetButtonPressed if ( buttons == -1 ) return elseif ( buttons == 0 ); Выбрал "Заполнить" set active to 10; Идем в секцию 10 set MessageOn to 0 elseif ( buttons == 1 ); Выбрал разлить в тару set active to 20; идем в секцию 20 set tempcapacity to 1 set MessageOn to 0 elseif ( buttons == 2 ); выбрал выпить set active to 50; идем в секцию 50 set MessageOn to 0 elseif ( buttons == 3 ); выбрал "Отмена" set active to 0; сбросим все set MessageOn to 0 endif endif endif endif ;Секция 10 - заполнение бочки ;Заполняем методом половинного деления ;После выдаем сообщение, сколько порций в бочке if ( active == 10 ) if ( player -> GetItemCount, "Potion_Local_Brew_01" >= 128 ) set capacity to ( capacity + 128 ) player -> RemoveItem, "Potion_Local_Brew_01", 128 elseif ( player -> GetItemCount, "Potion_Local_Brew_01" >= 32 ) set capacity to ( capacity + 32 ) player -> RemoveItem, "Potion_Local_Brew_01", 32 elseif ( player -> GetItemCount, "Potion_Local_Brew_01" >= 8 ) set capacity to ( capacity + 8 ) player -> RemoveItem, "Potion_Local_Brew_01", 8 elseif ( player -> GetItemCount, "Potion_Local_Brew_01" >= 1 ) set capacity to ( capacity + 1 ) player -> RemoveItem, "Potion_Local_Brew_01", 1 elseif ( player -> GetItemCount, "Potion_Local_Brew_01" == 0 ) PlaySound, "potion success" MessageBox, "Сейчас в бочке %g порций мацта", capacity set active to 0 return endif endif ;Секция 20 - выбрать, сколько взять if ( active == 20 ) if ( MessageOn == 0 ); зададим вопрос MessageBox, "Сейчас в бочке %g порций мацта. Вы берете %g порций", capacity, tempcapacity, "-100", "-10", "-1", "OK", "+1", "+10", "+100", "Все", "Ничего" set MessageOn to 1 elseif ( MessageOn == 1 ) set buttons to GetButtonPressed if ( buttons == -1 ); ждем ответа return elseif ( buttons == 0 ); выбрали -100 set tempcapacity to ( tempcapacity - 100 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0; спросим еще elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 1 ); выбрали -10 set tempcapacity to ( tempcapacity - 10 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0 elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 2 ); выбрали -1 set tempcapacity to ( tempcapacity - 1 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0 elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 3 ); выбрали ОК - идем в секцию 40 set active to 40 set MessageOn to 0 set capacity to ( capacity - tempcapacity ); считаем остаток set tempcap to tempcapacity; запоминаем сколько взяли elseif ( buttons == 4 ); выбрали +1 set tempcapacity to ( tempcapacity + 1 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0 elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 5 ); выбрали +10 set tempcapacity to ( tempcapacity + 10 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0 elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 6 ); выбрали +100 set tempcapacity to ( tempcapacity + 100 ) if ( tempcapacity < 0 ) set tempcapacity to 0 set MessageOn to 0 elseif ( tempcapacity > capacity ) set tempcapacity to capacity set MessageOn to 0 endif set MessageOn to 0 elseif ( buttons == 7 ); выбрали все set tempcapacity to capacity; идем брать все set tempcap to tempcapacity set capacity to 0 set active to 40 set MessageOn to 0 elseif ( buttons == 8 ); выбрали отмену - сбросим set tempcapacity to 1 set MessageOn to 0 set active to 0 endif endif endif ;Секция 40 - взять все ;Забираем также, как и заполняем бочку ;Методом половинного деления ;По окончании выдаем сообщение и останавливаемся if ( active == 40 ) if ( tempcapacity >= 128 ) set tempcapacity to ( tempcapacity - 128 ) player -> AddItem, "Potion_Local_Brew_01", 128 elseif ( tempcapacity >= 32 ) set tempcapacity to ( tempcapacity - 32 ) player -> AddItem, "Potion_Local_Brew_01", 32 elseif ( tempcapacity >= 8 ) set tempcapacity to ( tempcapacity - 8 ) player -> AddItem, "Potion_Local_Brew_01", 8 elseif ( tempcapacity >= 1 ) set tempcapacity to ( tempcapacity - 1 ) player -> AddItem, "Potion_Local_Brew_01", 1 elseif ( tempcapacity == 0 ) PlaySound, "potion success" MessageBox, "Вы взяли %g порций мацта. В бочке осталось %g порций", tempcap, capacity set active to 0 endif endif ;Секция 50 - выпить if ( active == 50 ) if ( capacity > 0 ); выпивки достаточно set capacity to ( capacity - 1 );возьмем порцию player -> AddItem, "Potion_Local_Brew_01", 1; дадим игроку player -> Equip, "Potion_Local_Brew_01"; заставим его выпить MessageBox, "Вы выпили порцию мацта. В бочке осталось %g порций.", capacity; Скажем остаток set active to 0; остановимся else set active to 1; А если недостаточно - предложим заполнить endif endif end
-
Второй скрипт я бы переписал так: if ( GetDistance Player < 512 ) if ( player->GetWeaponDrawn == 1 ); игрок обнажает оружие if ( player->HasItemEquipped "glass longsword_lord" == 1 ) set saberout to 1;нужное оружие - Меч Владыки else if ( player->GetWeaponType == -1 );видимо, это рукопашный бой set saberout to 0 set weaponout to 1 else set saberout to 0 set weaponout to 2;любое другое оружие endif endif else set saberout to 0 endif endif А в диалогах фильтровал бы 2 и 3 сообщение и по saberout = 0. Кстати там же у тебя идет проверка на weaponout= -1 а скрипт устанавливает ее в 1 или 2. Можно попробовать их местами поменять, saberout вниз, но не факт, что тогда эта нужная запись глючить не будет.
-
Ну а если такая беда случилась - юзайте GetDataBack для своей версии файловой системы. Я тоже как-то перебивал разделы старым партишном, после 5 часов был выполнен 1% и я все вырубил. В результате раздел на 40 Гиг с играми, софтом и прочим просто пропал, показывался как неразмеченная область. Благо у меня оставался еще один. загрузочный раздел нетронутый на 20 Гиг - установил туда вышеозначенную прогу и восстановил все, тлько несколько картинок запортились, а так даже Мафия играла без проблем.
-
Все, я понял в чем фикус-пикус, смотри: if ( GetJournalIndex ANB_DaedraDet >= 120 ) if ( GetDisabled == 1 ) Enable endif Return endif Проверяем запись и если она >=120 идет команда return!!! А 170 - это тоже, знаешь ли, больше 120. Вот дальше этой команды скрипт и не отрабатывает. Поставь не >=, а просто == - все должно заработать. И удали следующий за этим блок: if ( GetDisabled == 0 ) Disable endif Иначе он постоянно будет инеблится/дисеблится... ну и те изменения, что и раньше писал, т.е. после вызова ForceGreeting нужно переменую сбрасывать, иначе он постоянно говорить будет.
-
Даже не знаю чем помочь... мне кажется, что они должны работать, не вижу сбоев в логике... Хотя в 1 скрипте: if ( GetDisabled == 0 ) Disable endif Зачем дисеблим дяденьку при JournalIndex ANB_DaedraDet от 120 до 170 и потом не востанавливаем? А может ли задисабленный дяденька гритинги давать? И последний блок я бы изменил так: if ( deathbed == 1 ) ForceGreeting set deathbed to -1 endif Чтобы он ForceGreeting бесконечно не повторял.
-
Тогда приведи нужные вопросы и предметы, что и в какой комбинации должно появляться...
-
Вопросы в какой форме? Диалога или текст.сообщений (как в театре Морнхолда)?
-
А теперь я покажу вам, как можно создать мусорный ящик для всяких ненужных уже вещей. Ведь к середине игры в вашем поместье (или где вы там живете) скапливается куча вещей, которые и продавать лень, и пространство они замусоривают, замедляя игру. Вот и выход - ложим их в этот ящик и они все уходят в небытие... Для этого нам понадобится пустой контейнер, теперь уже с ненулевой загрузкой, ставьте ее побольше - нам туда много чего придется сложить, и какой-нибудь активатор. В аттаче вы найдете архив с примерами скриптов, а также плаг для теста (это тот же плагин, что и в предыдущем случае, лишь дополненный мусоркой, она в другом конце комнаты). 1. Скрипт begin trash_activator short active short message_state short buton short trash_timer ; Trash_reset - глоб.переменная, указывающая на начало обнуления контейнера if ( OnActivate == 1 ); Активировали set active to 1 endif if ( active == 0 ); если нет - неработаем return endif if ( active == 1 ); Фаза 1 if ( message_state == 0 ); Задаем вопрос MessageBox, "Очистить мусорный контейнер?", "Да", "Нет" set message_state to 1 elseif ( message_state == 1 );вопрос задан, ждем ответ set buton to GetButtonPressed if ( buton == -1 ) return elseif ( buton == 0 ); ответили "Да" - идем в фазу 2 set message_state to 0 set active to 2 set trash_timer to 0 elseif ( buton == 1 ); ответили "нет" - возвращаемся назад set message_state to 0 set active to 0 set trash_timer to 0 endif endif endif if ( active == 2 ); Фаза 2 set Trash_reset to 1;начали удаление контейнера set active to 3 elseif ( active == 3 ); фаза 3 set trash_timer to ( trash_timer + 1 ); даем ему время на удаление - 6 фреймов if ( trash_timer < 6 ) return else set active to 4 endif elseif ( active == 4 ); фаза 4 ;ставим новый пустой контейнер на прежнее место и обнуляем переменные PlaceItemCell, boblen_trashcan, House_mage, 4980.496, 3081.028, 16036.777, 10800 set trash_timer to 0 set active to 0 endif end Он вешается на активатор и служит для задания вопроса игроку, а также включает скрипт на ящике для его удаления, а после ставит новую копию ящика на старое место. 2. Скрипт begin trash_reset_scr short deltimer ;Trash_reset - глоб.переменная, указывающая на начало обнуления контейнера if ( Trash_reset == 0 ); собираем вещички if ( deltimer != 0 ); обнулим тут таймер set deltimer to 0 endif return endif if ( Trash_reset == 1 ); начинаем очистку!!! if ( deltimer == 0 ); 1 фрейм - дисаблим сундук Disable endif if ( deltimer < 4 ); ждем 4 фрейма set deltimer to ( deltimer + 1 ) endif if ( deltimer == 4 ); 4 фрейм - обнуляем глоб.перем.для послед.использ. set Trash_reset to 0 set deltimer to ( deltimer + 1 ) endif if ( deltimer == 5 ); 5 фрейм - удаляем себя полностью SetDelete, 1 endif endif end Он вешается на мусорный контейнер и служит для его удаления. Вот и все, надеюсь он поможет вам создать дом Вашей (и нашей) мечты. И не забывайте принимать участие в конкурсе.
-
Итак, идея такова. В алхимической лаборатории будут стоять ящики под каждый ингредиент, будет активатор, нажав на который все ингредиенты из инвентаря игрока рассортируются по ящикам, есть список ингредиентов, чтобы в любой момент можно было глянуть, что у нас есть и в каких количествах. Тестовый пример и все скрипты в отдельных папках вы найдете в приаттаченом архиве. Чтобы посмотреть, как оно работает, подключите плаг и в консоли введите coc, House_mage (это копия Дома мага), там будут 4 ящика для зелий, активатор (сортировщик), свиток и ящик с ингред. для теста... А теперь, как это все устроено. ВНИМАНИЕ! ВСЕ СКРИПТЫ ДЛЯ ПОЛНОГО ВАРИАНТА, СО СВИТКОМ. ЕСЛИ ВЫ БУДЕТЕ ДЕЛАТЬ БЕЗ СВИТКА, ТО ВАМ НЕ ПОНАДОБЯТСЯ 2 ПОСЛЕДНИХ СКРИПТА, А ТАКЖЕ СЛЕДУЮЩИЕ СТРОКИ В ОСНОВНОМ: 1. Нужно создать контейнеры для каждого ингредиента (вместа с Трибуналом и БМ их 125, н есть и уникальные, которые сортировать не надо) со вместимостью (Emcubrance) 0. Теперь мы сможем добавить туда травы через скрипт, а вот сам игрок положить туда ничего не сможет (и не нужно это, сортировщик все равно работает быстрее). Также в каждом сундуке должен лежать любой предмет и он не должен покидать контенера, иначе скрипты могут неработать... предупредите об этом игрока. 2. Скрипты: begin boblen_sorter_start short state short button short active ;Этот скрипт висит на активаторе и запускает ;первый сортировочный скрипт if ( OnActivate == 1 ); активировали скрипт set active to 1 endif if ( active == 0 ); пока неактивен - неработаем return elseif ( active == 1 ) if ( state == 0 ) MessageBox, "Начать сортировку?", "Да", "Нет"; задали вопрос set state to 1; больше не задаем endif endif if ( state == 1 ) set button to GetButtonPressed;ловим реакцию игрока if ( button == -1 ); пока ничего не нажато - неработаем return elseif ( button == 0 ); Нажали "да" StartScript, "boblen_sorter_main1"; Запуск 1го сортиров.скрипта set active to 0 set state to 0 return elseif ( button == 1 ); нажали "нет" - возврат на исходную set active to 0 set state to 0 return endif endif end Этот скрипт висит на активаторе и запускает первый сортировочный глобальный скрипт (т.к. ингредиентов моного, то и сортировочных скриптов лучше сделать несколько, они будут стартовать друг за другом. Далее осн.скрипт: begin boblen_sorter_main1 ; Глобальный скрипт short state;переменная состояния short text_message;для теста if ( state == 4 ); state = число игред.-1 MessageBox, "Сортировка окончена" ;Следующая строка включает следующий по порядку сорт.скрипт ; В последнем скрипте ее быть не должно ;StartScript "boblen_sorter_main2" StopScript, "boblen_sorter_main1" set state to 0 set text_message to 0 return endif if ( state == 0 ); первый ингед. if ( text_message == 0 ); эти строки для тестовых сообщений-закомментируйте их, если хотите MessageBox, "Сортирую соленый рис" set text_message to ( text_message + 1 ) endif ;Это главная сорировочная часть, она сделана методом половинного деления ;Так скрипт быстрее работает, нежели сортировать по одному предмету ;Это можно сделать и через While, но, думаю, так лучше, т.к. ;практически не повлияет на скорость. if ( Player -> GetItemCount, "ingred_saltrice_01" >= 512 ) Player -> RemoveItem, "ingred_saltrice_01", 512 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 512 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 256 ) Player -> RemoveItem, "ingred_saltrice_01", 256 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 256 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 128 ) Player -> RemoveItem, "ingred_saltrice_01", 128 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 128 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 64 ) Player -> RemoveItem, "ingred_saltrice_01", 64 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 64 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 32 ) Player -> RemoveItem, "ingred_saltrice_01", 32 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 32 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 16 ) Player -> RemoveItem, "ingred_saltrice_01", 16 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 16 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 8 ) Player -> RemoveItem, "ingred_saltrice_01", 8 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 8 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 4 ) Player -> RemoveItem, "ingred_saltrice_01", 4 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 4 elseif ( Player -> GetItemCount, "ingred_saltrice_01" >= 2 ) Player -> RemoveItem, "ingred_saltrice_01", 2 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 2 elseif ( Player -> GetItemCount, "ingred_saltrice_01" > 0 ) Player -> RemoveItem, "ingred_saltrice_01", 1 B_contain_saltrice -> AddItem, "ingred_saltrice_01", 1 elseif ( Player -> GetItemCount, "ingred_saltrice_01" == 0 ) ;следующая строка считает кол-во ингред.в контейнере, чтобы отразить в свитке ; saltrice_count - глоб.переменная, содержащая кол-во определ.ингред ; поменяйте ее на нужную StopScript, "ingred_counter_main1" ;уберите комент и продублируйте след.строки на нужное кол-во списочных скр. ;StopScript, "ingred_counter_main2" set saltrice_count to ( B_contain_saltrice -> GetItemCount, "ingred_saltrice_01" ) set state to 1 endif endif if ( state == 1 ) if ( text_message == 1 ) MessageBox, "Сортирую мясо крысы" set text_message to ( text_message + 1 ) endif if ( Player -> GetItemCount, "ingred_rat_meat_01" >= 512 ) Player -> RemoveItem, "ingred_rat_meat_01", 512 B_contain_rat -> AddItem, "ingred_rat_meat_01", 512 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 256 ) Player -> RemoveItem, "ingred_rat_meat_01", 256 B_contain_rat -> AddItem, "ingred_rat_meat_01", 256 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 128 ) Player -> RemoveItem, "ingred_rat_meat_01", 128 B_contain_rat -> AddItem, "ingred_rat_meat_01", 128 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 64 ) Player -> RemoveItem, "ingred_rat_meat_01", 64 B_contain_rat -> AddItem, "ingred_rat_meat_01", 64 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 32 ) Player -> RemoveItem, "ingred_rat_meat_01", 32 B_contain_rat -> AddItem, "ingred_rat_meat_01", 32 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 16 ) Player -> RemoveItem, "ingred_rat_meat_01", 16 B_contain_rat -> AddItem, "ingred_rat_meat_01", 16 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 8 ) Player -> RemoveItem, "ingred_rat_meat_01", 8 B_contain_rat -> AddItem, "ingred_rat_meat_01", 8 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 4 ) Player -> RemoveItem, "ingred_rat_meat_01", 4 B_contain_rat -> AddItem, "ingred_rat_meat_01", 4 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" >= 2 ) Player -> RemoveItem, "ingred_rat_meat_01", 2 B_contain_rat -> AddItem, "ingred_rat_meat_01", 2 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" > 0 ) Player -> RemoveItem, "ingred_rat_meat_01", 1 B_contain_rat -> AddItem, "ingred_rat_meat_01", 1 elseif ( Player -> GetItemCount, "ingred_rat_meat_01" == 0 ) StopScript, "ingred_counter_main1" ;уберите комент и продублируйте след.строки на нужное кол-во списочных скр. ;StopScript, "ingred_counter_main2" set ratmeat_count to ( B_contain_rat -> GetItemCount, "ingred_rat_meat_01" ) set state to 2 endif endif if ( state == 2 ) if ( text_message == 2 ) MessageBox, "Сортирую корень трамы" set text_message to ( text_message + 1 ) endif if ( Player -> GetItemCount, "ingred_trama_root_01" >= 512 ) Player -> RemoveItem, "ingred_trama_root_01", 512 B_contain_trama -> AddItem, "ingred_trama_root_01", 512 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 256 ) Player -> RemoveItem, "ingred_trama_root_01", 256 B_contain_trama -> AddItem, "ingred_trama_root_01", 256 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 128 ) Player -> RemoveItem, "ingred_trama_root_01", 128 B_contain_trama -> AddItem, "ingred_trama_root_01", 128 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 64 ) Player -> RemoveItem, "ingred_trama_root_01", 64 B_contain_trama -> AddItem, "ingred_trama_root_01", 64 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 32 ) Player -> RemoveItem, "ingred_trama_root_01", 32 B_contain_trama -> AddItem, "ingred_trama_root_01", 32 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 16 ) Player -> RemoveItem, "ingred_trama_root_01", 16 B_contain_trama -> AddItem, "ingred_trama_root_01", 16 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 8 ) Player -> RemoveItem, "ingred_trama_root_01", 8 B_contain_trama -> AddItem, "ingred_trama_root_01", 8 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 4 ) Player -> RemoveItem, "ingred_trama_root_01", 4 B_contain_trama -> AddItem, "ingred_trama_root_01", 4 elseif ( Player -> GetItemCount, "ingred_trama_root_01" >= 2 ) Player -> RemoveItem, "ingred_trama_root_01", 2 B_contain_trama -> AddItem, "ingred_trama_root_01", 2 elseif ( Player -> GetItemCount, "ingred_trama_root_01" > 0 ) Player -> RemoveItem, "ingred_trama_root_01", 1 B_contain_trama -> AddItem, "ingred_trama_root_01", 1 elseif ( Player -> GetItemCount, "ingred_trama_root_01" == 0 ) StopScript, "ingred_counter_main1" ;уберите комент и продублируйте след.строки на нужное кол-во списочных скр. ;StopScript, "ingred_counter_main2" set trama_count to ( B_contain_trama -> GetItemCount, "ingred_trama_root_01" ) set state to 3 endif endif if ( state == 3 ) if ( text_message == 3 ) MessageBox, "Сортирую шкуру алита" set text_message to ( text_message + 1 ) endif if ( Player -> GetItemCount, "ingred_alit_hide_01" >= 512 ) Player -> RemoveItem, "ingred_alit_hide_01", 512 B_contain_alit -> AddItem, "ingred_alit_hide_01", 512 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 256 ) Player -> RemoveItem, "ingred_alit_hide_01", 256 B_contain_alit -> AddItem, "ingred_alit_hide_01", 256 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 128 ) Player -> RemoveItem, "ingred_alit_hide_01", 128 B_contain_alit -> AddItem, "ingred_alit_hide_01", 128 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 64 ) Player -> RemoveItem, "ingred_alit_hide_01", 64 B_contain_alit -> AddItem, "ingred_alit_hide_01", 64 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 32 ) Player -> RemoveItem, "ingred_alit_hide_01", 32 B_contain_alit -> AddItem, "ingred_alit_hide_01", 32 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 16 ) Player -> RemoveItem, "ingred_alit_hide_01", 16 B_contain_alit -> AddItem, "ingred_alit_hide_01", 16 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 8 ) Player -> RemoveItem, "ingred_alit_hide_01", 8 B_contain_alit -> AddItem, "ingred_alit_hide_01", 8 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 4 ) Player -> RemoveItem, "ingred_alit_hide_01", 4 B_contain_alit -> AddItem, "ingred_alit_hide_01", 4 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" >= 2 ) Player -> RemoveItem, "ingred_alit_hide_01", 2 B_contain_alit -> AddItem, "ingred_alit_hide_01", 2 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" > 0 ) Player -> RemoveItem, "ingred_alit_hide_01", 1 B_contain_alit -> AddItem, "ingred_alit_hide_01", 1 elseif ( Player -> GetItemCount, "ingred_alit_hide_01" == 0 ) StopScript, "ingred_counter_main1" ;уберите комент и продублируйте след.строки на нужное кол-во списочных скр. ;StopScript, "ingred_counter_main2" set alithide_count to ( B_contain_alit -> GetItemCount, "ingred_alit_hide_01" ) set state to 4 endif endif end В этом скрипте применен метод половинного деления, т.к. работает он быстрее, чем простое удаление по одной штучке, но и скрипт получается больше. Поэтому их у вас, скорее всего, будет несколько. А следующие строки Я ввел только сейчас, в скрипте в плаге их нет, но они должны помочь пресечь доступ к одной переменной из разных скриптов. 2. Самое неприятное. Нужно создать КУЧУ глобальных переменных. в которых будет храниться кол-во ингредиентов в каждом ящике. В принципе можно обойтись и без свитка, тогд вся след.часть вам не пригодится, но я подумал, что алхимику всегда удобно знать, что у него есть, а чего нету. Далее создаем свиток (или книгу, не важно) и пишем в ней то, что есть и у меня, только на столько ингредиентов, на сколько нужно. И снова скрипты: begin ingred_counter_start ; Этот скрипт должен быть НА ВСЕХ контейнерах с ингредиентами ; Он стартует глоб.скрипт для того, чтобы снова подсчитать ; ингредиенты в ящике short active_state if ( OnActivate == 1 ) set active_state to 1 Activate endif if ( active_state == 0 ) return elseif ( active_state == 1 ) if ( ScriptRunning, "ingred_counter_main1" == 0 ) MessageBox, "Запускаем ingred_counter_main1";отладочные сообщения StartScript, "ingred_counter_main1" set active_state to 0 else MessageBox, "ingred_counter_main1 уже запущен" set active_state to 0 endif endif end Этот скрипт должен быть на всех ящиках с ингредиентами, при доступе к ним игрока он запускает скрипт подсчета ингредиентов. А вот осн.скрипт, их также будет несколько и в тестовом плаге скрипт необновленный: begin ingred_counter_main1 ;Глобальный скрипт, пересчитывающий число ингредиентов ; в контейнерах после доступа к ним float timer ;В следующих строках запускайте все свои глоб.скрипты для списка ; возможно их будет 3 или 4 ;StartScript, "ingred_counter_main2" if ( GetPCCell, "House_mage" != 1 ); если ушли из дома - выкл.скрипт set timer to 0 StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" MessageBox, "Ingred_counter_main1 остановлен";закомментируйте строку после теста return endif if ( timer > 120 );после 2 минут работы останавливаем set timer to 0 StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" MessageBox, "Ingred_counter_main1 остановлен" return endif ;--------------------------------------------------- ;В скрипты "ingred_counter_main2" и последующие вставляйте ; только эту часть, не объявляйте переменную timer ; не вводите строки set timer to 0 и set timer to ( timer + GetSecondsPassed ) ; и продублируйте нужное число раз;StopScript, "ingred_counter_main2" ;---------------------------------------------------- if (( B_contain_saltrice -> GetItemCount, "ingred_saltrice_01" ) != saltrice_count ) set saltrice_count to ( B_contain_saltrice -> GetItemCount, "ingred_saltrice_01" ) StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" set timer to 0 MessageBox, "Ingred_counter_main1 остановлен" return endif if (( B_contain_rat -> GetItemCount, "ingred_rat_meat_01" ) != ratmeat_count ) set ratmeat_count to ( B_contain_rat -> GetItemCount, "ingred_rat_meat_01" ) StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" set timer to 0 MessageBox, "Ingred_counter_main1 остановлен" return endif if (( B_contain_trama -> GetItemCount, "ingred_trama_root_01" ) != trama_count ) set trama_count to ( B_contain_trama -> GetItemCount, "ingred_trama_root_01" ) StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" set timer to 0 MessageBox, "Ingred_counter_main1 остановлен" return endif if (( B_contain_alit -> GetItemCount, "ingred_alit_hide_01" ) != alithide_count ) set alithide_count to ( B_contain_alit -> GetItemCount, "ingred_alit_hide_01" ) StopScript, "ingred_counter_main1" ;StopScript, "ingred_counter_main2" set timer to 0 MessageBox, "Ingred_counter_main1 остановлен" return endif set timer to ( timer + GetSecondsPassed ) end Надеюсь в деле копирования нужных скриптов вы разберетесь сами, там все не так уж сложно... а для того, чтобы проще было писать осн.сортировочный скрипт - в архиве вам в помощь файлик main_template, как им пользоваться написано в нем самом. Удачного модостроительства
-
Лицензия ожидается? Неслышал, неслышал... но нахвачу сначала пиратку (на ДВД - так экономичнее ;)
-
Сейчас. ИМХО, мало домов в Морре делаются без алхимической лаборатории... А что главное для алхимика? Это аккуратно рассортированные предметы, чтобы каждый лежал отдельно в своем ящичке, откуда его можно легко взять в нужных количествах. Сегодня вечером тут появится пример подобного скрипта (скриптов, если честно) с тестовым плагом и подробными комментариями... следите за темой!
-
А я буду брать, наверное, в феврале. Вчера цены посмотрел - 20 штук уйдет точно на Атлон64 3000+, мать под него на 939 сокете (это надо будет повыбирать), память пока 1 гиг и видео (пока) радеон х7000 на PCI-E. ЖД менять неохота - и эти нормальные, если что, придется контроллер взять для IDE, буде их мало на плате разведут. И статьи из недавней Компьютерры по брендам: реклама на форуме запрещена, читай правилаoffline.computerra.ru/2005/602/224023/ реклама на форуме запрещена, читай правилаoffline.computerra.ru/2005/602/224035/ реклама на форуме запрещена, читай правилаoffline.computerra.ru/2005/602/224045/ реклама на форуме запрещена, читай правилаoffline.computerra.ru/2005/602/224048/
-
Неужели в вашем городе все обстоит ТАК плохо? У нас вот замечательная радиобарахолка есть, пусть и работает по выходным, но можно дисками затарится... купил за 100 р ДВД, переписал себе, поменял на другой за 40 р.
-
А старый вариант нормальный был? Когда на одном канале 2 винта, а на втором - два сидюка. Во многих прогах по записи говорится, что в таком режиме могут быть проблемы с записью с одного привода на второй... для этого, собственно, и была сделана перестановка (ну еще и ради охлаждения винтов, ибо они стояли один над другим).
-
Но он реально гоняется. Пример: Запускаем со 2 диска ГТА:Сан Андрес при неправильной загрузке (без определения в БИОС) - в итоге заикание, дерганье картинки. Запускаем тот же СА при определении винта в БИОС - все ОК. Однако же на заметку взял, после переставлю 2 Винт-писалку местями.
-
Тогда от меня вопрос: Такой конфиг: 1.PriMaster - Barracuda (80 Gb) 2.PriSlave - Toshiba (combo-drive) 3.SecMaster - Sony (DVD-RW) 4.SecSlave - Barracuda (80 Gb) На первом винте стоит система, второй исп.для хранения образов ДВД и прочего. При загрузке БИОС с ходу не видит второго винта, однако винда его определяет, но вместо DMA5, ставит DMA3:Multiword. Если сразу после включения нажать reset, то биос увидит винт и винда поставит ему DMA5. Почему такое происходит? Когда было другое подключение: 1.PriMaster - Barracuda (80 Gb) 2.PriSlave - Barracuda (80 Gb) 3.SecMaster - Sony (DVD-RW) 4.SecSlave - Toshiba (combo-drive) то все было ОК. /Я подозреваю, что выставил на 2 винте Cable Select, однако чтобы это проверить из-за системы охлаждения придется разбирать весь комп... и так не особо напрягает, но знать хотелось бы/ И вообще нормально ли такое подключение, может устройства по другому лучше повесить?.. /Знали бы вы, как я мучился с этим подключением - вот шлейфы на Примари-канале чуть повредил, так он теперь взглюкивает бывает, пока их непотеребиш... вот деньги получу - куплю новый шлейф../
-
Это выдержка из редми к плагину Unarmorred_Corrector (сейчас лежит на Саммите, скоро и у нас в базе).
-
Просьбы о переводе плагинов или "Переведите, пожалуйста!"
Boblen опубликовал тема в Адаптация и перевод
Если Вы найдете интересный плаг - отпишитесь здесь. Возможно он понравится не Вам одним. А может кто-то возьмется его перевести... Нумеро Уно. Компаньон-Дракон от MentalElf. Вы также можете связаться с ним и попросить эту модельку себе в плаг. Размер плага - 11,5 Мб из-за модели. Тема форума Ссылка на сайт с плагом Нумеро 2. Не хотите ли погонять в биллиард? Специально для Вас Lurlock создал этот биллиардный стол. Правда плаг идет как ресурс длямоддеров, т.к. комната не меблирована, но поиграть все-таки можно. Для тех, кто захочет использовать стол в своем плаге - ЧИТАЙТЕ ВНИМАТЕЛЬНО РЕДМИ. Ссылка на тему Прямая ссылка на плаг - 600 Кб -
Это цена с монитором? Ну 40 штук я не вытяну точно, а вот 20 - думаю как-нибудь с кредитом освою. Уж совсем мега-крутую брать не буду, но крепкий середнячок - вполне.
-
FG говорит, что в Москве вовсю торгуют... вот бы только требования узнать.