Me Ayudan con estй cуdigo :s?
#1

Код:
if (strcmp("/desbloquear", cmdtext, true, 10) == 0)
{
new jugador;
tmp = strtok(cmdtext, idx);
jugador = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "* Usa: /desbloquear <ID>");
if (strval(tmp) == playerid) return SendClientMessage(playerid, COLOR_RED, "* Error: No puedes desbloquearte tu mismo!");
if (IsPlayerConnected(jugador))
{
if(Informacion[playerid][Bloqueado] == 1)
{
format(string2,sizeof(string2),"* Desbloqueado. Ahora %s se podra teletransportar hacia ti!",PlayerName2(jugador));
SendClientMessage(playerid,COLOR_RED,string2);
format(string2,sizeof(string2),"* %s Te dejo que te teletransportes hacia el.",PlayerName2(playerid));
SendClientMessage(jugador,COLOR_RED,string2);
Informacion[playerid][Bloqueado] = 0;
return 1;
} else return SendClientMessage(playerid, 0x33CCFFAA, "* Ya estas desbloqueado, usa /bloquear para bloquear la teletransportaciуn.");
}
else return SendClientMessage(playerid, red, "* El jugador no esta conectado!");
}
if (strcmp("/ir", cmd, true, 10) == 0)
{
new jugador;
tmp = strtok(cmdtext, idx);
jugador = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "* Usa: /ir <ID>");
if (strval(tmp) == playerid) return SendClientMessage(playerid, COLOR_RED, "* Error: No puedes teletransportarte hacia ti mismo.");
if (IsPlayerConnected(jugador))
{
if(Informacion[jugador][Bloqueado] == 0)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(jugador, x, y, z);
TeleportPlayer(playerid, x + 2, y, z);
format(string2,sizeof(string2),"* El usuario %s se teletransporto hacia ti, Para impedir eso usa /bloquear",PlayerName2(playerid));
SendClientMessage(jugador,0xFFFF00AA,string2);
return 1;
}
else return SendClientMessage(playerid, COLOR_RED, "* El jugador prohibio que te teletransportes hacia el.");
}
else return SendClientMessage(playerid, COLOR_RED, "* Error: ID no encontrada!");
}
if (strcmp("/bloquearir", cmdtext, true, 10) == 0)
{
new jugador;
tmp = strtok(cmdtext, idx);
jugador = strval(tmp);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_RED, "* Usa: /bloquearir <ID>");
if (strval(tmp) == playerid) return SendClientMessage(playerid, COLOR_RED, "* Error: No puedes bloquearte tu mismo!");
if (IsPlayerConnected(jugador))
{
if(Informacion[playerid][Bloqueado] == 0)
{
format(string2,sizeof(string2),"* Bloqueado. Ahora %s no se podra teletransportar hacia ti!",PlayerName2(jugador));
SendClientMessage(playerid,COLOR_RED,string2);
format(string2,sizeof(string2),"* %s Te bloqueo la teletransportacion hacia el.",PlayerName2(playerid));
SendClientMessage(jugador,COLOR_RED,string2);
Informacion[playerid][Bloqueado] = 1;
return 1;
}
else return SendClientMessage(playerid, 0x33CCFFAA, "* Ya estas bloqueado, usa /desbloquear para desbloquear la teletransportaciуn.");
}
else return SendClientMessage(playerid, red, "* El jugador no esta conectado!");
}
Bueno,Funciona, pero quiero que al desbloquear a alguien otro user no pueda teletransportarse asia mi, osea al poner /bloquearir [id] se bloquea para todos, y lo mismo al desbloquear, se desbloquea a todos Me ayudan?dx
Reply
#2

Sн, te ayudo, pero con ZCMD y sscanf, que tengo mбs facilidad. Eso que has puesto ahн es muy difнcil de entender como no lo ordenes. Tambiйn utiliza el formato [PAWN][/ PAWN] del foro.

Serнa algo asн:

pawn Код:
// al principio del cуdigo, junto a los demбs new
new IrBloqueado[MAX_PLAYERS][MAX_PLAYERS];
// ********

public OnPlayerDisconnect(playerid,reason)
{
    for(new i = 0; i < MAX_PLAYERS; i++) // PARA BORRAR LOS BLOQUEOS CUANDO EL JUGADOR SE DESCONECTE
    {
        IrBloqueado[playerid][i] = 0;
    }
    return 1;
}

