[Ajuda]comandos de teleportes
#1

Tenho um gm aqui ele tem varios teleportes, so que os teleportes quando o player digita o comando o player e teleportado na hora, e tem muitos players que se aproveitгo disso em batalhas quando estгo morrendo, gostaria que alguem me ajuda-se queria que o player levase uns 5 seg depois de digita o comando, e gostaria de bota que o player nao poderia se mover nesses 5 seg.

Se alguem souber me ajuda eu agradeзo xD.
Reply
#2

nгo entendi muito bem, vocк quer que quando o player entre em um x1, qualquer comando que tenha como funзгo teleportar, nгo funcione?
Reply
#3

Nгo eu quero que funcione mais demore tipo 5 segundos para ele ser teleportado, e durrante esses 5 segundos o player noa pode se mover.
Por exemplo ele digita /x1 dae aparece uma mensagem no chat "Nгo se mova vocк sera teleportado".
Reply
#4

No comeзo do Gamemode:

Code:
new Float: posX, Float: posY,Float: posZ;
forward Teleportando(playerid);
OnPlayerCommandText:

Code:
if(strcmp(cmdtext,"/teleport",true) == 0)
{
   GetPlayerPos(playerid,posX,posY,posZ);
   SetTimerEx("Teleportando",5000,false,"d",playerid);
   SendClientMessage(playerid,0xFFFF56,"Teleportando em 5 segundos. Nгo se mova nestes instantes!");
   return 1;
}
Fim do GameMode:

Code:
public Teleportando(playerid)
{
   new Float:x,Float:y,Float:z;
   GetPlayerPos(x,y,z);
   if(posX,posY,posZ != x,y,z) return SendClientMessage(playerid,0xFFFFFF,"Vocк nгo ficou na mesma posiзгo e nгo foi teleportado.");
   else
   {
       SetPlayerPos(playerid,Coordenada Desejada aqui);
       SendClientMessage(playerid,0xFFFFFF,"Teleportado com sucesso!");
   }
   return 1;
}
Espero Ter ajudado
Reply
#5

Quote:
Originally Posted by Smigol
View Post
Tenho um gm aqui ele tem varios teleportes, so que os teleportes quando o player digita o comando o player e teleportado na hora, e tem muitos players que se aproveitгo disso em batalhas quando estгo morrendo, gostaria que alguem me ajuda-se queria que o player levase uns 5 seg depois de digita o comando, e gostaria de bota que o player nao poderia se mover nesses 5 seg.

Se alguem souber me ajuda eu agradeзo xD.
Pra mim nгo existe,Nem ferrando,Nem tem como

Vamos ver se outra pessoa sabe para te ajudar
Reply
#6

pawn Code:
new tTemp[MAX_PLAYERS char];

stock OnTele(pid, txt[])
{
    if(tTemp{pid} != 0 && tTemp{pid} - gettime() < 5)
        return SendClientMessage(pid, -1,"Espere 5 Segundos!");
       
    SendClientMessage(pid, -1,"Espere alguns seguindos para ir stй o seu teleporte.");
    SetTimerEx("ToTele", 5000, false, "is", pid, txt);
    tTemp{pid} = gettime();
    return 1;
}

ToTele(pl, tel[]);
public ToTele(pl, tel[])
{
    if(IsPlayerConnected(pl))
    {
        #if !defined _zcmd_included
        CallLocalFunction("OnPlayerCommandText", "is", pl, tel);
        #else
        static
            str[128];
        format(str, sizeof(str),"cmd_%s(%i, %i)", tel, pl, "params");
        CallLocalFunction(str, "");
        #endif
        tTemp{pl} = 0;
    }
    return 1;
}
Coloque isto "OnTele(playerid, cmdtext);" Dentro do comando que for executado.
  • Caso for comando primбrio(usando comparador de strings *strcmp*):
    • pawn Code:
      if(!strcmp(cmdtext,"/corrida", true))
          {
              OnTele(playerid, cmdtext);
             
              // Funзхes do comando aqui...
              return 1;
          }
  • Caso for comando com uso do processador ZCMD
    • pawn Code:
      CMD:corrida(playerid, params[])
      {
          OnTele(playerid, params);
         
          // Funзхes do comando aqui ..
          return 1;
      }
Crйditos: meol.
Reply
#7

Duvida

Caroline o Que й char?

que voce criou ali new tTemp[MAX_PLAYERS char];
Reply
#8

Quote:
Originally Posted by ReDKiiL
View Post
Duvida

Caroline o Que й char?

que voce criou ali new tTemp[MAX_PLAYERS char];

Usa-se char para transformar o nъmero de cells de uma variбvel array no menor nъmero de cells capaz de armazenar a mesma quantidade de valores que aquela mas usando 8 bits (1/4 da cell) para cada valor .


A variбvel array abaixo, que tem 1 cell :


pawn Code:
new x[1];

Pode armazenar apenas 1 letra/nъmero normal e 4 valores packed (valores armazenados por partнculas de 8 bits, ou seja, por 1/4 (um quarto) de cell).




Mas como isso й possнvel ? .



Bem, cada cell de uma array tem 4 bytes de tamanho e cada letra ou nъmero tem 1 byte de tamanho .



Entгo vocк pensa, se 1 byte de uma cell de array pode armazenar 1 byte de valor numйrico ou alfabйtico, entгo pra que os outros 3 bytes ? .



Os outros 3 bytes (ou uma parcela deles) serгo utilizados quando o valor numйrico ou alfabйtico que se quer armazenar for maior que 255 (as letras/nъmeros que citei antes eram os menores ou iguais a 255/da Tabela ASCII ), pois nesse caso, ele terб um nъmero de bits em sua composiзгo binбria maior, e consequentemente, um tamanho maior .


Entгo, ao armazenar valores daquele tipo a cell apenas passa a usar 100% de sua capacidade .


Em compensaзгo, elas acabam podendo armazenar apenar valores menores ou iguais a 255, incluindo todos os valores da tabela ASCII .



Exemplo:


pawn Code:
new o[4 char];  //Ou new o[1];  pois basicamente o char divide a quantidade atual de cells por 4.
o{0} = 5;
o{1} = 6;
o{2} = 7;
o{3} = 8;
//o{4} geraria um error, pois todas as partes (de 1/4 cada uma) da cell jб teriam sido utilizadas.
printf("%i", o{2});  //Imprimirб o nъmero 7


Espero ter ajudado .
Reply
#9

Bom no caso do ".Unnamed" ocorreu os seguintes erros.

pawn Code:
(4222) : warning 213: tag mismatch
(4222) : warning 202: number of arguments does not match definition
Callback(public):

pawn Code:
public Teleportando(playerid)
{
   new Float:x,Float:y,Float:z;
   GetPlayerPos(x,y,z); //Linha do erro.
   if(posX,posY,posZ != x,y,z) return SendClientMessage(playerid,0xFFFFFF,"Vocк nгo ficou na mesma posiзгo e nгo foi teleportado.");
   else
   {
       SendClientMessage(playerid,0xFFFFFF,"Teleportado com sucesso!");
   }
   return 1;
}
Reply
#10

pawn Code:
public Teleportando(playerid)
{
   new Float:x,Float:y,Float:z;
   GetPlayerPos(playerid,x,y,z); //Linha do erro.
   if(posX != x && posY != y && posZ !=z) return SendClientMessage(playerid,0xFFFFFF,"Vocк nгo ficou na mesma posiзгo e nгo foi teleportado.");
   SendClientMessage(playerid,0xFFFFFF,"Teleportado com sucesso!");
   SetPlayerPos(playerid,Coordenada Desejada aqui);
   return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)