Ir para conteúdo

Featured Replies

Postado

Olá nobre senhores, tudo bem com vocês?

Servidor: TFS 0.3.6

Cliente:    8.60

 

Estou com a seguinte ideia, criar conjuntos de equipamentos em meu servidor, que aumente os atributos do player ao utilizar o conjunto/set completo, exemplo:

warrior_set.png.3591617f40d84d93e1ef64ff072ec988.png

 

Um exemplo dos itens contidos no meu itens.xml:

<item id="2487" article="a" name="warrior armor">
    <attribute key="weight" value="9000" />
    <attribute key="armor" value="13" />
    <attribute key="skillSword" value="1" />
    <attribute key="skillAxe" value="1" />
    <attribute key="skillClub" value="1" />
    <attribute key="slotType" value="body" />
    <attribute key="healthGain" value="2" />
    <attribute key="healthTicks" value="3000" />
	<attribute key="description" value="+2 HP every 3s, Sale value: $5000" />
</item>

 

Em meu movements.xml:

<movevent type="Equip" itemid="2487" level="30" slot="armor" event="function" value="onEquipItem">
	<vocation id="8" />
</movevent>
<movevent type="DeEquip" itemid="2487" slot="armor" event="function" value="onDeEquipItem" />

 

Entretanto eu fico limitado aos eventos de Equip default, se eu altero para meu script full_set.lua:

<movevent type="Equip" itemid="2487" level="30" slot="armor" event="script" value="full_set.lua">
	<vocation id="8" />
</movevent>

 

Executando meu script  eu perco os atributos contidos no itens.xml, tais como o aumento de skill, ganho de HP por segundo e também qualquer vocação pode utilizar o equipamento.

 

Simplificando, é possível utilizar os recursos padrões de Equip do movements e adicionar um/mais scripts personalizáveis sem perder as funcionalidades da function onEquipItem?

Meu objetivo é quanto mais partes do set o jogador possuir, mais bônus ele obterá, um exemplo:

 

Warrior Set

[2 peças] - Aumenta em 100 HP total

[4 peças] - Aumenta em 2 shielding

 

Eu tenho uma ideia de colocar essa verificação no creaturescripts, entretanto não gostaria de tomar esse rumo pois acredito que poderia sobrecarregar meu servidor com as verificações por thing.

Efetuei consultas pela internet e geralmente o pessoa que tem essa duvida utiliza itens que não tem status, tipo um ring, no meu caso é diferente.

 

Possível solução: Seria utilizar o código Equip padrão no meu script e depois aplicar meu código, entretanto eu não encontrei em nenhum local esse script de Equip,

 

Quem puder me ajudar eu ficaria eternamente grato já que esse é um sistema chave no meu projeto, agradeço desde já :(

Editado por Doria Louro (veja o histórico de edições)

Postado
Em 09/11/2023 em 11:47, Doria Louro disse:

Warrior Set

[2 peças] - Aumenta em 100 HP total

[4 peças] - Aumenta em 2 shielding

pra isso seria necessário criar os atributos na source com um map de atributos a serem adicionados, caso vc add na source os atributos do item, eles automaticamente contam com o Equip e DeEquip, eu fiz esse sistemas pro baiak-hells, um pouco diferente pois dava dano e def

Postado
22 horas atrás, FeeTads disse:

pra isso seria necessário criar os atributos na source com um map de atributos a serem adicionados, caso vc add na source os atributos do item, eles automaticamente contam com o Equip e DeEquip, eu fiz esse sistemas pro baiak-hells, um pouco diferente pois dava dano e def

tem como distribuir pra gente nao ? xD

  • 5 months later...
Postado
  • Autor

A Solução que encontrei foi essa:
Em movements/scripts/ crie um arquivo com o nome de fullset.lua

-- Ao Equipar um equipamento
function onEquip(cid, item, slot, boolean)
    if not boolean then
        --Aqui será chamado o seu script personalizado, no meu caso ele verifica todos os itens 
    	--equipados no personagem e verifica se são do msm set, caso seja adiciona o buff ao jogador,
    	--caso a contagem de itens do set seja melhor que o minimo para o buff do set ele remove o buff 
    	--caso esteja ativo no personagem
    	--(OBS)Dessa forma os itens mantem seu atributos originais e é chamado o script personalizado também
    end
    if item.uid > 0 then
        return callFunction(cid, item.uid, slot, boolean)
    end
    return true
end
-- Ao desequipar um equipamento
function onDeEquip(cid, item, slot, boolean)
    if boolean then
        --Aqui será chamado o seu script personalizado, no meu caso ele verifica todos os itens 
    	--equipados no personagem e verifica se são do msm set, caso seja adiciona o buff ao jogador,
    	--caso a contagem de itens do set seja melhor que o minimo para o buff do set ele remove o buff 
    	--caso esteja ativo no personagem
    	--(OBS)Dessa forma os itens mantem seu atributos originais e é chamado o script personalizado também
    end
    if item.uid > 0 then
        return callFunction(cid, item.uid, slot, boolean)
    end
    return true
end

 

Em movements/movements.xml será preciso renomear todos os movimentos envolvendo os equipamentos, ex:

<!-- Ao equipar essa armadura é atribui ao personagem os atributos padrões do item (+10% proteção ice) e executado seu script personalizado -->
<movevent type="Equip" level="100" itemid="8884" slot="armor" event="script" value="custom/fullSet.lua">
	<vocation id="4" />
	<vocation id="8" />
</movevent>
<!-- Mesma coisa aqui, porém remove os atributos do item (-10% proteção ice) e executa novamente seu script personalizado -->
<movevent type="DeEquip" itemid="8884" slot="armor" event="script" value="custom/fullSet.lua" />

 

Eu alterei todo meu movements.xml para poder estar constantemente verificando se o jogador está com a quantidade minima de equipamentos equipados para poder assim adicionar o bonus de fullSet.

 

Lembrando que apenas descrevi a solução do problema que postei anteriormente, o script de fullSet foi desenvolvido por mim e no futuro estarei disponibilizando para a comunidade.

 

Att Manoel Louro 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo