[DUV]Como Criar Um CMD /entrar Pra Dentro de Um Interior
#1

Bom Galera, Meu Problema й o Seguinte: Eu Tenho Um Icone do No Mapa (Um Icone de Uma Estrela) e Eu Quero Fazer Um Cmd /entrar em cima desse icone, mais ele so pode funcionar em cima desse icone. Ai Vc Digita /entrar e ele te manda pra dentro de Um Interior (No Casso Eu Ja Sei Qual Vai Ser) e Dps um Cmd /sair dento desse interior pra ele voltar Para o Icone da Estrela..

Tipo Oque Tem Na DP Nos Servers de RP, Vc Digita /entrar e ele entra no interior da DP , e Dps /sair e ele sai.

Bom Se Alguem Souber, Da Um Help Aew.
Reply
#2

Bom gabrielbnv, vocк deve primeiro adicionar um If para restringir os comandos que vocк citou б um determinado lugar, criando uma condiзгo para o cуdigo prosseguir, e caso essa condiзгo seja obedecida, uma determinada aзгo serб realizada:

pawn Код:
Adicione no seu(s) comando(s):

if(PlayerToPoint(25.0,playerid,207.5627,-103.7291,1005.2578))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
{
    SetPlayerPos(playerid, 1655.3055,-1341.8470,17.4294);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
    return 1;
}

ou

if(PlayerToPoint(25.0,playerid,207.5627,-103.7291,1005.2578)){SetPlayerPos(playerid, 1655.3055,-1341.8470,17.4294);return 1;}

//O cуdigo acima й o mesmo esquema do outro. Troque as coordenadas do SetPlayerPos para as de onde o jogador irб, e o PlayerToPoint por as de onde o jogador deve ficar para utilizar o comando.
Espero ter ajudado
Reply
#3

Quando Eu Boto PLayerToPoint da Erro Function Is Not Implemented =/
Reply
#4

Quote:
Originally Posted by gabrielbnv
Посмотреть сообщение
Quando Eu Boto PLayerToPoint da Erro Function Is Not Implemented =/
Desculpe, eu nгo sabia que o seu gamemode nгo tinha essa funзгo =/


Hб 2 jeitos de resolver isso :


1 - Troque as palavras PlayerToPoint por IsPlayerInRangeOfPoint.

ou

2 - Coloque no Final do seu gamemode:

pawn Код:
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        tempposx = (oldposx -x);
        tempposy = (oldposy -y);
        tempposz = (oldposz -z);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return 1;
        }
    }
    return 0;
}
Reply
#5

Mano Agora As Funзхes Foram, So Falta 1 Pekeno Detalhe, Como Arrumo Isso: error 030: compound statement not closed at the end of file (started at line 490)

Aki Comeзa a Linha 490:

