Ir para conteúdo
🥇 [Exclusivo] Seja um Membro VIP EXTREME! ×
  • Quem está por aqui   0 membros estão online

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

NPC Teleporte + controle de IP por área + Desativação de NPC [Source] The New World 759+


Posts Recomendados

-MAGO
Alerta de postagem de qualidade! WebCheats aprovou!

"Conteúdo Excelente, obrigado por compartilhar."

orlandooja recebeu a conquista Conteúdo Excelente e 25 pontos!


Bom dia a todos, eu sou iniciante nessa área de programação, estou aprendendo tudo pela internet e pelo ChatGPT e gostaria de ajudar a área pois esta muito parada.

Muitos estão usando a base [Source] The New World 759+ e eu também, por isso vou disponibilizar um código de NPC de teleporte. 

ele verifica se o player possui Gold (editado como quiser ), também verifica o IP , sendo possível entrar somente 1 vez na Quest por computador. E também pode ser desativado o NPC somente pela source, caso queira uma Quest temporária. 

Esse código tem que ser colocado na parte _MSG_Quest.cpp

Desculpem por qualquer erro, estou aprendendo ainda mas funcionou 100% sem erros.  Espero que ajude alguém.

 

 

#pragma region FELICIA
    case FELICIA:
    {
    #ifdef _WIN32
        __try 
        {
    #endif
            if (EventStatus == 1)// 0 = ATIVO 1 = DESATIVADO {
                SendClientMessage(conn, "Evento Desativado");
                return;
            }

            // Verificação segura da conexão
            if (conn < 0 || conn >= MAX_USER || pUser[conn].Mode != USER_PLAY) {
                printf("[ERRO] Conexão inválida: %d\n", conn);
                return;
            }

            // Área de verificação de IP (coordenadas originais da quest)
            const int QUEST_X1 = 2067, QUEST_X2 = 2155;
            const int QUEST_Y1 = 1973, QUEST_Y2 = 2058;

            // Verificação de IPs na área
            bool ipBloqueado = false;

            for (int z = 0; z < MAX_USER; z++) {
                if (z >= 0 && z < MAX_USER &&
                    pUser[z].Mode == USER_PLAY &&
                    pUser[z].IP == pUser[conn].IP &&
                    z != conn)
                {
                    if (pMob[z].TargetX >= QUEST_X1 && pMob[z].TargetX <= QUEST_X2 &&
                        pMob[z].TargetY >= QUEST_Y1 && pMob[z].TargetY <= QUEST_Y2)
                    {
                        ipBloqueado = true;
                        break;
                    }
                }
            }

            if (ipBloqueado) {
                SendClientMessage(conn, "Limite de 1 conta por IP na área da quest");
                return;
            }

            // Verificação de gold
            if (pMob[conn].MOB.Coin < 50000) {
                SendClientMessage(conn, "Você precisa de 50.000 de gold");
                return;
            }

            // Coordenadas fixas para teleporte
            const int DESTINO_X = 2116 + rand() % 3 - 1;
            const int DESTINO_Y = 2043 + rand() % 3 - 1;

            printf("[QUEST] Teleportando %s para %d %d\n", pMob[conn].MOB.MobName, DESTINO_X, DESTINO_Y);
            SendMsgExp(conn, "Foi teletransportado para a quest!", TNColor::Default, false);
            DoTeleport(conn, DESTINO_X, DESTINO_Y);
        #ifdef _WIN32
        }
                __except (EXCEPTION_EXECUTE_HANDLER) 
                {
                printf("[CRASH] Exceção no NPC FELICIA (conn %d)\n", conn);
                // Log adicional sem usar _exception_info()
                }
        #endif
    } return;
#pragma endregion

 

 

 

Creditos a BnkBrum 

 

Editado por orlandooja
MELHORIAS
  • Curtir 6
  • Amei 1
  • 2 semanas atrás...
  • 3 semanas atrás...
Em 11/05/2025 em 07:22, orlandooja disse:

