[PEDIDO]Teleporte DM
#1

Oi, queria um teleporte DM, tipo assim vc digita /dm ai vc so pode sair do teleporte se morrer ou se vc /kill suicidadar. Obrigado
Reply
#2

Faзa um comando de teleport simples, e procure no forum o resto, afinal..
..quer moleza mastigue бgua ou sente no pudim..Vlw
Reply
#3

tipo, pra fazer que sу pode sair se morrer vocк vai ter que usar um 'if' a mais em todos os comandos, que verificaria se o player esta em combate, vou te explicar como fazer:

/dm:
pawn Код:
//topo do GM
new Combate[MAX_PLAYERS];
new str[256];

//OnPlayerConnect
Combate[playerid] = 0;
//OnPlayerCommandText
if(strcmp(cmdtext,"/dm",true) == 0)
{
   SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);
   SendClientMessage(playerid, COR, "Vocк foi para a batalha e agora sу saira se morrer!");
   Combate[playerid] = 1;
   new jogador[MAX_PLAYER_NAME];
   GetPlayerName(playerid, jogador, sizeof(jogador));
   format(str, sizeof(str), "%s Foi fazer um DM, para ir use /dm", jogador);
   SendClientMessageToAll(COR, str);
   return 1;
}
//OnPlayerDeath
Combate[playerid] = 0;
agora em todos os comandos, exeto o /kill, use o if:
pawn Код:
if(Combate[playerid] == 1) {
fiz rapido, testa ae acho que da certo
Reply
#4

Код:
tipo, pra fazer que sу pode sair se morrer vocк vai ter que usar um 'if' a mais em todos os comandos, que verificaria se o player esta em combate, vou te explicar como fazer:

/dm:
pawn Код:
//topo do GMnew Combate[MAX_PLAYERS];new str[256];//OnPlayerConnectCombate[playerid] = 0;//OnPlayerCommandTextif(strcmp(cmdtext,"/dm",true) == 0){   SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);   SendClientMessage(playerid, COR, "Vocк foi para a batalha e agora sу saira se morrer!");   Combate[playerid] = 1;   new jogador[MAX_PLAYER_NAME];   GetPlayerName(playerid, jogador, sizeof(jogador));   format(str, sizeof(str), "%s Foi fazer um DM, para ir use /dm", jogador);   SendClientMessageToAll(COR, str);   return 1;}//OnPlayerDeathCombate[playerid] = 0;
agora em todos os comandos, exeto o /kill, use o if:
pawn Код:
if(Combate[playerid] == 1) {
fiz rapido, testa ae acho que da certo
O teleporte devera ficar assim?

Код:
 	if(strcmp(cmdtext, "/sniperdm", true) == 0) if(Combate[playerid] == 1) {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s foi para a Sniper DM ( /sniperdm )", pname);
    SendClientMessageToAll(COR_LARANJA, string);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,183.111,1934.011,17.531);
    SetPlayerFacingAngle(playerid,89.0);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,34,9999);     
    Combate[playerid] = 1;
    return 1;
   	}
Reply
#5

nгo, devera ficar assim:
pawn Код:
if(strcmp(cmdtext, "/sniperdm", true) == 0)
    {
    if(Combate[playerid] == 0) {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s foi para a Sniper DM ( /sniperdm )", pname);
    SendClientMessageToAll(COR_LARANJA, string);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,183.111,1934.011,17.531);
    SetPlayerFacingAngle(playerid,89.0);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,34,9999);    
    Combate[playerid] = 1;
    }
    return 1;
    }
me enganei no post acima, ao inves de
pawn Код:
if(Combate[playerid] == 1)
й
pawn Код:
if(Combate[playerid] == 0)
Reply
#6

Quote:
Originally Posted by LuCaS_
nгo, devera ficar assim:
pawn Код:
if(strcmp(cmdtext, "/sniperdm", true) == 0)
    {
    if(Combate[playerid] == 0) {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s foi para a Sniper DM ( /sniperdm )", pname);
    SendClientMessageToAll(COR_LARANJA, string);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,183.111,1934.011,17.531);
    SetPlayerFacingAngle(playerid,89.0);
    ResetPlayerWeapons(playerid);
    GivePlayerWeapon(playerid,34,9999);    
    Combate[playerid] = 1;
    }
    return 1;
    }
me enganei no post acima, ao inves de
pawn Код:
if(Combate[playerid] == 1)
й
pawn Код:
if(Combate[playerid] == 0)
Manow fiz isso ai ai teleportei depois tente teleportar pra outro lugar e deu pra teleporta entao quer dizer q tem alguma coisa errado!!
Reply
#7

