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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

Как сделать свой аддон


SLA

Рекомендуемые сообщения

В клиенте есть папка с примерами простейших аддонов ищи SampleReactionHandler

Ссылка на комментарий
Поделиться на другие сайты

Подскажите в чём ошибка тут? При нажатии на кнопку никакой реакции, даже инициализация не работает, в логах пусто

--------------------------------------------------------------------------------
-- GLOBALS
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
-- REACTION HANDLERS
--------------------------------------------------------------------------------

-- "execute"
function OnReactionExecute( params )
LogInfo( "InventarPurge function OnReactionExecute" )
	n = avatar.GetLootBagSlotCount()
	items = avatar.GetInventoryItemIds()
	PurifierKol = 0
	for i = 0, n-1 do
		if IsPurifier( items[i] )
			PurifierKol = itemLib.GetInBagStackCount( items[i] )
			PurifierId = items[i]
			LogInfo( "InventarPurge PurifierId = done" )
		end
	end
	for i = 0, n-1 do
		if itemLib.IsCursed( items[i] )
			LogInfo( "InventarPurge Cursed = done" )
			if PurifierKol > 0
				avatar.PurifyItem( items[i], PurifierId )
				PurifierKol = PurifierKol - 1
				LogInfo( "InventarPurge NonCursed = done" )
			end
		end
	end
end

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
function Init()
	LogInfo( "InventarPurge load" )

	common.RegisterEventHandler( OnReactionExecute, "execute" ) 
	
end
--------------------------------------------------------------------------------
Init()
--------------------------------------------------------------------------------

Ссылка на комментарий
Поделиться на другие сайты

Ты регистрируешь реакцию на событие вместо реакции на нажатие.

Т.е. вместо 

              common.RegisterEventHandler( OnReactionExecute, "execute" ) 

должно быть

              common.RegisterReactionHandler( OnReactionExecute, "execute" ) 

Ссылка на комментарий
Поделиться на другие сайты

Скажите пожалуйста как отследить открыта\закрыта ли сумка инвенторя(какая функция применяется ил какие константы есть), сам искал не нашёл=((

Ссылка на комментарий
Поделиться на другие сайты

Скажите правильно ли я реализовал привязку к персонажу и\или к гильдии

--------------------------------------------------------------------------------
-- GLOBALS
--------------------------------------------------------------------------------

Global( "TableGuilds", nil )
Global( "TableOfCharacters", nil )
Global( "Verification", false )

--------------------------------------------------------------------------------
-- REACTION HANDLERS
--------------------------------------------------------------------------------

---Таблица разрешённых гильдий
TableGuilds = {}
TableGuilds[1] = "ГильдияКакаяТо"

---Таблица разрешённых персонажей
TableOfCharacters = {}
TableOfCharacters[1] = "Перонаж1"
TableOfCharacters[2] = "Персонаж2"

--------------------------------------------------------------------------------
-- INITIALIZATION
--------------------------------------------------------------------------------
---Проверка начальной инициализации
function OnInit()
	if guild.GetName() in TableGuilds or avatar.GetId() in TableOfCharacters then
		Verification = true
	end
end
--------------------------------------------------------------------------------
OnInit()
--------------------------------------------------------------------------------

а в другом скрипте 

if Verification then
   Init()
else
---Так ли пишится сообщение в чат???
   common.LogInfo( "common", "Вы не можете использовать данный адонн, свяжитесь с афтором аддона по этому вопросу" )
end

Помогите пожалуйста!!!!

Ссылка на комментарий
Поделиться на другие сайты

Скажите правильно ли я реализовал привязку к персонажу и\или к гильдии

Неправильно. Начнем с того, что переменные сделаем локальными.

Global( "TableGuilds", nil )

->

local TableGuilds

потом прочитаем про массивы и циклы

вообще не парился по этому поводу, кто шарит - обойдут привязку за минуту.

вот привязка аддонов с этого сайта - другое дело)

Ссылка на комментарий
Поделиться на другие сайты

спасибо

а только таблицы локальными?

ведя я Verification пытаюсь передать в другой скрипт.

а что ещё неправильно?

я потом прогоню файлы через компилятор, я пытался декомпилировать luac, не получилось, надеюсь и у других не получится с моими файлами

Изменено пользователем GRuSHa
Ссылка на комментарий
Поделиться на другие сайты

Если переменная используется в другом lua файле, то она должна быть глобальной.

Тут на самом деле дофига ошибок)

Запускать Init при эвенте EVENT_AVATAR_CREATED или EVENT_GUILD_APPEARED

Информация guild.GetName() появляется по эвенту EVENT_GUILD_APPEARED

avatar.GetId() выдает id аватара, а не его имя

нужно сравнивать строки преобразовывая из WString функцией userMods.FromWString()

массивы пробегать циклами к примеру for k,v in pairs(TableGuilds) do

p.s. да хоть 10 раз закомпилируй, обойду твою защиту)

Ссылка на комментарий
Поделиться на другие сайты

это получается нужно запускать Init через common.RegisterEventHandler или как проверка через if ?

