Ir para conteúdo
  • 0

Npc Troca Item Ou Forja


blumaster

Pergunta

Galera estou com um projeto meio complicado como estou sosinho no mesmo apelo a pedidos =P.

 

Criei 2 items para ser mais expecifico sao 16 items irei usar 2 como exemplo:

 

Brave Armor

 

Upando o brave armor pelo refine sistem ate +25 ele ganha uma action id.

 

Sendo esta : 20025

 

agora presciso criar um npc ou sistema de forja que faça o seguinte:

 

Eu tendo o brave armor+25

 

Falando com este npc trocaria por uma ultimate armor

 

Ou caso de forja seria mais simples colocava meu brave armor +25 numa mesa e puxava uma alavanca e viraria uma ultimate armor.

 

ae que entra meu problema nao sei criar um script que verifica se o item esta +25 ou seja com esta action-id

 

20025

 

para depois fazer a troka

 

alguem poderia me ajudar?

 

 

este ultimate item irei usar com um sistema de efeitos criado por

Newtonnotwen

 

por um pedido meu na comunidade em um projeto meu.

 

no final do projeto quando eu disponibilizar para downloads seram adicionados todos os creditos a cada um que me ajudou.

 

 

meu projeto esta em 70% concluido.

 

quem poder ajudar agradeço.

 

Criando este sistema para mim =P.

 

UP:

 

Vendo que ninguem respondeu deve ser complicado entao resolvi acho que facilitar meu pedido.

 

exemplo:

 

Meu armor fica +25 ganha uma action-ID certo?

 

Teria como al inves de ganhar a action-id ele virar outro item?

 

Se sim meu script de refinamento e este:

 

 

-- PERFECT REFINE SYSTEM BY LPZ Edicoes e Adicionais Oroshroz e Blumaster

-- VERSION 2.0

 

Refine = {

config = {

max = 25, -- NíVEL MáXIMO DE REFINO

interface = 2, -- 1 PARA INGLêS, 2 PARA PORTUGUêS

message = {

type = MESSAGE_EVENT_DEFAULT,

delay = 0.5,

success = {"You have succeeded in upgrade of %s to level +%s", "Você refinou %s para o nível +%s com sucesso."},

fail = {"You have failed in upgrade of %s to level +%s", "Você falhou em refinar %s para o nível +%s."},

recede = {"You have failed in upgrade of %s to level +%s. The refine level has downgraded to +%s.", "Você falhou em refinar %s para o nível +%s e o nível regrediu para +%s."},

critical = {"You have critical failed in upgrade of %s to level +%s. The refine level has vanished.", "Você falhou criticamente em refinar %s para o nível +%s. O nível resetou."},

maxlevel = {"This %s is already on max upgrade level.", "Este(a) %s já está no nível máximo de refino."},

broadcast = {"%s has succeeded in the upgrade of a %s to level +%s.\nCongratulations.", "%s teve sucesso em refinar %s para o nível +%s."},

tool_error = {"This isn't a valid refine item.", "Esse não é um item de refino válido"},

tool_maxlevel = {"This %s can only upgrade items to level +%s", "Este(a) %s só pode refinar itens abaixo de +%s."},

notupgradeable = {"This item isn't upgradeable.", "Este item não é refinável"},

prompt = {"Trying to refine %s to level +%s with %s%% success rate.", "Tentando refinar %s ao level +%s com %s%% de chance de sucesso."},

notenoughitems = {"You don't have %s %s to refine this item.", "Você não tem %s %s para refinar este item."}

},

attributes = {{"attack", true}, {"defense", true}, {"armor", false}}, -- MEXA APENAS SE ENTENDER O CóDIGO

downgrade = 10, -- NíVEL QUE EQUIPAMENTOS COMEçAM A REGREDIR

critical = 15, -- NíVEL QUE EQUIPAMENTOS COMEçAM A RESETAR

broadcast = {level = 7, key = true}, -- CONFIGURAçãO DO BROADCAST: 'level' define quais níveis podem mandar broadcast e 'key' liga e desliga broadcasts.

},

tools = {

--[[

Configure aqui as diferentes ferramentas de refino.

 

[itemid] = {max = x, chancemax = y, removeable = z}

 

'itemid' será o itemid da ferramenta

'x' é até qual nível a ferramenta pode refinar

'chancemax' é um bônus que a ferramenta adiciona a chance de refino

'z' define se a ferramenta some depois de refinar [true ou false]

]]--

[8303] = {max = 25, chancemax = 13, removeable = true, reagent = 0, amountbylevel = false},

[8301] = {max = 10, chancemax = 11, removeable = true, reagent = 0, amountbylevel = false},

[8302] = {max = 15, chancemax = 12, removeable = false, reagent = 0, amountbylevel = true},

[8304] = {max = 25, chancemax = 100, removeable = false, reagent = 0, amountbylevel = true}

 

},

isEquipment = function(self)

local weapontype = self:getItemWeaponType()

if (weapontype > 0 and weapontype < 7) or self.item.info.armor ~= 0 then

return true

end

return false

end,

setItemName = function(self, name)

return doItemSetAttribute(self.item.uid, "name", name)

end,

chance = function(self)

local formula = math.ceil((100/math.sqrt((((self.config.max/4)+(self.item.level*2.3))/self.config.max)*self.item.level)))

local ret = {base = (formula > 100 and 100 or formula), downgrade = 7 * self.item.level, critical = 2.5 * self.item.level}

return ret

end,

amount = function(self)

return math.ceil(self.item.level * 0.33)

end

}

 

