7

» WarCraft 3 / Отловить продажу предмета покупателю-продавцу

Diaboliko:
nvc123, юнит сам себе предмет должен продавать. В заголовке это упомянуто.
По факту - продажа предмета = скилл с числом зарядов. Когда юнит отдает приказ на продажу предмета, он получает приказ кастовать разблокированный скилл. После ENDCAST ивента он еще раз получает приказ продать предмет дабы списать один "заряд". Трабл в том, что это создает предмет, который стоит отловить для удаления.
может предмет заменить на юнит и отлавливать продажу/покупку юнита?)
Еще вспомнилась нативка, с помощью которой можно регулировать кол-во продаваемых предметов
native AddItemToStock takes unit whichUnit, integer itemId, integer currentStock, integer stockMax returns nothing
7

» WarCraft 3 / Удалить предмет и дать игроку его цену в золоте

Jugger, в карте используется уровень предмета? можно в РО на месте уровня поставить его стоимость и в игре получать это значение через функцию
native GetItemLevel takes item whichItem returns integer
7

» WarCraft 3 / Вопрос про утечки тригеры

Starman2222, обе функции "Позиция юнита" и "Точка со смещением" создают объект типа точка (location), которую необходимо удалять
7

» WarCraft 3 / Не запускается Проверка Карты

rtc включен? если да, тогда отключи и проверь
еще можно скачать jngp из другого источника, либо вручную отредактировать файл wehack.lua
7

» WarCraft 3 / Удалить предмет и дать игроку его цену в золоте

Кет, два юнита с одинаковыми равкодами нельзя, юнит и предмет можно, по крайней мере, я проблем не наблюдал)
quq_CCCP, в common.ai нет такой функции
common.ai
native DebugS               takes string str                            returns nothing
native DebugFI              takes string str, integer val               returns nothing
native DebugUnitID          takes string str, integer val               returns nothing
native DisplayText          takes integer p, string str                 returns nothing
native DisplayTextI         takes integer p, string str, integer val    returns nothing
native DisplayTextII        takes integer p, string str, integer v1, integer v2 returns nothing
native DisplayTextIII       takes integer p, string str, integer v1, integer v2, integer v3 returns nothing
native DoAiScriptDebug      takes nothing                               returns boolean

native GetAiPlayer          takes nothing                               returns integer
native GetHeroId            takes nothing                               returns integer
native GetHeroLevelAI       takes nothing                               returns integer

native GetUnitCount         takes integer unitid                        returns integer
native GetPlayerUnitTypeCount takes player p, integer unitid            returns integer
native GetUnitCountDone     takes integer unitid                        returns integer
native GetTownUnitCount     takes integer id, integer tn, boolean dn    returns integer
native GetUnitGoldCost      takes integer unitid                        returns integer
native GetUnitWoodCost      takes integer unitid                        returns integer
native GetUnitBuildTime     takes integer unitid                        returns integer

native GetMinesOwned        takes nothing                               returns integer
native GetGoldOwned         takes nothing                               returns integer
native TownWithMine         takes nothing                               returns integer
native TownHasMine          takes integer townid                        returns boolean
native TownHasHall          takes integer townid                        returns boolean

native GetUpgradeLevel      takes integer id                            returns integer
native GetUpgradeGoldCost   takes integer id                            returns integer
native GetUpgradeWoodCost   takes integer id                            returns integer
native GetNextExpansion     takes nothing                               returns integer
native GetMegaTarget        takes nothing                               returns unit
native GetBuilding          takes player p                              returns unit
native GetEnemyPower        takes nothing                               returns integer
native SetAllianceTarget    takes unit id                               returns nothing
native GetAllianceTarget    takes nothing                               returns unit

native SetProduce           takes integer qty, integer id, integer town returns boolean
native Unsummon             takes unit unitid                           returns nothing
native SetExpansion         takes unit peon, integer id                 returns boolean
native SetUpgrade           takes integer id                            returns boolean
native SetHeroLevels        takes code func                             returns nothing
native SetNewHeroes         takes boolean state                         returns nothing
native PurchaseZeppelin     takes nothing                               returns nothing

native MergeUnits           takes integer qty, integer a, integer b, integer make returns boolean
native ConvertUnits         takes integer qty, integer id               returns boolean

