Новые нативные функции в 1.29

» опубликован
В вышедшем сегодня патче для Warcraft III помимо огромного количества правок баланса и соревновательных карт была включена целая гора новых нативных JASS-функций (без малого почти сотня). Некоторые из них являются более удобными версиями уже бывшего доступным функционала, но большинство несут совершенно новые возможности, до сих пор бывшие недоступными простому смертному картоделу.
В общем, ознакамливайтесь и радуйтесь! Ну или не радуйтесь. Сами уж как-нибудь разберётесь.
type mousebuttontype extends handle

constant native GetBJMaxPlayers             takes nothing returns integer
constant native GetBJPlayerNeutralVictim    takes nothing returns integer
constant native GetBJPlayerNeutralExtra     takes nothing returns integer
constant native GetBJMaxPlayerSlots         takes nothing returns integer
constant native GetPlayerNeutralPassive     takes nothing returns integer
constant native GetPlayerNeutralAggressive  takes nothing returns integer

constant integer            PLAYER_NEUTRAL_PASSIVE              = GetPlayerNeutralPassive()
constant integer            PLAYER_NEUTRAL_AGGRESSIVE           = GetPlayerNeutralAggressive()

constant mousebuttontype    MOUSE_BUTTON_TYPE_LEFT              = ConvertMouseButtonType(1)
constant mousebuttontype    MOUSE_BUTTON_TYPE_MIDDLE            = ConvertMouseButtonType(2)
constant mousebuttontype    MOUSE_BUTTON_TYPE_RIGHT             = ConvertMouseButtonType(3)

constant playerevent        EVENT_PLAYER_MOUSE_DOWN             = ConvertPlayerEvent(269)
constant playerevent        EVENT_PLAYER_MOUSE_UP               = ConvertPlayerEvent(270)
constant playerevent        EVENT_PLAYER_MOUSE_MOVE             = ConvertPlayerEvent(271)

constant playerunitevent    EVENT_PLAYER_UNIT_SELL              = ConvertPlayerUnitEvent(272)
constant playerunitevent    EVENT_PLAYER_UNIT_CHANGE_OWNER      = ConvertPlayerUnitEvent(273)
constant playerunitevent    EVENT_PLAYER_UNIT_SELL_ITEM         = ConvertPlayerUnitEvent(274)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_CHANNEL     = ConvertPlayerUnitEvent(275)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_CAST        = ConvertPlayerUnitEvent(276)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_EFFECT      = ConvertPlayerUnitEvent(277)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_FINISH      = ConvertPlayerUnitEvent(278)
constant playerunitevent    EVENT_PLAYER_UNIT_SPELL_ENDCAST     = ConvertPlayerUnitEvent(279)
constant playerunitevent    EVENT_PLAYER_UNIT_PAWN_ITEM         = ConvertPlayerUnitEvent(280)

constant unitevent          EVENT_UNIT_SELL                     = ConvertUnitEvent(289)
constant unitevent          EVENT_UNIT_CHANGE_OWNER             = ConvertUnitEvent(290)
constant unitevent          EVENT_UNIT_SELL_ITEM                = ConvertUnitEvent(291)
constant unitevent          EVENT_UNIT_SPELL_CHANNEL            = ConvertUnitEvent(292)
constant unitevent          EVENT_UNIT_SPELL_CAST               = ConvertUnitEvent(293)
constant unitevent          EVENT_UNIT_SPELL_EFFECT             = ConvertUnitEvent(294)
constant unitevent          EVENT_UNIT_SPELL_FINISH             = ConvertUnitEvent(295)
constant unitevent          EVENT_UNIT_SPELL_ENDCAST            = ConvertUnitEvent(296)
constant unitevent          EVENT_UNIT_PAWN_ITEM                = ConvertUnitEvent(297)


//===================
// Player input
//===================

native GetTriggerPlayerMouseX               takes nothing returns real
native GetTriggerPlayerMouseY               takes nothing returns real
native GetTriggerPlayerMousePosition        takes nothing returns location
native GetTriggerPlayerMouseButton          takes nothing returns mousebuttontype


//===================
// Items UI
//===================

