28.07.2009, 21:15
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:
Thx
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