Portal SAMP
[Pedido] nome dos locais no pelo mapa - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Pedido] nome dos locais no pelo mapa (/showthread.php?tid=4757)



nome dos locais no pelo mapa - André Santos - 07/05/2024

ola amigos gostaria de saber como posso criar algo para aparecer os nomes dos locais onde se passa por exemplo se eu estou em los santos aparecera uma gametxtforplayer dizendo onde estou , nao sei como cria isso ,pelo mapa todo ppois sei que tem os nomes de cada ocal do mapa no samp so nao sei como faco isso , ja testei alma include a_zone mas nao funciona pois foi removido do samp essa funcao


RE: nome dos locais no pelo mapa - pushline - 07/05/2024

Dynamic area com o plugin streamer usando OnPlayerEnterDynamicArea.


RE: nome dos locais no pelo mapa - Burunu - 07/05/2024

(07/05/2024 14:37)André Santos Escreveu: ola amigos gostaria de saber como posso criar algo para aparecer os nomes dos locais onde se passa por exemplo se eu estou em los santos aparecera uma gametxtforplayer dizendo onde estou , nao sei como cria isso ,pelo mapa todo ppois sei que tem os nomes de cada ocal do mapa no samp so nao sei como faco isso , ja testei alma include a_zone mas nao funciona pois foi removido do samp essa funcao

Segue abaixo uma lógica inicial e simples, basta adicionar as coordenadas e mensagens desejadas. Além de alterar para uma GameTextForPLayer.

É apenas uma base, espero que ajude! 

Código:
new Float:CityCoordinates[][3] = {
    // Definir as coordenadas de cada cidade (x, y, z)
    {100.0, 200.0, 15.0}, // Exemplo: coordenadas da cidade 1
    {300.0, 400.0, 15.0}, // Exemplo: coordenadas da cidade 2
    // Adicione mais coordenadas para mais cidades
};

new string:CityMessages[] = {
    // Mensagens para cada cidade
    "Bem-vindo a Los Santos!",
    "Você entrou em San Fierro!",
    // Adicione mais mensagens para mais cidades
};

forward OnPlayerEnterCity(playerid, cityid);

public OnPlayerEnterCity(playerid, cityid)
{
    SendClientMessage(playerid, COLOR_WHITE, CityMessages[cityid]); // Exibir mensagem para o jogador ou troque para uma GameTextForPlayer

    return 1;
}

public OnPlayerUpdate(playerid)
{
    // Verificar se o jogador está próximo a alguma cidade
    for (new cityid = 0; cityid < sizeof(CityCoordinates); cityid++)
    {
        if (IsPlayerInRangeOfPoint(playerid, 100.0, CityCoordinates[cityid][0], CityCoordinates[cityid][1], CityCoordinates[cityid][2]))
        {
            OnPlayerEnterCity(playerid, cityid); // Chamar função para exibir mensagem
            break;
        }
    }
    return 1;
}



RE: nome dos locais no pelo mapa - Mateus Lima - 11/05/2024

(07/05/2024 15:43)Burunu Escreveu:
(07/05/2024 14:37)André Santos Escreveu: ola amigos gostaria de saber como posso criar algo para aparecer os nomes dos locais onde se passa por exemplo se eu estou em los santos aparecera uma gametxtforplayer dizendo onde estou , nao sei como cria isso ,pelo mapa todo ppois sei que tem os nomes de cada ocal do mapa no samp so nao sei como faco isso , ja testei alma include a_zone mas nao funciona pois foi removido do samp essa funcao

Segue abaixo uma lógica inicial e simples, basta adicionar as coordenadas e mensagens desejadas. Além de alterar para uma GameTextForPLayer.

É apenas uma base, espero que ajude! 

Código:
new Float:CityCoordinates[][3] = {
    // Definir as coordenadas de cada cidade (x, y, z)
    {100.0, 200.0, 15.0}, // Exemplo: coordenadas da cidade 1
    {300.0, 400.0, 15.0}, // Exemplo: coordenadas da cidade 2
    // Adicione mais coordenadas para mais cidades
};

new string:CityMessages[] = {
    // Mensagens para cada cidade
    "Bem-vindo a Los Santos!",
    "Você entrou em San Fierro!",
    // Adicione mais mensagens para mais cidades
};

forward OnPlayerEnterCity(playerid, cityid);

public OnPlayerEnterCity(playerid, cityid)
{
    SendClientMessage(playerid, COLOR_WHITE, CityMessages[cityid]); // Exibir mensagem para o jogador ou troque para uma GameTextForPlayer

    return 1;
}

public OnPlayerUpdate(playerid)
{
    // Verificar se o jogador está próximo a alguma cidade
    for (new cityid = 0; cityid < sizeof(CityCoordinates); cityid++)
    {
        if (IsPlayerInRangeOfPoint(playerid, 100.0, CityCoordinates[cityid][0], CityCoordinates[cityid][1], CityCoordinates[cityid][2]))
        {
            OnPlayerEnterCity(playerid, cityid); // Chamar função para exibir mensagem
            break;
        }
    }
    return 1;
}

De forma alguma use isto em sua gamemode, o OnPlayerUpdate é chamada varias vezes por segundo, fora o loop horrivel que está dentro dela, vai lagar demais o seu servidor;

use CreateDynamicRectangle do Streamer para definir a area e o Streamer_SetArrayData para evitar o uso de loopings
e por fim use a callback OnPlayerEnterDynamicArea e OnPlayerLeaveDynamicArea para verificar a entrada e saida respectivamente do player.