Bom dia a todos, eu sou iniciante nessa área de programação, estou aprendendo tudo pela internet e pelo ChatGPT e gostaria de ajudar a área pois esta muito parada.

Muitos estão usando a base [Source] The New World 759+ e eu também, por isso vou disponibilizar um código de NPC de teleporte. 

ele verifica se o player possui Gold (editado como quiser ), também verifica o IP , sendo possível entrar somente 1 vez na Quest por computador. E também pode ser desativado o NPC somente pela source, caso queira uma Quest temporária. 

Esse código tem que ser colocado na parte _MSG_Quest.cpp

Desculpem por qualquer erro, estou aprendendo ainda mas funcionou 100% sem erros.  Espero que ajude alguém.

 

 

#pragma region FELICIA
    case FELICIA:
    {
    #ifdef _WIN32
        __try 
        {
    #endif
            if (EventStatus == 1)// 0 = ATIVO 1 = DESATIVADO {
                SendClientMessage(conn, "Evento Desativado");
                return;
            }

            // Verificação segura da conexão
            if (conn < 0 || conn >= MAX_USER || pUser[conn].Mode != USER_PLAY) {
                printf("[ERRO] Conexão inválida: %d\n", conn);
                return;
            }

            // Área de verificação de IP (coordenadas originais da quest)
            const int QUEST_X1 = 2067, QUEST_X2 = 2155;
            const int QUEST_Y1 = 1973, QUEST_Y2 = 2058;

            // Verificação de IPs na área
            bool ipBloqueado = false;

            for (int z = 0; z < MAX_USER; z++) {
                if (z >= 0 && z < MAX_USER &&
                    pUser[z].Mode == USER_PLAY &&
                    pUser[z].IP == pUser[conn].IP &&
                    z != conn)
                {
                    if (pMob[z].TargetX >= QUEST_X1 && pMob[z].TargetX <= QUEST_X2 &&
                        pMob[z].TargetY >= QUEST_Y1 && pMob[z].TargetY <= QUEST_Y2)
                    {
                        ipBloqueado = true;
                        break;
                    }
                }
            }

            if (ipBloqueado) {
                SendClientMessage(conn, "Limite de 1 conta por IP na área da quest");
                return;
            }

            // Verificação de gold
            if (pMob[conn].MOB.Coin < 50000) {
                SendClientMessage(conn, "Você precisa de 50.000 de gold");
                return;
            }

            // Coordenadas fixas para teleporte
            const int DESTINO_X = 2116 + rand() % 3 - 1;
            const int DESTINO_Y = 2043 + rand() % 3 - 1;

            printf("[QUEST] Teleportando %s para %d %d\n", pMob[conn].MOB.MobName, DESTINO_X, DESTINO_Y);
            SendMsgExp(conn, "Foi teletransportado para a quest!", TNColor::Default, false);
            DoTeleport(conn, DESTINO_X, DESTINO_Y);
        #ifdef _WIN32
        }
                __except (EXCEPTION_EXECUTE_HANDLER) 
                {
                printf("[CRASH] Exceção no NPC FELICIA (conn %d)\n", conn);
                // Log adicional sem usar _exception_info()
                }
        #endif
    } return;
#pragma endregion

 

 

 

Creditos a BnkBrum 

 

Amigo, consegue me ajudar a implantar isso? ou um npc como o mestre Grifo para levar jogadores as quests? 

15 horas atrás, combatrw disse:

Amigo, consegue me ajudar a implantar isso? ou um npc como o mestre Grifo para levar jogadores as quests? 

Bom, siga o passo a passo.

1º adicione isso em seu Serve.cpp é não esqueça a declaração no Serve.h
 

É necessário se cadastrar para acessar o conteúdo.


2º Adicione isso no seu MSG_BUY.cpp...

É necessário se cadastrar para acessar o conteúdo.


3º Crie um NPC de venda sua preferencia é edite ele com os seguintes Index:
6000 ao 6014.
É pronto...

  • Curtir 16

Precisa de ajuda?
Fale comigo.
Discord: sc2allin

