[AJUDA]NPC falar ao jogador
#1

olб gente! eu vi isso em um servidor russo a algum tempo, eu quero q quando o jogador chegue perto do meu npc, o npc diga: olб eu sou um robф. bom conhecer vocк!
ah e tbm queria algum comando que faзa aparecer na lista de players por exemplo:
Joao(bot)
pq ta identificando q tem dois players online mas nao aparece na lista.
disseram q isso eh impossivel mas nao eh, pq tbm vi em um server.
desde jб agradeзo!
Reply
#2

estuda esse bar do SuB_ZeRo0_ tem um sistema que o bot fala, dai sу adptar ao seu gm.
Reply
#3

valeu aн amigo mas deste jeito o npc fala quando o jogador digita certa palavra.
eu quero que quando o jogador chegue perto, o Bot diga.
terei que usar range of point, mas nгo sei mexer direito com isso.
Reply
#4

Bot й igual a um player, use GetPlayerPos no bot ou use estб funзгo:
pawn Code:
stock GetNearestBot(playerid, Float:abstand)
{
    new Float:pX, Float:pY, Float:pZ, Float:vX, Float:vZ, Float:vY;
    GetPlayerPos(playerid, pX, pY, pZ);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
        GetPlayerPos(i, vX, vY, vZ);
        if(floatabs(pX-vX) < abstand && floatabs(pY-vY) < abstand && floatabs(pZ-vZ) < abstand &&  i != playerid)
        {
            return i;
        }
    }
    }
    return 9999;
}
E o SendClientMenssage com vamos supor, uma tag de [BOT] na frente ou use simplesmente o GetPlayerName.
Reply
#5

nгo consegui entender, este code que vocк me mandou faz o quк?
Reply
#6

Quote:
Originally Posted by Detonador
View Post
nгo consegui entender, este code que vocк me mandou faz o quк?
Geta a pos do NPC mais prуximo .
Reply
#7

e manda a mensagem?
Reply
#8

Quote:
Originally Posted by Detonador
View Post
e manda a mensagem?
No, ai vocк tem que usar o SendClientMenssage .
Reply
#9

como assim amigo?
nгo pode me mandar o code completo?
Reply
#10

kra ,n entendi direito como funciona essa funзгo, mas se for como eu to pensando, acho q poderia ser assim

pawn Code:
public OnPlayerUpdate(playerid)
{
  if(GetNearestBot(playerid, Float:1.0)) // Acho que a distвncia й definida assim
  {
  SendClientMessage(playerid, -1, [BOT] Oi, eu sou um robф);
  }
  return 1;
}

stock GetNearestBot(playerid, Float:abstand)
{
    new Float:pX, Float:pY, Float:pZ, Float:vX, Float:vZ, Float:vY;
    GetPlayerPos(playerid, pX, pY, pZ);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
        GetPlayerPos(i, vX, vY, vZ);
        if(floatabs(pX-vX) < abstand && floatabs(pY-vY) < abstand && floatabs(pZ-vZ) < abstand &&  i != playerid)
        {
            return i;
        }
    }
    }
    return 9999;
}
Nгo sei se ta certo, tente ai
Reply
#11

Quote:
Originally Posted by KinX
View Post
kra ,n entendi direito como funciona essa funзгo, mas se for como eu to pensando, acho q poderia ser assim

pawn Code:
public OnPlayerUpdate(playerid)
{
  if(GetNearestBot(playerid, Float:1.0)) // Acho que a distвncia й definida assim
  {
  SendClientMessage(playerid, -1, [BOT] Oi, eu sou um robф);
  }
  return 1;
}

stock GetNearestBot(playerid, Float:abstand)
{
    new Float:pX, Float:pY, Float:pZ, Float:vX, Float:vZ, Float:vY;
    GetPlayerPos(playerid, pX, pY, pZ);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
        GetPlayerPos(i, vX, vY, vZ);
        if(floatabs(pX-vX) < abstand && floatabs(pY-vY) < abstand && floatabs(pZ-vZ) < abstand &&  i != playerid)
        {
            return i;
        }
    }
    }
    return 9999;
}
Nгo sei se ta certo, tente ai
Corrigindo :
pawn Code:
public OnPlayerUpdate(playerid)
{
    if(GetNearestBot(playerid, 5.0))
    {
        SendClientMessage(playerid, -1, "[BOT] Oi, eu sou um robф"); //Mensagem do BOT
    }
    return 1;
}

