Problema con playerid
#1

cuando hago alguna accion por ejemplo:

Код:
public msg3(playerid)
{
	SendClientMessage(playerid,0x78B85AD5,"Alguien No cumple las reglas? REPORTALO /report [id] [razуn]");
	SetTimer("msg1",300000,false);
	return 1;
}
Solo lee el mensaje la persona que tiene id 0 las demas no porq puede ser??
Reply
#2

Porque no es necesario utilizar playerid en esa funciуn. Voy a hacer tres mensajes y de allн te fijas, va?
pawn Код:
public OnGameModeInit()
{
    SetTimer("msg1", 300000, false);
    return 1;
}

forward msg1();
public msg1()
{
    SendClientMessageToAll(COLOR, "Mensaje 1"); // no necesitas "playerid" ya que se le manda a todos los jugadores
    SetTimer("msg2", 300000, false);
    return 1;
}

forward msg2();
public msg2()
{
    SendClientMessageToAll(COLOR, "Mensaje 2");
    SetTimer("msg3", 300000, false);
    return 1;
}

forward msg3();
public msg3()
{
    SendClientMessageToAll(COLOR, "Mensaje 3");
    SetTimer("msg1", 300000, false);
    return 1;
}
їPor quй solo ID 0?

Porque SendClientMessage le manda un mensaje a CIERTO ID, en tu caso tu pusiste la variable "playerid". Debido a que por defecto la variable playerid es 0, solo le llega al ID 0. En cambio SendClientMessageToAll envia el mensaje a todos los jugadores conectados.

pawn Код:
public msg3(playerid) // playerid aqui es innecesario, y por defecto su valor es 0
{
    //SendClientMessage(ID_DEL_JUGADOR, COLOR, "MENSAJE");
    //SendClientMessage(0, COLOR, "MENSAJE"); como playerid es 0 se le manda al ID 0
    SendClientMessage(playerid, 0x78B85AD5,"Alguien No cumple las reglas? REPORTALO /report [id] [razуn]");
    return 1;
}
Reply
#3

WAaaa tiooo es verdaadd no me acordabaa de eso ajajajjaja gracias de debo 1


pero tambien me pasa cuando en un tele pongo
Код:
TogglePlayerControllable(playerid, 0)
SetTimer("descongelar",5000);
esto es para q este 5 seg congelado y asi se carguen los objetos
Reply
#4

En ese caso en particular tienes que pasar el valor de playerid de una funciуn a otra. їComo? usando SetTimerEx.

pawn Код:
TogglePlayerControllable(playerid, 0);
SetTimerEx("descongelar", 5000, false, "d", playerid); // se pasa el valor de playerid a la funciуn descongelar.
pawn Код:
forward descongelar(playerid); // aqui SI se utiliza playerid porque necesitamos saber cual ID vamos a descongelar.
public descongelar(playerid)
{
    TogglePlayerControllable(playerid, 1);
    return 1;
}
їComo funciona SetTimerEx?
pawn Код:
SetTimerEx("NOMBRE_DE_FUNCION", TIEMPO, їREPETIR?, "TIPO_DE_DATOS_A_PASAR", DATO_A_PASAR);
/*
En nuestro caso:
NOMBRE DE LA FUNCION: "descongelar"
TIEMPO: 5000 ms (5 segundos)
REPETIR: false (no)
TIPO DE DATOS A PASAR: i, d (como lo prefieras, yo utilizй d, tu puedes utilizar i si quieres, pero se utilizan esos porque playerid es un numero. Si fuera un texto utilizariamos "s", y si fuera un decimal, "f")
DATO A PASAR: playerid (playerid porque ese es el valor que necesita TogglePlayerControllable para saber a que jugador descongelar)
Guнate de aquн: https://sampwiki.blast.hk/wiki/SetTimerEx
Reply
#5

Ц Muchas gracias te debo 2 :]

Ya pueden cerrar el topic pls gracias
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)