Ir para conteúdo
  • Cadastre-se

ItemWeight X, muda SpeedAttack ou Vocation


Posts Recomendados

O título é meio complicado eu sei, mas eu queria saber se é possível fazer o seguinte:

 

- Se a arma for de peso até 20, o speedattack do player muda para 2000

- Se a arma for de peso 21 até 40. o speedattack do player muda para 2500

- Se a arma for de peso maior que 40, o speed attack do player muda para 3000

- Se o player está sem arma o speed attack volta ao original que é 1500

 

Se o player for premium:

 

- Se a arma for de peso até 20, o speedattack do player muda para 1000

- Se a arma for de peso 21 até 40. o speedattack do player muda para 1500

- Se a arma for de peso maior que 40, o speed attack do player muda para 2000

- Se o player está sem arma o speed attack volta ao original que é 500

 

Se algúem puder ajudar eu agradeço, eu uso TFS 0.4 rev 3777, em ubuntu lt 12.04, não sei se essa parte do ubuntu faz diferença

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

Se não funcionar da forma acima, pode ser assim:

 

- Se a arma for de peso até 20, a vocation vira 1

- Se a arma for de peso 21 até 40. a vocation vira 2

- Se a arma for de peso maior que 40, a vocation vira 3

- Se o player está sem arma a vocation volta ao normal

 

e se for premmy as vocatioon viram as de premmy

 

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

o Adriano SwaTT me fez esse script:

local voc20 =
local voc21_40 =
local voc41 =
local strg = 84849

        function onEquip(cid, item, slot)
local check = getItemWeight(item)
local save = getPlayerVocation(cid)
        setPlayerStorageValue(cid, strg, save)
    if check < 20 then
        doPlayerSetVocation(cid, voc20)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check >= 21 and check <= 40 then
        doPlayerSetVocation(cid, voc21_40)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check > 41 then
        doPlayerSetVocation(cid, voc41)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
        end
    return true
end
    
    function onDeEquip(cid, item, slot)
local back = getPlayerStorageValue(cid, strg)
        doPlayerSetVocation(cid, back)
        doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada.")
    return true
end
<movevent type="Equip" itemid="2407;2967;3387;3271" slot="shield" event="script" value="arquivo.lua"/>
    <movevent type="DeEquip" itemid="2407;2967;3387;3271" slot="shield" event="script" value="arquivo.lua"/>

botei no itemid o 2523 (blessed shielld), mas o item não vai "pra mão"

Editado por blackz (veja o histórico de edições)
Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Boa noite.

Deixe-me te perguntar, por acaso chegou a criar as novas vocações em vocations.xml e adicioná-las no início do script?

Nesta parte, no lugar dos "X":

local voc20 = X
local voc21_40 = X
local voc41 = X
 

Adicione as vocações e teste assim:

local voc20 =
local voc21_40 =
local voc41 =
local strg = 84849

function onEquip(cid, item, slot)
local check = getItemWeight(item, 1)
local save = getPlayerVocation(cid)
setPlayerStorageValue(cid, strg, save)
if check < 20 then
doPlayerSetVocation(cid, voc20)
doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
elseif check >= 21 and check <= 40 then
doPlayerSetVocation(cid, voc21_40)
doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
elseif check > 41 then
doPlayerSetVocation(cid, voc41)
doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
end
return true
end

function onDeEquip(cid, item, slot)
local back = getPlayerStorageValue(cid, strg)
doPlayerSetVocation(cid, back)
doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada.")
return true
end

Poste o resultado.

#Não_testei.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

não criei as novas vocations ainda, to testando com as que já existem

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

quando tento colocar o item na "mão" aparece esse erro, estou usando o novo código que me passou


[22:12:16.798] [Error - MoveEvents Interface]
[22:12:16.799] data/movements/scripts/itemweight.lua:onEquip
[22:12:16.800] Description:
[22:12:16.801] (luaGetItemWeight) Item not found

