Jump to content

Alpha

Inactive Member
  • Posts

    45
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by Alpha

  1. Mobs should be their own entity you can reduce memory usage by partly by just allocating specific stuff just for players

    but thats an extra allocation for every entity potentially several more allocations for example if you are using maps and not reserving or resizing you will end up with multiple allocations for a single map

    • Good 2
  2. xupIu2p.png


     

    void CAttributeInstance::Render()
    {
        for(const auto& vertex : m_v3HeightDataVector) {
            uint32_t dwColor = 0xff0000ff;
    
            Engine::GetDevice().SetTextureFactor(dwColor);
            Engine::GetDevice().SetFvF(D3DFVF_XYZ);
            Engine::GetDevice().SetTransform(D3DTS_WORLD, Matrix::Identity);
            Engine::GetDevice().SetCullMode(D3DCULL_NONE);
            Engine::GetDevice().DrawPrimitiveUP( D3DPT_TRIANGLELIST, vertex.size() / 3,(void*)vertex.data(), sizeof(Vector3));
        }
    }

    It's not really a collision it's saved as height in the mdatr file

    The rendering code i provided is also not the best ...

    But it works one has just to adjust ist for the old STATEMANAGER interface and call it like

    if (po->pAttributeInstance)
    {
        po->pAttributeInstance->Render();
    }
    • Metin2 Dev 9
    • Good 2
    • Love 2
  3. On a side note

    You actually throw away pythons garbage collector by even having destructors in most cases

     

     

    bool PyTuple_GetWindow(PyObject* poArgs, int pos, UI::CWindow** ppRetWindow) {
    	PyObject* iHandle;
    	if (!PyTuple_GetObject(poArgs, pos, &iHandle))
    		return false;
    
    	if (!iHandle)
    		return false;
    
    	if (!PyCapsule_CheckExact(iHandle))
    		return false;
    
    	if (auto* ptr = PyCapsule_GetPointer(iHandle, nullptr); ptr) {
    		*ppRetWindow = static_cast<UI::CWindow*>(ptr);
    
    		return true;
    	}
    
    	return false;
    }
              
    // Usage
    auto win     = UI::CWindowManager::Instance().RegisterXYWindow(po, szLayer);
    auto capsule = PyCapsule_New(win, nullptr, CapsuleDestroyer);
    
    return capsule;
              
    
    void CapsuleDestroyer(PyObject* capsule) {
    	auto rawPtr = static_cast<UI::CWindow*>(PyCapsule_GetPointer(capsule, nullptr));
    	UI::CWindowManager::instance().DestroyWindow(rawPtr);
    }
              

     

    • Love 4
  4. Deleting the old grid in the constructor of the new grid just makes destruction less obvious and when working with raw pointers to heap memory you do not want destruction to be hidden.

    As it can easily lead to heap use after free bugs

  5. But thats already built into the game you can enable it by just adding  the

    ->Deform();

    Part for buildings all you are adding seems to be LOD to the animations and that is basically GrannySampleModelAnimationsAcceleratedLOD

    Some of the M2M Map Objects have Animations builtin and also some metin2 objects there is a watermill for example that has an animation in its gr2 file

    Ah the rest of your code gets rid of the: "Unable to find matching track_group for Model:" messages

     

     

    • Love 3
  6. Am 4.7.2019 um 13:07 schrieb Flourine:

    Tim is @Alpha

    Nope ... Tim has left the scene a long time ago

    Also Bela is right. Well you CAN rewrite the ResourceManager and make it more effective.

    You can also just well do the whole playersettingModule.py in c++ directly and it will dramatically decrease loading times.

    The calls from python to c++ and back slow it down immensely. (Or use Cython Freeze and cdef functions)

    • Love 2
  7. Or you use the official code like this in CPythonNetworkStream::RecvChatPacket():

     

    		else if (CHAT_TYPE_MISSION == kChat.type)
    		{
    			if(uChatSize)
    				PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_SetMissionMessage", Py_BuildValue("(s)", buf));
    			else
    				PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_CleanMissionMessage", Py_BuildValue("()"));
    
    		}
    		else if (CHAT_TYPE_SUB_MISSION == kChat.type)
    		{
    			PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_SetSubMissionMessage", Py_BuildValue("(s)", buf));
    		}

    Instead of the PythonNetworkStreamCommand  Part

  8. Just compile the Preprocessor and use it

    And for texture modification for example

     

    RebaseTextureFiles is intended to change the filestrings reported
    for textures from absolute paths (used by Max and Maya), to paths
    relative to the root of your game data directory, the character
    file itself, or any other root you want to specify.

    preprocessor RebaseTextureFiles file.gr2 -output file_relative.gr2 -basepath c:/game/data/root

    For modifying textures the granny preprocessor provides

    Renames granny_file_info members specified by "-rename Name[idx]"

     

    preprocessor RenameElement base.gr2 -output base.gr2 -rename textures[0] -newname "d:/ymir work/npc_mount/new_texture_name.dds"

    Would change texture index 0 to d:/ymir work/npc_mount/new_texture_name.dds

    You can event automate most of this process just by creating a batch file the processor takes and executes on the given file

    BonesPerMesh -bonelimit 100
    CleanMaterials
    VertexCacheOptimize
    PlatformConvert -pointer 32 -endian little
    Compress

    With just this and Granny 2.11 you have a good amount of performance gain in metin2 for example

    This little script for example takes an directory collects all gr2 files and applies a file called dx9.ppb to the collected files

    from __future__ import print_function
    import fnmatch
    import os
    import subprocess
    import sys
    
    #http://code.activestate.com/recipes/577058/
    def query_yes_no(question, default="yes"):
        """Ask a yes/no question via raw_input() and return their answer.
    
        "question" is a string that is presented to the user.
        "default" is the presumed answer if the user just hits <Enter>.
            It must be "yes" (the default), "no" or None (meaning
            an answer is required of the user).
    
        The "answer" return value is True for "yes" or False for "no".
        """
        valid = {"yes": True, "y": True, "ye": True,
                 "no": False, "n": False}
        if default is None:
            prompt = " [y/n] "
        elif default == "yes":
            prompt = " [Y/n] "
        elif default == "no":
            prompt = " [y/N] "
        else:
            raise ValueError("invalid default answer: '%s'" % default)
    
        while True:
            sys.stdout.write(question + prompt)
            choice = raw_input().lower()
            if default is not None and choice == '':
                return valid[default]
            elif choice in valid:
                return valid[choice]
            else:
                sys.stdout.write("Please respond with 'yes' or 'no' "
                                 "(or 'y' or 'n').\n")
    
    
    # Print iterations progress
    #https://stackoverflow.com/questions/3173320/text-progress-bar-in-the-console?page=1&tab=votes#tab-top
    def printProgressBar(iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '#'):
        """
        Call in a loop to create terminal progress bar
        @params:
            iteration   - Required  : current iteration (Int)
            total       - Required  : total iterations (Int)
            prefix      - Optional  : prefix string (Str)
            suffix      - Optional  : suffix string (Str)
            decimals    - Optional  : positive number of decimals in percent complete (Int)
            length      - Optional  : character length of bar (Int)
            fill        - Optional  : bar fill character (Str)
        """
        percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
        filledLength = int(length * iteration // total)
        bar = fill * filledLength + '-' * (length - filledLength)
        print('\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end = '\r')
        # Print New Line on Complete
        if iteration == total: 
            print()
    
    
    print("ATTENTION! This script should only be executed in single folders")
    print("as it always changes the granny files recursively. We do")
    print("not want that data bloat in our git repository")
    print("")
    
    accepted = query_yes_no("Are you sure you want to execute the updater?")
    if not accepted:
        sys.exit()
        
    path = raw_input("Enter the path that you want to convert:")
    if path == ".":
    	accepted = query_yes_no("Do you know that . is everything?")
    	if not accepted:
    		sys.exit()
    
    matches = []
    for root, dirnames, filenames in os.walk("source/" + path):
        for filename in fnmatch.filter(filenames, '*.gr2'):
            matches.append(os.path.join(root, filename))
    
    total = len(matches)
    
    if total <= 0:
    	print("No gr2 file found in path: " + path)
    	sys.exit()
    
    printProgressBar(0, total, prefix = 'Progress:', suffix = 'Complete', length = 50)
    
    for i, match in enumerate(matches):
        printProgressBar(i, total, prefix = 'Progress:', suffix = 'Complete', length = 50)
        subprocess.call(['preprocessor.exe', 'RunBatch', '-batch', 'dx9.ppb', match])
    	
    print("Done")

     

    • Love 2
  9. I wrote this function after being asked to Q.Q
    bool CExchange::CheckSpace()
    {
    	
    	std::vector<CGrid> s_grids;
    	for (int pCount = 0; pCount < INVENTORY_PAGE_COUNT; ++pCount)
    	{
    		s_grids.push_back(CGrid(5, 9));
    		s_grids[pCount].Clear();
    	}
    
    
    	LPCHARACTER victim = GetCompany()->GetOwner();
    	LPITEM item;
    
    	int i;
    
    	for (i = 0; i < INVENTORY_MAX_NUM; ++i) {
    		if (!(item = victim->GetInventoryItem(i)))
    			continue;
    
    		BYTE itemSize = item->GetSize();
    		BYTE bPage = i / (INVENTORY_PAGE_SIZE) - 1;
    
    		s_grids[bPage].Put(i - (INVENTORY_PAGE_SIZE * bPage), 1, itemSize);
    	}
    
    	static std::vector <WORD> s_vDSGrid(DRAGON_SOUL_INVENTORY_MAX_NUM);
    
    	bool bDSInitialized = false;
    
    	for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i)
    	{
    		if (!(item = m_apItems[i]))
    			continue;
    
    		BYTE itemSize = item->GetSize();
    
    		if (item->IsDragonSoul())
    		{
    			if (!victim->DragonSoul_IsQualified())
    				return false;
    
    			if (!bDSInitialized) {
    				bDSInitialized = true;
    				victim->CopyDragonSoulItemGrid(s_vDSGrid);
    			}
    
    			bool bExistEmptySpace = false;
    			WORD wBasePos = DSManager::instance().GetBasePosition(item);
    			if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    				return false;
    
    			for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++)
    			{
    				WORD wPos = wBasePos + i;
    				if (0 == s_vDSGrid[wBasePos])
    				{
    					bool bEmpty = true;
    					for (int j = 1; j < item->GetSize(); j++)
    					{
    						if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM])
    						{
    							bEmpty = false;
    							break;
    						}
    					}
    					if (bEmpty)
    					{
    						for (int j = 0; j < item->GetSize(); j++)
    						{
    							s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1;
    						}
    						bExistEmptySpace = true;
    						break;
    					}
    				}
    				if (bExistEmptySpace)
    					break;
    			}
    			if (!bExistEmptySpace)
    				return false;
    		}
    		else
    		{
    			bool bFound;
    			for (int pCount = 0; pCount < INVENTORY_PAGE_SIZE; ++pCount)
    			{
    				int iPos = s_grids[pCount].FindBlank(1, itemSize);
    				if (iPos >= 0) {
    					s_grids[pCount].Put(iPos, 1, itemSize);
    					bFound = true;
    					break;
    				}
    			}
    			if (bFound)
    				continue;
    
    			return false;  // No space left in inventory
    		}
    	}
    
    	return true;
    }
    

    Credits to Martin and Think and all the other Persons who worked on the other fix I used as base.

     

    This is untested oh and there is a change in common/length.h

    	INVENTORY_PAGE_SIZE = 45,
    	INVENTORY_PAGE_COUNT = 3,
    	INVENTORY_MAX_NUM		= INVENTORY_PAGE_SIZE * INVENTORY_PAGE_COUNT,
    

    Basically you can replace 

    INVENTORY_MAX_NUM / 2 with INVENTORY_PAGE_SIZE in all files

     

    and if you want to add or remove inventory pages just change INVENTORY_PAGE_COUNT

     

    And to repeat it this is as for now untested I actually test it in some minutes.

     

    Edit: Basically this is the same as o.o

    static CGrid s_grid1(5 * INVENTORY_PAGE_COUNT, 9);

    • Love 2
  10. M2 Download Center

    This is the hidden content, please
    ( Internal )

    Hello,

    I publish the light version of my ProtoReader here,
    the light version has one functionality.

    It converts client item_proto and mob_proto the their server version

    Input:
    item_proto
    mob_proto

    Output:
    item_names.txt
    item_proto.txt
    mob_names.txt
    mob_proto.txt

    Its fully automated just double click on it when its in the same folder as the item_proto and mob_proto.
    It works like dump_proto but in reverse.

    Attention! Not every value is included in the clientside proto tables it could happen that you have to
    change some values on your own.

    ProtoReader is for old item_proto files (before dragon soul (dragon stone alchemy)).
    ProtoReaderNewFormat is for the current files.

    Virustotal:

    This is the hidden content, please


    You find the download in the attachments.

    When you like my work and this tool, go and visit:

    I might also do a Pro Version with some other Features like clientside proto to xml or sql or sql to server item_proto and so

    • Metin2 Dev 149
    • Eyes 5
    • Dislove 5
    • Angry 4
    • Sad 1
    • Cry 4
    • Smile Tear 1
    • Think 2
    • Confused 4
    • Scream 1
    • Good 81
    • Love 22
    • Love 157
  11. Sorry, I've made a typo. I meant that there will be no 2.4.2! If there are problems with 2.4.1, I'm just gonna make some hotfixes. But I'll not release a 2.4.2. Next version is 2.5.

     

    The update checking would be just a simple quest. The only thing made in the core would be a quest function to print out the current version - I'd made some clarity with this and additionally you're free to choose wheter you want to use the quest or not.. It's just a quest that's going to connect to a webspace, looking up for the newest version and comparing it with the current. If there's a new version and you've got IMPLEMENTOR-rank, then you're receving a message in the chat. It also won't check every login. It'll just check every new day when you log in.

     

    Also how about fixing a strange bug? If you're gonna make a new gm, why not be able to give him the rights without reloading the complete gmlist and just do it ingame?

    I'm currently thinking about something like the /op-Command minecraft uses. But! This command will only be able to be used by Implementor! And you'll have to specify the rank you want to give.

     

    As I told you. There're some problems with open source and no, they can't be fixed easily.

     

    Mecury asked three times if you have a matching client binary for the server binarys that he can use and you answered him several times but did not answer that question everytime you answered xD Ah ok, you already answered that several times.

  12. Uhm actually, Magic restance does not work well but, the magic restistance bonus in metin2 works well actually too well, if you have too high magic resistance on your server all shamans and suras are heavily nerved.

     

    @Night

    that would mean that if the hit is critical the defense is doubled too

     

    CritDMG = 2NormalDMG - 2ArmorDefense

     

    but well thats the easy solution

     

    the damage factor would be a lot nicer

    at the moment anyone in metin2 avoids defense because they think because of the penetrate bonus stuff they get more damage if they have more defense funny thats actually because of the critical hits

     

    100 % critical hit bonus is about 30 percent actually

    405 % critical hit bonus is 100 percent

  13.  

    Hello guys , Channel crashed again but now i got syserr and syslog can anyone get a look please ? 

    syserr:

     

    SYSERR: May  2 16:43:01 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:01 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:02 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:03 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:04 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:04 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:04 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:04 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)

    SYSERR: May  2 16:43:05 :: checkpointing: CHECKPOINT shutdown: tics did not updated.

    syslog:

     

    May  2 16:43:05 :: SAVE: PvPInDeath 960487x268642

    May  2 16:43:05 :: AddAffect Hangork type 211 apply 19 -30 flag 5 duration 20
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    May  2 16:43:05 :: Handshake: client_time 113361924 server_time 113549044 name: Life
    May  2 16:43:05 :: QUEST [REWARD] SaintDeath give exp2 0
    May  2 16:43:05 :: QUEST timer name erfahrung1 cycle 25 pc 548684 npc 4294967291 loop? 0
    May  2 16:43:05 :: QUEST add timer 0x43652220 5
    May  2 16:43:05 :: QUEST remove with no cancel 0x40a0c800
    May  2 16:43:05 :: SECTREE DIFFER: FireFly 6x27 was 7x27
    May  2 16:43:05 :: ObjectInsertPacket vid 257 vnum 14408 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 176 vnum 14100 rot 0.000000 0.000000 85.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 256 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 221 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 220 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 219 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 216 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 247 vnum 14402 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 215 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 246 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 214 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 245 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 213 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 244 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 212 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 243 vnum 14402 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 211 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 242 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 210 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 241 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 209 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 240 vnum 14405 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 208 vnum 14408 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 239 vnum 14403 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 207 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 238 vnum 14200 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 206 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 237 vnum 14308 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 205 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 236 vnum 14200 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 204 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 273 vnum 14200 rot 0.000000 0.000000 82.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 272 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 271 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 270 vnum 14200 rot 0.000000 0.000000 180.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 189 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 269 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 188 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 268 vnum 14405 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 187 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 267 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 235 vnum 14302 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 186 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 266 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 234 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 185 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 265 vnum 14200 rot 0.000000 0.000000 91.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 233 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 184 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 264 vnum 14100 rot 0.000000 0.000000 357.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 232 vnum 14301 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 183 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 263 vnum 14200 rot 0.000000 0.000000 91.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 231 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 182 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 262 vnum 14408 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 230 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 181 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 261 vnum 14408 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 229 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 260 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 228 vnum 14405 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 259 vnum 14408 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 227 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 178 vnum 14200 rot 0.000000 0.000000 94.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 226 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 177 vnum 14200 rot 0.000000 0.000000 94.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 225 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 224 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 175 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 255 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 223 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 174 vnum 14304 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 254 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 222 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 253 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 252 vnum 14404 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 251 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 250 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 218 vnum 14407 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 249 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 217 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 248 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 203 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 202 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 201 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 200 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 199 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 198 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 278 vnum 14043 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 197 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 277 vnum 14200 rot 0.000000 0.000000 85.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 196 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 276 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 195 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 275 vnum 14307 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 194 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 274 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 193 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 192 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 191 vnum 14300 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 190 vnum 14406 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 180 vnum 14405 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 179 vnum 14400 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: ObjectInsertPacket vid 258 vnum 14401 rot 0.000000 0.000000 0.000000
    May  2 16:43:05 :: COMMAND: nowa115: restart_here
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    May  2 16:43:05 :: QUEST [REWARD] Life give exp2 0
    May  2 16:43:05 :: QUEST timer name erfahrung cycle 25 pc 548779 npc 4294967292 loop? 0
    May  2 16:43:05 :: QUEST add timer 0x4687eb80 4
    May  2 16:43:05 :: QUEST remove with no cancel 0x3ebb93e0
    May  2 16:43:05 :: yesmin1: USE_ITEM Enhance Change Scroll (cell: 54)
    May  2 16:43:05 :: AddAffect Black Orc type 211 apply 19 -30 flag 5 duration 20
    May  2 16:43:05 :: LEVELUP: BlackYong 27 NEXT EXP 1418000
    May  2 16:43:05 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=550915, npc=633)
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 10003
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 10003
    May  2 16:43:05 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=550915, npc=633)
    May  2 16:43:05 :: AddAffect Black Orc type 210 apply 0 0 flag 6 duration 4
    May  2 16:43:05 :: AddAffect Elite Orc General type 210 apply 0 0 flag 6 duration 4
    May  2 16:43:05 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=550915, npc=635)
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 10854
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 10854
    May  2 16:43:05 :: AddAffect Elite Orc Scout type 211 apply 19 -30 flag 5 duration 20
    May  2 16:43:05 :: COMMAND: nowa115: restart_here
    May  2 16:43:05 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=550915, npc=637)
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 13888
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 13888
    May  2 16:43:05 :: GIVE_GOLD: BlackYong 13888
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    SYSERR: May  2 16:43:05 :: GetPoint: POINT_ERROR: SaintDeath type 55 val 50 (max: 6)
    May  2 16:43:05 :: QUEST [REWARD] TyCy give exp2 0
    May  2 16:43:05 :: QUEST timer name erfahrung cycle 25 pc 547891 npc 4294967292 loop? 0
    May  2 16:43:05 :: QUEST add timer 0x43576b40 4
    May  2 16:43:05 :: QUEST remove with no cancel 0x431c9ac0
    May  2 16:43:05 :: CQuestManager::Kill QUEST_KILL_EVENT (pc=550417, npc=3704)
    May  2 16:43:05 :: GIVE_GOLD: MicroPoint 65922
    SYSERR: May  2 16:43:05 :: checkpointing: CHECKPOINT shutdown: tics did not updated.

     

    change the signal timer calls to 120 seconds

  14. :( The fix I posted in the other thread should work

    It's my mistake so I should know how to fix it :o

     

     

    Small Question?
     
    The official database r40146 size is 8607 KB well?
     
    Me when I compile this database it is 8548 kb!

     

    That may be why I get this error when starting my database

     

     

    Up Help me please :(

     

     

    Help me please

     

    Bug Database

    #0 0x28404930 in strtoul_l () from /lib/libc.so.7
    #1 0x28404b9d in strtoul () from /lib/libc.so.7
    #2 0x080ce7ee in mysql_set_character_set ()
    #3 0x080d9715 in CAsyncSQL::QueryLocaleSet ()
    #4 0x080510e0 in CDBManager::SetLocale (this=0x28821b00,
    szLocale=0x28856b0c "latin1") at DBManager.cpp:172
    #5 0x0805d2c5 in CClientManager::InitializeLocalization (this=0xbfbfd35c)
    at ClientManager.cpp:3686
    #6 0x0805dfad in CClientManager::Initialize (this=0xbfbfd35c)
    at ClientManager.cpp:95
    #7 0x0804feae in Start () at Main.cpp:381
    #8 0x080500c5 in main () at Main.cpp:88
     
    when I start

    Serveur de Production
    Log Off
    AsyncSQL: connected to localhost (reconnect 1)
    Success PLAYER
    AsyncSQL: connected to localhost (reconnect 1)
    Success ACCOUNT
    AsyncSQL: connected to localhost (reconnect 1)
    Success COMMON
    AsyncSQL: connected to localhost (reconnect 1)
    Success HOTBACKUP

    it should be like this

    Serveur de Production
    Log Off
    AsyncSQL: connected to localhost (reconnect 1)
    Success PLAYER
    AsyncSQL: connected to localhost (reconnect 1)
    Success ACCOUNT
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    Success COMMON
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    Success HOTBACKUP
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    AsyncSQL: connected to localhost (reconnect 1)
    ▒׽▒Ʈ ▒▒▒▒▒▒ ▒▒▒ϴ▒. ▒״▒▒ ▒▒▒▒▒մϴ▒.
    ▒׽▒Ʈ ▒▒▒▒▒▒ ▒▒▒ϴ▒. ▒״▒▒ ▒▒▒▒▒մϴ▒.
    item_proto_test.txt ▒▒▒▒▒ ▒о▒▒▒▒ ▒▒▒߽▒ϴ▒
    item_proto_test.txt ▒▒▒▒▒ ▒о▒▒▒▒ ▒▒▒߽▒ϴ▒

     

     

     

    or

     

     

    Thank you friend for this VM :)

    You could say we all PORTS you to install?

     

     
    As I meet all the time this very annoying bug!
     
    db
    Real Server
    Log OffAsyncSQL: connected to localhost (reconnect 1)
    Success PLAYER
    AsyncSQL: connected to localhost (reconnect 1)
    Success ACCOUNT
    AsyncSQL: connected to localhost (reconnect 1)
    Success COMMON
    AsyncSQL: connected to localhost (reconnect 1)
    Success HOTBACKUP
    Segmentation fault (core dumped)

    backtrace

    #0 0x28331930 in strtoul_l () from /lib/libc.so.7
    #1 0x28331b9d in strtoul () from /lib/libc.so.7
    #2 0x080ce2ab in mysql_set_character_set ()
    #3 0x080d6ab5 in CAsyncSQL::QueryLocaleSet ()
    #4 0x08051100 in CDBManager::SetLocale (this=0x28421b00, szLocale=0x28456a0c "latin1") at DBManager.cpp:172
    #5 0x0805d2e5 in CClientManager::InitializeLocalization (this=0xbfbfd39c) at ClientManager.cpp:3686
    #6 0x0805dfcd in CClientManager::Initialize (this=0xbfbfd39c) at ClientManager.cpp:95
    #7 0x0804fece in Start () at Main.cpp:381
    #8 0x080500e5 in main () at Main.cpp:88

     

     

     

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