Ir para conteúdo
  • 2 Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

Mestre HAB.. armia não devolve os pontos


kanova01
 Compartilhar

Posts Recomendados

O que acontece é que ela retira os com mais pontuação, porém não volta para o personagem poder adicionar novamente .... Alguém consegue dar uma luz? segue o code....

 

 

 

case MESTREHAB:
    {
        if (confirm == 0)
        {
            sprintf(temp, g_pMessageStringTable[_DN_Want_Stat_Init], StatSapphire);
            SendSay(npcIndex, temp);
            break;
        }

        int RetornoHab = 0;
        int NumSappInv = 0;

        for (int i = 0; i < pMob[conn].MaxCarry; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex == 697)
                NumSappInv++;

            else if (pMob[conn].MOB.Carry.sIndex == 4131)
                NumSappInv += 10;

            else if (pMob[conn].MOB.Carry.sIndex == 3336)
                RetornoHab = 1;
        }

        if (NumSappInv < StatSapphire && RetornoHab == 0)
        {
            sprintf(temp, g_pMessageStringTable[_DN_Need_D_Sapphire2], StatSapphire);
            SendSay(npcIndex, temp);
            break;
        }

        if (RetornoHab == 1)
        {
            for (int i = 0; i < pMob[conn].MaxCarry; i++)
            {
                if (pMob[conn].MOB.Carry.sIndex == 3336)
                {
                    memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                    SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                    break;
                }
            }

            goto DiretoReset;
        }
        if (NumSappInv > StatSapphire)
            NumSappInv = StatSapphire;

        for (int i = 0; i < pMob[conn].MaxCarry && NumSappInv > 0; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex == 697)
            {
                memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                NumSappInv--;
            }

            else if (pMob[conn].MOB.Carry.sIndex == 4131 && NumSappInv >= 10)
            {
                memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                NumSappInv -= 10;
            }
        }
    DiretoReset:

        int cls = pMob[conn].MOB.Class;

        if (cls < 0 || cls > 3)
            break;

        int resetp = 100;
        int score = pMob[conn].MOB.ScoreBonus;
        int str = pMob[conn].MOB.BaseScore.Str - BaseSIDCHM[cls][0];
        int _int = pMob[conn].MOB.BaseScore.Int - BaseSIDCHM[cls][1];
        int dex = pMob[conn].MOB.BaseScore.Dex - BaseSIDCHM[cls][2];
        int con = pMob[conn].MOB.BaseScore.Con - BaseSIDCHM[cls][3];

        if (str <= resetp)
        {
            pMob[conn].MOB.BaseScore.Str -= str;
            score += str;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Str -= resetp;
            score += resetp;
        }

        if (_int <= resetp)
        {
            pMob[conn].MOB.BaseScore.Int -= _int;
            score += _int;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Int -= resetp;
            score += resetp;
        }

        if (dex <= resetp)
        {
            pMob[conn].MOB.BaseScore.Dex -= dex;
            score += dex;
        }

        else
        {
            pMob[conn].MOB.BaseScore.Dex -= resetp;
            score += resetp;
        }

        if (con <= resetp)
        {
            pMob[conn].MOB.BaseScore.Con -= con;
            score += con;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Con -= resetp;
            score += resetp;
        }

        sprintf(temp, "etc,mestre_hab resetscore 100 name:%s conn:%d", pMob[conn].MOB.MobName, conn);
        Log(temp, "-system", 0);

        BASE_GetBonusScorePoint(&pMob[conn].MOB, &pMob[conn].Extra);
        BASE_GetHpMp(&pMob[conn].MOB, &pMob[conn].Extra);

        SetAffect(conn, 44, 20, 20);

        SendScore(conn);
        SendEtc(conn);
        SendClientMsg(conn, g_pMessageStringTable[_NN_Stat_Initialized]);
    } break;

Link para o comentário
Compartilhar em outros sites

4 horas atrás, kanova01 disse:

TOA

 

Já foi informado que as soucers de estudo(TOA & W2PP Master etc...) não devem ser utilizadas pra fazer um servidor, mas sim para buscar algumas ideias para o seu principal.

Quanto ao código está correto.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

38 minutos atrás, lord320 disse:

Já foi informado que as soucers de estudo(TOA & W2PP Master etc...) não devem ser utilizadas pra fazer um servidor, mas sim para buscar algumas ideias para o seu principal.

Quanto ao código está correto.

 

