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

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

DarkMaster

Пользователь
  • Постов

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

  • Посещение

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

  1. 4. А хз как - id спелла я беру из слота акшен бара - поместив абилку в слот - можно взять инфо по этому слоту и от него можно взять ид спелла. Смотри в первом посте там пример есть ....
  2. Очень нужно проверять что либо по имени - напрмиер если спелл = "СуперСпелл" то .... мои поптыки как либо это реализовать не увенчались успехом. Можно получить имя спелла, но если в условии прописывать его то ничего не происходит. Возможно кто то сталкивался и нашел решение этой проблемы. Такая же ситуация с Баффами\Дебафами. Если увас есть решение поделитесь плиз.
  3. Да это я понял - но это как раз и не удобно. Напрмиер в ВОВ АПИ - можно взеять СпеллИнфо - как по имени спелла так и по его ИД, а ИД в свою очередь получить из СпеллБука - спомощью опять же имени спелла. Вообщем буду копать СпеллБук АО - мож че найду. Проблема с Бафами\Дебафами - актуально просто жуть как *))))
  4. Вот пару вопросв сразу на вскидку: 1. Баффв, Дебаффы - я нашел как получить баффы\дебаффы, но не понял как проверить тот ли это бафф\дебафф который мне нужен. Может кто то уже решил это проблему ? Получение баффа\дебаффа local buff buff = unit.GetBuff( avatar.GetTarget(), 0 ) if buff then if buff.isPositive == false then -- это бафф иначе дебафф if buff.name == "Супер бафф" then -- сравнение по имени неработает 8((( end end end 2. Как получить SpellID - я нашел только способ через ActionBar, но это не удобно, что бы взять инфу требуеться ложить спелл в слот. Как получить напрямую без использования ActionBar ? local ActionSlotInfo0 = GetActionInfo( 0 ) -- функци описанна в нутри ScriptContextActionbar.lua ActionSlotInfo0.id -- это id спелла. *)))
  5. Я заметил что народу - который пишет становитсья все больше, но все варяться в собственном соку *))) Это не дело товарищи, давайте делиться опытом - того что нарыли. 1. Данные. В АО - данные часто имеют структурированный вид, в отличии от ВОВ в которой любая функция всегда возврашает просто параметры, что к с лову удобнее нежели структурный вид возврата данных. Данные всегда представленны как обычная структура в любом из языков программирования, но возможны структуры с вшитыми массивами данных. Как поянть что мне нужно для работы ? Как уже приводилось в одном из постов выводить информацию о структурах данных можно выводить в user.cfg ( AllodsOnline\Personal\user.cfg ). И так структура состоит из - имени структуры, переменных, саб-таблиц, таблиц массивов. Срутктура описания данных: table_begin ИмяСтурктуры table_begin data имя_переменой1 = значение имя_переменой2 = значение имя_переменой3 = значение table_begin ИмяСабТаблицы имя_переменой1 = значение имя_переменой2 = значение имя_переменой3 = значение table_end ИмяСабТаблицы int_keys_begin ИмяДатыМассива table_begin 0 имя_переменой1 = значение имя_переменой2 = значение table_end 0 table_begin 1 имя_переменой1 = значение имя_переменой2 = значение table_end 1 int_keys_end ИмяДатыМассива table_end data table_end ИмяСтурктуры Думаю тут все понятно *))). Обратите внимание на int_keys_begin ИмяДатыМассива - это обьявление таблицк в виде массива, где table_begin i ... table_end i описание элемента этого массива. В основном структуры вам возврашают после своей работы различные функции GetЧтоТо(), иногда они передаються в функции обработчики событий - в виде params - параметров. Как считывать данные : local MyData = GetЧтоТо() if MyData.имя_переменой1 == true then GO() end if MyData.ИмяСабТаблицы.имя_переменой2 == true then SuperGO() end; local size = GetTableSize(MyData.ИмяДатыМассива) for i = 0, size - 1 do local MyDataElement = MyData.ИмяДатыМассива if MyDataElement.имя_переменой1 == true then MegaGo() end end Думаю тоже все понятно. Возможно есть что-то еше, я пока не сталкивался. Ну а теперь больше конкретики. 1. Как узнать можно ли всели условия спелла удовлетворительны ( дальность, наличие оружия в руке и т.д. ) function MyAddon_IsSpellRedyForUse( myspellid ) local spellInfo = avatar.GetSpellObjectInfo( myspellid ) - берем инфо о спеле if spellInfo then - если инфо есть то можно работать далее spellInfo.requirements = avatar.GetSpellRequirements( spellInfo.id ) - считываем требования для спелла local AllReqIsSuccess = false -- переменная флаг local ValidReqCount = 0 -- счетчик удов.требования --requirements.targetConditions -- это таблица где храняться требования для цели ( например "не может быть большим" --requirements.casterConditions -- это для игрока ( цель далеко и т.д) local size = GetTableSize( spellInfo.requirements.casterConditions ) local sizeChilds = 0 for i = 0, size - 1 do local req = spellInfo.requirements.casterConditions - берем i-ое требование -- иногда у некоторых спеллов требования расположенны не в основной таблице а в доп. -- таблице childs, что мы тут и обрабатываем if GetTableSize(req.childs) > 0 then sizeChilds = GetTableSize(req.childs) for j = 0, sizeChilds - 1 do local reqChild = req.childs[j] if ( reqChild.success == true ) then -- если требование удовлетворительно , то увеличиваем счетчик удов.требования ValidReqCount = ValidReqCount + 1 end end else -- обработка для спеллов у которых нет childs if ( req.success == true ) then -- если требование удовлетворительно , то увеличиваем счетчик удов.требования ValidReqCount = ValidReqCount + 1 end end end -- Возможно тут не совсем правельно написано, но из наблюдений если есть childs -- то нету норм требований и наоборот, возможно есть случаи когда есть и то и то if sizeChilds > 0 then -- если есть childs - проверяем по ним if ValidReqCount == sizeChilds then - если счетчик удов.требований = размеру требований, значит все требования в норме AllReqIsSuccess = true end elseif ValidReqCount == size then - если счетчик удов.требований = размеру требований, значит все требования в норме AllReqIsSuccess = true end -- Дебаг вывод данных --local section = {} --for i,v in spellInfo do -- section [ i ] = v --end --common.SetGlobalConfigSection( "SPELLINFO", section ) local CurrentMana = unit.GetMana( avatar.GetId() ) -- считываем ману игрока if spellInfo.cooldownRemainingMs == 0 and AllReqIsSuccess == true and CurrentMana.mana>=spellInfo.currentValues.manaCost then -- главное условие проверяем кулдаун, требования, и ману return true end end return false end Спрашивайте, пишите, дополняйте .... P.S. Больщая просьба - не флудить, не оффтопить, не засерать пост. Давайте сделаем удобный мини справочник в котором можно быстро найти полезные наработки.
  6. *)))) Мелкомягкие - монополисты - могут вытворять что хотят, все равно будут юзать винду - альтернатив нету ( для широкого круга пользователей всех слоев и мастей ). А вот у Нивала - конкурентов море - путь к финансовому благополучию - лежит в победе над конкурентами. Конечно мало вероятно что АО - догонит или пергонит ВОВ. Но на уровень нормального онлайн проекта может вылезти - потому они будут нас слушать. Потому что тянут игровой проект - хардкорщики и фанаты, остальные бабло-мясо дойное. На этапе станавления онлайн проект должен привлеч как можно больше хардкоршиков и фанатов - заинтерсовав их. Они сформируют костяк комьюнити и помогут вылезать проект, а далее пойдет процес аказуаливания - дабы проект был доступен широким массам и более играбельным. Вот тут кстати кроеться самая большая опасность - если перегнут то проект сдуеться, не догнут, сдуеться потому что быдло будет валиться пачками от папок - золотая середина и очень продуманое аказуаливание - залог успеха. Пока что тока Близзам удаеться держать марку *)))))
  7. Блин я нету пхп сервака на работе ( даи дома тож нету ) 8(((( а тобы стестанул, прям щас - аж руки чещуться *)))))
  8. Ага давайте сидеть молчать и все будет тип топ *))))) Хорошая стратегия *)))) Игнорировать комьюнети при массовом выражение пожелания - ни один разработчик онлайн проекта не будет ( в здравом уме ).
  9. Да да gsomgsom - на Си нада *))) Настроеный ПХП сревер - далеко не у всех есть ! *))))) А ктонить уже пробовал добавить произволный шаблон ? Например для выделения другим цветом гилдейцов по рагну ? или для добавления просто "Хелло <Имя>" при в ходе в игру ? если да ток как делать ?
  10. Тварищи кодеры, да и просто желающие получить нормальные аддончеги к АО, поддержите пост - добавте строчку от себя , чем больше нас за правое дело выступит тем быстрее мы получим то что хотим - возможность нормально писать аддоны к АО !!! вот ссылка: http://forum.astrumnival.com/showthread.php?t=42040 - Нивал уже положительно ответил на просьбу дать АПИ , просто их нада додовить - обьяснить почему им это нужно не меньша ( а больше ) чем нам ! Аргументированно, доступно, вежливо. Черканите постиг, поставте +1 и т.д. !!!
  11. Спасибо - темы приведены прочел , смысл понял. Плохо что нельзя делать новые аддоны - это большой косяк. Я пишу Аддоны для ВОВ - там функционал в разы более широк *))). Как я понял вывести ноформацию можно только в виде числа или шаблонизированого текста - в битого в пак файл. Если вы решите проблему запаковки пак файла - то для вывода чего то например в чат - я должен буду дописать в пак свой шаблон и выводить его по ключю-имени. Я правельно понял идею работы с пак-файлом ?
  12. Вопрос такой - можно ли создать совершено новый аддон, то есть - не модифицировать уже имеющиеся файлы а создать совой ? На пример HelloWorld ? Или можно только править уже имеюшиеся файлы ? Если можно то как иммено это сделать. Я пытался сделать так: 1. Создал отдельный архив - в нем папку Interface\HelloWorld\HelloWorld.lua - и перенес туда часть из Interface_old\Ingame\AncestralCombatLog\ScriptCombatLog.lua - почистил лишнее и оставил тока инициализацию и обработку события onEvent[ "event_unit_damage_received" ] = function( eventParams ) UnitDamageReceived( eventParams ) local valuedText = common.CreateValuedText() local spellName = avatar.GetSpellInfo( eventParams.spellId ).name valuedText:SetVal( "spell_name", spellName ) AddNewText( valuedText, FLAG_COMBAT ) end должен для теста выводить имя каста при получении дамага. Но ниче не происходит ... проблема в коде или в том что нельзя делать отдельные аддоны ??? Вообше изначально хотел сделать аддон который просто выводит Hello NikName при логоне в игру - но как вывести строку произвольную так и не понял *)))
×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования