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 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
32
5 лет назад
0
UrsaBoss, да это тоже самое только в другой обложке, ок я попробую, сделаю всё что вы написали
2
18
5 лет назад
Отредактирован Hodor
2
попробуй что я сделал)
GetMouseX() не может вызывать десинхрон, т.к не создает хендл

Десинхронило потому что ты делал условие if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then
на машинах других игроков X был равен 0 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
Принятый ответ
0
32
5 лет назад
0
UrsaBoss, Я ничего не понял, но оно работает!, спасибо
function AddLocalEffect takes string eff, real x, real y, boolean b returns effect
	if not b then
		set eff = ""
	endif
	return AddSpecialEffect(eff, 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
local boolean b=false
set u=h[0]
if GetLocalPlayer()==Player(0) then
set x=GetMouseX()// координаты мыши на экране у локального игрока
set y=GetMouseY()// !!!!!
if GetUnitAbilityLevel(u,'A001')>=1 and IsUnitSelected(u,GetOwningPlayer(u)) then
if x>=1485 and x<=1485+64 and y>=1000 and y<=1064 then //1920*1080
set b=true
endif
endif
endif
//call BJDebugMsg("1")
call DestroyEffect(AddLocalEffect("war3mapImported\\RedRange.mdl",GetUnitX(u),GetUnitY(u),b)) // вот так работает

set u=null
endfunction
2
28
5 лет назад
Отредактирован PT153
2
и я не пойму а как я игрока передам в вашу функцию?
Да что не понятного, нужно передать boolean.
call AddLocalEffect(path, x, y, GetLocalPlayer() == Player(0))
У красного b будет равно true, у остальных false. not b у красного будет ложью, у остальных правдой, потому всем кроме красного будет поставлена пустая строка как путь к эффекту.

local unit u=null
local boolean b=false
set u=h[0]
И зачем это лишнее присваивание u = null вначале?
0
32
5 лет назад
Отредактирован Берги
0
PT153, уже всё получилось спасибо, я понял, PT153:
И зачем это лишнее присваивание u = null вначале?
Это пережитки прошлого из cJass где иногда если переменной не приписать нулл, то парсер будет ругаться на несуществующую переменную, я на чистый jass не давно перешёл, много вредных привычек осталось.
И этот код вообще просто огрызок от большой системы, потому что именно здесь у меня вопросы были, но ответ уже дан, всё работает, осталось адаптировать систему под мониторы и готово, мы получили события наведения курсора на панель приказов, я пока даже не знаю зачем мне это
0
18
5 лет назад
0
Bergi_Bear, у тебя наверное старый cJass был.
Я уже год на нем пишу и могу уверенно сказать:
на cJass код пишется намного удобнее и быстрее
имхо - на обычном JASS дохера ненужных букв пишется
0
32
5 лет назад
0
UrsaBoss, я 5 лет на cJass писал, и даже не знаю об этом, а потом оказалось что надо call set then в каждую дырку писать, ну ничего уже привык XD
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.