Informaciуn completa del uso del MySQL en SA-MP -
DarkChildren - 16.06.2010
MySQL - SAMP
[b]En esta guia les voy a explicar mas o menos como funciona el MySQL en samp y como trabajar en йl para hacer una base de datos del GM. Lo primero que todo son los archivos que vamos a usar, en el siguiente pack, van a tener todo lo necesario para hacer uso de MySQL en samp.
=>
http://www.mediafire.com/?dfhma5noymw
Hare de cuenta que todos aquellos que vayan a hacer uso practico de esta guia, tengan instalado MySQL y el server samp, funcionando sin ningun problema, y por lo menos tengan un minimo de conocimientos en el uso de base de datos mysql y conocimientos en samp y pawn, bien lo primero que vamos a hacer serб ubicar cada uno de nuestros archivos contenidos en el pack anterior en sus respectivos lugares y configurar samp a su debida manera.
=> a_mysql.inc
Este archivo es el .inc, necesario para poder hacer uso de el plugin que mas adelante vamos a hablar; el a_mysql.inc lo vamos a copiar en la carpeta include en pawno (.\PAWNO\include\), ya con eso es suficiente para que pawno lo reconosca tanto en el editor como el compilador.
=> sampmysql.dll
Este archivo .dll, es el plugin que va a usar el .inc anteriormente dicho, lo vamos a ubicar en la carpeta plugins, despues de esto abrimos el archivo de configuraciуn server.cfg, y en la linea donde dice plugins, al lado ponemos el mismo nombre del archivo en este caso, sampmysql, cerramos y guardamos el archivo server.cfg.
=> libmysql.dll
El siguiente archivo es la libreria original de MySQL, es necesaria para que el plugin sampmysql, haga uso de sus funciones internas para comunicarse con la base de datos. Lo unico que tenemos que hacer es copiarlo a la carpeta raiz del server, junto a los archivos server.cfg y samp-server.exe.
=> mysql.pwn
Este ultimo archivo no es ningun FS, es un archivo que contiene las funciones en pawn, que facilitan el uso de el .inc junto con el plugin, lo pueden ubicar en la carpeta gamemodes, despues para hacer uso de este es necesario llamarla por medio de #include dentro del GM principal, vamos a agregamos estas lineas justo debajo de #include <a_samp>:
pawn Код:
#include <a_mysql>#define MAX_STRING 255#define MYSQL_HOST "127.0.0.1"#define MYSQL_USER "root"#define MYSQL_PASS ""#define MYSQL_DB "samp"
[b]-MYSQL_HOST: La ip donde estб ubicado la base de datos MySQL.
-MYSQL_USER: El usuario para ingresar a la base de datos.
-MYSQL_PASS: La contraseсa del usuario.
-MYSQL_DB: El nombre de la base de datos.
Despues de todo esto, es necesario agregar una base de datos llamada samp, y en ella agregar una tabla llamada players, y en ella agregar ID, NOMBRE, CLAVE como principales, como llave principal usar ID, ya despues pueden agregar otra como DINERO, BANCO, etc.
NOTA: No explico como agregar esto, puesto que me extenderia mucho, y se son cosas basicas que todos aquellos que quieran hacer uso de MySQL necesitan saber, pueden usar PhpMyAdmin, u otro programa recomendable como SQL Maestro
Bueno ya con eso tenemos todo configurado y listo para hacer uso, mas adelante les voy a explicar de forma breve cada funciуn, contenida dentro de mysql.pwn.
=> MySQLConnect(sqlhost[], sqluser[], sqlpass[], sqldb[])
Bueno esta funcion es simple, y su funciуn es conectarse con la base de datos, su parametros no tienen mucho misterio, son sqlhost para la ip del host del MySQL, sqluser para el usuario, sqlpass la contraseсa, y sqldb para el nombre de la base de datos. Esta funcion va ubicada en el callback OnGameModeInit().
=> MySQLDisconnect()
Su funciуn es desconectar de forma segura el server con la base de datos, principalmente va ubicado en el callback OnGameModeExit().
=> MySQLCheckConnection()
Su funciуn es hacer un chequeo de conexiуn con la base de datos, puede ser usada en cualquier lado del GM, pero principalmente se usa cuando se va a hacer un query.
=> MySQLUpdateBuild(query[], sqlplayerid)
Esta funciуn no es usada manualmente, la usa otra funciуn para armar un query, esto para actualizar un dato en alguna tabla en la base de datos.
=> MySQLUpdateFinish(query[], sqlplayerid)
Al igual que la anterior no la vamos a usar manualmente, va a ser usada por otras funciones para facilitar mas el codigo, su principal funciуn es para cerrar un query.
=> MySQLUpdatePlayerInt(query[], sqlplayerid, sqlvalname[], sqlupdateint)
Su funciуn es actualizar un valor de tipo numerico, entero, es decir sin decimales.
=> MySQLUpdatePlayerFlo(query[], sqlplayerid, sqlvalname[], Float

qlupdateflo)
Su funciуn es actualizar un valor de tipo flotante, es decir con decimales.
=> MySQLUpdatePlayerStr(query[], sqlplayerid, sqlvalname[], sqlupdatestr[])
Su funciуn es actualizar un valor de tipo texto, nombre, etc.
=> MySQLCheckAccount(sqlplayersname[])
Su funciуn es chequear en la base de datos si un nombre se encuentra, si es asi regresa el numero de ID correspondiente.
Nota: Esta id no es la misma que la playerid, es una id unica que identifica el nombre en la base de datos.
=> MySQLFetchAcctSingle(sqlplayerid, sqlvalname[], sqlresult[])
Esta lo que hace es retornar un valor de tipo cadena, es decir texto, de la base de datos, puede hacer retornar tanto un numero decimal como uno no decimal, solo que para poder hacer uso de este, necesita ser convertido de str a int o str a float. Sus parametros son sqlplayer, que es la id del jugador correspondiente que lo identifica en la base de datos, sqlvalname, es el nombre de la tabla de donde quiere sacar el valor, por ejemplo DINERO, y sqlresult, es lo que devuelve, recordar que siempre lo retorna en tipo String, o cadena.
=> MySQLCreateAccount(newplayersname[], newpassword[])
Su funciуn es crear una cuenta de algun jugador, en newplayersname va el nombre del jugador, y en newpassword va la clave para que despues pueda entrar.
=> CheckMYSQL()
Su funcion es chequear si hay seсal de conexiуn con la base de datos, y si es posible conectarse a ella, por lo general va antes de MySQLConnect(sqlhost[], sqluser[], sqlpass[], sqldb[]).
=> SQL(sqlid, query[])
Esta funciуn retorna de forma facil algun valor en tipo String, tiene la misma funciуn de MySQLFetchAcctSingle(sqlplayerid, sqlvalname[], sqlresult[]), pero estб me parece mas facil para usar en todo el codigo, sqlid, la id del jugador en la base de datos, query, el nombre de la tabla de donde quiere sacar el valor. Al igual que en la anterior esta retorna un valor de tipo cadena, ya despues se puede convertir en Int o Float, por ejemplo:
pawn Код:
New Dinero = strval(SQL(PlayerInfo[playerid][pSQLID], "DINERO"));
=> UpSQLInt(sqlid, variable[], valor)
Esta funciуn actualiza un valor de tipo Integer, sus parametros son simples, sqlid, la id del jugador en la base de datos, variable, el nombre de la tabla, valor, el valor nuevo que se va a agregar.
Ejemplo:
pawn Код:
UpSQLInt(PlayerInfo[playerid][pSQLID], "DINERO", 25000);
=> UpSQLStr(sqlid, variable[], valor[])
Esta funciуn actualiza un valor de tipo String, sus parametros son simples, sqlid, la id del jugador en la base de datos, variable, el nombre de la tabla, valor, el texto nuevo que se quiere agregar.
Ejemplo:
pawn Код:
UpSQLStr(PlayerInfo[playerid][pSQLID], "CIUDAD", "LibertyCity");
=> UpSQLFlo(sqlid, variable[], Float:valor)
Esta funciуn actualiza un valor de tipo Float, sus parametros son simples, sqlid, la id del jugador en la base de datos, variable, el nombre de la tabla, valor, el valor flotante nuevo que se quiere agregar.
Ejemplo:
pawn Код:
UpSQLFlo(PlayerInfo[playerid][pSQLID], "VIDA", 75.3);
Esta guia tambien la hago, por que R3spawn, querнa consultar sobre el MySQL (Si mal acuerdo xD..)
Bueno eso es principalmente todo lo necesario para empezar a usar MySQL en sus GMs. Espero que les sirva, puesto que e visto a mucha gente con la necesidad de guardar sus registros de jugadores en una base de datos.
Informacion Aportada por Rasis.
Re: Informaciуn completa del uso del MySQL en SA-MP -
TheChaoz - 16.06.2010
muy bueno che, a muchos les va a ser de gran utilidad.
Re: Informaciуn completa del uso del MySQL en SA-MP -
MrDeath537 - 16.06.2010
Muy util