function Refine:load(item)

local obj = setmetatable({item = {uid = item.uid, info = getItemInfo(item.itemid)}}, {__index = function(self, index)

if(_G[index]) then

return setmetatable({callback = _G[index]}, {__call = function(self, ...)

return self.callback(item.uid, ...)

end})

else

return Refine[index]

end

end})

 

if not obj:isEquipment() then

return false

end

obj:updateLevel()

return obj

end

 

function Refine:updateLevel()

local info = self:getItemName():match("%+(%d+)")

self.item.level = (tonumber(info) or 0)

end

 

function Refine:getLevel()

local info = self:getItemName():match("%+(%d+)")

return tonumber(info) or 0

end

 

function Refine:upgrade(cid, item)

if self.config.message.delay > 0 then doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.prompt[self.config.interface]:format(self.item.info.name, self.item.level + 1, (self:chance().base > 100 and 100 or self:chance().base))) end

local tool = self.tools[item.itemid]

if not tool then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_error[self.config.interface])

end

 

if self.item.level == self.config.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.maxlevel[self.config.interface]:format(self.item.info.name))

end

 

if self.item.level >= tool.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_maxlevel[self.config.interface]:format(getItemNameById(item.itemid), tool.max))

end

 

if tool.reagent ~= 0 then

local count = (tool.amountbylevel == true and self:amount() or 1)

if not doPlayerRemoveItem(cid, tool.reagent, count) then

return addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.notenoughitems[self.config.interface]:format(count, (count > 1 and getItemInfo(tool.reagent).plural or getItemNameById(tool.reagent))))

end

end

 

if tool.removeable == true then doRemoveItem(item.uid, 1) end

if (self:chance().base + tool.chancemax) * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.success[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

 

if self.config.broadcast.key == true and (self.item.level + 1) >= self.config.broadcast.level then

 

doBroadcastMessage(self.config.message.broadcast[self.config.interface]:format(getCreatureName(cid), self.item.info.name, (self.item.level + 1)))

end

local r = self.config.attributes

 

 

 

 

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) + (r[2] == true and (self.item.level + 1) or 1))

end

end

else

self:setItemName(self:getItemName() .." +1")

for i = 1, #r do

if self.item.info[r[1]] ~= 0 or self:getItemWeaponType() ~= 5 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]] + 1)

