Jump to content


  • Content Count

  • Joined

  • Days Won

  • Yangs

    308 [ Donate ]

ridetpro last won the day on July 20 2018

ridetpro had the most liked content!

Community Reputation

59 Excellent

1 Follower

About ridetpro

  • Rank


  • Gender

Recent Profile Visitors

1,353 profile views
  1. 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
  2. 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
  3. 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.
  4. 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
  5. // 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
  6. 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
  7. 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
  8. Yes it'f fix for this This bug happend only if you are GM anyway, just use 2 characters that are not gm..
  9. 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
  10. 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()
  11. 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.
  12. 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.
  13. 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; }
  14. 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.
  • 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.