Флэристан, в циклах я ее и не использую. Но есть функции, которые работают медленней одно прохода цикла. Поэтому, когда циклов набирается 100 и более, а функция цикла обрабатывает любые внутренние коды за несколько микросекунд, если не быстрее, то происходит переполнение стэка командами, которые еще не успели выполниться, что и приводит к ошибке "Слишком много инструкций".
В данном случае эти задержки не в цикле, а просто внутри кастомной функции. Причем стоят в самом ее конце. Перед ним запускаются цикл удаления вещей с тела и цикл удаления вещей из инвентаря. Дабы не перегружать функцией "DestroyObject", ей делается небольшая задержка:
Код
DestroyObject(oItem, 0.01);
А вся функция такая:
Код
void DropSystemClearInventory(object oObject, int nCheck=0, object oCreature=OBJECT_INVALID) { if (oObject == OBJECT_INVALID) { if (oCreature != OBJECT_INVALID) { if (nCheck == 1) oObject = GetLocalObject(oCreature, "DROP_STM_CREATURE"); else oObject = GetLocalObject(oCreature, "DROP_STM_BODY"); } if (oObject == OBJECT_INVALID) return; }
if (oCreature != OBJECT_INVALID && nCheck == 1) { int nGold = GetGold(oObject); if (nGold > 0) TakeGoldFromCreature(nGold, oObject, TRUE); }
// Поиск и удаление одетых вещей if (nCheck == 1) { int i; object oItem;
for (i = 0; i < 18; i++) { oItem = GetItemInSlot(i, oObject); if (oItem != OBJECT_INVALID) { SetPlotFlag(oItem, FALSE); SetDroppableFlag(oItem, FALSE); SetItemCursedFlag(oItem, FALSE); DestroyObject(oItem, 0.01); } } } // Поиск и удаление вещей из инвентаря object oLoot = GetFirstItemInInventory(oObject);
if (oLoot != OBJECT_INVALID) { while (GetIsObjectValid(oLoot)) { SetPlotFlag(oLoot, FALSE); SetDroppableFlag(oLoot, FALSE); SetItemCursedFlag(oLoot, FALSE); DestroyObject(oLoot, 0.01); oLoot = GetNextItemInInventory(oObject); } } // Снятие плот флаг и удаление тела существа if (nCheck == 1) AssignCommand(oObject, SetIsDestroyable(TRUE, FALSE, FALSE)); DestroyObject(oObject, 0.1); }
Вести с полей! (IMG:style_emoticons/default/cool.gif) Потестировал нововведение со стрелами: 1. С животных, с которых можно снимать шкуры, стрелы не вернуть, либо тело исчезает, либо есть только шкура. 2. Стрелы в луте моба не идентифицированы и если "lore" не развито, то в инвентаре быстро накапливаются кучки стрел, но если прибить, например, гоблина с одного выстрела, то все в порядке, стрела идентифицирова.
Раса: Человек
Класс: Sorceror
Уровень: ~
Клан: Алый Маг
1. В блоках: // Поиск и удаление одетых вещей // Поиск и удаление вещей из инвентаря Стоит функция: SetDroppableFlag(…, FALSE); Которая устанавливает на проверяемых переменных oItem и oLoot флаг «невыпадающий» - теоретически это могло бы привести к наличию в теле вещей не дающих ему разложиться. Практически, учитывая что присутствует функция DestroyObject, я не знаю, имеет ли это значение для скрипта.
2. В блоке: // Поиск и удаление вещей из инвентаря В цикле присутствует задержка DestroyObject(oLoot, 0.01), при том что условием выполнения цикла стоит while (GetIsObjectValid(oLoot))/oLoot = GetNextItemInInventory(oObject) – а если условие цикла перейдет к новой петле быстрее чем за 0.01 секунды, объект помеченный на удаление все еще будет существовать и удовлетворять условию. Цикл пойдет по второму кругу для этого предмета, но я не уверен имеет ли это какое-либо значение для скрипта.
3. Лексикон утверждает: «Object destruction occurs after the script that calls it completes» - удаление объектов происходит после выполнения всего скрипта. Теоретически это значит что если скрипт подвиснет, функция может не сработать. И тогда тело могут держать неразлагаемым отмеченные в 1 пункте невыпадаемые вещи.
1. Флаг никак не влияет на работу функции "DestroyObject", но учитывая, что игровые функции сами по себе иногда глючат, то я это делаю на всякий пожарный (IMG:style_emoticons/default/smile.gif) Например, ты не сможешь убить функцией "EffectDeath" монстра, если у него установлен флаг "Immortal". Также и тут, возможны свои подводные камни.
2. Ты ошибаешься. Цикл прокручивает по порядку все имеющиеся вещи в инвентаре. Когда цикл дойдет до последней вещи, то функция "GetNextItemInInventory" не найдет следующую вещь, и даст FALSE для функции "GetIsObjectValid", потому что список вещей закончится. Все вещи на персонаже хранятся в виде списка. Цикл начинается с вещи, которая занимает 0 строчку и крутится до конца списка. И пока этот список дает TRUE, он будет прокручиваться. Аналогично и с функцией запроса данных из 2da файла. Пока индекс не равен "", то цикл крутится.
Если бы так не было, то цикл бы крутился бесконечно при любой простой проверке, к примеру, на вывод названия вещи в лог.
3. Правильно, поэтому и стоит небольшая задержка, так как функция "DestroyObject" несколько медленная. А если учесть, что вещей не так уж и много, и функция удаления тела имеет задержку в 0.1 сек (хотя до обновления стояло аж 0.2 сек.), то этого достаточно, чтобы удалились все вещи. Нет, можно, конечно, провести эксперимент, дав монстру, к примеру, 15-20 вещей в лут, а потом посмотреть, удалятся ли они все, прежде чем сработает функция удаления тела.
(IMG:style_emoticons/default/smile.gif) Радует система сбора амуниции, правда как было отмечено ранее в животных не всегда остаются стрелы, + стрелы не идентифицированны
Цитата(Лора @ 5 June 2011, 01:43) [snapback]43545[/snapback]
5. Хотелось бы чтобы цветочков в инвентарь падало побольше. Учитывая то как часто цветы просто рассыпаются в руках Травы не хватает! Не знаю от чего это число зависит сейчас, но точно не от навыка поиска или навыка травничества, знаю что бардам цветочков падает на 2 больше, чем мне, священнику, то есть максимум по 6, наверное это от харизмы (IMG:style_emoticons/default/biggrin.gif) . А хотелось бы чтобы зависело от травничества то есть с повышением навыка повышалось количество собираемых цветов максимум до 10-ти.
Теперь я уверен, что это можно отнести к багам. Не могу сказать точно с какого уровня травничества началось, но при навыке примерно между 120-180 количество цветов собиралось максимум до 6 штук за раз (в среднем 3-5), сейчас навык 220 и сбор максимум 4 шт за раз (в среднем 1-3).
Тела мобов продолжают оставаться на локациях, неюзабельными видимимы или невидимы юзабельными.
Будет исправлено в следующей версии.
Цитата
В локации "Старая канализация" ночные "волки оборотни" появляются только в том случае если вы находились в локации на момент наступления ночи, то бишь если придти туда в 22 часа то там до утра будет пусто.
Вероятно ошибка в настройках спавна. Посмотрим.
Цитата
При моем участии было убито придостаточное количество таких боссов, как Морага, Патрик, Спектр; Баньши, Лич; Танарри. Результат: шанс выпадения "уникальных вещей"(новых) меньше либо равен нулю. С Лорда Танарри настойчиво и упорно падает только "Дар Элементов"(за неделю 4 шт).
Шанс выпадения чуть больше 1%. Для уникальных вещей это нормально. То что выпадает данная вещь очень часто, говорит лишь о том, что выставлен слишком большой шанс выпадения. Необходимо перенастроить общую систему выпадения любых уникальных вещей.
Цитата
С боссов в 99% случаев падают вещи, ради которых нет никакого смысла идти на боссов!
Было бы удивительно, если бы с боссов постоянно сыпались уникальные вещи. Если бы такое происходило, то твои слова были бы адресованы уже к уникальным вещам (IMG:style_emoticons/default/smile.gif)
Цитата
На локациях "Глубинные Миры. У Истоков", "Пески. Руины. Нижние Ярусы" и "Заброшенный Храм. Чертоги Лича" творится полтергейст, вас выкидывает из локации!!
А в партии при этом находишься ты и ты? Если не понял, то это была шутка юмора. В одиночку там ходить нельзя. Минимально должно быть 2 человека. Если тебя выкидывает в партии, которая состоит из двух и более человек, то кто-то на себе несет проклятие боссов, которых кто-то конкретно достал, в данный момент находящийся в партии. Ой, опять шучу. Но ты понял. Вдвоем и более можно, а одиночку, ни-ни.
Цитата
По достижению 200 очков навыка "Травничество" количество собираемых цветков снижается со среднего 3-6 до среднего 1-3 при сборе одних и техже цветов.
Это я уже поправил. Будет актуально после обновления.
Romarion, есть такое игровое понятие "Зажраться". Тебя послушать, так с каждого босса должны падать алмазы и сапфиры, но никак не медное золото. Такое актуально для одиночных игр, но никак не для онлайновых. Действительно хорошие вещи выбиваются редко, а не так, как ты описал ранее, по 4 шт. в неделю.
Пол: Девушка
Раса: Темный Эльф
Класс: Dark Avenger
Уровень: 24
Роза сказала что можно написать сюда.
Скажите мне кто такой вумный додумался сделать оружие +5 атака +5 Энчант??? Зачем??? Такого оружия в природе быть не должно! Всем известно энчант +5 уже включает в себя и атаку и урон. И что еще +5 атаки к нему никогда не приплюсуется. Это чтобы было красиво посмотреть что ли?
но зато как круто смотреть на столько бонусов )) ((с) Роза)
Уберите эту гадость пожалуйста. Сделайте лучше чтобы доп урон физикой складывался с основным, так вроде бывает (IMG:style_emoticons/default/huh.gif)
Не знаю было ли, больно много читать нужно... Сегодня ради шутки решили посмотреть как действует "обезоруживание". Ну и у цели, которую обезоружила пропало оружие. С концами. Вопрос: втф?Оо Просто не хочется потом оказаться в такой ситуации, что кинул обезоруживание и получил бан из-за того, что способность убитая и криво настроенная.
Пол: Девушка
Раса: Светлый Эльф
Класс: Bard
Уровень: 25
По идее оружие падает в инвентарь хозяина, а если там места нету, тогда может и пропасть. Если ничего не менялось. (IMG:style_emoticons/default/huh.gif)
Это надо поправить. Иначе срабатывает система выкладывания вещей на землю. В данном случае, так как идет бой, то диалог вызвать невозможно. Из-за этого вещь должна возвращаться в инвентарь хозяина вещи. Если такое не происходит, то либо инвентарь забит, либо вещь пропала по другой причине.
Мелкий баг на соевом поле: если в инвентаре перса уже присутствует инструмент для сбора гельбариев (например, купленный у алхимика), фермер, при выдаче квеста, второй экземпляр не выдает. В логе сообщение о передаче отсутствует. Но при сдаче квеста забирает его вместе с семенами. Конечно, можно получить железяку обратно, взяв квест повторно, но все таки...
И еще такой вопрос: семена в соевых кустах бесконечные? Я с одного(!) куста собрал 123 семечки (получил левелап, поэтому дальше не собирал), заработав при этом 1845 экспы и 6150 голда за 15 мин.
Призрак без доспехов, это не баг. Для разных квестов используется один и тот же инструмент. Дабы не городит кучу инструментов, я объединил один для нескольких квестов.
Что касается Сои, то, вероятно, у тебя хорошо развит навык поиска. Шанс сбора составляет 50%, что дает постоянную вариацию, что ты ничего не соберешь за 1 раунд. В принципе, не вижу ничего криминального в количестве опыта, а вот значение денежного вознаграждения стоило бы снизить, чтобы сбор Сои не был панацеей на первых уровнях персонажа.
Заметил несколько странностей в процессе крафта ресурсов:
1. В диалоге отсутствует пункт "спасибо, не надо", даже если компоненты для крафта кончились. 2. Каждый раз при крафте кузнец говорит "не могу", но при этом все крафтится на ура. 3. Непонятно как считается сколько еще можно скрафтить. 4. Кузнец за крафт платит игроку, хотя вроде должно быть наоборот.
Цитата(Tiron @ 13 January 2009, 19:19) [snapback]37432[/snapback]
Зависимость навыка ЮМД от уровня вещи Ограничение по классу персонажа Уровень Навык 1...4 5 5...11 10 12...19 15 20...22 20 23 25 Ограничение по расе персонажа Уровень Навык 1 5 2...4 10 5...11 15 12...19 20 20...22 25 23 30 Ограничение по характеру персонажа Уровень Навык 1 10 2...4 15 5...11 20 12...19 25 20...22 30 23 35 В случае когда ограничений несколько для вычисления ЮМД применяют ограничение, требующее больше всех ЮМД. (например если одновременно характер и раса ограничены, то будет применяться табличка для характера)
Эта информация еще актуальна? Набрал 35 юмд, не получается использовать вещь 23 уровня, ограничения которой по классу, расе и характеру.