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

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

NPC ENTREGANDO ITENS COM ADD


Posts Recomendados

Ola bom dia  alguém teria como me dizer como faço  para certo NPC entrar itens com add 

 

vo pega como exemplo o NPC Treinadora ( source Xwyd)

 

no NPC treinadora aparece o add correto que eu quero , mais quando eu compra certo item ele vem +0 sem add

 

 

 

 

cJx4xPb.png

 

 

 

 

#pragma region Recicladora troca 4
        if (npc->Mob.Inventory[packet->sellSlot].Index == 939) // Treinadora
        {
            if (userData->Ingame.LastClicked != packet->sellSlot)
            {
                userData->Ingame.LastClicked = packet->sellSlot;
                SendClientMessage(client, Language::instance().getStringFormat(ComporItem, pItem->Name));
                return true;
            }

            if (slot == -1)
            {
                SendClientMessage(client, "Seu inventário estar cheio.");
                return true;
            }

            if (Andarilho == 3467)
                Loop += 15;

            if (Andarilho_2 == 3467)
                Loop += 15;

            int amount = 0;

            for (int i = 0; i < Loop; i++)
            {
                if (mob->Mob.Inventory.Index == 524 && amount <= 1)
                    amount += Func::GetItemAmount(&mob->Mob.Inventory);
            }

            if (amount < 1)
            {
                SendClientMessage(client, "Estar faltando algum item.");
                return true;
            }

            if (amount > 1)
                amount = 1;

            for (int i = 0; i < amount; i++)
            {
                int slot = Func::GetFirstSlot(client, SlotType::Inventory, 524);
                Func::AmountMinus(&mob->Mob.Inventory[slot]);
                SendItem(client, (uint16_t)SlotType::Inventory, slot, &mob->Mob.Inventory[slot]);
            }


            STRUCT_ITEM itemSend = { 939, 43 , 9 , 0 , 0 ,0 , 0 };
            PutItem(client, &itemSend);
            SendEtc(client);
            return true;

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/
Compartilhar em outros sites

deve ta faltando o hook da correção da entrega dos itens com add...

Precisa de ajuda?
Fale comigo.
Discord: sc2allin

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162401
Compartilhar em outros sites

2 horas atrás, Sc2ALLin disse:

deve ta faltando o hook da correção da entrega dos itens com add...

você teria esse Hook da  coreção , ou  sabe de alguma source que tenha "

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162403
Compartilhar em outros sites

53 minutos atrás, Fallem disse:

você teria esse Hook da  coreção , ou  sabe de alguma source que tenha "

geralmente tem na MW...

  • Curtir 1

Precisa de ajuda?
Fale comigo.
Discord: sc2allin

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162407
Compartilhar em outros sites

outra dúvida .... alguém poderia me explicar como funcinar esse  código  , peguei a source XWYD para estudos . porem  quando eu registro a pista +0  entrar normal

mais quando eu mato os lich nao refina a pista.     . se alguém souber e tiver como ajuda eu ficaria muito grato  meu discord:  SpanFrank#7748  pode  pode me chama no PV tbm . obg

 

na source XWYD nao achei 

 

STRUCT_ITEM NextPista;
                                        memset(&NextPista, 0, sizeof(STRUCT_ITEM));

                                        NextPista.sIndex = 5134;
                                        NextPista.stEffect[0].cEffect = 43;
                                        NextPista.stEffect[0].cValue = 1;

 

 

 

 

#nesse código aki nao achei onde fala da refinação da pista  #  estou começando a estuda esse contéudo 

 

 

namespace ClueLevel
{

    Lich::Lich()
    {
    }
    Lich::~Lich()
    {
    }

    bool Lich::onGroupRegistered(const uint16_t masterId)
    {
        if (getGroupCount() > 1)
            return false;

        bool containsGroup = false;

        foreachGroup([&containsGroup, &masterId](uint16_t otherGroup) {
            if (otherGroup == masterId)
                containsGroup = true;
        });
        if (containsGroup)
            return false;

        addGroup(masterId);
        return true;
    }

    void Lich::onClueReset()
    {
        if (getGroupCount() == 0)
            return;

        for (int client = 0; client < MAX_USER; client++)
        {
            auto user = Func::GetUserFromIndex(client);
            auto mob = GetMobFromIndex(client);

            auto play = Func::getPlayerinArea({ 3330, 1600 }, { 3451, 1661 });

            if (play.size() > 0)
            {
                for (auto& i : play)
                    DoTeleport(i, 3284 + rand() % 2, 1685 + rand() % 2, 0);
            }
            
            auto play2 = Func::getPlayerinArea({ 3330, 1600 }, { 3451, 1661 });

            if (play2.size() > 0)
            {
                for (auto& i : play2)
                    DoTeleport(i, 3284 + rand() % 2, 1685 + rand() % 2, 0);
            }


        }
        resetGroups();
        killLichAll(true);
    }

    void Lich::onClueStart()
    {
        if (getGroupCount() == 0)
            return;

        uint8_t idx = 0;

        foreachGroup([&idx](uint16_t masterId) {
            
            auto userData = &Global::userData[masterId];

            if (idx == 0)
                Func::partyTeleportUxmal(masterId, 3347, 1605, 0);
            //Func::executeForParty(masterId, [&idx](uint16_t member){DoTeleport(member, 3347, 1605, 0); });
            else
                Func::partyTeleportUxmal(masterId, 3406, 1605, 0);
            //Func::executeForParty(masterId, [&idx](uint16_t member){DoTeleport(member, 3406, 1605, 0); });

            Logs::sendLog(Global::pistalog, "[Enter] -> Grupo do %s Entrou na Pista de Lich.", GetMobFromIndex(masterId)->Mob.Name);

            idx++;
        });

        Logs::sendLog(Global::pistalog, "[GroupCounter] -> Número de Grupo Registrado na Pista de Lich %d", getGroupCount());

        spawnLichEsq();
        spawnLichDir();
    }

    bool Lich::onMobKilled(const uint16_t masterId, const uint16_t mobId)
    {
        bool containsGroup = false;

        auto mob = GetMobFromIndex(mobId);
        auto play = GetMobFromIndex(masterId);
        auto rnd = Rnd::instance().IRandomX(0, 100);

        if (!strcmp(mob->Mob.Name, "Lich Infernal"))
        {
            if (rnd >= 25 && rnd <= 32)
            {
                Func::executeForParty(masterId, [](int32_t member) {

                    STRUCT_ITEM runas[5] = {
                        { 5110, 0, 0, 0, 0, 0, 0 },
                        { 5112, 0, 0, 0, 0, 0, 0 },
                        { 5115, 0, 0, 0, 0, 0, 0 },
                        { 5113, 0, 0, 0, 0, 0, 0 },
                        { 5111, 0, 0, 0, 0, 0, 0 },
                    };

                    if (Func::checkPlayerLiveInArea(member, { 3330, 1600 }, { 3451, 1661 }) == TRUE) PutItem(member, &runas[rand() % 5]);

                });

                Func::sendPistaLider(masterId, { 3330, 1600 }, { 3451, 1661 }, 1);
                Logs::sendLog(Global::pistalog, "[Winner] -> Grupo do %s ganhou a pista de Lich lado Direito.", play->Mob.Name);

                killLichAll(true);
                return true;
            }
            killLichEsq(true);
            spawnLichEsq();
            return false;
        }

        if (!strcmp(mob->Mob.Name, "Lich Infernal "))
        {
            if (rnd >= 25 && rnd <= 32)
            {
                Func::executeForParty(masterId, [](int32_t member) {

                    STRUCT_ITEM runas[5] = {
                        { 5110, 0, 0, 0, 0, 0, 0 },
                        { 5112, 0, 0, 0, 0, 0, 0 },
                        { 5115, 0, 0, 0, 0, 0, 0 },
                        { 5113, 0, 0, 0, 0, 0, 0 },
                        { 5111, 0, 0, 0, 0, 0, 0 },
                    };

                    if (Func::checkPlayerLiveInArea(member, { 3330, 1600 }, { 3451, 1661 }) == TRUE) PutItem(member, &runas[rand() % 5]);

                });
                Func::sendPistaLider(masterId, { 3330, 1600 }, { 3451, 1661 }, 1);

                Logs::sendLog(Global::pistalog, "[Winner] -> Grupo do %s ganhou a pista de Lich lado Esquerdo.", play->Mob.Name);
                killLichAll(true);
                return true;
            }
            killLichDir(true);
            spawnLichDir();
            return false;
        }
        return false;
    }

    bool Lich::onMovimented(const uint16_t masterId, const uint16_t destX, const uint16_t destY)
    {
        bool containsGroup = false;

        return true;
    }

    void Lich::killLichEsq(bool updatePlayerSight)
    {
        auto liveMobs = Func::getMobsInAreaStr({ 3330, 1600 }, { 3390, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::killLichDir(bool updatePlayerSight)
    {
        auto liveMobs = Func::getMobsInAreaStr({ 3388, 1601 }, { 3451, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::killLichAll(bool updatePlayerSight)
    {
        // 3451 1645
        auto liveMobs = Func::getMobsInAreaStr({ 3330, 1600 }, { 3451, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::spawnLichEsq()
    {
        static const STRUCT_POSITION spawn_pos[3] =
        {
            { 3368, 1634 }, { 3357, 1621 }, { 3355, 1637 },
        };

        auto rnd = Rnd::instance().IRandomX(0, 2);

        for (auto x = 0; x < 7; x++)// esse loop faz a quantidade de Lich
            CreateMob("Lich_Infernal", spawn_pos[rnd].X, spawn_pos[rnd].Y, "clue_of_runes/Lich", 0); // Lado Esquerdo

    }

    void Lich::spawnLichDir()
    {
        static const STRUCT_POSITION spawn_pos[3] =
        {
            { 3423, 1632 }, { 3413, 1623 }, { 3411, 1632 },

        };

        auto rnd = Rnd::instance().IRandomX(0, 2);

        for (auto x = 0; x < 7; x++)// esse loop faz a quantidade de Lich
            CreateMob("Lich_Infernal_", spawn_pos[rnd].X, spawn_pos[rnd].Y, "clue_of_runes/Lich", 0); // Lado Direito

    }

    void Lich::onSpawnBoss()
    {

    }

    void Lich::onPlayerTimer()
    {
    }

} // end namespace ClueLevel

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162446
Compartilhar em outros sites

22 horas atrás, Fallem disse:

outra dúvida .... alguém poderia me explicar como funcinar esse  código  , peguei a source XWYD para estudos . porem  quando eu registro a pista +0  entrar normal

mais quando eu mato os lich nao refina a pista.     . se alguém souber e tiver como ajuda eu ficaria muito grato  meu discord:  SpanFrank#7748  pode  pode me chama no PV tbm . obg

 

na source XWYD nao achei 

 

STRUCT_ITEM NextPista;
                                        memset(&NextPista, 0, sizeof(STRUCT_ITEM));

                                        NextPista.sIndex = 5134;
                                        NextPista.stEffect[0].cEffect = 43;
                                        NextPista.stEffect[0].cValue = 1;

 

 

 

 

#nesse código aki nao achei onde fala da refinação da pista  #  estou começando a estuda esse contéudo 

 

 

namespace ClueLevel
{

    Lich::Lich()
    {
    }
    Lich::~Lich()
    {
    }

    bool Lich::onGroupRegistered(const uint16_t masterId)
    {
        if (getGroupCount() > 1)
            return false;

        bool containsGroup = false;

        foreachGroup([&containsGroup, &masterId](uint16_t otherGroup) {
            if (otherGroup == masterId)
                containsGroup = true;
        });
        if (containsGroup)
            return false;

        addGroup(masterId);
        return true;
    }

    void Lich::onClueReset()
    {
        if (getGroupCount() == 0)
            return;

        for (int client = 0; client < MAX_USER; client++)
        {
            auto user = Func::GetUserFromIndex(client);
            auto mob = GetMobFromIndex(client);

            auto play = Func::getPlayerinArea({ 3330, 1600 }, { 3451, 1661 });

            if (play.size() > 0)
            {
                for (auto& i : play)
                    DoTeleport(i, 3284 + rand() % 2, 1685 + rand() % 2, 0);
            }
            
            auto play2 = Func::getPlayerinArea({ 3330, 1600 }, { 3451, 1661 });

            if (play2.size() > 0)
            {
                for (auto& i : play2)
                    DoTeleport(i, 3284 + rand() % 2, 1685 + rand() % 2, 0);
            }


        }
        resetGroups();
        killLichAll(true);
    }

    void Lich::onClueStart()
    {
        if (getGroupCount() == 0)
            return;

        uint8_t idx = 0;

        foreachGroup([&idx](uint16_t masterId) {
            
            auto userData = &Global::userData[masterId];

            if (idx == 0)
                Func::partyTeleportUxmal(masterId, 3347, 1605, 0);
            //Func::executeForParty(masterId, [&idx](uint16_t member){DoTeleport(member, 3347, 1605, 0); });
            else
                Func::partyTeleportUxmal(masterId, 3406, 1605, 0);
            //Func::executeForParty(masterId, [&idx](uint16_t member){DoTeleport(member, 3406, 1605, 0); });

            Logs::sendLog(Global::pistalog, "[Enter] -> Grupo do %s Entrou na Pista de Lich.", GetMobFromIndex(masterId)->Mob.Name);

            idx++;
        });

        Logs::sendLog(Global::pistalog, "[GroupCounter] -> Número de Grupo Registrado na Pista de Lich %d", getGroupCount());

        spawnLichEsq();
        spawnLichDir();
    }

    bool Lich::onMobKilled(const uint16_t masterId, const uint16_t mobId)
    {
        bool containsGroup = false;

        auto mob = GetMobFromIndex(mobId);
        auto play = GetMobFromIndex(masterId);
        auto rnd = Rnd::instance().IRandomX(0, 100);

        if (!strcmp(mob->Mob.Name, "Lich Infernal"))
        {
            if (rnd >= 25 && rnd <= 32)
            {
                Func::executeForParty(masterId, [](int32_t member) {

                    STRUCT_ITEM runas[5] = {
                        { 5110, 0, 0, 0, 0, 0, 0 },
                        { 5112, 0, 0, 0, 0, 0, 0 },
                        { 5115, 0, 0, 0, 0, 0, 0 },
                        { 5113, 0, 0, 0, 0, 0, 0 },
                        { 5111, 0, 0, 0, 0, 0, 0 },
                    };

                    if (Func::checkPlayerLiveInArea(member, { 3330, 1600 }, { 3451, 1661 }) == TRUE) PutItem(member, &runas[rand() % 5]);

                });

                Func::sendPistaLider(masterId, { 3330, 1600 }, { 3451, 1661 }, 1);
                Logs::sendLog(Global::pistalog, "[Winner] -> Grupo do %s ganhou a pista de Lich lado Direito.", play->Mob.Name);

                killLichAll(true);
                return true;
            }
            killLichEsq(true);
            spawnLichEsq();
            return false;
        }

        if (!strcmp(mob->Mob.Name, "Lich Infernal "))
        {
            if (rnd >= 25 && rnd <= 32)
            {
                Func::executeForParty(masterId, [](int32_t member) {

                    STRUCT_ITEM runas[5] = {
                        { 5110, 0, 0, 0, 0, 0, 0 },
                        { 5112, 0, 0, 0, 0, 0, 0 },
                        { 5115, 0, 0, 0, 0, 0, 0 },
                        { 5113, 0, 0, 0, 0, 0, 0 },
                        { 5111, 0, 0, 0, 0, 0, 0 },
                    };

                    if (Func::checkPlayerLiveInArea(member, { 3330, 1600 }, { 3451, 1661 }) == TRUE) PutItem(member, &runas[rand() % 5]);

                });
                Func::sendPistaLider(masterId, { 3330, 1600 }, { 3451, 1661 }, 1);

                Logs::sendLog(Global::pistalog, "[Winner] -> Grupo do %s ganhou a pista de Lich lado Esquerdo.", play->Mob.Name);
                killLichAll(true);
                return true;
            }
            killLichDir(true);
            spawnLichDir();
            return false;
        }
        return false;
    }

    bool Lich::onMovimented(const uint16_t masterId, const uint16_t destX, const uint16_t destY)
    {
        bool containsGroup = false;

        return true;
    }

    void Lich::killLichEsq(bool updatePlayerSight)
    {
        auto liveMobs = Func::getMobsInAreaStr({ 3330, 1600 }, { 3390, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::killLichDir(bool updatePlayerSight)
    {
        auto liveMobs = Func::getMobsInAreaStr({ 3388, 1601 }, { 3451, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::killLichAll(bool updatePlayerSight)
    {
        // 3451 1645
        auto liveMobs = Func::getMobsInAreaStr({ 3330, 1600 }, { 3451, 1656 }, { 2566 });
        for (auto& i : liveMobs)
        {
            pMob.Mob.BaseStatus.curHP = 0;
            MobKilled(i, i, 0, 0);
        }
    }

    void Lich::spawnLichEsq()
    {
        static const STRUCT_POSITION spawn_pos[3] =
        {
            { 3368, 1634 }, { 3357, 1621 }, { 3355, 1637 },
        };

        auto rnd = Rnd::instance().IRandomX(0, 2);

        for (auto x = 0; x < 7; x++)// esse loop faz a quantidade de Lich
            CreateMob("Lich_Infernal", spawn_pos[rnd].X, spawn_pos[rnd].Y, "clue_of_runes/Lich", 0); // Lado Esquerdo

    }

    void Lich::spawnLichDir()
    {
        static const STRUCT_POSITION spawn_pos[3] =
        {
            { 3423, 1632 }, { 3413, 1623 }, { 3411, 1632 },

        };

        auto rnd = Rnd::instance().IRandomX(0, 2);

        for (auto x = 0; x < 7; x++)// esse loop faz a quantidade de Lich
            CreateMob("Lich_Infernal_", spawn_pos[rnd].X, spawn_pos[rnd].Y, "clue_of_runes/Lich", 0); // Lado Direito

    }

    void Lich::onSpawnBoss()
    {

    }

    void Lich::onPlayerTimer()
    {
    }

} // end namespace ClueLevel

 

Da uma olhada na source do Blast mano, essa do XWYD ta complicado... tem muita coisa bugada.

  • Curtir 1
Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162471
Compartilhar em outros sites

15 horas atrás, Iago Maciel disse:

 

Da uma olhada na source do Blast mano, essa do XWYD ta complicado... tem muita coisa bugada.

vo olhar aki manim obg .

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162483
Compartilhar em outros sites

MDS cara, ainda perdendo tempo nessa xwyd bugada pqp.

Já olhou a guerra de torre e rvr.

Pista kefra tá tudo bugada .

Fora outras coisas que não lembro agora

Link para o comentário
https://www.webcheats.com.br/topic/2275076-npc-entregando-itens-com-add/#findComment-9162548
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
×
×
  • 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.