Я откопал из своих старых записей, датируемые 2014 годом.. Возможно подобная штука уже есть. Но для новичков я выложу. Это простой триггер удаления умирающих книг. Как вы знаете книги оставляют лаги после себя. Но это не для покупных книг, а для создающихся на аренах предметах, которые игрок может разрушить.
Все просто она получает передмет при помощи конвета его из виджета в предмет, при помощи "хеш-ретурн-бага". Хотя там в хеш таблице просто handle, int, string и float с bool-ом. Не суть.
умер предмет widget => handle => item ok
умер предмет wdiget => handle => effect error + fatal baby (Шутка у эффекта будет null)
SetUnitX/Y() с эффектом через юнит не прокатит если эффект поробовать превратить в юнит с помощью конверта при сопомощи хеш таблицы, однако если попробовать вернёт null
Так вот для тех, кто не хочет искать и лазить искать подобное оставлю здесь:
vJass
library ItemDeadEvents initializer Init
    globals
        trigger ITEM_DEAD_TRIGGER   =   null
    endglobals
    
    function WidgetToItem takes widget whichItem returns item
        call SaveWidgetHandle(Htb,0,0,whichItem)  // Вместо Htb подставите свою переменную хеш-таблицы
        return LoadItemHandle(Htb,0,0)
    endfunction 
    
    private function Actions takes nothing returns nothing
            call RemoveItem(WidgetToItem(GetTriggerWidget()))
    endfunction 
    
    private function Init takes nothing returns nothing
            set ITEM_DEAD_TRIGGER = CreateTrigger()
            call TriggerAddAction(ITEM_DEAD_TRIGGER, function Actions )
    endfunction 
    
    function RegisterItemDeathEvent takes item whichItem returns nothing
        call TriggerRegisterDeathEvent( ITEM_DEAD_TRIGGER, whichItem )
    endfunction 
endlibrary
cJass
library ItemDeadEvents initializer Init{
	trigger ITEM_DEAD_TRIGGER   =   null
	
	item WidgetToItem(widget whichItem){
        SaveWidgetHandle(Htb,0,0,whichItem)  // Вместо Htb подставите свою переменную хеш-таблицы
        return LoadItemHandle(Htb,0,0)
    } 
    
    private void Actions(){
		RemoveItem(WidgetToItem(GetTriggerWidget()))
    }
    
    private void Init(){
		  ITEM_DEAD_TRIGGER = CreateTrigger()
		 TriggerAddAction(ITEM_DEAD_TRIGGER, function Actions )
    }
    
    void RegisterItemDeathEvent(item whichItem){
		TriggerRegisterDeathEvent( ITEM_DEAD_TRIGGER, whichItem )
    } 
}

На этом, все спасибо за просмотр..
`
ОЖИДАНИЕ РЕКЛАМЫ...