Jump to content

Recommended Posts

Hi again community, i saw some years ago a tutorial on a closed community (i think kori-developer, sorry for claim) how to automatically set guild to level 20, 19000 points when you create it via Guardian.

If someone have this tutorial, i'm really happy if he can paste here. Thank everyone.

Link to comment
https://metin2.dev/topic/22732-guild-level-20-at-create/
Share on other sites

  • 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
https://metin2.dev/topic/22732-guild-level-20-at-create/#findComment-123366
Share on other sites

  • 3 weeks later...

Don't use any images from : imgur, turkmmop, freakgamers, inforge, hizliresim... Or your content will be deleted without notice...
Use : https://metin2.download/media/add/

Please use https://metin2.download/ when uploading files smaller than 100MB, otherwise the approval will take longer due to manual upload.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • 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.