Preguntas de script
#1

Hola gente soy nuevo en esto de programaciуn en pawno, ya llevo un poco de tiempo y he aprendido muchas cosas, teniendo en cuenta de que se me borrу un GM, pero bueno ese no es el punto, aun tengo algunas dudas sobre algunos conceptos de script:

1. Por que en algunas ocasiones se usa el
Код:
if(!IsPlayerConnect(playerid))
y en otras
Код:
if(IsPlayerConnected(playerid)))
, es decir la pregunta es a que hace referencia el sнmbolo !?

їAcaso tiene alguna relaciуn con el sнmbolo de comparaciуn (!=)?

Y no solo en este si no que en otras cosas como:

Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp("/heal", cmdtext, true))
    {
        SetPlayerHealth(playerid, 100);
        return 1;
    }
    if(!strcmp("/kill", cmdtext, true))
    {
        SetPlayerHealth(playerid, 0);
        return 1;
    }
    return 0;
}
2. Estuve mirando el tutorial de TheChaoz sobre aprender a programar en PAWNO y me quedo una duda sobre las funciones, cual es la diferencia entre la public, static y stock.

Especialmente la stock, en que casos se usa a diferencia de las demбs?

3. Estas preguntas son mas de opiniуn:
A. їQue almacenador de archivos les parece mejor?, Y_Ini, Dini, u otro?
B. їQue procesador de comandos les parece mejor?, Y_Commands, Zcmd, u otro?

Muchas gracias de antemano.
Reply
#2

Te indico que es el signo de admiracion '!', es para comprobar que dos variables no sean iguales, si en una condicional usas solo el '!' y la variable estбs indicando que esa condicional no tienen que tener йsa variable ejemplo:

pawn Код:
new var = 1;
if(!var)print("Var no tiene uno");
else print ("Var si tiene uno");
//aqui nos imprime Var si tiene uno porque var estб con 1.
sin el '!' serнa asн:
pawn Код:
new var = 1;
if(var)print("Var si tiene uno");
else print ("var no tiene uno");
Vamos por algo mas avanzado.
En este caso un array uni-dimensional con 2 slots para hacer las comprobaciones con el operador '!'.
pawn Код:
new var[2];
var[0] = 1;
var[1] = 5;
if(var[0] != 1 || var[1] != 4)print("var slot 0 no es igual a 1 o talvez var slot 1 no es igual al 4");
en ese caso usamos '||' para darle un comodin si falla la primera condicion.
ahora muestro otro ejemplo con '&&' que quiere decir que luego de la primera condicion tambien tiene que cumplirse la segundo condicion.
pawn Код:
new var[2];
    var[0] = 6;
    var[1] = 6;

    if(!var[0] && !var[1])print("SE CUMPLE, NO TIENEN POSITIVOS");
    else print("TIENEN NUMEROS POSITIVOS");
Bueno, esto lo aprendн practicando, tienes que practicar y leer mucho con mucho amor, pasiуn y dedicaciуn.
Reply
#3

El sнmbolo ! determina si hay o no un valor cual serб retornado por IsPlayerConnected, por ejemplo.

pawn Код:
new val = 0;

main()
{
    if(!val)
    {
        printf("YES!");
    }
    else
    {
        printf("NO!");
    }
}
Se cumplirнa el ! que dice: Si no hay ningъn valor y mostrarнa "YES!", pero nъmeros negativos no cuentan como "ningъn valor" por lo que un nъmero negativo no cumplirнa el !.
ґ
Sн tiene una comparaciуn al sнmbolo, el operador != dice: A no es igual a B, el "!" es como un "no"

https://sampwiki.blast.hk/wiki/Strcmp en este caso es por que si las cadenas son iguales retornan el valor "0" lanza 1 o -1 si no son iguales.

2. stock es una reserva, son cuestiones de memoria digamos, pero por ejemplo, un stock es una reserva en la memoria cual indica que posiblemente sea o no usado, public es una cual puede ser llamada, por ejemplo puedes llamar una public en CallRemoteFunction, CallLocalFunction, SetTimer y SetTimerEx, etc.. un stock no.

3. Y_INI es mejor, basta con ver el cуdigo de sus includes, pero en tema de gestiуn de datos bases MySQL es la mejor elecciуn.

4. Y_Commands tiene caracterнsticas de permisos, argumento "help", etc.. ZCMD es rбpido, sencillo y mбs rбpido por poco que Y_Commands, depende quй buscas, que los comandos en masa sean rбpidos, tener mбs caracterнsticas, etc .. El que menos te recomiendo es dini..
Reply
#4

Oh, listo muchas gracias, ya se aclararon mis dudas, la primera si era que me tenia muy confundido por que yo sabia que significaba !=, pero no el !, reitero muchas gracias.

PD: Usarй Y_ini, ya que MYSQL es muy complicado y aun no he visto bases de datos, seguro este semestre que tengo en la U, cambie el sistema de almacenamiento, asн me servirнa para practicar.
Reply
#5

Hola, me quedo una duda sobre el strcmp, cuando uno no poner ningъn valor en el ignorecase, este toma alguno por default o їcomo funciona?.

Por ejemplo:

pawn Код:
if(!strcmp(name, key))
{
  //Algo
}
їComo se leerнa? "Si, la variable 1(name) es igual a la variable 2(key), hago esto?"
Reply
#6

Son argumentos opcionales, sн, en este caso puedes ponerlos o no ponerlos, al no ponerlos se aplica el "por defecto" que en este caso Ignorecase se sitъa a true, el otro se sitъa a la cantidad de carбcteres en la cadena para comprobarlos todos. Una funciуn con argumentos opcionales serнa por ejemplo asн:

pawn Код:
stock GivePlayerMoneyEx(playerid, cantidad = 2)
{
    GivePlayerMoney(playerid, cantidad);
}
Es una funciуn, puedes usarla sin aсadir el segundo argumento y lo setearб al 2 en este caso, no pedirб que se aсada, no es obligatorio.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)