forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_String("Password", PlayerInfo[playerid][pPassword], 129);
return 1;
}
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"Accounts/%s.ini",playername);
return string;
}
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
if(!fexist(UserPath(playerid)))
{
new string[367 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is not registered. Please enter a Password to Register",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "{FFFF00}Requested username: {FFFFFF}%s\nThis username is: {009900}Available\n\n{AF0000}We suggest that you don't register\nwith an RP name (Firstname_Lastname)\nbecause you can manage multiple\ncharacters from one account.\nThe name you register now will not\nbe your in-game name.\n\n{FFFFFF}By registering,\nyou agree to our terms of use.\n\n{FFFF00}Enter a Password to register",name);
ShowPlayerDialog(playerid, MENU_REGISTER, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Register", "Quit");
}
else
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new string[80 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is already registered. Please log in with your Password",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
SendClientMessage(playerid, COLOR_GREY, "-MSG- Not your account? Then relog with another name");
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\nEnter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
return 1;
}
case MENU_LOGIN:
{
if (!response)
{
SendClientMessage(playerid, COLOR_DARKRED, "-MSG- You must log in in order to play on this server");
Kick(playerid);
}
else
{
new buf[129];
WP_Hash(buf, sizeof(buf), inputtext);
if(!strcmp(buf, PlayerInfoInfo[playerid][pPassword], false))
{
new string[80 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\n{AF0000}Incorrect password!\n\n{FFFF00}Enter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "-MSG- Welcome back!");
}
}
}
C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(6) : warning 201: redefinition of constant/macro (symbol "MAX_INI_ENTRY_TEXT") C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(32) : error 001: expected token: ")", but found "[" C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(32) : warning 215: expression has no effect C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(32) : error 001: expected token: ";", but found "]" C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(32) : error 029: invalid expression, assumed zero C:\Users\Simon\Desktop\Ny mappe (3)\gamemodes\RP.pwn(32) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 4 Errors. |
INI_String("Password", PlayerInfo[playerid][pPassword], 129);
INI_String("Password", PlayerInfo[playerid][pPassword]);
Код:
INI_String("Password", PlayerInfo[playerid][pPassword]); |
forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Int("Password",PlayerInfo[playerid][pPassword]); return 1; }
This?
Код:
forward LoadUser_data(playerid,name[],value[]); public LoadUser_data(playerid,name[],value[]) { INI_Int("Password",PlayerInfo[playerid][pPassword]); return 1; } |
#include <a_samp>
#include <YSI\y_ini>
#define MENU_LOGIN 0
#define MENU_REGISTER 1
#define COLOR_YELLOW -1
#define COLOR_GREY -1
#define COLOR_GREEN -1
#define COLOR_DARKRED -1
native WP_Hash(buffer[],len,const str[]);
enum pInfo
{
pPassword[129]
}
new PlayerInfo[MAX_PLAYERS][pInfo];
forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
INI_String("Password", PlayerInfo[playerid][pPassword], 129);
return 1;
}
stock UserPath(playerid)
{
new string[128],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),"Accounts/%s.ini",playername);
return string;
}
public OnPlayerConnect(playerid)
{
new name[MAX_PLAYER_NAME];
if(!fexist(UserPath(playerid)))
{
new string[367 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is not registered. Please enter a Password to Register",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
format(string, sizeof(string), "{FFFF00}Requested username: {FFFFFF}%s\nThis username is: {009900}Available\n\n{AF0000}We suggest that you don't register\nwith an RP name (Firstname_Lastname)\nbecause you can manage multiple\ncharacters from one account.\nThe name you register now will not\nbe your in-game name.\n\n{FFFFFF}By registering,\nyou agree to our terms of use.\n\n{FFFF00}Enter a Password to register",name);
ShowPlayerDialog(playerid, MENU_REGISTER, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Register", "Quit");
}
else
{
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new string[80 + MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "-MSG- The username '%s' is already registered. Please log in with your Password",name);
SendClientMessage(playerid, COLOR_YELLOW, string);
SendClientMessage(playerid, COLOR_GREY, "-MSG- Not your account? Then relog with another name");
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\nEnter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case MENU_LOGIN:
{
if (!response)
{
SendClientMessage(playerid, COLOR_DARKRED, "-MSG- You must log in in order to play on this server");
Kick(playerid);
}
else
{
new buf[129];
WP_Hash(buf, sizeof(buf), inputtext);
if(!strcmp(buf, PlayerInfo[playerid][pPassword], false))
{
new string[80 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "{FFFF00}Your username: {FFFFFF}%s\n\n{AF0000}Incorrect password!\n\n{FFFF00}Enter your Password to log in",name);
ShowPlayerDialog(playerid, MENU_LOGIN, DIALOG_STYLE_PASSWORD, "Hopes Hills RP Account", string, "Login", "Quit");
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "-MSG- Welcome back!");
}
}
}
case MENU_REGISTER:
{
// code .....
}
}
return true;
}
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase Header size: 2700 bytes Code size: 64420 bytes Data size: 17057772 bytes Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion Total requirements:17141276 bytes [Finished in 6.1s]
Mayne, you are teaching him a wrong stuff....
pawn Код:
Код:
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase Header size: 2700 bytes Code size: 64420 bytes Data size: 17057772 bytes Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion Total requirements:17141276 bytes [Finished in 6.1s] Lastest Update: https://sampforum.blast.hk/showthread.php?tid=321092 |
#define Userpath "Admin System/Users/%s.txt"
#define INI_Exists(%0) fexist(%0)
#define INI_Bit(%1,%3,%2,%4) if(!strcmp((%1),name,true)) return boolstr(value) ? BitGive(%3,%2,%4) : BitTake(%3,%2,%4)
#define INI_WriteBit(%1,%2,%3,%4,%5) INI_AddToBuffer(%1, %2, BitCheck(%3, %4, %5) ? ("true") : ("false"))
//Under my OnPlayerConnect
if(INI_Exists(Path(playerid)))//Check
{
INI_ParseFile(Path(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid);
if(!strcmp(IPCheck,pInfo[playerid][pIP], true))//Let's check his IP, if it matches, let's automatically log the player in!
{
//IPs match
}
else
{
//IPs don't match
}
}
else
{
//Player has no account, put register code here
}
forward loadaccount_user(playerid, name[], value[]);
public loadaccount_user(playerid, name[], value[])
{
new count = GetTickCount();
INI_String("Password", pInfo[playerid][pPass],129);
INI_Int("AdminLevel",pInfo[playerid][pAdmin]);
INI_String("IP", pInfo[playerid][pIP], 16);
INI_Int("Money",pInfo[playerid][pMoney]);
INI_Int("Score",pInfo[playerid][pScore]);
INI_Int("Warnings", pInfo[playerid][pWarns]);
INI_Int("Kills", pInfo[playerid][pKills]);
INI_Int("Deaths", pInfo[playerid][pDeaths]);
INI_Int("DonatorLevel", pInfo[playerid][pDonated]);
INI_Int("CommandSpam", pInfo[playerid][pLastCommand]);
INI_Int("Muted", pInfo[playerid][pMuted]);
INI_Int("HelperLevel", pInfo[playerid][bLevel]);
INI_Int("OnlineTime", pInfo[playerid][pTime]);//Online time stored in seconds, which is divided upon connection!
INI_Int("PlayerColor", pInfo[playerid][pColor]);
INI_Int("VIPChatColor", pInfo[playerid][pVIPChatColor]);
INI_String("Country", pInfo[playerid][pCountry], 90);
INI_String("ISP", pInfo[playerid][pISP], 90);
INI_String("City", pInfo[playerid][pCity], 90);
printf("[CUSTOM CALLBACK] loadaccount_user: Firing callback took %d milliseconds!", GetTickCount() - count);
return 1;
}
// ------- Accounts ------// #define PATH "/Users/%s.ini" #define DIALOG_REGISTER 1 enum pInfo { pPassword } public LoadUser_data(playerid,name[],value[]) { INI_Int("Password",PlayerInfo[playerid][pPassword]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } stock udb_hash(buf[]) { new length=strlen(buf); new s1 = 1; new s2 = 0; new n; for (n=0; n<length; n++) { s1 = (s1 + buf[n]) % 65521; s2 = (s2 + s1) % 65521; } return (s2 << 16) + s1; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Authentication","{FFFFFF}Wellcome back to {FF0000} CHANGE IT \n{FFFFFF}Type your password to Login.","Login","Quit"); } else { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Authentication","{FFFFFF}Wellcome to {FF0000}CHANGE IT \n{FFFFFF}Type your password to Register.","Register","Quit"); } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch( dialogid ) { case DIALOG_REGISTER: { if (!response) return Kick(playerid); if(response) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit"); new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteInt(File,"Password",udb_hash(inputtext)); INI_Close(File); } } case DIALOG_LOGIN: { if ( !response ) return Kick ( playerid ); if( response ) { if(udb_hash(inputtext) == PlayerInfo[playerid][pPass]) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); SpawnPlayer(playerid); } else { Kick(playerid); } return 1; } } } return 1; }
You're loading a STRING value from the file using y_ini's interger parsing....
It should be INI_String |
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
INI_String("Password", PlayerInfo[playerid][pPassword], 129);
Did you try mine ? If you tried and it won't work try this:
Код:
// ------- Accounts ------// #define PATH "/Users/%s.ini" #define DIALOG_REGISTER 1 enum pInfo { pPassword } public LoadUser_data(playerid,name[],value[]) { INI_Int("Password",PlayerInfo[playerid][pPassword]); return 1; } stock UserPath(playerid) { new string[128],playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); format(string,sizeof(string),PATH,playername); return string; } stock udb_hash(buf[]) { new length=strlen(buf); new s1 = 1; new s2 = 0; new n; for (n=0; n<length; n++) { s1 = (s1 + buf[n]) % 65521; s2 = (s2 + s1) % 65521; } return (s2 << 16) + s1; } public OnPlayerConnect(playerid) { if(fexist(UserPath(playerid))) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Authentication","{FFFFFF}Wellcome back to {FF0000} CHANGE IT \n{FFFFFF}Type your password to Login.","Login","Quit"); } else { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Authentication","{FFFFFF}Wellcome to {FF0000}CHANGE IT \n{FFFFFF}Type your password to Register.","Register","Quit"); } return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch( dialogid ) { case DIALOG_REGISTER: { if (!response) return Kick(playerid); if(response) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit"); new INI:File = INI_Open(UserPath(playerid)); INI_SetTag(File,"data"); INI_WriteInt(File,"Password",udb_hash(inputtext)); INI_Close(File); } } case DIALOG_LOGIN: { if ( !response ) return Kick ( playerid ); if( response ) { if(udb_hash(inputtext) == PlayerInfo[playerid][pPass]) { INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid); SpawnPlayer(playerid); } else { Kick(playerid); } return 1; } } } return 1; } |