Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Скрипт "Dragon bones"
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Bes
Скрипт "Dragon bones" (script88, Опция 88)
или **(wog-файл)

Опиание:
  • Поддержка: WoG3.58f, Феникс-Мод.
    ТЕ пока не включён в поддержку, т.к. используемые в скрипте переменные (z,v,w,flags,FU) могут пересекаться...
  • Используемые переменные:
    1. v48, v49, v69, v72, v917-v919
    2. z177-z183
    3. w95, w96
    4. флаги: 29-31, 38, 39
    5. ф-ции FU48, FU149, FU177-FU179
  • Диалоги и комментарии в скрипте полностью на русском языке!
  • Скрипт был написан для новых объектов "Скелет Дракона" и "Кладбище Драконов" (соответственно, avxskds1 и avxskds3)
    На картинке видно, какие размеры имеют эти объекты в сравнении со Скелетом/Трупом (стандартным объектом Героев III)
    Имеется также ещё один Скелет Дракона (декоративный объект), для которого прописана лишь выводимая подсказка.

  • "Кладбище Драконов" - это своего рода банк существ, где в качестве стражников выступают Костяные и Призрачные Драконы. В случае преодоления "испытания" появится хранитель этого места, Кровавый Дракон по имени Талгор, который "поведает" игроку о секрете силы рода Драконов, а также предложит вам взять его в своё войско...
    Отличительной особенностью данного объекта от остальных банков существ является то, что вход на кладбище не так то просто "найти", т.к. он всё время "покрыт" мраком wink.gif

    "Скелет Дракона" - этот объект был задуман по аналогии с человеческим Скелетом/Трупом... Т.е. герой, полазив среди бренных останков умершего Дракона, сможет с вероятностью 35% найти неплохо сохранившуюся часть тела Дракона, будь то зубы, или глаз, или чашуя, или кожа с крыльев, или кости. Находку герой отдаёт своему мастеру, который уже на следующий день может либо принести хозяину сделанный из этого останка тела дракона артефакт, либо предложит выручить от находки неплохую сумму золота на рынке...
  • Обсуждение баланса:
    Некоторые параметры скрипта завязаны на выбранную игроком сложность:
    1. Лёгкая - Стража кладбища: 4 Костяных и 2 Призрачных Драконов; Сумма выручки на рынке: 33% от стоимости соответсвующего арта (только для 39 и 44 арта)
      Для ИИ: 5 Призрачных Драконов; Мастер всегда делает арт
    2. Нормальная и Сложная - Стража кладбища: 4 Костяных и 3 Призрачных Драконов; Сумма выручки на рынке: 42% от стоимости соответсвующего арта (только для 39 и 44 арта)
      Для ИИ: 6 Призрачных Драконов; Мастер всегда делает арт
    3. Экспертная и Невозможная - Стража кладбища: 6 Костяных и 2 Призрачных Драконов; Сумма выручки на рынке: 50% от стоимости соответсвующего арта (только для 39 и 44 арта)
      Для ИИ: 7 Призрачных Драконов; Мастер всегда делает арт
    Если у кого-то есть замечания по выбранным мною величинам, высказывайтесь... smile.gif

    Особенности скрипта:
    Скрипт включает и действия для ИИ, причём комп всегда вступает в бой со стражниками кладбища, всегда присоединяет хранителя (Кровавого Дракона), а также всегда получает от мастера сделанный из останка дракона артефакт, причём в тот же день (а человек получает на след. день!)

    Т.к. новые объекты относятся к типу №22, то герой не становится на "точку входа" объекта, он всё время посещает объект с расстояния (как для скелета/трупа)
    Эта особенность наложила свой отпечаток на скрипт, поэтому я для всех объектов использую перезапись координат объекта: !!VRv917:Cv998/v999/v1000;
    Как показала практика, иногда содержимое v998-v1000 изменяется, а это влияет на общую настройку объектов. Вот и пришлось взять др. три переменные для хранения координат объекта

    Если кто-то из хорошо знающих ЕРМ людей увидит избыточность в некоторых местах скрипта, или найдёт др. более простое решение какого-то действия, то пишите... smile.gif

    P.S.властям: извините, что создал отдельную тему, просто пришлось бы кучу вопросов обсуждать и обговаривать в разных местах, а так всё в одной ветке... и удобно, и места меньше в итоге! sorry.gif
    Как всё решится, её можно будет потом удалить, а посты перекинуть в "Авторские скрипты" и "Флэйм"


    "Графическое" отступление:
    1 и 2 объекты были взяты из игры StarCraft (да не ополчатся на меня "Blizzard" biggrin.gif)
    3 объект был взят из игры BFMEII (соответственно, простите меня "EA Games" biggrin.gif)


    Из-за цветовой гаммы объектов, где преимущественно преобладают белые оттенки, пришлось ввести ограничения по ландшафту:
    - для 1 объекта: запрет на Снег
    - для 2 и 3 объектов: запрет на Песок, Снег, Подземелье

    Если кто из художников сможет это как-то разрулить, я буду только рад smile.gif
    Berserker
    Молодцы, Бес. Только не хватает тестовой карты, а то так сразу не потестишь...
    Docent Picolan
    интересно. и объекты красивые.
    Bes
    Блин, хоть бы кто придрался к чему-либо biggrin.gif
    (извините, что показываю невежливость sorry.gif )


    У меня есть своя тестовая карта (даже две: для ИИ и Человека), но смысла нет их выкладывать... просто поставьте скрипт, влепите объекты на любую карту и lupa.gif (иньдьжёй)

    Про скрипт:
    Есть один серьёзный недостаток в скрипте ( sorry.gif ), признаться честно... Если покапаться в скелете и найти полезную "находку", а на следующий день ни сделать ни одного хода этим героем, то мастер так и не появиться, а этот герой больше никогда не найдёт подобной вещи в др. скелете дракона dry.gif banghead.gif
    Я всё надеелся, что никто такого делать не будет, но всё же, из-за своей придирчивости ко всему (даже к собственным делам) я не мог долго об этом умалчивать... Но самое страшное - я не знаю как исправить это sad.gif
    Вся загвоздка лежит здесь:
    Цитата(см. в самом низу скрипта)
    !?HM-1&88;
    !!IF:W-1;
    !!FU&w95<>1:E;
    !!VRy3:Sc; !!VRy3:-w96;
    !!FU|w96=0/y3<>1:E;
    ...
    Может кто подскажет, как выкрутиться, и доработать условие? smile.gif

    4 Berserker
    Кстати, я тут чуть добавил в скрипт маленьких финтиклюшек (не заметных на первый взгляд), так что теперь к списку используемых переменных добавились ещё v9700-v9702 (назначение как в Феникс-Моде © Berserker).. Надеюсь, Berserker, их назначение не изменится в след. версии вашего мода (щас они задействованы для !!CM2)
    Berserker, может возмёте эти объекты для Мода? ;-)
    Deo
    Сделал бы чтобы рандомно некоторые объекты на карте заменялись на скелет дракона, так качать в ломы, самому кидать на карты, а потом играть...(((
    lotus13
    глупий вопрос....
    но как его ставить?
    кусок кода копировать в целий файл или вог сам пропишет(я ето имел ввиду.)
    Aleee
    Кидаешь в Data/s. Затем включаешь в Вог-настройках.
    Bes
    Прошу прощения у всех, кто у же скачал архив и не смог найти в редакторе 3-й объект sorry.gif (я забыл исправить имя в объектном текстовике)
    Всё исправил, ссылка таже... (обновился и скрипт)
    Объекты в редакторе находятся в закладках Песчаный, Каменистый и Все ландшафты

    Deo, если б я знал как это делать dry.gif

    Как ставить...
    • копируете скриптовые файлы (*.erm, *.ers) в папку "Datat\s"
      А сам скрипт активируете в "WoG Options" (нижняя закладка)
    • wog-файл копируете в папку "Update", затем запускаете H3wUpd.ехе
    • После этого переходите в папку Data и открываете файл ZEOBJTS.TXT (если его там нет, вытаскиваете из h3bitmap.lod)
      Копируете в самый низ списка три строчки из файла "кусокZEOBJTS.txt", а в самом верху прибавляете к числу цифру 3
    gamecreator
    Цитата(Bes @ 27 Aug 2007, 02:34)
    Может кто подскажет, как выкрутиться, и доработать условие?

    а что задумывалось?
    Bes
    Короче, если герой что-то находит,то в...
    w95 записывается 1, т.е. находка была
    w96 записывается день, когда была находка
    w89 записывается тип находки (т.е. номер арта, который мастер сможет сделать)

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

    Т.к. это геройские переменные, я не смогу ими оперировать пользуясь таймерами (по крайней мере я не знаю как)
    Поэтому я решил использовать !?HM-1
    Но этот триггер имеет один характерный для него недостаток - он срабатывает перед очередным ходом героя. Но если герой не будет двигаться, то моё условие (|w96=0/y3<>1) летит к чертям dry.gif

    Распишу действия по пунктам
    !!FU&w95<>1:E; - если находки небыло, то ничего не делать

    !!VRy3:Sc; - если была, то в y3 записываем текущий день

    !!VRy3:-w96; - затем вычитаем из полученного значения день находки

    !!FU|w96=0/y3<>1:E; дальше смотрим, если w96=0 (т.е. исключаем возникновение ошибки в случае находки в первый же день, когда в w96 запишется 1); или если разность текущего дня и дня находки не равняется 1 (y1=y1-w96=1 показыввает наступление след. дня), то ничего не делать.
    Пока писал пояснения, понял что w96=0 в принципе не делает погоды, но и не мешает. Оно нужно, если бы не было !!FU&w95<>1:E;
    , я просто забыл его убрать...

    В общем, спасибо gamecreator, что своим вопросом заставили меня пораскинуть мозгами... пошёл проверять своё проззрение на практике biggrin.gif
    gamecreator
    Цитата(Bes @ 27 Aug 2007, 13:29)
    я не смогу ими оперировать пользуясь таймерами (по крайней мере я не знаю как)

    запомни номер героя и ставь таймер на след. день, а в таймере IF:W
    Deo
    Бес, а зачем w95 и w96 использовать? Если день находки не равняется 0 ==>> находка была и не нужно w95 использовать.
    lotus13
    После этого переходите в папку Data и открываете файл ZEOBJTS.TXT (если его там нет, вытаскиваете из h3bitmap.lod)

    может я сильно по нубовски спрошу.
    а нельзя ли чеби ето автоматом делалось?
    никада не рился в "прошивках" героев. все *def ипрочее...
    просто сие для меня темний лес...
    gamecreator
    запакуй деф, мск, мсг и строку и zeobjts.txt в obj-файл и установи его прогой simple lod
    Bes
    Всё, описанный ранее баг был устранён smile.gif
    (Скрипт обновил, объект №3 тоже несколько видоизменился)

    2 gamecreator
    Не, лишние таймеры заводить, запоминать номер героя... ну их, я оставлю !?HM-1, благо всё теперь работает smile.gif

    2 Deo
    yes.gif Я уже понял свою ошибку... А w95 в др. местах тоже нужна.

    2 lotus13
    сорри sorry.gifэто самый простой вариант
    lotus13
    креатор...
    пасибки.
    я так понял ти поиздевался, да?
    gigi.gif)))
    попитался на работе на ТЕ поставить...(на работе токо ета версия)
    извлек resedit даний файл....
    в ворде дописал все 3 строки(блокнотом не открилось)
    .
    но назад не запаковивалось -я опции едд не увидел. оставил файл просто в каталоге дата.
    запустил бил глюк- в меню вог опции показовало токо табличку приветствия и тотальний зависон.
    дома еще попробую.
    ето из-за те или из-за того что файл не бил залит в лод файл?
    + симпллод мгновено откривался и сразу закривался - дос окно в винде, аля вирус...-я поетому resedit использовал...
    lotus13
    получилось.....


    Занимается добавлением файлов в .lod, совпадающий с ним по имени.
    Скопируете в Data под именем "h3bitmap.exe" и "h3sprite.exe", вытащите ярлыки на рабочий стол и таскайте на них файлы для добавления.
    (Так же, можно добавлять @ перед именем файла, как это делалось с оригинальными h3sprite.exe и h3bitmap.exe, но не обязательно)

    - Понимает .bmp вместо .pcx. Т.е. чтобы заменить aaa.pcx в .lod'е, перетащите aaa.bmp на ярлык. (здесь совместимости с оригинальными h3sprite.exe и h3bitmap.exe нет, т.к. .pcx не поддерживается)
    - Понимает .obj'ы от ModHomm'а.


    нашел описаловку.....
    запаковал.
    но вот что странно....
    прикаждом распаковивании сума вверху разная......
    то1415
    то 1567
    то 1557
    .....
    + имена каждих обьектов начинаються с большой букви- а у тебя в твоем куске с маленькой....
    .
    + 2-й раз ресорседом витащил файл -у меня в каталоге дата уже 2!!! одинакових файла лежит.


    .
    бля.
    опять увидел.
    есть
    Zaobjts.txt
    Zeobjts.txt

    гы.
    и там и там прописал.
    пришлось менять......
    .
    раздуплился.
    уже все пашеть....
    gigi.gif0
    но вопрос в силе если в дате извлечений файл есть -паковать его нада?
    Bes
    2 lotus13
    Нет, паковать его нада, имхо, он будет первостепенней yes.gif
    P.S.: у вас что ни пост, то полная история ошибок, хоть и с хэпи_эндом biggrin.gif
    Не надо излагать свои действия столь детально, а то модераторы начнут нервничать unsure.gif


    =========================

    1) Хотел, по совету Deo, реализовать замену в картах при загрузке определённого объекта кладбищем - хрен там, если использовать !!UN:I появляется не указанный объект (тип=22/подтип=3), а кружок с надписью "MON" (а это тип=71/подтип=0) dry.gif
    А др. способа случайной замены объектов, как при WoG-ицикациии, я не знаю. sad.gif
    (а затирать в h3sprite.lod какой-то объект WoG своим я не стану, если только в каком-нибудь моде wink.gif)

    2)
    Цитата(балBes)
    Цитата(gamecreator)
    запомни номер героя и ставь таймер на след. день, а в таймере IF:W
    Не, лишние таймеры заводить, запоминать номер героя... ну их, я оставлю !?HM-1
    К тому же, что мне делать если в один день два разных героя найдут что-то? Ведь придётся уже использовать 2 переменные для номеров... надо предусмотреть все возможные повороты событий...
    И HM-1 довольно неплохо с этим справляется, нежели таймер, имхо smile.gif
    gamecreator
    Цитата(Bes @ 28 Aug 2007, 13:30)
    Нет, паковать его нада, имхо, он будет первостепенней yes.gif

    сначала игра проверяет на наличие файла в папке дата. если он там, то игра пакует его в лод, а старую версию помещает в папку бекап. потом используется файл из лода.
    DracoLich
    Цитата
    если использовать !!UN:I появляется не указанный объект (тип=22/подтип=3), а кружок с надписью "MON"

    Наверное, подтип не зарегестрирован в игре...
    Berserker
    Насчёт переменных не переживайте, Бес. Завтра залью версию 2.6 с хелпом, список переменных там и останется. Потом серьёзно и долго буду занят другими проектами, когда вернусь к моду, то буду писать с нуля и использовать переменные без привязки к индексам.

    Насчёт вашей проблемы...Если не трудно, напишите словами всё то, что делает скрипт. Возможно есть более корректное решение (и простое), ведь стабильность тоже важна. И объект кончено надо в игре автоматом регистрировать, а не вручную.
    Bes
    >Нет, паковать его нада,
    Я здесь описался, конечно же я говорил [не надо] (а то бы я начал так: "Да, паковать надо")
    sorry.gif

    Цитата(Berserker)
    Если не трудно, напишите словами всё то, что делает скрипт.
    А какой конкретно момент описать? unsure.gif
    Или полностью от корки до корки? blink.gif

    Цитата
    объект кончено надо в игре автоматом регистрировать, а не вручную
    Если б я знал как... Может вы знаете способ.
    Не буду же ли я подсовывать свой изменённый ZEOBJTS.txt... вдруг у людей были свои сторонние объекты прописаны
    gamecreator
    используй obj
    Bes
    А смысл, если человеку придётся всё равно запускать сторонние проги dry.gif
    Вот если б всё делалось при установке *.wog rolleyes.gif

    ============

    Обновил скрипт... (ссылка в первом посте)
    • Убрал баг, вызванный действием скрипта Песочных часов Асмодеуса...
    • Добавил код, подгружающий для битвы на кладбище сторонний battle_field (спасибо Morn'у)
      Замечание: когда скачаете картинку, суньте её в Data (переименовав её в t22s3pic.pcx)
    • Изменил один диалог, чтобы в нём отображалась внутр. картинка WoG'а.
      Berserker, я использовал для этого диалога №99, надеюсь ваш 99 диалог от этого не пострадает wink.gif (вроде они никак не пересекутся)
    Berserker
    Не пострадает. Я свои диалоги где хочу могу юзать smile.gif Как и вы. Это воговцы "резервируют".
    Bes
    Цитата(Berserker)
    Насчёт вашей проблемы...Если не трудно, напишите словами всё то, что делает скрипт. Возможно есть более корректное решение (и простое), ведь стабильность тоже важна.
    Вы так и не уточнили, что именно описать dry.gif
    Жду.
    Bes
    Кто тут хотел, чтоб по автомату всё ставилось?
    (см. ссылку в первом посте... smile.gif)

    Там я всунул изменённый стандартный Zeobjcts.txt, а ваш будет перемещаться в "Data\backup"
    Так что смело не глядя ставьте... smile.gif
    Berserker
    Ну вот и отлично, насчёт алгоритмо, хотя бы в двух словах всё. (или в одном половину)
    Bes
    Вот, описание по куску скрипта 88, как вы и просили.
    Я убрал весь текст и комменты (см. их в оригинале)

    Цитата(script88 @ код, касаемый объекта 22/1)
    !#UN:P88/?v1;
    !#IF&v1=1:V88/1;
    !#VRz177&88:S^^;
    !#VRz178&88:S^^;
    !#VRz179&88:S^{Скелет дракона} (Не посещено)^;
    !#VRz180&88:S^{Скелет дракона} (Посещено)^;
    **подсчёт объектов на карте
    !#UN&88:U22/1/?v69;
    !#HT22/1&88:Tz179; для скелета

    !?PI&88;
    !!DO178/1/v69/1&v69>0:P;
    (серым отмечены настройки для др. объекта)
    !!UN:J2/?y1;
    !!VRv47&y1=0:C33/0/0;
    !!VRv47|y1=1/y1=2:C42/1/69;
    !!VRv47|y1=3/y1=4:C50/2/68;

    **********

    !?FU178;
    !!UN:U22/1/x16/917;
    !!SK917:S0; !!PO917:N0;

    !?OB22/1&1000;
    !!OB998:S;
    !!FU&-88:E;
    !!VRv917:Cv998/v999/v1000;
    !!IF:W-1;
    !!PO917:N?y1;
    !!OB917|y1=1/w95=1:H180;
    !!IF|y1=1/w95=1:M^%Z177 %Z178^;
    !!FU&y1=1:E;
    !!PO917:N1;
    !!FU&w95=1:E;
    !!OB917:H180;
    !!VRz-1:S^%Z177 %Z178^;
    !!VRi:S0 R19;
    !!IF&i>=7:M1/z-1;
    !!FU&i>=7:E;
    !!VRy2:S0 R8;
    !!IF&y2=1:M1/z-1;
    !!FU&y2=1:E;
    !!VRw89:Sy2 +37;
    !!VRz1|w89=37/w89=45:S^текст^;
    !!VRz1|w89=39/w89=40:S^текст^;
    !!VRz1&w89=41:S^текст^;
    !!VRz1&w89=42:S^текст^;
    !!VRz1|w89=43/w89=44:S^^;
    !!IF:M^%Z177 текст %Z1! Текст^;
    !!VRw95:S1; !!VRw96:Sc;
    !!HE-1:R1/1;

    !?OB22/1&-1000; для ИИ
    !!FU&-88:E;
    !!VRv917:Cv998/v999/v1000;
    !!PO917:N?y1;
    !!FU&y1=1:E;
    !!PO917:N1;
    !!VRi:S0 R19;
    !!FU&i>=7:E;
    !!VRy2:S0 R8;
    !!FU&y2=1:E;
    !!VRy2:Sy2 +37;
    !!HE-1:A2/y2/?y3/d;
    !!HE-1&y3=0:A4/y2 R1/1;
    !!FU&y3=0:E;
    !!UN:Ay2/1/?y4;
    !!OW:C?y5;
    !!VRy4&y2=39:*v47:100;
    !!VRy4&y2=44:*v47:100;
    !!OW:Ry5/6/dy4;


    !?HM-1&88;
    !!IF:W-1;
    !!FU&w95<>1:E;
    !!VRy3:Sc; !!VRy3:-w96;
    !!FU&y3<1:E;
    !!VRw95:S0; !!VRw96:S0;
    !!QW:A88/-1/-1/-1;
    !!HE-1:A2/w89/?y1/d;
    !!IF&y1=0:Q1/8/w89/1^текст^;
    !!HE-1&y1=0:A4/w89;
    !!VRw89&y1=0:S0;
    !!FU&y1=0:E;
    !!UN:Aw89/1/?y2;
    !!VRy2|w89=39/w89=44:*v47:100;
    !!IF:Q1/36/d/2^текст^;
    !!VRw89:S0;
    !!VRz-1&-1:S^текст^;
    !!VRz-2&-1:S^../Data/s/chest.jpg^; !!VRz1&-1:S^^;
    !!IF&-1:D99/-1/1/1/-2/1/1/1/1/1/1/1/1/1/1/1; !!IF&-1:E1/99;
    !!FU&-1:E;
    !!UN:R6/1000;
    !!IF:Q1/36/y2/1^текст^;
    !!OW:C?y4;
    !!OW:Ry4/6/dy2;

    !?CM2&88;
    !!CM:F?y1 I?y2 S?y3;
    !!IF:W-1;
    !!FU&w95<>1:E;
    !!FU&y1<>0/y2<>128/y3<>13:E;
    !!HE-1:R2/?y4;
    !!VRz1:S^^; !!VRz1&y4=1:S^а^;
    !!VRz1:S^^;
    !!QW:A88/-1/-1/1;

    Итак...
    Сначала проходит проверка на активацию скрипта, если он вкл., то флаг88 устанавливается в "true". Дальше идут интструкции:запись нужного далее текста, подсчёт кол-ва объектов 22/1 на карте(кол-во запишется в v69), раздача подсказок... Потом, в пост-инструкции, выполняется ф-ция178: присвоение всем объектам внутр.номера 0, что необходимо для дальнейшего контроля посещения объектов (посещённый объект должен иметь номер 1) и тут же исключается вероятный выпад (SK#:S0) случ.арта (для ИИ, т.к. для ИИ стандарт.работа объекта не откл., а объект 22/1 работает как скелет). После, идёт настройка v47 относительно сложности игры (чем сложнее, тем боьший % от стоимости арта будет получать игрок/ИИ)
    Всё, с настройками покончено...
    А вот сама задумка объекта 22/1:
    Если объект не посещён игроком, для него в подсказке отображается "...(не посещено)", не зависимо от того, посетил ли этот объект ИИ.
    Итак, игрок посещает объект, идёт проверка(y1=1?) на "посещён" ли объект когда-то (кем угодно)... Если ДА, то номер объекта должен быть 1, после чего сменится подсказка "...(посещено)" и игрок(или ИИ) ничего здесь никогда не найдёт.
    Если же после проверки будет номер 0, то идёт др. проверка(w95=1?), находит ли герой в этот день что-либо в таком же (но не в этом) объекте? Если ДА, то игрок ничего не сможет здесь найти, а сам объект помечается посещённым (присваевается номер 1 и подсказка меняется). Если же НЕТ(w95<>1), то идёт оснавная часть свойств объекта... сначала (опять же, подсказка получит "посещено") идёт генерация случ. числа в i (от 0 до 19, т.е. 20 вариантов), потом идёт условие, при котором если сгенерированный случ.номер будет меньше числа 7 (от 0 до 6, т.е. 7 вариантов), тем самым я реализовал 35% вероятность, то герой как бы "находит" в останках какой-то полезный предмет (часть тела дракона). Конечно же, всё сводится к конкретному артефакту, а не предмету (просто игрок пока не знает это). Т.е. после этого идёт ещё одна генерация случ. числа в y2 (от 0 до 8, т.е. 9 вариантов), которая уже непосредственно определяет, что найдёт герой. Герой может найти только драконий "арт", т.е. от 37 до 45, что обеспечивается кодом !!VRw89:Sy2 +37;... здесь есть один ньюанс: если сгенерируется y2=1(т.е. арт №38), то герою скажут, что он ничего не нашёл... Это так и должно быть, т.к. 38 арт не подходит под концепцию объекта 22/1.
    Итак, герой как бы находит предмет (номер арта запишется в w89), о чём ему говорится в диалоге, и после этого в w95 запишется 1(отметка о факте находки) и в w96 запишется текущий день (при этом он получит +1 удачи).
    На этом все настройки объекта заканчиваются...
    Далее идёт триггер !?НМ-1, который обеспечивает условие получение арта только на след. день!
    Для этого при каждом шаге идёт сверка на имеющуюся находку (w95=1?) и сверка даты с днём самой находки (!!VRy3:Sc; !!VRy3:-w96;). Если находки у героя нет, то ничего не будет происходить. Иначе, из разности дней будет смотреться, наступил ли след. день (y3<1?). Т.е. если всё ещё тотже день, когда была находка, то разность будет 0. Если же наступит др. день, то разность должна быть 1. Но я сделал ещё и поправку на то, что герой может не двигаться в след. дне (вдруг он в гарнизоне замка, или ещё чего), что отражено в знаке "<" (y3<1). Короче, так или иначе, елсли день будет не совпадать с днём находки, герой обязательно получит арт (конкретика получения отражена в диалогах)...
    Ну а дальше, идёт сверка есть ли такой арт у героя (!!HE-1:A2/w89/?y1/d;). Опять же оговорюсь, что игрок ещё не знает, что за арт он может получить (это только в самом коде видно), ему лишь известен найденный предмет. Если такой арт имеется, то герою будет предложено либо продать "предмет" на рынке, либо оставить "предмет" как трофей (при этом ничего у героя фактически не прибудет, лишь эмоциональный аспект). Если герой скажет "продать", то идёт "подсчёт" стоимости продажи...(!!UN:Aw89/1/?y2;). Если в w89 содержится 39 или 44, то герой получит не полную стоимость, а лишь процент от реальной стоимости арта. Этот процент записан в v47, т.е. формула будет сумма=стоимость арта*v47:100. ничего сложного.
    А дальше просто идёт зачисление определённой суммы в казну героя, и обнуление используемых переменных. (обнуление w95 и w96 идёт сразу после соблюдения условия разности дней).
    В добавок, я сделал запись об находке в журнале героя (через !!QW). Только запись происходит не в коде объекта, а когда игрок находится в окне героя (это вызвано лишь нежеланием заводить ещё одну z-переменную). Кстати, в записи будет отражаться половая принадлежность героя (т.е. он или она).
    Удалении записи происходит после срабатывания условий в !?HM-1


    Что касается ИИ, то для него будет работать всё практически также как и для человека.
    Для него лишь не работают подсказки, диалоги, журнал. Далее, он получает арт в тот же день (т.е. !?HM для него не работает), когда посетит объект. Если у него такой арт будет, то он сразу же получит за него денежную компенсацию.
    Ну, а в остальном всё также...

    Вот и всё...
    DracoLich
    Предложения можно?
    1) Лучше не генерировать число при посещении объекта (иначе, кому не лень, будут релоад использовать для выдергивания артов), а в самой функции расстановки PO:N номеров это делать, а потому проверять. А для посещено/нет лучше использовать номера 15 и 14, а первые 1-8 для типа артефакта.
    2) См. действия для ИИ:
    !!VRy4&y2=39:*v47:100;
    !!VRy4&y2=44:*v47:100;
    Заменить бы на ИЛИ
    !!VRy4|y2=39/y2=44:*v47:100;
    3) Также для читабельности неплохо отделять разрывные строки пустыми (т.е. после FU...:E; шла бы пустая строка)
    4) Если я правильно понял, объект будет показан посещенным даже тому игроку, кто не посещал, а лишь увидел посещеный игроком-противником. Думаю, можно использовать, к примеру, PO:V или PO:H (что лучше, так как раз ограничено 255 - всеми цветами игроков), перехватывать клики мышью, и если нажатие правой кнопкой по объекту, выводить сообщение на основе данных PO:V (PO:H). А подсказки вроде OB:H или HT оставить константными, чтобы по полосе чата не было понятно, посещен объект или нет.
    Bes
    4 сан-сэй

    Я уже второй раз от вас получаю совет по поводу использования PO:V (PO:H), спасибо, но как н совсем просвящённый я так и не понял, как мне это применять на практике... если можео малюсенький пример sorry.gif
    Morn
    Бес а может сделаешь еще что-нить наподобие DemonCave во вторых херосах а то один единственный ImpCash как-то несерьезно
    Docent Picolan
    да! именно. а я объект нарисую. как раз давно хотел такое! идея хорошая.

    Добавлено ([mergetime]1189083423[/mergetime]):
    защищать будут демоны - например по 15-30 штук со всех сторон. давать например 5000 золото, 2 мифрил и арт 2 уровня. можно ещё, чтоб к войску присоединялись несколько (5-15) демонов или рогатых демонов.

    Добавлено ([mergetime]1189083457[/mergetime]):
    получится прекрасный новый объект.

    Добавлено ([mergetime]1189083476[/mergetime]):
    а можно чтоб заклинание какое-нибудь ещё давал...

    Добавлено ([mergetime]1189083487[/mergetime]):
    или +1 к атаке...
    DracoLich
    А можно и то, и другое. Случайноsmile.gif
    2 Бес
    Если честно, я в формулах далеко не очень, и так и не смог придумать формулы вычисления числа из числа smile.gif В любом случае, это не критично.
    Если надо, помогите кто-нить.
    Bes
    сан-сэю...

    Да ладно, это работает и ладно. Может когда поднимусь на очередную ступень в знании ЕРМ, попробую этот скрипт оптимизировать ещё более "красивше".
    А это была моя первая РГР (расчётно-графич. работа) по предмету "ЕРМ-скриптинг" biggrin.gif



    4 Morn & Docent Picolan

    вы просите чтоб я скрипт своял, или что?
    имхо, это явно не в этой теме, ибо оффтоп smile.gif (айда в "Новые объекты")
    Docent Picolan
    Цитата
    вы просите чтоб я скрипт своял, или что?

    да. чтобы ты своял скрипт. а я вызвался нарисовать для него объект.
    так ты сможешь написать?
    извиняюсь за оффтоп.

    Добавлено ([mergetime]1189162905[/mergetime]):
    и ещё оффтоп:
    Морн, может ты тогда нарисуешь для него батлфилд?
    Morn
    Цитата(Docent Picolan @ 07 Sep 2007, 14:01)
    Добавлено ([mergetime]1189162905[/mergetime]):
    и ещё оффтоп:
    Морн, может ты тогда нарисуешь для него батлфилд?


    А якжеж spiteful.gif кудыж без баттлфилда yes.gif
    Bes
    4 Morn & Docent Picolan

    дальнейшие переговоры вести здесь moral.gif smile.gif

    =========

    Народ, меня волнует вопрос баланса моего скрипта dry.gif
    Кто-нибудь, посмотрите, может где надо подправить unsure.gif
    Berserker
    БЕс, я ещё раз прочитал Ваше описание и дельные предложения будут:

    1) Уничтожить это ужасное рассточительство w-переменных, хватит и одной.

    2) Идея шанса мне в корне не нравится, пусть лучше будет охрана.

    3) Ставить проверки такого рода на триггер !?HM - это самоубийтсво, вы подумайте, сколько тычяч раз за игру он будет вызван, десятки, если не сотни!!! А вся для того, чтобы герой получил арт на следующий день. Повесить это можно на !?TM1, но лучше давать или продавать арт в тот же день. Очередная порпавка, я просто скину уже имеющийся арт, забиру ваш и подниму свой, так что не мучайтесь с продажей.
    Bes
    Спасибо за конструктивную критику...

    Воя реакция:
    3) >вы подумайте, сколько тычяч раз за игру он будет вызван, десятки, если не сотни!!!
    Да, но там всё заканчивается на первой же FU:E sorry.gif
    Я всё же предпочитаю, чтобы мастер приносил изделие на след. день. (раньше он никак не справится moral.gif )

    >я просто скину уже имеющийся арт, забиру ваш и подниму свой
    Да?! И как же игрок узнает какой скинуть, если ему известно лишь начальный материал для арта? (хотя конечно, это я не учитывал, всё не предусмотришь). Короче, я подумаю, может и вправду не стоит делать продажу (я хотел придать некую оригинальность действиям sorry.gif )

    2) Я делал действие по аналогии с обычным скелетом, а там никакой охраны нет (скрипт сан-сэя не всчёт).
    Идею с охраной категорически неприемлю! >:|

    3) Т.к. я всё же хочу след. день использовать, то без этих переменных мне не обойтись. А с таймером я так и не придумал должной замены dry.gif (хотя для таймера, как я прикинул, потребуется всего-лишь одна v- и w-переменные yes.gif )

    В общем, как я говорил ранее, скрипт ещё не до конца доработан, так что ещё не всё потеряно... wink.gif
    Bes
    Обновил код по Скелету Дракона (объйкт 22/1)...
    - теперь использую только две w-переменные (95 и 96)
    - убрал ситуацию с продажей
    - чуть доработал "работу мастера" над артом (что потребовало введения !?FU)
    А ещё, чуть универсализовал ф-ции (две похожих ф-ции теперь соединены в одну)

    Короче, ссылки обновились, а мне осталось подумать над усовершенствованием реализации вывода подсказки объектов в карте приключений...

    ===========

    У меня вопрос: может усилить стражу кладбища? unsure.gif (изначальные установки см. в первом посте)
    Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
    Форум IP.Board © 2001-2024 IPS, Inc.