32

» WarCraft 3 / Задержка в карте.

Ну пофиксить просто - писать код с умом, вспомним тдшки близардов, там ниче не лагало внезапно...
Ну а так, карту в студию
32

» XGM Конкурсы / Конкурс набора иконок 2022

Интересно какая же тема будет на этот раз? Надеюсь без радужных намёков, то хотел бы че-нить себе в карту стащить =)
32

» WarCraft 3 / Книга заклинаний

В прямом смысле - никак во время игры, т.е сколько ты способностей указал спелбуку в редакторе обьектов, столько там их и будет.
Есть бага, суть которой в том что игра видя два одинаковых ID способности считает их одной, рисуя на них кулдауны и прочее одновременно, ну так вот, сделаем два спелбука, в одном одно заклинание, а во втором второе, в настройках у обоих спеллбуков оставляем базовый ид приказа - по умолчанию, добавим юниту один спеллбук - он может его открывать и юзать одну способность, добавляем ему второй спеллбук и скрываем его - действие SetPlayerAbilityAvalivle (к примеру, есть и другие способы) и вуаля, в первом спеллбуке мы видим 2 абикли и можем юзать 2 абилки, хотя технически в первом спелбуке о дна абилка, а во втором другая...
32

» WarCraft 3 / Как сделать спавн рандомного бугая?

Принятый ответ
К примеру событие - завершение подготовки боевой единицы, и собственно подменяешь одного юнита - другим, в редакторе сделаешь 2 бугая и триггер который с неким шансом будет заменять обычных бугаёв на альтернативных.
32

» Fantasy Pirates / Вадим 2kxaoc играет в Fantasy Pirates #5

JackFastGame, нет, видел как он троллей играл и плевался. Давно правда было, так бы kodo tag team сыграть.
32

» WarCraft 3 / Орк-магичка

PUVer, ну уже есть карта Геи Vs Натуралов, правда ей лет 20 уже. Ну 50 лайков будет, задумаюсь, если автор поможет с моделями - сделаю карту с игровыми роликами, 18+ контентом, в жанре TAG или дефенс.
32

» WarCraft 3 / Орк-магичка

PUVer, видел эту карту, думаю сделать "ZOO TAG" про охоту меньшинств на лесных зверушек, посмотрим скольким зайдет.
32

» WarCraft 3 / Орк-магичка

Давайте уж карту замутим если авторы будут дальше радовать такими моделями, вон образец есть, можно еще что-нить такое придумать...
32

» WarCraft 3 / GetClosestDestructable

Не припомомню такую, но раньше создавали работника и приказывали добывать дерево, смотрели куда он пойдет - вот это и будет ближайшее дерево.
32

» WarCraft 3 / Орк-магичка

Толерантность подъехала...
Ага лгбт орки, жаль одна карта уже давно забыта на эту тему.
32

» WarCraft 3 / Функция Анимации

Centyrion, каким образом протестировали? Вейт не точен, эти неточности накапливаются за время игры, и в один прекрасный момент чувака десинхает.
32

» WarCraft 3 / РАБОТА с ОДНОРАЗОВЫМ способностями

Ну а в чем проблема? JASS API как бы позволяет нам удалять, добавлять, скрывать - способности. Не вижу проблем, просто скрываем абилку и все, а когда нужно снова делаем видимой на карте комманд, ну а у самого героя \ юнита есть сразу все возможные такие абилки, а ты тупо делаешь достумными \ недоступными.
32

» WarCraft 3 / Изменения внешности при изучения пассивки

Ну как вариант морф в другого юнита, у тини сперва так было сделано, потом несколько по другому (уровни просто увилечение размера, а аганим с деревом - морф)
32

» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?

ST95, такое там насколько помню не ввели, и причем тут стороний софт? Мемхак это наработка на языке jass, он присутсвует в коде карты и больше ничего не требует. Их уже несколько версий, функционал очень широк и удобен, главное тщательно читать интсрукцию и рекомендации по форуму, чтобы не сесть в лужу.
32

» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?

еще раз, для особо одаренных - открываем ссылку и скачиваем карту с мемхаком, вставляем его себе в карту.

Ну уж тут прикреплю, самый древний мемхак где эти функции были и работали, далее чет не припомню развивали их или нет, через 5 сек после старта карты у чародея крови внезапно становятся доступны для изучения криты блейдмастера. Никаких абилок, никаких модификаций обьектов, все делается исключительно кодом, благодаря мемхаку.
Загруженные файлы
32

» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?

