Ok, Lo unico que quiero es
que es mi GM cuando los jugares hablen, apareca su ID: y eso lo ise, gracias a The_chaoz entonces al hacer eso, me dejo de funcionan unos comandos que tenia en mi GM los comandos eran para rcon admin y se vasaban en que yo ponia /Rcolor y podia hablar azul entero Nick y Texto... si me puedes hacer el comando de yo poder hablar de colores Nick y text para el sistema de admin te lo agradeceria ![]() |
Ok, Lo unico que quiero es
que es mi GM cuando los jugares hablen, apareca su ID: y eso lo ise, gracias a The_chaoz entonces al hacer eso, me dejo de funcionan unos comandos que tenia en mi GM los comandos eran para rcon admin y se vasaban en que yo ponia /Rcolor y podia hablar azul entero Nick y Texto... si me puedes hacer el comando de yo poder hablar de colores Nick y text para el sistema de admin te lo agradeceria ![]() |
ya te di la solucion. cambia el SendPlayerMessageToAll, por SendClientMessageToAll
|
ya te di la solucion. cambia el SendPlayerMessageToAll, por SendClientMessageToAll
|
public OnPlayerText(playerid, text[])
{
new str[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(str, sizeof(str), "%s[%i]: %s", name, playerid, text);
SendClientMessageToAll(color, str);
return 0;
}
Cambio lo que me dijiste y ahora volvi al principio pero con mas problemas...
Mira antes mi problema era que no se veian la ID Me dices la solucion, Pero me di cuenta que Los comandos Rcon que tenia para hablar de color admin /Rcolor /Rrojo etc No me funcionanvan por que solo me cambiaba el color de el nick y el text aparecia de color blanco despues me dijiste que la Solucion era cambiarlo a SendClientMessageToAll lo cambie y ahora me pasa esto La ID otra ves no la puedo ver, y pongo los comandos rcon que tenia /Rcolor /Rverde etc me sali asi: ![]() ![]() ![]() ![]() ![]() ![]() Como lo soluciono, si sabes te lo agradesco si no sabes igual por la ayuda. |
#include <a_samp>
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define ROJO_ADM 0xD63034AA
#define ROSA_ADM 0xEE82EEAA
#define ROJO 0xAA3333AA
#define VERDE_ADM 0x0DE018AA
#define COLOR_ADM 0x2587CEFF
new admchat[MAX_PLAYERS];//esto podes cambiarlo
new admrojo[MAX_PLAYERS];//lomismo de arriba
new admrosa[MAX_PLAYERS];//lo mismo de arriba
new admverde[MAX_PLAYERS];//lo mismo
public OnPlayerConnect(playerid)
{
admchat[playerid] = 0; // esto es Callback donde define cuando entras tengas el color del admin en '0'
admrojo[playerid] = 0;// lo mismo
admrosa[playerid] = 0;//lo mismo
admverde[playerid] = 0;//lo mismo
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(azul,4,cmdtext);// Aca va el comando que quieras si es Azul lleva 4 letras entonses pones 4 o por la cantidad de letras que tenga tu comando
dcmd(rojo, 4,cmdtext);// aca lo mismo
dcmd(rosa, 4,cmdtext);//lomismo
dcmd(verde, 5,cmdtext);//lo mismo aca
return 0;
}
public OnPlayerText(playerid, text[])// esto es el Texto
{
if(admchat[playerid] == 1)
{
new Textoo[256];
new name[255];
GetPlayerName(playerid, name, sizeof(name));
format(Textoo, sizeof(Textoo), "%s: %s", name, text); //lo de %s es el Nick y el otro %s es lo que dise
SetPlayerColor(playerid,COLOR_ADM ); // esto es el color del Nick que cambia
SendClientMessageToAll(COLOR_ADM, Textoo);//esto es el color del Texto Cambia al Activarlo
return 0;//aca bamos ha poner siempre return 0;
}
if(admrojo[playerid] == 1)//lo mismo con todo los de abajos
{
new Textoo[256];
new name[255];
GetPlayerName(playerid, name, sizeof(name));
format(Textoo, sizeof(Textoo), "%s: %s", name, text);
SetPlayerColor(playerid,ROJO_ADM );
SendClientMessageToAll(ROJO_ADM, Textoo);
return 0;
}
if(admrosa[playerid] == 1)
{
new Textoo[256];
new name[255];
GetPlayerName(playerid, name, sizeof(name));
format(Textoo, sizeof(Textoo), "%s: %s", name, text);
SetPlayerColor(playerid,ROSA_ADM );
SendClientMessageToAll(ROSA_ADM, Textoo);
return 0;
}
if(admverde[playerid] == 1)
{
new Textoo[256];
new name[255];
GetPlayerName(playerid, name, sizeof(name));
format(Textoo, sizeof(Textoo), "%s: %s", name, text);
SetPlayerColor(playerid,VERDE_ADM );
SendClientMessageToAll(VERDE_ADM, Textoo);
return 0;
}
return 1; //como este es el ultimo siempre abajo del return 0; tiene que ir un return 1; y }
}
dcmd_azul(playerid,params[]) {
#pragma unused params
if(IsPlayerAdmin(playerid)) {
if(admchat[playerid] == 0) {
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admchat[playerid] = 1;
return SendClientMessage(playerid,0x33CC00FF,"Color, Azul Actнvado");
}
else
{
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admchat[playerid] = 0;
return SendClientMessage(playerid,0xAA3333AA,"Color, Azul Desactнvado");
}}
else return 0;
}
dcmd_rojo(playerid,params[]) {
#pragma unused params
if(IsPlayerAdmin(playerid)) {
if(admrojo[playerid] == 0) {
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admrojo[playerid] = 1;
return SendClientMessage(playerid,0x33CC00FF,"Color, Rojo Actнvado");
}
else
{
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admrojo[playerid] = 0;
return SendClientMessage(playerid,0xAA3333AA,"Color, Rojo Desactнvado");
}}
else return 0;
}
dcmd_rosa(playerid,params[]) {
#pragma unused params
if(IsPlayerAdmin(playerid)) {
if(admrosa[playerid] == 0) {
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admrosa[playerid] = 1;
return SendClientMessage(playerid,0x33CC00FF,"Color, Rosa Actнvado");
}
else
{
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admrosa[playerid] = 0;
return SendClientMessage(playerid,0xAA3333AA,"Color, Rosa Desactнvado");
}}
else return 0;
}
dcmd_verde(playerid,params[]) {
#pragma unused params
if(IsPlayerAdmin(playerid)) {
if(admverde[playerid] == 0) { //Lo de ADM rojo es lo de new admrojo[MAX_PLAYERS] Podes cambiarlo por el que quiera
new Float:pX, Float:pY, Float:pZ; //pero Cuando quieras crear otro color tendria que ir otro nombre distinto ha todos...
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admverde[playerid] = 1;
return SendClientMessage(playerid,0x33CC00FF,"Color, Verde Actнvado"); // Aca lo que quieras que diga cuando activas tu color
}
else
{
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid,pX,pY,pZ);
PlayerPlaySound(playerid,1057,pX,pY,pZ);
admverde[playerid] = 0;
return SendClientMessage(playerid,0xAA3333AA,"Color, Verde Desactнvado");// aca lo mismo pero cuando lo desactivas
}}
else return 0;
}
ese FS esta mal. usas dcmd que es una macro especifica para usar parametros, y luego defines que ninguno de los comandos del FS usa parametros, xD mejor usa srcmp. ademas de que seria mejor crear un array y darle un valor segun el color, en vez de crear varios inecesarios.
|
Sн lo se eso del array es que estoy acostumbrado ha usar DCMD pero avia leeido por hay que no se puede subir FS con srcmp
|
si que se puede, seria realmente absurdo ya que en casos de comandos en los cuales no se necesitan parametros, usar dcmd no seria lo optimo.
|
#include <a_samp>
#pragma tabsize 0
new COLOR[MAX_PLAYERS];
new TCOLOR[MAX_PLAYERS];
forward Cifrar(string[]);
stock strtok(const string[], &index,seperator=' ')
{
new length = strlen(string);
new offset = index;
new result[128];
while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
if ((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}
stock Nombre(playerid) {
new nombre[255];
GetPlayerName(playerid, nombre, 255);
return nombre;
}
public OnPlayerConnect(playerid)
{
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TCOLOR[playerid] = 0;
COLOR[playerid] = 0;
return 1;
}
public OnPlayerText(playerid, text[])
{
if(TCOLOR[playerid] == 1)
{
if(text[0] != '#')
{
if( text[0] != '#')
{
new string[256];
format(string, sizeof(string),"%s: %s", Nombre(playerid), text);
SendClientMessageToAll(COLOR[playerid],string);
}
}
return 0;
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128];
new idx;
cmd = strtok(cmdtext,idx);
if(strcmp(cmd, "/azul", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
TCOLOR[playerid] = 1;
COLOR[playerid] = 0x2587CEAA;
SetPlayerColor(playerid, 0x2587CEAA);
SendClientMessage(playerid, 0x2587CEAA, "Activaste el color azul");
return 1;
}
}
if(strcmp(cmd, "/rosa", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
TCOLOR[playerid] = 1;
COLOR[playerid] = 0xFF66FFAA;
SetPlayerColor(playerid, 0xFF66FFAA);
SendClientMessage(playerid, 0xFF66FFAA, "Activaste el color rosa");
return 1;
}
}
if(strcmp(cmd, "/verde", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
TCOLOR[playerid] = 1;
COLOR[playerid] = 0x0DE018AA;
SetPlayerColor(playerid, 0x0DE018AA);
SendClientMessage(playerid, 0x0DE018AA, "Activaste el color verde");
return 1;
}
}
if(strcmp(cmd, "/rojo", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
TCOLOR[playerid] = 1;
COLOR[playerid] = 0xFF393FFF;
SetPlayerColor(playerid, 0xFF393FFF);
SendClientMessage(playerid, 0xFF393FFF, "Activaste el color rojo");
return 1;
}
}
if(strcmp(cmd, "/nocolor", true) == 0)
{
if(IsPlayerAdmin(playerid))
{
TCOLOR[playerid] = 0;
COLOR[playerid] = 0;
return 1;
}
}
return 0;
}
pawn Code:
|
format(string, sizeof(string), "%s[%i]: %s", Nombre(playerid), playerid, text);
pawn Code:
|
pawn Code:
|
FAIL
1є para que usaste "STRING" ![]() LOL ![]() 2 cosas: 1є tenes 2 veces el mismo if (lo cual es inutil) 2є "format(string, sizeof(string), "%s: %s", Nombre(playerid), text);" error xD el queria [Nombre][ID]: [TEXTO]. por ende el format correcto para tu caso serial: pawn Code:
1є que sentido tiene en ese codigo cmd?? 2є cmd[128] ![]() 3є el comando nocolor, solo setea los valores a 0, por ende lo unico que se lograra es que quede el ultimo color que uso, dado que utilizas el comando SetPlayerColor en los demas comandos, solo cambiara el color de texto a la hora de hablar, pero no en su marcador. si lo pones en OnPlayeConnect, no lo pones en el Disconnect y viceversa |
#define STRING 128