native SetItemName                          takes item whichItem, string name returns nothing
native SetItemDescription                   takes item whichItem, string name returns nothing
native SetItemTooltip                       takes item whichItem, string name returns nothing
native SetItemExtendedTooltip               takes item whichItem, string name returns nothing
native SetItemIconPath                      takes item whichItem, string name returns nothing

native GetItemDescription                   takes item whichItem returns string
native GetItemTooltip                       takes item whichItem returns string
native GetItemExtendedTooltip               takes item whichItem returns string
native GetItemIconPath                      takes item whichItem returns string


//===================
// Abils
//===================

    // Stats

native GetAbilityManaCost                   takes integer abilId, integer level returns integer
native GetAbilityCooldown                   takes integer abilId, integer level returns real

    // Text

native SetAbilityTooltip                    takes integer abilCode, string tooltip, integer level returns nothing
native SetAbilityOnTooltip                  takes integer abilCode, string tooltip, integer level returns nothing
native SetAbilityExtendedTooltip            takes integer abilCode, string ExtendedTooltip, integer level returns nothing
native SetAbilityOnExtendedTooltip          takes integer abilCode, string ExtendedTooltip, integer level returns nothing
native SetAbilityResearchTooltip            takes integer abilCode, string researchTooltip, integer level returns nothing
native SetAbilityResearchExtendedTooltip    takes integer abilCode, string researchExtendedTooltip, integer level returns nothing

native GetAbilityTooltip                    takes integer abilCode, integer level returns string
native GetAbilityOnTooltip                  takes integer abilCode, integer level returns string
native GetAbilityExtendedTooltip            takes integer abilCode, integer level returns string
native GetAbilityOnExtendedTooltip          takes integer abilCode, integer level returns string
native GetAbilityResearchTooltip            takes integer abilCode, integer level returns string
native GetAbilityResearchExtendedTooltip    takes integer abilCode, integer level returns string

    // Button

native SetAbilityIcon                       takes integer abilCode, string iconPath, integer level returns nothing
native SetAbilityOnIcon                     takes integer abilCode, string iconPath returns nothing
native SetAbilityPosX                       takes integer abilCode, integer x returns nothing
native SetAbilityPosY                       takes integer abilCode, integer y returns nothing
native SetAbilityOnPosX                     takes integer abilCode, integer x returns nothing
native SetAbilityOnPosY                     takes integer abilCode, integer y returns nothing

native GetAbilityIcon                       takes integer abilCode, integer level returns string
native GetAbilityOnIcon                     takes integer abilCode returns string
native GetAbilityPosX                       takes integer abilCode returns integer
native GetAbilityPosY                       takes integer abilCode returns integer
native GetAbilityOnPosX                     takes integer abilCode returns integer
native GetAbilityOnPosY                     takes integer abilCode returns integer


//===================
// Unit
//===================

    // Stats

native SetUnitArmor                         takes unit whichUnit, real armorAmount returns nothing
native SetUnitMaxHP                         takes unit whichUnit, integer hp returns nothing
native SetUnitMaxMana                       takes unit whichUnit, integer mana returns nothing
native SetUnitBaseDamage                    takes unit whichUnit, integer baseDamage, integer weaponIndex returns nothing
native SetUnitDiceNumber                    takes unit whichUnit, integer diceNumber, integer weaponIndex returns nothing
native SetUnitDiceSides                     takes unit whichUnit, integer diceSides, integer weaponIndex returns nothing
native SetUnitAttackCooldown                takes unit whichUnit, real cooldown, integer weaponIndex returns nothing

native GetUnitArmor                         takes unit whichUnit returns real
native GetUnitMaxHP                         takes unit whichUnit returns integer
native GetUnitMaxMana                       takes unit whichUnit returns integer
native GetUnitBaseDamage                    takes unit whichUnit, integer weaponIndex returns integer
native GetUnitDiceNumber                    takes unit whichUnit, integer weaponIndex returns integer
native GetUnitDiceSides                     takes unit whichUnit, integer weaponIndex returns integer
native GetUnitAttackCooldown                takes unit whichUnit, integer weaponIndex returns real

