Dini Help
#1

I'm trying to script the basic database for my rpg it compile but it doesn't create a .ini file when it should I used the tutorial on sa-mp wiki and I added a few lines to save money but I want to add all the characters skill info in there too.

Do I have to create the file myself or does the script do it?

Here's the code:
Код:
#include <a_samp>
#include <Dini>
#include <dutils>

#define FILTERSCRIPT
#if defined FILTERSCRIPT
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOUR_GREEN      0x33AA33AA
#define COLOUR_RED       0xAA3333AA
#define COLOUR_YELLOW     0xFFFF00AA
#define COLOUR_LIGHTBLUE    0x33CCFFAA
#define COLOUR_ORANGE     0xFF9900AA

#define PlayerFile 	    "AdminScript/Users/%s.ini"
#define SettingFile      "AdminScript/Settings/MainSettings.ini"
#define CommandFile      "AdminScript/Settings/Commands.ini"

#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Admin Filterscript by your JadedJ");
print("--------------------------------------\n");
return 1;
}

#endif

enum PLAYER_MAIN
{
	PLAYER_NAME[MAX_PLAYER_NAME],
	PLAYER_IP[16],
	PLAYER_REGGED,
	PLAYER_PASS,
	PLAYER_LOGGED,
	PLAYER_LEVEL,
	PLAYER_WIRED,
	PLAYER_JAILED,
	PLAYER_BANKACCOUNT,
	PLAYER_MONEY
}
new gPlayerInfo[MAX_PLAYERS][PLAYER_MAIN];

public OnPlayerConnect(playerid)
{
 	new file[100],Name[MAX_PLAYER_NAME],Ip[16]; GetPlayerName(playerid,Name,sizeof(Name)); GetPlayerIp(playerid,Ip,sizeof(Ip)); format(file,sizeof(file),PlayerFile,Name);
	if(!dini_Exists(file)) {
		dini_Create(file);
		dini_Set(file,"Name",Name);
		dini_Set(file,"Ip",Ip);
		dini_IntSet(file,"Registered",-1);
		dini_IntSet(file,"Password",0);
		dini_IntSet(file,"Level",0);
		dini_IntSet(file,"Wired",0);
		dini_IntSet(file,"Jailed",0);
		dini_IntSet(file,"BankAccount",0);
    dini_IntSet(file,"MONEY",0);
		SendClientMessage(playerid,COLOUR_ORANGE,"You're username is not recognized on this server. Please /register to continue.");
	}
	strcat(gPlayerInfo[playerid][PLAYER_NAME], dini_Get(file,"Name"));
	strcat(gPlayerInfo[playerid][PLAYER_IP], dini_Get(file,"Ip"));
	gPlayerInfo[playerid][PLAYER_REGGED] = dini_Int(file,"Registered");
	gPlayerInfo[playerid][PLAYER_PASS] = dini_Int(file,"Password");
	gPlayerInfo[playerid][PLAYER_LEVEL] = dini_Int(file,"Level");
	gPlayerInfo[playerid][PLAYER_WIRED] = dini_Int(file,"Wired");
	gPlayerInfo[playerid][PLAYER_JAILED] = dini_Int(file,"Jailed");
	gPlayerInfo[playerid][PLAYER_BANKACCOUNT] = dini_Int(file,"BankAccount");
  gPlayerInfo[playerid][PLAYER_MONEY] = dini_Int(file,"Money");
	GivePlayerMoney(playerid, gPlayerInfo[playerid][PLAYER_MONEY]-15000);
	SetTimer("MoneyUpdate",3000,1);
	if(gPlayerInfo[playerid][PLAYER_REGGED] == 0) SendClientMessage(playerid,COLOUR_ORANGE,"You're username is recognised on this server, but you have not registered. Please /register to continue.");
	else if(gPlayerInfo[playerid][PLAYER_REGGED] == 1)SendClientMessage(playerid,COLOUR_ORANGE,"You're username is recognised on this server. Please /login to continue.");
	gPlayerInfo[playerid][PLAYER_REGGED] = 0;
	return 1;
}



public OnPlayerDisconnect(playerid, reason)
{
	new file[100];
	format(file,sizeof(file),PlayerFile,gPlayerInfo[playerid][PLAYER_NAME]);
	dini_Set(file,"Name",gPlayerInfo[playerid][PLAYER_NAME]);
	dini_Set(file,"Ip",gPlayerInfo[playerid][PLAYER_IP]);
	dini_IntSet(file,"Registered",gPlayerInfo[playerid][PLAYER_REGGED]);
	dini_IntSet(file,"Password",gPlayerInfo[playerid][PLAYER_PASS]);
	dini_IntSet(file,"Level",gPlayerInfo[playerid][PLAYER_LEVEL]);
	dini_IntSet(file,"Wired",gPlayerInfo[playerid][PLAYER_WIRED]);
	dini_IntSet(file,"Jailed",gPlayerInfo[playerid][PLAYER_JAILED]);
	dini_IntSet(file,"BankAccount",gPlayerInfo[playerid][PLAYER_BANKACCOUNT]);
	dini_IntSet(file,"Money",gPlayerInfo[playerid][PLAYER_MONEY]);
	gPlayerInfo[playerid][PLAYER_NAME]  = 0;
	gPlayerInfo[playerid][PLAYER_IP]   = 0;
	gPlayerInfo[playerid][PLAYER_REGGED] = 0;
	gPlayerInfo[playerid][PLAYER_LOGGED] = 0;
	gPlayerInfo[playerid][PLAYER_PASS]  = 0;
	gPlayerInfo[playerid][PLAYER_LEVEL] = 0;
	gPlayerInfo[playerid][PLAYER_WIRED] = 0;
	gPlayerInfo[playerid][PLAYER_JAILED] = 0;
	gPlayerInfo[playerid][PLAYER_BANKACCOUNT] = 0;
	gPlayerInfo[playerid][PLAYER_MONEY] = 0;
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
  dcmd(register, 8, cmdtext);
  dcmd(login, 5, cmdtext);
  dcmd(logout, 6, cmdtext);
  return 0;
}

dcmd_login(playerid, params[])
{
  if(gPlayerInfo[playerid][PLAYER_REGGED] != 1)
	return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must register first to do that! Use /register [password] to register and login.");
  else if(gPlayerInfo[playerid][PLAYER_LOGGED] == 1)
	return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You are already logged-in.");
  else if(!params[0])
	return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /login [password]");
  else
  {
	new password = num_hash(params);
	if(gPlayerInfo[playerid][PLAYER_PASS] == password)
	{
	  gPlayerInfo[playerid][PLAYER_LOGGED] = 1;
   	GetPlayerIp(playerid, gPlayerInfo[playerid][PLAYER_IP], 16);
	  return SendClientMessage(playerid, COLOUR_LIGHTBLUE, "You have successfully logged in to your account.");
	}
	else
	  return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: Incorrect password.");
  }
}

dcmd_logout(playerid, params[])
{
#pragma unused params
  if(gPlayerInfo[playerid][PLAYER_REGGED] != 1)
	return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must register first to do that! Use /register [password] to register.");
  else if(gPlayerInfo[playerid][PLAYER_LOGGED] == 0)
	return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You are already logged-out.");
  else
  {
	gPlayerInfo[playerid][PLAYER_LOGGED] = 0;
	return SendClientMessage(playerid, COLOUR_LIGHTBLUE, "You have successfully logged out of your account.");
  }
}

dcmd_register(playerid, params[])
{
  if(gPlayerInfo[playerid][PLAYER_REGGED] == 1)
	return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You have already registered!");
  else if(!params[0])
	return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /register [password]");
  /*else if(strlen(params) < gSettings[PASS_MIN] || strlen(params) > gSettings[PASS_MAX])
  {
	new string[200];
    format(string, sizeof(string), "ERROR: Password must be between %d and $d characters long!", gSettings[PASS_MIN], gSettings[PASS_MAX]);
	return SendClientMessage(playerid, COLOUR_ORANGE, string);
  }*/
  else
  {
	new password = num_hash(params);
	gPlayerInfo[playerid][PLAYER_PASS] = password;
	gPlayerInfo[playerid][PLAYER_REGGED] = 1;
 	gPlayerInfo[playerid][PLAYER_LOGGED] = 1;
	GetPlayerIp(playerid, gPlayerInfo[playerid][PLAYER_IP], 16);
	new string[256]; format(string, sizeof(string), "You have successfully registered your account with the password \'%s\'. You have been automatically logged in.", params);
	return SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  }
}
//MONEY UPDATE------------------------------------------------------------------------------------------------------
public MoneyUpdate(playerid)
{
	gPlayerInfo[playerid][PLAYER_MONEY] = GetPlayerMoney(playerid);
	return 1;
}
#endif
Thx
Reply
#2

Ask in dini topic.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)