Postado Novembro 26, 2021 3 anos 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
Postado Dezembro 10, 2021 3 anos Autor Em 26/11/2021 em 22:05, So volto tarde disse: a montaria naz'gul adiciona a speed? Não adiciona :(
Postado Dezembro 14, 2021 3 anos 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();
Postado Dezembro 23, 2021 3 anos 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.