Ir para conteúdo
  • 0

Item que da Bonus XP


kolosso

Pergunta

Preciso de um script que um item da EX:50% de XP pra quem usa-lo, assim que ele usar o item, o item some e fica um ícone do lado do Battle mostrando o tempo que falta pra acabar ou um comando que mostre o tempo pro bônus acabar
e se possível, gostaria que ele guardasse o tempo restante (caso o player deslogue antes do Bônus acabar)

(obs: já procurei, só acho script de ring e MODS)
se o ring for equipado e não dê pra retira-lo até ele acabar , eu até usaria...

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Use este abaixo:

 

1º Passo

Abra o arquivo "Items.xml" (pasta Data / Items)
Com o editor de sua preferência, use o comando de busca (geralmente "Ctrl + F") e digite a ID "7697".
Vai achar o item "signet ring" que estará assim: (na maioria dos OTServ's)

<item id="7697" article="a" name="signet ring">
        <attribute key="weight" value="80" />
        <attribute key="slotType" value="ring" />
    </item>

Substitua isso por:

<item id="7697" article="a" name="experience ring">
        <attribute key="weight" value="500" />
        <attribute key="description" value="Este anel lhe da 2x mais experiencia (ativo)." />
        <attribute key="slotType" value="ring" />
        <attribute key="duration" value="4320" />
        <attribute key="decayTo" value="0" />
        <attribute key="showduration" value="1" />
        <attribute key="transformDeEquipTo" value="7708" />
</item>

Logo em seguida, procure pela ID "7708".
Encontrará o item "ring" que estará assim: (na maioria dos OTServ's)

<item id="7708" article="a" name="ring">
        <attribute key="weight" value="40" />
        <attribute key="slotType" value="ring" />
</item>

Substitua isso por:

<item id="7708" article="a" name="ring experience">
        <attribute key="weight" value="500" />
        <attribute key="slotType" value="ring" />
        <attribute key="showduration" value="1" />
        <attribute key="transformEquipTo" value="7697" />
</item>

Pronto, em Items.xml não mexeremos mais.

 

 

2º Passo


Abra o arquivo "Movements.xml" (pasta Data / Movements)
Adicione as tags abaixo:

<movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>

Pronto, em "movements.xml" é só.

 

 

3º Passo

 

Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).
Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.
Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.

local expe = 0.2 -- 20%
local ringon, ringoff = 7708, 7697 -- ID dos Rings
local acti = 19192 -- Não precisa

function onEquip(cid, item, slot)
    if item.itemid == ringoff then
        doRemoveItem(item.uid, 1)
        local additem = doPlayerAddItem(cid, ringon, 1)
        doItemSetAttribute(additem, "aid", acti)
        doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!')
        doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*expe)
    end
return true
end

function onDeEquip(cid, item, slot)
    if item.itemid == ringon and item.actionid == acti then
        doPlayerSendCancel(cid, "Você não pode retirar este item.")
        return false
    end
return true
end

Salve-o e feche o arquivo.

 

 

 

Para aprender configurar a rate do Script clique no spoiler abaixo:

Eu não testei, mas creio que esteja tudo certo:

doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*2)

Azul: É o valor em vezes que aumentará a experiência. Ex:
Onde está o "2" no código, você pode substituir por quantas vezes que que seja a multiplicação da EXP' (2 é igual a 2x mais Exp)...
Ou pode por em porcentagens usando como está abaixo:
1.5 = 50%
1.2 = 20%

E assim sucessivamente.

 

 

CORRIGIDO ERRO DE DIGITAÇÃO!

 

Para saber quanto tempo falta, basta dar look no item.

 

Espero que funcione.

 

Boa sorte.

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

  • 0

Use este abaixo:

 

1º Passo

 

Abra o arquivo "Items.xml" (pasta Data / Items)

Com o editor de sua preferência, use o comando de busca (geralmente "Ctrl + F") e digite a ID "7697".