public OnPlayerCommandText(playerid, cmdtext[])//executa comandos
{
//Teleporte
if(strcmp(cmdtext,"/entrar",true)==0)
{
if(IsPlayerInRangeOfPoint(25.0,playerid,1394.1074, 400.7764,19.7944))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
{
SetPlayerPos(playerid, 833.269775,10.588416,1004.179687);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
return 1;
}
}
Reply
#6

Quote:
Originally Posted by gabrielbnv
Посмотреть сообщение
Mano Agora As Funзхes Foram, So Falta 1 Pekeno Detalhe, Como Arrumo Isso: error 030: compound statement not closed at the end of file (started at line 490)

Aki Comeзa a Linha 490:

public OnPlayerCommandText(playerid, cmdtext[])//executa comandos
{
//Teleporte
if(strcmp(cmdtext,"/entrar",true)==0)
{
if(IsPlayerInRangeOfPoint(25.0,playerid,1394.1074, 400.7764,19.7944))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
{
SetPlayerPos(playerid, 833.269775,10.588416,1004.179687);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
return 1;
}
}
Ops, hб uma diferenзa sim entre PlayerToPoint e IsPlayerInRangeOfPoint, pois os parвmetros sгo:


IsPlayerInRangeOfPoint(playerid, Float:range, Float, Float:y, Float:z)

PlayerToPoint(Float:radi, playerid, Float, Float:y, Float:z)



Whatever, aн estб a public OnPlayerCommandText, testada e funcionando

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    //Teleporte
    if (strcmp("/entrar", cmdtext, true, 10) == 0)
    {
        if(IsPlayerInRangeOfPoint(playerid,7.0,1394.1074,400.7764,19.7944))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
        {
            SetPlayerPos(playerid, 833.269775,10.588416,1004.179687);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
            return 1;
        }
        return 1;
    }
    return 0;
}
Reply
#7

Mano Tu e o Cara, Funciono Direitinho, Mais i Agora pra fazer o /sair tem que inverter as posiзoes das coordenadas??
Reply
#8

Quote:
Originally Posted by gabrielbnv
Посмотреть сообщение
Mais i Agora pra fazer o /sair tem que inverter as posiзoes das coordenadas??
Sim, basta inverter as coordenadas do SetPlayerPos e do IsPlayerInRangeOfPoint pois uma equivale б porta de entrada do local e a outra б porta de saнda, e, invertendo essas coordenadas, um precisarб ficar na porta de entrada para ir ao interior e o outro precisarб estar no interior para ir б porta de entrada.


Acho que deu pra entender . Abaixo, como ficaria os 2 comandos no public OnPlayerCommandText

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    //Teleporte
    if (strcmp("/entrar", cmdtext, true, 10) == 0)
    {
        if(IsPlayerInRangeOfPoint(playerid,7.0,1394.1074,400.7764,19.7944))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
        {
            SetPlayerPos(playerid, 833.269775,10.588416,1004.179687);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
            return 1;
        }
        return 1;
    }
    if (strcmp("/sair", cmdtext, true, 10) == 0)
    {
        //Este abaixo й dentro do interior, onde deve ser usado o /sair. Й a mesma coordenada do SetPlayerPos do /entrar.
        if(IsPlayerInRangeOfPoint(playerid,7.0,833.269775,10.588416,1004.179687))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
        {
            //E este abaixo й o local de saнda. Й a mesma coordenada do IsPlayerInRangeOfPoint do /entrar
            SetPlayerPos(playerid, 1394.1074,400.7764,19.7944);//Para onde o jogador irб caso esteja no local (definido acima) e use o comando//
            return 1;
        }
        return 1;
    }
    return 0;
}
Reply
#9

Cara aqui da esse erro mano '-'
Quote:

(431) : warning 202: number of arguments does not match definition
(433) : warning 202: number of arguments does not match definition

pawn Код:
429  if (strcmp("/pain-entrar", cmdtext, true, 10) == 0)
430     {
431      if(IsPlayerInRangeOfPoint(playerid,-684.516723,939.620910,13.632812))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
432        {
433         SetPlayerPos(playerid,1 ,-794.806396,497.738037,1376.195312);//Para onde o jogador irб     caso esteja no local (definido acima) e use o comando//
434            return 1;
435        }
436        return 1;
437    }
Reply
#10

pawn Код:
429  if (strcmp("/pain-entrar", cmdtext, true, 10) == 0)
430     {
431      if(IsPlayerInRangeOfPoint(playerid,-684.516723,939.620910,13.632812))//Retrito б esse local, coloque as coordenadas do local onde o comando deve ser usado.
432        {
433         SetPlayerPos(playerid,1 ,-794.806396,497.738037,1376.195312);//Para onde o jogador irб     caso esteja no local (definido acima) e use o comando//
434            return 1;
435        }
436        return 1;
437    }
Amigo vc esqueceu do ratio ali em cima: Iria ficas assim:

pawn Код:
if (strcmp("/pain-entrar", cmdtext, true, 10) == 0)
    {
        if(IsPlayerInRangeOfPoint(playerid,7.0,-684.516723,939.620910,13.632812))
        {
            SetPlayerPos(playerid,-794.806396,497.738037,1376.195312);
            return 1;
        }
        return 1;
    }
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)