Preguntas de script -
TheMatius - 31.01.2015
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.
Respuesta: Preguntas de script -
jotajeda - 31.01.2015
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.
Respuesta: Preguntas de script -
Zume - 31.01.2015
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..
Respuesta: Preguntas de script -
TheMatius - 31.01.2015
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.
Respuesta: Preguntas de script -
TheMatius - 01.02.2015
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?"
Respuesta: Preguntas de script -
Zume - 01.02.2015
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.