end

end

end

 

 

 

 

 

else

local r = self.config.attributes

if self.item.level >= self.config.critical then

if self:chance().critical * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.critical[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

elseif self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

elseif self.item.level >= self.config.downgrade then

if self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

end

 

 

if self.item.level >= 24 then

doItemSetAttribute(self.item.uid,"aid",20025)

end

 

 

return true

end

 

Editado por blumaster
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Por favor, ponha o seguinte arquivo em spoiler para melhorar a visualização do tópico, ele é muito grande.

-- PERFECT REFINE SYSTEM BY LPZ Editado por Oroshroz

-- VERSION 2.0

 

Refine = {

config = {

max = 25, -- NíVEL MáXIMO DE REFINO

interface = 2, -- 1 PARA INGLêS, 2 PARA PORTUGUêS

message = {

type = MESSAGE_EVENT_DEFAULT,

delay = 0.5,

success = {"You have succeeded in upgrade of %s to level +%s", "Você refinou %s para o nível +%s com sucesso."},

fail = {"You have failed in upgrade of %s to level +%s", "Você falhou em refinar %s para o nível +%s."},

recede = {"You have failed in upgrade of %s to level +%s. The refine level has downgraded to +%s.", "Você falhou em refinar %s para o nível +%s e o nível regrediu para +%s."},

critical = {"You have critical failed in upgrade of %s to level +%s. The refine level has vanished.", "Você falhou criticamente em refinar %s para o nível +%s. O nível resetou."},

maxlevel = {"This %s is already on max upgrade level.", "Este(a) %s já está no nível máximo de refino."},

broadcast = {"%s has succeeded in the upgrade of a %s to level +%s.\nCongratulations.", "%s teve sucesso em refinar %s para o nível +%s."},

tool_error = {"This isn't a valid refine item.", "Esse não é um item de refino válido"},

tool_maxlevel = {"This %s can only upgrade items to level +%s", "Este(a) %s só pode refinar itens abaixo de +%s."},

notupgradeable = {"This item isn't upgradeable.", "Este item não é refinável"},

prompt = {"Trying to refine %s to level +%s with %s%% success rate.", "Tentando refinar %s ao level +%s com %s%% de chance de sucesso."},

notenoughitems = {"You don't have %s %s to refine this item.", "Você não tem %s %s para refinar este item."}

},

attributes = {{"attack", true}, {"defense", true}, {"armor", false}}, -- MEXA APENAS SE ENTENDER O CóDIGO

downgrade = 10, -- NíVEL QUE EQUIPAMENTOS COMEçAM A REGREDIR

critical = 15, -- NíVEL QUE EQUIPAMENTOS COMEçAM A RESETAR

broadcast = {level = 7, key = true}, -- CONFIGURAçãO DO BROADCAST: 'level' define quais níveis podem mandar broadcast e 'key' liga e desliga broadcasts.

},

tools = {

--[[

Configure aqui as diferentes ferramentas de refino.

 

[itemid] = {max = x, chancemax = y, removeable = z}

 

'itemid' será o itemid da ferramenta

'x' é até qual nível a ferramenta pode refinar

'chancemax' é um bônus que a ferramenta adiciona a chance de refino

'z' define se a ferramenta some depois de refinar [true ou false]

]]--

[8303] = {max = 25, chancemax = 13, removeable = true, reagent = 0, amountbylevel = false},

[8301] = {max = 10, chancemax = 11, removeable = true, reagent = 0, amountbylevel = false},

[8302] = {max = 15, chancemax = 12, removeable = false, reagent = 0, amountbylevel = true},

[8304] = {max = 25, chancemax = 100, removeable = false, reagent = 0, amountbylevel = true}

 

},

isEquipment = function(self)

local weapontype = self:getItemWeaponType()

if (weapontype > 0 and weapontype < 7) or self.item.info.armor ~= 0 then

return true

end

return false

end,

setItemName = function(self, name)

return doItemSetAttribute(self.item.uid, "name", name)

end,

chance = function(self)

local formula = math.ceil((100/math.sqrt((((self.config.max/4)+(self.item.level*2.3))/self.config.max)*self.item.level)))

local ret = {base = (formula > 100 and 100 or formula), downgrade = 7 * self.item.level, critical = 2.5 * self.item.level}

return ret

end,

amount = function(self)

return math.ceil(self.item.level * 0.33)

end

}

 

function Refine:load(item)

local obj = setmetatable({item = {uid = item.uid, info = getItemInfo(item.itemid)}}, {__index = function(self, index)

if(_G[index]) then

return setmetatable({callback = _G[index]}, {__call = function(self, ...)

return self.callback(item.uid, ...)

end})

else

return Refine[index]

end

end})

 

if not obj:isEquipment() then

return false

end

obj:updateLevel()

return obj

end

 

function Refine:updateLevel()

local info = self:getItemName():match("%+(%d+)")

self.item.level = (tonumber(info) or 0)

end

 

function Refine:getLevel()

local info = self:getItemName():match("%+(%d+)")

return tonumber(info) or 0

end

 

function Refine:upgrade(cid, item)

if self.config.message.delay > 0 then doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.prompt[self.config.interface]:format(self.item.info.name, self.item.level + 1, (self:chance().base > 100 and 100 or self:chance().base))) end

