Daemon of Death Опубликовано 25 марта, 2008 Жалоба Поделиться Опубликовано 25 марта, 2008 Уважаемые скрипт-мейкеры! Я решил сделать плагин. Я со скриптами вроде дружу, но сложные - это, пока, не для меня. Вот такая задумка: чтоб в плагине был предмет (Например - рунный камень), при активации которого появлялось меню с предложением его "включить"(а если он включен, то "выключить" и предолжением его "использовать" (если он включен). При "использовании" появляется меню, в котором можно выбрать или перемещение в основные города, появление в инвентаре оружия/доспехов, которые автоматически одеваются на игрока, а при снятии исчезают, добавлениие различных харрактеристик игроку. За эту красоту игрок должен как-нибудь расплачиваться. Например, когда предмет "Включен" герои не может спать, отдыхать, у него исчезает каждый день маленько золота, или еще что-то в этом духе.Извеняюсь, если слишком путанно объяснил. Ссылка на комментарий Поделиться на другие сайты Поделиться
Владимир Опубликовано 25 марта, 2008 Жалоба Поделиться Опубликовано 25 марта, 2008 Ничего особо сложного в таком скрипте нету, но повозиться прийдется. Как сделать меню погляди например на любом алтаре, которые благословляют/исцеляют/снимают сглаз и порчу , примерно такое будет и у тебя. В зависимости от выбраного варианта выполняется то или иное действие, телепортироваться кудато - "coc ячейка", "coe координаты", добавить доспех - player->additem armor 1 , одеть - кажись player->equip armor, и тп.. Оплату услуг камушка, исчезание снятых доспехов, изменение характеристик игрока можно огранизовать одним глобальным скиптом. Неочень понял как у тебя сабж должен включаться и выключаться.В разделе файлы-учебники для морра http://www.fullrest.ru/files/help/morrowind.html лежит Morrowind Scripting for Dummies, большую часть ответов и решений можно найти там Ссылка на комментарий Поделиться на другие сайты Поделиться
Daemon of Death Опубликовано 26 марта, 2008 Автор Жалоба Поделиться Опубликовано 26 марта, 2008 (изменено) Это все понятно, и учебничек я читал, но у меня проблемы со монжеством вложенных тегов Messagebox. А "Включается" она так: есть ДВА предмета, с одинаковой моделью, но разными скриптами. Первая с простым - При активации предмета появляется окно с одной кнопкой "Включить", по нажатию на эту кнопку, включается сторонний скрипт, который первый предмет удаляет, а второй (С большим скриптом) дает игроку. На второй вещи (Той которая дает оружие и тп.) в скрипте, там где действия по нажатию на кнопку "Выключить" прописывается активация еще одного строрннего скрипта, который вторую вещ удаляет, а первую дает. Итого две вещи со скриптами, и еще два скрипта ни к чему не привязанные. Что-то типа такого.Я вообще его недели две пытался сделать (В смысле скрипт), но он почему-то не работал и вешал игушку Изменено 26 марта, 2008 пользователем Daemon of Death Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 есть ДВА предмета, с одинаковой моделью, но разными скриптами. Первая с простым - При активации предмета появляется окно с одной кнопкой "Включить", по нажатию на эту кнопку, включается сторонний скрипт, который первый предмет удаляет, а второй (С большим скриптом) дает игроку. На второй вещи (Той которая дает оружие и тп.) в скрипте, там где действия по нажатию на кнопку "Выключить" прописывается активация еще одного строрннего скрипта, который вторую вещ удаляет, а первую дает. Итого две вещи со скриптами, и еще два скрипта ни к чему не привязанные. Что-то типа такого. Хмм... Что-то вроде такого?Это для первого: Begin Script1 ;только рунный камень должен быть предметом, который можно надеть. Иначе как ты планируешь, чтобы произошло "включение"? short statusshort buttonshort OnPCEquip if ( MenuMode == 1 ) returnendif if ( OnPCEquip == 1 ) Set Status to 10 Set OnPCEquip to 0Endif If ( status == 10 ) ;показать меню MessageBox "Вы хотите включить предмет?", "Включить", "Отмена" Set Status to 20Elseif ( status == 20 ) ;ждать ответа Set button to GetButtonPressed If ( button == -1 ) ;пока нет ответа Return Elseif ( button == 0 ) Player -> removeitem "первый предмет" 1 Player -> additem "второй предмет" 1 Elseif ( button == 1 ) ; отмена включения Set status to 0 EndifEndif End Для второго:Begin Script2 ;только игроку придется его заново "одевать" short statusshort buttonshort OnPCEquip if ( MenuMode == 1 ) returnendif if ( OnPCEquip == 1 ) Set Status to 10 Set OnPCEquip to 0Endif If ( status == 10 ) ;показать меню MessageBox "Вы хотите включить предмет?", "Включить", "Выключить" Set Status to 20Elseif ( status == 20 ) ;ждать ответа Set button to GetButtonPressed If ( button == -1 ) ;пока нет ответа Return Elseif ( button == 0 ) Player -> additem "оружие" 1 Elseif ( button == 1 ) ; отмена включения Player -> removeitem "второй предмет" 1 Player -> additem "первый предмет" 1 Set status to 0 EndifEndif End Ссылка на комментарий Поделиться на другие сайты Поделиться
Эндер Виггин Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 Хм... А зачем ДВА предмета? Там вообще одним предметом и одним скриптом обойтись можна... Тем более, что в скрипте предложенном LofZ есть ошибка - она из скрипта привязанного к предмету удаляет сам предмет. Морровинд вывалится от этого. Я подумаю над этим скриптом и выложу когда будет готово. Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 Да, в самом деле, у меня ошибка. Тогда надо как-то придумывать, чтобы скрипт, который висит на предмете, не удалял предмет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Эндер Виггин Опубликовано 26 марта, 2008 Жалоба Поделиться Опубликовано 26 марта, 2008 (изменено) Сделал я этот скрипт. Создаешь МискИтем и вешаешь на него вот такой скрипт:Begin DoD_Artefact short button; indicates button index. short question; 2 - teleport question short state;0 - Nothing, 1 - asking short acction;0 - activate/deactivate, 1 - teleport, 2 - equipment. short activated short OnPCEquip if ( OnPCEquip == 1 ) set OnPCEquip to 0 set state to 1 set question to 1 if ( activated == 0 ) MessageBox "Вы хотите активировать артефакт?" "Да" "Нет" else MessageBox "Что вы хотите сделать с артефактом?" "Выключить" "Телепортироваться" "Броня" "Ничего" endif endif if ( state == 0 ) return else set button to GetButtonPressed if ( button == -1 ) return endif set state to 0 endif if ( question == 2 ) set question to 0 if ( button == 0 ) Player->coc "Balmora" return elseif ( button == 1 ) Player->coc "Vivec" return elseif ( button == 2 ) Player->coc "Ald-ruhn" return else return endif endif set question to 0 if ( activated == 0 ) if ( button == 0 ) set activated to 1 Player->AddSpell "DoD_Artefact_Effect" return else return endif else if ( button == 0 ) set activated to 0 Player->RemoveSpell "DoD_Artefact_Effect" if ( Player->GetItemCount "DoD_Mega_Cuirass" > 0 ) Player->RemoveItem "DoD_Mega_Cuirass" 1 endif return elseif ( button == 1 ) set question to 2 set state to 1 MessageBox "Куда вы хотите телепортироваться?" "Балмора" "Вивек" "Альдрун" "Никуда" elseif ( button == 2 ) if ( Player->GetItemCount "DoD_Mega_Cuirass" > 0 ) Player->RemoveItem "DoD_Mega_Cuirass" 1 else Player->AddItem "DoD_Mega_Cuirass" 1 endif return else return endif endif EndПотом создай спелл типа Характеристика с ИД DoD_Artefact_Effect. Он будет даваться игроку при активированном артефакте. Добавь туда негативных эффектов (замороженная магия, усталость, обуза... еще что хошь...)Далее, создаешь кирасу с ИД DoD_Mega_Cuirass и вешаешь на нее вот этот скрипт:Begin Mega_Equipment_Cuirass short OnPCEquip short OnPCDrop short count short broken if ( broken == 0 ) if ( count > 10 ) set broken to 1 MessageBox "Кираса сломалась и не будет одеваться" "OK" endif endif if ( OnPCEquip == 0 ); предмет не надет if ( broken == 0 ) Player -> Equip, "DoD_Mega_Cuirass"; надеть кирасу! set count to count + 1 endif else set count to 0 endif EndЧто нужно доделать:Для добавления новых предметов брони, просто скопируй скрипт брони, только замени ее ИД на ИД нового предмета, а иакже в скрипте артефакта подобавляй AddItem и RemoveItem для нового предмета.Вместо coc для телепортации лучше используй PositionCell (ибо в Альдрун телепортит посреди Скара... неэстетично...), глянь в MSFD для деталей.Бронь снять нельзя. Только с помощью артефакта. Но если бронь полностью разрушена, то ее можна будет снять и выкинуть... и потом, после ремонта, одевать и снимать уже по желанию.. Тут, в принципе, можна выкрутится, но мне влом... может позже... Изменено 26 марта, 2008 пользователем Ender Wiggin Ссылка на комментарий Поделиться на другие сайты Поделиться
Daemon of Death Опубликовано 31 марта, 2008 Автор Жалоба Поделиться Опубликовано 31 марта, 2008 Пнятно. Только вот в чем прикол: Эта броня не должна ломаться. Ну а во всем остальном - Респект и уважуха! (Как говорил Павел Воля) Ссылка на комментарий Поделиться на другие сайты Поделиться
Naty Опубликовано 31 марта, 2008 Жалоба Поделиться Опубликовано 31 марта, 2008 Броня не должна ломаться Кажется, это даже скриптом не сделаешь. Можно в характеристике брони Health поставить какую-нибудь бешеную цифру типа 999999999999, сколько там девяток поместится, через столько ударов броня сломается. Если там девять миллионов с гаком, вряд ли это произойдет на нашем веку.))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Эндер Виггин Опубликовано 31 марта, 2008 Жалоба Поделиться Опубликовано 31 марта, 2008 Скриптом очень даже не сложно - если броня сломалась, то ее удалить и новую выдать Ссылка на комментарий Поделиться на другие сайты Поделиться
Boma Kuro Опубликовано 31 марта, 2008 Жалоба Поделиться Опубликовано 31 марта, 2008 А как скриптом отследить, что бронь сломалась?Можно, в принципе, просто таймером удалять\добавлять раз в минуту. Ссылка на комментарий Поделиться на другие сайты Поделиться
Daemon of Death Опубликовано 1 апреля, 2008 Автор Жалоба Поделиться Опубликовано 1 апреля, 2008 Я что-то левым ухом слышал, что есть какая-то функция, которая отправлает 1 если бронь сломалась, но не в оригинальном Морре, а в Бладмуне или в Трибунале Ссылка на комментарий Поделиться на другие сайты Поделиться
Эндер Виггин Опубликовано 5 апреля, 2008 Жалоба Поделиться Опубликовано 5 апреля, 2008 Нет такой функции. По крайней мере, я о ней не знаю. И МСФД тожа. Однако есть один хитрый ход, который в данном случае применим - если на вещь нацепить скрипт, который постоянно ее к игроку пришпиливает, то при поломке она постоянно будет слетать-одеваться (цикл слетела-оделась по разу в каждом кадре). Это довольно легко отловить - если в каждом кадре одежка спадает-одевается на протяжении 5-10 кадров - значит сломана. Ибо игрок низачто не сможет снимать/одевать в ручную с такой скоростью. Дело даже не в скорости нажатия на кнопку, а в способе обработки. Морр нажатие/отпускание на кнопку только раз в кадр отслеживает. Именно этот способ в моем скрипте и применен. Там только вместо сообщения, что предмет сломан надо написать удаление/добавления этого самого предмета. Или реально, как Дез предлагает - по таймеру. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти