08.04.2017, 18:32
(
Последний раз редактировалось Kaponi; 21.05.2017 в 01:36.
)
ЎHola! mucha gente me estaba pidiendo йste tutorial por el ******** 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')
Ahora definimos los siguientes dialogos (registro, logueo)
Despuйs de los pasos anteriores definiremos la direcciуn donde se guardarбn las cuentas
Ahora procederemos a crear el enum (variables) del jugador
Ahora bajaremos abajo de todo el modo de juego y aсadiremos la funciуn que cargarб los datos de los jugadores
Ahora haremos la funciуn que va a extraer la direcciуn exacta de la cuenta del jugador que ingrese en el servidor
Lo siguiente que haremos serб aсadir el dialogo del logueo y registro, iremos al CALLBACK "OnPlayerRequestClass" ahora procederemos a aсadir lo siguiente:
En el Callback "OnDialogResponse", aсadiremos las funciones de los dialogos de registro y logueo
Ahora abajo del GM procederemos a aсadir el stock para que guarde la cuenta
Ahora en el CALLBACK "OnPlayerDisconnect" pondremos el stock que guardarнa la cuenta de nuestro PJ
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
Primero tenemos que tener definido los includes (Yo usarй 'a_samp' y 'YSI')
PHP код:
#include <a_samp>
#include <YSI\y_ini>
PHP код:
#define DREGISTER 1
#define DLOGIN 2
PHP код:
#define PATH "/Cuentas/%s.ini"
PHP код:
enum jInfo
{
Contra[64],
Dinero,
Administrador,
Float:PosX,
Float:PosY,
Float:PosZ,
}
new PlayersData[MAX_PLAYERS[jInfo];
PHP код:
forward LoadAccount_data(playerid, name[], value[]);
public LoadAccount_data(playerid, name[], 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]);
}
PHP код:
stock UserPath(playerid)
{
new string[128],PlayerNameFix[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerNameFix,sizeof(PlayerNameFix))
format(string,sizeof(string),PATH,PlayerNameFix);
return string;
}
PHP код:
if(fexist(playerid))
{
INI_ParseFile(UserPath(playerid)), "LoadAccount_%s", .bExtra = true, .extra = playerid);
ShowPlayerDialog(playerid, DLOGIN, DIALOG_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(playerid, DREGISTER, DIALOG_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");
}
PHP код:
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(playerid, DREGISTER, DIALOG_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(playerid, 26);
SpawnPlayer(playerid);
}
}
if(dialogid== DLOGIN)
{
if (!response) return Kick(playerid);
if(response)
{
if(strcmp(inputtext, PlayersData[playerid][Contra], true) == 0)
{
INI_ParserFile(UserPath(playerid), "LoadAccount_%s", .bExtra = true, .extra = playerid);
GivePlayerMoney(playerid, PlayersData[playerid][Dinero]);
SpawnPlayer(playerid);
}
else
{
ShowPlayerDialog(playerid, DLOGIN, DIALOG_STYLE_INPUT, "Erro en el ingreso", "Hubo un error en el ingreso por favor ingrese su contraseсa para entrar", "Entrar", "Salir");
}
return 1;
}
}
PHP код:
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(playerid, PlayersData[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;
}
PHP код:
SaveAccount(playerid);
PD:Cualquier error que vean en el tutorial avisadme colegas