ST95, ну само собой нет, мемхак - наработка открывающая доступ ко всем внутренним функциям игры. К примеру вот инфа - xgm.guru/p/wc3/easymem

Вот инфа - ссылка
Ну а в разных версиях мемхака код отличается, но найти по ctrl+f думаю не составит труда.
32

» WarCraft 3 / Как сделать герою прокачиваемые способности во время игры?

Мемхак, функция SetAbilityIntoList (или как то так) добавляет в красный плюс героя указанную абилку, которую герой может выучить, легко и просто.
32

» WarCraft 3 / крафт

Принятый ответ
Нет нельзя, все делается ручками, ибо сама играть знать ничего не знает про крафт, так что делаем по 1 версии для каждого случая и подменяем их кодом.
32

» WarCraft 3 / Прыжок сларка на гуи

pounce
function Y65 takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local integer NPI=GetTriggerEvalCount(t)
  local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
  local unit P8I=(LoadUnitHandle(HashData,(S5I),(17)))
  local lightning UZI=(LoadLightningHandle(HashData,(S5I),(196)))
  local integer SUI=(LoadInteger(HashData,(S5I),(5)))
  local real QXI=(LoadReal(HashData,(S5I),(189)))
  local real QYI=(LoadReal(HashData,(S5I),(190)))
  local real QJI=GetUnitX(P8I)
  local real QKI=GetUnitY(P8I)
  local real IV1
  local real IW1
  local real II3=(LoadReal(HashData,(S5I),(23)))
  local real I13=(LoadReal(HashData,(S5I),(24)))
  local real RM2
  local real QWI=QNI(II3,I13,QJI,QKI)
  call SaveReal(HashData,(S5I),(23),((QJI)*1.0))
  call SaveReal(HashData,(S5I),(24),((QKI)*1.0))
  if QWI>100 or NPI>(3.5/.03)or RKI(P8I)==true then
    call DestroyLightning(UZI)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  else
    call MoveLightning(UZI,true,QXI,QYI,QJI,QKI)
    if QNI(QXI,QYI,QJI,QKI)>325 then
      set RM2=Atan2(QKI-QYI,QJI-QXI)
      set IV1=QXI+(325)*Cos(RM2)
      set IW1=QYI+(325)*Sin(RM2)
      call SetUnitX(P8I,IV1)
      call SetUnitY(P8I,IW1)
    endif
  endif
  set t=null
  set P7I=null
  set P8I=null
  set UZI=null
  return false
endfunction

function Y75 takes unit P7I,unit P8I,integer SUI returns nothing
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local lightning UZI=AddLightning("PONC",true,GetUnitX(P7I),GetUnitY(P7I),GetUnitX(P8I),GetUnitY(P8I))
  call SetLightningColor(UZI,1,1,1,1)
  call SaveLightningHandle(HashData,(S5I),(196),(UZI))
  call SaveUnitHandle(HashData,(S5I),(2),(P7I))
  call SaveUnitHandle(HashData,(S5I),(17),(P8I))
  call SaveInteger(HashData,(S5I),(5),(SUI))
  call SaveReal(HashData,(S5I),(189),((GetUnitX(P7I))*1.0))
  call SaveReal(HashData,(S5I),(190),((GetUnitY(P7I))*1.0))
  call SaveReal(HashData,(S5I),(23),((GetUnitX(P8I))*1.0))
  call SaveReal(HashData,(S5I),(24),((GetUnitY(P8I))*1.0))
  call TriggerRegisterTimerEvent(t,0.03,true)
  call TriggerRegisterUnitEvent(t,P8I,EVENT_UNIT_DEATH)
  call TriggerAddCondition(t,Condition(function Y65))
  call DamageTarget(P7I,P8I,1,50.00*SUI)
  call IssueTargetOrder(P7I,"attack",P8I)
  set t=null
  set UZI=null
endfunction

