7

» WarCraft 3 / Как узнать будущее на карте? World Editor.

Ну во-первых по настоящему точно(!) предсказать будущее событие, на которое игроки(или скрипт карты) способны повлиять невозможно. Особенно в контексте такого временно отрезка как минута.
Тут скорее чего ты хочешь достичь своими "предсказаниями". Eсли ты хочешь донести важную информацию о текущем игровом процессе - допустим на карте есть Башни, которые игроки должны защищать, но по невнимательности они не уследили за тем что одна башня активно осаждается, то нам не нужно "предсказывать" через какое время эта башня будет разрушена, достаточно просто сказать что она находится под атакой, или ее здоровье упало ниже какого то уровня. Или нужно донести информацию, которая повлияет на планирование: на базу Красного упадет метеорит (который мы сами и создадим), или из северных земель земель нападет армия орков, или через 2 минуты наступит ночь и пора прятаться на базе. В данном случае мы сами являемся рукой господа, которая творит будущее и просто оповещаем о неминуемом. Так же примером является стандартное уведомление варика "Золотой рудник скоро иссякнет", он не предсказывает ничего, а просто констатирует факт, что золота в руднике осталось мало.
Или как описано выше, можно реализовать систему пророчеств - а-ля случайных квестов - "Герой игрока 2 умрет в ближайшую минуту", что мотивирует остальных попробовать убить и получить награду, а игрока 2 выжить и предотвратить пророчество так же за награду.
7

» WarCraft 3 / Вместо портрета импортированной модели отображается модель персонажа WC3

Принятый ответ
В патче 2.0 добавили новое поле в Редакторе Объектов юнита - файл портрета ('upor'). У многих кастомных юнитов это поле автоматически приняло значение юнита на котором они были основаны. Что бы решить проблему поменяй значения этого поля у своего героя на None ( "_" ).
7

» WarCraft 3 / Поломался код

Хотя бы уточнил, что именно не работает.
 private function WASD_hero takes nothing returns nothing
        if GetOwningPlayer(GetTriggerUnit()) == GetTriggerPlayer() and IsUnitType(udg_Tanks[1], UNIT_TYPE_HERO) == true  then
        set WASD_Hero[GetConvertedPlayerId(GetTriggerPlayer())] = udg_Tanks[1]
        call DisplayTextToForce( GetPlayersAll(), GetUnitName(udg_Tanks[GetConvertedPlayerId(GetTriggerPlayer())]))
    
        
        endif
    endfunction
Когда красный игрок выберет своей танк он запишется в переменную WASD_Hero[1] , а в таймере на движение и детектах нажатий красный игрок проходит под индексом 0. .
set WASD_Hero[GetConvertedPlayerId(GetTriggerPlayer())] = udg_Tanks[1]
заменить на
set WASD_Hero[GetPlayerId(GetTriggerPlayer())] = udg_Tanks[1]
если все остальные странности кода работают верно, то должно помочь
7

» WarCraft 3 / Атака и смятение вражеских юнитов

SсRealm, я подписал , что это для актуального патча 2.0. Замени BlzGroupGetSize на старую функцию CountUnitsInGroup и по идее код будет работать на 1.26.
7

» WarCraft 3 / Атака и смятение вражеских юнитов

Базовый функционал абилки: крипы разбиваются на пары и дубасят друг друга некоторое время, потом останавливаются. Все очень примитивно. Остальной обвес добавляй сам. ("vjass", patch 2.0)
Открыть
globals 

real Madness_AoE = 500.
real Madness_Duration = 5.
integer Madness_AbilityCode = 'A000'

hashtable hash   // нам нужен хеш 
endglobals

function Trig_Madness_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == Madness_AbilityCode
endfunction
function MadnessFilter takes nothing returns boolean
    return ( GetOwningPlayer(GetFilterUnit()) == Player(PLAYER_NEUTRAL_AGGRESSIVE) )