native GetUnitCollisionSize                 takes unit whichUnit returns real
native GetLocalUnitZ                        takes unit whichUnit returns real

native SetUnitName                          takes unit whichUnit, string name returns nothing
native SetUnitNameAll                       takes unit whichUnit, string name returns nothing
native SetHeroProperName                    takes unit whichUnit, string name returns nothing

    // Abils

native SetUnitAbilityCooldown               takes unit whichUnit, integer abilId, integer level, real cooldown returns nothing
native GetUnitAbilityCooldown               takes unit whichUnit, integer abilId, integer level returns real
native GetUnitAbilityCooldownRemaining      takes unit whichUnit, integer abilId returns real
native EndUnitAbilityCooldown               takes unit whichUnit, integer abilCode returns nothing

native GetUnitAbilityManaCost               takes unit whichUnit, integer abilId, integer level returns integer

native UnitHideAbility                      takes unit whichUnit, integer abilId, boolean flag returns nothing
native UnitDisableAbility                   takes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
native DeleteHeroAbility                    takes unit whichUnit, integer abilCode returns nothing

    // Misc.

native UnitInterruptAttack                  takes unit whichUnit returns nothing
native UnitCancelTimedLife                  takes unit whichUnit returns nothing

native IsUnitSelectable                     takes unit whichUnit returns boolean
native IsUnitInvulnerable                   takes unit whichUnit returns boolean


//===================
// Special effect
//===================

    // Appearance

native SetSpecialEffectColorByPlayer        takes effect whichEffect, player whichPlayer returns nothing
native SetSpecialEffectColor                takes effect whichEffect, integer r, integer g, integer b returns nothing
native SetSpecialEffectAlpha                takes effect whichEffect, integer alpha returns nothing
native SetSpecialEffectScale                takes effect whichEffect, real scale returns nothing
native SetSpecialEffectHeight               takes effect whichEffect, real height returns nothing
native SetSpecialEffectTimeScale            takes effect whichEffect, real timeScale returns nothing
native SetSpecialEffectTime                 takes effect whichEffect, real time returns nothing

    // Position

native SetSpecialEffectX                    takes effect whichEffect, real x returns nothing
native SetSpecialEffectY                    takes effect whichEffect, real y returns nothing
native SetSpecialEffectZ                    takes effect whichEffect, real z returns nothing
native SetSpecialEffectPosition             takes effect whichEffect, real x, real y, real z returns nothing
native SetSpecialEffectPositionLoc          takes effect whichEffect, location loc returns nothing

native GetLocalSpecialEffectX               takes effect whichEffect returns real
native GetLocalSpecialEffectY               takes effect whichEffect returns real
native GetLocalSpecialEffectZ               takes effect whichEffect returns real

native SetSpecialEffectOrientation          takes effect whichEffect, real yaw, real pitch, real roll returns nothing
native SetSpecialEffectYaw                  takes effect whichEffect, real yaw returns nothing
native SetSpecialEffectPitch                takes effect whichEffect, real pitch returns nothing
native SetSpecialEffectRoll                 takes effect whichEffect, real roll returns nothing

    // Playback

native PlaySpecialEffect                    takes effect whichEffect, integer anim returns nothing
native PlaySpecialEffectWithTimeScale       takes effect whichEffect, integer anim, real timeScale returns nothing


//===================
// Misc.
//===================

native SetEventDamage                       takes real damage returns nothing

native AutomationTestStart                  takes string testName returns nothing
native AutomationTestEnd                    takes string testName returns nothing

constant native IncPlayerTechResearched     takes player whichPlayer, integer techid, integer levels returns nothing
constant native DecPlayerTechResearched     takes player whichPlayer, integer techid, integer levels returns nothing


//===================
// Not yet impl.
//===================

// native GetUnitMovementType               takes unit whichUnit returns integer
// native SetUnitMovementType               takes unit whichUnit, integer movementType returns nothing
// native GetUnitArmorType                  takes unit whichUnit returns integer
// native SetHeroStatEx                     takes unit whichHero, integer whichStat, integer statValue, boolean permanent returns nothing
// native GetHeroPrimaryStat                takes unit whichHero returns integer
// native GetHeroPrimaryStatById            takes unit whichHero returns integer
// native GetHeroStat                       takes unit whichHero, integer whichStat, boolean includeBonuses returns integer


Просмотров: 11 842



» Лучшие комментарии


Кет #1 - 5 месяцев назад 20
Ура! Скептики посрамлены! Варкрафт жив!
Пушистый #2 - 5 месяцев назад 0
Найти бы время все это проверить, чтобы потом сделать видбек, в случае выявления неточностей.
ScopteRectuS #3 - 5 месяцев назад (отредактировано ) 0
А чем отличаются эти и этим подобные функции с "On":
native GetAbilityTooltip                    takes integer abilCode, integer level returns string
native GetAbilityOnTooltip                  takes integer abilCode, integer level returns string
Понял, это для авто-кастов? Но тогда где "Off" вариант?
pro100master #4 - 5 месяцев назад (отредактировано ) 0
По умолчание: Чтобы установить базовый урон необходимо установить по умолчание индекс 1 как и гетер 0
abidin #5 - 5 месяцев назад (отредактировано ) 2
native SetSpecialEffectOrientation takes effect whichEffect, real yaw, real pitch, real roll returns nothing
native SetSpecialEffectYaw takes effect whichEffect, real yaw returns nothing
native SetSpecialEffectPitch takes effect whichEffect, real pitch returns nothing
native SetSpecialEffectRoll takes effect whichEffect, real roll returns nothing
Интересно из каких религиозных соображений они решили не вводить Get функцию?
DracoL1ch #6 - 5 месяцев назад 3
Кет:
Ура! Скептики посрамлены! Варкрафт жив!
Боже мой, как вы живете? От новых нативок в игре появятся новые игроки? Да дай бог, чтобы старые-то вспомнили, что существовала такая игра, и что они когда-то в неё играли. Как можно радоваться подобным мелочам, словно это новая игра с большим будущим?
По теме - малая часть от всех сеттеров-геттеров, что ожидалось. Лучше, чем ничего, но до полноценного агрегата еще годы работы в таком темпе.
pro100master #7 - 5 месяцев назад 2
Самое печальное что нельзя менять описание способности и предмета для определеного игрока.. а то через GetLocalPlayer десик
Doc #8 - 5 месяцев назад 0
abidin, из тех что игра сама это не сетает.
От новых нативок в игре появятся новые игроки
Думаю если завезут бнет 2.0 то какой-никакой бонус будет.
малая часть от всех сеттеров-геттеров, что ожидалось
Разве? По-моему как раз сказали что в этом патче как раз завезут небольшую часть предложений. Я бы сказал что ожидания оправданы
pro100master #9 - 5 месяцев назад 0
Нужно тестировать в сети
if GetLocalPlayer() == Player(0) then
    		call SetAbilityTooltip( 'Adef', "|c0000FF00123|r", 1 )
    		call SetAbilityExtendedTooltip( 'Adef', "321 |c0000FF00test|r", 1 )
	endif
У мя почему то десихр...
Doc #10 - 5 месяцев назад 0
Ну дак потому что неправильно делаешь, точно так же как и со спецэффектами локальными.
pro100master #11 - 5 месяцев назад 0
Doc, я знаю просто тестирую... хотел чтоб можно менять описание у определеного юнита например зачем делать 12 абилок который будет описание каждый апргрейд от +1 до +12 =) было круто
Clamp #12 - 5 месяцев назад 2
У мя почему то десихр
Строку надо создавать потому что не локально.
pro100master #13 - 5 месяцев назад 0
Clamp, угу и русский не показывает...
PT153 #14 - 5 месяцев назад (отредактировано ) 0
pro100master:
Clamp, угу и русский не показывает...
Потому что поддержку кириллицы так и не завезли.
Ну и на сайте написано:
PTR only supports English version of the client.
Clamp #15 - 5 месяцев назад 0
Странно ожидать русскую версию в тестовом клиенте игры, созданной не в СНГ.
PT153 #16 - 5 месяцев назад 0
Объясните ещё раз, что делает SetEventDamage(), пожалуйста.
Raised #17 - 5 месяцев назад (отредактировано ) 0
PT153, изменяет ивентдемедж на указанное число.
GetLocalPlayer #18 - 5 месяцев назад (отредактировано ) 0
Получение зеленой атаки видимо не завезли?
native UnitInterruptAttack                  takes unit whichUnit returns nothing
Интересует смысл этой нативки.
native UnitHideAbility                      takes unit whichUnit, integer abilId, boolean flag returns nothing
native UnitDisableAbility                   takes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
В чем, собсно, разница?
native GetUnitArmor                         takes unit whichUnit returns real
Получает всю броню или белую?
Raised #19 - 5 месяцев назад 0
GetLocalPlayer, полагаю дисейбл - это как сайленс или нечто вроде него. А хайд - это хайд.

