Jump to content

How to connect files: Mob_proto, Mob_names -Item_Proto, Item_Names txt to Mysql


Recommended Posts



Hello to all,
The title says everything about my problem, I would like to understand how to connect my txt 
files to Mysql. many tell me not to use txt files for work ... as Mysql is better! What are you thinking? 
and would you tell me how to get the files to read Mysql?

(The server started successfully, but it looks like a file read .txt

Link to comment
Share on other sites

both methods are proper, txt proto files can be faster for loading db at startup

If you want protos at mysql you must edit your DB source file ClientManagerBoot.cpp

CClientManager::InitializeMobTable() {...}

CClientManager::InitializeItemTable() {...}

Spoiler

bool CClientManager::InitializeMobTable()
{
	char query[2048];
	snprintf(query, sizeof(query),
			"SELECT vnum,name,%s,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag,"
"empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min,"
"gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item,"
"resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate,"
"resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect,"
"resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0,"
"skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2,"
"skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s"
,g_stLocaleNameColumn.c_str(),
			GetTablePostfix());

	std::auto_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
	SQLResult * pRes = pkMsg->Get();

	if (!pRes->uiNumRows)
		return false;

	if (!m_vec_mobTable.empty())
	{
		sys_log(0, "RELOAD: mob_proto");
		m_vec_mobTable.clear();
	}
	int size = pRes->uiNumRows;
	m_vec_mobTable.resize(size);
	memset(&m_vec_mobTable[0], 0, sizeof(TMobTable) * m_vec_mobTable.size());
	TMobTable * mob_table = &m_vec_mobTable[0];
	
	MYSQL_ROW data;
	//return true;
	set<int> vnumSet;
	while ((data = mysql_fetch_row(pRes->pSQLResult)))
	{
		
		/*
		"SELECT vnum,name,locale_name,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag,"
"empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min,"
"gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item,"
"resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate,"
"resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect,"
"resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0,"
"skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2,"
"skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s */
		int col = 0;
		str_to_number(mob_table->dwVnum, data[col++]);
		if(mob_table->dwVnum ==0) continue;
		strlcpy(mob_table->szName,data[col++] , sizeof(mob_table->szName));
		strlcpy(mob_table->szLocaleName, data[col++], sizeof(mob_table->szLocaleName));
		str_to_number(mob_table->bRank,data[col++]);
		str_to_number(mob_table->bType,data[col++]);
		str_to_number(mob_table->bBattleType,data[col++]);
		str_to_number(mob_table->bLevel,data[col++]);
		str_to_number(mob_table->bSize,data[col++]);
		//AI_FLAG
		mob_table->dwAIFlag = get_Mob_AIFlag_Value(data[col++]);
		//mount_capacity;
		col++;
		//RACE_FLAG
		mob_table->dwRaceFlag = get_Mob_RaceFlag_Value(data[col++]);
		//IMMUNE_FLAG
		mob_table->dwImmuneFlag = get_Mob_ImmuneFlag_Value(data[col++]);
		mob_table->bEmpire = atoi(data[col++]);
		strlcpy(mob_table->szFolder, data[col++], sizeof(mob_table->szFolder));
		mob_table->bOnClickType = atoi(data[col++]);
		mob_table->bStr = atoi(data[col++]);
		mob_table->bDex = atoi(data[col++]);
		mob_table->bCon = atoi(data[col++]);
		mob_table->bInt = atoi(data[col++]);
		mob_table->dwDamageRange[0] = atoi(data[col++]);
		mob_table->dwDamageRange[1] = atoi(data[col++]);
		mob_table->dwMaxHP = atoi(data[col++]);
		mob_table->bRegenCycle = atoi(data[col++]);
		mob_table->bRegenPercent = atoi(data[col++]);
		mob_table->dwGoldMin = atoi(data[col++]);
		mob_table->dwGoldMax = atoi(data[col++]);
		mob_table->dwExp = atoi(data[col++]);
		mob_table->wDef = atoi(data[col++]);
		mob_table->sAttackSpeed = atoi(data[col++]);
		mob_table->sMovingSpeed = atoi(data[col++]);
		mob_table->bAggresiveHPPct = atoi(data[col++]);
		mob_table->wAggressiveSight = atoi(data[col++]);
		mob_table->wAttackRange = atoi(data[col++]);	
		str_to_number(mob_table->dwDropItemVnum, data[col++]);	//32
		str_to_number(mob_table->dwResurrectionVnum, data[col++]);
		for (int i = 0; i < MOB_ENCHANTS_MAX_NUM; ++i)
			str_to_number(mob_table->cEnchants[i], data[col++]);

		for (int i = 0; i < MOB_RESISTS_MAX_NUM; ++i)
			str_to_number(mob_table->cResists[i], data[col++]);

		str_to_number(mob_table->fDamMultiply, data[col++]);
		str_to_number(mob_table->dwSummonVnum, data[col++]);
		str_to_number(mob_table->dwDrainSP, data[col++]);

		//Mob_Color
		++col;

		str_to_number(mob_table->dwPolymorphItemVnum, data[col++]);

		str_to_number(mob_table->Skills[0].bLevel, data[col++]);
		str_to_number(mob_table->Skills[0].dwVnum, data[col++]);
		str_to_number(mob_table->Skills[1].bLevel, data[col++]);
		str_to_number(mob_table->Skills[1].dwVnum, data[col++]);
		str_to_number(mob_table->Skills[2].bLevel, data[col++]);
		str_to_number(mob_table->Skills[2].dwVnum, data[col++]);
		str_to_number(mob_table->Skills[3].bLevel, data[col++]);
		str_to_number(mob_table->Skills[3].dwVnum, data[col++]);
		str_to_number(mob_table->Skills[4].bLevel, data[col++]);
		str_to_number(mob_table->Skills[4].dwVnum, data[col++]);

		str_to_number(mob_table->bBerserkPoint, data[col++]);
		str_to_number(mob_table->bStoneSkinPoint, data[col++]);
		str_to_number(mob_table->bGodSpeedPoint, data[col++]);
		str_to_number(mob_table->bDeathBlowPoint, data[col++]);
		str_to_number(mob_table->bRevivePoint, data[col++]);

		//ĽÂżˇ vnum Ăß°ˇ
		vnumSet.insert(mob_table->dwVnum);
		
		
		//fprintf(stderr, "MOB #%d %s %s level: %u rank: %u empire: %d\n", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
		//sys_log(0, "MOB #%-5d %-24s %-24s level: %-3u rank: %u empire: %d", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
		++mob_table;
	}
	fprintf(stderr,"\e[32mMOB_PROTO: %d/%d mobs loaded.\r\n\e[39m",size,vnumSet.size());
	sort(m_vec_mobTable.begin(), m_vec_mobTable.end(), FCompareVnum());
	return true;

}

 

 

Spoiler


bool CClientManager::InitializeItemTable()
{
            char query[2048];
            snprintf(query, sizeof(query),
            "SELECT vnum,name,%s,type,subtype,weight,size,antiflag,flag,wearflag,immuneflag+0,gold,shop_buy_price,refined_vnum,"
            "refine_set,magic_pct,limittype0,limitvalue0,limittype1,limitvalue1,applytype0,applyvalue0,"
            "applytype1,applyvalue1,applytype2,applyvalue2,value0,value1,value2,value3,value4,value5,socket_pct,addon_type FROM item_proto%s  ORDER BY vnum",
            g_stLocaleNameColumn.c_str(),
            GetTablePostfix());
     
            std::auto_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
            SQLResult * pRes = pkMsg->Get();
     
            if (!pRes->uiNumRows)
                    return false;
            int addNumber = pRes->uiNumRows;
            if (!m_vec_itemTable.empty())
            {
                    sys_log(0, "RELOAD: item_proto");
                    m_vec_itemTable.clear();
                    m_map_itemTableByVnum.clear();
            }
     
            m_vec_itemTable.resize(addNumber-1);
            memset(&m_vec_itemTable[0], 0, sizeof(TItemTable) * m_vec_itemTable.size());
            TItemTable * item_table = &m_vec_itemTable[0];
     
            MYSQL_ROW data;
            //return true;
            set<int> vnumSet;
            while ((data = mysql_fetch_row(pRes->pSQLResult)))
            {
                    str_to_number(item_table->dwVnum, data[0]);
                    strlcpy(item_table->szName,data[1] , sizeof(item_table->szName));
                    strlcpy(item_table->szLocaleName, data[2], sizeof(item_table->szLocaleName));
                    str_to_number(item_table->bType, data[3]);
                    str_to_number(item_table->bSubType, data[4]);
                    str_to_number(item_table->bWeight, data[5]);
                    str_to_number(item_table->bSize, data[6]);
                    str_to_number(item_table->dwAntiFlags, data[7]);
                    str_to_number(item_table->dwFlags, data[8]);
                    str_to_number(item_table->dwWearFlags, data[9]);
                    str_to_number(item_table->dwImmuneFlag, data[10]);
                    str_to_number(item_table->dwGold, data[11]);
                    str_to_number(item_table->dwShopBuyPrice, data[12]);
                    str_to_number(item_table->dwRefinedVnum, data[13]);
                    str_to_number(item_table->wRefineSet, data[14]);
                    str_to_number(item_table->bAlterToMagicItemPct, data[15]);
                    item_table->cLimitRealTimeFirstUseIndex = -1;
                    item_table->cLimitTimerBasedOnWearIndex = -1;
                   
                    str_to_number(item_table->aLimits[0].bType, data[16]);
                    str_to_number(item_table->aLimits[0].lValue, data[17]);
                    if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[0].bType)
                            item_table->cLimitRealTimeFirstUseIndex = (char)0;
                    if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[0].bType)
                            item_table->cLimitTimerBasedOnWearIndex = (char)0;
                           
                    str_to_number(item_table->aLimits[1].bType, data[18]);
                    str_to_number(item_table->aLimits[1].lValue, data[19]);
                    if (LIMIT_REAL_TIME_START_FIRST_USE == item_table->aLimits[1].bType)
                            item_table->cLimitRealTimeFirstUseIndex = (char)1;
                    if (LIMIT_TIMER_BASED_ON_WEAR == item_table->aLimits[1].bType)
                            item_table->cLimitTimerBasedOnWearIndex = (char)1;
                   
     
                    str_to_number(item_table->aApplies[0].bType, data[20]);
                    str_to_number(item_table->aApplies[0].lValue, data[21]);
                   
                    str_to_number(item_table->aApplies[1].bType, data[22]);
                    str_to_number(item_table->aApplies[1].lValue, data[23]);
                   
                    str_to_number(item_table->aApplies[2].bType, data[24]);
                    str_to_number(item_table->aApplies[2].lValue, data[25]);
                   
     
                    str_to_number(item_table->alValues[0], data[26]);
                    str_to_number(item_table->alValues[1], data[27]);
                    str_to_number(item_table->alValues[2], data[28]);
                    str_to_number(item_table->alValues[3], data[29]);
                    str_to_number(item_table->alValues[4], data[30]);
			str_to_number(item_table->alValues[5], data[31]);
                           
                    str_to_number(item_table->bGainSocketPct, data[32]);
                    str_to_number(item_table->sAddonType, data[33]);
			
     
                    vnumSet.insert(item_table->dwVnum);
                    m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table));
                    /*sys_log(0, "ITEM: #%-5lu %-24s %-24s VAL: %d %ld %d %d %d %d WEAR %d ANTI %d IMMUNE %d REFINE %lu REFINE_SET %u MAGIC_PCT %u",
                                    item_table->dwVnum,
                                    item_table->szName,
                                    item_table->szLocaleName,
                                    item_table->alValues[0],
                                    item_table->alValues[1],
                                    item_table->alValues[2],
                                    item_table->alValues[3],
                                    item_table->alValues[4],
                                    item_table->alValues[5],
                                    item_table->dwWearFlags,
                                    item_table->dwAntiFlags,
                                    item_table->dwImmuneFlag,
                                    item_table->dwRefinedVnum,
                                    item_table->wRefineSet,
                                    item_table->bAlterToMagicItemPct);*/
     
                    item_table++;
            }
			fprintf(stderr," \e[32mITEM_PROTO: %d/%d items loaded.\r\n\e[39m",addNumber,vnumSet.size());
            return true;
     
}

 

And delete or comment

 

if (!MirrorMobTableIntoDB())

{...}

if (!MirrorItemTableIntoDB())

{...}

 

Link to comment
Share on other sites

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.