local tool = self.tools[item.itemid]

if not tool then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_error[self.config.interface])

end

 

if self.item.level == self.config.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.maxlevel[self.config.interface]:format(self.item.info.name))

end

 

if self.item.level >= tool.max then

return doPlayerSendTextMessage(cid, self.config.message.type, self.config.message.tool_maxlevel[self.config.interface]:format(getItemNameById(item.itemid), tool.max))

end

 

if tool.reagent ~= 0 then

local count = (tool.amountbylevel == true and self:amount() or 1)

if not doPlayerRemoveItem(cid, tool.reagent, count) then

return addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.notenoughitems[self.config.interface]:format(count, (count > 1 and getItemInfo(tool.reagent).plural or getItemNameById(tool.reagent))))

end

end

 

if tool.removeable == true then doRemoveItem(item.uid, 1) end

if (self:chance().base + tool.chancemax) * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.success[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

 

if self.config.broadcast.key == true and (self.item.level + 1) >= self.config.broadcast.level then

 

doBroadcastMessage(self.config.message.broadcast[self.config.interface]:format(getCreatureName(cid), self.item.info.name, (self.item.level + 1)))

end

local r = self.config.attributes

 

 

 

 

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) + (r[2] == true and (self.item.level + 1) or 1))

end

end

else

self:setItemName(self:getItemName() .." +1")

for i = 1, #r do

if self.item.info[r[1]] ~= 0 or self:getItemWeaponType() ~= 5 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]] + 1)

end

end

end

 

 

 

 

 

else

local r = self.config.attributes

if self.item.level >= self.config.critical then

if self:chance().critical * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.critical[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

elseif self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

elseif self.item.level >= self.config.downgrade then

if self:chance().downgrade * 100 >= math.random(1, 10000) then

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.recede[self.config.interface]:format(self.item.info.name, (self.item.level + 1), (self.item.level - 1)))

if self.item.level > 0 then

self:setItemName(self:getItemName():gsub("%+(%d+)", "+".. (self.item.level - 1)))

for i = 1, #r do

if getItemAttribute(self.item.uid, r[1]) ~= nil then

doItemSetAttribute(self.item.uid, r[1], getItemAttribute(self.item.uid, r[1]) - (r[2] == true and self.item.level or 1))

end

end

else

self:setItemName(self.item.info.name)

for i = 1, #r do

if self.item.info[r[1]] ~= 0 then

doItemSetAttribute(self.item.uid, r[1], self.item.info[r[1]])

end

end

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

else