stock GetNearestBot(playerid, Float:abstand)
{
    new Float:pX, Float:pY, Float:pZ, Float:vX, Float:vZ, Float:vY;
    GetPlayerPos(playerid, pX, pY, pZ);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i))
    {
        GetPlayerPos(i, vX, vY, vZ);
        if(floatabs(pX-vX) < abstand && floatabs(pY-vY) < abstand && floatabs(pZ-vZ) < abstand &&  i != playerid)
        {
            return i;
        }
    }
    }
    return -1;
}
Reply
#12

Nossa, esqueci o " " ali kkkk, vlw por corrigir cidadenovarp ^^
Reply
#13

Quote:
Originally Posted by KinX
View Post
Nossa, esqueci o " " ali kkkk, vlw por corrigir cidadenovarp ^^
Nads .
Reply
#14

galerinha, mas eu preciso pegar o nome do bot. tem q ser por exemplo, se eu chego perto do joao, ele fala oi eu sou o joao, um robo
se eu chego perto do joca, ele fala eu nao sou o joao, sou o joca, e tbm sou um robo
blz? vlws ae
Reply
#15

alguem ajuda pf?
Reply
#16

Eu fiz um sistema desses para o meu servidor que estava fazendo a alguns meses atrбs.

Basta usar a OnPlayerText, depois usar strcmp ou strfind para checar oque o jogador digitou e checar a distвncia com IsPlayerInRangeOfPoint.

Abraзos.
Reply
#17

Quote:
Originally Posted by Los
View Post
Eu fiz um sistema desses para o meu servidor que estava fazendo a alguns meses atrбs.

Basta usar a OnPlayerText, depois usar strcmp ou strfind para checar oque o jogador digitou e checar a distвncia com IsPlayerInRangeOfPoint.

Abraзos.
ja tentei isso amigao! talvez seja pq eu nao estou conseguindo formular o code certo.
eu tentei fazendo, mas tipo, o npc ficava mandando a msg o tempo todo, mesmo sem eu estar perto dele.
Reply
#18

Quote:
Originally Posted by Detonador
View Post
ja tentei isso amigao! talvez seja pq eu nao estou conseguindo formular o code certo.
eu tentei fazendo, mas tipo, o npc ficava mandando a msg o tempo todo, mesmo sem eu estar perto dele.
Mostre o cуdigo que usou.
Reply
#19

pawn Code:
new IsNear[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(YOUR_NPC_ID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,3.0,x,y,z) && IsNear[playerid] == 0)
    {
        SendClientMessage(playerid,0xFFFFFFFF,"ola eu sou um bot! bom conhecer vc!");
        IsNear[playerid] = 1;
    }
    else
    {
        IsNear[playerid] = 0;
    }
    return 1;
}
eu axei esse na net e eu testei, mas como eu tinha te dito, nao funcionou.
e outra coisa, eu queria que por exemplo, o nome do npc й Joao, quando o jogador chegasse perto dele, aparecesse:
Joao(Bot) diz: oi eu sou um bot! bom conhecer vocк!
vlws aguardo sua ajuda!
Reply
#20

Quote:
Originally Posted by Detonador
View Post
pawn Code:
new IsNear[MAX_PLAYERS];

public OnPlayerUpdate(playerid)
{
    new Float:x,Float:y,Float:z;
    GetPlayerPos(YOUR_NPC_ID,x,y,z);
    if(IsPlayerInRangeOfPoint(playerid,3.0,x,y,z) && IsNear[playerid] == 0)
    {
        SendClientMessage(playerid,0xFFFFFFFF,"ola eu sou um bot! bom conhecer vc!");
        IsNear[playerid] = 1;
    }
    else
    {
        IsNear[playerid] = 0;
    }
    return 1;
}
eu axei esse na net e eu testei, mas como eu tinha te dito, nao funcionou.
e outra coisa, eu queria que por exemplo, o nome do npc й Joao, quando o jogador chegasse perto dele, aparecesse:
Joao(Bot) diz: oi eu sou um bot! bom conhecer vocк!
vlws aguardo sua ajuda!
pawn Code:
public OnPlayerText(playerid, text[])
{
    if(strcmp(text, "Oi")
    {
        if(IsPlayerInRangeOfPoint(playerid, /*X*/, /*Y*/, /*Z*/))//Coordenadas do bot
        {
            SendClientMessage(playerid,0xFFFFFFFF,"Joгo(BOT) diz: Ola eu sou um bot! bom conhecer vc!");
        }
    }
    return 0;
}
E assim vai indo. Se quiser pode usar SetPlayerChatBubble tambйm.

Boa sorte.
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)