Например после репика героя все равно он хранит в памяти как и его удалить. Спасибо
function onCommandPlayer takes nothing returns nothing
        local player p = GetTriggerPlayer()
        local string s = GetEventPlayerChatString()
        local integer i = GetPlayerId(p)
        
        if SubString(s, 1, 7) == "delete" then
            if characters[i] != 0 then
                call RemoveUnit(characters[i].u)
                call characters[i].destroy()
                set characters[i] = 0
            endif
        endif
endfunction
0
17
7 лет назад
0
RemoveUnit(твой герой)
0
23
7 лет назад
0
ledoed, удаляет юнит но в памяти останет герой... Код не видиш что ли?
0
17
7 лет назад
Отредактирован ledoed
0
characters тебе из этой структуры гера удалить?
0
23
7 лет назад
0
ledoed, нет после удаление в таверне не возможно вызвать новый герой пишет что герой есть а само оно удалено....
0
32
7 лет назад
0
JyHgle, код в студию, явно у вас кривой код - не учитывающий возможность репика.
Ну или делайте как во всяких ЛоД дотах, морф героя в того кого нужно.
Давненько хотел реализовать пик героя в таверне через покупку даммиков с последующей погрузкой, но как то случай не подвернулся.
0
23
7 лет назад
0
quq_CCCP, ошибка у меня нету, простой пример кода и стандартный таверна

globals
        public unit array characters[12]
endglobals

function onCreateHero takes nothing returns nothing
        local unit u = GetSoldUnit()
        local player p = GetOwningPlayer(u)
        set characters[GetPlayerId(p)] = u
    endfunction
    
    function onCommandPlayer takes nothing returns nothing
        local player p = GetTriggerPlayer()
        local string s = GetEventPlayerChatString()
        local integer i = GetPlayerId(p)

        if SubString(s, 1, 7) == "delete" then
            if characters[i] != 0 then
                call RemoveUnit(characters[i])
                set characters[i] = null
            endif
        endif

    endfunction

    function Initialize takes nothing returns nothing
        local trigger t = CreateTrigger()
        local trigger c = CreateTrigger()
        local integer i = 0
        local player p
        
        call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SELL)
        call TriggerAddAction(t, function onCreateHero)
    
        loop
            exitwhen i >= bj_MAX_PLAYERS
            set p = Player(i)
            call TriggerRegisterPlayerChatEvent(c, p, "-", false)
            set i = i + 1
        endloop
        
        call TriggerAddAction(c, function onCommandPlayer)
		set p = null
    endfunction
Таверна каждый герой имеет требование алтарь, после пика закрывает доступ к 2 героя все хорошо, после удаление героя он остается! закрыт таверна
0
15
7 лет назад
Отредактирован EnergyFrost
0
JyHgle, попробуй сначала сменить владельца, а потом удалить. Это должно помочь открыть доступ.
PS зачем в функции onCreateHero инициализировпьь лишние локалки. Используй функции сразу
0
23
7 лет назад
0
EnergyFrost, не помогает чет!!!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.