Jump to content

Nirray

Inactive Member
  • Posts

    94
  • Joined

  • Last visited

  • Days Won

    4
  • Feedback

    0%

Posts posted by Nirray

  1. 15 minutes ago, drew20 said:

    I have to mix the tabs or replace them because I do not know what to do

    https://www.python.org/about/gettingstarted/
    https://wiki.python.org/moin/BeginnersGuide/Programmers
    https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
    "Tabs should be used solely to remain consistent with code that is already indented with tabs."

    Replace spaces with TABs 
    Line: 401 (two TABs instead of x spaces)
    Line: 491 (one TAB instead of x spaces)

  2. 2 hours ago, drew20 said:

    I did it but I still have the same mistake look:

    1002 13:14:18381 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010).  Automatic conversion will be attempted.
    1002 13:14:29667 :: Traceback (most recent call last):

    1002 13:14:29667 ::   File "networkModule.py", line 228, in SetGamePhase

    1002 13:14:29668 ::   File "system.py", line 130, in __pack_import

    1002 13:14:29668 ::   File "
    1002 13:14:29668 :: game.py
    1002 13:14:29668 :: ", line 
    1002 13:14:29668 :: 407
    1002 13:14:29668 :: 

    1002 13:14:29668 ::     
    1002 13:14:29668 :: self.onPressKeyDict = onPressKeyDict

    1002 13:14:29668 ::     
    1002 13:14:29668 :: ^

    1002 13:14:29668 :: IndentationError
    1002 13:14:29668 :: : 
    1002 13:14:29668 :: unexpected indent
    1002 13:14:29668 :: 

     

    game.py: 

    This is the hidden content, please

     

    decryption key:-Cy3ICxcfC4kmL6WUYXnTjnY_ipNrf-GJzURdryNjSU

    x3.png

    407.png
    def.png

  3. You mean dmg hack svside check from clientside .mse file?
    Or waithack from SendAttackPacket?

    If waithack - it is still working (hidden for example)
    Also, because of first check "GetLastAttackTime" there's a input "lag" (you need to attack twice new mob to deal damage [even visible in your gyazo gif with metin stone @Rakancito])
    It's more like workaround ? 

    To fix it correctly we should change the 

     

    CalcMeleeDamage
    CalcArrowDamage

    iDam = 0;

    like char_battle.cpp does with bow
     

    if (IS_SPEED_HACK(m_me, pkVictim, dwCurrentTime))
    	iDam = 0;

    I didn't want to be rude I also want to fix it and I'm here to help ?

    input lag:
    https://metin2.download/picture/aEms6DYU1h5Z4jY0qutm2jZdy1NbkQL7/.gif

    dmghack after second hit:
    https://metin2.download/picture/lRF61Ykk8p2uT2kywncvys7cE67gm4KE/.gif

    • Metin2 Dev 9
    • Angry 1
    • Think 1
    • Good 1
    • Love 1
    • Love 1
  4. 1 minute ago, bogdan1809 said:

    I just compared with the old file and doesn't miss anything. maybe i bought the sf with this problem and now is pretty late to give up it. I need to try to resolve this problem ?

    IDs are working fine so it's something about 'import player' defines for python from c++.
    status.png

  5. 20 minutes ago, bogdan1809 said:

    replace whole
     

    	PyObject* poModule = Py_InitModule("player", s_methods);

    with:
    https://pastebin.com/gchD2pMe

    And add all new defines from your new added systems (ifdef etc.) [you need to find missing ones from your old PythonPlayerModule]
    Why -> your client source~python defines are broken.


    Or workaround if you're to lazy:
    just change:
     

    def __GetTotalAtkText(self):
    		minAtk=player.GetStatus(player.ATT_MIN)
    		maxAtk=player.GetStatus(player.ATT_MAX)
    		atkBonus=player.GetStatus(player.ATT_BONUS)
    		attackerBonus=player.GetStatus(player.ATTACKER_BONUS)
    		
    		if minAtk==maxAtk:
    			return "%d" % (minAtk+atkBonus+attackerBonus)
    		else:
    			return "%d-%d" % (minAtk+atkBonus+attackerBonus, maxAtk+atkBonus+attackerBonus)

    to:
     

    def __GetTotalAtkText(self):
    		minAtk=player.GetStatus(29)
    		maxAtk=player.GetStatus(30)
    		atkBonus=player.GetStatus(95)
    		attackerBonus=player.GetStatus(91)
    		if minAtk==maxAtk:
    			return "%d" % (minAtk+atkBonus+attackerBonus)
    		else:
    			return "%d-%d" % (minAtk+atkBonus+attackerBonus, maxAtk+atkBonus+attackerBonus)

    (IT'S NOT A FIX, YOUR .cpp part is still wrong.)

  6. 1 hour ago, bogdan1809 said:
      Hide contents

    enum EPointTypes
    {
        POINT_NONE,                 // 0
        POINT_LEVEL,                // 1
        POINT_VOICE,                // 2
        POINT_EXP,                  // 3
        POINT_NEXT_EXP,             // 4
        POINT_HP,                   // 5
        POINT_MAX_HP,               // 6
        POINT_SP,                   // 7
        POINT_MAX_SP,               // 8  
        POINT_STAMINA,              // 9  스테미너
        POINT_MAX_STAMINA,          // 10 최대 스테미너
        
        POINT_GOLD,                 // 11
        POINT_ST,                   // 12 근력
        POINT_HT,                   // 13 체력
        POINT_DX,                   // 14 민첩성
        POINT_IQ,                   // 15 정신력
        POINT_ATT_POWER,            // 16 공격력
        POINT_ATT_SPEED,            // 17 공격속도
        POINT_EVADE_RATE,           // 18 회피율
        POINT_MOV_SPEED,            // 19 이동속도
        POINT_DEF_GRADE,            // 20 방어등급
        POINT_CASTING_SPEED,        // 21 주문속도 (쿨다운타임*100) / (100 + 이값) = 최종 쿨다운 타임
        POINT_MAGIC_ATT_GRADE,      // 22 마법공격력
        POINT_MAGIC_DEF_GRADE,      // 23 마법방어력
        POINT_EMPIRE_POINT,         // 24 제국점수
        POINT_LEVEL_STEP,           // 25 한 레벨에서의 단계.. (1 2 3 될 때 보상, 4 되면 레벨 업)
        POINT_STAT,                 // 26 능력치 올릴 수 있는 개수
        POINT_SUB_SKILL,            // 27 보조 스킬 포인트
        POINT_SKILL,                // 28 액티브 스킬 포인트
    //    POINT_SKILL_PASV,           // 27 패시브 기술 올릴 수 있는 개수
    //    POINT_SKILL_ACTIVE,         // 28 액티브 스킬 포인트
        POINT_MIN_ATK,                // 29 최소 파괴력
        POINT_MAX_ATK,                // 30 최대 파괴력
        POINT_PLAYTIME,             // 31 플레이시간
        POINT_HP_REGEN,             // 32 HP 회복률
        POINT_SP_REGEN,             // 33 SP 회복률
        
        POINT_BOW_DISTANCE,         // 34 활 사정거리 증가치 (meter)
        
        POINT_HP_RECOVERY,          // 35 체력 회복 증가량
        POINT_SP_RECOVERY,          // 36 정신력 회복 증가량
        
        POINT_POISON_PCT,           // 37 독 확률
        POINT_STUN_PCT,             // 38 기절 확률
        POINT_SLOW_PCT,             // 39 슬로우 확률
        POINT_CRITICAL_PCT,         // 40 크리티컬 확률
        POINT_PENETRATE_PCT,        // 41 관통타격 확률
        POINT_CURSE_PCT,            // 42 저주 확률
        
        POINT_ATTBONUS_HUMAN,       // 43 인간에게 강함
        POINT_ATTBONUS_ANIMAL,      // 44 동물에게 데미지 % 증가
        POINT_ATTBONUS_ORC,         // 45 웅귀에게 데미지 % 증가
        POINT_ATTBONUS_MILGYO,      // 46 밀교에게 데미지 % 증가
        POINT_ATTBONUS_UNDEAD,      // 47 시체에게 데미지 % 증가
        POINT_ATTBONUS_DEVIL,       // 48 마귀(악마)에게 데미지 % 증가
        POINT_ATTBONUS_INSECT,      // 49 벌레족
        POINT_ATTBONUS_FIRE,        // 50 화염족
        POINT_ATTBONUS_ICE,         // 51 빙설족
        POINT_ATTBONUS_DESERT,      // 52 사막족
        POINT_ATTBONUS_UNUSED0,     // 53 UNUSED0
        POINT_ATTBONUS_UNUSED1,     // 54 UNUSED1
        POINT_ATTBONUS_UNUSED2,     // 55 UNUSED2
        POINT_ATTBONUS_UNUSED3,     // 56 UNUSED3
        POINT_ATTBONUS_UNUSED4,     // 57 UNUSED4
        POINT_ATTBONUS_UNUSED5,     // 58 UNUSED5
        POINT_ATTBONUS_UNUSED6,     // 59 UNUSED6
        POINT_ATTBONUS_UNUSED7,     // 60 UNUSED7
        POINT_ATTBONUS_UNUSED8,     // 61 UNUSED8
        POINT_ATTBONUS_UNUSED9,     // 62 UNUSED9

        POINT_STEAL_HP,             // 63 생명력 흡수
        POINT_STEAL_SP,             // 64 정신력 흡수

        POINT_MANA_BURN_PCT,        // 65 마나 번

        /// 피해시 보너스 ///

        POINT_DAMAGE_SP_RECOVER,    // 66 공격당할 시 정신력 회복 확률

        POINT_BLOCK,                // 67 블럭율
        POINT_DODGE,                // 68 회피율

        POINT_RESIST_SWORD,         // 69
        POINT_RESIST_TWOHAND,       // 70
        POINT_RESIST_DAGGER,        // 71
        POINT_RESIST_BELL,          // 72
        POINT_RESIST_FAN,           // 73
        POINT_RESIST_BOW,           // 74  화살   저항   : 대미지 감소
        POINT_RESIST_CLAW,
        POINT_RESIST_FIRE,          // 75  화염   저항   : 화염공격에 대한 대미지 감소
        POINT_RESIST_ELEC,          // 76  전기   저항   : 전기공격에 대한 대미지 감소
        POINT_RESIST_MAGIC,         // 77  술법   저항   : 모든술법에 대한 대미지 감소
        POINT_RESIST_WIND,          // 78  바람   저항   : 바람공격에 대한 대미지 감소

        POINT_REFLECT_MELEE,        // 79 공격 반사

        /// 특수 피해시 ///
        POINT_REFLECT_CURSE,        // 80 저주 반사
        POINT_POISON_REDUCE,        // 81 독데미지 감소

        /// 적 소멸시 ///
        POINT_KILL_SP_RECOVER,      // 82 적 소멸시 MP 회복
        POINT_EXP_DOUBLE_BONUS,     // 83
        POINT_GOLD_DOUBLE_BONUS,    // 84
        POINT_ITEM_DROP_BONUS,      // 85

        /// 회복 관련 ///
        POINT_POTION_BONUS,         // 86
        POINT_KILL_HP_RECOVER,      // 87

        POINT_IMMUNE_STUN,          // 88
        POINT_IMMUNE_SLOW,          // 89
        POINT_IMMUNE_FALL,          // 90
        //////////////////

        POINT_PARTY_ATT_GRADE,      // 91
        POINT_PARTY_DEF_GRADE,      // 92

        POINT_ATT_BONUS,            // 93
        POINT_DEF_BONUS,            // 94

        POINT_ATT_GRADE_BONUS,            // 95
        POINT_DEF_GRADE_BONUS,            // 96
        POINT_MAGIC_ATT_GRADE_BONUS,    // 97
        POINT_MAGIC_DEF_GRADE_BONUS,    // 98

        POINT_RESIST_NORMAL_DAMAGE,        // 99

        POINT_STAT_RESET_COUNT = 112,
        POINT_HORSE_SKILL = 113,

        POINT_MALL_ATTBONUS,        // 114 공격력 +x%
        POINT_MALL_DEFBONUS,        // 115 방어력 +x%
        POINT_MALL_EXPBONUS,        // 116 경험치 +x%
        POINT_MALL_ITEMBONUS,        // 117 아이템 드롭율 x/10배
        POINT_MALL_GOLDBONUS,        // 118 돈 드롭율 x/10배
        POINT_MAX_HP_PCT,            // 119 최대생명력 +x%
        POINT_MAX_SP_PCT,            // 120 최대정신력 +x%

        POINT_SKILL_DAMAGE_BONUS,       // 121 스킬 데미지 *(100+x)%
        POINT_NORMAL_HIT_DAMAGE_BONUS,  // 122 평타 데미지 *(100+x)%
       
        POINT_SKILL_DEFEND_BONUS,       // 123 스킬 방어 데미지
        POINT_NORMAL_HIT_DEFEND_BONUS,  // 124 평타 방어 데미지
        POINT_PC_BANG_EXP_BONUS,
        POINT_PC_BANG_DROP_BONUS,
        POINT_ENERGY = 128,                // 128 기력

        // 기력 ui 용.
        // 이렇게 하고 싶지 않았지만, 
        // uiTaskBar에서는 affect에 접근할 수 없고,
        // 더구나 클라리언트에서는 blend_affect는 관리하지 않아,
        // 임시로 이렇게 둔다.
        POINT_ENERGY_END_TIME = 129,    // 129 기력 종료 시간

        // 클라이언트 포인트
        POINT_MIN_WEP = 200,
        POINT_MAX_WEP,
        POINT_MIN_MAGIC_WEP,
        POINT_MAX_MAGIC_WEP,
        POINT_HIT_RATE,
        POINT_BLEEDING_PCT,
        POINT_BLEEDING_REDUCE,
        //POINT_MAX_NUM = 255,=>stdafx.h 로/
    };

     

      Hide contents

    0915 23:01:03873 :: 
    networkModule.py(line:208) SetSelectCharacterPhase
    system.py(line:130) __pack_import
    system.py(line:110) _process_result
    introSelect.py(line:17) <module>
    system.py(line:130) __pack_import

    networkModule.SetSelectCharacterPhase - <type 'exceptions.SyntaxError'>:invalid syntax (uiCharacter.py, line 457)

    0915 23:01:03873 :: ============================================================================================================
    0915 23:01:03873 :: Abort!!!!

    https://metin2.download/picture/9C94s7tiPwIgUn5ntkJ6KW6GB0xKUYQM/.png

    metin2dev encoding is bugged
    https://pastebin.com/raw/0embgkTT

    (
    @pollux->edit: I forgot about https://metin2.dev/bin/ XD)

  7. 10 minutes ago, bogdan1809 said:

    Same to you.

     

    Syserr

      Reveal hidden contents

    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/npc/old_magic_M2/old_magic_M2.msm] ERROR. Will Find Another Path.
    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/npc_mount/old_magic_M2/old_magic_M2.msm] ERROR. Will Find Another Path.
    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/npc2/old_magic_M2/old_magic_M2.msm] ERROR. Will Find Another Path.
    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/monster/old_magic_M2/old_magic_M2.msm] ERROR. Will Find Another Path.
    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/monster2/old_magic_M2/old_magic_M2.msm] ERROR. Will Find Another Path.
    0915 22:00:36642 :: CRaceManager::RegisterRacePath : RACE[20421] LOAD MSMFILE[d:/ymir work/guild/old_magic_M2/old_magic_M2.msm] ERROR
    0915 22:00:36643 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 20421
    0915 22:00:36643 :: CPythonCharacterManager::CreateInstance VID[13813] Race[20421]
     

     

    UserInterface/packet.h
     

    enum EPointTypes

    may I see it?

    also, could you debug your uicharacter for me?
    May you replace this in uicharacter.py def?

    def __GetTotalAtkText(self):
    		minAtk=player.GetStatus(player.ATT_MIN)
    		maxAtk=player.GetStatus(player.ATT_MAX)
    		atkBonus=player.GetStatus(player.ATT_BONUS)
    		attackerBonus=player.GetStatus(player.ATTACKER_BONUS)
    		chat.AppendChat(7, "packet.h : min %d max %d bonus %d" % (player.GetStatus(player.ATT_MIN), player.GetStatus(player.ATT_MAX), player.GetStatus(player.ATT_BONUS)))
    		chat.AppendChat(7, "without packet.h : min %d max %d bonus %d" % (player.GetStatus(29), player.GetStatus(30), player.GetStatus(95)))
    		if minAtk==maxAtk:
    			return "%d" % (minAtk+atkBonus+attackerBonus)
    		else:
    			return "%d-%d" % (minAtk+atkBonus+attackerBonus, maxAtk+atkBonus+attackerBonus)
    		

    packet.png

    my aura gives 625 attack

  8. Just now, bogdan1809 said:

    No...

    Check your interfacemodule.py

    def RefreshCharacter(self): ## Character ĆäŔĚÁöŔÇ ľó±Ľ, Inventory ĆäŔĚÁöŔÇ Ŕü˝Ĺ ±×¸˛ µîŔÇ Refresh
    		self.wndCharacter.RefreshCharacter()
    		self.wndTaskBar.RefreshQuickSlot()

    and game.py

    def RefreshCharacter(self):
    		if self.interface:
    			self.interface.RefreshCharacter()

    any client syserr.txt errors/warnings or is it empty?

  9. 1 minute ago, bogdan1809 said:

    This attachment is not available. It may have been removed or the person who shared it may not have permission to share it to this location.

    I need only uicharacter.py then

  10. Hi, I'm trying to add 7/8 skill (not passive).
    I've done the server source (game + lua, mysql) part.
    Now I'm fighting with clientside.
    7/8th skills just disappear from skill page (they are working if not /skillup ~ only dissapearing).

    Problem with chat "debug":

    https://metin2.download/picture/378iJF9XjR04d845roAr1Xk1GAbDNp51/.gif
    chat.AppendChat(7, str(skillIndex) + " : " + str(slotNumber))

    uicharacter.py:

    ACTIVE_PAGE_SLOT_COUNT = 8
    0906 16:02:37356 ::   File "game.py", line 602, in RefreshSkill
    
    0906 16:02:37356 ::   File "interfaceModule.py", line 558, in RefreshSkill
    
    0906 16:02:37356 ::   File "uiCharacter.py", line 888, in RefreshSkill
    
    0906 16:02:37356 ::   File "uiCharacter.py", line 814, in __RefreshSkillPage
    
    0906 16:02:37356 ::   File "uiCharacter.py", line 1274, in __GetRealSkillSlot
    
    0906 16:02:37357 :: RuntimeError
    0906 16:02:37357 :: : 
    0906 16:02:37357 :: skill.GetSkillType - Failed to find skill by 0
    0906 16:02:37357 :: 

    Thanks for help ?


     

     

  11. 22 minutes ago, VegaS™ said:

    Did you check what level he sent from packet?

      Hide contents
    
    
    bool CPythonNetworkStream::RecvSkillLevelNew()
    {
    	TPacketGCSkillLevelNew packet;
    
    	if (!Recv(sizeof(TPacketGCSkillLevelNew), &packet))
    	{
    		Tracen("CPythonNetworkStream::RecvSkillLevelNew - RecvError");
    		return false;
    	}
    
    	const CPythonPlayer & rkPlayer = CPythonPlayer::Instance();
    
    	rkPlayer.SetSkill(7, 0);
    	rkPlayer.SetSkill(8, 0);
    
    	for (int i = 0; i < SKILL_MAX_NUM; ++i)
    	{
    		const TPlayerSkill & rPlayerSkill = packet.skills[i];
    
    		if (i >= 112 && i <= 115 && rPlayerSkill.bLevel)
    			rkPlayer.SetSkill(7, i);
    
    		if (i >= 116 && i <= 119 && rPlayerSkill.bLevel)
    			rkPlayer.SetSkill(8, i);
    
    		if (i == 122)
    			TraceError("Combo skill level: %d", rPlayerSkill.bLevel);
    
    		rkPlayer.SetSkillLevel_(i, rPlayerSkill.bMasterType, rPlayerSkill.bLevel);
    	}
    
    	__RefreshSkillWindow();
    	__RefreshStatus();
    	return true;
    }
    • 0903 00:56:53064 :: Combo skill level: 0
    • 0903 00:56:59268 :: Combo skill level: 1
    • 0903 00:56:00242 :: Combo skill level: 2
       

    level.png

    0903 00:05:25663 :: Combo level: 0
    0903 00:05:26868 :: Combo level: 1
    0903 00:05:27627 :: Combo level: 2
    (/setsk 122 0,1,2)

    Update:
    combo.png

    I guess the problem lies somewhere here

  12. 32 minutes ago, VegaS™ said:

    By default, you can increase the skill level of combo with book, not by point up.

    Check for DISABLE_BY_POINT_UP from skill index 122:

    • skill_proto (server)
    • skilltable.txt (client)

    void CPythonPlayer::SetComboSkillFlag(BOOL bFlag), you could check here what happen.

    Neither of them work: skillup, skill book, setksk 122 1/2, pc.set_skill_level(122, 2) [quest], DISABLE_BY_POINT_UP (on/off) [skill_proto] in clientside Interface - I've already tried ? 
     

    https://metin2.download/picture/HJx2t6WaeY3gPdF454fV1Hhf099fE7tc/.gif

    50304 ID = The Art Of Combo skill book
    LUA-> "Powodzeniem" = Successful
    Result: still cannot use it (Debug: skill id: 122 is set to 1 from 0)
    @VegaS™ It's more like client can't set skill level on combo icon [skill index/skill slot] -> Leadership and  Mining works fine and other support-passives too

    Update: On my old RAW client combo is working like a charm
    So it's a python bug/client source ? 

    https://metin2.download/picture/0o93FQmh931VEZRmUL2tKoasE560ZRX1/.gif


    Update2: it's not skilldesc.txt, skilltable.txt problem [checked with default Metin2 ones] and uicharacter.py (checked with original one)

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