ridetpro
Banned-
Posts
106 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Everything posted by ridetpro
-
Game - Client / Client - Game communication with Packets
ridetpro replied to Sanchez's topic in Guides & HowTo
WPE- Winsock packet editor [Hidden Content] -
Use this select query in input_auth, you need select the ID.. I'm not sure how ( i did not checked whole matrix_card logic) . Input_auth.cpp "SELECT id, PASSWORD('%s'), password, social_id, status, availDt - NOW() > 0," db.cpp { if (!row[col]) { sys_err("error column %d", col); M2_DELETE(pinfo); break; } DWORD dwID = 0; str_to_number(dwID, row[col++]); }
-
Restrict mounts when player receives damage
ridetpro replied to pixel's topic in Community Support - Questions & Answers
Need approval, wait till then. -
Block item/function on map in python
ridetpro replied to Tallywa's topic in Community Support - Questions & Answers
Not tested, wrote from phone. def Block(self, slot, map, vnum): item_vnum = player.GetItemIndex(slot) item.SelectItem(item_vnum) if (background.GetCurrentMapName() == str(map_name)) and (item_vnum == int(vnum)): chat.AppendChat(chat.CHAT_TYPE_INFO, "#error 33121") return def __UseItem(self, slotIndex): self.Block(slotIndex, "metin2_map_c1", 19) It might be extended to other functions, but thats basic -
def Close(self): chat.ClearWhisper(self.targetName) if app.ENABLE_WHISPER_RENEWAL: if self.targetName and whisper.IsSended(self.targetName) and len(self.targetName) > 0: whisper.Remove(self.targetName)
-
How To Building the Source Code without the Extern (vcpkg method)
ridetpro replied to arves100's topic in Guides & HowTo
Amazing Looks like there are few bugs at building devIL [Hidden Content] -
Is it possible to check if a channel is running?
ridetpro replied to TMP4's topic in Community Support - Questions & Answers
AHHH, well.. i will check when i am back home.. U are right, i am driving right now xD :::: You can just set a fake unique map, on each channel core1 btw -
Is it possible to check if a channel is running?
ridetpro replied to TMP4's topic in Community Support - Questions & Answers
local ch1_core1_on = pc.is_map_alive(41) -- Check a map from ch1_core1 local ch1_core2_on = pc.is_map_alive(100) --Check a map from ch1_core2 local ch2_core1_on = pc.is_map_alive(200) --Check a map from ch2_core1 if ch1_core1_on then say("ch1_core1_online") end if ch1_core1_on and ch1_core2_on then say("Whole ch1 is on") end Check how it should look a whole chanel online/offline.. Or you can check just core1 As you wish And btw, u should rename is_ And you set an unique map, without any usage in client.. in each channel core 1 -
Is it possible to check if a channel is running?
ridetpro replied to TMP4's topic in Community Support - Questions & Answers
just read over and over what i wrote, you can't check a whole channel.. Because a channel is made from cores.. If you want to check only ch99, identify some maps on all cores from ch99 and do the checks as i said above What if you get a crash on a single core? on ch99.. you can't read the status of whole channel. -
Is it possible to check if a channel is running?
ridetpro replied to TMP4's topic in Community Support - Questions & Answers
You have a quick method here, first of all identify a map on that channel. This method only checks a respective core, if you have a channel on the cores. int pc_is_map_alive(lua_State* L) { LPCHARACTER ch = CQuestManager::Instance().GetCurrentCharacterPtr(); lua_pushboolean(L, map_allow_find(lua_tonumber(L, 1))); return 1; } {"is_map_alive", pc_is_map_alive}, I think is better to check if a core is up/down because when u get crash it won't crash whole channel usage : local channel = pc.is_map_alive(41) or pc.is_map_alive(100) -- map 41 , check core 1 -- map 100, check core 2 if channel then -- Do something end So, basically check if the map is found. If the map is found then the channel is alive. You can add in questlua_global, since channels/cores works for everyone not for a single player.. How u wish -
// Search char_item.cpp if (item1->EquipTo(this, bEquipCell)) item2->AddToCharacter(this, TItemPos(INVENTORY, bInvenCell)); else sys_err("SwapItem cannot equip %s! item1 %s", item2->GetName(), item1->GetName()); Replace if (item1->EquipTo(this, bEquipCell)) { item2->AddToCharacter(this, TItemPos(INVENTORY, bInvenCell)); item2->ModifyPoints(false); ComputePoints(); } else { sys_err("SwapItem cannot equip %s! item1 %s", item2->GetName(), item1->GetName()); } I am not sure if it's the same bug i had few years ago, but looke like you have an issue with item swap like i had.. So try my fix 4 years old video
-
DEFAULT CURRENT_TIMESTAMP
ridetpro replied to Crystal™'s topic in Community Support - Questions & Answers
I told you what to do, if you are not able to do it just ask your host company to do it. Just read over and over my message... If you have 5.6 and there's no my.cnf then creare a black my.cnf in usr/locale/ Mysql 5.6 /usr/local/ [mysqld] sql_mode= mysql 5.7, edit the existing on usr/local/etc/mysql/ [mysqld] sql-mode= Be careful at underscores AND RESET MYSQL SERVER -
DEFAULT CURRENT_TIMESTAMP
ridetpro replied to Crystal™'s topic in Community Support - Questions & Answers
For mysql 5.7 + usr/local/etc/mysql/my.cnf Add: [mysqld] sql-mode = For mysql 5.6 - usr/local/my.cnf Change existing sql-mode to: [mysqld] sql-mode= In both cases leave sql mode empty, just with = Restart mysql server Then run mysql_upgrade -
Yes it'f fix for this This bug happend only if you are GM anyway, just use 2 characters that are not gm..
-
With FPS increased.. - Without dogs, the lag is less.. it move better, i reached 250 fps - Spawned 500 wild dogs, after few seconds 5 seconds or fps drops to 7-8.. and start to lag a bit Wihtout FPS increased.. - Without dogs, the lag is okay.. but better with fps increased.. fps exactly 60 - Spawned 500 wild dogs, after few 5 seconds fps drops to 10-12, and don't make any lag So, with FPS increasted i guess is better when there are no soo many entitys around you.. i don't think is worth enough, it's good but it needs more adjustments.. Like effects, trees.. etc
-
Amazing job!
-
This is how the SetHP() part should look. # uiTaskbar.py # def SetHP(self, curPoint, recoveryPoint, maxPoint): if app.ENABLE_POISON_GAUGE_EFFECT: if chrmgr.HasAffectByVID(player.GetMainCharacterIndex(), chr.AFFECT_POISON): if self.hpRecoveryGaugeBar.IsShow(): self.hpRecoveryGaugeBar.Hide() self.hpPoisonRecoveryGaugeBar.SetSize(newWidth, self.GAUGE_HEIGHT) self.hpPoisonRecoveryGaugeBar.Show() else: if self.hpPoisonRecoveryGaugeBar.IsShow(): self.hpPoisonRecoveryGaugeBar.Hide() else: self.hpRecoveryGaugeBar.Show()
-
First you need to download OVH api, which is available in PHP or Python. AntiDDOS option. Add new IP on permanent mitigation I was surprised too, to see how great that API from OVH is. If you ever want to use this API, I suggest you send the data from the source to the website with the help of the web API embedded in the Metin2 source, then from website call the OVH api. And yes, all DDOS methods send packets. I was referring strictly to the topic, the method by which this attacker killed your server was through packets sent to auth/channels. Anonymous packets, without a name.. With the code posted below, all incoming packets to auth will be wrote intro a text file then u can block em in few minutes.. Or you can blacklist them to ovh mitigation. Anyway, that's not really necessary right now.. As i said that's just a HOTFIX, it was a hotfix that worked very well.
- 23 replies
-
- 30
-
else if (!m_pPacketInfo->Get(bHeader, &iPacketLen, &c_pszName)) { if (g_bAuthServer) LOG_IP("%s",inet_ntoa(lpDesc->GetAddr().sin_addr)); sys_err("Input: Unknown header:%d, Last header:%d(%d), Remain bytes:%d, fd:%d", bHeader, bLastHeader, iLastPacketLen, m_iBufferLeft, lpDesc->GetSocket()); lpDesc->SetPhase(PHASE_CLOSE); return true; } Or you can save all the ip that send unknown packets to auth/game. After about 1 - 5 minutes you will have all the ips of the attacker and you can block them in the firewall. Or if you use OVH you can use OVH_API to filter IPs through the mitigation system. This is the hotfix I used. ?
-
void CInputDB::ItemLoad(LPDESC d, const char * c_pData) // You missed this part switch (p->window) { case INVENTORY: case DRAGON_SOUL_INVENTORY: { item->AddToCharacter(ch, TItemPos(p->window, p->pos)); } break; case EQUIPMENT: { if (item->CheckItemUseLevel(ch->GetLevel())) { if (!item->EquipTo(ch, p->pos)) { v.push_back(item); } } else { v.push_back(item); } } break; }
-
If you want a good answer, then you should learn to ask a good question. Try to give as many details as possible. Where did you want us to know you have a physical server at home? What have you tried so far? Have you ever tried to solve yourself before you post here? How do you try to connect to the internet? Cable / Wi-Fi? Do you have static ip? / Do you have dynamic ip? Are you sure the network card works? Which router model do you use? It's normal not to respond when you try ping because the server is not connected to the internet. Steps should be exactly the same as those posted above, just that you have to jump over the Bridged Adapter.
-
Go to : Network->Adapter 1->Select bridged adapter (And select the adapter through which you are connected to the internet, in my case I am connected via WI-fi) Go to your adapter list You need the default gateway and the netmask Write in console bsdconfig -> Networking management Select DNS nameserver and set them like this Select network Interfaces Select your interface Add ipaddr xxx.xxx.xxx.254, your default gateway adress, last three digits should be 254 Add netmask xxx.xxx.xxx.xxx Select save/exit click ok When this question apper, click yes. Select exit, click ok. Reboot vbox machine. Machine ip will be xxx.xxx.xxx.254
-
Problem with Property etc. (Japanese characters)
ridetpro replied to FileX's topic in Community Support - Questions & Answers
Use a spoiler, no one is forced to scroll down to see those errors. For some of us, it's enough to see the first line of the syserr. Check here -
You can do this with paint, I think.
-
You need c++11 or c++14 not sure in server