Some condition:
1. It work for skills with status 0 (lock) or 1 (incrase).
2. For skill with status -1 (Decrased) triger don't work.
IMPORTANT: YOU MUST MAKE RELOG AFTER DIE IF YOU WANT SKILL BACK!
- Code: Select all
CREATE DEFINER=`root`@`localhost` TRIGGER `t_skill_refund` BEFORE UPDATE ON `skills` FOR EACH ROW BEGIN
SELECT LockStatus into @status from `skills` where `skills`.ID = new.ID;
IF (old.SkillAmount > new.SkillAmount) and @status >-1 THEN
SET new.SkillAmount = old.SkillAmount;
END IF;
END
And here some modified script to RP + PVP servers.
how it work??
Simple. Refund OLD.LOST.SKILL.Value in PERCENT-1% lost points.
EXAMPLE 1: Skill 100 lost 10 points: refund: 99% then after relog skill should be on 99,90 value
EXAMPLE 2: Skill 90 lost 10 points: refund: 89% then after relog skill should be on 88,90 value
EXAMPLE 3: Skill 60 lost 10 point: refund: 59% then after relog skill should be on 55,90 value
EXAMPLE 4: Skill 30 lost 10 point: refund: 29% then after relog skill should be on 22,90 value
IMPORTANT: YOU MUST MAKE RELOG AFTER DIE IF YOU WANT SKILL BACK!
- Code: Select all
CREATE DEFINER=`root`@`localhost` TRIGGER `t_skill_refund` BEFORE UPDATE ON `skills` FOR EACH ROW BEGIN
SELECT LockStatus into @status from `skills` where `skills`.ID = new.ID;
IF (old.SkillAmount > new.SkillAmount) and @status >-1 THEN
SET @OldSkillValue = (old.SkillAmount-10000000);
if ( @OldSkillValue < 0 ) THEN
SET @OldSkillValue = 0;
END IF;
SET @Percent = 1 - (@OldSkillValue / 1000000000);
SET new.SkillAmount = old.SkillAmount-(old.SkillAmount-new.SkillAmount)*@Percent;
END IF;
END