Jump to content

LilaLauneTeddy

Members
  • Posts

    2
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by LilaLauneTeddy

  1. Hi

    Here are some procedures to calculate stats.

    pet_levelstats

    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `sp_PetExtraLevelStats` $$
    CREATE PROCEDURE `sp_PetExtraLevelStats` ()
    BEGIN
    
     -- Declaration des constantes/maximum/limites
     DECLARE intMaxHP       INT   DEFAULT 65535;
     DECLARE intMaxMana     INT   DEFAULT 65535;
     DECLARE intMaxArmor    INT   DEFAULT 65535;
     DECLARE intMaxStats    INT   DEFAULT 600;
     DECLARE sngHPInc       FLOAT DEFAULT 0.05;    -- Increment of 5% per level, adjust to whatever you like
     DECLARE sngManaInc     FLOAT DEFAULT 0.05;    -- Increment of 5% per level, adjust to whatever you like
     DECLARE sngArmorInc    FLOAT DEFAULT 0.05;    -- Increment of 5% per level, adjust to whatever you like
     DECLARE sngStatsInc    FLOAT DEFAULT 0.05;    -- Increment of 5% per level, adjust to whatever you like
     DECLARE intStartLvl    INT   DEFAULT 70;      -- Starting level,70 is the default
     DECLARE intFinishLvl   INT   DEFAULT 80;      -- Finishing level, 80 is the default
    
     -- Declaration des variables de base
     DECLARE intRecordDone  INT   DEFAULT 0;
     DECLARE intCreature    INT   DEFAULT 0;
     DECLARE intLevel       INT   DEFAULT 0;
     DECLARE intClass       INT   DEFAULT 0;
     DECLARE intCurrHP      INT   DEFAULT 0;
     DECLARE intCurrMana    INT   DEFAULT 0;
     DECLARE intCurrArmor   INT   DEFAULT 0;
     DECLARE intCurrSTR     INT   DEFAULT 0;
     DECLARE intCurrAGI     INT   DEFAULT 0;
     DECLARE intCurrSTA     INT   DEFAULT 0;
     DECLARE intCurrINT     INT   DEFAULT 0;
     DECLARE intCurrSPI     INT   DEFAULT 0;
    
    
     -- Declaration de l'algorythme
     DECLARE curPetStat  CURSOR FOR SELECT `creature_entry`, `level`, `hp`, `mana`, `armor`, `str`, `agi`, `sta`, `inte`, `spi` FROM pet_levelstats;
     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET intRecordDone = 1;
    
    
     OPEN curPetStat;
    
     REPEAT
    
       FETCH curPetStat INTO intCreature, intLevel, intCurrHP, intCurrMana, intCurrArmor, intCurrSTR, intCurrAGI, intCurrSTA, intCurrINT, intCurrSPI;
    
       IF intLevel = intStartLvl THEN
          REPEAT
            -- ce que nous allons faire pour le lvl suivant
            SET intLevel = intLevel + 1;
            -- Delete the entry for the next level (this is so we don't have to check whether we need UPDATE or INSERT statement
            DELETE FROM pet_levelstats WHERE `creature_entry` = intCreature AND `level` = intLevel;
    
            -- Calcule du suivant H{
            IF (ROUND(intCurrHP * (1 + sngHPInc))) <= intMaxHP THEN
              SET intCurrHP = ROUND(intCurrHP * (1 + sngHPInc));
            ELSE
              SET intCurrHP = intMaxHP;  -- Making sure we don't exceed the database limit
            END IF;
            -- Calcule des Mana suivant
            IF (ROUND(intCurrMana * (1 + sngManaInc))) <= intMaxMana THEN
              SET intCurrMana = ROUND(intCurrMana * (1 + sngManaInc));
            ELSE
              SET intCurrMana = intMaxMana;
            END IF;
            -- Calcule de l'armure suivant
            IF (ROUND(intCurrArmor * (1 + sngArmorInc))) <= intMaxArmor THEN
              SET intCurrArmor = ROUND(intCurrArmor * (1 + sngArmorInc));
            ELSE
              SET intCurrArmor = intMaxArmor;
            END IF;
            -- Calcule du suivant STR
            IF (ROUND(intCurrSTR * (1 + sngStatsInc))) <= intMaxStats THEN
              SET intCurrSTR = ROUND(intCurrSTR * (1 + sngStatsInc));
            ELSE
              SET intCurrSTR = intMaxStats;
            END IF;
            -- Calcule du suivant AGI
            IF (ROUND(intCurrAGI * (1 + sngStatsInc))) <= intMaxStats THEN
              SET intCurrAGI = ROUND(intCurrAGI * (1 + sngStatsInc));
            ELSE
              SET intCurrAGI = intMaxStats;
            END IF;
            -- Calcule du suivant STA
            IF (ROUND(intCurrSTA * (1 + sngStatsInc))) <= intMaxStats THEN
              SET intCurrSTA = ROUND(intCurrSTA * (1 + sngStatsInc));
            ELSE
              SET intCurrSTA = intMaxStats;
            END IF;
            -- Calcule du suivant INT
            IF (ROUND(intCurrINT * (1 + sngStatsInc))) <= intMaxStats THEN
              SET intCurrINT = ROUND(intCurrINT * (1 + sngStatsInc));
            ELSE
              SET intCurrINT = intMaxStats;
            END IF;
            -- Calcule du suivant SPI
            IF (ROUND(intCurrSPI * (1 + sngStatsInc))) <= intMaxStats THEN
              SET intCurrSPI = ROUND(intCurrSPI * (1 + sngStatsInc));
            ELSE
              SET intCurrSPI = intMaxStats;
            END IF;
    
            -- Insertion dans la table
            INSERT INTO pet_levelstats
            (`creature_entry`, `level`, `hp`, `mana`, `armor`, `str`, `agi`, `sta`, `inte`, `spi`)
            VALUES
            (intCreature, intLevel, intCurrHP, intCurrMana, intCurrArmor, intCurrSTR, intCurrAGI, intCurrSTA, intCurrINT, intCurrSPI);
          UNTIL intLevel = intFinishLvl END REPEAT;
       END IF;
     UNTIL intRecordDone END REPEAT;
    
     -- on ferme l'algorythme
     CLOSE curPetStat;
    
    END $$
    
    DELIMITER ;
    call sp_PetExtraLevelStats();

    THX sparc, it works all fine

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use