COMMAND:ir(playerid, params[])
{
    new i;
    if(!sscanf(params,"i",i))
    {
        if(IsPlayerConnected(i))
        {
            if(!IrBloqueado[i][playerid])
            {
                // FUNCIONES PARA TELETRANSPORTAR"PLAYERID" A "I"
                // SUPONGO QUE SABRБS HACERLAS
                // ..............
            }
            else
            {
                SendClientMessage(playerid,-1,"Este jugador ha activado la opciуn de que te teletransportes a йl");
            }
        }
        else
        {
            SendClientMessage(playerid,-1,"Ese jugador no estб conectado.");
        }
    else
    {
        SendClientMessage(playerid,-1,"Utiliza /ir [id].");
    }
    return 1;
}

COMMAND:bloquearir(playerid, params[])
{
    new i;
    if(!sscanf(params,"i",i))
    {
        if(IsPlayerConnected(i))
        {
            if(IsPlayerAdmin(i)) // para que no se pueda bloquear a admins de la RCON, si quieres lo quitas o cambias por otro tipo de admin.
            {
                new msg[144],nombre[MAX_PLAYER_NAME];
                GetPlayerName(playerid, nombre, sizeof(nombre));
                if(!IrBloqueado[playerid][i])
                {
                    format(msg,sizeof(msg),"Has bloqueado a %s (ID:%i). Ya no puede teletransportarse a ti.",nombre,i);
                    IrBloqueado[playerid][i] = 1;
                }
                else
                {
                    format(msg,sizeof(msg),"Has desbloqueado a %s (ID:%i). Ahora puede teletransportarse a ti.",nombre,i);
                    IrBloqueado[playerid][i] = 0;
                }
            }
            else
            {
                SendClientMessage(playerid,-1,"No puedes bloquear a un admin.");
            }
        }
        else
        {
            SendClientMessage(playerid,-1,"Ese jugador no estб conectado.");
        }
    }
    else
    {
        SendClientMessage(playerid,-1,"Utiliza /bloquearir [id].");
    }
    return 1;
}
Si no entiendes por quй hago alguna cosita en concreto dнmelo y te lo explico. Espero que te funcione.
Saludos.
Reply
#3

Gracias.. Pero me da estй error:
error 017: undefined symbol "cmd_bloquearir"
cуdigo:
pawn Код:
#include <a_samp>
#include <zcmd>
#include <sscanf2>

#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
}

#else

main()
{
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
}

#endif
// al principio del cуdigo, junto a los demбs new
new IrBloqueado[MAX_PLAYERS][MAX_PLAYERS];
// ********


public OnPlayerDisconnect(playerid,reason)
{
    for(new i = 0; i < MAX_PLAYERS; i++) // PARA BORRAR LOS BLOQUEOS CUANDO EL JUGADOR SE DESCONECTE
    {
    IrBloqueado[playerid][i] = 0;
    }
    return 1;
}

forward TeleportPlayer(playerid, Float:x,Float:y,Float:z);
public TeleportPlayer(playerid, Float:x,Float:y,Float:z)
{
new cartype = GetPlayerVehicleID(playerid);
new State=GetPlayerState(playerid);
if(State!=PLAYER_STATE_DRIVER)
{
SetPlayerPos(playerid,x,y,z);
}
else if(IsPlayerInVehicle(playerid, cartype) == 1)
{
SetVehiclePos(cartype,x,y,z);
}
else
{
SetPlayerPos(playerid,x,y,z);
}
SetPlayerInterior(playerid,0);
}
stock PlayerName2(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}

CMD:ir(playerid,params[]) {
    new i,string2[256];
    if(!sscanf(params,"i",i))
    {
        if(IsPlayerConnected(i))
        {
            if(!IrBloqueado[i][playerid])
            {
            new Float:x, Float:y, Float:z;
            GetPlayerPos(i, x, y, z);
            TeleportPlayer(playerid, x + 2, y, z);
            format(string2,sizeof(string2),"* El usuario %s se teletransporto hacia ti, Para impedir eso usa /bloquear",PlayerName2(playerid));
            SendClientMessage(i,0xFFFF00AA,string2);
            }
            else
            {
                SendClientMessage(playerid,-1,"* Error: Este jugador ha activado la opciуn de que te teletransportes a йl");
            }
        }
        else
        {
            SendClientMessage(playerid,-1,"* Error: Ese jugador no estб conectado.");
        }
    else
    {
        SendClientMessage(playerid,-1,"* Usa /ir <ID>");
    }
    return 1;
}

CMD:bloquearir(playerid,params[]) {
    new i;
    if(!sscanf(params,"i",i))
    {
        if(IsPlayerConnected(i))
        {
            if(IsPlayerAdmin(i)) // para que no se pueda bloquear a admins de la RCON, si quieres lo quitas o cambias por otro tipo de admin.
            {
                new msg[144],nombre[MAX_PLAYER_NAME];
                GetPlayerName(playerid, nombre, sizeof(nombre));
                if(!IrBloqueado[playerid][i])
                {
                    format(msg,sizeof(msg),"* Has bloqueado a %s (ID:%i). Ya no puede teletransportarse a ti.",nombre,i);
                    IrBloqueado[playerid][i] = 1;
                }
                else
                {
                    format(msg,sizeof(msg),"* Has desbloqueado a %s (ID:%i). Ahora puede teletransportarse a ti.",nombre,i);
                    IrBloqueado[playerid][i] = 0;
                }
            }
            else
            {
                SendClientMessage(playerid,-1,"* Error: No puedes bloquear a un admin.");
            }
        }
        else
        {
            SendClientMessage(playerid,-1,"* Error: Ese jugador no estб conectado.");
        }
    }
    else
    {
        SendClientMessage(playerid,-1,"* Usa /bloquearir <ID>");
    }
    return 1;
}
Reply
#4

Prueba tal y como lo puse yo, con COMMAND: en vez de CMD:

Saludos.
Reply
#5

Es lo mismo, Me da igual el error. :S

Ya pueden cerrar :d Gracias PHudson, lo hize sin sscanf y con strcmp y funciona. Saludos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)