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

Siegrun

Друзья сайта
  • Постов

    17 802
  • Зарегистрирован

  • Посещение

  • Победитель дней

    9

Весь контент Siegrun

  1. Решение проблем с Oblivion и модами к нему.   Несколько полезных тем: Я боюсь OBSE... Везде написано: OBMM, как это? С чем едят BOSS? кетчуп или так выкинуть? Как получить список установленных модов. Wrye Bash Руководство по FCOM   Желательно предоставить следующую информацию, чтобы окружающим было легче помочь вам: 1) Конфигурация компьютера. 2) Плагины, желательно в порядке их подключения (мод лист). 3) Описание ошибки*. Желательно, после чего и когда возникла данная ошибка. * Если графическая, то добавьте скрины (превью).
  2. облу бы подвижность masquerade bloodline  и лица оттуда же - цены бы ему не было. А РПГ обсуждаем в соответсвующей теме. А по Арксу будет на сайте тем когда будет время. Тож люблю ету игруху
  3. тема называется  - Экшены. про Сталкер на сайте есть)
  4. около 180 метров))
  5. мод не понравился но я его все равно доделаю - тока после раздела анимации))
  6. решила все таки разбить плагин и броня уже готова)))) в ближайшем обновлении три комплекта брони))
  7.   что то вроде тута))
  8. остров Шигорат длинный. с севера от левого края есть небольшой островок, тоже такой продолговатый, маленький. И там и есть вход в пещеру. хитрятина в том что он тоже находится с севера.  то есть вам стоит отлететь в море от него, повернуться лицом на юг и так пройтись вдоль маленького островка. ) удачи.
  9. урок 2. Что нам что нам делать с ящиком?? И что тока мы с ним делать не будем! Начинаем скрипт и считаем,скока же нам понадобиться переменных. Мы хотим чтобы ящик совершал последовательно всякие действия. В общем, пообщаемся. Сделаем так чтобы ящик создавал нам всякие преграды чтобы мы не могли какое то время достать его содержимое. скажем, пусть сначала отнекивается, потом создает условия, потом выкинет назойливого игрока куда нить, и в конце концов отдаст содержимое. в начале подумаем. у нас последовательные действия они изменяются и мы могем обойтись одной переменной. Вроде. Но на деле скорее всего понадобятся как минимум две. Стартуем Begin Yachik short DoOnce short Once If ( DoOnce == 0 ) if ( Once == 0 ) If ( OnActivate == 1 ) messagebox "Что надо-то? Хитрый какой" Set DoOnce to 1 Endif   Endif     Endif ; вот этот блок. Ящик не пускает нас внутрь. Он отговаривается. If ( DoOnce == 1 ) if ( Once == 0 ) If ( OnActivate == 1 ) messagebox "Отстань, говорю" Set DoOnce to 2 Endif   Endif     Endif ; паразит продолжает свои приколы. If ( DoOnce == 2 ) if ( Once == 0 ) If ( OnActivate == 1 ) messagebox "упрямый, да? Ну держи" Set DoOnce to 3 Endif   Endif     Endif ;  щаз что то будет ;а вот и вторая переменная вступит. И наши условия сузятся. If ( DoOnce == 3 ) if ( Once == 0 ) Player -> Position Cell, -254, 475, -376, 360, "Balmora, Counsil Club" set Once to 1 endif end ; Итак плеер наглый улетел в балмору. а вот теперь мы могем более не повторять ;ДВА условия а тока одно - от Once == 1 и до скока надо If ( Once == 1 ) if ( OnActivate == 1 ) Messagebox " А ты упрямый. Хорошо, принеси мне бутылку кирродильского бренди, и я отдам тебе все, что у меня есть" set Once to 2 Endif Endif If ( Once == 2 ) if ( OnActivate == 1 )  if ( Getitemcount, "как оно там называется" >= 1 ) player -> removeitem "как оно там называется"1 messagebox "Что встал? Жми еще раз" set Once to 3 endif  endif ; типа щаз отдаст, ага If ( Once == 3 ) If (OnActivate == 1 ) "yashik_ID" -> cast, "flame", Player messagebox, "Ничего личного, я пошутил!" set Once to 4 endif endif; вот гад )))) If ( Once == 4 ) If (OnActivate == 1 ) Player -> AddItem, Gold_100, 1000 Set Once to 5 endif endif ; типа откупился If ( Once == 5 ) If (OnActivate == 1 ) messagebox, "Чао, бамбино" Set Once to 6 endif endif If ( Once == 6 ) "yachik_ID" -> disable set once to 7 endif ; так нам ничего и не отдал End Итак, ящик совершал различные вещи. Мы использовали: телепортацию, кастование заклинания (ловушка), проверку наличия предмета, он откупался золотом, забирал наш бренди, показывал мессаджбоксы и прочее веселье. Вы видите, какие возможности нам открываются с нашими шаловливыми предметами.Изучая учебник, вы найдете еще много веселых функций для баловства а мы сделаем что нибуть полезное типа кольца телепортации в несколько местОВ))) Для этого мы используем кнопки, Объявив переменную Short Button и обязательную для объвления как переменная, функцию OnPCEquip а так же переменные для управления условиями begin ring_MTES short button short OnPCEquip short DoOnce if ( OnPCEquip == 1 )    set DoOnce to 1 )    set OnPCEquip to 0 endif if ( DoOnce == 1 )       messagebox, "Поехали", "Домой", "Балмора", "Никуда"     set DoOnce to 2       elseif ( DoOnce ==2 )      set button to GetButtonPressed         If ( Button == -1)              return        Elseif ( button == 0 )                player -> PositionCell, (позиции) "dom"        Elseif ( button == 1 )                player -> PositionCell, (позиции) "Balmora, (-3, -3)"              set DoOnce to 0        endif endif end Это кольцо отправит нас домой и в балмору, можно добавить столько кнопок сколько получится. конструкции elseif позволяют внутри одного блока выбрать что вы будете делать. Давайте сделаем еще одно кольцо. Оно будет вам давать постоянный или непостоянный эффект, в зависимости от вашего ранга. begin Maglow_ring short GetPCRank short OnPCEquip If ( GetPCRank "Mage_Guild" >= 5 ) if ( OnPCEquip == 1) Player -> AddSpell "водное дыхание, как там оно называется" set OnPCEquip to 0 endif endif endif end Это означает что когда вы наденете кольцо и вы выше пятого ранга у вас будет всегда работать водное дыхание.  Обычное заклинание просто добавится в список. Проклятие или болезнь кастуются на вас. Тот же скрипт будет выглядеть по другому, если мы не хотим все время водное дыхание тскать. ну и действительно нафик оно на суше. На сцену выходит ТАЙМЕР. Это переменная типа float begin Maglow_ring short GetPCRank short OnPCEquip Float timer short once If ( GetPCRank "Mage_Guild" >= 5 ) if ( OnPCEquip == 1) Player -> AddSpell "водное дыхание, как там оно называется" set once to 1 set OnPCEquip to 0 else ( GetPCRank "Mage_Guild" < 5 ) return endif endif if ( оnce == 1 ) set timer to ( timer + GetSecondPassed )       if  timer > 30 Player -> Removespell, "водное дыхание, как там оно называется" set Once to 0 endif endif end теперь через 30 секунд водное дыхание исчезнет теперь давайте рассудим - что мы все время упускаем? Я не стала упоминать об этом на первом уроке. Учебник упоминает но я  смотрю половина народа затруднилась его читать. Если ваше меню открыто ни один скрипт в игре не работает она останавливается. Прекращается нападение, замирает жизнь. Ваши скрипты так же не должны продолжать выполняться. В начале каждого скрипта теперь .мы должны проставить блок If ( MenuMode == 1 ) return Endif Этот блок проверяет открыто меню или нет. Домашнее задание: используя различные функции и оперируя переменными, изготовить в КС плагин, включающий предмет с различными действиями. ВНИМАНИЕ, простой повтор скрипта из урока - автоматическая двойка. Делаем свое. изобретаем, пусть будет короче Но видно ваши мозги. Товарищи программисты, не посрамимся)))) Ставим предмет на площадь Балморы чтобы не искать. Подсказка: как обпределить эти точные координаты в которые надо отправить игрока? Поставьте в КС на них тестового НПС, внизу слева увидите его точные кординаты. Запишите их в скрипт, удалите НПС. Угол angle для плеера всегда будет 0, вертикаль. Читаем учебник!!!  
  10. Урок 3 Магия – с чем ее едят и на что намазывают. Скрипты и магия – вещи друг друга любящие. Чего только нельзя натворить, грамотно насовав спеллы в скрипты. Например, в громадине Glory Road на этом принципе был реализован остров ловушек, который немилосердно глючил из-за близости и количества активаторов со скриптами и спеллами  в одной ячейке. Но кому это мешает – идея-то была несомненно очень хороша. В том же плагине были реализованы запуски фейерверков, в конце траектории которых получался спел-эффект, визуально выглядит как настоящий салют, респект автору. Мы так далеко не пойдем. Сначала мы научим скрипт определять уровень магии и баловаться с ним. А заодно и употреблять изменения навыков и характеристик посредством  Set Get  и Mod. Get/Mod/SetHealth Get/Mod/SetMagicka Get/Mod/SetFatigue Давайте сделаем Волшебную пакость. И повесим на нее вот такой славный скрипт. Begin noGodToday ; ТЩАТЕЛЬНО продумываем переменные! Short DoOnce Short Once Short button float PlayerHealth float PlayerFatigue float PlayerMagicka If ( OnActivate == 1 ) Activate Set DoOnce to 1 Endif If ( DoOnce == 1) Messagebox, "Магия за здоровье", "Здоровье за усталость", "Усталость за магию", "Ничего" Set DoOnce to 2 Elseif (DoOnce == 2) set button to GetButtonPressed set PlayerHealth to GetHealth set PlayerFatigue to GetFatigue set PlayerMagicka to GetMagicka endif If (Button == -1) return endif If ( Button == 0 ) if ( PlayerHealth >=30 )          ModHealth  - 20         ModMagicka 20         Set Once to 1         Else ( PlayerHealth < 30 )         Messagebox, "Вы недостаточно здоровы"         Set Once to 2 endif endif if ( Button == 1 )   if ( PlayerFatigue >=30 )         ModFatigue - 20         ModHealth 20         Set Once to 1         Else ( PlayerFatigue < 30 )         Messagebox,"Вы слишком устали"         Set Once to 2 endif endif if ( Button = =  2 )       If ( PlayerMagicka >= 30 )               ModMagicka - 20               ModFatigue 20           Set Once to 1         Else ( PlayerMagicka < 30 )       Messagebox, "Ваш запас магии слишком мал"       Set Once to 2 Endif Endif If ( Once == 1 ) If ( OnActivate == 1 ) Messagebox, "Дары исчерпаны" Endif Endif If (Once == 2 ) If (OnActivate == 1 ) Messagebox, "Когда-нибудь вам повезет снова" Endif Endif End Что это такое мы сейчас сделали? Объект, на который мы все это повесили, просчитывает наши статы, их текущее и базовое значение. Затем при помощи функции Mod мы одно отнимаем другое даем – при этом прибавление и вычитание идет из нашего текущего состояния ( а иначе зачем нам надо было бы просить, скажем,  магии?) Если бы мы хотели прибавления тотально, то использовали бы функцию Set,  и тогда прибавилось бы наше базовое здоровье. В этом скрипте вещь выполняет свои подарки только один раз. Вам придется думать, что именно просить и чем вы готовы пожертвовать. Подобная телега висит на статуях белиара в готике или на алтарях в храмах морровинда, но в отличие от них она одноразовая. Этот веселый скрипт можно повесить скажем на статую в тяжелом для прохождения месте чтобы в критический момент она пришла на помощь. Еще интереснее будет каскад. Который я вам покажу на соответственном уроке. Вернемся к магии. На уроке 2 мы уже монтировали спеллы на всякие вещицы. Это в общем несложная вещь, прекрасно подходящая на ловушки. Давайте малость усложним дело. Сделаем дистанционную бяку, как в Дрожащих островах. И заодно изучим, как нам сделать условия расстояния, ога. Begin Sniper_vasya Short DoOnce ; поместим это на какой нить активатор. И скажем, чтобы игрок не приближался более чем ;на….Иначе будем стрелять! If (GetDistance, “ObjectID2” <= 300 ) “ObjectID2”-> Cast  “spell_distance”, Player  ; замонает. Что же делать? ; поместим рядом предмет с уникальным ID. Перепишем: If (GetDistance, “ObjectID2” <= 300 ) If ( GetitemCount, ID = = 0 ) If (DoOnce = = 0 ) “ObjectID2”-> Cast  “spell_distance”, Player  Elseif  ( GetitemCount, ID  = = 1 ) Set DoOnce to 1 Endif Endif Endif End Вот по идее вы под кастом из спеллов дальнего действия добываете артефакт, а как только вы его взяли – все, обстрел прекратился. Магия в мире Морровинда предоставляет замечательные возможности наворотов,  и если вы будете осмотрительны, то скрипты с магией сделают ваши плагины замечательным украшением игры. Домашнее задание. Сделайте плагин или дополните свои старые есп, предметом, регулирующим характеристики, причем не только магию или здоровье. См учебник стр 102 и далее! Копировать сочиненный мной скрипт смысла не имеет сразу говорю) Просите объяснений если непонятен ход скрипта. Не молчим)
  11. Я начну вольную публикацию своих уроков. Вы можете задавать тут свои вопросы. Проверять готовое я буду только по мере возможности )) Берем обязательно учебник в теме про учебники, и еще - вам потребуются Трибунал и Бладмун! Урок первый, вводный. Для обучения вам понадобится замечательный документ  - MSFD, или руководство по скриптам  Морровинда  для чайников. Дело в том, что мои задания будут отличаться от этого учебника,  но знания из него будут базовыми,  и ваши домашние работы не обойдутся без его помощи, так как я буду заставлять вас мыслить самостоятельно. В этом смысле первый урок станет самым важным. Речь пойдет самыми ненаучными словами о скрипте, его функциональности и роли. А так же логике. Скрипт в игре – программа, управляющая действием объекта,  всем, что с ним происходит. Глобальные программы запускаются со стартом игры и опираются на информацию об игровом времени, времени года и прочее. Глобалы зашиты в игру, их касаться мы не будем. А вот все, непосредственно касающееся приключений героя, в базовых возможностях мы постараемся рассмотреть. Мы уже знаем, что скрипт – программа. Следовательно, она  должна начаться, выполниться и закончиться. Или продолжать выполняться столько, сколько нам нужно. Это очевидно. Рассмотрим запуск и остановку скрипта. Как движок узнает,  что ему пора запустить скрипт? Появление игрока в нужной сцене, загрузка ячейки – дает команду начать выполнение  скриптов.  На старт указывает  команда begin. После него идет ID то есть идентификатор скрипта, имя вашей программы. Имя должно быть уникальным. Команда begin scriptID  является стартовой командой скрипта. Почему важно знать,  какое условие выполняет программу? Потому что ради оптимизации стоит останавливать те скрипты, которые вам вне данной ячейки не нужны. И тем более не совершать ошибок приводящих к постоянной цикличной работе скрипта или навешивающих постоянные эффекты за исключением тех, которые для этого и писались. Скрипт выполняется в течение короткого времени  и начинает повторять себя снова, если не была дана команда остановить скрипт и прекратить его действие. Действие скрипта можно вручную прекратить условием, которое выполнится только один раз, либо командой  stopscript.   Сам же скрипт считается выполненным и завершенным после команды End (здесь можно указать или не указывать ID) Команда End  означает завершение скрипта. Команда stopscript завершает скрипт ДО выполнения End У каждого скрипта есть условия его выполнения. Например, он должен происходить только в определенный день, или после нужной записи или если на игроке есть нужная вещь.  И больше не выполняться или наоборот  выполняться каждый раз, или выполняться только, когда вещь будет снова надета. Наши условия все время меняются. И потому мы будем фиксировать эти изменения в значениях переменных.  Переменные бывают short – короткие целочисленные значения, long  - длинные целочисленные значения более высокой точности и float – плавающие (с плавающими значениями, запятой) Основными нашими переменными будут переменные типа Short. Это небольшие целые  числа или ноль. По умолчанию в игре переменные равны НУЛЮ. Условия скрипта задаются и меняются  значениями переменных. Как определяется, что скрипт должен сработать и выполниться и что именно сделать? Производится проверка значений переменных. Термин   if , означающий Если говорит о старте проверки условия. Завершение проверки и действий закрывает термин  endif Они составляют команду-блок, где выполнится проверка, и если она соответствует нужным данным, то есть проверка установила в блоке ИСТИННОСТЬ условия – будет дана команда действия – функция. Выполнение функции может изменять значение заданных переменных или не изменять – это вы задаете сами. Но как  совершить  действие, при котором если условия соответствуют – выполнится одна функция, а если нет – другая?   Для подобных операций используется оператор else или elseif, который объявляет изменение переменных или действие при ЛОЖНОСТИ условий. if и endif  - составляют блок, внутри которого проверяется и выполняется проверка и изменение значений переменных, а так же действие, задаваемое функцией. else/elseif определяет ложность истинность и  действие в случае, если условия оказываются ложными. Давайте расшифруем сказанное. Представьте себе съемку фильма. Идет дубль, снимается сцена. Begin scenescript ;  - по хлопку помощника режиссера съемка дубля стартует Short DoOnce ; Все актеры приступают к выполнению сцены Short Magik ; освещение включено Short Once ; камера включена If  ( DoOnce = = 0 ) ; если все идет по плану If  ( Magik = =  0 ) ; если осветитель достаточно трезв If  ( Once = = 0 ) ; если оператор работает как надо Movescene  (снимаем) Set  DoOnce to 1  актеры в порядке Set  Magik  to 1  свет не подкачал Set Once to 1  оператор не запорол работу Else  return ; если все напились ничего не получилось, начинаем заново Endif Endif Endif End;   снято Обратим внимание: функция return прекратит действие скрипта  и отправит его выполняться заново. Если бы вместо return мы поставили бы stopscript – наша команда никогда не досняла бы кадр а уволилась в полном составе. Еще одна важная вещь: все переменные так и остались в значении единица (1). Зачем? Условием выполнения работы являются нули – если переменная останется в значении единица то съемки данного кадра завершатся и никогда не будут выполняться заново. Мы соблюдаем однократное исполнение условий. Итак, то, о чем мы сейчас говорили – логика скрипта.  Давайте подумаем, как мы ставим себе задачу? Мы думаем: если в воскресенье будет хороший день, я поеду кататься не велосипеде, а если погода будет плохой, то буду читать книгу.  Прежде чем писать скрипт, проговорим его. Мы начали. Нам важны: погода и день недели.        Это определяет мое поведение. Если погода будет хорошей (условие по умолчанию подходящее для поездки, значение 0) В воскресенье ( условие по умолчанию подходящее для поездки, значение 0) Я катаюсь на велосипеде. Иначе, (если погода плохая, не 0,  или это будний день или суббота, не 0 ) Я никуда не еду (stop) Когда я съездил, настал понедельник, ( 1 )  и на погоду мне уже плевать. (1 ) больше я никуда не поеду ( единицы так и останутся)  Конец. Как видите, скрипт так же внятно следует вашей логике. Посмотрим на скрипт Моровинда.   Мы получили пакет для Кая. Но он еще не доставлен. Кай должен знать о пакете. Он попросит его у нас и если он есть, даст задачу. Мы не будем брать игровой скрипт, напишем сами. Что мы должны сделать? Стартуем скрипт , повесив его на Кая. Begin kaiscript ;Подумаем о нужном количестве переменных. У нас всего два условия: на руках должен ;быть пакет и в журнале запись о начале квеста. Если помыслить логически, то Каю ;неважен старт квеста – он-то даст вам задачу, если у вас есть пакет. Выбрасываем ;проверку одного из условий. ;Лишние данные связывают по рукам и ногам. ;Нам надо чтобы кай проверил пакет на наличие забрал его и дал задачу. И больше не ;совершал  проверку пакета. Далее он будет давать нам задания. В принципе – нам нужна ;одна единственная переменная. Объявим ее. Short DoOnce ;По умолчанию она равна нулю и мы проверим истинность этого условия: If  ( DoOnce = = 0 ) ;Далее мы должны проверить наличие в инвентаре пакета: If  ( GetItemCount, “ID_paket” = = 1 ) ;Количество пакетов в инвентаре один. Меньше не надо, больше тоже. ;Два условия проверены. ;Итак у нас все соответствует, и Кай заберет у плеера вещи. На деле конечно они уходят ;«в мир» и приходят к вызывающему объекту или нет. В общем, нужды в этом нет.  ;Старайтесь быть лаконичными. Player -> removeitem “ID_paket”1 ;У нас забрали наш один пакет. Мы не будем класть его каю в инвентарь как и  решили ;выше. ;Теперь мы сделаем , чтобы эта часть скрипта больше не выполнялась, несмотря на то что ;кай продолжает свой треп о других вещах. Set DoOnce to 1 ;Завершение предыдущего блока. И такое значение переменной сохранится, и может быть ;использовано дальше в следующем блоке условий. Endif Endif – завершаем  блок End – завершаем скрипт. ;В таком скрипте не надо затевать проверки ложности условий – мы не ожидаем, что кай ;нас побьет, если не увидит пакета. Если он что-то скажет – это будет отображено уже в ;диалоге. Пока наш скрипт остается одноблочным. Если мы хотим продолжить, то ;следующий блок выглядел бы примерно так: If  ( DoOnce = = 1 ) Действие Set DoOnce to 2 Endif Постепенно изменяя значение переменной, мы все время удерживаем скрипт от выполнения тех действий, которые он уже сделал. ;То, что непременно надо вынести из урока: скрипт логичен. Синтаксис Знак « = =»  математически показывает на тождество левой и ;правой части выражения – иначе говоря - на истинность условия ;  - этот знак  начинает каждую строку комментариев. Сигнал не выполнять ничего после него до следующей строки. ( ) заключение проверяемого условия в скобки отсекает конкретно проверяемые части строки от тех, которые в проверке не участвуют “” в кавычки заключаются ID предметов после которых будет стоять их  количество, мессаджбоксы. Список функций Морровинда присутствует в пособии, упомянутом мной в начале урока. Использованные функции: GetItemCount – проверяет наличие предмета в инвентаре либо контейнере. Removeitem – удаляет из инвентаря плеера или нпс вещи. Set – команда на изменение значения переменной и вообще какого –либо количества. Домашнее задание:  Рассмотрите в учебнике правила написания элементов скрипта. То есть использования скобок, пробелов и др. Распишите какие-либо свои повседневные действия, пользуясь логическими построениями скрипта.   
  12. его тянет даже третий пень) но плохо!  :-P :D все рабочие новые версии прог будут выложены с инструкцией. Вопрос в том что я никак не могу найти полностью рабочее стабильное сочетание для Обливиона. Все время импортер работает через зад. Но как только я найду все нужное - сразу выложу.
  13. завязывайте флудить)))
  14. флудеры  8-)
  15. http://www.wesnoth.org/      http://tesall.ru/wesnoth
  16. а нет общего рецепта для всех помещений. Он двигается по невидимой для вас сетке. Сделать плагин который вдруг заменит ее во всем мире на вменяемую...врядли выйдет.  :(
  17. что можно сказать)) я расширяю плагин и добавлю туда одежды)))  ;) пара скринов?))))  :D
  18. пути следования НПС прописываются в path gride  и не подчиняются скриптам, кроме случая когда надо заставить актера специально пройти из точки а в точку б, но вы же не можете расписать в скрипте все интериоры. Вообще же актер следует за игроком, обычно без проблем. в сложных местах лучше использовать скрипт который позволит телепортировать НПС к игроку если игрок удалился от него на определенную дистанцию, или в другую ячейку.
  19. http://ab-pokoj.livejournal.com/  линк для всех))) всем читать)))
  20. щаз ничего не читаю кроме Авраама Болеслава Покоя. Синдбад, давай в правилах напишем что Покой обязателен к прочтению?)))  :-P
  21. :D небольшая шутка: мой перс приоделся а кожаные штаны с сакральной надписью Harley Davidson 
  22. а вот тут уже фотожопы нет ни грамма  -  це уголь
  23. ничего)) дай бог скоро мне пришлют памяти, я тибе свою отдам, как раз для обломы наберешь))
  24. все переделала. открывайте тему для каждого релиза отдельно плиз! напоминаю не менее 80процентов готовности.
  25. Итак, я принимаюсь за Fantasy Mod Мод добавляет свыше 170 новых объектов и 6 локаций. Одежда Броня Оружие Уникальные вещи НПС Расы Не требует других модов! вес в архиве 194 метра вес общий  660 мб
×
×
  • Создать...