The following will teach you how you can give an account a status like Donator or vip, and with that allow them to have a higher level cap.
You need a way so that your software can identify if accounts are "special" accounts. I would not touch the existing accounts table, but add a reference table.
Code:
CREATE TABLE logon.Account_Status (
`acct` int(10) unsigned NOT NULL,
`Status` int(1) NOT NULL,
PRIMARY KEY (`acct`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Here you store the account id, and the status.
0 = Normal (level 70)
1 = Vip (level 75)
2 = Donator (level 80)
Then we create a trigger on the account table, that for every new entry, we will create a row in our new table ... default status will be 0.
Code:
create trigger logon.bir_accounts
before insert on logon.accounts
for each row
begin
insert into logon.Account_Status values (new.acct,0);
end;
Ok ... now we have a way to detect the status of an account. You are going to have to update the status manually in the database, or automate it somewhere yourself, depending on what you are going to do with it.
Next step is blocking the users from leveling after a certain level.
Code:
create trigger logon.bir_characters
before insert on logon.characters
for each row
begin
declare stat int;
select status into stat
from logon.Account_Status
where acct = new.acct;
if ( stat = 0 ) then
if new.level > 70 then
set new.level = 70;
end if;
end if;
if stat = 1 then
if new.level > 75 then
set new.level = 75;
end if;
end if;
if stat =2 then
if new.level > 80 then
set new.level = 80;
end if;
end if;
end;
A "normal" character level 70 could level to 71, but every time he logs out, or cache is saved to the database, it will be put back to 70/75 (not over 80 as that is general cap). To nicen this code a bit more, i would also set set the minimum xp that belongs to a certain level (70/75) ... but i do not know these numbers ....
Also don't forget to change the ascent config to raise the general levelcap to 80.
Ps:
This guide completely focussed on implementing this inside the database, but it's not 100% flawless. To get the best results, part of it should be done inside the core.