Jakie funkcjie do upgrade system?

Status
Zamknięty.
Odp: Jakie funkcjie do upgrade system?

No Ale Nie Rozumiem twojego pytania, tam Ci pisze Gdzie i Co Masz dodac, Pozniej tam masz linijke <action itemid="2270" script="upgrade system.lua" />
2270 to masz id itemu poprzez ktory bedziesz upgradowal inne itemy :)
 
Odp: Jakie funkcjie do upgrade system?

Nieoto mi chodzi chodzi mi ,?e gdy za?aduje ten upgrade system i chce cos ulepszy? wyskakuje takie co?
Kod:
24/10/2010 12:00:24] [Error - Action Interface] 
[24/10/2010 12:00:24] data/actions/scripts/upgrade system.lua:onUse
[24/10/2010 12:00:24] Description: 
[24/10/2010 12:00:24] data/actions/scripts/upgrade system.lua:13: attempt to call global 'getItemArmor' (a nil value)
[24/10/2010 12:00:24] stack traceback:
[24/10/2010 12:00:24] 	data/actions/scripts/upgrade system.lua:13: in function <data/actions/scripts/upgrade system.lua:11>
 
Odp: Jakie funkcjie do upgrade system?

Wiem,mialem ten sam problem ze skryptem Gelia...

Uzyj innego.
Kod:
--- Perfect refine system by Mock the bear (MTB).
--- Email: [email]mock_otnet@hotmail.com[/email]
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = nivel do item
-- @ = max level
local gain = {
gainArmor='&p+(3)',loseArmor='&p-(2)',
gainShield='&s+#',loseShield='&s-(#+3)',
gainAttack='&a+(1*(#))',loseAttack='&a-(1*(#+2))',
gainDefense='&d+(1*(#))',loseDefense='&d-(1*(#+3))',
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
maxlvl = 5,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8306] = 0, -- 0% additional
[8305] = 100, -- 50%
}
if not setItemName then
    function setItemName(uid,name)
		return doItemSetAttribute(uid,'name',name)
    end
    function setItemArmor(uid,name)
		return doItemSetAttribute(uid,'armor',name)
    end
	function setItemDefense(uid,name)
		return doItemSetAttribute(uid,'defense',name)
	end
	function setItemAttack(uid,name)
		return doItemSetAttribute(uid,'attack',name)
	end
	function getItemAttack(uid)
		return getItemAttribute(uid,'attack')
	end
	function getItemDefense(uid)
		return getItemAttribute(uid,'defense')
	end
function getItemArmor(uid)
   if type(uid) == 'number' then
      return getItemAttribute(uid,'armor')
   else
      return getItemInfo(uid.itemid).armor
   end
end
end
 
local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
		return true
	end
	return false
end
local function isWeapon(uid) -- Function by Mock the bear.
	uid = uid or 0
	local f = getItemWeaponType(uid)
	if f == 1 or f == 2 or f == 3 then
		return true
	end
	return false
end
local function isShield(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 4 then
		return true
	end
	return false
end
local function isBow(uid) -- Function by Mock the bear.
	uid = uid or 0
	if getItemWeaponType(uid) == 5 then
		return true
	end
	return false
end
local function getWeaponLevel(uid) -- Function by Mock the bear.
   uid = uid or 0
   local name = getItemName(uid.uid) or getItemInfo(uid.itemid).name or ''
   local lvl = string.match(name,'%s%+(%d+)%s*')
   return tonumber(lvl) or 0
end
local function doTransform(s,i) -- Function by Mock the bear.
    local c = string.gsub(s,'@',gain.maxlvl)
    local c = string.gsub(c,'&a',(getItemAttack(i.uid) ~= 0 and getItemAttack(i.uid) or getItemInfo(i.itemid).attack))
    local c = string.gsub(c,'&d',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&s',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&p',(getItemArmor(i.uid) ~= 0 and getItemArmor(i.uid) or getItemInfo(i.itemid).armor))
    local c = string.gsub(c,'#',getWeaponLevel(i))
    local q = assert(loadstring('return '..c))
    return math.floor(assert(q()))
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if item.uid == 0 or item.itemid == 0 then return false end
		 toPosition.stackpos = 255
         if isInArray(gain.blocked_ids, itemEx.itemid)
          or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5)
           or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx))
             or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
                doPlayerSendTextMessage(cid, 24,"You cant refine this item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
		if level == gain.maxlvl then
			doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")
		end
		doPlayerSendTextMessage(cid, 24,"Trying refine with "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% of sucess!")
        if chance+it[item.itemid] >= math.random(0,100) then
			local nm = getItemName(itemEx.uid)
			local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
			slot = slot~='' and ' '..slot or slot
            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1)..slot)
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item has been upgrated to +"..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 12)
            if isArmor(itemEx) then
				local get = doTransform(gain.gainArmor,itemEx)
				setItemArmor(itemEx.uid,get)
			elseif isBow(itemEx.uid) then
				setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
			elseif isWeapon(itemEx.uid) then
				setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
				setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx.uid) then
				setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
			end
        else
			if level == 0 then
				addEvent(doPlayerSendTextMessage,500,cid, 24,"No effect.")
				doSendMagicEffect(toPosition, 2)
			elseif level > 0 then
			local nm = getItemName(itemEx.uid)
			local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
				slot = slot~='' and ' '..slot or slot
				if level == 1 then
					setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..slot)
					addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to normal.")
				else
					setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
					addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to +"..(level-1)..slot..".")
				end
				if isArmor(itemEx) then
					setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
				elseif isWeapon(itemEx.uid) then
					setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
					setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
				elseif isBow(itemEx.uid) then
					setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
				elseif isShield(itemEx.uid) then
					setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
				end
			end
			doSendMagicEffect(toPosition, 9)
        end
	doRemoveItem(item.uid,1)
	return true
end

a actions.xml
Kod:
<action itemid="8306" event="script" value="upgrade.lua"/>
        <action itemid="8305" event="script" value="upgrade.lua"/>

Jesli jednak chcesz zeby dzialal ten skrypt co masz to musisz zeedytowac w dosc --> plik lua_functions
 
Odp: Jakie funkcjie do upgrade system?

ale mi chodzi?o ,?eby jak doda? te funkcjie bo ja mam inny upgrade system ale potrzeba mi ?eby mi dzia?a? by geilo
 
Odp: Jakie funkcjie do upgrade system?

Refresh!CZEKAM NA ODPOWIEDZI
 
Odp: Jakie funkcjie do upgrade system?

~~~~~~~~~~~~~~~~~~~~Refresh~~~~~~~~~~~~~~~~
 
Odp: Jakie funkcjie do upgrade system?

Czekam na odpowiedzi!!!!!!Refresh
 
Odp: Jakie funkcjie do upgrade system?

Od?wie?am................................................
 
Status
Zamknięty.
Back
Do góry