[Release] Source Control add points 100% In-Game!

    Distribuiti

    TheKing
    Administrator
    Administrator

    Numărul mesajelor : 887
    Data nasterii : 01/05/1942
    Vârsta : 74
    Localizare : Raiul Pământean ...
    Joburi/Distractii : EuropeMedia Comunity
    Stare de spirit : Superb ...
    Data de inscriere : 05/12/2009
    Taur Cal

    New [Release] Source Control add points 100% In-Game!

    Mesaj  TheKing la data de Vin Ian 07, 2011 2:47 pm



    Cod:

    //Adiciona pontos para o personagem
    #define CMD_FORCA        "/addstr "
    #define CMD_AGILIDADE    "/addagi "
    #define CMD_VITALIDADE    "/addvit "
    #define CMD_ENERGIA        "/addene "
    #define CMD_CARISMA        "/addcmd "

    bool IsPonto(DWORD PlayerID, LPCSTR Comando)
    {
        int CmdLen, Pontos;
        char* Atributo = "";
        char Mensagem[100] = "";

        PMSG_USE_STAT_FRUIT pResult;
        PHeadSetB((LPBYTE)&pResult,0x2C,sizeof(pResult));
       
        if(memicmp(CMD_FORCA, Comando, sizeof(CMD_FORCA)-1) == 0)
        {
            if( CheckIfLevelUpPoint(PlayerID) == TRUE)
                return false;

            CmdLen = sizeof(CMD_FORCA)-1;
            sscanf(Comando+CmdLen,"%d", &Pontos);
            Pontos = abs(Pontos);
            Atributo = msg[14].Message;

            if((CheckLevelUpPoint(PlayerID,Pontos,3)) == FALSE)
            {
                wsprintf(Mensagem, msg[19].Message, Atributo); // "Essa quantidade de pontos excede o maximo de pontos em %s para sua classe"
                C1TipPlayer(PlayerID,Mensagem,1);
                return false;
            }

            pResult.result = 0;
            pResult.btStatValue = Pontos;
            pResult.btFruitType = 3;
            DataSend(PlayerID,(unsigned char *)&pResult,pResult.h.size);
            Obj[PlayerID].Strength += Pontos;
            wsprintf(Mensagem, msg[20].Message, Pontos, Atributo); // "Foram adicionados %d pontos em %s"
            C1TipPlayer(PlayerID,Mensagem,1);

        }
        else if(memicmp(CMD_AGILIDADE, Comando, sizeof(CMD_AGILIDADE)-1) == 0)
        {
            if( CheckIfLevelUpPoint(PlayerID) == TRUE)
                return false;

            CmdLen = sizeof(CMD_AGILIDADE)-1;
            sscanf(Comando+CmdLen,"%d", &Pontos);
            Pontos = abs(Pontos);
            Atributo = msg[15].Message;

            if((CheckLevelUpPoint(PlayerID,Pontos,2)) == FALSE)
            {
                wsprintf(Mensagem, msg[19].Message, Atributo); // "Essa quantidade de pontos excede o maximo de pontos em %s para sua classe"
                C1TipPlayer(PlayerID,Mensagem,1);
                return false;
            }

            pResult.result = 0;
            pResult.btStatValue = Pontos;
            pResult.btFruitType = 2;
            DataSend(PlayerID,(unsigned char *)&pResult,pResult.h.size);
            Obj[PlayerID].Dexterity += Pontos;
            wsprintf(Mensagem, msg[20].Message, Pontos, Atributo); // "Foram adicionados %d pontos em %s"
            C1TipPlayer(PlayerID,Mensagem,1);
        }
        else if(memicmp(CMD_VITALIDADE, Comando, sizeof(CMD_VITALIDADE)-1) == 0)
        {
            if( CheckIfLevelUpPoint(PlayerID) == TRUE)
                return false;

            CmdLen = sizeof(CMD_VITALIDADE)-1;
            sscanf(Comando+CmdLen,"%d", &Pontos);
            Pontos = abs(Pontos);
            Atributo = msg[16].Message;

            if((CheckLevelUpPoint(PlayerID,Pontos,1)) == FALSE)
            {
                wsprintf(Mensagem, msg[19].Message, Atributo); // "Essa quantidade de pontos excede o maximo de pontos em %s para sua classe"
                C1TipPlayer(PlayerID,Mensagem,1);
                return false;
            }

            pResult.result = 0;
            pResult.btStatValue = Pontos;
            pResult.btFruitType = 1;
            DataSend(PlayerID,(unsigned char *)&pResult,pResult.h.size);
            Obj[PlayerID].Vitality += Pontos;
            Obj[PlayerID].MaxLife += Obj[PlayerID].VitalityToLife * Pontos;
            wsprintf(Mensagem, msg[20].Message, Pontos, Atributo); // "Foram adicionados %d pontos em %s"
            C1TipPlayer(PlayerID,Mensagem,1);
        }
        else if(memicmp(CMD_ENERGIA, Comando, sizeof(CMD_ENERGIA)-1) == 0)
        {
            if( CheckIfLevelUpPoint(PlayerID) == TRUE)
                return false;

            CmdLen = sizeof(CMD_ENERGIA)-1;
            sscanf(Comando+CmdLen,"%d", &Pontos);
            Pontos = abs(Pontos);
            Atributo = msg[17].Message;

            if((CheckLevelUpPoint(PlayerID,Pontos,0)) == FALSE)
            {
                wsprintf(Mensagem, msg[19].Message, Atributo); // "Essa quantidade de pontos excede o maximo de pontos em %s para sua classe"
                C1TipPlayer(PlayerID,Mensagem,1);
                return false;
            }

            pResult.result = 0;
            pResult.btStatValue = Pontos;
            pResult.btFruitType = 0;
            DataSend(PlayerID,(unsigned char *)&pResult,pResult.h.size);
            Obj[PlayerID].Energy += Pontos;
            Obj[PlayerID].MaxMana += Obj[PlayerID].EnergyToMana * Pontos;
            gObjSetBP(PlayerID);
            wsprintf(Mensagem, msg[20].Message, Pontos, Atributo); // "Foram adicionados %d pontos em %s"
            C1TipPlayer(PlayerID,Mensagem,1);
           
        }
        else if(memicmp(CMD_CARISMA, Comando, sizeof(CMD_CARISMA)-1) == 0)
        {
            if( CheckIfLevelUpPoint(PlayerID) == TRUE)
                return false;

            if(Obj[PlayerID].DbClass == DarkLord || Obj[PlayerID].DbClass == LordEmperor){
                CmdLen = sizeof(CMD_CARISMA)-1;
                sscanf(Comando+CmdLen,"%d", &Pontos);
                Pontos = abs(Pontos);
                Atributo = msg[18].Message;

                if((CheckLevelUpPoint(PlayerID,Pontos,4)) == FALSE)
                {
                    wsprintf(Mensagem, msg[19].Message, Atributo); // "Essa quantidade de pontos excede o maximo de pontos em %s para sua classe"
                    C1TipPlayer(PlayerID,Mensagem,1);
                    return false;
                }
               
                pResult.result = 0;
                pResult.btStatValue = Pontos;
                pResult.btFruitType = 4;
                DataSend(PlayerID,(unsigned char *)&pResult,pResult.h.size);
                Obj[PlayerID].Leadership += Pontos;
                wsprintf(Mensagem, msg[20].Message, Pontos, Atributo); // "Foram adicionados %d pontos em %s"
                C1TipPlayer(PlayerID,Mensagem,1);
            }
            else
            {
                MenssagemAlerta(4,PlayerID);
                return false;
            }
        }
        else {
            return false;
        }

        Obj[PlayerID].LevelUpPoint -= Pontos;
        gObjCalCharacter(PlayerID);
        GCReFillSend(Obj[PlayerID].m_Index,(WORD)Obj[PlayerID].MaxLife + Obj[PlayerID].AddLife,0xFE,0,Obj[PlayerID].iMaxShield + Obj[PlayerID].iAddShield);
        gObjSetBP(PlayerID);
        GCManaSend(Obj[PlayerID].m_Index,(short)Obj[PlayerID].MaxMana + Obj[PlayerID].AddMana,0xFE,0,Obj[PlayerID].MaxBP + Obj[PlayerID].AddBP);
        GCLevelUpMsgSend( Obj[PlayerID].m_Index , FALSE );

        return true;
    }

    bool CheckIfLevelUpPoint(DWORD PlayerID)
    {
        if( Obj[PlayerID].Level < Load.AddLevel )
        {
            MenssagemAlerta(1,PlayerID);
            return true;
        }
        if( (TiraZen(PlayerID, Load.AddCost)) == FALSE )
        {
            MenssagemAlerta(0,PlayerID);
            return true;
        }

        return false;
    }
    Cod:

    struct PMSG_USE_STAT_FRUIT {

      struct PBMSG_HEAD h;
      unsigned char result;
      unsigned short btStatValue;
      unsigned char btFruitType;
    };

    Credits:
    Diel and Kimdu ( Development Code )
    Hermex

      Acum este: Joi Dec 08, 2016 2:06 am