Creando un simple sistema de AFK
#1

Ola, weno en este post vengo a explicarles mi breve tutorial de como hacer un simple, sencillisimo sistema de AFK.
Weno primero q nada aclaro q me estoy explicando i hablando bien jeje xD weno comencemos..

Primero q nada agregamos el NEW de (en este kso ausente) seria asi:
Код:
new Ausente[MAX_PLAYERS];
Una vez agregado el new es facil, solo ponemos el cuerpo del comando, de esta manera. Nos podemos ubicar en:
OnPlayerCommandText i ponemos:

Код:
if (strcmp("/ausente", cmdtext, true, 10) == 0)
{
    new nombre[MAX_PLAYER_NAME], string1[256], string2[256];
    GetPlayerName(playerid, nombre, sizeof(nombre));
    format(string1, sizeof(string1), "*%s Ha ingresado en el modo AFK. (Ocupado/No disponible).", nombre);
    format(string2, sizeof(string1), "*%s Ha regresado del modo AFK. (Libre/Disponible).", nombre);
    if (Ausente[playerid] == 0)
    {
        Ausente[playerid] = 1;
        TogglePlayerControllable(playerid, false);
        SetCameraBehindPlayer(playerid);
        SendClientMessage(playerid, 0xDABB3EAA, "Ahora estas ausente. Para dejar de estarlo usa /ausente nuevamente.");
        SendClientMessageToAll(0x9EC73DAA, string1);
   }
   else if (Ausente[playerid] == 1)
   {
      Ausente[playerid] = 0;
        TogglePlayerControllable(playerid, true);
        SetCameraBehindPlayer(playerid);
        SendClientMessage(playerid, 0xDABB3EAA, "Ya no estas ausente.");
        SendClientMessageToAll(0x9EC73DAA, string2);
   }
   return 1;
}
Listo, vieron q facil? weno dudas, preguntas o BUGS solo diganlo..
ACLARO Q ES MI FS I NO ES COPIADO!!!!!!
Salu2
Reply
#2

pawn Код:
format(string1, sizeof(string1), "RevLatina: *%s Ha ingresado en el modo AFK. (Ocupado/No disponible).", nombre);
    format(string2, sizeof(string1), "RevLatina: *%s Ha regresado del modo AFK. (Libre/Disponible).", nombre);
їCopiar y pegar?
Reply
#3

jaja lo acabo d modifikr, lo cree yo para ese server perdon.. si no me creen pregunten al dueсo
Reply
#4

es bastante simple. podrias hacer el codigo un poco mas eficas dejandolo asi:
pawn Код:
if(strcmp("/ausente", cmdtext, true) == 0)
{
    new nombre[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, nombre, sizeof(nombre));
    if(!Ausente[playerid])
    {
        Ausente[playerid] = 1;
        TogglePlayerControllable(playerid, false);
        SetCameraBehindPlayer(playerid);
        SendClientMessage(playerid, 0xDABB3EAA, "Ahora estas ausente. Para dejar de estarlo usa /ausente nuevamente.");
        format(string, sizeof(string), "*%s Ha ingresado en el modo AFK. (Ocupado/No disponible).", nombre);
        SendClientMessageToAll(0x9EC73DAA, string);
   }
   else
   {
        Ausente[playerid] = 0;
        TogglePlayerControllable(playerid, true);
        SetCameraBehindPlayer(playerid);
        SendClientMessage(playerid, 0xDABB3EAA, "Ya no estas ausente.");
        format(string, sizeof(string), "*%s Ha regresado del modo AFK. (Libre/Disponible).", nombre);
        SendClientMessageToAll(0x9EC73DAA, string);
   }
   return 1;
}
Nota: no hay sentido en crear un array con un tamaсo de 256 bytes cuando se van a usar 128, el chat nunca va mas alla de 128.

aca una explicacion exelente sobre esto Why you should not use 256 de ****** (ingles)
Reply
#5

weno ¬¬ es lo mismo xD
Reply
#6

en realidad usando no uno si no 2 arrays de 256 estas desperdiciando memoria, asi que no es lo mismo, pero son formas diferentes de verlo.

PD: soy demasiado detallista en algunos casos tmp es que se desperdicia la re memoria, pero si se puede evitar mejor
Reply
#7

Estoy con the_chaoz :P, si bien puede parecer poca la memoria desperdiciada (no mбs de 1kb, y hoy en dнa una computadora servidor tiene mнnimo 1GB (~1.000.000kb) de RAM), estб bueno acostumbrarse a ahorrar memoria en cada cosa que se haga.
Ahorrar un par de bytes en un comando no es nada, pero ahorrar un par de bytes en unos cuaantos comandos puede llegar a hacer la diferencia.
Reply
#8

Aсade [Tutorial] al principio del nombre y crйalo como si fuera tal.

Estoy de acuerdo con los demбs, yo antes era bбrbaro con los scripts y lo hacнa todo exageradнsimo, por suerte MrDeath me enseсу el buen camino :P
Reply
#9

Sн, me olvidй de decirtelo yo en mi comentario xD!. Estarй traduciendo el tutorial de ******.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)