Lucrăm la îmbunătățirea site-ului! Este posibil ca unele module să nu funcționeze corect!
1 mesaj
Avatar utilizator
Administrator
  • Administrator

    Autor subiect

  • Mesaje: 2,607
  • Reacții: 29032
  • Mesaje utile: 17
  • Status: Pierd vremea ^.^
  • Server: Saga2 - Soon
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:
    Avatar utilizator
    Administrator

    Autor subiect

    Administrator
    *Descriere:

    Sursa metin are nivelul limitat la 255, deoarece se foloseste BYTE pentru variabile. (care are valoarea maxima 255)

    Vom schimba acest lucru si vom muta pe int, astfel nivelul maxim pe care il vei putea seta va fi de: 2147483647

    *Poze / Video:
    [C++] Scoate limita nivel maxim (peste 255) - Mesaj 1 - Imagine 1
    [C++] Scoate limita nivel maxim (peste 255) - Mesaj 1 - Imagine 2
    *Link download / Code:

    Video tutorial implementare (daca nu va descurcati):


    Tutorial:

    Deschidem char.cpp si cautam:
    Code:
    void CHARACTER::SetLevel(BYTE level)
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem char.h si cautam:
    Code:
    void			SetLevel(BYTE level);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Dupa cautam:
    Code:
    BYTE			level;
    (e sub asta: typedef struct character_point)

    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem party.cpp si cautam:
    Code:
    void CParty::P2PSetMemberLevel(DWORD pid, BYTE level)
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam asta:
    Code:
    BYTE CParty::GetMemberMaxLevel()
    {
    	BYTE bMax = 0;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE CParty::GetMemberMinLevel()
    {
    	BYTE bMin = PLAYER_MAX_LEVEL_CONST;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void CParty::RequestSetMemberLevel(DWORD pid, BYTE level)
    Inlocuim cu
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem party.h si cautam:
    Code:
    BYTE	bLevel;
    (este sub: typedef struct SMember)
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    		BYTE		GetMemberMaxLevel();
    		BYTE		GetMemberMinLevel();
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    		void		RequestSetMemberLevel(DWORD pid, BYTE level);
    		void		P2PSetMemberLevel(DWORD pid, BYTE level);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem char_battle.cpp si cautam:
    Code:
    	struct FPartyTotaler
    	{
    		int		total;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    	struct FPartyDistributor
    	{
    		int		total;
    		LPCHARACTER	c;
    		int		x, y;
    		DWORD		_iExp;
    		int		m_iMode;
    		int		m_iMemberCount;
    
    		FPartyDistributor(LPCHARACTER center, int member_count, int total, DWORD iExp, int iMode) 
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem config.h si cautam:
    Code:
    extern BYTE	PK_PROTECT_LEVEL;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem locale_service.cpp si cautam:
    Code:
    BYTE PK_PROTECT_LEVEL
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem constants.cpp si cautam:
    Code:
    const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1]
    const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]
    const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ]
    const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1]
    const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1]
    Completam tabelele cu cat e nivelul maxim. Daca avem nivel maixm 300, punem 300 valori.

    Deschidem log.h si cautam:
    Code:
    void		LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem log.cpp si cautam:
    Code:
    void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem guild.h si cautam:
    Code:
    typedef struct SGuildMemberPacketData
    {   
    	DWORD pid;
    	BYTE grade;
    	BYTE is_general;
    	BYTE job;
    	BYTE level;
    	DWORD offer;
    	BYTE name_flag;
    	char name[CHARACTER_NAME_MAX_LEN+1];
    } TGuildMemberPacketData;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void		ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    	DWORD pid; // player Ĺ×ŔĚşíŔÇ id; primary key
    	BYTE grade; // ±ćµĺ»óŔÇ ÇĂ·ąŔĚľîŔÇ °č±Ţ 1 to 15 (1ŔĚ ÂŻ)
    	BYTE is_general;
    	BYTE job;
    	BYTE level;
    	DWORD offer_exp; // °řÇĺÇŃ °ćÇčġ
    	BYTE _dummy;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void		LevelChange(DWORD pid, BYTE level);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem guild.cpp si cautam:
    Code:
    BYTE level = (BYTE)strtoul(row[4], (char**) NULL, 10);
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    sys_log(0, "GUILD: AddMember PID %u, grade %u, job %u, level %u, offer %u, name %s ptr %p",
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void CGuild::ChangeMemberData(DWORD pid, DWORD offer, BYTE level, BYTE grade)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void CGuild::LevelChange(DWORD pid, BYTE level)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    bool CGuild::OfferExp(LPCHARACTER ch, int amount)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void CGuild::SendListPacket(LPCHARACTER ch)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    void CGuild::SendListOneToAll(DWORD pid)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    SGuildMember::SGuildMember(DWORD pid, BYTE grade, BYTE is_general, BYTE job, BYTE level, DWORD offer_exp, char* name)
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem tables.h din common si cautam:
    Code:
    BYTE		byLevel;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE	level;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE level;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE	bLevel;
    (este sub: typedef struct SPacketPartySetMemberLevel)

    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE	bLevel;
    (este sub: typedef struct SPacketDGGuildMember)

    Inlocuim cu:
    Code:
    int	bLevel;
    deschidem lenght.h si aici setam nivelul maxim:
    Code:
    	PLAYER_EXP_TABLE_MAX	= 120,
    	PLAYER_MAX_LEVEL_CONST	= 120,
    Deschidem db/src/ClientManager.h si cautam:
    Code:
    	struct TPartyInfo
    	{
    	    BYTE bRole;
    	    BYTE bLevel;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem ClientManager.cpp si cautam in void CClientManager::SendPartyOnSetup(CPeer* pkPeer):
    Code:
    pkPeer->Encode(&it_member->second.bLevel, sizeof(BYTE));
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem ClientManagerPlayer.cpp si cautam:
    Code:
    "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam (x2):
    Code:
    "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d"
    Inlocuim (x2):
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    In sursa binary, deschidem packet.h si cautam:
    Code:
    BYTE                byLevel;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE byLevel;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Deschidem PythonGuild.h si cautam:
    Code:
    BYTE byLevel;
    Inlocuim cu:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.


    Si nu in ultimul rand, mergem in Navicat -> player -> player -> Design table -> Editam coloana level si setam din type tinyint in int si la size extindem la 3/4 (in functie de caz)

    Cam atat :)

    Acum va trebui sa editati in constants.cpp EXP pentru fiecare nivel, va las un exemplu atasat mai jos:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.

    Cum descarc de pe TeraBox?

    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/Kr9nUpWa4X

    Suntem aproape 1000 membri! - Avem chat activ zilnic, support, cereri, resurse.



    See full signature
    Tag-uri:

    🔥 Hai pe Discord! - Chat activ și support direct

    Te așteptăm și pe serverul de Discord - aici ne-am strâns toată comunitatea de Metin2 din România.

    Alătură-te acum!
    1300+ de membri activi!
    Robot Discord
    Roboțelu'
    Anunț

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Înregistrează-te și alătură-te comunității noastre

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra rapid utilizând contul tău de Discord sau Github

    Înregistrare

    Autentifică-te

    • Subiecte similare

      • de [HF]White » » în Îmbunătățiri
        0
        Răspunsuri
        1276
        Vizualizări
        de [HF]White
      • de [HF]White » » în Îmbunătățiri
        0
        Răspunsuri
        141
        Vizualizări
        de [HF]White
      • de [HF]White » » în Îmbunătățiri
        0
        Răspunsuri
        331
        Vizualizări
        de [HF]White
      • de [HF]White » » în Îmbunătățiri
        1
        Răspunsuri
        329
        Vizualizări
        de Trojan3D

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 10 vizitatori