oia.. soh sei q esse onEquip eh loko... o melhor a fazer seria diminuir essa storage em algum script onLogout.. ;x ja q quand ta logando ele ta aumentado ela denovo... ;x
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

info
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: Luck Oake

O brun123 tinha feito um fix uma vez, tá ai:
local blockDoubleExecution = {}
function onEquip(cid, item, slot)
if blockDoubleExecution[cid] then
blockDoubleExecution[cid] = nil
return true
else
blockDoubleExecution[cid] = true
end
local forc = getPlayerStorageValue(cid, 23222)
setPlayerStorageValue(cid, 23222, forc + 1)
return true
end
function onDeEquip(cid, item, slot)
local forc = getPlayerStorageValue(cid, 23222)
setPlayerStorageValue(cid, 23222, forc - 2)
return true
end
Editado Janeiro 19 por LuckOake
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

@slicer
foi mal pelo double post, falou que tinha dado erro na postagem eu voltei e cliquei em postar de novo.
@luckoake
funciona perfeitamente.. vlw pela ajuda.. rep.
mas o meu maior problema mesmo é que ta adicionando o storage mais uma vez sempre que o player faz login.
vou explicar melhor:
"do modo que vc mandou o script quando o player equipa rapier ele ganha mais 1 do storage 23222 que é a força do OT
a rapier da +1 de força até que ela seja deEquipada daí ela retira esse +1 de força o dano das magias que dependem de força diminuem.
só que se o player estiver equipando a raipier e fizer login ele vai ganhar +1 de força, então se ele relogar 10x ele vai ganhar mais 10 de força e assim consecutivamente."
Editado Janeiro 19 por OtheReality
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

uma outra forma de se fazer é o seguinte, ao logar checa se o jogador ta usando essa armor, se estiver, diminui uma storage
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

@vodkart
eu pensei nisso, mas são vários itens que dão atributos...
tu tem como fazer uma tabela pra mim? que ponha o ID do item e os atributos que ele da, daí quando logar se tiver equipando o item automaticamente retira esses atributos..
Os atributos podem ser --------- storage
vitalidade -------------- 23221
força -------------- 23222
agilidade -------------- 23223
intelecto -------------- 23224
crit chance -------------- 23225
edit:
ps: to usando mto twitter, botando @ em tudo.. lol
Editado Janeiro 19 por OtheReality
function onEquip(cid, item, slot) if os.time() - getPlayerLastLogin(cid) <= 1 then return true end local forc = getPlayerStorageValue(cid, 23222) setPlayerStorageValue(cid, 23222, forc + 1) return true -- +2 de forc, porque o return true faz executar 2x o setStorage. end function onDeEquip(cid, item, slot) local forc = getPlayerStorageValue(cid, 23222) setPlayerStorageValue(cid, 23222, forc - 2) return true -- no DeEquip o return true não executa 2x o serStorage, não tenho idéia do porque. end
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

não deu certo ![]()
continua adicionando mais 1 do storage sempre que loga.
detalhe importante: apesar do item adicionar +2 quando equipado, ele adiciona só mais 1 quando loga.
info
Grupo: Visconde
Registrado: 11/08/10
Posts: 477
Reputação: +175
Gênero: Masculino

mt ilogico td isso ![]()
tenta sei la
function onEquip(cid, item, slot)
local forc = getPlayerStorageValue(cid, 23222)
return setPlayerStorageValue(cid, 23222, forc + 1)
end
ou.. tenta retornar false tb, pode ser q dê, pq o false era p impedir de equipar, mas não impede nada, entao tenta tb
e tipo vê se nao tem 2 tags do msm item no items.xml, pq as vezes ja tinha uma tag do item la ai vc pois outra
... explica pra mim os itens/ids q monto uma tabela pra vc p remover skill qnd o player logar
Editado Janeiro 20 por Eskylo
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

n tem nd no login.lua dando essa storage n? ;x ta muito estranhu isso kk
acabei de testar aqui, o onEquip é lançado antes de atualizar a última data que o player fez login, então a função getPlayerLastLogin retorna a última vez que o player fez login (antes do login que está sendo feito no momento), então tá aqui a solução do teu problema:
function onEquip(cid, item, slot)
if getPlayerSlotItem(cid, slot).uid == item.uid then
return true
end
local forc = getPlayerStorageValue(cid, 23222)
setPlayerStorageValue(cid, 23222, forc + 2)
return true
end
function onDeEquip(cid, item, slot)
local forc = getPlayerStorageValue(cid, 23222)
setPlayerStorageValue(cid, 23222, forc - 2)
return true
end
dessa forma o onEquip vai ser executado apenas uma vez, então já coloquei pra aumentar o storage em 2
info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac

@eskylo
por false eu já tinha tentado antes de postar.. mas não adiantou..
@slicer
não é nada no login nem em outro script onLogin porque só ganho o storage se tiver com o item equipado.
@brun123
Funcionou direitinho. vlw (:
ps: amanhã te dou rep.
Editado Janeiro 20 por OtheReality





info
Grupo: Visconde
Registrado: 17/01/11
Posts: 343
Reputação: +46
Char no Tibia: Zodriac
o script a seguir serve para que sempre que o player equipe uma sword "x" ele receba +2 do storage 23222 até que ele deEquipe o item.
O problema do script é que se eu relogar com o item equipado eu ganho o storage mais uma vez. assim os player podem ficar relogando o ganhando milhões do storage 23222 o que não devia acontecer.
Será que alguém sabe me ajudar? agradeço desde já.