А с avatar.GetId можно ли его потом прогнать через remort.GetMainName в описании написано "Возвращает имя основного персонажа, если игрок является альтернативным персонажем."

про циклы понятно

 

А как тогда защиту строить?

И скажите пожалуйста как лучше сообщения в чат отправлять (можно просто ссылочкой на тему откуда взять инфу)

Ссылка на комментарий
Поделиться на другие сайты

В чат писать можно?

 

ищи "LogToChat"

Изменено пользователем look_at_you_
Ссылка на комментарий
Поделиться на другие сайты

В смысле не писать другим игрокам а выводить сообщения аддона в чат к примеру "Вам нельзя использовать аддон, свяжитесь с автором по этому поводу" 

Изменено пользователем GRuSHa
Ссылка на комментарий
Поделиться на другие сайты

remort.GetMainName емнип работает только если переродок неанонимен.

 

Писать в чат - вставлять в контейнер чата свои WidgetTextView. Но несколько геморно в связи с механикой работы игрового чата.

Ссылка на комментарий
Поделиться на другие сайты

ага, понял, спасибо! А по поводу вот этого что скажете?

это получается нужно запускать Init через common.RegisterEventHandler или как проверка через if ?
 
Ссылка на комментарий
Поделиться на другие сайты

Всё я со всем разобрался, ну её эту привязку сделаю для людей=))

Скажите только как сделать так чтобы  LogToChat в чате по русски писал, в какой кодировке сохранять? Или как текст преобразовать?

Ссылка на комментарий
Поделиться на другие сайты

local toWS=userMods.ToWString
 
function LogToChat(text) -- вывод текста в чат
if not wtChat then ---- 2.0.06.13 [26.05.2011]
wtChat = stateMainForm:GetChildUnchecked("ChatLog", false)
wtChat = wtChat:GetChildUnchecked("Container", true)
local formatVT = "<html fontname='AllodsFantasy' fontsize='14' shadow='1'><rs class='color'><r name='addon'/><r name='text'/></rs></html>"
valuedText:SetFormat(toWS(formatVT))
end
if wtChat and wtChat.PushFrontValuedText then
if not common.IsWString(text) then text = toWS(text) end
valuedText:ClearValues()
valuedText:SetClassVal( "color", "LogColorYellow" )
valuedText:SetVal( "text", text )
valuedText:SetVal( "addon", toWS("AddonName: ") )
wtChat:PushFrontValuedText( valuedText )
end
end

вместо valuedText:SetVal( "addon", toWS("AddonName: ") ) можно сделать 

valuedText:SetVal( "addon", toWS(common.GetAddonName()..": ") )

или поменять AddonName на имя своего аддона.

вызов LogToChat("Какой то текст")

 

По поводу инициализации можно сделать например так

 

if avatar.IsExist() then  -- если аватар найден
    Init() -- запускаем
end
  common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED") -- также подписываемся на эвент создания аватара, если первый запуск не сработал)

Имя аватара:

local name=object.GetName(avatar.GetId()) -- имя WString, для сравнения нужно использовать userMods.FromWString
Ссылка на комментарий
Поделиться на другие сайты

По поводу инициализации можно сделать например так

 

if avatar.IsExist() then  -- если аватар найден
    Init() -- запускаем
end
  common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED") -- также подписываемся на эвент создания аватара, если первый запуск не сработал)
Лучше так:

if avatar.IsExist() then  -- если аватар найден
    Init() -- запускаем
else
  common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED") -- также подписываемся на эвент создания аватара, если первый запуск не сработал)
end
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

помогите пожалуйста, у меня не работает 

conditions = avatar.GetItemDressConditions( itemId )

if conditions.sysFirstCondition ~= "ENUM_DressResult_Success" then
if conditions.failedConditions[ "ENUM_DressResult_WrongChararacterClass" ] then
LogInfo( "Неподходящий класс" )
end
end

этот код написан в справке.

путём расстановки LogInfo узнал что if conditions.sysFirstCondition ~= "ENUM_DressResult_Success" then работает нормально,а if conditions.failedConditions[ "ENUM_DressResult_WrongChararacterClass" ] then вообще не работает, что нужно изменить?

Ссылка на комментарий
Поделиться на другие сайты

ахахахаха, спасибо=)

скрин страницы справки, которая вместе с клиентом идёт https://drive.google.com/file/d/0BxqMt1CtJUKlalRpRFpGR2NZRlE/view?usp=sharing

это нормально вообще? там ENUM_DressResult_WrongChararacterClass написано

Ссылка на комментарий
Поделиться на другие сайты

подскажите ещё в чём разница между

ENUM_ItemSource_FixedDrop и ENUM_ItemSource_WorldDrop

и между

ENUM_ItemSource_Crafted и ENUM_ItemSource_Conjured

Ссылка на комментарий
Поделиться на другие сайты

а переводчик?

фиксированное выпадение и мировое выпадение

крафтовый и зачарованный

 

сам не знаю, что это, только тест, только грабли)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

гайз, хотелось бы узнать: возможно ли поменять текстуры оружия в аллодах местами посредством мода, ну или аддона?

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

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

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