Jump to content

mateo7788

Inactive Member
  • Posts

    15
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by mateo7788

  1. import net, constInfo, ui, background, time, chat
    
    class Zmiana_Kanalu(ui.Window):
    	def __init__(self):
    		ui.Window.__init__(self)
    
    	def __del__(self):
    		ui.Window.__del__(self)
    
    	def Open(self):
    		self.vegas_change = ui.BoardWithTitleBar()
    		self.vegas_change.AddFlag("movable")
    		self.vegas_change.AddFlag("float")
    		self.vegas_change.SetTitleName("Zmiana Kanału")
    		self.vegas_change.SetCloseEvent(self.Close)
    		
    		x = 0
    		
    		self.channel_list = []
    		
    		for ch in xrange(4): #Nr of channels
    			channel_button = ui.Button()
    			channel_button.SetParent(self.vegas_change) 
    			channel_button.SetSize(100, 100)
    			channel_button.SetPosition(30, 34 + (20 * x + x))
    			channel_button.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
    			channel_button.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
    			channel_button.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
    			channel_button.SetEvent(ui.__mem_func__(self.change_channel), ch)
    			
    			channel_button.SetText("Kanał " + str(ch+1))
    			channel_button.Show()
    			
    			self.channel_list.append(channel_button)
    			x = x + 1
    		
    		self.vegas_change.SetSize(150, 50 + (20 * x + x)) 
    		self.vegas_change.SetCenterPosition()
    		self.vegas_change.Show()
    		
    	def protect_maps(self):
    		protect_list = [
    			"season99/new_map_ox",
    			"maps_dungeon/devils_zone",
    			"maps_dungeon/dt_zone",
    			"maps_vegas/wedding_zone",
    			"maps_dungeon/spider_3",  
    			"maps_vegas/duel_zone",
    		]
    		if str(background.GetCurrentMapName()) in protect_list:
    			return TRUE
    		return FALSE    		
    		
    	def change_channel(self, ch):
    		if self.protect_maps():
    			chat.AppendChat(1, "[Zmiana Kanału] Nie możesz zmienić kanału na tej mapie!")
    			return	
    		elif time.clock() >= constInfo.change_time:			
    			self.Close()
    			net.SetServerInfo("Metin2 - Kanał %d" % int(ch+1)) # Nazwa pod minimapką po zmianie kanału
    			chat.AppendChat(chat.CHAT_TYPE_INFO, "[Zmiana Kanału] Zmiana kanału zakończona pomyślnie!")
    			net.SendChatPacket("/ch %d" % int(ch+1))
    			constInfo.change_time = time.clock() + 10 # Czas po którym można zmieniać kanał
    		else:
    			chat.AppendChat(chat.CHAT_TYPE_INFO, "[Zmiana Kanału] Możesz zmieniać kanał co 10 sekund!")		
    		
    	def	Close(self):
    		self.vegas_change.Hide()
    		
    	def OnPressExitKey(self):
    	
    		self.Close()
    		return True
    
    	def OnPressEscapeKey(self):
    		self.Close()
    		return True
    		

     

  2. Dnia 16.08.2017 o 15:12, Distraught napisał:

     

    go to game/src/char_item.cp and search for: else if (true == CItemVnumHelper::IsLovePendant(dwVnum))

    after put something like:

    
    if (item->GetVnum() == YOURITEMID)
    {
     this->EffectPacket(ARMOR_RING); 
    }

    Then search for: bool CHARACTER::UnequipItem(LPITEM item)

    to this function put this:

    
    if (item->GetVnum() == YOURITEMID)
    {
     this->EffectPacket(ARMOR_RING); 
    }

     

    go to common/length.h and search for: 

    
    SE_EQUIP_LOVE_PENDANT,

    then put this under:

    ARMOR_RING,

    Now you can compile your game.

     

    open UserInterface/PythonNetworkStreamPhaseGameItem.cpp in your client source and search for: 

    
    case SE_EQUIP_LOVE_PENDANT:

    after put these:

    
    case ARMOR_RING:
    			CInstanceBase::ArmorRing();
    			break;

    Go to InstanceBase.h and search for: void OnUntargeted();

    Add under:

    
    void	ArmorRing();

    Search for: m_armorRefineEffect;

    Add under:

    
    bool					ringeffect;

    Now go to InstanceBase.cpp and at the beginning declare it: bool ringeffect = false;

    now search for: void CInstanceBase::__ClearArmorRefineEffect()

    After this function put this:

    
    void CInstanceBase::ArmorRing()
    {
      if (!ringeffect)
      {
    	__AttachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_SPECIAL5);
        ringeffect = true;
      }
      else
      {
        __DetachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_SPECIAL5);
        ringeffect = false;
      }
    }

    Now compile it.

    I couldn't test it, cause I'm working now but I think it's gonna work.

    Error    1    error C3867: 'CInstanceBase::ArmorRing': function call missing argument list; use '&CInstanceBase::ArmorRing' to create a pointer to member    D:\serwer - pliki\src\client\UserInterface\PythonNetworkStreamPhaseGameItem.cpp    862    1    UserInterface
     

  3. I was wondering if I could add such an effect in the binary, like i did for armors and costumes:

    	case CItemData::ITEM_TYPE_ARMOR:
    		__ClearArmorRefineEffect();
    
    		if (pItem->GetSubType() == CItemData::ARMOR_BODY)
    		{
    			DWORD vnum = pItem->GetIndex();
    
    			if (12010 <= vnum && vnum <= 12049)
    			{
    				__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_SPECIAL);
    				__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_SPECIAL2);
    			}
    			if (vnum == 20009 || vnum == 20509 || vnum == 20759 || vnum == 20259)
    			{
    				__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_REFINED9);
    				__AttachEffect(EFFECT_REFINED+EFFECT_BODYARMOR_PL);
    			}
    		}
    
    		if (refine < 7)
    			return 0;
    
    		if (pItem->GetSubType() == CItemData::ARMOR_BODY)
    		{
    			m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED7+refine-7;
    			__AttachEffect(m_armorRefineEffect);
    		}
    		break;
    
    	case CItemData::ITEM_TYPE_COSTUME:
    
    		__ClearArmorRefineEffect();
    
    		if (pItem->GetSubType() == CItemData::COSTUME_BODY)
    		{
    			DWORD vnum = pItem->GetIndex();
    
    			if (vnum == 41351 || vnum == 41352)
    			{
    				__AttachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_SPECIAL5);
    			}
    
    			if (vnum == 41353 || vnum == 41354)
    			{
    				__AttachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_SPECIAL6);
    			}
    		}
    		break;
    	}

    and I would like to know how could I do it with ITEM_TYPE_RING or is it even possible to do this in the binary?

  4. Hi, I can't figure out how to add shining effect to an item when equiped. I was trying to do it like this in InstanceBase.cpp but it doesn't work.

    	case CItemData::ITEM_TYPE_RING:
    
    		__ClearArmorRefineEffect();
    
    			DWORD vnum = pItem->GetIndex();
    
    			if (vnum == 70065)
    			{
    				__AttachEffect(EFFECT_REFINED + EFFECT_BODYARMOR_SPECIAL5);
    			}
    
    		break;

    Item has type 33 and subtype 0 in DB. I want it to give my character shining like armors do:

    fmEfmzl.png

    Thanks for help.

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