function Y85 takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local integer NPI=GetTriggerEvalCount(t)
  local integer SUI=(LoadInteger(HashData,(S5I),(5)))
  local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
  local real RM2=(LoadReal(HashData,(S5I),(13)))
  local real BA3=(LoadReal(HashData,(S5I),(189)))
  local real BB3=(LoadReal(HashData,(S5I),(190)))
  local real QJI=(LoadReal(HashData,(S5I),(47)))
  local real QKI=(LoadReal(HashData,(S5I),(48)))
  local real IV1=BA3+(30*(20+4*2)/30)*NPI*Cos(RM2*bj_DEGTORAD)
  local real IW1=BB3+(30*(20+4*2)/30)*NPI*Sin(RM2*bj_DEGTORAD)
  local real YB3=SquareRoot((IV1-QJI)*(IV1-QJI)+(IW1-QKI)*(IW1-QKI))
  local real YC3=700
  local real YD3=175
  local real YE3=(1-YB3/YC3)*YD3*2
  local group g=NTI()
  local unit P8I
  if NPI==1 then
    call SetUnitAnimationByIndex(P7I,5)
    call SetUnitTimeScale(P7I,1.5)
  endif
  if YE3>YD3 then
    call SetUnitAnimationByIndex(P7I,5)
    set YE3=YD3*2-YE3
  endif
  call SetUnitFlyHeight(P7I,QDI(YE3,0),0)
  call SetUnitX(P7I,PTI(IV1))
  call SetUnitY(P7I,PUI(IW1))
  call SetUnitFacing(P7I,RM2)
  set GK=P7I
  call GroupEnumUnitsInRange(g,IV1,IW1,120,Condition(function D21))
  set P8I=FirstOfGroup(g)
  call NSI(g)
  if YB3<30 or P8I!=null or GetTriggerEvalCount(t)>26 then
    call SetUnitFlyHeight(P7I,0,0)
    call SetUnitFacing(P7I,RM2)
    call SetUnitTimeScale(P7I,1)
    call SetUnitAnimation(P7I,"stand")
    call SetUnitPathing(P7I,true)
    call UnitRemoveAbility(P7I,'A1J6')
    call UPI(GetUnitX(P7I),GetUnitY(P7I),100)
    if P8I!=null and RKI(P8I)==false then
      call SCI(P8I,4408,5)
      call Y75(P7I,P8I,SUI)
    endif
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  endif
  set t=null
  set P7I=null
  set P8I=null
  return false
endfunction

function Y95 takes nothing returns nothing
  local unit P7I=GetTriggerUnit()
  local integer SUI=GetUnitAbilityLevel(P7I,'A1J7')
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local real QWI=700
  local real RM2=GetUnitFacing(P7I)
  local real QXI=GetUnitX(P7I)
  local real QYI=GetUnitY(P7I)
  local real QJI=PTI(QXI+QWI*Cos(RM2*bj_DEGTORAD))
  local real QKI=PUI(QYI+QWI*Sin(RM2*bj_DEGTORAD))
  call AddPermanentAbility(P7I,'Amrf')
  call UnitRemoveAbility(P7I,'Amrf')
  call SetUnitPathing(P7I,false)
  call AddPermanentAbility(P7I,'A1J6')
  call TriggerRegisterTimerEvent(t,0.03,true)
  call TriggerAddCondition(t,Condition(function Y85))
  call SaveUnitHandle(HashData,(S5I),(2),(P7I))
  call SaveInteger(HashData,(S5I),(5),(SUI))
  call SaveReal(HashData,(S5I),(13),((RM2)*1.0))
  call SaveReal(HashData,(S5I),(189),((QXI)*1.0))
  call SaveReal(HashData,(S5I),(190),((QYI)*1.0))
  call SaveReal(HashData,(S5I),(47),((QJI)*1.0))
  call SaveReal(HashData,(S5I),(48),((QKI)*1.0))
  set P7I=null
  set t=null
endfunction

function YA5 takes nothing returns boolean
  if GetSpellAbilityId()=='A1J7' then
    call Y95()
  endif
  return false
endfunction

function R71 takes nothing returns nothing
  local trigger t=CreateTrigger()
  call UMI(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
  call TriggerAddCondition(t,Condition(function YA5))
  set t=null
endfunction
'A1J7' - pounce. осоновано на "Веерный бросок" ('AEfk' )
UMI - TriggerRegisterAnyUnitEventBJ
PTI - проверка на границу карты по оси X
PUI - проверка на границу карты по оси Y
AddPermanentAbility:
function AddPermanentAbility takes unit u, integer id returns nothing
call UnitAddAbility( u, id )
call UnitMakeAbilityPermanent( u, true, id )
endfunction
S0I - утилизация триггеров, можно заменить на DestroyTrigger()
SCI - установка некого флага на хендл юнита втечени N сек, подленное назначение неизвестно.
NTI - CreateGroup()
NSI - DestroyGroup()
QNI - DistanceBetweenCords - измеряет растояние, выведено из одноименной бж функции.
PONC - Эффект молнии, кастом, добавлен в LigthingData.slk
32

» WarCraft 3 / Прыжок сларка на гуи

Не-а, нету это во первых, во вторых я струдом представляю как ты сделаешь на гуи привезку.
с доты на jass могу кинуть код.