
Originally Posted by
FlyingBurrito
The only problem with this addon is ALOT of it is hardcoded into the source so it is hard to just "release" it as a done project because every server will want different buffs added into the actual source which means different index numbers etc ...
I am not a "coder" like for example Darn and R3vo so i did not know how to really go about adding the buffs into the Config.ini so you can actually manually add the buff indexes of any buff you would want to use.
So i hardcoded it into the source itself since it was just used for my servers i did not need to make it as a Full Config System.
Hi,
I've write a small example for you based on your config style, here it is:
Code:
#include "iniConfig.h"
void iniConfig::Load_Config_LevelRewards(){
CIniReader *reader = new CIniReader(".\\TiMoConfigs\\LevelReward.txt");
LevelReward_CBuffIndex = reader->ReadInteger("[CustomBuffs]", "BuffIndex", 0);
LevelReward_CBuffState = reader->ReadInteger("[CustomBuffs]", "BuffState", 0);
LevelReward_CBuffCD = reader->ReadInteger("[CustomBuffs]", "BuffCD", 0);
LevelReward_Strength = reader->ReadInteger("BuffReward", "Strength", 0);
LevelReward_Health = reader->ReadInteger("BuffReward", "Health", 0);
LevelReward_Agility = reader->ReadInteger("BuffReward", "Agility", 0);
LevelReward_Intelligence = reader->ReadInteger("BuffReward", "Intelligence", 0);
LevelReward_Critical = reader->ReadInteger("BuffReward", "Critical", 0);
LevelReward_Defense = reader->ReadInteger("BuffReward", "Defense", 0);
LevelReward_Refine = reader->ReadInteger("BuffReward", "Refine", 0);
LevelReward_Speed = reader->ReadInteger("BuffReward", "Speed", 0);
LevelReward_Level = reader->ReadInteger("LevelReward", "Level", 0);
LevelReward_Index = reader->ReadInteger("LevelReward", "Index", 0);
LevelReward_Amount = reader->ReadInteger("LevelReward", "Amount", 0);
LevelReward_StatePoint = reader->ReadInteger("LevelReward", "StatePoint", 0);
LevelReward_SkillPoint = reader->ReadInteger("LevelReward", "SkillPoint", 0);
LevelReward_Buffs = reader->ReadBoolean("LevelReward", "BuffReward", false);
LevelReward_CustomBuffs = reader->ReadBoolean("LevelReward", "CustomBuffs", false);
LevelReward_MsgType = reader->ReadString("LevelReward", "MessageType", "");
LevelReward_Msg = reader->ReadString("LevelReward", "Message", "");
delete reader;
}
Code:
void iLevelUp::LevelUpRewards(){
if (this->player->GetLevel() == this->config->LevelReward_Level){
this->player->InsertItem(this->config->LevelReward_Index, this->config->LevelReward_Amount);
this->player->SetStatPoints(this->player->GetStatPoints() + this->config->LevelReward_StatePoints);
this->player->SetSkillPoints(this->player->GetStatPoints() + this->config->LevelReward_SkillPoints);
if (this->config->LevelReward_Buffs){
this->player->CancelallBuffs();
this->player->InsertallBuffs(this->config->LevelReward_Strength, this->config->LevelReward_Health,
this->config->LevelReward_Agility, this->config->LevelReward_Intelligence,
this->config->LevelReward_Critical, this->config->LevelReward_Defense,
this->config->LevelReward_Refine, this->config->LevelReward_Speed);
}
else if (this->config->LevelReward_CustomBuffs){
this->player->InsertBuff(this->config->LevelReward_CBuffIndex, this->config->LevelReward_CBuffState, this->config->LevelReward_CBuffCD);
}
if (this->config->LevelReward_MsgType == "notice"){
this->player->Notice(this->config->LevelReward_Msg);
}
else if (this->config->LevelReward_MsgType == "chatmsg"){
this->player->ChatMsg("Server", this->config->LevelReward_Msg);
}
}
}
CancelallBuffs and InsertallBuffs functions:
Code:
void Player::CancelallBuffs()
{
Server::CChar::CancelBuff(this->playerpointer, 46);
Server::CChar::CancelBuff(this->playerpointer, 47);
Server::CChar::CancelBuff(this->playerpointer, 48);
Server::CChar::CancelBuff(this->playerpointer, 49);
Server::CChar::CancelBuff(this->playerpointer, 50);
Server::CChar::CancelBuff(this->playerpointer, 37);
Server::CChar::CancelBuff(this->playerpointer, 36);
Server::CChar::CancelBuff(this->playerpointer, 12);
}
void Player::InsertallBuffs(int str, int hlth, int agi, int intel, int crit, int def, int ref, int speed)
{
int Strength = Server::CChar::CreateBuff(46, 1800, str, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Strength);
int Health = Server::CChar::CreateBuff(47, 1800, hlth, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Health);
int Agility = Server::CChar::CreateBuff(48, 1800, agi, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Agility);
int Intelligence = Server::CChar::CreateBuff(49, 1800, intel, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Intelligence);
int Critical = Server::CChar::CreateBuff(50, 1800, crit, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Critical);
int Defense = Server::CChar::CreateBuff(37, 1800, def, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Defense);
int Refine = Server::CChar::CreateBuff(36, 1800, ref, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer + 180))(this->playerpointer, Refine);
int Speed = Server::CChar::CreateBuff(12, 1800, speed, 0);
(*(int(__thiscall **)(void*, unsigned long))(*(unsigned long *)this->playerpointer+ 180))(this->playerpointer, Speed);
}
and finally LevelReward.txt (config file):
Code:
[CustomBuffs]
BuffIndex = 12
BuffStats = 90
BuffCD = 3600
[BuffReward]
Strength = 20
Health = 20
Agility = 20
Intelligence = 20
Critical = 9
Defense = 67
Refine = 58
Speed = 80
[LevelReward]
Level = 70
Index = 5007
Amount = 1
StatPoint = 10
SkillPoint = 5
BuffReward = true
CustomBuffs = false
MessageType = chatmsg
Message = $congratulation
Please note that this is a fast-written example and i didn't test it so there could be a mistakes..
also it should work on both engine;.
Hope i helped you :)