Jump to content

Tasho

Banned
  • Posts

    358
  • Joined

  • Last visited

  • Days Won

    11
  • Feedback

    0%

Posts posted by Tasho

  1. 2 minutes ago, ProfDrBielefeld said:
    
    		void operator () (LPCHARACTER ch)
    		{
    			if(!ch)
    			{
    				return;
    			}
    			
    			if(!(ch->CountSpecifyItem(itemid) > 0))
    			{
    				allhaveitem = false;
    			}
    		}

     

    That is really bad style too..i really don't understand why you do check like this?

    • > 0 == 1+ == TRUE
    • 0 == FALSE
    • CountSpecifyItem return count value finded on inventory by a specify item, so if he don't find return 0, if he find it will return 1+ count. That means you can check it simple as a boolean if (CountSpecifyItem(x)) do something, exist item on inventory, if (!CountSpecifyItem(x)) not exist item, return count zero.
    		void operator () (LPCHARACTER ch)
    		{
    			if (ch && !ch->CountSpecifyItem(itemid))
    				allhaveitem = false;
    		}

    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?

    2 minutes ago, ProfDrBielefeld said:
    
    	int party_check_item(lua_State* L)
    	{
    		
    		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
    		FPartyHasItem f;
    		if (!lua_isnumber(L, 1))
    		{
    			lua_pushboolean (L, false);
    			return 1;
    		}
    		else
    		{
    			f.itemid = lua_tonumber(L, 1);
    		}
    		f.allhaveitem = true;
    		ch->GetParty()->ForEachMemberPtr(f);
    		lua_pushboolean (L, f.allhaveitem);
    		return 1;
    	}

     

    Should look like that.

    	int party_check_item(lua_State* L)
    	{
    		if (!lua_isnumber(L, 1))
    		{
    			lua_pushboolean(L, false);
    			return 1;
    		}
    
    		FPartyHasItem f;
    		f.itemid = lua_tonumber(L, 1);
    		f.allhaveitem = true;
    
    		CQuestManager::instance().GetCurrentCharacterPtr()->GetParty()->ForEachMemberPtr(f);
    		lua_pushboolean (L, f.allhaveitem);
    		return 1;
    	}

    I hope you get the points, don't take that as a insult or something.

    • Love 1
  2. 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.

    tom-delonge-wtf1.gif

  3. 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'  :huh:?

    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.

  4. 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;
    }

     

  5. 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;
    	}

     

     

    Spoiler
    
    
    bool 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;
    }

     

    • Love 2
  6. Quote

    Pareers

    hqdefault.jpg

    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 monthly

    On 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 Days

    Price: 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 Days

    Price: 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 Days

    Price: 60 Eur

     

    I do not recommend, it's a just another romanian ~!@#$.

  7. 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. :blink:
    This doesn't help you with nothing, you dont know nothing about event flag and how it's working.

    • r4VtdW8hTrGVpQspCVZEyg.png

    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(). 

    • iB00-djaRB_hoR_KJx4X8w.png
    Quote

    A LOT OF SERVER CRASH DAILY FOR THIS PROBLEM!

    giphy.gif

    We thank you again for killing C++ language.

    • Love 1
  8. 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()

     

     

  9. 48 minutes ago, Galet said:

    Thanks for the release dude ! Also I love your shinning effect

     

    Spoiler

     

    I don't think is a "shinning" effect, is just multiple effects added. :)

    Write me on private for weapon too.

    d2c4c13152d7b71344e85dd142bd33e5.gif

    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. :D

    • Love 2
  10. 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))

     

    • Love 2
  11. 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);
    }

     

  12. 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;

     

  13. 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])

     

    • Love 1
  14. 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)

     

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