Так ведь рано еще или есть другие сведения? РЯДОВОЙ КОМИТЕТА МИРНОЙ ДЕЯТЕЛЬНОСТИ (КМД) (штатный сотрудник отдела Событий и Приключений, штатный алхимик (мастер) отдела ремесленников)
кому интересно - можете пока изучить язык Питон, а также почитать темы ВОВа про создание аддонов .lua там помню у Близардов был свой туториал и хелп небольшой Нивал заявляла что аддоны будут и думаю они 100% будут на .lua КОМИТЕТ КОНТРРАЗВЕДКИ И СОБСТВЕННОЙ БЕЗОПАСНОСТИ.
насчет адонов могу поучаствовать но пока не выдет спецификции по камандам используемым в адонах рыпатся рано Здесь выжить не возможно, а умереть не сложно, но ты не преживай из ада сразу в рай!! Мне нравятся арбузы, они такиеже красные в нутри как голова!! Я знаю что я пишу с ошибками!!
если немного покопаться там где копаться нельзя по условиям пользовательского соглашения, то становится понятно какая там спецификация КОМИТЕТ КОНТРРАЗВЕДКИ И СОБСТВЕННОЙ БЕЗОПАСНОСТИ.
К ста про этот указатель координат... у всех работает? У меня не заработал все время "Неизвестное место" пишет. Убрал в скрипте инфо о карте (парам %s) и заменил ToWs -> debugCommon.ToWString. И последнее локальные координаты растянул до сотых долей (*100/32)
Code
local wstrZoneAndPos = debugCommon.ToWString(string.format("(X:%d.%02d/Y:%d.%02d)", pos.globalX, pos.localX*100/32, pos.globalY, pos.localY*100/32))
и последнее виджету компаса ("Compass") присвоил заголовок ("Title"), и теперь хинт о карте не закрывает заголовок карты.
-------------------------------------------------------------------------------- -- Запредельный СМЕРШ function UpdateXY() local pos = avatar.GetPos() local wstrLocXY = debugCommon.ToWString(string.format("X:%d.%02d/Y:%d.%02d", pos.globalX, pos.localX*100/32, pos.globalY, pos.localY*100/32)) wtLabel:SetVal( "value", wstrLocXY) end -------------------------------------------------------------------------------- function Update() local angle = -1 * mission.GetCameraDirection() + HALF_PI
wtArrow:Rotate( angle ) wtShadow:Rotate( angle )
angle = RollNumberToRange( angle - ZERO_ALPHA_ANGLE, -math.pi, math.pi ) local alpha = - ( math.cos( angle ) - 1 ) / 2 wtArrow:SetForegroundColor( { a = alpha, r = 1, g = 1, b = 1 } )
UpdateXY() -- Запредельный СМЕРШ
end -------------------------------------------------------------------------------- function ShowZoneInfo() local zone = cartographer.GetCurrentZone()
wtLabel:SetVal( "value", IsValidWs( zone.subZoneName ) and zone.subZoneName or ValidateWs( zone.zoneName ) ) UpdateXY() -- Запредельный СМЕРШ end
-------------------------------------------------------------------------------- -- EVENT HANDLERS -------------------------------------------------------------------------------- onReaction[ "compass_over" ] = function( reaction ) if reaction.active then local zone = cartographer.GetCurrentZone() local pos = avatar.GetPos()
local tooltip = { tooltip = TOOLTIP_SIMPLEDESC, name = ValidateWs( zone.allod ), desc = ValidateWs( zone.zoneName ), rect = wtCompass:GetRealRect(), [ 3 ] = { type = TOOLTIP_CONTENT.SMART_LINE, ( IsValidWs( zone.subZoneName ) and { value = zone.subZoneName, style = "header" } or nil ) } }
UpdateXY() -- Запредельный СМЕРШ
common.SendEvent( "SCRIPT_REQUEST_CONTEXT_TOOLTIP", tooltip ) else common.SendEvent( "SCRIPT_HIDE_CONTEXT_TOOLTIP", {} ) end end -------------------------------------------------------------------------------- onReaction[ "compass_pressed" ] = function( reaction ) local map = cartographer.GetCurrentMap() common.SendEvent( map and not map.isTerrain and "SCRIPT_TOGGLE_ASTRALMAP" or "SCRIPT_TOGGLE_WORLDMAP", {} ) end -------------------------------------------------------------------------------- onBase[ "EVENT_CAMERA_DIRECTION_CHANGED" ] = Update onBase[ "EVENT_SECOND_TIMER" ] = Update onBase[ "EVENT_AVATAR_CLIENT_ZONE_CHANGED" ] = ShowZoneInfo -------------------------------------------------------------------------------- -- RESOURCES SETUP -------------------------------------------------------------------------------- function RegisterEventHandlers( handlers ) for event, handler in handlers do --trace( "event = ", event ) common.RegisterEventHandler( handler, event ) end end -------------------------------------------------------------------------------- function RegisterReactionHandlers( reactions ) for reaction, handler in reactions do --trace( "reaction = ", reaction ) common.RegisterReactionHandler( handler, reaction ) end end -------------------------------------------------------------------------------- function GetWidgets() local wtFrame = mainForm:GetChildChecked( "Frame", false ) wtArrow = wtFrame:GetChildChecked( "Arrow", false ) wtShadow = wtFrame:GetChildChecked( "Shadow", false ) wtCompass = wtFrame:GetChildChecked( "Title", false ):GetChildChecked( "Label", false ) -- Запредельный СМЕРШ --wtCompass = wtFrame:GetChildChecked( "Compass", false ) -- Запредельный СМЕРШ wtLabel = wtFrame:GetChildChecked( "Title", false ):GetChildChecked( "Label", false ) end -------------------------------------------------------------------------------- -- INITIALIZATION -------------------------------------------------------------------------------- function Init() RegisterLayoutManagedAddon( { type = ADDON_TYPE_HUD, side = SCREEN_SIDE_TOP } ) RegisterEventHandlers( onBase ) RegisterReactionHandlers( onReaction ) GetWidgets() end -------------------------------------------------------------------------------- Init()
Так, я так понимаю api еще нет, а на офф форуме отсутствуют темы по созданию аддонов даже приблизительно напоминающие те которые были на збт? или я плохо искал? Фигово это все СОЛДАТ
В общем функции по форматированию строк не нашел... пришлось координаты вывести в подсказку, но зато работает:
меняем файл: \\Allods Online\data\Interface\Ingame\ContextCompass3\ScriptCompass.lua на то что в спойлере: там в onReaction[ "compass_over" ] добавляеся кусочек и также в виджетах подменяем ссылку на лэйбу местности
-------------------------------------------------------------------------------- function Update() local angle = -1 * mission.GetCameraDirection() + HALF_PI
wtArrow:Rotate( angle ) wtShadow:Rotate( angle )
angle = RollNumberToRange( angle - ZERO_ALPHA_ANGLE, -math.pi, math.pi ) local alpha = - ( math.cos( angle ) - 1 ) / 2 wtArrow:SetForegroundColor( { a = alpha, r = 1, g = 1, b = 1 } ) end -------------------------------------------------------------------------------- function ShowZoneInfo() local zone = cartographer.GetCurrentZone()
wtLabel:SetVal( "value", IsValidWs( zone.subZoneName ) and zone.subZoneName or ValidateWs( zone.zoneName ) ) end
-------------------------------------------------------------------------------- -- EVENT HANDLERS -------------------------------------------------------------------------------- onReaction[ "compass_over" ] = function( reaction ) if reaction.active then local zone = cartographer.GetCurrentZone()
local tooltip = { tooltip = TOOLTIP_SIMPLEDESC, name = ValidateWs( zone.allod ), desc = ValidateWs( zone.zoneName ), rect = wtCompass:GetRealRect(), [ 3 ] = { type = TOOLTIP_CONTENT.SMART_LINE, ( IsValidWs( zone.subZoneName ) and { value = zone.subZoneName, style = "header" } or nil ) } }
-- Запредельный СМЕРШ local pos = avatar.GetPos() local wstrLocX = common.FormatFloat( pos.globalX+pos.localX/32, "%.2f") local wstrLocY = common.FormatFloat( pos.globalY+pos.localY/32, "%.2f") tooltip [ 4 ] = { type = TOOLTIP_CONTENT.SEPARATOR, { active = true } } tooltip [ 5 ] = { type = TOOLTIP_CONTENT.SMART_LINE, { value = wstrLocX , style = "Epic" } } tooltip [ 6 ] = { type = TOOLTIP_CONTENT.SMART_LINE, { value = wstrLocY , style = "Epic" } } -- end Запредельный СМЕРШ
common.SendEvent( "SCRIPT_REQUEST_CONTEXT_TOOLTIP", tooltip ) else common.SendEvent( "SCRIPT_HIDE_CONTEXT_TOOLTIP", {} ) end end -------------------------------------------------------------------------------- onReaction[ "compass_pressed" ] = function( reaction ) local map = cartographer.GetCurrentMap() common.SendEvent( map and not map.isTerrain and "SCRIPT_TOGGLE_ASTRALMAP" or "SCRIPT_TOGGLE_WORLDMAP", {} ) end -------------------------------------------------------------------------------- onBase[ "EVENT_CAMERA_DIRECTION_CHANGED" ] = Update onBase[ "EVENT_SECOND_TIMER" ] = Update onBase[ "EVENT_AVATAR_CLIENT_ZONE_CHANGED" ] = ShowZoneInfo -------------------------------------------------------------------------------- -- RESOURCES SETUP -------------------------------------------------------------------------------- function RegisterEventHandlers( handlers ) for event, handler in handlers do --trace( "event = ", event ) common.RegisterEventHandler( handler, event ) end end -------------------------------------------------------------------------------- function RegisterReactionHandlers( reactions ) for reaction, handler in reactions do --trace( "reaction = ", reaction ) common.RegisterReactionHandler( handler, reaction ) end end -------------------------------------------------------------------------------- function GetWidgets() local wtFrame = mainForm:GetChildChecked( "Frame", false ) wtArrow = wtFrame:GetChildChecked( "Arrow", false ) wtShadow = wtFrame:GetChildChecked( "Shadow", false ) wtCompass = wtFrame:GetChildChecked( "Title", false ):GetChildChecked( "Label", false ) -- Запредельный СМЕРШ --wtCompass = wtFrame:GetChildChecked( "Compass", false ) -- Запредельный СМЕРШ wtLabel = wtFrame:GetChildChecked( "Title", false ):GetChildChecked( "Label", false ) end -------------------------------------------------------------------------------- -- INITIALIZATION -------------------------------------------------------------------------------- function Init() RegisterLayoutManagedAddon( { type = ADDON_TYPE_HUD, side = SCREEN_SIDE_TOP } ) RegisterEventHandlers( onBase ) RegisterReactionHandlers( onReaction ) GetWidgets() end -------------------------------------------------------------------------------- Init()
В общем функции по форматированию строк не нашел... пришлось координаты вывести в подсказку, но зато работает:
меняем файл: \\Allods Online\data\Interface\Ingame\ContextCompass3\ScriptCompass.lua на то что в спойлере: там в onReaction[ "compass_over" ] добавляеся кусочек и также в виджетах подменяем ссылку на лэйбу местности
выглядит так: (первая координата х, ниже у)
Не тратте время, после запуска игры все пере пишется по новой,