XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
"Локальный" эффект
каким образом можно создать эффект видимый только для 1 игрока?

я думал над вариантом дамми с нужным эффектм+скил невидимости постоянной - но можно засечь детектерами =(
Старый 19.06.2010, 22:49
Doc

offline
Опыт: 63,163
Активность:
effect AddLocalEffect(string eff, player p, float x, float y) {
string s = ""
	if GetLocalPlayer() == p {
	s = eff
	}
effect e = new effect(s, x, y)
return e
}

Отредактировано DoctorGester, 20.06.2010 в 13:22.
Старый 19.06.2010, 22:54
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
учтем, спасибо!))
Старый 19.06.2010, 22:56
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
function AddLocalEffect takes string eff, player p, real x, real y returns effect
	local string s
	local effect e
		if GetLocalPlayer() == p then
			set s = eff
		endif
	set e = CreateEffectAtPoint(eff, x, y)
	return e
endfunction
поправьте если неправ
сравнивая объём записи у доктора и у меня, понимаешь, почему юзают цжасс...
по мне тот код неоптимален, не понял зачем s.
function AddLocalEffect takes string eff, player p, real x, real y returns effect
	local effect e
		if GetLocalPlayer() == p then
			set e = CreateEffectAtPoint(eff, x, y)
		endif
	return e
endfunction

Отредактировано Clamp, 20.06.2010 в 07:04.
Старый 20.06.2010, 03:13
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
Clamp, ну и откуда у тебя второй ретурн?
function AddLocalEffect takes string eff, player p, real x, real y returns effect
    local string s
    if GetLocalPlayer() == p then
        set s = eff
    endif
    return AddSpecialEffect(eff, x, y)
endfunction
И зачем вы оба создали переменную для эффекта?
Старый 20.06.2010, 03:57
JassMan
свободен
offline
Опыт: 4,193
Активность:
Что-то у вас по-моему проблемы с логикой. Уже сам напишу:

function AddLocalEffect takes string effect_name,player pl,real x,real y returns effect
if(GetLocalPlayer()==pl)then
    return AddSpecialEffect(effect_name,x,y)
endif
endfunction
Зачем вам переменная s, и зачем нужно return nothing — тоже не понятно. . .
Собственно, функцию можно было и не создавать, а напрямую в код вставлять этот if:

if(GetLocalPlayer()==pl)then
    call AddSpecialEffect(effect_name,x,y) //Ну или любая другая функция.
endif
И причём тут объём текста? После cJass он всё равно конвертируется в стандартный jass, так что компьютеру пофигу на каком языке написан код. . .

Отредактировано JassMan, 20.06.2010 в 05:18.
Старый 20.06.2010, 05:08
Clamp
Lost in space
offline
Опыт: 71,258
Активность:
JassMan:
И причём тут объём текста?
большие коды в системах или спелах как минимум просто меньше печатать руками
Clamp добавил:
Hellfim, ЗАЧЕМ тебе "s"?! она же ничего не даёт О_О а "e" для того, чтобы эффект можно было вернуть, это же ежу понятно..
Старый 20.06.2010, 07:16
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
JassMan, удачи в создании хендла только у одного игрока в сетевой игре!
Clamp, и тебе того же!
Hellfim добавил:
А эффект можно вернуть так, как это сделал я.
Hellfim добавил:
Хорошо, если быть подробнее, то моя функция создаст эффект у всех, просто у одного игрока он будет с моделькой, путь к которой задан в s, а у других будет эффект без модельки.
У вас же создается эффект только у одного игрока, что приведет к десинку у остальных.
Единственное - я забыл инициализировать s пустой строкой.
Старый 20.06.2010, 08:02
JassMan
свободен
offline
Опыт: 4,193
Активность:
Да о десинке я тоже думал, поэтому беру свои слова назад))
Старый 20.06.2010, 10:22
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:38.