addEvent(doPlayerSendTextMessage, self.config.message.delay * 1000, cid, self.config.message.type, self.config.message.fail[self.config.interface]:format(self.item.info.name, (self.item.level + 1)))

end

end

 

 

if self.item.level >= 24 then

doItemSetAttribute(self.item.uid,"aid",20025)

end

 

 

return true

end

Não sabe botar em spoiler?

 

É simples basta fazer o seguinte:

 

[spoiler.]ARQUIVO[/spoiler.]

 

-Vermelho: Retire os pontos

-Roxo: O arquivo que ficara em spoiler.

 

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

 

Sobre a action acho muito difícil de faze-la, talvez impossível, porem me diga para que quer ela, que eu vou pensar em outra forma de fazer.

Link para o comentário
Compartilhar em outros sites

  • 0

Ontem voce me crio um script que colocava efeitos em item lembra?

 

Entao eu queria fazer o seguinte.

 

Eu tenho 4 sets novos no servidor

 

sendo o brave set para paladin e knight

e o Magician Set para druid e sorcerer.

 

estes 2 sets estao disponiveis em uma quest do servidor.

Minha intensao e a seguinte

 

nao queria disponibilizar os outros em quests que guilds solam facilmente e para dificultar eu usei o refinamento no Servidor.

 

Porem e dificiu quase impossivel deixar um item +25

 

As pedras de refinamento so se ganha na loteria e ganha 5 por hora.

 

Minha Ideia

 

Se um player conseguir deixar sua espada ou brave set ou magiacian +25

 

ele iria virar o segundo set que eu criei que no caso e o ultimate set.

 

O Melhor de todos do servidor porem nao queria por melhor item numa quest que pode ser solada em 1 hr entendeu?

 

neste sistema para o player ter um ultimate set completo ele demoraria um mes ou mais.

 

a menos que compre as pedras vips que upa 100% de chances sem errar porem so ganha elas no war event e 1 por vitoria ultimate set completo demoraria muito tempo

 

isso faria os player jogar + para ganhar as pedras na loteria e tambem seria um diferencia no meu servidor.

 

Porem aceito qualquer opniao talkaction,actions,sistemas o que for que possa mudar este item apenas no lvl+25 para o ultimate.

 

set ultimate teria o efeito do script que voce fez porem modifiquei os efeitos.

Editado por blumaster
Link para o comentário
Compartilhar em outros sites

  • 0

Sugiro o seguinte:

 

Ao em vez de ganhar a pedra na loteria ganha um item.

Quando esse item for utilizado tem chance de vir tal item, basta você deixar a chance 0.1% ou qualquer outra a sua escolha.

 

Caso queira assim basta fazer o seguinte:

 

Em actions.xml adicione:

<action itemid="1947" event="script" value="random.lua"/>

Editando:

 

-Vermelho: Item id

-Verde: nome do arquivo

 

Em data/actions/scrips crie um arquivo.lua, nomeio para random e adicione:

items = {

[0] = {id = 7735, count = 1, chance = 2},

[1] = {id = 7735, count = 1, chance = 5},

[2] = {id = 7735, count = 1, chance = 10},

[3] = {id = 7735, count = 1, chance = 15},

[4] = {id = 7735, count = 1, chance = 30},

[5] = {id = 7735, count = 1, chance = 100}

}

function onUse(cid, item, fromPos, itemEx, toPos)

for i = 0, #items do

if (items.chance > math.random(1, 100)) then

doPlayerAddItem(cid, items.id, items.count)

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Wow Você Ganho! Seu Item e '..getItemNameById(items.id)..'!', TALKTYPE_MONSTER)

end

end

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Não ganhei nada!', TALKTYPE_MONSTER)

end

Editando:

 

-Vermelho: Id do item

 

-Verde: Quantidade

-Laranja: Chance (de 0.1 a 100)

-Roxo: Mensagem quando receber o item

-Marrom: Mensagem quando não receber nada

 

