Ir para conteúdo

Featured Replies

Postado

Versão 7.92, não sei qual é ao certo

 

Meu ot tem um sistema de montaria no qual vc clica no icone e ele muda a outfit... esse sistema é adicionado pela source algumas montarias tem o atributo de regenerar hp/mp , abs e double xp... porem quero adicionar o atributo de speed... porem faço essa adaptação compilo tudo certinho sem erro e quando vou fazer o teste no servidor ele não adiciona a quantia de speed. Ficarei grato se alguém puder me dá essa força s2

 

Está surgindo algum erro? Se sim coloque-o aqui. 

Citar

Ele não da error na compilação... apenas não está funcionando

 

 

Estou utilizando duas adaptações.


Codigo 01:

int32_t Player::getExtSpeed() const
{
	int32_t ExtSpeed = 0;
	
	Item* item = NULL;
     for(int slot = SLOT_HEAD; slot <= SLOT_RING; slot++){
		if(!isItemAbilityEnabled((slots_t)slot)){
			continue;
		}

		if(!(item = getInventoryItem((slots_t)slot)))
			continue;

		const ItemType& it = Item::items[item->getID()];
		
        if(it.abilities.speed > 0){
			ExtSpeed += it.abilities.speed;
            }
   }
   
   int32_t montaria; 
   getStorageValue(15900, montaria);
   
   if(getCurrentOutfit().lookType == 163 && montaria == 7){
     ExtSpeed += 500;
     }
     
           if(getCurrentOutfit().lookType != 163 && montaria == 7 && hasCondition(CONDITION_BLOOD)){
     ExtSpeed += 500;
     }                         
	
	return ExtSpeed;
}
=========================
Codigo 02:
   
         int32_t Player::getExtSpeed() const
{
	int32_t ExtSpeed = 0;
	
	Item* item = NULL;
     for(int slot = SLOT_HEAD; slot <= SLOT_RING; slot++){
		if(!isItemAbilityEnabled((slots_t)slot)){
			continue;
		}

		if(!(item = getInventoryItem((slots_t)slot)))
			continue;

		const ItemType& it = Item::items[item->getID()];

		if(it.abilities.speed > 0 && getVocationId() >= 9){
			ExtSpeed += it.abilities.speed;
            }
        else if(getVocationId() <= 8 && it.abilities.speed <= 10){
             ExtSpeed += it.abilities.speed;
             }
        }
	
	if(hasCondition(CONDITION_HASTE)){
     ExtSpeed += 500;
    }
    
    
    int32_t montaria; 
   getStorageValue(15900, montaria);
    
    if(getCurrentOutfit().lookType == 163 && montaria == 7){
     ExtSpeed += 500;
     }
     
    if(getCurrentOutfit().lookType == 435 && montaria == 8){
     ExtSpeed += 500;
     }

    if(getCurrentOutfit().lookType == 447 && montaria == 9){
     ExtSpeed += 500;
     }

    // montaria naz'gul
    if(getCurrentOutfit().lookType == 162 && montaria == 11){
     ExtSpeed += 500;
     }
     
          if(hasCondition(CONDITION_BLOOD)){          
             if(montaria == 7){
     ExtSpeed += 500;
     }
     
    if(montaria == 8){
     ExtSpeed += 500;
     }

    if(montaria == 9){
     ExtSpeed += 500;
     }

    if(montaria == 11){
     ExtSpeed += 500;

     }    
   }

	return ExtSpeed;

}

 

Se alguém puder me dá essa luz do motivo pelo qual não ta funcionando ficarei muito agradecido 

 

  • 2 weeks later...
Postado
  • Administrador

Tá vamos la, o código esta totalmente correto e muito organizado parabéns, no entanto você esta inicializando uma speed nova para a montaria.
Incluindo o player.h (acredito que você criou novos cpp e headers para criar este código)
Acessamos a velocidade atual do jogador retornando ela e podemos usar como quiser para alterar, acredito que o calculo deva ser o base speed + o speed da mount e não iniciar ela em zero...

int32_t ExtSpeed = 0;

Acredito que você deveria setar o PLAYER_MAX_SPEED para realmente alterar velocidade máxima que o jogador deve ser da seguinte maneira, definido o player flag para a flag hasMaxSpeed in group or player constructor.
 

if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
baseSpeed = vocation->getBaseSpeed();

 

  • 2 weeks later...
Postado
  • Autor
Em 14/12/2021 em 11:31, HomeJobs disse:

Tá vamos la, o código esta totalmente correto e muito organizado parabéns, no entanto você esta inicializando uma speed nova para a montaria.
Incluindo o player.h (acredito que você criou novos cpp e headers para criar este código)
Acessamos a velocidade atual do jogador retornando ela e podemos usar como quiser para alterar, acredito que o calculo deva ser o base speed + o speed da mount e não iniciar ela em zero...


int32_t ExtSpeed = 0;

Acredito que você deveria setar o PLAYER_MAX_SPEED para realmente alterar velocidade máxima que o jogador deve ser da seguinte maneira, definido o player flag para a flag hasMaxSpeed in group or player constructor.
 


if (!hasFlag(PlayerFlag_SetMaxSpeed)) {
baseSpeed = vocation->getBaseSpeed();

 

 

 

 

Muito obrigado, amigo. Chegando em casa irei fazer como explicado.. funcionando retorno aqui (y) s2

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