Остальное нужно тестить. Патч только вышел. Телепаты в отпуске.
biridius #20 - 5 месяцев назад 4
GF RaiseD, вопрос в том можно ли через это SetEventDamage() сделать поглошение урона, или это тупо перезапись глобалки, и все равно нужно возится с добавлениями хп и умираниями от урона больше хп
pro100master #21 - 5 месяцев назад (отредактировано ) 0
GetLocalPlayer, базовую и зеленая вместе так как будет возврашать реальные то есть в игре вы увидите 4 армора а реал вернет 3.900
Raised #22 - 5 месяцев назад (отредактировано ) 5
biridius, можно. Для этого она и придумана.
ScorpioT1000 #23 - 5 месяцев назад 0
Поменяйте уже ему никнейм и пару пунктов за житрожопие можно)
pro100master #24 - 5 месяцев назад 4
Щас тестил такен урона да если поставить минус 1.00 то лечит а если 0.00 то польный игнор урона или свой урон... реально круто что не умирает от 1 хп при 9лям урона не умирает
Пушистый #25 - 5 месяцев назад 0
JNGP для 1.29 никто еще не скрутил?
pro100master #26 - 5 месяцев назад 2
SetEventDamage игнорирует армор
то есть юит получает урон
получает сколько нанес урон через GetEventDamage c учетом брони
если надо то SetEventDamage (GetEventDamage()) будет по умолчание...
но если надо то поставить GetEventDamage(-100.00) даст лечение хп здоровья чистый с учетом регеном.
GetEventDamage(100.00) снимает 100 здоровья с юнита чистый даже учитивает регенерация
PT153 #27 - 5 месяцев назад 0
pro100master:
но если надо то поставить GetEventDamage(-100.00) даст лечение хп здоровья чистый с учетом регеном.
GetEventDamage(100.00) снимает 100 здоровья с юнита чистый даже учитивает регенерация
Тут наверное имеется в виду SetEventDamage()?
pro100master:
то есть юит получает урон
получает сколько нанес урон через GetEventDamage c учетом брони
То есть по умолчанию в GetEventDamage() записан урон с вычитом брони?
Raised #28 - 5 месяцев назад 0
PT153, да. Это итоговый урон после всех подсчетов.
GetLocalPlayer #29 - 5 месяцев назад 0
То есть по умолчанию в GetEventDamage() записан урон с вычитом брони?
По умолчанию, событие на получение урона срабатывает уже после всех снижающий факторов от брони, способностей, баффов. Технически, GetEventDamage это уже не урон, а прямое изменение здоровья, так что описанное выше поведение вряд ли можно назвать сюрпризом.
pro100master #30 - 5 месяцев назад (отредактировано ) 4
PT153, да сеттер перепутал вот сначало мы добавляем события каждого юнитп получает урон
после чего мы получим GetEventDamage() оригинальный урон с учетом брони то есть
если в этом потоке не установлено SetEventDamage то в итоге идет оригинал.. типо получим так
SetEventDamage(GetEventDamage()) - это основа оригинал в движке чтоб этого не было мы изменим сеттер ранее урона то получим результат =) то есть уже радует
кто шас тестирует 1.29 вот карта и скрин примера после события получение урона
Терь нет нужды добавлять абилку антимагия -200% обратный чтобы не умирать от способности... ну и так далее =)
прикреплены файлы
Clamp #31 - 5 месяцев назад 2
То есть по умолчанию в GetEventDamage() записан урон с вычитом брони?
Ну это логично, показывает же получаемый целью урон, а получает она его только после прохождения всех возможных модификаторов.
pro100master #32 - 5 месяцев назад 0
удалил библиотека детектор урона и поставил 1.29 SetEventDamage и круто и гладко работает чем 1000 строк кода (антимагия, хп давать и так далее)
Пушистый #33 - 5 месяцев назад 0
pro100master, JNGP на 1.29 работает?
DracoL1ch #34 - 5 месяцев назад 0
Если строки вдруг стали обязательны к синхронизации - это провал. Иначе, если тултип действительно нельзя менять локально, это провал x2
pro100master #35 - 5 месяцев назад 0
Пушистый, Я не разработчик JNGP, напиши ему и узнаеш...
DracoL1ch, ну да если было бы возможность менять тилтуп для юнита а не для всей игры тогда и локал отпали бы вопросов!!!
DracoL1ch #37 - 5 месяцев назад 0
Создаю уникальные локальные строки уже 4 года, строки не являются хендлами и не нуждаются в синке
2 комментария удалено
Doc #40 - 5 месяцев назад 0
Я согласен что тултипы должна быть возможность менять локально без проблем.
Но и эффекты тоже можно было бы создавать локально, но как-то всем пох, невелика потеря.
Daro #41 - 5 месяцев назад 0
Может когда - нибудь мы доживем до настраиваемого угла крена юнита и увеличения макс скорости перемещения , хотябы до 700-722 ( в идеале до 1000) .Думаю 200 допольнительной скорости перемещния не навредит и не вызовет особых проблем с реализацией.Ждем допиленого отлова урона
Raised #42 - 5 месяцев назад 1
Кто-нибудь уже проверял настройки крита. Можно ли отметить чтоб он учитывал доп. урон?
Пушистый #43 - 5 месяцев назад (отредактировано ) 0
GF RaiseD, вроде как такого поля нет, увы, хотя для Хранителя Рощи ввели параметр неуязвимости.
Raised #44 - 5 месяцев назад (отредактировано ) 0
Видимо, теперь нужно будет триггерно делать крит. По крайней мере чтоб он работал так как раньше.
awesomesk1ll #45 - 5 месяцев назад 4
GF RaiseD:
Видимо, теперь нужно будет триггерно делать крит. По крайней мере чтоб он работал так как раньше.
Про это вопрос? оно есть
Raised #46 - 5 месяцев назад 0
Флаффи, я тя отпинаю. awesomesk1ll, да. Об этом.
Extremator #47 - 5 месяцев назад (отредактировано ) 0
DracoL1ch:
Создаю уникальные локальные строки уже 4 года, строки не являются хендлами и не нуждаются в синке
DracoL1ch, есть подозрение что это же самое косается не только строк, но и инт'ов, реал'ок, и бул'ок, это так? (т.к. они вообще не объвляются в коммоне, и стоят на порядок выше и/или проще всего остального)
ScorpioT1000 #48 - 5 месяцев назад 0
Extremator, примитивы создаются прямо на месте и передаются по значению
Raised #49 - 5 месяцев назад 0
Кет:
Ура! Скептики посрамлены! Варкрафт жив!
Близзард готовит ритуал воскрешения.
Sergarr #50 - 5 месяцев назад 0
native GetTriggerPlayerMouseX takes nothing returns real
native GetTriggerPlayerMouseY takes nothing returns real
native GetTriggerPlayerMousePosition takes nothing returns location
native GetTriggerPlayerMouseButton takes nothing returns mousebuttontype
Очень интерестно, теперь можно сделать шутер на базе варика со стрельбой от первого лица! Ну и еще наверное можно триггерный псевдоинтерфейс запилить, наподобие DGUI, но только без глюков...
constant native DecPlayerTechResearched takes player whichPlayer, integer techid, integer levels returns nothing
А что, технологиям теперь можно уровень понижать?