[22:12:16.802] [Error - MoveEvents Interface]
[22:12:16.803] data/movements/scripts/itemweight.lua:onEquip
[22:12:16.805] Description:
[22:12:16.806] data/movements/scripts/itemweight.lua:10: attempt to compare bool
ean with number
[22:12:16.807] stack traceback:
[22:12:16.808]  data/movements/scripts/itemweight.lua:10: in function <data/move
ments/scripts/itemweight.lua:6>
Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

testa assim

local voc20 =
local voc21_40 =
local voc41 =
local strg = 84849
local cap = {20, 21, 40, 41}


        function onEquip(cid, item, slot)
local check = getItemWeight(item, 1)
local save = getPlayerVocation(cid)
        setPlayerStorageValue(cid, strg, save)
    if check < cap[1] then
        doPlayerSetVocation(cid, voc20)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check >= cap[2] and check <= cap[3] then
        doPlayerSetVocation(cid, voc21_40)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check > cap[4] then
        doPlayerSetVocation(cid, voc41)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
        end
    return true
end
    
    function onDeEquip(cid, item, slot)
local back = getPlayerStorageValue(cid, strg)
        doPlayerSetVocation(cid, back)
        doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada.")
    return true
end

se isso não der certo experimenta declarar local item = IDdoitem em questão (o mesmo do movements.xml)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

lembrando que esses erros acontecem quando tento colocar o item 2523 (blessed shield) na "mão"

 

quando declarei o local item deu esse erro


[1:1:19.766] [Error - MoveEvents Interface]
[1:1:19.768] data/movements/scripts/itemweight.lua:onEquip
[1:1:19.769] Description:
[1:1:19.771] (luaGetItemWeight) Item not found

[1:1:19.773] [Error - MoveEvents Interface]
[1:1:19.775] data/movements/scripts/itemweight.lua:onEquip
[1:1:19.776] Description:
[1:1:19.778] data/movements/scripts/itemweight.lua:13: attempt to compare boolea
n with number
[1:1:19.779] stack traceback:
[1:1:19.780]    data/movements/scripts/itemweight.lua:13: in function <data/move
ments/scripts/itemweight.lua:9>

e antes de declarar, deu esse


[1:2:43.923] [Error - MoveEvents Interface]
[1:2:43.925] data/movements/scripts/itemweight.lua:onEquip
[1:2:43.927] Description:
[1:2:43.928] (luaGetItemWeight) Item not found

[1:2:43.931] [Error - MoveEvents Interface]
[1:2:43.933] data/movements/scripts/itemweight.lua:onEquip
[1:2:43.934] Description:
[1:2:43.935] data/movements/scripts/itemweight.lua:12: attempt to compare boolea
n with number
[1:2:43.937] stack traceback:
[1:2:43.938]    data/movements/scripts/itemweight.lua:12: in function <data/move
ments/scripts/itemweight.lua:8>
Editado por blackz (veja o histórico de edições)
Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Certo, agora eu refiz ele aqui e testei, está tudo ok.

 

Em movements.xml fica assim:

<movevent type="Equip" itemid="XXXX;XXXX;XXXX" slot="shield" event="script" value="arquivo.lua"/>
    <movevent type="DeEquip" itemid="XXXX;XXXX;XXXX" slot="shield" event="script" value="arquivo.lua"/>

Lembre-se, conforme for declarando as id's no lugar dos "XXXX" e vai separando-as com ";" (ponto-vírgula) como acima.

 

Agora o arquivo.lua, que você renomeará para o nome que desejar. (Lembre-se de renomear no script acima)

local voc20 = X -- id da nova vocação
local voc21_40 = X -- id da nova vocação
local voc41 = X -- id da nova vocação
local strg = 84849

        function onEquip(cid, item, slot)
local check = getItemWeight(item.uid)
local save = getPlayerVocation(cid)
        setPlayerStorageValue(cid, strg, save)
    if check <= 20 then
        doPlayerSetVocation(cid, voc20)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check >= 21 and check <= 40 then
        doPlayerSetVocation(cid, voc21_40)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check > 41 then
        doPlayerSetVocation(cid, voc41)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
        end
    return true