native SetCampaignAI        takes nothing                               returns nothing
native SetMeleeAI           takes nothing                               returns nothing
native SetTargetHeroes      takes boolean state                         returns nothing
native SetPeonsRepair       takes boolean state                         returns nothing
native SetRandomPaths       takes boolean state                         returns nothing
native SetDefendPlayer      takes boolean state                         returns nothing
native SetHeroesFlee        takes boolean state                         returns nothing
native SetHeroesBuyItems    takes boolean state                         returns nothing
native SetWatchMegaTargets  takes boolean state                         returns nothing
native SetIgnoreInjured     takes boolean state                         returns nothing
native SetHeroesTakeItems   takes boolean state                         returns nothing
native SetUnitsFlee         takes boolean state                         returns nothing
native SetGroupsFlee        takes boolean state                         returns nothing
native SetSlowChopping      takes boolean state                         returns nothing
native SetCaptainChanges    takes boolean allow                         returns nothing
native SetSmartArtillery    takes boolean state                         returns nothing
native SetReplacementCount  takes integer qty                           returns nothing
native GroupTimedLife       takes boolean allow                         returns nothing
native RemoveInjuries       takes nothing                               returns nothing
native RemoveSiege          takes nothing                               returns nothing

native InitAssault          takes nothing                               returns nothing
native AddAssault           takes integer qty, integer id               returns boolean
native AddDefenders         takes integer qty, integer id               returns boolean

native GetCreepCamp         takes integer min, integer max, boolean flyers_ok returns unit

native StartGetEnemyBase    takes nothing                               returns nothing
native WaitGetEnemyBase     takes nothing                               returns boolean
native GetEnemyBase         takes nothing                               returns unit
native GetExpansionFoe      takes nothing                               returns unit
native GetEnemyExpansion    takes nothing                               returns unit
native GetExpansionX        takes nothing                               returns integer
native GetExpansionY        takes nothing                               returns integer
native SetStagePoint        takes real x, real y                        returns nothing
native AttackMoveKill       takes unit target                           returns nothing
native AttackMoveXY         takes integer x, integer y                  returns nothing
native LoadZepWave          takes integer x, integer y                  returns nothing
native SuicidePlayer        takes player id, boolean check_full         returns boolean
native SuicidePlayerUnits   takes player id, boolean check_full         returns boolean
native CaptainInCombat      takes boolean attack_captain                returns boolean
native IsTowered            takes unit target                           returns boolean

native ClearHarvestAI       takes nothing                               returns nothing
native HarvestGold          takes integer town, integer peons           returns nothing
native HarvestWood          takes integer town, integer peons           returns nothing
native GetExpansionPeon     takes nothing                               returns unit

native StopGathering        takes nothing                               returns nothing
native AddGuardPost         takes integer id, real x, real y            returns nothing
native FillGuardPosts       takes nothing                               returns nothing
native ReturnGuardPosts     takes nothing                               returns nothing
native CreateCaptains       takes nothing                               returns nothing
native SetCaptainHome       takes integer which, real x, real y         returns nothing
native ResetCaptainLocs     takes nothing                               returns nothing
native ShiftTownSpot        takes real x, real y                        returns nothing
native TeleportCaptain      takes real x, real y                        returns nothing
native ClearCaptainTargets  takes nothing                               returns nothing
native CaptainAttack        takes real x, real y                        returns nothing
native CaptainVsUnits       takes player id                             returns nothing
native CaptainVsPlayer      takes player id                             returns nothing
native CaptainGoHome        takes nothing                               returns nothing
native CaptainIsHome        takes nothing                               returns boolean
native CaptainIsFull        takes nothing                               returns boolean
native CaptainIsEmpty       takes nothing                               returns boolean
native CaptainGroupSize     takes nothing                               returns integer
native CaptainReadiness     takes nothing                               returns integer
native CaptainRetreating    takes nothing                               returns boolean
native CaptainReadinessHP   takes nothing                               returns integer
native CaptainReadinessMa   takes nothing                               returns integer
native CaptainAtGoal        takes nothing                               returns boolean
native CreepsOnMap          takes nothing                               returns boolean
native SuicideUnit          takes integer count, integer unitid         returns nothing
native SuicideUnitEx        takes integer ct, integer uid, integer pid  returns nothing
native StartThread          takes code func                             returns nothing
native Sleep                takes real seconds                          returns nothing
native UnitAlive            takes unit id                               returns boolean
native UnitInvis            takes unit id                               returns boolean
native IgnoredUnits         takes integer unitid                        returns integer
native TownThreatened       takes nothing                               returns boolean
native DisablePathing       takes nothing                               returns nothing
native SetAmphibious        takes nothing                               returns nothing

native CommandsWaiting      takes nothing                               returns integer
native GetLastCommand       takes nothing                               returns integer
native GetLastData          takes nothing                               returns integer
native PopLastCommand       takes nothing                               returns nothing
native MeleeDifficulty      takes nothing                               returns integer
7

» WarCraft 3 / Как узнать, что именно этот игрок нажал кнопку в диалоге

если Triggering Player равно Красный игрок, выполнять одни действия, а если Triggering Player равно синий игрок, то другие и т.д.
7

» WarCraft 3 / Дополнительный предметы для строения (башни)

