Ir para conteúdo
Faça parte da equipe! (2025) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • 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+


 Compartilhar

Posts Recomendados

-MAGO
Alerta de post 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
Link para o comentário
Compartilhar em outros sites

  • 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? 

Link para o comentário
Compartilhar em outros sites

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...

Precisa de ajuda?
Fale comigo.
Discord: sc2allin

Link para o comentário
Compartilhar em outros sites

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"

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

 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.