• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Używanie Funkcji: doCopyItem(item, attributes)

Shiatsu

New Member
Joined
Aug 13, 2009
Messages
20
Reaction score
0
W jaki sposób działa funkcja:

doCopyItem(item, attributes)

Nigdzie nie mogę znaleźć odpowiedzi. Są jakieś skrypty z tym, ale nie łapie się w nich.
 
PHP:
function doCopyItem(item, attributes)
    local attributes = attributes or false

    local ret = doCreateItemEx(item.itemid, item.type)
    if(attributes) then
        if(item.actionid > 0) then
            doItemSetAttribute(ret, "aid", item.actionid)
        end
    end

    if(isContainer(item.uid)) then
        for i = (getContainerSize(item.uid) - 1), 0, -1 do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)
            end
        end
    end

    return getThing(ret)
end
Kod źródłowy mówi nam wszystko. Funkcja ta zwraca nam obiekt o prawie identycznych wartość, i jeśli jest pojemnikiem, także posiada takie same obiekty wewnątrz jego. Użycie:
PHP:
local cloneObject = doCopyItem(item, true --[[jeśli dasz "true", skopiuje także "actionid"]])
 
Ok, a gdzie ten item znajdzie się. Jak zrobić żeby wpadał graczowi do BP?

Od razu żeby nie zakładać nowego tematu:
Jak to jest z CONDITION_ATTRIBUTES, przykładowo dam żeby dodawało 100 HPMAX.
A chcąc inną runą dodać np. 100 MPMAX to poprzednia kondycja znika.

Da rady jakoś zrobić by kolejna nie usuwała poprzedniej?
 
Last edited:
@2up
nom mowi duzo, ale to nie jest kod zrodlowy.
@topic
LUA:
doPlayerAddItemEx(cid, doCopyItem(item, true))
 
Ok, a gdzie ten item znajdzie się. Jak zrobić żeby wpadał graczowi do BP?

Od razu żeby nie zakładać nowego tematu:
Jak to jest z CONDITION_ATTRIBUTES, przykładowo dam żeby dodawało 100 HPMAX.
A chcąc inną runą dodać np. 100 MPMAX to poprzednia kondycja znika.

Da rady jakoś zrobić by kolejna nie usuwała poprzedniej?
Mi się wydaje, że tutaj chodzi o subId] - parametr kondycji, tworzysz tak kondycje aby się nie nakładały cyferki - a do usuwania powinno służyć to
PHP:
doRemoveCondition(cid, type[, subId])

Jeśli chodzi o pierwsze pytanie to tą funkcją:
PHP:
doPlayerAddItemEx(cid, uid[, canDropOnMap = FALSE])
 
Nakładały cyferki? Czyli inna nazwa kondycji czy coś innego.

doPlayerAddItemEx(cid, uid[, canDropOnMap = FALSE])

Tutaj nie może znaleźć mi itemu.

W takim skrypcie:

function onEquip(cid, item, slot)
doPlayerAddItemEx(cid, doCopyItem(item, true))
end
 
Kocham wolną Amerykę.
PHP:
function onEquip(cid, item, slot)
 doPlayerAddItemEx(cid, doCopyItem(item, true).uid)
 end
 
Głupie nie dopatrzenie :}
Możliwe jest żeby crashował mi taki przedmiot silnik?

Wychodzi na to że skopiowany item crashuje mi silnik. Wystarczy na niego kliknąć.
Jak temu zapobiec?

-----------------

Okazuje się że wina była po stronie mojego skryptu.

Ale jest inny problem, mianowicie ta funkcja nie działa.
Zwykłego itema kopiuje bez bonusów, takiego jakiego jest w items.xml.

W czym problem?
 
Last edited:
Back
Top