Jump to content

Zonni

Premium
  • Posts

    165
  • Joined

  • Last visited

  • Days Won

    4
  • Feedback

    0%

Posts posted by Zonni

  1. i change name folder stray_dog to dziki_pies and i got white color dogs i change all ms to dziki_pies but not work

     

    Screen_Shot_10_01_14_at_09_30_AM.jpg

     

    what i need programs to edit this?Screen_Shot_10_01_14_at_11_18_AM.jpg

     

    2 years ago someone post on epvp tool for change texure link. I think ricky92 was the creator. Try to find it.

    • Love 2
  2. You predicted this or what? It's only words without any part of files.

    MartPwnS, i cant see the point of closing my previous topic.

    But as you want. I will never talk about this in public. It's your board.

  3. My previous topic was closed ~30 minutes ago and removed. Check logs. This topic is about difference berween WoM files and germany files, no one share any link.

    ~Zonni

    Random developer

    • Love 1
  4. I know you have WoM server. I seen commentary in files i respect you guys for separate from epvp and create community for devs so I will never send link to download it to anyone. But that just another leak...

    Just yet another leak.

    Do you remember leak from January? You can easy find link to it in this forum even in pre-maked to compile game with source.

    Please, just be fair ok? Can we start talking about this leak? It's not banned in forum rules.

    I dont want ban, just I'm saying we live in democracy, everyone can talking what just wants..

    • Love 2
  5. I know i can't do something like std::string = "asd" :D

     

    I forget about initialize this in main. But anyway it doesn't work.

     

    achievement_manager.cpp

     

    #include "stdafx.h"
    #include "constants.h"
    #include "gm.h"
    #include "achievement_manager.h"
    #include "buffer_manager.h"
    #include "desc_client.h"
    #include "log.h"
    #include "config.h"
    #include "p2p.h"
    #include "crc32.h"
    #include "char.h"
    #include "char_manager.h"
    #include "questmanager.h"
    
    
    AchievementManager::AchievementManager()
    {
    }
    
    AchievementManager::~AchievementManager()
    {
    }
    
    void AchievementManager::Initialize()
    {
    }
    
    void AchievementManager::Destroy()
    {
    }
    
    void AchievementManager::Login(AchievementManager::keyA player_name)
    {
    
    	if(test_server)
    		sys_log(0, "AchievementManager::Login Start ");
    
    	if (m_set_loginName.find(player_name) != m_set_loginName.end())
    	{
    		sys_log(0, "AchievementManager::Login 2nd if return ");
    		return;
    	}
    
    /* 	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&AchievementManager::LoadList), this),
    			"SELECT name, achievement FROM achievement%s WHERE name='%s'", get_table_postfix(), name.c_str()); */
    			
    	if(test_server)
    		sys_log(0, "AchievementManager::Login Query ");
    			
    	char szQueryA[1024+1];
    	snprintf(szQueryA, sizeof(szQueryA), "SELECT name, achievement FROM achievement%s WHERE name='%s'", get_table_postfix(), player_name.c_str());
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::Login snprintf %s", szQueryA);
    	
    	std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQueryA));
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::Login DBManager ");
    
    	if (msg->Get()->uiNumRows == 0)
    		return;
    
    	std::string namea;
    
    	sys_log(1, "AchievementManager::LoadList");
    
    	for (uint i = 0; i < msg->Get()->uiNumRows; ++i)
    	{
    		MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
    
    		if (row[0] && row[1])
    		{
    			if (namea.length() == 0)
    				namea = row[0];
    
    			m_Achievements[row[0]].insert(row[1]);
    		}
    	}
    
    	SendList(namea);
    
    	std::set<AchievementManager::keyT>::iterator it;
    
    	m_set_loginName.insert(namea);
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::Login End ");
    }
    
    void AchievementManager::LoadList(SQLMsg * msg)
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::LoadList Start ");
    
    	if (NULL == msg)
    		return;
    
    	if (NULL == msg->Get())
    		return;
    
    	if (msg->Get()->uiNumRows == 0)
    		return;
    
    	std::string name;
    
    	sys_log(1, "AchievementManager::LoadList");
    
    	for (uint i = 0; i < msg->Get()->uiNumRows; ++i)
    	{
    		MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
    
    		if (row[0] && row[1])
    		{
    			if (name.length() == 0)
    				name = row[0];
    
    			m_Achievements[row[0]].insert(row[1]);
    		}
    	}
    
    	SendList(name);
    
    	std::set<AchievementManager::keyT>::iterator it;
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::LoadList End ");
    }
    
    void AchievementManager::SendList(AchievementManager::keyA player_name)
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::SendList Start ");
    		
    	LPCHARACTER ch = CHARACTER_MANAGER::instance().FindPC(player_name.c_str());
    
    	if (!ch)
    		return;
    
    	LPDESC d = ch->GetDesc();
    
    	if (!d)
    		return;
    
    	if (m_Achievements.find(player_name) == m_Achievements.end())
    		return;
    
    	if (m_Achievements[player_name].empty())
    		return;
    
    	itertype(m_Achievements[player_name]) it = m_Achievements[player_name].begin(), eit = m_Achievements[player_name].end();
    
    	while (it != eit)
    	{
    		ch->ChatPacket(CHAT_TYPE_COMMAND, "setachievement %s", it->c_str());
    		++it;
    	}
    	
    	SendGuildRank();
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::SendList End ");
    }
    
    void AchievementManager::Logout(AchievementManager::keyA player_name)
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::Logout Start ");
    
    	if (m_set_loginName.find(player_name) == m_set_loginName.end())
    		return;
    
    	m_set_loginName.erase(player_name);
    
    	std::set<AchievementManager::keyT>::iterator it;
    
    	std::map<keyT, std::set<keyT> >::iterator it2 = m_Achievements.begin();
    
    	while (it2 != m_Achievements.end())
    	{
    		it2->second.erase(player_name);
    		++it2;
    	}
    
    	m_Achievements.erase(player_name);
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::Logout End ");
    }
    
    void AchievementManager::RemoveAllList(keyA player_name)
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::RemoveAllList Start ");
    
    	std::set<keyT>	company(m_Achievements[player_name]);
    	DBManager::instance().Query("DELETE FROM achievement%s WHERE name='%s'",
    			get_table_postfix(), player_name.c_str());
    
    	for (std::set<keyT>::iterator iter = company.begin(); iter != company.end()
    	{
    		company.erase(iter++);
    	}
    	
    	company.clear();
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::RemoveAllList End ");
    }
    
    void AchievementManager::AddAchievement(AchievementManager::keyA player_name, AchievementManager::keyA id)
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::AddAchievement Start ");
    
    	if (id.size() == 0)
    		return;
    
    	if (m_Achievements[player_name].find(id) != m_Achievements[player_name].end())
    		return;
    
    	m_Achievements[player_name].insert(id);
    	
    	LPCHARACTER ch = CHARACTER_MANAGER::instance().FindPC(player_name.c_str());
    	LPDESC d = ch ? ch->GetDesc() : NULL;
    	
    	if(d)
    	{
    		ch->ChatPacket(CHAT_TYPE_COMMAND, "setachievement %s", id.c_str());
    	}
    	
    	sys_log(0, "AchievementManager Add %s %s", player_name.c_str(), id.c_str());
    	DBManager::instance().Query("INSERT INTO achievement%s VALUES ('%s', '%s')", 
    			get_table_postfix(), player_name.c_str(), id.c_str());
    			
    	if(test_server)
    		sys_log(0, "AchievementManager::AddAchievement End ");
    }
    
    void AchievementManager::SendGuildRank()
    {
    	if(test_server)
    		sys_log(0, "AchievementManager::SendGuildRank Start ");
    
    	char szQuery[1024+1];
    	char szBuf[1024+1];
    	char szNew[1024+1];
    	char szName[32+1];
    	int level = 1;
    	int rank_id = 1;
    	
    	snprintf(szQuery, sizeof(szQuery),
    			"SELECT name, level FROM guild%s ORDER BY ladder_point DESC, level DESC, exp DESC LIMIT 10;",
    			get_table_postfix());
    			
    	std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQuery));
    	
    	if (msg->Get()->uiNumRows == 0)
    	{
    		return;
    	}
    
    	MYSQL_ROW row;
    	while ((row = mysql_fetch_row(msg->Get()->pSQLResult))) {
    		if (row[0] && *row[0]) snprintf(szName, 25, "%s", row[0]);
    		if (row[1] && *row[1]) level = strtoul(row[1], NULL, 10);
    		snprintf(szNew, sizeof(szNew), "%d._Lv.%d_%s|", rank_id, level, szName);
    		strcat(szBuf,szNew);
    		++rank_id;
    	}
    	
    	szBuf[strlen(szBuf) - 1] = '0';
    	
    	LPCHARACTER ch = CHARACTER_MANAGER::instance().FindPC(szName);
    	LPDESC d = ch ? ch->GetDesc() : NULL;
    	
    	if(d)
    	{
    		ch->ChatPacket(CHAT_TYPE_COMMAND, "setguildrank %s", szBuf);
    		
    		if (test_server)
    			ch->ChatPacket(CHAT_TYPE_INFO, "setguildrank %s", szBuf);
    			
    	}
    	
    	if(test_server)
    		sys_log(0, "AchievementManager::SendGuildRank End ");
    
    }
    
    
    
     

     

    achievement_manager.h

     

    #ifndef __INC_ACHIEVEMENT_MANAGER_H
    #define __INC_ACHIEVEMENT_MANAGER_H
    
    #include "db.h"
    
    class AchievementManager : public singleton<AchievementManager>
    {
    public:
      typedef std::string keyT;
      typedef const std::string & keyA;
     
      AchievementManager();
      virtual ~AchievementManager();
    
    public:
      void Login(keyA player_name);
      void Logout(keyA player_name);
     
      void AddAchievement(keyA player_name, keyA id);
      void RemoveAllList(keyA player_name);
     
      void Initialize();
     
    private:
      void LoadList(SQLMsg * msg);
      void SendList(keyA player_name);
     
      void SendGuildRank();
     
      void Destroy();
     
      std::set<keyT> m_set_loginName;
      std::map<keyT, std::set<keyT> > m_Achievements;
    
    };
    
    #endif
    

    It's very smillar to messenger_manager.

  6. It isn't a solution, at all - i commented this before and function passed to sys_log(0, "Achievement::Login DBManager ");

    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 28c04300 (LWP 100122/game)]
    std::_Rb_tree<std::string, std::string, std::_Identity<std::string>, std::less<std::string>, std::allocator<std::string> >::find (this=0x4, __k=@0xbfbfa06c)
        at stl_tree.h:493
    493           { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
    (gdb) up
    #1  0x0826230b in Achievement::Login (this=0x0, name=@0xbfbfa06c)
        at stl_set.h:430
    430           { return _M_t.find(__x); }
    (gdb) up
    #2  0x08149820 in CInputLogin::Entergame (this=0x2a12c86c, d=0x2a12c800,
        data=0x2e776000 "n▒etin2client.exe") at input_login.cpp:636
    636             Achievement::instance().Login(ch->GetName());
    (gdb) down
    #1  0x0826230b in Achievement::Login (this=0x0, name=@0xbfbfa06c)
        at stl_set.h:430
    430           { return _M_t.find(__x); }
    (gdb) p name
    $1 = (const string &) @0xbfbfa06c: {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2e775c8c "Zonni"}}
    (gdb) p __x
    No symbol "__x" in current context.
    (gdb) down
    #0  std::_Rb_tree<std::string, std::string, std::_Identity<std::string>, std::less<std::string>, std::allocator<std::string> >::find (this=0x4,
        __k=@0xbfbfa06c) at stl_tree.h:493
    493           { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
    (gdb) p __k
    $2 = (
        const std::basic_string<char,std::char_traits<char>,std::allocator<char> > &) @0xbfbfa06c: {static npos = 4294967295,
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2e775c8c "Zonni"}}
    (gdb) down
    Bottom (i.e., innermost) frame selected; you cannot go down.
    (gdb)
    

    Gdb result.
     
    As i said - it's find function error and seriously i don't know how to pass that ...
     
    my include files:
     

    #include "stdafx.h"
    #include "constants.h"
    #include "gm.h"
    #include "achievement.h"
    #include "buffer_manager.h"
    #include "desc_client.h"
    #include "log.h"
    #include "config.h"
    #include "p2p.h"
    #include "crc32.h"
    #include "char.h"
    #include "char_manager.h"
    #include "questmanager.h"
    

     
    and my header...
     

    #ifndef __INC_ACHIEVEMENT_H
    #define __INC_ACHIEVEMENT_H
    #include "db.h"
    class Achievement : public singleton<Achievement>
    {
    public:
      typedef std::string keyT;
      typedef const std::string & keyA;
     
      Achievement();
      virtual ~Achievement();
    
    public:
      void Initialize();
    
      void Login(keyA name);
      void Logout(keyA name);
     
      void AddAchievement(keyA name, keyA id);
      void RemoveAllList(keyA name);
     
    private:
      void LoadList(SQLMsg * msg);
      void SendList(keyA name);
     
      void SendGuildRank();
     
      void Destroy();
     
      std::set<keyT> m_set_loginName;
      std::map<keyT, std::set<keyT> > m_Achievements; // 1st is name, 2nd is value of earned achievement
    };
    #endif
    

    I think i have std related type error because when i set std::string = "asd"; at beggining of login server crashes too.

  7. Hello everyone. I have this function.

     

     

    void Achievement::Login(Achievement::keyA name)
    {
    
    	if(test_server)
    		sys_log(0, "Achievement::Login Start ");
    
    	if (m_set_loginName.find(name) != m_set_loginName.end())
    	{
    		sys_log(0, "Achievement::Login 2nd if return ");
    		return;
    	}
    
    /* 	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&Achievement::LoadList), this),
    			"SELECT name, achievement FROM achievement%s WHERE name='%s'", get_table_postfix(), name.c_str()); */
    			
    	if(test_server)
    		sys_log(0, "Achievement::Login Query ");
    			
    	char szQueryA[1024+1];
    	snprintf(szQueryA, sizeof(szQueryA), "SELECT name, achievement FROM achievement%s WHERE name='%s'", get_table_postfix(), name.c_str());
    	
    	if(test_server)
    		sys_log(0, "Achievement::Login snprintf %s", szQueryA);
    	
    	std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery(szQueryA));
    	
    	if(test_server)
    		sys_log(0, "Achievement::Login DBManager ");
    
    	if (msg->Get()->uiNumRows == 0)
    		return;
    
    	std::string namea;
    
    	sys_log(1, "Achievement::LoadList");
    
    	for (uint i = 0; i < msg->Get()->uiNumRows; ++i)
    	{
    		MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult);
    
    		if (row[0] && row[1])
    		{
    			if (namea.length() == 0)
    				namea = row[0];
    
    			m_Achievements[row[0]].insert(row[1]);
    		}
    	}
    
    	SendList(namea);
    
    	std::set<Achievement::keyT>::iterator it;
    
    	m_set_loginName.insert(namea);
    	
    	if(test_server)
    		sys_log(0, "Achievement::Login End ");
    }
    
     

    When i call it from CInputLogin::Entergame like this:

     

    Achievement::instance().Login(ch->GetName());
    
     

    my channel crash. Someone know what's error? My syslog says only Achievement::Login Start but compiler doesn't snow any error. I think error it's in

     

    if (m_set_loginAccount.find(name) != m_set_loginAccount.end())
    but this if is right, used for example in messenger_manager.cpp

     

    Maybe i must extend character buffer or something (where i can find it btw.)? Seriously i don't know. I tried a lot.

  8. Thx Sanchez

     

    Zonni,

    You are a very helpful people.. 

    This syslog is useless for me... 

    For me, syserr is enough.

    Oww, i know that! <3

    But let be serious. Syslog isn't really big and sometimes syserr isn't enough to figure out bugs.

    If you really don't need syslog do what Dennis told you, I recommend to use another way:

    find in config.cpp

    log_set_expiration_days(2);
    and replace it by

    log_set_expiration_days(1);
    As I remember server with 2500 players online generate ~1GB logs per hour (1 pm - 10 pm) and as I said - syslog can be usefull in some cases.
    • Love 1
  9. OOoh, it's quite easy.

    Navigate to your source directory & type in console:

    rm -rf *

    This solve all problem especially ours because if I tell you way you probably ask on forum how to do that again.

    For you is better to use precompiled binary. If you cant figure out by yourself this easy mod you shouldn't use source, if you can - you can find way how to do that in forum.

    • Love 2
×
×
  • 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.