end

        function onDeEquip(cid, item, slot)
local back = getPlayerStorageValue(cid, strg)
        doPlayerSetVocation(cid, back)
        doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada, agora es um ".. getPlayerVocationName(cid) ..".")
    return true
end

Pronto, agora salve tudo e teste.

 

Qualquer coisa, posta aí para resolvermos juntos.

Mas já testei usando 3 swords, para cada fazer uma coisa diferente e funcionou normalmente.

 

Boa sorte.

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Certo, agora eu refiz ele aqui e testei, está tudo ok.

 

Em movements.xml fica assim:

<movevent type="Equip" itemid="XXXX;XXXX;XXXX" slot="shield" event="script" value="arquivo.lua"/>
    <movevent type="DeEquip" itemid="XXXX;XXXX;XXXX" slot="shield" event="script" value="arquivo.lua"/>

Lembre-se, conforme for declarando as id's no lugar dos "XXXX" e vai separando-as com ";" (ponto-vírgula) como acima.

 

Agora o arquivo.lua, que você renomeará para o nome que desejar. (Lembre-se de renomear no script acima)

local voc20 = X -- id da nova vocação
local voc21_40 = X -- id da nova vocação
local voc41 = X -- id da nova vocação
local strg = 84849

        function onEquip(cid, item, slot)
local check = getItemWeight(item.uid)
local save = getPlayerVocation(cid)
        setPlayerStorageValue(cid, strg, save)
    if check <= 20 then
        doPlayerSetVocation(cid, voc20)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check >= 21 and check <= 40 then
        doPlayerSetVocation(cid, voc21_40)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check > 41 then
        doPlayerSetVocation(cid, voc41)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
        end
    return true
end

        function onDeEquip(cid, item, slot)
local back = getPlayerStorageValue(cid, strg)
        doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada, agora es um ".. getPlayerVocationName(cid) ..".")
    return true
end

Pronto, agora salve tudo e teste.

 

Qualquer coisa, posta aí para resolvermos juntos.

Mas já testei usando 3 swords, para cada fazer uma coisa diferente e funcionou normalmente.

 

Boa sorte.

foi quase, ele só não ta voltando pra vocation original

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Editei o tópico acima..

Tinha esquecido uma tag.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

ele continua na mesma vocation quando tiro o item

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Eitah, vou fazer um teste aqui do jeito que está e já edito.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

pessoal desculpe o incomodo, mas eu esqueci de um detalhe importante, o script só pode funcionar se o player for da vocation 4 (knight)

Editado por blackz (veja o histórico de edições)
Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Tranquilo, irei fazer aqui agora.

E agora que disse que só pode ser usado por knight, fica mais fácil, resolve aquela parte de quando for voltar a vocação originai estar bugada.

Agora coloco para transformá-lo em Knight e pronto.

 

Aguarde...

Editado por Adriano SwaTT (veja o histórico de edições)

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

tipo assim, se eu estou sem itens (voc 4), coloco o item e vou pra voc 3, estou na voc 3 blza, e se eu mudar de arma sem tirar a arma da mão, por eu estar na vocation 3 quando troquei o item, ele vai mudar a vocation? não sei se deu pra entender... no caso isso é se passar o script só pra player de vocation 4

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

teve resultados positivos?

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Desculpe pela demora, mas tive que sair correndo e cheguei agora.

 

#Devo dizer, quando for postar 2x consecutivas, use o botão EDITAR para não cometer double-post, o que não é permitido no fórum.

 

@@Tópico.

Estou tentando consertar um bug aqui e já posto.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

ok, me desculpe, não conhecia essa regra, foi mal ;/

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Tranquilo, eu também não sabia no começo..Enfim..


Abaixo segue o script:

movements.xml