Obs: A chance pode ser 0.1, 0.2... (Apenas UM numero depois do ponto)

 

Se quiser adicionar mais itens na lista faça o seguinte:

items = {

[0] = {id = 7735, count = 1, chance = 2},

[1] = {id = 7735, count = 1, chance = 5},

[2] = {id = 7735, count = 1, chance = 10},

[3] = {id = 7735, count = 1, chance = 15},

[4] = {id = 7735, count = 1, chance = 30},

[4] = {id = 7735, count = 1, chance = 30},

[5] = {id = 7735, count = 1, chance = 100}

}

function onUse(cid, item, fromPos, itemEx, toPos)

for i = 0, #items do

if (items.chance > math.random(1, 100)) then

doPlayerAddItem(cid, items.id, items.count)

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Wow Você Ganho! Seu Item e '..getItemNameById(items.id)..'!', TALKTYPE_MONSTER)

end

end

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Não ganhei nada!', TALKTYPE_MONSTER)

end

Observe que dupliquei a parte laranja, depois faça:

items = {

[0] = {id = 7735, count = 1, chance = 2},

[1] = {id = 7735, count = 1, chance = 5},

[2] = {id = 7735, count = 1, chance = 10},

[3] = {id = 7735, count = 1, chance = 15},

[4] = {id = 7735, count = 1, chance = 30},

[5] = {id = 7735, count = 1, chance = 30},

[6] = {id = 7735, count = 1, chance = 100}

}

function onUse(cid, item, fromPos, itemEx, toPos)

for i = 0, #items do

if (items.chance > math.random(1, 100)) then

doPlayerAddItem(cid, items.id, items.count)

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Wow Você Ganho! Seu Item e '..getItemNameById(items.id)..'!', TALKTYPE_MONSTER)

end

end

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Não ganhei nada!', TALKTYPE_MONSTER)

end

-Laranja: Parte adicionada

-Vermelho: Numero alterado

 

Para retirar:

items = {

[0] = {id = 7735, count = 1, chance = 2},

[1] = {id = 7735, count = 1, chance = 5},

[2] = {id = 7735, count = 1, chance = 10},

[3] = {id = 7735, count = 1, chance = 15},

RETIRADO O NUMERO 4

[5] = {id = 7735, count = 1, chance = 100}

}

function onUse(cid, item, fromPos, itemEx, toPos)

for i = 0, #items do

if (items.chance > math.random(1, 100)) then

doPlayerAddItem(cid, items.id, items.count)

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Wow Você Ganho! Seu Item e '..getItemNameById(items.id)..'!', TALKTYPE_MONSTER)

end

end

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Não ganhei nada!', TALKTYPE_MONSTER)

end

Observe que retirei uma parte (em laranja), depois faça:

items = {

[0] = {id = 7735, count = 1, chance = 2},

[1] = {id = 7735, count = 1, chance = 5},

[2] = {id = 7735, count = 1, chance = 10},

[3] = {id = 7735, count = 1, chance = 15},

[4] = {id = 7735, count = 1, chance = 100}

}

function onUse(cid, item, fromPos, itemEx, toPos)

for i = 0, #items do

if (items.chance > math.random(1, 100)) then

doPlayerAddItem(cid, items.id, items.count)

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Wow Você Ganho! Seu Item e '..getItemNameById(items.id)..'!', TALKTYPE_MONSTER)

end

end

doRemoveItem(item.uid, 1)

return doCreatureSay(cid, 'Não ganhei nada!', TALKTYPE_MONSTER)

end

-Vermelho: Modifique o numero para o seu antecessor (no caso 5 para 4)

 

Imagem:

createitem.png

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

  • 0

Sendo assim Adicionei o Script fis todos os tests presciso e adorei mano Obrigado Podem fechar o topico que este scripter ae e fera ja me ajudo 2x =P.

 

Obrigado amigo quando for meu servidor em download nao vou esquecer de voce oks.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...