Jump to content

Krusty

Inactive Member
  • Posts

    221
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by Krusty

  1. 0314 13:12:18875 :: Traceback (most recent call last):
    
    0314 13:12:18875 ::   File "networkModule.py", line 239, in SetGamePhase
    
    0314 13:12:18876 ::   File "game.py", line 149, in __init__
    
    0314 13:12:18876 ::   File "interfaceModule.py", line 409, in MakeInterface
    
    0314 13:12:18876 ::   File "interfaceModule.py", line 315, in __MakeDialogs
    
    0314 13:12:18876 :: AttributeError
    0314 13:12:18876 :: : 
    0314 13:12:18876 :: 'RefineDialogNew' object has no attribute 'SetInven'
    0314 13:12:18876 :: 

     

  2. On 10.3.2015 at 19:54, xP3NG3Rx said:

    Hello everyone,
     
    It is a nice day to release my modifications to sell items from dragon soul inventory too :)
    So let's go.
     
    Serverside:
    1) Open input_main.cpp
    2.1) Search(CTRL+F) this:

    
    case SHOP_SUBHEADER_CG_SELL2:

    2.2) Replace that whole case with this:

    
    		case SHOP_SUBHEADER_CG_SELL2:
    			{
    				if (uiBytes < sizeof(WORD) + sizeof(BYTE) + sizeof(BYTE))
    					return -1;
    
    				const WORD wPos = *reinterpret_cast<const WORD*>(c_pData);
    				const BYTE bCount = *(c_pData + sizeof(WORD));
    				const BYTE bType = *(c_pData + sizeof(WORD) + sizeof(BYTE));
    
    				sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName());
    
    				CShopManager::instance().Sell(ch, wPos, bCount, bType);
    				return sizeof(WORD) + sizeof(BYTE) + sizeof(BYTE);
    			}
    

     
    3) Save and close it, now open shop_manager.h
    3.1) And replace this:

    
    void		Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount = 0);

    3.2) With this:

    
    void		Sell(LPCHARACTER ch, WORD wCell, BYTE bCount = 0, BYTE bType = 0);

     
    4) Save it and close it.
    4.1) Next step; open shop_manager.cpp and search this function:

    
    void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)

    4.2) Replace the parameters/arguments only with this:

    
    LPCHARACTER ch, WORD wCell, BYTE bCount, BYTE bType

    4.3) Search this line:

    
    LPITEM item = ch->GetInventoryItem(bCell);

    4.4) And replace it with this:

    
    LPITEM item = ch->GetItem(TItemPos(bType, wCell));

    4.5-Choosable) I added a log function too into the antiflag_sell check against hackers :D
    4.5.1) Replace this:

    
    	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_SELL))
    		return;
    

    4.5.2) With this(as I said, this is choosable, not important change):

    
    	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_SELL))
    	{
    		// In clientside the sell is blocked by python if a player arrive here he's a hacker, maybe.
    		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sell this item."));
    		sys_err("[HACKER] Force sell-script used by name [%u]%s.", ch->GetPlayerID(), ch->GetName());
    		return;
    	}
    

     
    5) Save and close the file, now you are ready to build your game.
     

    Clientside-BIN:
    1) Open PythonNetworkStream.h
    1.1) Search this:

    
    bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);

    1.2) Replace it with this:

    
    bool SendShopSellPacketNew(WORD wSlot, BYTE byCount, BYTE byType);

     
    2) Save it, close it. Open PythonNetworkStreamPhaseGameItem.cpp
    2.1) Search this function:

    
    bool CPythonNetworkStream::SendShopSellPacketNew(BYTE bySlot, BYTE byCount)

    2.2) Replace the whole function with this:

    
    bool CPythonNetworkStream::SendShopSellPacketNew(WORD wSlot, BYTE byCount, BYTE byType)
    {
    	if (!__CanActMainInstance())
    		return true;
    
    	TPacketCGShop PacketShop;
    	PacketShop.header = HEADER_CG_SHOP;
    	PacketShop.subheader = SHOP_SUBHEADER_CG_SELL2;
    
    	if (!Send(sizeof(TPacketCGShop), &PacketShop))
    	{
    		Tracef("SendShopSellPacket Errorn");
    		return false;
    	}
    	if (!Send(sizeof(WORD), &wSlot))
    	{
    		Tracef("SendShopAddSellPacket Errorn");
    		return false;
    	}
    	if (!Send(sizeof(BYTE), &byCount))
    	{
    		Tracef("SendShopAddSellPacket Errorn");
    		return false;
    	}
    	if (!Send(sizeof(BYTE), &byType))
    	{
    		Tracef("SendShopAddSellPacket Errorn");
    		return false;
    	}
    
    	Tracef(" SendShopSellPacketNew(wSlot=%d, byCount=%d, byType=%d)n", wSlot, byCount, byType);
    
    	return SendSequence();
    }
    

     
    3) Save and close. Open PythonNetworkStreamModule.cpp
    3.1) Search this function:

    
    PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs)

    3.2) And replace it with this:

    
    PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs)
    {
    	int iSlotNumber;
    	if (!PyTuple_GetInteger(poArgs, 0, &iSlotNumber))
    		return Py_BuildException();
    	int iCount;
    	if (!PyTuple_GetInteger(poArgs, 1, &iCount))
    		return Py_BuildException();
    	int iType;
    	if (!PyTuple_GetInteger(poArgs, 2, &iType))
    		return Py_BuildException();
    
    	CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
    	rkNetStream.SendShopSellPacketNew(iSlotNumber, iCount, iType);
    	return Py_BuildNone();
    }
    

     
    4) Save, close and build :D
     

    Clientside-Python:
    Here you have to do it by yourself.
    The new function of the m2net/net module are called by 3 files

    • uiInventory.py
    • uiDragonSoul.py
    • uiShop.py

    You have to edit these files if your files are not containing these updates, but thanks to [sA]Con for the newer root package from his release ^^

    This is the hidden content, please
    the "new" root package which is containing every changes for this and for wolfman.
    I do not recomment to replace or overwrite your files with those files!
    Use a comparer tool like Notepad++ Compare plugin to check the differences at "sell" keyword.
     
    Tested and works, but if you found bug/mistake/error please write into this thread a detailed post.
    So not like this:

     
     
    ps.: I hope you understand everything, and sorry for my poor english:3

    ps2: In the official bin this message " SendShopSellPacketNew(bySlot=%d, byCount=%d, byType=%d)" can be found, but I renamed the variable too, hehe :-D.

    With Regards,
    P3NG3R

    I dont know, but there is a bug for all.

    If you click in shop on sell the name of the item is right, but if you put the item to shop to sell it. You got the wrong name of item(you get the name of the first weapon). Do you have a solution for this?

  3. On 28.2.2017 at 06:26, alg0r!thm said:

    Good morning dudes, I got the problem that if I try to connect to my server he tolds me always that my accountname and password are wrong, wether they are right. First I thought its a clientbased problem so I tried another client but the problem stays. After that I thought it is a serverside problem but I cant find anything and the 'syserr.txt' are empty to this problem. I've also tried to remove the files and setup it again but it changes nothing the problem stays. I hope you can understand what I am trying to telling you. Because my English arent the best. And if you need some more informations about my server please tell me I'll give it to you.

    I think, your password or accountname is wrong.

  4. On 20.6.2015 at 16:27, VegaS said:
    
    Open game.py
    
    add in 	def __ServerCommand_Build(self):
    		serverCommandList={
    
    
    			"antiexp"				: self.__antiexp,	
    			
    then add below function:
    
    	# System Anti Exp - Start
    	def __antiexp(self, qid):
    		constInfo.antiexp= int(qid)
    	# System Anti Exp - End	
    	
    Add in constinfo.py:
    
    antiexp = 0
    
    Open uiinventory and search function:
    
    self.DSSButton = self.GetChild2("DSSButton") and add below:
    
    			self.VegaS_button_Exp = self.GetChild2("VegaS_button_Exp")
    			
    search function:
    
    self.DSSButton.SetEvent(ui.__mem_func__(self.ClickDSSButton)) and add below:
    
    		## Button Anti-Experienta
    		if self.VegaS_button_Exp:
    			self.VegaS_button_Exp.SetEvent(ui.__mem_func__(self.ClickVegaS_button_Exp))	
    			
    			
    Then add the function below:
    
    ###Button anti-experienta###		
    	def ClickVegaS_button_Exp(self):
    		import event
    		qid = constInfo.antiexp
    		event.QuestButtonClick(qid)	
    		
    Importing the module event earlier in uiinventory.
    
    Inventorywindow add :
    
                   {
                        "name" : "VegaS_button_Exp",
                        "type" : "button",
                        
                        "x" : your details,
                        "y" : your details,
    					
    					"tooltip_text" : "Anti-ExP",
                        
    					"default_image" : "you images",
    					"over_image" : "you imagesa",
    					"down_image" : "you images",
                    },
    		
    		
    And this quest:
    
    quest anti_exp begin
        state start begin
    		when letter begin
                cmdchat("antiexp "..q.getcurrentquestindex())
            end
    		when button or info begin
    		if pc.getqf("antiexp") == 0 then
    			pc.setqf("antiexp", 1)
    			chat("[System Anti_Experience] - Activated] Experience points will be reset to 0 every second!")
                local ep = pc.get_exp()
                pc.give_exp2(-ep)
    			timer("vegas", 1)
    		elseif pc.getqf("antiexp") == 1 then
    			pc.setqf("antiexp", 0)
    			chat("[System Anti_Experience] - Disabled] I've now receive experience points again!")
    			end
    		end	
    					
    		when vegas.timer with pc.getqf("antiexp") == 1 begin
    			local ep = pc.get_exp()
                pc.give_exp2(-ep)
    			timer("vegas1", 1)
    			pc.setqf("antiexp", 1)
    		end	
    			
    		when vegas1.timer with pc.getqf("antiexp") == 1 begin
    			local ep = pc.get_exp()
                pc.give_exp2(-ep)
    			timer("vegas", 1)
    			pc.setqf("antiexp", 1)
    		end
    		
    		when login with pc.getqf("antiexp") == 1 begin
    			chat("[System Anti_Experience] - Activated]")
    			local ep = pc.get_exp()
    			pc.give_exp2(-ep)
    			timer("vegas", 1)
    			pc.setqf("antiexp", 1)
    		end
    	
    		when login with pc.getqf("antiexp") == 0 begin
    			chat("[System Anti_Experience] - It is not enabled!]")
    		end
    	end
    end

     

    0208 10:05:38079 ::   File "ui.py", line 1395, in CallEvent

    0208 10:05:38079 :: TypeError
    0208 10:05:38079 :: : 
    0208 10:05:38079 :: __antiexp() takes exactly 2 arguments (1 given)
    0208 10:05:38079 :: 

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