. Pero... COMO CARA$% instalo el MySQL? Es lo que nunca supe ya lei mucho y se bastantes cosas sobre el pero nadie me dijo como instalarlo :\
Re: Informaciуn completa del uso del MySQL en SA-MP -
TEMPORAL100 - 17.06.2010
el archivo ya no esta
Re: Informaciуn completa del uso del MySQL en SA-MP -
xenowort - 18.06.2010
Todos aprenden facil eso, pero todos caen cuando estan haciendo la web en php XD.
y en ese momento estoy yo! xD
Re: Informaciуn completa del uso del MySQL en SA-MP -
Cesar_Biker - 18.06.2010
Quote:
Originally Posted by xenowort
Todos aprenden facil eso, pero todos caen cuando estan haciendo la web en php XD.
y en ese momento estoy yo! xD
|
Y zas, injection.
Re: Informaciуn completa del uso del MySQL en SA-MP -
Rax0r - 20.06.2010
Otra cosa muy importante que debes de agregar: El MySQL no es estable en pawno.
Gente que juega LS-RP lo habrб podido notar.
Un saludo
Re: Informaciуn completa del uso del MySQL en SA-MP -
Cesar_Biker - 20.06.2010
Quote:
Originally Posted by Rasis
Otra cosa muy importante que debes de agregar: El MySQL no es estable en pawno.
Gente que juega LS-RP lo habrб podido notar.
Un saludo
|
Depende de como lo hagas.
Otra cosa es que los de ls-rp dejen algъn "agujero" en sus scripts(ya sean de la web o del servidor) que pueda dar un error, y ese error podrнa ser utilizado para averiguar el usuario de la BD o las tablas y ...
Re: Informaciуn completa del uso del MySQL en SA-MP -
xenowort - 20.06.2010
Quote:
Originally Posted by Dennis Ritchie & Brian Kernighan
Quote:
Originally Posted by Rasis
Otra cosa muy importante que debes de agregar: El MySQL no es estable en pawno.
Gente que juega LS-RP lo habrб podido notar.
Un saludo
|
Depende de como lo hagas.
Otra cosa es que los de ls-rp dejen algъn "agujero" en sus scripts(ya sean de la web o del servidor) que pueda dar un error, y ese error podrнa ser utilizado para averiguar el usuario de la BD o las tablas y ...
|
Claro utilizando RFI, remote file inclussion solo pasa en php, porque permite incluir archivos externos mediante include() yo en la pagina de fenixzone podria hacer esto
http://www.fenixzone.com/samp/index....t.com/hack.php
el archivo hack.php es un script que escribe en el index de la pagina de fenixzone "Este sv fue hackeado por xenowort"
Porque paso esto? porque simplemento ellos dejaron el safe_mode de php "OFF", eso es un gran agujero de seguridad, ademas de ser uno de los hacks mas divertidos xD, o podrias en el link poner otra pagina y en el index de fenixzone apareceria esa pagina. Eso explica el tema que habian hecho de que n3pturno habia hackeado, que no es el verdadero n3ptuno.
Cosa que en ASP CGI, no pasa porque no permiten incluir archivos externos a el host.
Respuesta: Re: Informaciуn completa del uso del MySQL en SA-MP -
pagaromx96 - 19.11.2010
Muy buena guia.