Jump to content

Suporte Alguém me da uma ajuda com esse script por favor


Recommended Posts

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 

 

Link to post
Share on other sites
  • 2 weeks later...

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();

 

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link to post
Share on other sites
  • 2 weeks later...
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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.


  • Similar Content

    • By xrealm
      Olá! gostaria de pedir um favor a quem tem mais experiência no assunto de cliente/servidor derivados(Pokémon).
      Não tenho experiência nenhuma com OT servers e estou estudando programação, quero montar um servidor em casa e ir arrumando com o tempo sem pressa cada detalhe da maneira que eu acho legal. Tenho apenas algumas duvidas sobre os servidores, busquei algumas informações mas não achei nada especifico no assunto que quero então decidi criar o tópico para algumas perguntas mais relevantes.
       
      1. Existe alguma base de OT Pokémon que usa o Ron Client? Se sim, qual?
      2. Qual base está menos modificada para analise e aprendizado? // Visto que essa pergunta é para quem quer aprender sobre os sistemas do jogo e abrir o código para se aventurar
       
       
      Desde já obrigado.
      peço perdão se estiver na área errada pois não achei "duvidas"
    • By vctbr
      Peguei uma base pra por on e editar umas coisas e olha o que aparece
       
      [24/05/2022 23:20:42] Pokemon Dash Advanced, version 0.3.6 (PDA)
      [24/05/2022 23:20:42] Compiled with GNU C++ version 4.4.0 at Nov 15 2020, 13:28:38.
      [24/05/2022 23:20:42] Matheus alves de toledo.
      [24/05/2022 23:20:42] Site Em breve.
      [24/05/2022 23:20:42] >> Loading config (config.lua)
      [24/05/2022 23:20:42] > Using SHA1 encryption
      [24/05/2022 23:20:42] >> Loading RSA key
      [24/05/2022 23:20:42] >> Starting SQL connection
      [24/05/2022 23:20:43] Failed connecting to database - MYSQL ERROR: Can't connect to MySQL server on 'localhost' (10061) (2003)
      [24/05/2022 23:20:43] > ERROR: Couldn't estabilish connection to SQL database!
       
      Meu config.lua

      accountManager = false
      accountManager = false
      namelockManager = true
      newPlayerChooseVoc = false
      newPlayerSpawnPosX = 1007
      newPlayerSpawnPosY = 1042
      newPlayerSpawnPosZ = 8
      newPlayerTownId = 1
      newPlayerLevel = 12
      newPlayerMagicLevel = 0
      generateAccountNumber = false
      lightInterval = 7500
      lightChange = 1
      startupTime = 351
      startupLight = 100
      limitPokeballs = 6
      happyDropTime = 12
      minHappinessEffectDelay = 25
      maxHappinessEffectDelay = 40
      PokemonStageVeryHappy = 215
      PokemonStageHappy = 160
      PokemonStageOK = 110
      PokemonStageSad = 50
      PokemonStageMad = 0
      maximumHunger = 120
      stateHunger = 100
      increaseHunger = 7
      decreaseHappy = 1
      decreaseHungryHappy = 4
      useTeleportWithFly = false
      dropHappyDuringBattles = true
      allowBlockSpawn = false
      rateGymSpellInterval = 0.68
      redSkullLength = 30 * 24 * 60 * 60
      blackSkullLength = 45 * 24 * 60 * 60
      dailyFragsToRedSkull = 3
      weeklyFragsToRedSkull = 5
      monthlyFragsToRedSkull = 10
      dailyFragsToBlackSkull = dailyFragsToRedSkull
      weeklyFragsToBlackSkull = weeklyFragsToRedSkull
      monthlyFragsToBlackSkull = monthlyFragsToRedSkull
      dailyFragsToBanishment = dailyFragsToRedSkull
      weeklyFragsToBanishment = weeklyFragsToRedSkull
      monthlyFragsToBanishment = monthlyFragsToRedSkull
      blackSkulledDeathHealth = 40
      blackSkulledDeathMana = 0
      useBlackSkull = false
      useFragHandler = true
      advancedFragList = false
      notationsToBan = 3
      warningsToFinalBan = 4
      warningsToDeletion = 5
      banLength = 7 * 24 * 60 * 60
      killsBanLength = 7 * 24 * 60 * 60
      finalBanLength = 30 * 24 * 60 * 60
      ipBanishmentLength = 1 * 24 * 60 * 60
      broadcastBanishments = false
      maxViolationCommentSize = 200
      violationNameReportActionType = 2
      autoBanishUnknownBytes = false
      worldType = "1"
      protectionLevel = 1
      pvpTileIgnoreLevelAndVocationProtection = true
      pzLocked = 18 * 1000
      huntingDuration = 60 * 1000
      criticalHitChance = 7
      criticalHitMultiplier = 1
      displayCriticalHitNotify = false
      removeWeaponAmmunition = true
      removeWeaponCharges = true
      removeRuneCharges = true
      whiteSkullTime = 15 * 60 * 1000
      noDamageToSameLookfeet = false
      showHealingDamage = false
      showHealingDamageForMonsters = true
      fieldOwnershipDuration = 5 * 1000
      stopAttackingAtExit = false
      oldConditionAccuracy = false
      loginProtectionPeriod = 10 * 1000
      deathLostPercent = 1
      stairhopDelay = 0 * 1000
      pushCreatureDelay = 1 * 1000
      deathContainerId = 0
      addonsOnlyPremium = false
      gainExperienceColor = 215
      addManaSpentInPvPZone = true
      squareColor = 0
      allowFightback = true
      ip = "127.0.0.1"
      bindOnlyConfiguredIpAddress = false
      loginPort = 7171
      gamePort = 7172
      adminPort = 7171
      statusPort = 7171
      loginTries = 10
      retryTimeout = 5 * 1000
      loginTimeout = 60 * 1000
      maxPlayers = 100
      motd = "[BR] Bem-vindo(a) ao Pok� naja, por favor logue em seu personagem.\n[EN] Welcome to Pok� Naja, please log in your character.\n[ES] Bienvenido(a) a Pok� Naja, por favor, acceda a su car�cter."
      displayOnOrOffAtCharlist = false
      onePlayerOnlinePerAccount = false
      allowClones = true
      serverName = "PokeNaja"
      loginMessage = "Pok� Naja | Patch Version: 3.1"
      statusTimeout = 5 * 60 * 1000
      replaceKickOnLogin = true
      forceSlowConnectionsToDisconnect = false
      loginOnlyWithLoginServer = false
      premiumPlayerSkipWaitList = false
      sqlType = "mysql"
      sqlHost = "localhost"
      sqlPort = 3306
      sqlUser = "root"
      sqlPass = ""
      sqlDatabase = "test"
      sqlFile = "forgottenserver.s3db"
      sqlKeepAlive = 0
      sqlRemyadTimeout = 10
      mysqlWriteTimeout = 10
      encryptionType = "sha1"
      deathListEnabled = true
      deathListRequiredTime = 1 * 60 * 1000
      deathAssistCount = 19
      maxDeathRecords = 10
      ingameGuildManagement = true
      levelToFormGuild = 80
      premiumDaysToFormGuild = 0
      guildNameMinLength = 2
      guildNameMaxLength = 25
      highscoreDisplayPlayers = 15
      updateHighscoresAfterMinutes = 60
      buyableAndSellableHouses = true
      houseNeedPremium = true
      bedsRequirePremium = true
      levelToBuyHouse = 100
      housesPerAccount = 1
      houseRentAsPrice = false
      housePriceAsRent = false
      housePriceEachSquare = 19275
      houseRentPeriod = "never"
      houseCleanOld = 0
      guildHalls = false
      timeBetweenActions = 500
      timeBetweenExActions = 500
      hotkeyAimbotEnabled = true
      mapName = "PokeNaja"
      mapAuthor = "Matheus alves de toledo"
      randomizeTiles = true
      storeTrash = false
      cleanProtectedZones = true
      mailboxDisabledTowns = "1"
      defaultPriority = "high"
      niceLevel = 5
      coresUsed = "-1"
      optimizedatapackbaseAtStartup = true
      removePremiumOnInit = true
      confirmOutdatedVersion = false
      formulaLevel = 5.0
      formulaMagic = 1.0
      bufferMutedOnSpellFailure = false
      spellNameInsteadOfWords = false
      emoteSpells = true
      hideSpellWords = false
      allowChangeOutfit = true
      allowChangeColors = true
      allowChangeAddons = true
      disableOutfitsForPrivilegedPlayers = false
      dataDirectory = "datapack/"
      bankSystem = true
      displaySkillLevelOnAdvance = false
      promptExceptionTracerErrorBox = true
      separateViplistPerCharacter = false
      maximumDoorLevel = 500
      maxMessageBuffer = 4
      saveGlobalStorage = false
      useHousedatapackStorage = false
      storePlayerDirection = false
      checkCorpseOwner = true
      monsterLootMessage = 3
      monsterLootMessageType = 25
      ghostModeInvisibleEffect = true
      ghostModeSpellEffects = true
      idleWarningTime = 14 * 60 * 1000
      idleKickTime = 15 * 60 * 1000
      expireReportsAfterReads = 1
      playerQueryDeepness = 2
      maxItemsPerPZTile = 0
      maxItemsPerHouseTile = 0
      freePremium = false
      premiumForPromotion = false
      blessingOnlyPremium = true
      blessingReductionBase = 30
      blessingReductionDecreament = 5
      eachBlessReduction = 8
      experienceStages = true
      rateExperience = 2
      rateExperienceFromPlayers = 0
      rateSkill = 1.0
      rateMagic = 1.0
      rateLoot = 5
      rateSpawn = 2
      rateMonsterHealth = 1.0
      rateMonsterMana = 1.0
      rateMonsterAttack = 1.5
      rateMonsterDefense = 1.0
      minLevelThresholdForKilledPlayer = 0.9
      maxLevelThresholdForKilledPlayer = 1.1
      rateStaminaLoss = 1
      rateStaminaGain = 3
      rateStaminaThresholdGain = 12
      staminaRatingLimitTop = 41 * 60
      staminaRatingLimitBottom = 14 * 60
      rateStaminaAboveNormal = 1.0
      rateStaminaUnderNormal = 1.0
      staminaThresholdOnlyPremium = true
      experienceShareRadiusX = 30
      experienceShareRadiusY = 30
      experienceShareRadiusZ = 1
      experienceShareLevelDifference = 200 * 200
      extraPartyExperienceLimit = 20
      extraPartyExperiencePercent = 20
      experienceShareActivity = 2 * 60 * 1000
      globalSaveEnabled = false
      globalSaveHour = 8
      shutdownAtGlobalSave = false
      cleanMapAtGlobalSave = false
      deSpawnRange = 2
      deSpawnRadius = 25
      maxPlayerSummons = 1
      teleportAllSummons = true
      teleportPlayerSummons = true
      ownerName = "Zoom/PokeDW"
      ownerEmail = "matheustoledo01@outlook.com"
      url = ""
      location = "Brazil"
      displayGamemastersWithOnlineCommand = false
      adminLogsEnabled = false
      displayPlayersLogging = true
      prefixChannelLogs = ""
      runFile = ""
      outLogName = ""
      errorLogName = ""
      truncateLogsOnStartup = false
      accountSize = 5
      attackSpeed = 30
      capsystem = "no"
       
    • By Carlinhous1996
      bom dia amigos do TK alguem poderia me ajudar com esse erro que ta dando no meu server ?

       
       
      gente, eu acho que tem algo a ver com o antidupe. sera ?
       
    • By paulo thush
      Salve, Galera eu tenho uma duvida apenas isso se alguem pode tirar minha duvida, Bom então to com um servidor baiakzik kkk, Sim eu to usando essa base, emfim queria saber se alguem tem as source que serve nesse servidor, se algum outro baiak de certo nele, Achei 2 baiak aqui não sei como funciona essas sources nem nada do tipo por isso to pedindo ajuda e tals.
      os 2 baiak são esses.
       
      alguem pode me ajudar.
       
    • By koyotestark
      .Qual servidor ou website você utiliza como base? 
      TFS 0.4
      Qual o motivo deste tópico? 
      Achei esse script no otland, que permite trocar id da vocation direto no vocations.xml compilando na source, tudo compila normalmente, o servidor liga etc, porem quando o boneco morre ele seta a id para 100 e nao o que foi colocado no vocations.xml
      Alguem poderia tentar identificar o erro?
       
      os codigos foram postados pelo usuario Dantez, algumas linhas abaixo do pedido do post original.
       
      Você tem o código disponível? Se tiver publique-o aqui: 
      https://otland.net/threads/different-corpses-for-each-vocation.206670/
       
       
×
×
  • Create New...

Important Information

Confirmação de Termo