polarfox0

Событие после телепортации

13 posts in this topic

Подскажите, пожалуйста, как навеситься на завершение телепортации? То есть каждый раз после телепортации, чтобы вызывался обработчик.

Share this post


Link to post
Share on other sites

Может проще привязаться к смене карты?

EVENT_AVATAR_MAP_CHANGED

Share this post


Link to post
Share on other sites

что-то не так 

		local zoneSysName = zoneInfo.sysZoneName;--Airin
		common.LogInfo('common',zoneSysName);

телепорт с айрина на асаэ по камню - в логах:

[00:23:26]Info: addon MyTest(1448910652): runAddon
[00:23:26]Info: addon MyTest(1448910652): Airin
[00:23:27]Info: addon MyTest(1448910652): runAddon
[00:23:27]Info: addon MyTest(1448910652): Airin

Share this post


Link to post
Share on other sites
1 час назад, polarfox0 сказал:

что-то не так 


		local zoneSysName = zoneInfo.sysZoneName;--Airin
		common.LogInfo('common',zoneSysName);

телепорт с айрина на асаэ по камню - в логах:

[00:23:26]Info: addon MyTest(1448910652): runAddon
[00:23:26]Info: addon MyTest(1448910652): Airin
[00:23:27]Info: addon MyTest(1448910652): runAddon
[00:23:27]Info: addon MyTest(1448910652): Airin

zoneInfo откуда

Share this post


Link to post
Share on other sites
1 минуту назад, logg сказал:

zoneInfo откуда
local zoneInfo = cartographer.GetCurrentZoneInfo()

Share this post


Link to post
Share on other sites
Цитата

zoneInfo откуда

function isAirinLoc()
    local zoneInfo = cartographer.GetCurrentZoneInfo();
    if(zoneInfo) then
        local zoneSysName = zoneInfo.sysZoneName;--Airin
        common.LogInfo('common',zoneSysName);
        if(compareString(zoneSysName, airinSysName)) then
                common.LogInfo('common',zoneSysName);
            return true
        end
    end
    return false
end

Share this post


Link to post
Share on other sites

Всё еще сложнее 

sysZoneName служебное название зоны, лучше использовать zoneName но оно WString 
тогда функцию compareString нужно менять

может так будет проще?

if userMods.FromWString(cartographer.GetCurrentZoneInfo().zoneName)=="Осколки Айрина" then
    LogInfo()
end

 

Share this post


Link to post
Share on other sites
Цитата

тогда функцию compareString нужно менять

ее то менять как раз не нужно - она для того и писалась, чтоб при любых инпутах сравнивать в стрингах.
придется менять константу с названием айрина. и делать для нее локализацию. сейчас попробую

Share this post


Link to post
Share on other sites
3 минуты назад, polarfox0 сказал:

ее то менять как раз не нужно - она для того и писалась, чтоб при любых инпутах сравнивать в стрингах.
придется менять константу с названием айрина. и делать для нее локализацию. сейчас попробую

common.CompareWString( text1, text2 )

Share this post


Link to post
Share on other sites
Цитата

common.CompareWString( text1, text2 )

эта сравнивает только Wstring

моя может чуть тяжелее, зато приводит все к одинаковому типу - так надежнее)

Share this post


Link to post
Share on other sites
Posted (edited)

 

[01:58:52]Info: addon MyTest(1448910652): runAddon
[01:58:52]Info: addon MyTest(1448910652): Неведомые земли
[01:58:52]Info: addon MyTest(1448910652): Осколки Айрина

 

не выходит. он все равно запускает обработчик до телепортации

 

Edited by polarfox0

Share this post


Link to post
Share on other sites
1 час назад, polarfox0 сказал:

 

[01:58:52]Info: addon MyTest(1448910652): runAddon
[01:58:52]Info: addon MyTest(1448910652): Неведомые земли
[01:58:52]Info: addon MyTest(1448910652): Осколки Айрина

 

не выходит. он все равно запускает обработчик до телепортации

 

EVENT_AVATAR_CLIENT_ZONE_CHANGED

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now