-
Posts
576 -
Joined
-
Days Won
43 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by Sanchez
-
[HELP]Multidimensional List
Sanchez replied to Noa's topic in Community Support - Questions & Answers
Replace this: self.i.IsIn(): To this: i.IsIn(): -
Problem with build novaline client
Sanchez replied to Metin2 Dev's topic in Community Support - Questions & Answers
You have to recompile cryptopp with v100 toolset. -
Problem with build novaline client
Sanchez replied to Metin2 Dev's topic in Community Support - Questions & Answers
m_SkillTypeIndexMap, m_SkillAttributeIndexMap, m_SkillNeedWeaponIndexMap -
Problem with build novaline client
Sanchez replied to Metin2 Dev's topic in Community Support - Questions & Answers
If you're trying to compile with v100 toolset, you have to change the inserts in the CPythonSkill::CPythonSkill() like this: m_SkillTypeIndexMap.insert(std::map<std::string, DWORD>::value_type("none", SKILL_TYPE_NONE)); -> m_SkillTypeIndexMap.insert(std::map<std::string, DWORD>::value_type(std::string("none"), SKILL_TYPE_NONE)); -
Client close for no reason...
Sanchez replied to Timasu's topic in Community Support - Questions & Answers
This is a very old problem with the metin2 clients, just open your locale_game.txt and replace this: +%,0f To this: +%.0f -
It allows to write just 3 whispers per second.
-
What is that? Use this: return PyLong_FromLongLong(CPythonPlayer::Instance().GetStatus(POINT_GOLD));
-
Maybe, but I don't know. I never used his hacks before.
-
FileArchiver r3869 / r2806
-
Just like this: return PyLong_FromLongLong(CPythonPlayer::Instance().GetStatus(POINT_GOLD));
-
M2 Download Center Download Here ( Internal ) Hi everyone, Maybe just in my country, but it looks so many people started using this annoying PM flooder which cause a buffer overflow in the target client. It can be fixed easily on server-side, so let's do it: Add these functions as public to char.h: void ClearPMCounter(void) { m_iPMCounter = 0; } void IncreasePMCounter(void) { m_iPMCounter++; } void SetLastPMPulse(void); int GetPMCounter(void) const { return m_iPMCounter; } int GetLastPMPulse(void) const { return m_iLastPMPulse; } Add these to char.h too, but as protected: int m_iLastPMPulse; int m_iPMCounter; Add this function to char.cpp: void CHARACTER::SetLastPMPulse(void) { m_iLastPMPulse = thecore_pulse() + 25; } Still in char.cpp search for the Initialize and add these to the function: m_iLastPMPulse = 0; m_iPMCounter = 0; Now navigate to the Whisper function in input_main.cpp and add this after the iExtraLen variable checking at the top: if (ch->GetLastPMPulse() < thecore_pulse()) ch->ClearPMCounter(); if (ch->GetPMCounter() > 3 && ch->GetLastPMPulse() > thecore_pulse()) { ch->GetDesc()->SetPhase(PHASE_CLOSE); return -1; } Search for this still in the Whisper function: if (pkChr == ch) return (iExtraLen); Add these after that: ch->IncreasePMCounter(); ch->SetLastPMPulse();
- 41 replies
-
- 75
-
Never ever use GUID! It's not unique anymore, every Windows 8 and newer version have the same GUID.
-
Use the PyLong_FromLongLong function.
-
Remove MiddleTab1 and MiddleTab2 from shopdialog.py and then the object binding from the uishop.py
-
syssers... some help plz
Sanchez replied to BackPlayer's topic in Community Support - Questions & Answers
There is no critical error in the logs, it just says the server is shutting down. Are you sure pasted here the entire syserr/syslog? -
I don't think. It will show just the place where the abort() has been called.
-
I don't really have an idea at the moment, but first time just delete 5 quests, then 5 more quests, until you can't identify the wrong one.
-
MiddleTab1 and MiddleTab2 are the new buttons for the "secondary coins" function, If you're not going to use it, just remove the object binding from the uishop.py: ... = GetObject("MiddleTab1") ... = GetObject("MiddleTab2")
- 1 reply
-
- 1
-
There is a function, checkpointing which get executed every 30 seconds and check the value of a variable. If the value is more than 0, then everything okay, otherwise something stuck in the game which blocks a thread. I recommend you to delete all of your quests and try to run your server for a while. If you're not getting this error again, then one of your loop inside your quests are corrupt and trying to run for an infite time. Edit: It's a security alert, not a crash.
-
What's the question?
-
Because then the player will be banned for forever.
-
Shaman spell crash - "????"
Sanchez replied to Grou's topic in Community Support - Questions & Answers
As I said before, debug it. -
I don't know what do you mean as "void" but do not do infinite while loops in the game, that blocks the thread. Use the built-in timer to achieve your goal: // Initialize the event static LPEVENT YourEvent = NULL; // Create the event information struct. You can pass values to the timer by adding them here. EVENTINFO(this_is_your_event_information) { // Just pass one value int value; }; // Create the function of the event EVENTFUNC(this_is_your_event) { /* This is your event function, you can do anything here */ // To reach your passed values, you have to do this this_is_your_event_information* info = dynamic_cast<this_is_your_event_information*>( event->info ); // Get the value DoSomething(info->value); // The return value is the time of your re-execution return 5 * 25; // So this function will be called again in 5 seconds } /* To start your event */ // Allocate the event informations this_is_your_event_information* info = AllocEventInfo<this_is_your_event_information>(); // Set a value of your variable info->value = 3; // Start the event YourEvent = event_create(this_is_your_event, info, 5 * 25);