Ayuden
#7

Bueno, te doy una explicaciуn rбpida y bбsica. En un GM, vos vas a encontrar publics/callbacks, pero no todas, ya que vos las podйs agregar, y obviamente, crear propias. Tambiйn, existen funciones, que tambiйn podйs crear funciones propias. Tenemos public OnPlayerCommandText, sirve para poner comandos. Se arma asн;

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/comando1", true) == 0)
    {
        // Acб la funciуn que habrб en el comando.
        return 1;
    }

    if(strcmp(cmd, "/comando2", true) == 0)
    {
        // Acб la funciуn que habrб en el comando.
        return 1;
    }

    if(strcmp(cmd, "/comando3", true) == 0)
    {
        // Acб la funciуn que habrб en el ъltimo comando.
        return 1;
    }
    else
    {
        SendClientMessage(playerid, CODIGO_DEL_COLOR, "Mensaje que aparecerб al escribir un comando incorrecto.");
    }
    return 1;
}
Si te fijas en mi ejemplo, hice 3 comandos, el comando1, comando2 y comando3, la funciуn de cada comando debe retornar en 1 antes de la llave que cierre a la condicional de comando strcmp, luego de que coloques el ъltimo comando, colocas un else con el mensaje de error que se enviarб en caso de que el jugador coloque un comando incorrecto. Sencillo, їverdad? no te olvides de colocar un cуdigo de color PAWN en donde puse CODIGO_DEL_COLOR, aunque tambiйn, puedes definir un color y meter ahн la definiciуn, por ejemplo, donde va CODIGO_DEL_COLOR, puedes poner en lugar del cуdigo, una definiciуn como COLOR_BLANCO, pero antes de hacer йsto, debes definir al COLOR_BLANCO, asн;

pawn Код:
#define COLOR_BLANCO 0xFFFFFFAA
Eso irнa al principio del GM, y al definirlo una vez, puedes usarlo todas las veces que quieras.

Hablй de funciones, ahн tenйs una, SendClientMessage, sirve para enviar un mensaje a un jugador.

playerid, es la ID que tiene una persona que ejecutу un comando, o una funciуn, y params[0], es un jugador como segundo parбmetro. Un ejemplo de algo que afecte a playerid, es por ejemplo, usar /curarse (sin parбmetros), que le va a dar vida a 100 por ejemplo al jugador que ejecutу el comando (playerid), por medio de la funciуn SetPlayerHealth, y uno que afecte a params[0], serнa /curara <ID>, habrнa un parбmetro, que es la ID del jugador afectado (que no es uno mismo, por ende, params[0]), que le darб vida a la ID seleccionada, algunos usan giveplayerid en lugar de params[0], pero deben definirlo. Entonces, tendrнamos dos comandos, y con esos dos, asн nos quedarнa OnPlayerCommandText por el momento;

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/curarme", true) == 0)
    {
        SetPlayerHealth(playerid, 100);
        return 1;
    }

    if(strcmp(cmd, "/curara", true) == 0)
    {
        SetPlayerHealth(params[0], 100);
        return 1;
    }
    else
    {
        SendClientMessage(playerid, -1, "Comando inexistente.");
    }
    return 1;
}
Te preguntarбs, їcуmo crearemos un comando que nos lleve por ejemplo, afuera de la comisarнa de LSPD?

Bien, usaremos la funciуn SetPlayerPos(playerid,Float,Float:y,Float:z); y como sabemos, las ejes de coordenadas X, Y y Z son floats, tales floats son usados como parбmetros en la funciуn antes mencionada. Йsta es una imagen en demostraciуn a los ejes. Entonces, explicarй un poco mбs, el mapa de San Andreas, estб dividido en coordenadas, en cada posiciуn verбs una coordenada distinta, un mйtodo para sacarla, es usando /save estando IG, y en la ruta Mis Documentos/GTA San Andreas User Files/SAMP/savedpositions.txt verбs la posiciуn, si lo usaste en la comisarнa de LSPD, verбs algo parecido a 1550.270874,-1255.880859,8606.085937. Los primeros nъmeros antes de la coma (,), indican el float:X, los que le siguen, el float:Y, y los que le siguen, el float:Z, que es de altura. Entonces, їcуmo haremos el comando que te lleve ahн? fбcil, con una simple funciуn dentro de un comando, lo llamaremos /ircomisaria al comando, y con SetPlayerPos te llevarб a las coordenadas que mencionй.

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmd, "/curarme", true) == 0)
    {
        SetPlayerHealth(playerid, 100);
        return 1;
    }

    if(strcmp(cmd, "/ircomisaria", true) == 0)
    {
        SetPlayerPos(playerid,1550.270874,-1255.880859,8606.085937);
        return 1;
    }

    if(strcmp(cmd, "/curara", true) == 0)
    {
        SetPlayerHealth(params[0], 100);
        return 1;
    }
    else
    {
        SendClientMessage(playerid, -1, "Comando inexistente.");
    }
    return 1;
}
Y lo que hice, fue agregar el comando /ircomisaria, entonces podrнas hacer otro, llamado /llevarcomisaria <ID>, que lo que harнa serнa llevar a la comisarнa al ID seleccionado, para eso, usas params[0] en SetPlayerPos en lugar de playerid.

Todo se hace experimentado, con la funciуn de enviar un mensaje, puedes informar por ejemplo a la persona que le diste vida 100, que le diste vida 100, їcуmo? es fбcil, despuйs de la funciуn de SetPlayerHealth, esribes algo como йsto; SendClientMessage(params[0], CУDIGO_DEL_COLOR, "Te han curado."); (que por cierto, no estб permitido escribir tildes en algo que no sea texto, te tirarб error al copilar, y bueno, se copila con F5, la parte de ediciуn es un archivo con extensiуn .pwn, al copilarlo con F5, te genera el .amx del GM, que sirve para encender el servidor). Ese mensaje, lo puedes hacer mбs complejo, pero no creo conveniente explicбrtelo ahora, serнa agregando variables, asн hacer que te indique quй jugador te seteу vida, y se puede acomplejar mбs el comando, agregarle un nuevo parбmetro de vida, para poder setear la vida que uno quiera, y en el mensaje ademбs de agregar quй jugador le dio vida, se tendrнa que agregar cuбnta vida le dio.

Mi explicaciуn fue demasiado bбsico, pero si eres nuevo en йsto, te podrнa servir.
Reply


Messages In This Thread
Ayuden - by uardo12 - 31.01.2013, 23:40
Respuesta: Ayuden - by Fluid016 - 31.01.2013, 23:59
Respuesta: Ayuden - by uardo12 - 01.02.2013, 00:04
Respuesta: Ayuden - by JustBored - 01.02.2013, 00:05
Respuesta: Ayuden - by Fluid016 - 01.02.2013, 00:07
Respuesta: Ayuden - by JustBored - 01.02.2013, 00:26
Respuesta: Ayuden - by Glimma - 01.02.2013, 00:26
Respuesta: Ayuden - by TheChaoz - 01.02.2013, 05:02
Respuesta: Ayuden - by uardo12 - 01.02.2013, 17:34
Respuesta: Ayuden - by JustBored - 01.02.2013, 17:52

Forum Jump:


Users browsing this thread: 1 Guest(s)