11 horas atrás, kanova01 disse:

O que acontece é que ela retira os com mais pontuação, porém não volta para o personagem poder adicionar novamente .... Alguém consegue dar uma luz? segue o code....

 

 

 

case MESTREHAB:
    {
        if (confirm == 0)
        {
            sprintf(temp, g_pMessageStringTable[_DN_Want_Stat_Init], StatSapphire);
            SendSay(npcIndex, temp);
            break;
        }

        int RetornoHab = 0;
        int NumSappInv = 0;

        for (int i = 0; i < pMob[conn].MaxCarry; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex == 697)
                NumSappInv++;

            else if (pMob[conn].MOB.Carry.sIndex == 4131)
                NumSappInv += 10;

            else if (pMob[conn].MOB.Carry.sIndex == 3336)
                RetornoHab = 1;
        }

        if (NumSappInv < StatSapphire && RetornoHab == 0)
        {
            sprintf(temp, g_pMessageStringTable[_DN_Need_D_Sapphire2], StatSapphire);
            SendSay(npcIndex, temp);
            break;
        }

        if (RetornoHab == 1)
        {
            for (int i = 0; i < pMob[conn].MaxCarry; i++)
            {
                if (pMob[conn].MOB.Carry.sIndex == 3336)
                {
                    memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                    SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                    break;
                }
            }

            goto DiretoReset;
        }
        if (NumSappInv > StatSapphire)
            NumSappInv = StatSapphire;

        for (int i = 0; i < pMob[conn].MaxCarry && NumSappInv > 0; i++)
        {
            if (pMob[conn].MOB.Carry.sIndex == 697)
            {
                memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                NumSappInv--;
            }

            else if (pMob[conn].MOB.Carry.sIndex == 4131 && NumSappInv >= 10)
            {
                memset(&pMob[conn].MOB.Carry, 0, sizeof(STRUCT_ITEM));
                SendItem(conn, ITEM_PLACE_CARRY, i, &pMob[conn].MOB.Carry);

                NumSappInv -= 10;
            }
        }
    DiretoReset:

        int cls = pMob[conn].MOB.Class;

        if (cls < 0 || cls > 3)
            break;

        int resetp = 100;
        int score = pMob[conn].MOB.ScoreBonus;
        int str = pMob[conn].MOB.BaseScore.Str - BaseSIDCHM[cls][0];
        int _int = pMob[conn].MOB.BaseScore.Int - BaseSIDCHM[cls][1];
        int dex = pMob[conn].MOB.BaseScore.Dex - BaseSIDCHM[cls][2];
        int con = pMob[conn].MOB.BaseScore.Con - BaseSIDCHM[cls][3];

        if (str <= resetp)
        {
            pMob[conn].MOB.BaseScore.Str -= str;
            score += str;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Str -= resetp;
            score += resetp;
        }

        if (_int <= resetp)
        {
            pMob[conn].MOB.BaseScore.Int -= _int;
            score += _int;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Int -= resetp;
            score += resetp;
        }

        if (dex <= resetp)
        {
            pMob[conn].MOB.BaseScore.Dex -= dex;
            score += dex;
        }

        else
        {
            pMob[conn].MOB.BaseScore.Dex -= resetp;
            score += resetp;
        }

        if (con <= resetp)
        {
            pMob[conn].MOB.BaseScore.Con -= con;
            score += con;
        }
        else
        {
            pMob[conn].MOB.BaseScore.Con -= resetp;
            score += resetp;
        }

        sprintf(temp, "etc,mestre_hab resetscore 100 name:%s conn:%d", pMob[conn].MOB.MobName, conn);
        Log(temp, "-system", 0);

        BASE_GetBonusScorePoint(&pMob[conn].MOB, &pMob[conn].Extra);
        BASE_GetHpMp(&pMob[conn].MOB, &pMob[conn].Extra);

        SetAffect(conn, 44, 20, 20);

        SendScore(conn);
        SendEtc(conn);
        SendClientMsg(conn, g_pMessageStringTable[_NN_Stat_Initialized]);
    } break;

a função esta funcional, evite fazer testes com personagens editados.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, lord320 disse:

Já foi informado que as soucers de estudo(TOA & W2PP Master etc...) não devem ser utilizadas pra fazer um servidor, mas sim para buscar algumas ideias para o seu principal.

Quanto ao código está correto.

Sim sim lord, foi como base <3

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.