esse outro lugar que vocк falo, nele vocк esta usando o
pawn Код:
if(Combate[playerid] == 0) {
?
Reply
#8

Quote:
Originally Posted by LuCaS_
esse outro lugar que vocк falo, nele vocк esta usando o
pawn Код:
if(Combate[playerid] == 0) {
?
Agora sim manow funciono n tinha arrumado isso n foi malz !!kk
Vlw por tudo manow
Reply
#9

Eu faria do mesmo jeito que o rapaz acima citou, mas no lugar de /kill, й preferivel usar um comando de /sair. , do teleporte, exemplo.

pawn Код:
//no topo
new Combate[MAX_PLAYERS];

//no OnPlayerConnect

Combate[playerid] = 0;

=======================================

//no OnPlayerDeath

Combate[playerid] = 0;

=========================================

// no comando

if(strcmp(cmdtext, "/sniperdm", true) == 0) {
 
if(Combate[playerid] == 0)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), "%s foi para a Sniper DM ! ( /sniperdm )", pname);
SendClientMessageToAll(COR_LARANJA, string);
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,183.111,1934.011,17.531);
SetPlayerFacingAngle(playerid,89.0);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,34,9999);
Combate[playerid] = 1;
 }
 return 1;
}

//Agora em um comando comum

if(strcmp(cmdtext,"/ex",true) == 0)
{
if(Combate[playerid] == 1) return SendClientMessage(playerid, 0xfAA3333AA, "[ERRO] Para sair deste teleporte, primeiramente morra, ou utilize [ /sair ] !");
 {

SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);

SetPlayerInterior(playerid,0);
 return 1;
}

//agora o comando de sair

if(strcmp(cmdtext, "/sair", true) == 0) {
Combate[playerid] = 0;
SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,24,110);
GivePlayerWeapon(playerid,32,150);
SendClientMessage(playerid, 0xfAA3333AA, "[INFO] Vocк saiu do teleport com sucesso!");
return 1;
}


Nos outros comandos coloque esse if
if(Combate[playerid] == 1) return SendClientMessage(playerid, 0xfAA3333AA, "[ERRO] Para sair deste teleporte, primeiramente morra, ou utilize [ /sair ] !");
 {
=======================================================================
Resumindo, ficou igual, era sу uma explicaзгo, de um jeito que ficaria melhor do que usar o /kill . Pois nos status nгo constaria uma morte.
Reply
#10

Quote:
Originally Posted by Knocker
Eu faria do mesmo jeito que o rapaz acima citou, mas no lugar de /kill, й preferivel usar um comando de /sair. , do teleporte, exemplo.

pawn Код:
//no topo
new Combate[MAX_PLAYERS];

//no OnPlayerConnect

Combate[playerid] = 0;

=======================================

//no OnPlayerDeath

Combate[playerid] = 0;

=========================================

// no comando

if(strcmp(cmdtext, "/sniperdm", true) == 0) {
 
if(Combate[playerid] == 0)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
format(string, sizeof(string), "%s foi para a Sniper DM ! ( /sniperdm )", pname);
SendClientMessageToAll(COR_LARANJA, string);
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,183.111,1934.011,17.531);
SetPlayerFacingAngle(playerid,89.0);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,34,9999);
Combate[playerid] = 1;
 }
 return 1;
}

//Agora em um comando comum

if(strcmp(cmdtext,"/ex",true) == 0)
{
if(Combate[playerid] == 1) return SendClientMessage(playerid, 0xfAA3333AA, "[ERRO] Para sair deste teleporte, primeiramente morra, ou utilize [ /sair ] !");
 {

SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);

SetPlayerInterior(playerid,0);
 return 1;
}

//agora o comando de sair

if(strcmp(cmdtext, "/sair", true) == 0) {
Combate[playerid] = 0;
SetPlayerPos(playerid, Coord.X, Coord.Y, Coord.Z);
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid,24,110);
GivePlayerWeapon(playerid,32,150);
SendClientMessage(playerid, 0xfAA3333AA, "[INFO] Vocк saiu do teleport com sucesso!");
return 1;
}


Nos outros comandos coloque esse if
if(Combate[playerid] == 1) return SendClientMessage(playerid, 0xfAA3333AA, "[ERRO] Para sair deste teleporte, primeiramente morra, ou utilize [ /sair ] !");
 {
=======================================================================
Resumindo, ficou igual, era sу uma explicaзгo, de um jeito que ficaria melhor do que usar o /kill . Pois nos status nгo constaria uma morte.
Esse de /sair eu sei fazer tenho ate ele aki q eu criei mais n gostei muito n, vo ver se esse й igual o meu.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)