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

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

Результаты опроса: Мнения
Отлично! Меня этот вопрос давно мучает! 7 53.85%
И ты думашь это понятно новичкам? 1 7.69%
Если оптимизировать в джаз будет нехило 1 7.69%
Мне это никогда не понадобится 4 30.77%
Голосовавшие: 13. Вы еще не голосовали в этом опросе

Ответ
 
Ablare

offline
Опыт: 2,315
Активность:
Как сделать юнита видимым токо для одного игрока
Начну с того. что ничего сложного в этой системе (требуется токо 1 простой джас тригерр)

Создание системы


Все основанно на заклинании блэйд мастера (далее БМ) ;) : -Иллюзии
I Триггер (он не внесен во второй из-за появляющихся лагов при объединении)
1. Создаем БМ с этим самым спеллом
Триггеры
2. Создаем триггер отчисляющий этот спелл, в нем:
1) Задаем значение Нашего юнита (у меня "Caster")
2) Берем всех союзников нашего юнита(чтобы не спутать их с врагами :)) и заносим в группу (Players_Allies)
3) Удаляем нашего игрока из этой группы
4) Выделяем всех игроков в "Players_Allies" и ставим ВЗАИМНЫЙ!!! союз без "ShareVision"
ВСЕ !! один триггер готов

II Триггер
Код:
function Trig_Mirror_Image_Art_Conditions takes nothing returns boolean
    if ( not ( IsUnitIllusionBJ(GetSummonedUnit()) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_Mirror_Image_Art_Actions takes nothing returns nothing
    set udg_Summon = GetSummonedUnit()
    call TriggerSleepAction( 1.00 )
    call SetUnitVertexColorBJ( udg_Summon, 1.00, 1.00, 1.00, 100.00 )
    call SetUnitPositionLocFacingBJ( udg_Summon, GetUnitLoc(udg_Caster), GetUnitFacing(udg_Caster) )
    call UnitAddAbilityBJ( 'Aloc', udg_Summon )
endfunction

function Trig_Mirror_Image_Art_Func001001002001 takes nothing returns boolean
    return ( GetOwningPlayer(GetFilterUnit()) == ForcePickRandomPlayer(udg_Players_Allies) )
endfunction

function Trig_Mirror_Image_Art_Func001001002002 takes nothing returns boolean
    return ( GetFilterUnit() != udg_Summon )
endfunction

function Trig_Mirror_Image_Art_Func001001002 takes nothing returns boolean
    return GetBooleanAnd( Trig_Mirror_Image_Art_Func001001002001(), Trig_Mirror_Image_Art_Func001001002002() )
endfunction

function Trig_Mirror_Image_Art_Func001A takes nothing returns nothing
    call UnitShareVisionBJ( true, GetEnumUnit(), GetOwningPlayer(udg_Caster) )
    call UnitShareVisionBJ( true, udg_Caster, GetOwningPlayer(GetEnumUnit()) )
endfunction



//===========================================================================
function InitTrig_Mirror_Image_Art takes nothing returns nothing
    set gg_trg_Mirror_Image_Art = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Mirror_Image_Art, EVENT_PLAYER_UNIT_SUMMON )
    call TriggerAddCondition( gg_trg_Mirror_Image_Art, Condition( function Trig_Mirror_Image_Art_Conditions ) )
    call TriggerAddAction( gg_trg_Mirror_Image_Art, function Trig_Mirror_Image_Art_Actions )
endfunction


Вот и все!!!! Система готова!!!

III Триггер (Создание дамми юнита отчисляющего приказы)
Я думаю это каждый умеет, но все же:
1 "под"триг
Событие
Юнит вызывает другого юнита
Условие
(ставим нужные условия)
Действие
Создаем дамми юнита(модель можно взять такую же как у настоящего токо уменьшить ее до 0.01 или запихнуть под землю)
Двигаем Last Created Unit-a to Summon (чтобы он был точно на нем(на Summon-е) дамми юниту ставим тип передвижения "fly" ифиз-размер на 0)
Далее : Set Variable Dummy_Move = Last Created Unit
Unit - Order Dummy_Mover follow Summon

Все
Последний триггер можно создать чтобы дамми юнит был точно где наш Summon-невидимка
его можно найти в карте которую я выложу далее

Ablare добавил:
Чуть не забыл :) вот карта

Отредактировано Ablare, 22.08.2006 в 07:50.
Старый 21.08.2006, 10:38
VeloceRAPTOR
Транзитом
offline
Опыт: 6,921
Активность:
Кошмар, до сих пор не понимаю, как люди этот код читают..
Понимаю-триггеры..
Ablare, столько париться из-за невидимости?
А можно как-нить обьяснить, как этот код в карту вставить??
Старый 21.08.2006, 10:54
Sergey
Старейший
offline
Опыт: 44,363
Активность:
Ablare, вообще-то по любому этой теме место не в статьях, а в Мастерской. Статья излагает теорию, а у тебя не теория, а технология. Так что тему я переношу в другой раздел.
Старый 21.08.2006, 12:52
Toadcop

offline
Опыт: 54,313
Активность:
Ablare ты просто визуально делаешь его не видимым а не по настоящему... это легко даже не смотрел твой код реализуеца с помощю ЛокалПлаер + SetUnitVertexVolor() и всё ты где то на 2 года опоздал =)
Старый 21.08.2006, 19:41
dk

offline
Опыт: 60,293
Активность:
Toadcop но это подойдет только для синглплеера!
В мультиплеере Локалплеер разрывает связь.
Старый 22.08.2006, 04:51
Ablare

offline
Опыт: 2,315
Активность:
Toadcop да я меняю юниту вертекс колор, но ноне простому же юниту, а "permanent Invisibility" или аналог ему не давал т.к. я делал этот эффект именно для слежения типа тени, которую видишь токо ты и никто более (если хочешь оставить юнита управляемым(без дамми) просто у дами убираешь в целях air или ground и убираешь атаку и тогда ни он никого не тронет ни его)

-а вообще создал тригерно кастера, вызвал юллюзию и отправляешь ее следить за кем нужно (или другое какое-нибудь действие)

про сп. эффект - я еще такое делал юнит не видит нифига(150 радиус обзора) и если кто рядом есть создавал на нем илюзию с моделью какого-нибудь спец эффекта - получается очень красиво :)
-но я в локальных только сейчас разбираюсь и поэтому не могу создать законченную версию, а только саму систему создания таких юнитов :(

Ablare добавил:
карту я заменил
-многое изменил, исправли пару багов, добавил еще одну команду для проверки
и поменял описание на более понятное
Старый 22.08.2006, 07:52
Ответ

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

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

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

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



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