• 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!

doItemSetAttribute - Problem

wladca

Member
Joined
Dec 9, 2008
Messages
641
Reaction score
6
Location
Poland,Grodzisk Mazowiecki
Chce ze jak uzyje przedmiotu z doItemSetAttribute(itemEx.uid, "shootRange", 5) na inny przedmiot ktory w items.xml ma range= 2 i bije z 2 kratek to zmieni te 2 kratki na 5... ale nie mam pojecia dlaczego to nie dziala 1!! prosze o pomoc !
 
Może coś w tym stylu? (Z pamięci)

LUA:
doItemSetAttribute(itemEx.uid, "shootrange", getItemAttribute(itemEx.uid, "shootrange") + 5)

Funkcja moze miec zla nazwe wiec jak cos to popraw.
 
nie uzywasz tego czasem na stackable itemsach ?
 
@Samme
waywala mi blad:
Code:
[3:17:13.941] [Error - Action Interface]
[3:17:13.941] data/actions/scripts/up.lua:onUse
[3:17:13.941] Description:
[3:17:13.941] data/actions/scripts/up.lua:57: attempt to perform arithmetic on a nil value
[3:17:13.941] stack traceback:
[3:17:13.941]   data/actions/scripts/up.lua:57: in function <data/actions/scripts/up.lua:42>

i wlasnie w tej lini dodalem:
doItemSetAttribute(itemEx.uid, "shootrange", getItemAttribute(itemEx.uid, "shootrange") + 1)


@koob:
Uzywam tego do:
Code:
	<item id="7959" article="the" name="HA sword">
		<attribute key="weight" value="11000"/>
		<attribute key="defense" value="10000"/>
		<attribute key="attack" value="10000"/>
		<attribute key="extraattack" value="1000"/>
		<attribute key="weaponType" value="sword"/>
		<attribute key="extradef" value="1000"/>
		<attribute key="range" value="2"/>
	</item>


a takze:
Code:
	<item id="5907" article="a" name="HA shot">
		<attribute key="weight" value="11000"/>
		<attribute key="defense" value="10000"/>
		<attribute key="attack" value="10000"/>
		<attribute key="extraattack" value="1000"/>
		<attribute key="weaponType" value="distance"/>
		<attribute key="shootType" value="smallstone"/>
		<attribute key="range" value="6"/>
		<attribute key="extradef" value="1000"/>
	</item>



Jezeli to pomoze oto reszta skryptu:
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][(level+1)].successParcent >= math.random(1,100)) and (level+1) or conf["level"][level].downrageLevel
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratz! Upgraded was successful, your item has become stronger!")
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 

            doItemSetAttribute(itemEx.uid, "shootrange", getItemAttribute(itemEx.uid, "shootrange") + 1)

            doItemSetAttribute(itemEx.uid, "attack",  upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end
 
Last edited:
@Samme
waywala mi blad:
Code:
[3:17:13.941] [Error - Action Interface]
[3:17:13.941] data/actions/scripts/up.lua:onUse
[3:17:13.941] Description:
[3:17:13.941] data/actions/scripts/up.lua:57: attempt to perform arithmetic on a nil value
[3:17:13.941] stack traceback:
[3:17:13.941]   data/actions/scripts/up.lua:57: in function <data/actions/scripts/up.lua:42>

i wlasnie w tej lini dodalem:
doItemSetAttribute(itemEx.uid, "shootrange", getItemAttribute(itemEx.uid, "shootrange") + 1)


@koob:
Uzywam tego do:
Code:
	<item id="7959" article="the" name="HA sword">
		<attribute key="weight" value="11000"/>
		<attribute key="defense" value="10000"/>
		<attribute key="attack" value="10000"/>
		<attribute key="extraattack" value="1000"/>
		<attribute key="weaponType" value="sword"/>
		<attribute key="extradef" value="1000"/>
		<attribute key="range" value="2"/>
	</item>


a takze:
Code:
	<item id="5907" article="a" name="HA shot">
		<attribute key="weight" value="11000"/>
		<attribute key="defense" value="10000"/>
		<attribute key="attack" value="10000"/>
		<attribute key="extraattack" value="1000"/>
		<attribute key="weaponType" value="distance"/>
		<attribute key="shootType" value="smallstone"/>
		<attribute key="range" value="6"/>
		<attribute key="extradef" value="1000"/>
	</item>



Jezeli to pomoze oto reszta skryptu:
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][(level+1)].successParcent >= math.random(1,100)) and (level+1) or conf["level"][level].downrageLevel
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratz! Upgraded was successful, your item has become stronger!")
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 

            doItemSetAttribute(itemEx.uid, "shootrange", getItemAttribute(itemEx.uid, "shootrange") + 1)

            doItemSetAttribute(itemEx.uid, "attack",  upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end
dopisz, że to reszta mojego skryptu...
 
No tak to jest twoj skrypt Azi ale czy ja napisalem ze to jest moja praca? ja tylko pisze ze mam problem z dodaniem funkcji :/ Wiec moze ty wiesz jak to zrobic?
 
Back
Top