тогда можно заменить исследование на создание юнита
здание создает определенного юнита -> повышаем уровень инвентаря
у этого способа есть несколько минусов:
  • одна иконка на всех уровнях улучшения
  • юнит не исчезнет на последнем уровне улучшения, а значит придется заменять здание на другое, но уже без этого юнита
7

» WarCraft 3 / Дополнительный предметы для строения (башни)

можно улучшать одно здание в другое. например, Ратуша -> Крпость, где у Ратуши будет 0 слотов, а у Крепости - 1
и хочу обратить ваше, это делается в Редакторе Объектов, без всяких триггеров)
7

» WarCraft 3 / Как обрабатывается код триггеров по дефолту?

функции располагаются в том порядке, в котором их создали
кроме того, есть еще кастом код, который всегда выше кода триггеров
7

» WarCraft 3 / Как сменить анимацию юнита?

gabriel_fisher, скорее всего, тебе нужны анимационные теги
теги бывают разные: alternate, gold, lumber, defend, flesh и др
например, у рабочего есть анимации attack, walk, death и если ему добавить тег lumber, тогда вместо этих анимаций будут проигрываться attack lumber, walk lumber и death lumber соответственно.
Теги можно добавлять/убирать тригерно
Анимация - Add/Remove Animation Tag
или с помощью jass
native AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothing
Также теги можно добавлять в Редакторе Объектов
Графика - Нужная анимация
7

» WarCraft 3 / Не работает кусок кода

короче, вот рабочий вариант
смотреть сюда
function Trig_HeroArcheressSkillAFirst_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ASkA'
endfunction

function HeroArcheressSkillAFirst_SelectGroup takes nothing returns nothing
    if GetUnitAbilityLevel(GetEnumUnit(), 'B006') > 0 then
        call PauseUnit(GetEnumUnit(), true)
        call GroupAddUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Стан")
    endif
endfunction

function Trig_HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    set HeroArcheressSkillADammi = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'h003', GetSpellTargetX(), GetSpellTargetY(), bj_UNIT_FACING) //создаем дамми
    call UnitApplyTimedLife(HeroArcheressSkillADammi, 'BTLF', GetUnitAbilityLevel(GetTriggerUnit(), 'ASkA')) //таймер жизни для дамми
    
    call TriggerSleepAction (1.) //из-за ауры увеличил задержку
    //убрал утечки
    call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 500.00, null)
    call ForGroup(g , function HeroArcheressSkillAFirst_SelectGroup )
    call DestroyGroup(g)
    set g = null
    //
    call TimerStart (HeroArcheressSkillATimer, 1., true, null) //запускаем таймер
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillABase takes nothing returns nothing
    set gg_trg_HeroArcheressSkillABase = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HeroArcheressSkillABase, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_HeroArcheressSkillABase, Condition( function Trig_HeroArcheressSkillAFirst_Conditions ) )
    call TriggerAddAction( gg_trg_HeroArcheressSkillABase, function Trig_HeroArcheressSkillAFirst_Actions )
endfunction
globals
    integer HeroArcheressSkillACircle = 0
    timer HeroArcheressSkillATimer = CreateTimer() //таймер
endglobals

function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
    if GetWidgetLife(HeroArcheressSkillADammi) > 0 then //проверяем, жив ли дамми юнит
        call BJDebugMsg("Урон" )
        call UnitDamageTarget(udg_HeroArcheress, GetEnumUnit(), 50, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    else //иначе удаляем его из группы и снимаем паузу
        call PauseUnit(GetEnumUnit(), false)//PauseUnitBJ( false , GetEnumUnit() )
        call GroupRemoveUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Выход")
    endif
endfunction

function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    call ForGroup(HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage)
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
    set gg_trg_HeroArcheressSkillAFirst = CreateTrigger(  )
    call TriggerRegisterTimerExpireEvent(gg_trg_HeroArcheressSkillAFirst, HeroArcheressSkillATimer) //событие таймер истекает
    call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction
7

» WarCraft 3 / Не работает кусок кода

WakVellios, мда, написал код и не удосужился проверить) сейчас еще раз скину
7

» WarCraft 3 / Не работает кусок кода

а ведь и вправду не снимается))
TriggerSleepAction в группе не работает)
7

» WarCraft 3 / Не работает кусок кода

кажется нашел в чем дело
я правда слегка изменил код, заменил bj на native
function HeroArcheressSkillAFirst_SelectGroup takes nothing returns nothing
    if GetUnitAbilityLevel(GetEnumUnit(), 'B006') > 0 then
        call GroupAddUnit(HeroArcheressSkillAGroup, GetEnumUnit())
    endif
endfunction
в общем, ни один юнит не проходит проверку, потому что аура накладывается не сразу
в итоге группа оказывается пустой и следующий триггер не запускается
7

» WarCraft 3 / Не работает кусок кода

можешь перенести эти 3 триггера на отдельную карту и выложить здесь?