3 horas atrás, Sc2ALLin disse:

Bom, siga o passo a passo.

1º adicione isso em seu Serve.cpp é não esqueça a declaração no Serve.h
 

É necessário se cadastrar para acessar o conteúdo.


2º Adicione isso no seu MSG_BUY.cpp...

É necessário se cadastrar para acessar o conteúdo.


3º Crie um NPC de venda sua preferencia é edite ele com os seguintes Index:
6000 ao 6014.
É pronto...

Top conteudo

Em 11/05/2025 em 07:22, orlandooja disse:

Bom dia a todos, eu sou iniciante nessa área de programação, estou aprendendo tudo pela internet e pelo ChatGPT e gostaria de ajudar a área pois esta muito parada.

Muitos estão usando a base [Source] The New World 759+ e eu também, por isso vou disponibilizar um código de NPC de teleporte. 

ele verifica se o player possui Gold (editado como quiser ), também verifica o IP , sendo possível entrar somente 1 vez na Quest por computador. E também pode ser desativado o NPC somente pela source, caso queira uma Quest temporária. 

Esse código tem que ser colocado na parte _MSG_Quest.cpp

Desculpem por qualquer erro, estou aprendendo ainda mas funcionou 100% sem erros.  Espero que ajude alguém.

 

 

#pragma region FELICIA
    case FELICIA:
    {
    #ifdef _WIN32
        __try 
        {
    #endif
            if (EventStatus == 1)// 0 = ATIVO 1 = DESATIVADO {
                SendClientMessage(conn, "Evento Desativado");
                return;
            }

            // Verificação segura da conexão
            if (conn < 0 || conn >= MAX_USER || pUser[conn].Mode != USER_PLAY) {
                printf("[ERRO] Conexão inválida: %d\n", conn);
                return;
            }

            // Área de verificação de IP (coordenadas originais da quest)
            const int QUEST_X1 = 2067, QUEST_X2 = 2155;
            const int QUEST_Y1 = 1973, QUEST_Y2 = 2058;

            // Verificação de IPs na área
            bool ipBloqueado = false;

            for (int z = 0; z < MAX_USER; z++) {
                if (z >= 0 && z < MAX_USER &&
                    pUser[z].Mode == USER_PLAY &&
                    pUser[z].IP == pUser[conn].IP &&
                    z != conn)
                {
                    if (pMob[z].TargetX >= QUEST_X1 && pMob[z].TargetX <= QUEST_X2 &&
                        pMob[z].TargetY >= QUEST_Y1 && pMob[z].TargetY <= QUEST_Y2)
                    {
                        ipBloqueado = true;
                        break;
                    }
                }
            }

            if (ipBloqueado) {
                SendClientMessage(conn, "Limite de 1 conta por IP na área da quest");
                return;
            }

            // Verificação de gold
            if (pMob[conn].MOB.Coin < 50000) {
                SendClientMessage(conn, "Você precisa de 50.000 de gold");
                return;
            }

            // Coordenadas fixas para teleporte
            const int DESTINO_X = 2116 + rand() % 3 - 1;
            const int DESTINO_Y = 2043 + rand() % 3 - 1;

            printf("[QUEST] Teleportando %s para %d %d\n", pMob[conn].MOB.MobName, DESTINO_X, DESTINO_Y);
            SendMsgExp(conn, "Foi teletransportado para a quest!", TNColor::Default, false);
            DoTeleport(conn, DESTINO_X, DESTINO_Y);
        #ifdef _WIN32
        }
                __except (EXCEPTION_EXECUTE_HANDLER) 
                {
                printf("[CRASH] Exceção no NPC FELICIA (conn %d)\n", conn);
                // Log adicional sem usar _exception_info()
                }
        #endif
    } return;
#pragma endregion

 

 

 

Creditos a BnkBrum 

 

Show de iniciativa, tem que mais pessoas contribuindo
"Conheceimento não compartilhado é conhecimento nulo"

  • Curtir 2

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.