Jump to content

Guild level 20 at create


Recommended Posts

  • Honorable Member

dirty way for first creation:

Spoiler

guild.cpp:


#define ENABLE_START_LEVEL
CGuild::CGuild(TGuildCreateParameter & cp)
{
	Initialize();

	m_general_count = 0;

	m_iMemberCountBonus = 0;

	strlcpy(m_data.name, cp.name, sizeof(m_data.name));
	m_data.master_pid = cp.master->GetPlayerID();
	strlcpy(m_data.grade_array[0].grade_name, LC_TEXT("±жµеАе"), sizeof(m_data.grade_array[0].grade_name));
	m_data.grade_array[0].auth_flag = GUILD_AUTH_ADD_MEMBER | GUILD_AUTH_REMOVE_MEMBER | GUILD_AUTH_NOTICE | GUILD_AUTH_USE_SKILL;

	for (int i = 1; i < GUILD_GRADE_COUNT; ++i)
	{
		strlcpy(m_data.grade_array[i].grade_name, LC_TEXT("±жµеїш"), sizeof(m_data.grade_array[i].grade_name));
		m_data.grade_array[i].auth_flag = 0;
	}
#ifdef ENABLE_START_LEVEL
	const BYTE StartLvl = GUILD_MAX_LEVEL;
	m_data.level = StartLvl;
	ComputeGuildPoints();
	m_data.power = m_data.max_power;
	std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery(
		"INSERT INTO guild%s(name, master, sp, level, exp, skill_point, skill) "
		"VALUES('%s', %u, %d, %d, 0, %d, '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0')",
		get_table_postfix(), m_data.name, m_data.master_pid, m_data.power, m_data.level, m_data.level-1));
#else
	std::auto_ptr<SQLMsg> pmsg (DBManager::instance().DirectQuery(
				"INSERT INTO guild%s(name, master, sp, level, exp, skill_point, skill) "
				"VALUES('%s', %u, 1000, 1, 0, 0, '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0')", 
				get_table_postfix(), m_data.name, m_data.master_pid));
#endif
	m_data.guild_id = pmsg->Get()->uiInsertID;

	for (int i = 0; i < GUILD_GRADE_COUNT; ++i)
	{
		DBManager::instance().Query("INSERT INTO guild_grade%s VALUES(%u, %d, '%s', %d)", 
				get_table_postfix(),
				m_data.guild_id, 
				i + 1, 
				m_data.grade_array[i].grade_name, 
				m_data.grade_array[i].auth_flag);
	}
#ifndef ENABLE_START_LEVEL
	ComputeGuildPoints();
	m_data.power	= m_data.max_power;
#endif
	m_data.ladder_point	= 0;
	db_clientdesc->DBPacket(HEADER_GD_GUILD_CREATE, 0, &m_data.guild_id, sizeof(DWORD));

	TPacketGuildSkillUpdate guild_skill;
	guild_skill.guild_id = m_data.guild_id;
	guild_skill.amount = 0;
#ifdef ENABLE_START_LEVEL
	guild_skill.skill_point = m_data.level-1;
#else
	guild_skill.skill_point = 0;
#endif
	memset(guild_skill.skill_levels, 0, GUILD_SKILL_COUNT);
	db_clientdesc->DBPacket(HEADER_GD_GUILD_SKILL_UPDATE, 0, &guild_skill, sizeof(guild_skill));
	CHARACTER_MANAGER::instance().for_each_pc(FGuildNameSender(GetID(), GetName()));
	RequestAddMember(cp.master, GUILD_LEADER_GRADE);
}

 

++

here is small setlevel function (giving exp):

#include <numeric>
void CGuild::SetLevel(int lvl)
{
	// lvl = std::min(std::max(m_data.level, lvl), GUILD_MAX_LEVEL);
  	lvl = MINMAX(m_data.level, lvl, GUILD_MAX_LEVEL);
	if (lvl != m_data.level)
		GuildPointChange(POINT_EXP, std::accumulate(std::begin(guild_exp_table2) + m_data.level, std::end(guild_exp_table2) - 1 - (GUILD_MAX_LEVEL - lvl), 0), true);
}

 

  • Love 1

 

Link to comment
Share on other sites

  • 3 weeks later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Similar Content

  • Activity

    1. 0

      We are looking for a C++ and Python programmer

    2. 0

      [Quest Scheduler Request] Is there a way to make a quest run independet of player events? Lets say start quest automatically at server startup?

    3. 111

      Ulthar SF V2 (TMP4 Base)

    4. 0

      Quest function when 102.kill definition whereabouts help

    5. 5

      [M2 FILTER] Customized Client Filter

    6. 0

      [INGAME] RGB Color on chat broken

  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / 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.