Vai achar o item "signet ring" que estará assim: (na maioria dos OTServ's)

 

<item id="7697" article="a" name="signet ring">
        <attribute key="weight" value="80" />
        <attribute key="slotType" value="ring" />
    </item>

Substitua isso por:

<item id="7697" article="a" name="experience ring">
        <attribute key="weight" value="500" />
        <attribute key="description" value="Este anel lhe da 2x mais experiencia (ativo)." />
        <attribute key="slotType" value="ring" />
        <attribute key="duration" value="4320" />
        <attribute key="decayTo" value="0" />
        <attribute key="showduration" value="1" />
        <attribute key="transformDeEquipTo" value="7708" />
</item>

Logo em seguida, procure pela ID "7708".

Encontrará o item "ring" que estará assim: (na maioria dos OTServ's)

<item id="7708" article="a" name="ring">
        <attribute key="weight" value="40" />
        <attribute key="slotType" value="ring" />
</item>

Substitua isso por:

<item id="7708" article="a" name="ring experience">
        <attribute key="weight" value="500" />
        <attribute key="slotType" value="ring" />
        <attribute key="showduration" value="1" />
        <attribute key="transformEquipTo" value="7697"/ >
</item>
Pronto, em Items.xml não mexeremos mais.

 

 

2º Passo

 

 

Abra o arquivo "Movements.xml" (pasta Data / Movements)

Adicione as tags abaixo:

 

<movevent type="Equip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7697" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="Equip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>
<movevent type="DeEquip" itemid="7708" slot="ring" event="script" value="exp_ring.lua"/>
Pronto, em "movements.xml" é só.

 

 

3º Passo

 

 

Abra a pasta (Data / Movements / Scripts) e crie um arquivo com o nome "exp_ring.lua" (pode copiar um arquivo existente e renomeá-lo).

Após fazer isto, abra este arquivo (exp_ring.lua) e cole o código abaixo dentro.

Obs: se tiver algo escrito do arquivo, apague-o e deixe somente o código abaixo.

 

local expe = 0.2 -- 20%
local ringon, ringoff = 7708, 7697 -- ID dos Rings
local acti = 19192 -- Não precisa

function onEquip(cid, item, slot)
    doRemoveItem(item.uid, 1)
    local additem = doPlayerAddItem(cid, ringon, 1)
    doItemSetAttribute(additem, "aid", acti)
    doPlayerSendTextMessage(cid, 22, 'Agora ganha 2x mais experiencia!')
    doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*expe)
    return true
end

function onDeEquip(cid, item, slot)
    if item.itemid == ringon and item.actionid == acti then
        doPlayerSendCancel(cid, "Você não pode retirar este item.")
        return false
    end
return true
end

Salve-o e feche o arquivo.

 

 

 

 

Para aprender configurar a rate do Script clique no spoiler abaixo:

 

Eu não testei, mas creio que esteja tudo certo:

 

Azul: É o valor em vezes que aumentará a experiência. Ex:

Onde está o "2" no código, você pode substituir por quantas vezes que que seja a multiplicação da EXP' (2 é igual a 2x mais Exp)...

Ou pode por em porcentagens usando como está abaixo:

1.5 = 50%

1.2 = 20%

E assim sucessivamente.

 

 

 

Para saber quanto tempo falta, basta dar look no item.

 

Espero que funcione.

 

Boa sorte.

 

Deu erro no item.xml

tentei 2 vezes e deu o mesmo erro, e se eu apertasse Y pra continuar o carregamento, ele dava erro no movements

 

e aproveitando, como colocaria o tempo limite pro item "quebrar" ?

Link para o comentário
Compartilhar em outros sites

  • 0

Erro no Items.xml, deve ocorrer por alguma coisa incorreta que adicionou.

 

Sobre como adicionar tempo, estas tags do items.xml já o faz:

<attribute key="duration" value="4320" /> -- Aqui é a duração do item em segundos (72 horas)
<attribute key="decayTo" value="0" /> -- Aqui é para o item cair para id 0 ou seja, sumir.
<attribute key="showduration" value="1" /> -- Aqui é para aparecer o tempo restante do item ao dar look

Tente refazer o items.xml novamente, e caso dê erro em movements.xml, me informe para corrigir o mesmo.

 

Qual versão de servidor está usando?

 

Boa sorte.

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

  • 0

Erro no Items.xml, deve ocorrer por alguma coisa incorreta que adicionou.

 

Sobre como adicionar tempo, estas tags do items.xml já o faz:

<attribute key="duration" value="4320" /> -- Aqui é a duração do item em segundos (72 horas)
<attribute key="decayTo" value="0" /> -- Aqui é para o item cair para id 0 ou seja, sumir.
<attribute key="showduration" value="1" /> -- Aqui é para aparecer o tempo restante do item ao dar look

Tente refazer o items.xml novamente, e caso dê erro em movements.xml, me informe para corrigir o mesmo.

 

Qual versão de servidor está usando?

 

Boa sorte.

to usando ot 8.6

tfs 0.4

 

só vou termina de editar o mapa aqui e já vou refaze-lo.

Link para o comentário
Compartilhar em outros sites

  • 0

Erro no Items.xml, deve ocorrer por alguma coisa incorreta que adicionou.

 

Sobre como adicionar tempo, estas tags do items.xml já o faz:

<attribute key="duration" value="4320" /> -- Aqui é a duração do item em segundos (72 horas)
<attribute key="decayTo" value="0" /> -- Aqui é para o item cair para id 0 ou seja, sumir.
<attribute key="showduration" value="1" /> -- Aqui é para aparecer o tempo restante do item ao dar look

Tente refazer o items.xml novamente, e caso dê erro em movements.xml, me informe para corrigir o mesmo.

 

Qual versão de servidor está usando?

 

Boa sorte.

Aqui deu erro em movements: http://prntscr.com/8dtw3v e fecha o Ot.

 

Aqui tô no 1.2 tentei adaptar mas da este erro.

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

  • 0

Editei o script exp_ring, atualizem o seu e teste novamente.

 

O erro pode ser na tag movements do movements.xml, pois de tfs 0.3.6 (o meu) para o seu tfs 0.4 (o seu), tem diferenteça nesta tag.

Check e copie algum exemplo das suas e muda apenas o atalho do script.lua e a id do item de funcionamento.

 

Boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0

eu estava precisando deste script valeu Adriano,

aqui deu erro no items.xml tbm + por causa desta tag aki

 

<item id="7708" article="a" name="ring experience">
<attribute key="weight" value="500" />
<attribute key="slotType" value="ring" />
<attribute key="showduration" value="1" />
<attribute key="transformEquipTo" value="7697"/ > <-- esta com um espaço errado, agora o certo--> <attribute key="transformEquipTo" value="7697" />
</item>

Link para o comentário
Compartilhar em outros sites

  • 0

eu estava precisando deste script valeu Adriano,

aqui deu erro no items.xml tbm + por causa desta tag aki

 

<item id="7708" article="a" name="ring experience">

<attribute key="weight" value="500" />

<attribute key="slotType" value="ring" />

<attribute key="showduration" value="1" />

<attribute key="transformEquipTo" value="7697"/ > <-- esta com um espaço errado, agora o certo--> <attribute key="transformEquipTo" value="7697" />

</item>

 

 

Certo, foi mesmo um erro de digitação.

 

Obrigado por reportar, já corrigi.

 

Faça bom uso. :)

