[Tutorial] Guardar datos sin registro -
[J]ulian - 21.11.2010
GUARDAR DATOS SIN REGISTRO
En este simple tutorial les enseсarй a como guardar algъn dato para que al volver a entrar siga teniendo lo mismo, pero sin ser necesario un registro (ya se por comando o por dialogos) es algo muy util al realizar algъn filterscript o similar, lo pondrбn utiliar en donde mбs comodo le queden, tambiйn lo pueden utilizar en GameModes. Lo ъnico que necesitaremos serб el include "dini" que podrбn encontrar por el foro.
PASO 1: Deberemos incluir, valga la redundancia, el include, para que sus funciones puedan ser utilizadas en el GameMode/FilterScripts. Para eso utiliaremos lo siguiente donde estйn los demбs #includes.PASO 2: Primero que nada deberemos hacer un "new" para averiguar el nombre del jugador. Para eso pondremos lo siguiente debajo de los #includes<>PASO 3: Ahora nos dirigiremos a OnPlayerConnect, que allн sucede todo cuando el jugador se conecta. Deberemos: Averiguar el nombre del jugador, comprobar si el archivo existe, si no existe crearlo, si existe obtener los datos. Para eso, harйmos lo siguiente:
pawn Код:
GetPlayerName(playerid,jugadornombre,30); // Obtiene el nombre.
if(!dini_Exists(jugadornombre)) // Comprueba si no existe.
dini_Create(jugadornombre); // Lo crea.
else if(dini_Exists(jugadornombre)) // Si no, obtiene los datos.
{
SetPlayerScore(playerid, dini_Int(jugadornombre,"Score"));// Crea la variable del archivo.
}
PASO 4: En este paso deberemos guardar los datos del jugador en el archivo creado al conectarse. De la siguiente manera. Entonces, utilizaremos el siguiente codigo
pawn Код:
GetPlayerName(playerid,jugadornombre,30); // Obtiene el nombre del jugador.
dini_IntSet(jugadornombre,"Score", GetPlayerScore(playerid)); // Guarda los datos en el archivo.
PASO 5: Acб llega el final, cargar los datos del archivo al jugador. Para eso utilizaremos el siguiente cуdigo en OnPlayerSpawn:
pawn Код:
SetPlayerScore(playerid, dini_Int(jugadornombre,"Score")); // Carga el dato al jugador.
CREDITOS: JackDaniel (Acб [J]ulian.)
PARA: PawnoScripting (Si queres postearlo en algъn otro lado, deberбs pedir permiso por Mensaje Privado)
NOTA:: Si notan algъn error, por favor dнganmelo que seguro fue de despistado, ya que lo hice aquн en el foro.
Respuesta: [Tutorial] Guardar datos sin registro -
benjas09 - 21.11.2010
esto no es PawnoScrpting xD
bueno el tuto
Respuesta: [Tutorial] Guardar datos sin registro -
TheChaoz - 21.11.2010
voy a ser un poco critico pero buen:
1єIDEM q benjas, esto no es PawnoScripting.
2єDini es lento y viejo, recomiendo el uso de djson o y_ini(archivos) MySQL(database)
3єeso en un servidor q este montado sobre un windows, si no hay una restriccion previa, podria llegar a causar bugs.
4єcreo q no es muy dificil saber que no hace falta registrar una cuenta para poder guardar archivos, aun que lo q vos haces es registrarla pero sin contraseсa, de modo que por ejemplo cualquier jugador con el nick "Killer" tendran las mismas stats, y compartiran el archivo.
5єsi definis un array para almacenar el nombre de un jugador usa [MAX_PLAYER_NAME] no el espacio directamente, ya que si cambia de version puede llegar a cambiar, y de este modo evitas posibles bugs.
6єsi usas un if, exepto que el codigo sea una sola sentencia y este en la misma linea del if, debes usas brackets ( '{' y '}').
7єel codigo de OnPlayerSpawn deberias sacarlo, dado que va a setear el score siempre al score inicial y salvo q el score del jugador aumente antes de q se valla, ej: si spawnea y luego se va, su score no cambiara.
8єel array para almacenar el nombre del jugador esta mal, siempre contendra el nombre del ultimo jugador que ingreso al servidor, arregla eso por favor.
Re: Respuesta: [Tutorial] Guardar datos sin registro -
[J]ulian - 21.11.2010
Quote:
Originally Posted by benjas09
esto no es PawnoScrpting xD
bueno el tuto
|
Ya sй, pero yo no lo hice para aquн, lo hice para allб, por eso pongo que fuй para allб, sуlo lo posteй aquн.
Quote:
Originally Posted by the_chaoz
voy a ser un poco critico pero buen:
1єIDEM q benjas, esto no es PawnoScripting.
2єDini es lento y viejo, recomiendo el uso de djson o y_ini(archivos) MySQL(database)
3єeso en un servidor q este montado sobre un windows, si no hay una restriccion previa, podria llegar a causar bugs.
4єcreo q no es muy dificil saber que no hace falta registrar una cuenta para poder guardar archivos, aun que lo q vos haces es registrarla pero sin contraseсa, de modo que por ejemplo cualquier jugador con el nick "Killer" tendran las mismas stats, y compartiran el archivo.
5єsi definis un array para almacenar el nombre de un jugador usa [MAX_PLAYER_NAME] no el espacio directamente, ya que si cambia de version puede llegar a cambiar, y de este modo evitas posibles bugs.
6єsi usas un if, exepto que el codigo sea una sola sentencia y este en la misma linea del if, debes usas brackets ( '{' y '}').
7єel codigo de OnPlayerSpawn deberias sacarlo, dado que va a setear el score siempre al score inicial y salvo q el score del jugador aumente antes de q se valla, ej: si spawnea y luego se va, su score no cambiara.
8єel array para almacenar el nombre del jugador esta mal, siempre contendra el nombre del ultimo jugador que ingreso al servidor, arregla eso por favor.
|
Cuando tenga un ratito, que estoy liado, lo arreglo.
Re: [Tutorial] Guardar datos sin registro -
cocolabush - 21.11.2010
Vos hisiste asi:
Quote:
Originally Posted by [J]ulian
[...] [...]
pawn Код:
GetPlayerName(playerid,jugadornombre,30); // Obtiene el nombre. if(!dini_Exists(jugadornombre)) // Comprueba si no existe. dini_Create(jugadornombre); // Lo crea. else if(dini_Exists(jugadornombre)) // Si no, obtiene los datos. { SetPlayerScore(playerid, dini_Int(jugadornombre,"Score"));// Crea la variable del archivo. }
[...]
pawn Код:
GetPlayerName(playerid,jugadornombre,30); // Obtiene el nombre del jugador. dini_IntSet(jugadornombre,"Score", GetPlayerScore(playerid)); // Guarda los datos en el archivo.
[...]
pawn Код:
SetPlayerScore(playerid, dini_Int(jugadornombre,"Score")); // Carga el dato al jugador.
[...]
|
____________________
Lo que te convendrнa hacer es:
[...]
pawn Код:
new jugadornombre[MAX_PLAYERS][MAX_PLAYER_NAME];
[...]
pawn Код:
GetPlayerName(playerid,jugadornombre[playerid],MAX_PLAYER_NAME);
if(!dini_Exists(jugadornombre[playerid]))
dini_Create(jugadornombre[playerid]);
else if(dini_Exists(jugadornombre[playerid]))
{
SetPlayerScore(playerid, dini_Int(jugadornombre[playerid],"Score"));
}
[...]
pawn Код:
// GetPlayerName(playerid,jugadornombre[playerid],MAX_PLAYER_NAME); // esto es medio al pe' xq ya lo hiciste antes.
dini_IntSet(jugadornombre[playerid],"Score", GetPlayerScore(playerid));
[...]
pawn Код:
SetPlayerScore(playerid, dini_Int(jugadornombre[playerid],"Score"));
[...]
____________________
y una pregunta .. xq
"score" y no "puntos" o algo similar... xq esta en ingles??
Re: [Tutorial] Guardar datos sin registro -
[J]ulian - 21.11.2010
Quote:
Originally Posted by cocolabush
Vos hisiste asi:y una pregunta .. xq "score" y no "puntos" o algo similar... xq esta en ingles??
|
Porque me gusta mas Score, que puntos.
Re: [Tutorial] Guardar datos sin registro -
cocolabush - 21.11.2010
{OFF TOPIC}
Quote:
Originally Posted by [J]ulian
Porque me gusta mas Score, que puntos.
|
ta ... solo queria saber... yo antes hacia todo en ingles... pero me di cuenta que es como darle el credito a "ellos" cuando lo publicas...
Re: [Tutorial] Guardar datos sin registro -
The_Moddler - 21.11.2010
Juli, solo una cosa, el nombre que puede tener un jugador como maxнmo es 24 + es caracter nulo, en total 25, si pones 30, estarнas desperdiciando 5 bytes, que aca no es mucho, pero imaginate en un GM de 25 mil lineas..
Y como te dijieron antes, te convendrнa utilizar djson o y_ini, son mбs rapidos.
En fin, buen tuto, por cierto, soy Fede..
Un saludo
Respuesta: Re: [Tutorial] Guardar datos sin registro -
MrDeath537 - 22.11.2010
Quote:
Originally Posted by The_Moddler
Juli, solo una cosa, el nombre que puede tener un jugador como maxнmo es 24 + es caracter nulo, en total 25, si pones 30, estarнas desperdiciando 5 bytes, que aca no es mucho, pero imaginate en un GM de 25 mil lineas..
Y como te dijieron antes, te convendrнa utilizar djson o y_ini, son mбs rapidos.
En fin, buen tuto, por cierto, soy Fede..
Un saludo 
|
A pesar que es verdad lo de reducir los arrays, peores son los RP que invaden todo SA-MP que por poco no usan 256 para una sola letra.
Respuesta: [Tutorial] Guardar datos sin registro -
TheChaoz - 22.11.2010
eso no viene al caso, y ademas es el bug mas chico de ese codigo.