function AddLocalEffect takes string eff, real x, real y, player pl returns effect
local string e = ""
if (GetLocalPlayer() == pl) then
set e = eff
endif
return AddSpecialEffect(e, x, y)
endfunction
function Trig_TTTT_Actions takes nothing returns nothing
local real x = 0
local real y = 0
local integer k=0
local unit u=null
set u=h[0]
if GetLocalPlayer()==Player(0) then
set x=GetMouseX()// координаты мыши на экране у локального игрока
set y=GetMouseY()// в дебаг выводит всё верно
endif
if GetUnitAbilityLevel(u,'A001')>=1 and IsUnitSelected(u,GetOwningPlayer(u)) then
if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then //1920*1080
call BJDebugMsg("1")
call AddLocalEffect("war3mapImported\\RedRange.mdl",GetUnitX(u),GetUnitY(u),GetOwningPlayer(u)) // создание эффекта вызывает десинх
endif
endif
set u=null
endfunction
Комментарии на коде, код создаёт спецэффект, при наведении на способность Q, код упростил до безумия даже воткнул болванчика из статьи про гетлокал плеера, думал у меня что не так, нет, просто десинхает второго игрока =(
Принятый ответ
попробуй что я сделал)
GetMouseX() не может вызывать десинхрон, т.к не создает хендл
Десинхронило потому что ты делал условие if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then
на машинах других игроков X был равен 0 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
GetMouseX() не может вызывать десинхрон, т.к не создает хендл
Десинхронило потому что ты делал условие if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then
на машинах других игроков X был равен 0 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
set x=GetMouseX()// координаты мыши на экране у локального игрока
set y=GetMouseY()// в дебаг выводит всё верно
endif
pro100master:
Отредактирован Hodor
И не юзай IsUnitSelected, оно на некоторых машинах выдает неправильное значение и может случиться десинхрон
UrsaBoss, а IsUnitSelected, обязательное условие, и я не пойму а как я игрока передам в вашу функцию?, я снова еще больше не понимаю!
Отредактирован Hodor
вот пример:
переменная X имеет значение 0
далее
на машинах синего и остальных игроков X будет равен 0
а на машине красного игрока X будет равен 1
в самой функции там будет условие:
Отредактирован Hodor
Отредактирован Hodor
GetMouseX() не может вызывать десинхрон, т.к не создает хендл
Десинхронило потому что ты делал условие if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then
на машинах других игроков X был равен 0 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
Отредактирован PT153
Отредактирован Берги
И этот код вообще просто огрызок от большой системы, потому что именно здесь у меня вопросы были, но ответ уже дан, всё работает, осталось адаптировать систему под мониторы и готово, мы получили события наведения курсора на панель приказов, я пока даже не знаю зачем мне это
Я уже год на нем пишу и могу уверенно сказать:
на cJass код пишется намного удобнее и быстрее
имхо - на обычном JASS дохера ненужных букв пишется