[TUT] Hookear Say.
#1
Antes de empezar queria decirles que nose si es la forma correcta de hookear , pero a mi me funciono Lengua

Fuente : https://forums.alliedmods.net/showthread.php?t=213368

TUT :

Código PHP:
#include <amxmodx> 
#include <cstrike>

public plugin_init() 

    
register_plugin("Hook Say Basic""0.1""Morte"
    
    
/* Registramos comando say del cliente */ 
    
register_clcmd("say""message_saytext"
    
/* =================================== */ 


new 
g_level[33]

public 
message_saytext(id

    
/* Creamos un array estatico - Este tiene un tamaño de 192 porque seria */ 
    /* el máximo de caracteres que se van a poder escribir */ 
    
static szSay[192
    
/* =================================== */ 
    
    /* Obtenemos lo que escribio el jugador */ 
    
read_args(szSaycharsmax(szSay)) 
    
/* =================================== */ 
    
    /* Removemos las comillas que se forman en el read_args al principio y fin del texto escrito  */ 
    
remove_quotes(szSay
    
/* =================================== */
    
    
replace_all(szSaycharsmax(szSay), "%"" "
    
    
/* Creamos un array estatico para obtener el nombre del jugador */ 
    
static szNombre[32
    
/* =================================== */ 
    
    /* Obtemeos el nombre del jugador */ 
    
get_user_name(idszNombre32
    
    switch(
cs_get_user_team(id))
    {
        case 
CS_TEAM_CT// en el caso de que sea CT
        
{
            if(
is_user_alive(id)) // si esta vivo el CT
            
{
                
ChatColor(0"!t[ CT ][ %s ][ !gLevel %d !t]!y: %s"szNombreg_level[id], szSay// mensaje que es CT , nombre , level , lo que escribio
            
}
            else 
ChatColor(0"!t[ CT ][ MUERTO ][ %s ][ !gLevel %d !t]!y: %s"szNombreg_level[id], szSay// lo mismo pero tambien que esta muerto
        
}     // else : si no esta vivo , mejor dicho caso contrario
        
        
case CS_TEAM_T// si es TT
        
{
            if (
is_user_alive(id)) // si esta vivo el TT
            
{
                
ChatColor(0"!t[ TT ][ %s ][ !gLevel %d !t]!y: %s"szNombreg_level[id], szSay// mensaje que es TT , nombre , level , lo que escribio
            
}
            else 
ChatColor(0"!t[ TT ][MUERTO][ %s ][ !gLevel %d !t]!y: %s"szNombreg_level[id], szSay// lo mismo pero te muestra que estas muerto.
        
// else : si no esta vivo , mejor dicho caso contrario 
        
        
case CS_TEAM_SPECTATOR:
        {
            
ChatColor(0"!t[ Spectator ][ %s ]!y: %s"szNombreszSay)
        }
    } 
    return 
PLUGIN_HANDLED // magia para que no aparesca 2 veces el mensaje
}

// stock de chatcolor
stock ChatColor(const index, const input[], any:...)
{    
    new 
count 1players[32], len
    
static msg[192]
    
    
len formatex(msg,charsmaxmsg ), "");
    
vformat(msg[len], charsmax(msg), input3)
    
msg[191] = '^0';
    
    
replace_all(msg190"!g""^4"// Color Verde
    
replace_all(msg190"!y""^1"// Color Normal
    
replace_all(msg190"!t""^3"// Color de Equipo
    
    
if (indexplayers[0] = index; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


yo cuando lo vi ya entendia :3 espero que entiendan ustedes , nose si
esta explicado bien Lengua espero que lo disfruten n.n Saludos

Imagen :

[Imagen: 10457881_1426424360976618_5036627761350130888_n.jpg]

edit : ustedes tienen que modificar la variable de su nivel , esa es la que yo uso pacman xD Saludos.

lo queria hacer con variables tipo :

new vivo = is_user_alive(id)

pero me tiraba warning
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#2
El máximo de caracteres que puede escribir un player es 191 por ende la cantidad maximas de celdas serian 192

Tenes que remplazar si el player escribe "%" por ""

Tenes que chequear que el player escribiera algo y si escribió algo no sean solo espacios
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#3
arreglado.

en la segunda decis esto :

ChatColor(0, "!t[ TT ][ %s ][ !gLevel %d !t]!y: %s", szNombre, g_level[id], szSay) ?

en la tercera como hago que si escribe espacios directamente no haga nada , recien probe escribiendo espacios y lo mostraba en el say escribiendo nada.
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#4
no es la mejor forma de hacerlo :3 podrias :
Código PHP:
public cmdSay(id)
{
    static 
Text[192]; read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
replace_all(Textcharsmax(Text), "%""")

    if(!
ValidMessage(Text) || equal(Text"") || equal(Text" "))
    return 
PLUGIN_HANDLED;
    
    
formatex(Messagecharsmax(Message), "%s^x04%s ^x03%s ^x04[lvl: %d]^x01 : %s"get_user_team(id) == "^x01[Espectador] " : !Alive "^x01[Muerto] " ""g_team[id]/* Podrias poner con enum*/g_playername[id] , g_level[id], Text)

    for( new 
1<= g_maxplayersi++ ) 
    {
        if(!
is_user_connected(i) || is_user_alive(i) != Alive) continue;

        
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _i)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    return 
PLUGIN_HANDLED_MAIN;

Responder
#5
(20/06/2014, 07:23 PM)[R]ak escribió: El máximo de caracteres que puede escribir un player es 191 por ende la cantidad maximas de celdas serian 192

Tenes que remplazar si el player escribe "%" por ""

Tenes que chequear que el player escribiera algo y si escribió algo no sean solo espacios

edit : si el player escribe '%' en say se muestra el % ej :

Kira : %

que pasaria ? si lo dejo asi ?
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#6
Estas llamando cs_get_user_team tres veces innecesariamente cuando podes llamarlo una vez de la siguiente forma:

Código PHP:
new iPlayerTeam cs_get_user_team(id)
    
switch(
iPlayerTeam)
{
    case 
CS_TEAM_CT//
    
case CS_TEAM_T//
    
case CS_TEAM_SPECTATOR//


Fuente: https://wiki.alliedmods.net/Optimizing_P...Scripting)

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#7
(20/06/2014, 07:31 PM)Pipa Roja escribió: no es la mejor forma de hacerlo :3 podrias :
Código PHP:
public cmdSay(id)
{
    static 
Text[192]; read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
replace_all(Textcharsmax(Text), "%""")

    if(!
ValidMessage(Text) || equal(Text"") || equal(Text" "))
    return 
PLUGIN_HANDLED;
    
    
formatex(Messagecharsmax(Message), "%s^x04%s ^x03%s ^x04[lvl: %d]^x01 : %s"get_user_team(id) == "^x01[Espectador] " : !Alive "^x01[Muerto] " ""g_team[id]/* Podrias poner con enum*/g_playername[id] , g_level[id], Text)

    for( new 
1<= g_maxplayersi++ ) 
    {
        if(!
is_user_connected(i) || is_user_alive(i) != Alive) continue;

        
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _i)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    return 
PLUGIN_HANDLED_MAIN;


esa puede ser la mejor forma pero me quedo con la mia que la entiendo mas Lengua creo que el tut que postee es mas facil que la que tu posteaste
pero la tuya obiamente esta mas optimizada. Saludos Gran sonrisa :3 y gracias
por dar tu opinion n.n

(20/06/2014, 07:33 PM)alan_el_more escribió: Estas llamando cs_get_user_team tres veces innecesariamente cuando podes llamarlo una vez de la siguiente forma:

Código PHP:
new iPlayerTeam cs_get_user_team(id)
    
switch(
iPlayerTeam)
{
    case 
CS_TEAM_CT//
    
case CS_TEAM_T//
    
case CS_TEAM_SPECTATOR//


Fuente: https://wiki.alliedmods.net/Optimizing_P...Scripting)

n.n Whatever hay corrijo :3

edit : si esta vivo o muerto como le hago ?
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#8
(20/06/2014, 07:31 PM)Pipa Roja escribió: no es la mejor forma de hacerlo :3 podrias :
Código PHP:
public cmdSay(id)
{
    static 
Text[192]; read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
replace_all(Textcharsmax(Text), "%""")

    if(!
ValidMessage(Text) || equal(Text"") || equal(Text" "))
    return 
PLUGIN_HANDLED;
    
    
formatex(Messagecharsmax(Message), "%s^x04%s ^x03%s ^x04[lvl: %d]^x01 : %s"get_user_team(id) == "^x01[Espectador] " : !Alive "^x01[Muerto] " ""g_team[id]/* Podrias poner con enum*/g_playername[id] , g_level[id], Text)

    for( new 
1<= g_maxplayersi++ ) 
    {
        if(!
is_user_connected(i) || is_user_alive(i) != Alive) continue;

        
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _i)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    return 
PLUGIN_HANDLED_MAIN;


No

Código PHP:
new iAlive
iAlive 
is_user_alive(id)

if(
iAlive)
//
else
// 

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#9
/* Registramos comando say del cliente */
register_clcmd("say", "message_saytext")
/* =================================== */


te falto
register_clcmd("say_team", "message_saytext")


c&p esto es lo mismo que publico LuKks solo cambiaste las variables y editaste los textos y pusiste get_user_team ademas de que lo ayas puesto de la peor forma( la llamas mucho)
Responder
#10
(20/06/2014, 07:36 PM)alan_el_more escribió:
(20/06/2014, 07:31 PM)Pipa Roja escribió: no es la mejor forma de hacerlo :3 podrias :
Código PHP:
public cmdSay(id)
{
    static 
Text[192]; read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
replace_all(Textcharsmax(Text), "%""")

    if(!
ValidMessage(Text) || equal(Text"") || equal(Text" "))
    return 
PLUGIN_HANDLED;
    
    
formatex(Messagecharsmax(Message), "%s^x04%s ^x03%s ^x04[lvl: %d]^x01 : %s"get_user_team(id) == "^x01[Espectador] " : !Alive "^x01[Muerto] " ""g_team[id]/* Podrias poner con enum*/g_playername[id] , g_level[id], Text)

    for( new 
1<= g_maxplayersi++ ) 
    {
        if(!
is_user_connected(i) || is_user_alive(i) != Alive) continue;

        
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _i)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    return 
PLUGIN_HANDLED_MAIN;


No

Código PHP:
new iAlive
iAlive 
is_user_alive(id)

if(
iAlive)
//
else
// 

me lo copio casi todo de algun plugin mio por q yo lo arme asi;

Código PHP:
public cmdSay(id)
{
    static 
Text[192]
    
read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
    
replace_all(Textcharsmax(Text), "%""")
    
    if(!
ValidMessage(Text))
        return 
PLUGIN_HANDLED
    
    
static Name[32], AliveMessage[192]
    
get_user_name(idNamecharsmax(Name))
    
    
Alive is_user_alive(id)
    
    
formatex(Messagecharsmax(Message), "^x04%s %s^x03%s^x01 : %s"g_AdminTag[id], get_user_team(id) == SPECT "^x01*SPEC* " : !Alive "^x01*DEAD* " ""NameText)
    
    for( new 
1<= g_MaxPlayersi++ ) {
        if(!
is_user_connected(i) || is_user_alive(i) != Alive)
            continue;
        
        
message_begin(MSG_ONE_UNRELIABLEg_MsgSayText_i)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    
    return 
PLUGIN_HANDLED;
}

ValidMessage(text[]) {
    static 
leni
    len 
strlen(text)
    
    if(!
len)
        return 
false
    
    
for(0leni++) {
        if( 
text[i] != ' ' ) {
            return 
true
        
}
    }

    return 
false


ese es de mi plugin TagSay
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#11
? enserio ? lol ami me lo paso el 3mcy-daimon-t perdón Rak no sabia que era tullo
Responder
#12
(20/06/2014, 07:39 PM)Pipa Roja escribió: /* Registramos comando say del cliente */
register_clcmd("say", "message_saytext")
/* =================================== */


te falto
register_clcmd("say_team", "message_saytext")


c&p esto es lo mismo que publico LuKks solo cambiaste las variables y editaste los textos y pusiste get_user_team ademas de que lo ayas puesto de la peor forma( la llamas mucho)

no es que me falto , no lo quise hacer Whatever
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#13
La cantidad maxima de caracteres que puede tener un nombre es 31 osea 32 celdas;

Entiendo q a muchos le resulte facil poner el numero de celdas que tiene un array -1; pero aver; usen charsmax(array); por que después tienen q aumentar/disminuir el tamaño de un array y tienen q cambiarlo en todas las funciones que pusieron su numero a mano; sean prolijos al programar
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#14
seria conveniente q aregles todo lo que te dicen...
usa un PLUGIN_HANDLED_MAIN en ves de PLUGIN_HANDLED

Sigo sin entender por q la gente trata de hacer tutoriales cuando no esta capacitada
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#15
(20/06/2014, 08:28 PM)mongito100 escribió: seria conveniente q aregles todo lo que te dicen...
usa un PLUGIN_HANDLED_MAIN en ves de PLUGIN_HANDLED

Sigo sin entender por q la gente trata de hacer tutoriales cuando no esta capacitada

intento arreglar las cosas , pero tanto no entiendo , ya arregle algunas cosas . estoy viendo lo otro.
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#16
(20/06/2014, 08:28 PM)mongito100 escribió: seria conveniente q aregles todo lo que te dicen...
usa un PLUGIN_HANDLED_MAIN en ves de PLUGIN_HANDLED

Sigo sin entender por q la gente trata de hacer tutoriales cuando no esta capacitada

ya lo dije en otro post; EXPLICA por que cambiar el tipo de return
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#17
(20/06/2014, 08:42 PM)[R]ak escribió:
(20/06/2014, 08:28 PM)mongito100 escribió: seria conveniente q aregles todo lo que te dicen...
usa un PLUGIN_HANDLED_MAIN en ves de PLUGIN_HANDLED

Sigo sin entender por q la gente trata de hacer tutoriales cuando no esta capacitada

ya lo dije en otro post; EXPLICA por que cambiar el tipo de return

lo cambio por que mongito me dice , o obiamente mongito sabe mas que yo :b y tambien corrijo los errores que puedo correjir pero no le veo la diferencia , al final que return dejo ?

cual post ? O.o ?

edit : el de CSAxel de las habilidades ?
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#18
Código:
#define PLUGIN_CONTINUE        0    /* Results returned by public functions */
#define PLUGIN_HANDLED        1    /* stop other plugins */
#define PLUGIN_HANDLED_MAIN    2    /* to use in client_command(), continue all plugins but stop the command */

yo se la diferencia; pero veo muchas veces q dicen cambia X return por X y no explican por que y asi terminan mareando a los q no saben

edit: y si; lo habia dicho en el post de CSAxel
Hi Milashkasiya CrabCrab

Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual

[Imagen: xl0jvd-5.png]
Link
Responder
#19
(20/06/2014, 08:50 PM)[R]ak escribió:
Código:
#define PLUGIN_CONTINUE        0    /* Results returned by public functions */
#define PLUGIN_HANDLED        1    /* stop other plugins */
#define PLUGIN_HANDLED_MAIN    2    /* to use in client_command(), continue all plugins but stop the command */

yo se la diferencia; pero veo muchas veces q dicen cambia X return por X y no explican por que y asi terminan mareando a los q no saben

edit: y si; lo habia dicho en el post de CSAxel

ok haora lo arreglo :3
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#20
Cita:/* to use in client_command(), continue all plugins but stop the command */
tan simple como q si registro el say de /verduras en otro plugin si lo toma; si pusiera plugin_handle no lo tomaria salvo q estuviera en la lista de plugins antes
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#21
Código PHP:
replace_all(szSaycharsmax(szSay), "%"" "
Es importante. Si no lo usas algun cliente te podría tumbar el servidor fácilmente...
Responder
#22
(20/06/2014, 11:50 PM)Mario AR. escribió:
Código PHP:
replace_all(szSaycharsmax(szSay), "%"" "
Es impotante. Si no lo usas algun cliente te podría tumbar el servidor fácilmente...

Genius arreglado xD
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#23
Puedo poner espacios y saldría mi nombre solo.
Puedo escribir en verde, azul y rojo.

Podrías poner una opción para lo siguiente:
Con la forma que estas hookeando el say si yo estoy vivo y alguien esta muerto nos podremos leer entre los 2 osea totalmente diferente a como es el chat del cs default

¡ Buen aporte !

Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Responder
#24
(21/06/2014, 03:41 AM)cLAANS escribió: Puedo poner espacios y saldría mi nombre solo.
Puedo escribir en verde, azul y rojo.

Podrías poner una opción para lo siguiente:
Con la forma que estas hookeando el say si yo estoy vivo y alguien esta muerto nos podremos leer entre los 2 osea totalmente diferente a como es el chat del cs default

¡ Buen aporte !

Saludos,
cLAANS.-

es sarcasmo o es lo que yo pienso Genius parecio eso pacman
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#25
(21/06/2014, 03:53 AM)K.- escribió:
(21/06/2014, 03:41 AM)cLAANS escribió: Puedo poner espacios y saldría mi nombre solo.
Puedo escribir en verde, azul y rojo.

Podrías poner una opción para lo siguiente:
Con la forma que estas hookeando el say si yo estoy vivo y alguien esta muerto nos podremos leer entre los 2 osea totalmente diferente a como es el chat del cs default

¡ Buen aporte !

Saludos,
cLAANS.-

es sarcasmo o es lo que yo pienso Genius parecio eso pacman

No, no es sarcasmo

Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)