SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 08/04/2017, 06:32 PM   #1
Kaponi
Big Clucker
 
Kaponi's Avatar
 
Join Date: Mar 2017
Location: Venezuela
Posts: 91
Reputation: 7
Thumbs up Cosas básicas para empezar un GM (Actualizando)

¡Hola! mucha gente me estaba pidiendo éste tutorial por el Facebook y éste tutorial va dedicado a aquellas personas que están empezando a programar. Bien empezemos.

Primero tenemos que tener definido los includes (Yo usaré 'a_samp' y 'YSI')

PHP Code:
#include <a_samp>
#include <YSI\y_ini> 
Ahora definimos los siguientes dialogos (registro, logueo)

PHP Code:
#define DREGISTER 1
#define DLOGIN 2 
Después de los pasos anteriores definiremos la dirección donde se guardarán las cuentas

PHP Code:
#define PATH "/Cuentas/%s.ini" 
Ahora procederemos a crear el enum (variables) del jugador

PHP Code:
enum jInfo
{
      
Contra[64],
      
Dinero,
      
Administrador,
      
Float:PosX,
      
Float:PosY,
      
Float:PosZ,
}

new 
PlayersData[MAX_PLAYERS[jInfo]; 
Ahora bajaremos abajo de todo el modo de juego y añadiremos la función que cargará los datos de los jugadores

PHP Code:
forward LoadAccount_data(playeridname[], value[]);
public 
LoadAccount_data(playeridname[], value])
{
        
INI_Int("Contraseña"PlayersData[playerid][Contra]);
        
INI_Int("Dinero"PlayersData[playerid][Dinero]);
        
INI_Int("Administrador"PlayersData[playerid][Administrador]);
        
INI_Float("Pos_X"PlayersData[playerid][PosX]);
        
INI_Float("Pos_Y"PlayersData[playerid][PosY]);
        
INI_Float("Pos_Z"PlayersData[playerid][PosZ]);

Ahora haremos la función que va a extraer la dirección exacta de la cuenta del jugador que ingrese en el servidor

PHP Code:
stock UserPath(playerid)
{
      new 
string[128],PlayerNameFix[MAX_PLAYER_NAME];
      
GetPlayerName(playeridPlayerNameFix,sizeof(PlayerNameFix))
      
format(string,sizeof(string),PATH,PlayerNameFix);
      return 
string;

Lo siguiente que haremos será añadir el dialogo del logueo y registro, iremos al CALLBACK "OnPlayerRequestClass" ahora procederemos a añadir lo siguiente:

PHP Code:
if(fexist(playerid))

      
INI_ParseFile(UserPath(playerid)), "LoadAccount_%s", .bExtra true, .extra playerid);
      
ShowPlayerDialog(playeridDLOGINDIALOG_STYLE_INPUT"Panel de logueo""Está cuenta se encuentra registrada en nuestra base de datos, por favor ingrese una contraseña para ingresar""Entrar""Salir");
}
else 
//Ésto verá si el jugador no está registrado, si el jugador no está registrada le enviará el dialogo de registro
{
      
ShowPlayerDialog(playeridDREGISTERDIALOG_STYLE_INPUT,"Panel de registro""Está cuenta no se encuentra registrada en nuestra base de datos, por favor ingrese una nueva contraseña para registrarse""Entrar""Salir");

En el Callback "OnDialogResponse", añadiremos las funciones de los dialogos de registro y logueo

PHP Code:
if(dialogid DREGISTER)
{
      if (!
response) return Kick(playerid); //El 'Kick' es si le da en salir, lo expulse del servidor automaticamente
      
if(response)
      {
           if(!
strlen(inputtext)) return ShowPlayerDialog(playeridDREGISTERDIALOG_STYLE_INPUT"Error en el registro""Hubo un error en el registro, por favor ingrese su contraseña de nuevo""Registrar""Salir");
           new 
INI:File INI_Open(UserPath(playerid));
           
INI_SetTag(File,"data");
           
INI_WriteString(File,"Contrasena",inputtext);
           
INI_WriteInt(File,"Dinero",8000);
           
INI_WriteInt(File,"Admin",0);
           
INI_WriteFloat(File,"Pos_X",1958.33);
           
INI_WriteFloat(File,"Pos_Y",1343.12);
           
INI_WriteFloat(File,"Pos_Z",15.36);
           
INI_Close(File);
           
PlayersData[playerid][Dinero]=8000;
           
PlayersData[playerid][Administrador]=0;
           
PlayersData[playerid][PosX]=1958.33;
           
PlayersData[playerid][PosY]=1343.12;
           
PlayersData[playerid][PosZ]=15.36;
           
SetPlayerSkin(playerid26);
           
SpawnPlayer(playerid);
      }
}

if(
dialogid== DLOGIN)
{
       if (!
response) return Kick(playerid);
       if(
response)
       {
           if(
strcmp(inputtextPlayersData[playerid][Contra], true) == 0)
           {
                  
INI_ParserFile(UserPath(playerid), "LoadAccount_%s", .bExtra true, .extra playerid);
                  
GivePlayerMoney(playeridPlayersData[playerid][Dinero]);
                  
SpawnPlayer(playerid);
            }
            else
            {
                  
ShowPlayerDialog(playeridDLOGINDIALOG_STYLE_INPUT"Erro en el ingreso""Hubo un error en el ingreso por favor ingrese su contraseña para entrar""Entrar""Salir");
             }
             return 
1;
       }

Ahora abajo del GM procederemos a añadir el stock para que guarde la cuenta

PHP Code:
stock SaveAccount(playerid)
{
     new 
INI:File INI_Open(UserPath(playerid));
     
INI_SetTag(File,"data");
     
INI_WriteString(File"Contraseña"PlayersData[playerid][Contra]);
     
INI_WriteInt(File,"Dinero"PlayersData[playerid][Dinero]);
     
INI_WriteInt(File,"Administrador"PlayersData[playerid][Administrador]);
     
GetPlayerPos(playeridPlayersData[playerid][PosX], PlayersData[playerid][PosY], PlayersData[playerid][PosZ]);
     
INI_WriteFloat(File,"Pos_X",PlayersData[playerid][PosX]);
     
INI_WriteFloat(File,"Pos_Y",PlayersData[playerid][PosY]);
     
INI_WriteFloat(File,"Pos_Z",PlayersData[playerid][PosZ]);
     
INI_Close(File);
     return 
1;

Ahora en el CALLBACK "OnPlayerDisconnect" pondremos el stock que guardaría la cuenta de nuestro PJ

PHP Code:
SaveAccount(playerid); 
Por lo momento eso sería lo básico, más adelante pondré como quitar las entradas que viene del GTA:SA predeterminado, la bonificación, Text3DLabel e incluso como hacer mini-sistemas en el propio GM, cualquier duda u algo avisadmen

PD:Cualquier error que vean en el tutorial avisadme colegas
__________________
¡Venezuela fuerza!

Last edited by Kaponi; 21/05/2017 at 01:36 AM.
Kaponi is offline   Reply With Quote
Old 09/04/2017, 03:52 AM   #2
Goss
Banned
 
Join Date: Mar 2017
Location: Mongolia - Reconecting...
Posts: 64
Reputation: 2
Default Respuesta: Cosas básicas para empezar un GM (Actualizando)

Creo que esto ya es repetitivo, igualmente se agradece tu aporte!
Goss is offline   Reply With Quote
Old 09/04/2017, 05:01 PM   #3
Kaponi
Big Clucker
 
Kaponi's Avatar
 
Join Date: Mar 2017
Location: Venezuela
Posts: 91
Reputation: 7
Default Re: Respuesta: Cosas básicas para empezar un GM (Actualizando)

Quote:
Originally Posted by Goss View Post
Creo que esto ya es repetitivo, igualmente se agradece tu aporte!
Es repetido eso sí, pero no te preocupes que lo iré actualizando, igual muchas gracias!
__________________
¡Venezuela fuerza!
Kaponi is offline   Reply With Quote
Old 10/04/2017, 03:37 PM   #4
Gles
Big Clucker
 
Gles's Avatar
 
Join Date: Aug 2016
Location: Cargando...
Posts: 171
Reputation: 13
Default Respuesta: Cosas básicas para empezar un GM (Actualizando)

Buena guía
__________________
"- Nadie es mejor que nadie, todos somos iguales aunque uno sepa mas que otro."
Gles is offline   Reply With Quote
Old 11/04/2017, 03:13 AM   #5
xGrov3x
Big Clucker
 
xGrov3x's Avatar
 
Join Date: Jan 2014
Location: México
Posts: 64
Reputation: 3
Default Respuesta: Cosas básicas para empezar un GM (Actualizando)

¿Dedicado a personas que comienzan a programar?
Desde mi perspectiva no tiene sentido, pues bien: es muy repetido éste tipo de temas, los cuales siempre te dejan con preguntas como "¿para qué sirve esto?". Innumerables veces se ha visto la publicación y publicación de líneas que en ningún momento te dan una clara explicación.

No quito mérito a lo que intentas hacer, incluso, me alegra que lo hagas. Esto que hago es una crítica constructiva, también dedicada para usuarios que hacen lo mismo.

A qué quiero llegar, pues bien:
"Expliquen cada función que ponen para que la entiendan mejor. Hagan algo nuevo, no pongan las mismas variables o definiciones que en cientos de "gamemodes". QUE TODO SEA UN VERDADERO TUTORIAL"
__________________
Quién va a parar toda ésta locura que tengo dentro...
xGrov3x is offline   Reply With Quote
Old 15/04/2017, 09:16 PM   #6
Arthurillo
Little Clucker
 
Arthurillo's Avatar
 
Join Date: Aug 2016
Posts: 34
Reputation: 0
Default Re: Cosas básicas para empezar un GM (Actualizando)

Buena guía, Kap.
Arthurillo is offline   Reply With Quote
Old 22/04/2017, 08:51 AM   #7
Nekszer
Little Clucker
 
Nekszer's Avatar
 
Join Date: Apr 2017
Posts: 10
Reputation: 0
Default Re: Cosas básicas para empezar un GM (Actualizando)

muy buena guía, les servirá mucho a los que empiezan
Nekszer is offline   Reply With Quote
Old 13/05/2017, 03:28 PM   #8
angelobernaez
Little Clucker
 
Join Date: May 2017
Posts: 1
Reputation: 0
Exclamation Respuesta: Re: Respuesta: Cosas básicas para empezar un GM (Actualizando)

Quote:
Originally Posted by Kaponi View Post
Es repetido eso sí, pero no te preocupes que lo iré actualizando, igual muchas gracias!
hola amigo muy buen aporte xD oiye pero me sale este error yestoy confundido
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(195) : error 003: declaration of a local variable must appear in a compound block
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(195) : error 010: invalid function or declaration
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(200) : error 010: invalid function or declaration
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(202) : error 010: invalid function or declaration
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(202 -- 205) : error 010: invalid function or declaration
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(202 -- 210) : error 021: symbol already defined: "SetPlayerPos"
C:\Users\richard\Desktop\GM yo\gamemodes\CityCrazy.pwn(202 -- 210) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


7 Errors.
que debo hacer? para solucionarlo?
angelobernaez is offline   Reply With Quote
Old 17/05/2017, 12:30 AM   #9
Qarper
Little Clucker
 
Join Date: May 2017
Posts: 2
Reputation: 0
Default Re: Cosas básicas para empezar un GM (Actualizando)

Buena kap'
Qarper is offline   Reply With Quote
Old 20/05/2017, 11:03 PM   #10
FelipeAndres
Huge Clucker
 
FelipeAndres's Avatar
 
Join Date: Feb 2015
Location: Chile
Posts: 230
Reputation: 20
Default Respuesta: Cosas básicas para empezar un GM (Actualizando)

PHP Code:
#define PATH "/Cuentas/%.ini" 
en %, te falto poner la s.

PHP Code:
#define PATH "/Cuentas/%s.ini" 
__________________
FelipeAndres is offline   Reply With Quote
Reply

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
Algun buen GM base DM para empezar Falcon1221 Español/Spanish 1 24/02/2015 04:39 AM
Unas cosas que no entiendo para solucionar. Porta0123 Español/Spanish 12 08/09/2013 12:13 PM
Cuales son las funciones para estas cosas? ElAnonymous Español/Spanish 2 28/06/2013 09:45 PM
[Ayuda] Cosas que quiero saber para crear mi server... Muradin Español/Spanish 3 21/08/2012 06:37 PM
[Peticion] Cosas para mi faccion de mecanicos Gaararo Español/Spanish 8 07/12/2010 07:15 PM


All times are GMT. The time now is 12:51 PM.


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