Dudas sobre colores
#8

A eso me referia con lo que puse al final, todo el codigo esta basado a el "que pasaria" que pones

Quote:
Originally Posted by _Zume
Посмотреть сообщение
como poniendo el cValue en el color y luego un {FFFFFF} o el color, pero eso depende de la estructura del mensaje
PHP код:
enum Colors
{
    
cName[32],
    
cValue
};
new 
ColorsData[][Colors] = {
    {
"Rojo"0xFFFFFFFF},
    {
"Azul"0xFFFFFFFF},
    {
"Verde"0xFFFFFFFF},
    {
"Negro"0xFFFFFFFF}
}; 
Definimos el enumerador de los valores del array, y en el new se establecen de forma estatica.

PHP код:
COMMAND:colores(playeridparams[])
{
    new
        
str[128];
    
SendClientMessage(playerid, -1"____/ Colores disponibles /____");
    for(new 
i!= sizeof(ColorsData); i++)
    {
        if(
strlen(str) < 128-9)
        {
            
format(strsizeof str"%s, "ColorsData[i][cName]);
        }
        else
        {
            
SendClientMessage(playerid, -1"COLORES: %s"str);
            
str[0] = '\0';
        }
    }
    return 
1;

primero, se comprueba si ingreso un color [/color ] es nulo, o lo tomaria pero buscaria si existe el color. [/color azul] si lo vale.

PHP код:
    if((id GetColorIDFromName(params))) == -1// en el que te pase cambia != por ==
        
return SendClientMessage(playerid, -1"Color inexistente! /colores."); 
en la condicion [if] se almacena en la variable [id] el valor del INDEX en donde se encuentra el valor de color del color que se busca establecer, luego, si [id] retorna -1 es por que el color no existe.

PHP код:
    SetPlayerColor(playeridColorsData[id][cValue]); 
establece al jugador el color del INDEX que se encontro con el nombre de color.

PHP код:
    new
        
str[32];
    
format(strsizeof str"Tu color en el nombre es ahora el %s"ColorsData[id][cName]);
    
SendClientMessage(playerid, -1str); 
Retorna el nombre del color que se establecio.

PHP код:
COMMAND:colores(playeridparams[]) 

    new 
        
str[128]; 
    
SendClientMessage(playerid, -1"____/ Colores disponibles /____"); 
    for(new 
i!= sizeof(ColorsData); i++) 
    { 
        if(
strlen(str) < 128-9
        { 
            
format(strsizeof str"%s, "ColorsData[i][cName]); 
        } 
        else 
        { 
            
SendClientMessage(playerid, -1"COLORES: %s"str); 
            
str[0] = '\0'
        } 
    } 
    return 
1

aca se hace algo muy simple, se envia el mensaje de colores de la forma siguiente ->

PHP код:
for(new i!= sizeof(ColorsData); i++) 
inicia un ciclo por el tamaсo del array ColorsData

PHP код:
if(strlen(str) < 128-9)
        {
            
format(strsizeof str"%s, "ColorsData[i][cName]);
        }
        else
        {
            
SendClientMessage(playerid, -1"COLORES: %s"str);
            
str[0] = '\0';
        } 
se revisa si [str] ya lleno sus celdas, si el string tiene un valor contando sus caracteres de 128 [maximo de caracteres para el chat] -9 [el que usa la palabra "COLORES: ", entonces almacena en [str] el valor anterior que tenia para asi no perderlo y no usar strcat, y el nombre del color separandolo por una coma para que salga en una linea, si hay demasiados colores entonces envia el mensaje y vacia el string para que agregue los anteriores y comience un nuevo ciclo para enviar otra linea..

PHP код:

stock GetColorIDFromName
(name[])
{
    for(new 
i!= sizeof(ColorsData); i++)
    {
        if(
strcmp(ColorsData[i][cName], namefalse) == 0)
        {
            return 
i;
        }
    }
    return -
1;

lo del ciclo por todos los index del array.. y comprobando el ID que tiene el nombre que se busca, si no se encuentra retorna -1 [esto, porque el index puede ser 0 y puede confundirse ..]

PHP код:
stock GetHex8ColorFromString(color[])
{
    new
        
color[16];
    
format(colorsizeof color"%06x"color >>> 8);
    return 
color;

movemos el puntero para obtener los 6 caracteres del hexadecimal en un redondeo, ejemplo -> %.2f muestra de 145.2353 solo -> 145.23, entonces nos vamos tomando en cuenta lo de el base de 8 bits y asi obteniendo los valores, si quisieras mostrar el HEX en octeto seria: 0x%06xFF.", color >>> 8
Reply


Messages In This Thread
Dudas sobre colores - by Guss - 19.05.2015, 23:14
Respuesta: Dudas sobre colores - by Goncho28 - 19.05.2015, 23:40
Respuesta: Dudas sobre colores - by Zume - 19.05.2015, 23:48
Respuesta: Dudas sobre colores - by Guss - 20.05.2015, 00:07
Respuesta: Dudas sobre colores - by Goncho28 - 20.05.2015, 00:27
Respuesta: Dudas sobre colores - by Zume - 20.05.2015, 00:32
Respuesta: Dudas sobre colores - by Guss - 20.05.2015, 01:03
Respuesta: Dudas sobre colores - by Zume - 20.05.2015, 01:15
Respuesta: Dudas sobre colores - by DesingMyCry - 20.05.2015, 01:35
Respuesta: Dudas sobre colores - by Guss - 20.05.2015, 02:01

Forum Jump:


Users browsing this thread: 3 Guest(s)