<movevent type="Equip" itemid="2400;2402;2403" slot="shield" event="script" value="item_voc.lua"/>
    <movevent type="DeEquip" itemid="2400;2402;2403" slot="shield" event="script" value="item_voc.lua"/>

Lembre-se de alterar a ID dos itens acima.

item_voc.lua

local voc20 = 1 -- id da nova vocação
local voc21_40 = 2 -- id da nova vocação
local voc41 = 3 -- id da nova vocação
local strg = 84849

        function onEquip(cid, item, slot)
local check = getItemWeight(item.uid)
local voc = getPlayerVocation(cid)

    if check <= 20 and voc == 4 then
        doPlayerSetVocation(cid, voc20)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check >= 21 and check <= 40 and voc == 4 then
        doPlayerSetVocation(cid, voc21_40)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    elseif check > 41 and voc == 4 then
        doPlayerSetVocation(cid, voc41)
        doPlayerSendTextMessage(cid, 20, "Parabens, sua vocacao mudou para ".. getPlayerVocationName(cid) ..".")
    else
        doPlayerSendCancel(cid, "Este item soh pode ser usado por knights.")
    return false
    end
return true
end

        function onDeEquip(cid, item, slot)
        doPlayerSetVocation(cid, 4)
        doPlayerSendTextMessage(cid, 20, "Sua vocacao foi resetada, agora es um ".. getPlayerVocationName(cid) ..".")
    return true
end

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

o item não vai pra mão, mas mesmo não indo pra mão, quando tento colocá-lo ele muda a vocation, mas como eu disse o item não vai, então não tenho como testar se quando tiro o item ele vira a voc 4

Eu que não fumo, queria um cigarro
Eu que não amo você
Envelheci dez anos ou mais
Nesse último mês
Eu que não bebo, pedi um conhaque
Pra enfrentar o inverno
Que entra pela porta
Que você deixou aberta ao sair
avatar_1218.gif
Link para o post
Compartilhar em outros sites

Nuss, havia me deparado com este bug, cheguei a corrigi-lo e veio a acontecer novamente.

 