endfunction
function MadnessStop takes nothing returns nothing
	call IssueImmediateOrder(GetEnumUnit(),"stop")
endfunction
function MadnessTimer takes nothing returns nothing
	local timer tt=GetExpiredTimer()
	local group gr=LoadGroupHandle(hash,GetHandleId(tt),1)
	call ForGroup(gr, function MadnessStop)
	call DestroyGroup(gr)
	call FlushChildHashtable(hash,GetHandleId(tt))
	call DestroyTimer(tt)
endfunction
function Trig_Madness_Actions takes nothing returns nothing
	local real x=GetSpellTargetX()
	local real y=GetSpellTargetY()
	local group gr=CreateGroup()
	local group gr2 = CreateGroup()
	local unit t
	local unit t2
	local unit last=null
	local timer tt
	call GroupEnumUnitsInRange(gr,x,y, Madness_AoE, Filter(function MadnessFilter))
	loop
		set t=FirstOfGroup(gr)
		exitwhen t==null
		call GroupRemoveUnit(gr,t)
		set t2=FirstOfGroup(gr)
		if t2!=null then
			call IssueTargetOrder(t,"attack",t2)
			call IssueTargetOrder(t2,"attack",t)
			call GroupRemoveUnit(gr,t2)
			call GroupAddUnit(gr2,t)
			call GroupAddUnit(gr2,t2)
		elseif last!=null then
			call IssueTargetOrder(t,"attack",last)
			call GroupAddUnit(gr2,t)
		endif
		set last=t
		
	endloop
	call DestroyGroup(gr)
	if BlzGroupGetSize(gr2) >0 then
		set tt=CreateTimer()
		call SaveGroupHandle(hash,GetHandleId(tt),1,gr2)
		call TimerStart(tt,Madness_Duration,false,function MadnessTimer)
		return
	endif
	call DestroyGroup(gr2)
	
endfunction

//===========================================================================
function InitTrig_Madness takes nothing returns nothing
	set hash=InitHashtable()  // инициализация хеша
    set gg_trg_Madness = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Madness, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Madness, Condition( function Trig_Madness_Conditions ) )
    call TriggerAddAction( gg_trg_Madness, function Trig_Madness_Actions )
endfunction

Загруженные файлы
7

» WarCraft 3 / Универсальные хоткеи для абилок.

GetLocalPlayer:
Делать все способности триггерными на основе канала. Редактировать поля канала (иконку, описание, дальность каста, манкост и т.д.) в процессе игры (Действие -> Ability -> Set Real/Integer Field). Тогда в карте будет только 7 абилок на всех героев.
Это отлично подходит, но оказалось близы не довезли возможность менять такие поля как Анимация ('aani'), допустимые цели('atar'). Возможно потому, что они являются массивными значениями, которые должны меняться через BlzSetAbilityStringLevelArrayField , но ни одного константного abilitystringlevelarrayfield в common.j нет в наличии.

Придется анимки триггером проигрывать, а абилки с целями продублировать.
7

» WarCraft 3 / Искусственный интеллект крипов

Сценарий-> Свойства игрока -> Управляет поставить "Компьютер" для нужного слота игрока.
7

» WarCraft 3 / Утечка или не утечка.

Все обновляется и удаляется как надо. Я не писал весь код, что бы не замыливать глаза, так как в нем используется еще куча всего что может утекать, но не утекает.
DracoL1ch:
что такое параллельный вызов и как связан мемхак с хендлом? оО
Параллельно, я имел ввиду МУИ использование. То есть если я использую способность Варик создаст юнита в памяти (ConvertHandle вернет адрес этого юнита в памяти) после выполнения удалив юнита, память освободится. При новом вызове варик создаст нового юнита и опять выделит под него память, а ConverHandle будет тот же самый, значит прошлый юнит удалился и освободил место для нового. Если вызвать способность дважды, создастся два юнита и получат разные места в памяти, и ConvertHandle будет различаться, что и происходит. Поправьте меня если я не прав.
quq_CCCP:
Zeix, И где тут мемхак? Не вижу что то применение мемхака в данном коде, вот к примеру тут используется мемхак, а у вас нет.
Мемхак не используется в способности, чего я и не утверждал, Я использовал только ее функцию, что бы понять что происходит.
7

