Jump to content

[007]DawisHU

Member
  • Posts

    258
  • Joined

  • Last visited

  • Days Won

    4
  • Feedback

    0%

Posts posted by [007]DawisHU

  1. 16 hours ago, DoIIar said:

    Hello guys
    I have a problem when adding new things in Player mysql

    Query Player :

    https://metin2.download/picture/d4qJh8yy4A2j0SpGCL5g2H6kgHRXuLLx/.png

     

    ClientManagerPlayer.cpp


    Syseer db 

     

    Spoiler

    1.

     change to ->

    snprintf(queryStr, sizeof(queryStr),
    "SELECT "
    "id,name,job,voice,dir,x,y,z,map_index,exit_x,exit_y,exit_map_index,hp,mp,stamina,random_hp,random_sp,playtime,gold,"
    #ifdef ENABLE_CHEQUE_SYSTEM
        "cheque,"
    #endif
    #ifdef ENABLE_GEM_SYSTEM
        "gem,"
    #endif
        "level,level_step,st,ht,dx,iq,exp,"
        "stat_point,skill_point,sub_skill_point,stat_reset_count,part_base,part_hair, part_acce,"
        "skill_level,quickslot,skill_group,alignment,"
    #ifdef ENABLE_CONQUEROR_LEVEL
        "conquerorlevel,conqueror_level_step,sungma_str,sungma_hp,sungma_move,sungma_inmune,conqueror_exp,conqueror_point,"
    #endif
        "mobile,horse_level,horse_riding,horse_hp,horse_hp_droptime,horse_stamina,"
        "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(last_play),horse_skill_point," 
        "fish_use_count, fish_slots"
    #ifdef ENABLE_GEM_SYSTEM
        ",UNIX_TIMESTAMP(gem_next_refresh),gem_items "
    #endif
        " ,envanter "
        " FROM player%s WHERE id=%d",
        GetTablePostfix(), packet->player_id);

    2.
    Check your sql syntax.... 
    'sungma_inmune' ;

    Change from ";" to "," 
     

     

     

  2. On 9/9/2018 at 8:17 PM, Vanilla said:

    Hello everybody,

    since I've heard that a lot of servers (and even the most recent vanilla source release) have no fix for this hack I decided to release this. It's not too big, but I really would like to make it visible for everybody. I highly dislike hacks in every form and I'll gladly develop such fixes.

    So, the fix is quite easy. It's a bug from metin2. They decided to add a check if the target is too far away to be attacked and yeah, that works. Targets only receive damage once they're within range. But the problem is that modern moblock tools do that a different way. They send attack packets to every mob in the near surrounding which triggers aggr towards the player. You may ask: Why does it trigger aggr and let the mobs move to the player? Well, as mentioned, the source has a fix for that - but it's implemented too late.

    1. Open char_battle.cpp and search for this function: CHARACTER::Attack

    First you may notice that there's literally no check for distance. The distance check is implemented in battle.cpp in the function battle_melee_attack. That's fine and we don't need to modify anything about this.

     

    2. If you scroll down you'll see the following lines:

    
    	pkVictim->SetSyncOwner(this);
    
    	if (pkVictim->CanBeginFight())
    		pkVictim->BeginFight(this);

    Noticed something? Yeah, the check is - as mentioned before - in the function battle_melee_attack. The problem is, that these lines are executed before the check happens. So hackers will be visible in logfiles (syslog should spam distance errors) but they're still free to hack like they want to.

     

    3. Move the lines below the battle type segment

    So, how do we fix this? We'd simply move it down below the battle type functions. So you'd move it just before the line "if (iRet == BATTLE_DAMAGE || iRet == BATTLE_DEAD)". But still that won't be enough since these lines would still be executed. We don't want them to be executed. So we wrap a condition around it.

     

    4. modify these lines so they look like this:

    
    	if(iRet != BATTLE_NONE)
    	{		
    		pkVictim->SetSyncOwner(this);
    
    		if (pkVictim->CanBeginFight())
    			pkVictim->BeginFight(this);
    	}

    If we take a look on the battle type functions we'll notice that they return the BATTLE_NONE if something goes wrong - for example the distance is invalid.

     

    5. you're done!

    The fix pretty much solves this issue. If you still know hacks that work feel free to write in this topic, I'll gladly share solutions once I've developed them.

    Enjoy!

    Hello.
    Dear Vanila.
    Thank for this. 

    Bugged!!!!!

    WHITOUT this fix, syserr :
    SYSERR: Apr 11 16:23:49.472300 :: Attack: Unhandled battle type 3

    Fix:

    char_battle.cpp
    in this switch:
    switch (GetMobBattleType())

    After this:
    case BATTLE_TYPE_MELEE:
                case BATTLE_TYPE_POWER:
                case BATTLE_TYPE_TANKER:
                case BATTLE_TYPE_SUPER_POWER:
                case BATTLE_TYPE_SUPER_TANKER:

    add:
                case BATTLE_TYPE_SPECIAL:

     

  3. On 1/23/2019 at 4:16 PM, .plechito' said:

    V26Rbab.jpg

    You can find the metin at 0:55

    This is the hidden content, please

     

    More valentines stuff

      Hide contents

    VfQMcab.jpg

     

     

    Thank you!

    Stone have Image missing... 
    Missing file is "zone/plechi_env/valentine2019/heart_ballon.dds"

    Can u upload this file for me/us? Thank you 
     

    • Metin2 Dev 1
  4. Hello,
     

    Spoiler

    When dialog showed up, and press i or open/close inv drop/destroy dialg is freezeeee everything:

     

    Spoiler

    Search:

    onPressKeyDict[app.DIK_I]            = lambda : self.interface.ToggleInventoryWindow()

    Change to :

    onPressKeyDict[app.DIK_I]            = lambda : self.Dialog_fix_inv()

    Search:

    def MoveUp(self):

    After add this: 

        def Dialog_fix_inv(self):
            self.OnCloseQuestionDialog()
            self.interface.ToggleInventoryWindow()


    Search this:

    def __SendDropItemPacket(self, itemVNum, itemCount, itemInvenType = player.INVENTORY):

    Before add this:

        def OnCloseQuestionDialog(self):
            if not self.itemDropQuestionDialog:
                return
            else:
                self.itemDropQuestionDialog.Close()
                self.itemDropQuestionDialog = None
                constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(0)



    In deff __DropItem
    Search this:

     

    ## Dialog_Equipments
                if dropItemType in [1, 2] and dropItemSubType in range(7) or dropItemType == 28 and dropItemSubType in [0, 1]:
                    itemDropQuestionDialog = uiCommon.EquipmentDropQuestion()
                    itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.dropType = attachedType
                    itemDropQuestionDialog.dropNumber = attachedItemSlotPos
                    itemDropQuestionDialog.dropCount = attachedItemCount
                    itemDropQuestionDialog.Open(attachedItemSlotPos)
                    self.itemDropQuestionDialog = itemDropQuestionDialog

                ## Dialog_Items

    After add this:

     

                else:
                    itemDropQuestionDialog = uiCommon.QuestionDialogItem()
                    #itemDropQuestionDialog = uiCommon.QuestionDialog()
                    itemDropQuestionDialog.SetText(questionText)
                    itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg))
                    itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.Open()
                    itemDropQuestionDialog.dropType = attachedType
                    itemDropQuestionDialog.dropNumber = attachedItemSlotPos
                    itemDropQuestionDialog.dropCount = attachedItemCount
                    self.itemDropQuestionDialog = itemDropQuestionDialog

                    constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)


     

    Spoiler

    Over:

     

                ## Dialog_Equipments
                if dropItemType in [1, 2] and dropItemSubType in range(7) or dropItemType == 28 and dropItemSubType in [0, 1]:
                    itemDropQuestionDialog = uiCommon.EquipmentDropQuestion()
                    itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.dropType = attachedType
                    itemDropQuestionDialog.dropNumber = attachedItemSlotPos
                    itemDropQuestionDialog.dropCount = attachedItemCount
                    itemDropQuestionDialog.Open(attachedItemSlotPos)
                    self.itemDropQuestionDialog = itemDropQuestionDialog

                ## Dialog_Items
                else:
                    itemDropQuestionDialog = uiCommon.QuestionDialogItem()
                    #itemDropQuestionDialog = uiCommon.QuestionDialog()
                    itemDropQuestionDialog.SetText(questionText)
                    itemDropQuestionDialog.SetAcceptEvent(lambda arg=TRUE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.SetDestroyEvent(lambda arg=TRUE: self.RequestDestroyItem(arg))
                    itemDropQuestionDialog.SetCancelEvent(lambda arg=FALSE: self.RequestDropItem(arg))
                    itemDropQuestionDialog.Open()
                    itemDropQuestionDialog.dropType = attachedType
                    itemDropQuestionDialog.dropNumber = attachedItemSlotPos
                    itemDropQuestionDialog.dropCount = attachedItemCount
                    self.itemDropQuestionDialog = itemDropQuestionDialog

                    constInfo.SET_ITEM_QUESTION_DIALOG_STATUS(1)

     

     

    Best Regards,

  5. Hello,
    Thank for this release....

    One problem:
    This system for
    45 slot with 2 page = 90 slot / with 4 page = 180 slot.

    And, NOT FOR: 
    90 slot with 2 page = 180 slot
    BTW i edited....

    In Quote  my edition :)

    Image:

    Quote


    jhollxm7xro8nj56o7td.jpg


    Video:
     

    Spoiler

     


    Thank you!


    * EDIT *
    self.wndPopupDialog.SetText(localeInfo.ENVANTER_ANAH_LAZIM % lazim)
    Change to 
    self.wndPopupDialog.SetText(localeInfo.ENVANTER_ANAH_LAZIM % int(lazim))
    This generated syserr are fixed.

     

     

  6. On 9/10/2014 at 6:27 PM, TheSLZ said:

    Thx but done everything but client crash when i enter id & pass.
     

    
    0910 22:22:07182 :: 
    networkModule.py(line:200) SetSelectCharacterPhase
    system.py(line:130) __pack_import
    system.py(line:110) _process_result
    introSelect.py(line:28) ?
    system.py(line:130) __pack_import
    system.py(line:110) _process_result
    interfaceModule.py(line:37) ?
    system.py(line:130) __pack_import
    
    
    networkModule.SetSelectCharacterPhase - exceptions.SyntaxError:invalid syntax (line 240)
    
    
    0910 22:22:07182 :: ============================================================================================================
    0910 22:22:07182 :: Abort!!!!
     
     



    Tab hiba....
    @TheSLZ

     exceptions.SyntaxError:invalid syntax (line 240)
    
    • Love 1
  7. On 2015. 09. 20. at 9:58 AM, AlCapone said:
     

    Can you send the itemproto too?


    Item_Names.txt
     

    Spoiler

    85000    Fine Cloth
    85001    Lord Sash (basic)
    85002    Lord Sash (fine)
    85003    Lord Sash (noble)
    85004    Lord Sash (custom)
    85005    Master Sash (basic)
    85006    Master Sash (fine)
    85007    Master Sash (noble)
    85008    Master Sash (custom)
    85009    Certificate of Reversal+
    85011    Royal Sash (basic)
    85012    Royal Sash (fine)
    85013    Royal Sash (noble)
    85014    Royal Sash (custom)
    85015    Sovereign Sash (basic)
    85016    Sovereign Sash (fine)
    85017    Sovereign Sash (noble)
    85018    Sovereign Sash (custom)


    Item_Proto.txt
     

    Spoiler

    85000    "파인 천"    "ITEM_MATERIAL"    "MATERIAL_LEATHER"    1    "ANTI_DROP | ANTI_SELL | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE | ANTI_SAFEBOX"    "ITEM_STACKABLE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    0    0    0    0    0    0    0    0    0
    85001    "주님 장식 띠 (기본)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    1    0    0    0    0    0    100    0    0
    85002    "주님 장식 띠 (미세)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    2    0    0    0    0    0    100    0    0
    85003    "주님 장식 띠 (귀족)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    3    0    0    0    0    0    100    0    0
    85004    "주님 장식 띠 (사용자 정의)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    4    0    0    0    0    0    100    0    0
    85005    "마스터 장식 띠 (기본)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    1    0    0    0    0    0    100    0    0
    85006    "마스터 장식 띠 (미세)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    2    0    0    0    0    0    100    0    0
    85007    "마스터 장식 띠 (귀족)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    3    0    0    0    0    0    100    0    0
    85008    "마스터 장식 띠 (사용자 정의)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    4    0    0    0    0    0    100    0    0
    85009    "반전 의 인증서+"    "ITEM_USE"    "USE_DETACHMENT"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    7    0    0    0    0    0    0    0    0
    85011    "로얄 장식 띠 (기본)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    1    0    0    0    0    0    100    0    0
    85012    "로얄 장식 띠 (미세)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    2    0    0    0    0    0    100    0    0
    85013    "로얄 장식 띠 (귀족)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    3    0    0    0    0    0    100    0    0
    85014    "로얄 장식 띠 (사용자 정의)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    4    0    0    0    0    0    100    0    0
    85015    "소버린 장식 띠 (기본)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    1    0    0    0    0    0    100    0    0
    85016    "소버린 장식 띠 (미세)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    2    0    0    0    0    0    100    0    0
    85017    "소버린 장식 띠 (귀족)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP | ANTI_MYSHOP | ANTI_GIVE"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    3    0    0    0    0    0    100    0    0
    85018    "소버린 장식 띠 (사용자 정의)"    "ITEM_COSTUME"    "COSTUME_SASH"    1    "ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_PKDROP"    "NONE"    "NONE"    "NONE"    0    0    0    0    0    "LIMIT_NONE"    0    "LIMIT_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    "APPLY_NONE"    0    4    0    0    0    0    0    100    0    0


    Mob_Names.txt
     

    Spoiler

    20406    Theowahdan


    Mob_Proto.txt
     

    Spoiler

    20406    "Theowahdan"    "KING"    "NPC"    "MELEE"    1        "NOMOVE"    0        "STUN,SLOW,CURSE,TERROR"    0    ""    2    0    0    0    0    0    0    120    3    1    0    0    15    4    100    100    0    2000    175    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0        0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0

     

  8. On 2018. 02. 27. at 3:15 PM, Fleon said:

    No, you just request to use the emotions.

    The short form of that spoiler that is not clear and not even in english is:

    Go into uitarget, look for __OnEmoticonAllow and add: 

    
    net.SendWhisperPacket( (self.nameString), "{} requested the use of emotions with you".format(player.GetName()) )

     

    Fixed.ii forget to translate this. from hungary to ENG.

    On 2018. 02. 23. at 2:59 PM, xprtn1337 said:

    isnt there missing something?

     

    "szeretne érzelmeket veled." => request to kiss,slap etc...

    Not missing just my default language is Hungarian....
    And i forget to translate into eng...
    Now is ENG.
    Thank @Fleon

    • Love 1
  9. M2 Download Center

    This is the hidden content, please
    ( Internal )

    Hello,

    Today i saw some people search this.....
    With [007]Dawis char clicked emotion to [TEST] char...

     

    Python Version

    Spoiler


    Root => UiTarget.py


    Search this

     

    Spoiler

    def __OnEmotionAllow(self):


    Add this

     

    Spoiler

            import player
            sender = player.GetName()
            net.SendChatPacket("/emotion_allow %d" % (self.vid))

    net.SendWhisperPacket( (self.nameString), "{} requested the use of emotions with you".format(player.GetName()) )

     

     

    C++ Version by @ ASIKOO

     

    ACMD(do_emotion_allow)
    {
    	if ( ch->GetArena() )
    	{
    		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("´ë·ÃÀå¿¡¼­ »ç¿ëÇÏ½Ç ¼ö ¾ø½À´Ï´Ù."));
    		return;
    	}
    
    	char arg1[256];
    	one_argument(argument, arg1, sizeof(arg1));
    
    	if (!*arg1)
    		return;
    
    	uint32_t	val = 0; str_to_number(val, arg1);
    
    #ifdef M2_FEATURE_NOTICE_EMOTION
    	LPCHARACTER tch = CHARACTER_MANAGER::instance().Find(val);
    
    	if (tch)
    	{
    
    		bool bFrom = !(s_emotion_set.find(std::make_pair(ch->GetVID(), val)) == s_emotion_set.end());
    		bool bTo = !(s_emotion_set.find(std::make_pair(val, ch->GetVID())) == s_emotion_set.end());
    
    		if (bFrom && bTo)
    		{
    			ch->ChatPacket(CHAT_TYPE_INFO, "You are currently sharing emotions with your partner! <3");
    
    			return;
    		}
    
    		if (!bFrom && bTo)
    		{
    			s_emotion_set.insert(std::make_pair(ch->GetVID(), val));
    
    			ch->ChatPacket(CHAT_TYPE_INFO, "You allowed emotions with %s.", tch->GetName());
    			tch->ChatPacket(CHAT_TYPE_INFO, "%s allowed to share emotions.", ch->GetName());
    
    			return;
    		}
    
    		if (bFrom)
    		{
    			ch->ChatPacket(CHAT_TYPE_INFO, "You have already asked to share emotions with %s...", tch->GetName());
    			ch->ChatPacket(CHAT_TYPE_INFO, "Don't anger your partner and be patient!");
    
    			return;
    		}
    		else
    		{
    			s_emotion_set.insert(std::make_pair(ch->GetVID(), val));
    
    			ch->ChatPacket(CHAT_TYPE_INFO, "You asked to share emotions with %s.", tch->GetName());
    			tch->ChatPacket(CHAT_TYPE_INFO, "%s requested to share emotions with you.", ch->GetName());
    
    			return;
    		}
    	}
    #else
    	s_emotion_set.insert(std::make_pair(ch->GetVID(), val));
    #endif
    }

     

    Best Regards,
    [007]Dawis

    • Metin2 Dev 16
    • Sad 1
    • Good 1
    • Love 5
  10. On 2017. 08. 01. at 4:33 PM, Distraught said:

    In Metin2 - like other MMORPGs - you can make items need status points to be equipped. I'll show you how.

    Open locale_game.txt (in locale_xy)

    Search for: TOOLTIP_ITEM_LIMIT_CON

    Below you'll see the rest, you can set the way you want them to appear like

    TOOLTIP_ITEM_LIMIT_CON Needed CON: %d
    TOOLTIP_ITEM_LIMIT_DEX Nedded DEX: %d
    TOOLTIP_ITEM_LIMIT_INT Needed INT: %d
    TOOLTIP_ITEM_LIMIT_LEVEL %d. szinttől
    TOOLTIP_ITEM_LIMIT_STR Needed STR: %d

    Next, open uitooltip.py in root and search for: if item.LIMIT_LEVEL == limitType:

    Modify this part to make it look something like this (take care of tabulators):

    
    			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)

    If you're using txt item proto, then write DEX, INT, CON or STR to limittype0 and the value to limitvalue0 like when you set the level limit.

    If you're item_proto is in mysql, then the limitvalue values are:
    2 - STR
    3 - DEX
    4 - INT
    5 - CON

    Thank u so much!
    i edited little and the finish is...
    Need level limit + stat limit :P

     

  11. Hello,
     

    On 2017. 08. 26. at 3:13 AM, apocalyptic said:

    Hello guys .

    I have a problem with the change texture snow ingame . When i'm trying to enter on game option , it doesn't open .

    Sysser : 

    0826 03:00:24978 ::   File "ui.py", line 1367, in CallEvent

    0826 03:00:24978 ::   File "ui.py", line 88, in __call__

    0826 03:00:24979 ::   File "ui.py", line 70, in __call__

    0826 03:00:24979 ::   File "uiSystem.py", line 146, in __ClickGameOptionButton

    0826 03:00:24979 ::   File "uiGameOption.py", line 36, in __init__

    0826 03:00:24979 ::   File "uiGameOption.py", line 543, in RefreshShowSnowTextures

    0826 03:00:24979 :: AttributeError
    0826 03:00:24979 :: : 
    0826 03:00:24980 :: 'module' object has no attribute 'IsSnowTextures'

    "IsSnowTextures" is already added on binary  :


    bool CPythonSystem::IsSnowTexturesMode()
    {
        return m_Config.bSnowTexturesMode;
    }

    in PM send me this system and i fix for u :)
    (not joking)

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