Link para o comentário
Compartilhar em outros sites

  • 0

eu fiz o 7708 e ele travou o meu distro

fiz o 7697 e ele duplicou os ring assim que eu equipei, ai apareceu a msg de duble bonus e da pra remover ele e aparece a msg dizendo que ele não pode ser removido, só que ele sai.

Se possível, eu gostaria que o item não pudesse ser removido até que ele acabe (se não os players vão colocar a HTK pra equipa o ring só quando aparecer monstros na tela) e gostaria que o ring desaparecesse assim que ele terminasse (pra não dar nenhum problema com players caloteiros)
post-358727-0-71750300-1441761797_thumb.png

se não tiver com um set equipado ele da esse bug, (ele duplica os ring na mão) e coloca 2 vezes o mesmo bônus
post-358727-0-34361900-1441762059_thumb.png

e deu esse erro no distro
post-358727-0-47703800-1441762541_thumb.png

 

 

e tbm o tempo do bônus se ativa assim que o item entra na BP e mesmo que você jogue o item no chão, o tempo continua correndo

22:37 You see a signet ring that has energy for 68 minutes left.
ItemID: [7697].
TransformTo: [7708] (onDeEquip).

assim, depois que equipa o item, se der look ele não mostra o tempo que falta pro bônus acabar...
e se outro player pega o ring e equipa ele da o bônus e derruba o server.


Acredito que só tenha esses bugs.

@up

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

  • 0

Basta usar o script de Bônus e por o item 7708 (id dele equipado) para Not Movable através do editor de Items.otb.

 

#DONE.

Como assim ?

Não entendo muito de scripts, saco mais na area do map (editar algumas paradas etc...)

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...