» WarCraft 3 / Характеристики - Требуется древесины

Принятый ответ
Находим нужное поле, нажимаем Shift+Enter, вводим нужное значение (тоже ограничено).
Загруженные файлы
7

» WarCraft 3 / Передать перезарядку способности

Если юнита всего два и абилка тригерная - сделать 2 разные абилки, по 1 для каждого юнита, и при использовании ее у одного вызывать холостой запуск у второго. Передавать путем запрета/разрешения. Вроде должно работать.
7

» WarCraft 3 / Нужна модель? - Вам сюда!

Нужна модель Туманного неба с нижней гранью с натянутой боковой текстуркой.
7

» WarCraft 3 / как создать юнита у курсора мыши

Принятый ответ
Зависит от СОБЫТИЯ, если это каст способности или отдача приказа при помощи мышки, то можно отловить координаты через GetSpellTargetX/Y или GetOrderPointX/Y. Если событие не связано с мышкой, то варовскими методами никак.(слишком сложно и не практично)
7

» WarCraft 3 / дамик

Принятый ответ
Выключай даммику пасинг и переноси в нужную точку.
local unit d
local real x=GetUnitX(u)
local real y=GetUnitY(u)
......
set d=CreateUnit(p,dummy,0,0,0)
call SetUnitPathing(d,false)
call SetUnitX(d,x)
call SetUnitY(d,y)
7

» WarCraft 3 / Просто не могу удалить эффект с юнита(героя)

Принятый ответ
Функция AddSpecialEffectTarget нативная и только создает эффект никуда его не сохраняя. В первом случае ты создавал спец эффект но не записывал его никуда. Во втором ты создавал 2 эффекта, один из которых удалял.
AddSpecialEffectTargetUnitBJ близардовская и она записывает созданный эффект в *bj_lastCreatedEffect* который ты удалял. Делай как в во втором варианте только без первого вызова:
set se1 = AddSpecialEffectTarget( "Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl",su, "origin" )
call TriggerSleepAction(0.5)
call DestroyEffect(se1)
7

» Ретро-игры / Dune II

Великолепная ретро-стратежка, первая в которую играл. Скачал, пошел любоваться.
7

» WarCraft 3 / JTournament 1.5e

Castwork, замена ботом в разработке, но система тупит очень сильно...
7

» WarCraft 3 / JTournament 1.5e

урон неочень, танки в аренах не нужны, т.к. у людей мозг есть, ывбирают кого бить, хил тоже недохил, а абилка типа разбег вообще какая-то..ээ...и по механике и по действенности неочень) ну и не вписывается в тематику баблодина.
Имхо, Храмовник - один из самых ярких персонажей, возможно даже слишком мощный. При игре 2 на 2 его хилки вполне хватает, хелит достаточно и мгновенно. На счет низкого урона: высокий урон только у магов, у храмовника достаточный урон, учитывая, что он не ДД клас (как писал Qd есть связка F+E+W+Q наносит солидный урон). Не веришь - приглашаю на Гарену :). Называть храмовника танком - неуместно, тк он не консервная банка, а многофункциональный класс.
Ну а вот анимация у раша и вправду не очень...
7

» WarCraft 3 / JTournament 1.5e

карта просто отличная, одна из лучших пвп арен. 10/10.
по поводу пироманта плюсую, сейчас самый мощный дд с 2 стунами и откидывалкой творит чудеса.
в режиме 2 на 2 играл хант+прист вс берс+друид каждый раунд махача был по 5 минут...
еще предложение, может при выходе игрока заменять его на бота, ато каждая вторая игра заканчивается раньше времени.