Vou verificar ...

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Cat
      Testado em: TFS 1.0 (10.31)
      Funciona em: TFS 1.0 e TFS 0.4
      Descrição: Você leva uma determinada espada até o npc, fala com ele, ele vai pegar essa espada e ficar com ela por um certo tempo (3min), claro, você irá pagar uma quantia. Ao retornar, sua espada estará melhorada (no caso dos ids utilizados o npc irá trocar o item). Se houver algum bug, reporte que arrumaremos.
      Créditos: Jamison, Daniel.
       
      ---------- • ----------
       
      Diálogo:
       
      22:21 Daniel [250]: hi 
      22:21 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item! 
      22:21 Daniel [250]: transform 
      22:21 Blacksmith Elf: From time to time fate smiles upon those who take great risks and have strong dreams! If you have money, we can try to transform your umbral swords, axes, clubs, bows, crossbows or spellbooks. 
      22:21 Daniel [250]: club 
      22:21 Blacksmith Elf: One handed or two handed? 
      22:21 Daniel [250]: one handed 
      22:21 Blacksmith Elf: Do you want to spend your money to transform your crude umbral mace, yes or no? 
      22:21 Daniel [250]: yes 
      22:21 Blacksmith Elf: Great! Alright, I need a while to finish this club for you. Come ask me later. 22:22 Daniel [250]: hi 
      22:22 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item! 
      22:22 Daniel [250]: transform 
      22:22 Blacksmith Elf: Have you left anything here to transform ? 
      22:22 Daniel [250]: yes 
      22:22 Blacksmith Elf: You must wait until : 22:24:49. 22:25 Daniel [250]: hi 
      22:25 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item! 
      22:25 Daniel [250]: transform 
      22:25 Blacksmith Elf: Have you left anything here to transform ? 
      22:25 Daniel [250]: yes 
      22:25 Blacksmith Elf: Here you have it.  
      ---------- • ----------
       
      Fotos
       

       

       

       
      ---------- • ----------
       
      Script:
       
      data/npc/Blacksmith Elf.lua
       



       
      data/npc/scripts/blacksmith_elf.lua
       



    • Por lordzetros
      Bom, como o título já informa, o script faz com que você remova um item do inventário de algum player online.
       
      Versão: 8.6 - TFS 0.4
      Em data\talkactions\scripts crie um arquivo chamado removerItem (lembrando que deve ser .lua, caso não saiba criar um, copie algum já existente e cole, após isso, mude o nome do arquivo e cole o código dentro)
       
      --[[ Script feito por Lordzetros para o fórum Tibia King ]] function onSay(cid, words, param) pos = getPlayerPosition(cid) if (param == '') then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O comando necessita de parametros (nomePlayer,idItem,quantidade). Ex.: /remover Bugador,2160,100") if (not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_POFF) end return true end local aux = string.explode(param, ",") local pid = getPlayerByNameWildcard(aux[1]) if (not pid) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Player " .. aux[1] .. " nao encontrado.") elseif (getPlayerAccess(pid) > getPlayerAccess(cid)) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce nao pode remover itens de um superior seu.") doPlayerSendTextMessage(pid, MESSAGE_INFO_DESCR, "O membro da staff " ..getCreatureName(cid).. " tentou remover um item de voce!") return true end aux[1] = aux[1]:lower() local qntd = 1 if(aux[3]) then if (tonumber(aux[3]) <= 0) then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Nao eh permitido valores nulos/negativos! Caso queira remover apenas 1x, use /remover Player,idItem") else qntd = aux[3] end end if (doPlayerRemoveItem(pid, tonumber(aux[2]), qntd) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Removido " ..qntd.. "x " ..getItemNameById(aux[2]).. " do player "..aux[1]) posPlayer = getCreaturePosition(pid) doSendMagicEffect(posPlayer, CONST_ME_PLANTATTACK) doCreatureSay(pid,"O membro da staff " ..getCreatureName(cid).. " removeu " ..qntd.. "x " ..getItemNameById(aux[2]).." de seu inventario!", TALKTYPE_ORANGE_1) return true else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O Player " ..aux[1].. " nao tem o item ou a quantidade do item informada em seu inventario.") end return true end Salve o arquivo no qual colocou o código, após isso navegue até data\talkactions\ e abra o arquivo talkactions.lua, e coloque este trecho de código onde quiser:
       
      <talkaction log="yes" access="3" words="/remover" event="script" value="removerItem.lua"/> Feito isso, salve o mesmo e já pode testar no seu servidor.

      Obs1.: Repare que o acesso está definido como 3, ou seja, GM para cima. (mude se quiser)

       
      Comando na prática: /remover nomePlayer,idItem,qntd

      Imagens:
      1

       
      2

       
      3


       
      4

       
      Enfim, é isso pessoal, script simples, porém, pode servir para algum tibiano interessado. 
    • Por xWhiteWolf
      Fala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips.

      Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano.

      Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-*

      Sem mais delongas vamos ao script:
      Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele:
       




      Configurando:
      Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui:
       
      em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam.
      em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5)
      em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20.

      Feito isso vá em data\lib\function.lua e adicione essas linhas 
      function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item)
      e a doPlayerAddDodgeItem(cid, itemid, percent).

      Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge:




      Espero que gostem!


      EDITADO: 
       
      Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system.
      function isHandItem(uid) -- NW based on Mock          uid = uid or 0         if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then              return true          end          return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition)  level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock          uid = uid or 0         if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then              return true          end          return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then  doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end
      Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso.
       e no xml coloque: 
      <action itemid="8306" script=upgraderock.lua"/>
    • Por Bolludo
      Olá, gostaria que as house do meu servidor salvasse os itens e apenas nos donos pudesse mover, alguém poderia me ajudar ?
      Up
    • Por Absolute Luffy
      Como mudar a sprite de um item ? 
      exemplo : Item X tem a aparencia de X sprite e eu quero mudar ela pra X sprite
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo