![](https://metin2.dev/uploads/theme-resources/set_resources_31/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://metin2.dev/uploads/theme-resources/set_resources_31/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
Tasho
-
Posts
358 -
Joined
-
Last visited
-
Days Won
11 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Tasho
-
-
6 hours ago, Distraught said:
oh really, that's right and he also missed this check too
so that's why the big difference in runtime
if (!it->second.pCharacter) { ++it; continue; }
WTF...
-
10 minutes ago, metin2-factory said:
Well, unlike you and most of the other "Devs" here i actually have a degree in computer science and working in a real world programming job, i develop metin2 systems for fun.
certified developer
With that level of english you have study 'Computer science and working on programming job' ?
If you was had enough knowledge you didn't was stay here and have a 'service on metin2'
A lot a years of programming etc and you was had a shit server with systems buyed from another peoples, same story was with aim shit too, a big programmer better then all, 20 years of programming, read a lot a books, a monster.. and he was just another s*** as you, in private he didn't was know to do nothing just to request something.
A nice quote: "Is not important to be a professional programmer on that life, you just need to look like one."
Good night, stop to reply already is enough, i don't like childs act but your force me to do that.
-
6 minutes ago, metin2-factory said:
???
your post does not make any sense. you should take my advices above as constructive criticism i am not trying to make fun of you.
it's just common that people here replying to other posts without really understanding the code behind it, how it works under the hood.
Who say that? The guy who buyed all stuff from lennt and ken and now is 'programmer'
?
Don't let me to make public conversations between you and others people from some time ago with proofs, just stop to look 'smart', you are not in a position to give me 'advices'.
Just stop with that, i really don't care about you and m2 shit, you took it too seriously that, stop to make off-topic.
-
43 minutes ago, metin2-factory said:
and for next time, please, unless you have a deep knowledge of c++ and design patterns, do not call others "bad style" because right now his code performance is better than yours.
Just stop to speak shit, you did that reply for make +1 for without sense.
That you called "better performance" ?Check the code of him and recheck the code what i put and go to sleep, don't search entourage, you are look shit_aim 2.
Have a nice night, don't reply me again, i don't care.DWORD item_vnum; if (lua_isnumber(L,1)) { item_vnum = (DWORD)lua_tonumber(L, 1); } else { lua_pushboolean(L, 0); return 1; }
while (it!=m_memberMap.end()) { if (!it->second.pCharacter) { ++it; continue; } if(it->second.pCharacter->CountSpecifyItem(targyID) > 0) dbszam++; ++it; } if(GetNearMemberCount() <= dbszam) { itertype(m_memberMap) it2 = m_memberMap.begin(); while (it2!=m_memberMap.end()) { if (!it2->second.pCharacter) { ++it2; continue; } if(it2->second.pCharacter->CountSpecifyItem(targyID) > 0) it2->second.pCharacter->RemoveSpecifyItem(targyID); ++it2; } }else{return false;} return true; }
-
25 minutes ago, Distraught said:Spoiler
int party_check_item(lua_State* L) { DWORD item_vnum; if (lua_isnumber(L,1)) { item_vnum = (DWORD)lua_tonumber(L, 1); } else { lua_pushboolean(L, 0); return 1; } LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); if (ch->GetParty()) lua_pushboolean(L,ch->GetParty()->CheckItem(item_vnum)); else lua_pushboolean(L, 0); return 1; }
Spoilerbool CParty::CheckItem(int targyID) { int dbszam = 0; itertype(m_memberMap) it = m_memberMap.begin(); while (it!=m_memberMap.end()) { if (!it->second.pCharacter) { ++it; continue; } if(it->second.pCharacter->CountSpecifyItem(targyID) > 0) dbszam++; ++it; } if(GetNearMemberCount() <= dbszam) { itertype(m_memberMap) it2 = m_memberMap.begin(); while (it2!=m_memberMap.end()) { if (!it2->second.pCharacter) { ++it2; continue; } if(it2->second.pCharacter->CountSpecifyItem(targyID) > 0) it2->second.pCharacter->RemoveSpecifyItem(targyID); ++it2; } }else{return false;} return true; }
Thanks for release, but the code style is very bad, should look like this.
int party_check_item(lua_State* L) { if (!lua_isnumber(L, 1)) { lua_pushboolean(L, false); return 1; } LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushboolean(L, (ch && ch->GetParty()) ? ch->GetParty()->CheckItem(lua_tonumber(L, 1)) : false)); return 1; } bool CParty::CheckItem(int itemVnum) { int iCount = 0; itertype(m_memberMap) it = m_memberMap.begin(); for (; it != m_memberMap.end(); it++) { if (it->second.pCharacter && it->second.pCharacter->CountSpecifyItem(itemVnum)) iCount++; } if (GetNearMemberCount() <= iCount) { for (; it != m_memberMap.end(); it++) { if (it->second.pCharacter && it->second.pCharacter->CountSpecifyItem(itemVnum)) it->second.pCharacter->RemoveSpecifyItem(itemVnum); } return true; } return false; }
-
2
-
-
-
You post in category Services->Searching and you ask about if they are released here?
No, isn't.
-
4 minutes ago, Preet said:
- Biolog System with gui (That players dont have to run to biolog)
- Full Multilanguage System
Here you can find the good ones, you can contact vegas.
-
Quote
Pareers
16 hours ago, FlorinMarian said:Because I pay a lot for it and not always will have donations, i would like to sell some KVM VPS from my dedicated.
If someone will be interested I will buy SolusVM licenses to give full acces to server.
I'll accept payments with Card/Paysafecard/Paypal (customers will donate on my metin2 server because there i have automated payments) and if i will sell over 5 servers, i'll be able to buy a whmcs license (39 dollars/month).
If someone want to test antiddos, ping, lag etc. can use my server as demo. ( www.metin2hfm.ro ) (now virtualised with proxmox, 2x VDS)
I'll sell a maximum of 6 servers. (2 used for my server & web server)
Price: 20 euro monthlyOn 5/2/2016 at 8:43 PM, FlorinMarian said:Two days ago I've lost all of my data from my laptop and now I don't have idea what can I do.
I have a little reseller with 4 GB RAM, 40 GB SSD storage, 4 IP addresses and 16 CPUs with clock speed 2.1 GHz. (can create up to 4 VPS servers)
I can install: Windows, FreeBSD, CentOS, Clear OS, Debian, Fedora, Ubuntu and openSUSE.
What can I do to earn some money ?(about ~40 E monthly)On 4/18/2016 at 4:01 PM, FlorinMarian said:Basic
CPU VIA Nano U2250 1.6Ghz
RAM 2 GB
Storage 160 GB
IP Address 1
Uplink 1Gbps
Bandwidth Unlimited
Setup FREE
Delivery 1-3 DaysPrice: 15 Eur
Standard
CPU Intel Core i3-530 2.93 GHz
RAM 4 GB
Storage 2000 GB
IP Address 1
Uplink 100Mbps
Bandwidth Unlimited
Setup FREE
Delivery 1-3 DaysPrice: 40 Eur
Elite
CPU Intel Xeon E3-1230 3.20Ghz
RAM 8 GB
Storage 2000 GB
IP Address 1
Uplink 100Mbps
Bandwidth Unlimited
Setup FREE
Delivery 1-3 DaysPrice: 60 Eur
I do not recommend, it's a just another romanian ~!@#$.
-
18 hours ago, Fabio said:
its solved.
Please close it
(2.5) Questions & Answers specific rules
- Don't modify your thread (or reply to it) to mark it solved, and not explain the solution to the issue.
-
1
-
6 hours ago, M2BobFixed said:
KEEP A LOT OF EVENTS FLAG IS A BIG PROBLEM, A LOT OF SERVER CRASH DAILY FOR THIS PROBLEM!
THIS FUNCTION IS FREE FOR ALL!!!
Sorry but you are very dumb.
This doesn't help you with nothing, you dont know nothing about event flag and how it's working.Who the hell want to delete them? Nobody.
If someone want to delete them just run this query before start the server. (there is no reason to do that)
This query will delete all event flag list, because difference between quest flag and event flag is the state empty.DELETE FROM player.quest WHERE szState = '';
After execute the query, remaining only the guild_disband_delay & guild_withdraw_delay because is seted forced when core start by main::CQuestManager::Initialize().
QuoteA LOT OF SERVER CRASH DAILY FOR THIS PROBLEM!
We thank you again for killing C++ language.
-
1
-
-
#root/ui.py #SELECT_COLOR = grp.GenerateColor(0.0, 0.0, 0.5, 0.3)
-
1
-
-
33 minutes ago, metin2-factory said:
ison, modeflag = chat.GetChatMode(self.chatID)
what is the modeflag variable used for?
is it needed anywhere or you added it just for debugging your code?
because i can't see it being used anywhere
Maybe he was want to do something with the sum.
Should look like that:
Spoiler//PythonChat.h BOOL GetChatMode(DWORD dwID); //PythonChat.cpp BOOL CPythonChat::GetChatMode(DWORD dwID) { TChatSet * pChatSet = GetChatSetPtr(dwID); if (!pChatSet) return FALSE; BYTE byChatHistoryLogModes[] = { CHAT_TYPE_TALKING, CHAT_TYPE_INFO, CHAT_TYPE_NOTICE, CHAT_TYPE_PARTY, CHAT_TYPE_GUILD, CHAT_TYPE_SHOUT, #ifdef ENABLE_DICE_SYSTEM CHAT_TYPE_DICE_INFO #endif }; int iRet = 0; for (BYTE i = 0; i < _countof(byChatHistoryLogModes); i++) { if (pChatSet->CheckMode(byChatHistoryLogModes[i])) iRet += 1 << byChatHistoryLogModes[i]; } return iRet > 0; } //PythonChatModule.cpp PyObject * chatGetChatMode(PyObject* poSelf, PyObject* poArgs) { int iID; if (!PyTuple_GetInteger(poArgs, 0, &iID)) return Py_BuildException(); return Py_BuildValue("b", CPythonChat::Instance().GetChatMode(iID)); } //Python def ToggleChatMode(self, mode): if self.allChatMode: self.allChatMode = False for i in self.CHAT_MODE_INDEX: chat.DisableChatMode(self.chatID, i) chat.EnableChatMode(self.chatID, mode) self.btnAll.SetUp() else: chat.ToggleChatMode(self.chatID, mode) if not chat.GetChatMode(self.chatID): self.btnAll.Down() self.ToggleAllChatMode()
-
-
3 hours ago, PeaceMaker said:
so which method is better?
3 hours ago, PeaceMaker said:both are shit xD
-
Still active
For more information contact me at skype: geo.geani94 .
-
48 minutes ago, Galet said:
Thanks for the release dude ! Also I love your shinning effect
SpoilerI don't think is a "shinning" effect, is just multiple effects added.
Write me on private for weapon too.
Example for armor:
//InstanceBase.cpp //Search for: case CItemData::ITEM_TYPE_ARMOR: __ClearArmorRefineEffect(); //Add after: if (pItem->GetSubType() == CItemData::ARMOR_BODY) { DWORD dwVnum = pItem->GetIndex(); if ((11297 <= dwVnum && dwVnum <= 11299) || (11497 <= dwVnum && dwVnum <= 11499) || (11697 <= dwVnum && dwVnum <= 11699) || (11897 <= dwVnum && dwVnum <= 11899)) { for (int iCount = 0; iCount < 10; iCount++) __AttachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_REFINED7 + refine - 7); } }
Thanks for release.
-
2
-
-
On 8/1/2017 at 5:33 PM, Distraught said:
if item.LIMIT_LEVEL == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.LEVEL), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_LEVEL % (limitValue), color) elif item.LIMIT_STR == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.ST), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_STR % (limitValue), color) elif item.LIMIT_DEX == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.DX), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_DEX % (limitValue), color) elif item.LIMIT_INT == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.IQ), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_INT % (limitValue), color) elif item.LIMIT_CON == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.HT), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_CON % (limitValue), color)
I would do it more easy.
itemDict = { item.LIMIT_LEVEL : [player.LEVEL, localeInfo.TOOLTIP_ITEM_LIMIT_LEVEL], item.LIMIT_STR : [player.ST, localeInfo.TOOLTIP_ITEM_LIMIT_STR], item.LIMIT_DEX : [player.DX, localeInfo.TOOLTIP_ITEM_LIMIT_DEX], item.LIMIT_INT : [player.IQ, localeInfo.TOOLTIP_ITEM_LIMIT_INT], item.LIMIT_CON : [player.HT, localeInfo.TOOLTIP_ITEM_LIMIT_CON] } if limitType in itemDict: self.AppendTextLine(itemDict[limitType][1] % (limitValue), self.GetLimitTextLineColor(player.GetStatus(itemDict[limitType][0]), limitValue))
-
2
-
-
1 hour ago, Abel(Tiger) said:
unsigned int nTotalMoney
if(nTotalMoney < 0)
Really ? nTotalMoney never can be negative.
You should think better and read again.
PS: I speak about this situation and code from this topic, ymir did a check "GOLD_MAX <= nTotalMoney" .
_________________________________________________________________
Please enter an integer amount of gold: -500000
- GetGold: 25000
- amount: -500000
- nTotalMoney: -475000
Succes set gold to: -475000
#include <iostream> #include <algorithm> using namespace std; typedef int INT; typedef unsigned int UINT; typedef struct character_point { uint64_t gold = 25000; } CHARACTER_POINT; CHARACTER_POINT m_points; INT GetGold() { return m_points.gold; } void SetGold(INT gold) { m_points.gold = gold; printf("Succes set gold to: %d", gold); } void PointChange(INT iAmount) { UINT nTotalMoney = GetGold() + iAmount; printf(" GetGold: %d\n amount: %d\n nTotalMoney: %d\n", GetGold(), iAmount, nTotalMoney); SetGold(GetGold() + iAmount); } int main() { INT val; cout << "Please enter an integer amount of gold: "; cin >> val; PointChange(val); }
-
7 hours ago, M2BobFixed said:
case POINT_GOLD: { unsigned int nTotalMoney = GetGold() + amount; if (nTotalMoney > GOLD_MAX) { return; }else if (nTotalMoney < 0) { return; }else{ SetGold(GetGold() + amount); val = GetGold(); } } break;
I don't understand why you have this style, but ok.
case POINT_GOLD: { unsigned int nTotalMoney = GetGold() + amount; if (nTotalMoney < 0 || nTotalMoney > GOLD_MAX) return; SetGold(GetGold() + amount); val = GetGold(); } break;
-
Quote
def __OnClickLoadInfoButton(self): file_object = open("credentials", "r") id_da_file = file_object.readline() pwd_da_file = file_object.readline() id = id_da_file pwd = pwd_da_file file_object.close() self.Connect(id, pwd)
You not need to do it like this for read multiples lines from a file, already exixst method readlines() - returns a list containing the lines.
def __OnClickLoadInfoButton(self): fileObject = open("credentials", "r").readlines() self.Connect(fileObject[0], fileObject[1])
-
1
-
-
On 8/29/2017 at 1:39 PM, Fleon said:
for python`s sake
mylist = ["(VIP1)","(VIP2)","(VIP3)","(VIP4)","(VIP5)","(VIP6)","(VIP7)","(VIP8)","(VIP9)","(VIP10)"]enumeratelist = list(enumerate(mylist, start=29))for e_value,vip in enumeratelist:if gamemasta.find(str(vip))!=-1:if self.lastupdate == 0:self.lastupdate = app.GetGlobalTimeStamp()if app.GetGlobalTimeStamp() - self.lastupdate >= 5:self.lastupdate = app.GetGlobalTimeStamp()net.SendEmoticon(int(e_value))We can do it like this too.
for (key, value) in enumerate(["(VIP1)","(VIP2)","(VIP3)","(VIP4)","(VIP5)","(VIP6)","(VIP7)","(VIP8)","(VIP9)","(VIP10)"]): if gamemasta.find(value) != -1: if (not self.lastupdate): self.lastupdate = app.GetGlobalTimeStamp() if (app.GetGlobalTimeStamp() - self.lastupdate) >= 5: self.lastupdate = app.GetGlobalTimeStamp() net.SendEmoticon(key + 29)
-
1
-
-
-
4 hours ago, Mali61 said:
Another way:
Looks very similar code with this mini-rls from him.
Quest Function - Party Check Item - Check if all Party Members have the Specified Item
in Quest Functions & Features
Posted
That is really bad style too..i really don't understand why you do check like this?
This one too, you use else when already you return something and stop the func from if condition if not exist argument, what the sense?
Should look like that.
I hope you get the points, don't take that as a insult or something.