need help with my Register system -
CarRamper - 22.06.2016
Hello guys my problem is that when ever i comes to the server with different name without my registration it makes a account of mine in scriptfile
i think i should show u my onplayerconnect so here is it
here is my onplayerconnect
Код:
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid,Intro0);
TextDrawShowForPlayer(playerid,Intro1);
TextDrawShowForPlayer(playerid,Intro2);
TextDrawShowForPlayer(playerid,Intro3);
TextDrawShowForPlayer(playerid,Intro4);
SetTimerEx("T2", 10000, false, "i", playerid);
}
forward T2(playerid);
public T2(playerid)
{
TextDrawHideForAll(Intro0);
TextDrawHideForAll(Intro1);
TextDrawHideForAll(Intro2);
TextDrawHideForAll(Intro3);
TextDrawHideForAll(Intro4);
if(fexist(UserPath(playerid)))
{
new string [ 240 ];
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), ""COL_WHITE"{0066FF}BilluGang Cops And Robbers\n\n{0099FF}Player Login\n\n{FFFFFF}This nick,{0099FF}%s{FFFFFF},is Registered.\nIf this is not your account,please quit and change your nick.\n\nPlease {FFFF66}Enter Your Password {FFFFFF}To Login:", pName);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""COL_WHITE"{FFFFFF}CnR {FFFFFF}Login", string, "Login", "Cancel");
}
else
{
new string [ 300 ];
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), ""COL_WHITE"{0066FF}BilluGang Cops And Robbers\n\n{999999}New Registration\n{FFFFFF}Nick:{0099FF}%s\n\n{FFFFFF}Do {FF0000}Not {FFFFFF}Register Multiple Accounts\n{FFFFFF}Do {FF0000}Not {FFFFFF}Use The Game Password That You Use Elsewhere\n\nPlease {FFFF66}Enter Your Password {FFFFFF}For Your Account:", pName);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"{FFFFFF}CnR {FFFFFF}Registration", string, "Register", "Cancel");
}
new ConnIP[16];
GetPlayerIp(playerid,ConnIP,16);
new compare_IP[16];
new number_IP = 0;
for(new i=0; i<MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)) {
GetPlayerIp(i,compare_IP,16);
if(!strcmp(compare_IP,ConnIP)) number_IP++;
}
}
if((GetTickCount() - Join_Stamp) < Time_Limit)
exceed=1;
else
exceed=0;
if(strcmp(ban_s, ConnIP, false) == 0 && exceed == 1 )
{
Same_IP++;
if(Same_IP > SAME_IP_CONNECT)
{
Ban(playerid);
Same_IP=0;
}
}
else
{
Same_IP=0;
}
if(number_IP > IP_LIMIT)
Ban(playerid);
GetStampIP(playerid);
new joinMsg[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(joinMsg, sizeof(joinMsg), "4[%d] 03*** %s has joined the server.", playerid, name);
IRC_GroupSay(gGroupID, IRC_CHANNEL, joinMsg);
TextDrawShowForPlayer(playerid, WantedLvlTxd[playerid]);
TextDrawShowForPlayer(playerid, DrugTxd[playerid]);
TextDrawShowForPlayer(playerid, DrugTxd[playerid]);
LocationTD[playerid] = TextDrawCreate(8.000000, 430.000000, "_");
TextDrawBackgroundColor(LocationTD[playerid], 255);
TextDrawFont(LocationTD[playerid], 2);
TextDrawLetterSize(LocationTD[playerid], 0.400000, 1.000000);
TextDrawColor(LocationTD[playerid], -1);
TextDrawSetOutline(LocationTD[playerid], 1);
TextDrawSetProportional(LocationTD[playerid], 1);
TextDrawUseBox(LocationTD[playerid], 1);
TextDrawBoxColor(LocationTD[playerid], 80);
TextDrawTextSize(LocationTD[playerid], 222.000000, 18.000000);
XDeaths[playerid] = 0;
LastDeath[playerid] = 0;
IsRobbing[playerid] =0;
IsBankRobbing[playerid] =0;
IsApRobbing[playerid] =0;
zoneupdates[playerid] =1;
DescriptionText[playerid] = TextDrawCreate(320.0, 380.0, " ");
TextDrawAlignment(DescriptionText[playerid], 2);
TextDrawFont(DescriptionText[playerid], 1);
TextDrawLetterSize(DescriptionText[playerid], 0.320000, 1.700000);
TextDrawSetOutline(DescriptionText[playerid], 1);
TextDrawHideForPlayer(playerid, DescriptionText[playerid]);
new string[128], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
new plrIP[16];
GetPlayerIp(playerid, plrIP, sizeof(plrIP));
format(string,sizeof string,"%s has joined the server with the ip %s",pName,plrIP);
JoinsLog(string);
for( new i = 0; i <= 50; i ++ ) SendClientMessage(playerid,COLOR_WHITE, "" );
SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}Welcome to {0066FF}Billu Gang Cops And Robbers{FFFFFF}-{0099FF}San Fierro{FFFF33}Version 1.1.");
SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}Type {FFFF33}/rules /cmds /help {FFFFFF}or visit {0099FF}cod8aw.tk {FFFFFF}For Game Info.");
SendClientMessage(playerid, COLOR_WHITE, "{FF0000}Warning!{FFFFFF} This server (and GTA In General) Contains Explicit Material.");
for(new i;i<sizeof(Coords);i++) SetPlayerMapIcon(playerid,i,Coords[i][X],Coords[i][Y],Coords[i][Z],Coords[i][ID],0,MAPICON_LOCAL);
return 1;
}
here is my on player disconnect
Код:
public OnPlayerDisconnect(playerid, reason)
{
SendDeathMessage(INVALID_PLAYER_ID,playerid,201);
new leaveMsg[128], name[MAX_PLAYER_NAME], reasonMsg[8];
switch(reason)
{
case 0: reasonMsg = "Timeout";
case 1: reasonMsg = "Leaving";
case 2: reasonMsg = "Kicked";
}
GetPlayerName(playerid, name, sizeof(name));
format(leaveMsg, sizeof(leaveMsg), "4[%d] 03*** %s has left the server. (%s)", playerid, name, reasonMsg);
IRC_GroupSay(gGroupID, IRC_CHANNEL, leaveMsg);
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"data");
INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
INI_WriteInt(File,"WantedLevel",GetPlayerWantedLevel(playerid));
INI_WriteInt(File,"Vip",PlayerInfo[playerid][pVip]);
INI_WriteInt(File,"Score",GetPlayerScore(playerid));
INI_WriteInt(File,"Condoms",PlayerInfo[playerid][pCondoms]);
INI_WriteInt(File,"Banned",PlayerInfo[playerid][pBanned]);
INI_WriteInt(File,"Jailed",PlayerInfo[playerid][pJailed]);
INI_WriteInt(File,"Drugs",PlayerInfo[playerid][pDrug]);
INI_WriteInt(File,"Nopm",PlayerInfo[playerid][pNopm]);
INI_WriteInt(File,"Bank",PlayerInfo[playerid][pBank]);
INI_WriteInt(File,"Sausages",PlayerInfo[playerid][pSausage]);
INI_WriteInt(File,"PassChange",PlayerInfo[playerid][pPassChange]);
INI_WriteInt(File,"Mute",PlayerInfo[playerid][pMuted]);
INI_Close(File);
if(ireconnect[playerid] == 1)
{
new unbanningip[16], string[128];
GetPVarString(playerid, "reconnect", unbanningip, 16);
format(string,sizeof(string),"unbanip %s", unbanningip);
SendRconCommand(string);
printf(string);
SendRconCommand("reloadbans");
ireconnect[playerid] = 0;
}
TextDrawDestroy(LocationTD[playerid]);
return 1;
}
here is my ondialogresponse
Код:
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, "Registering...","{FF0000}You have entered an invalid password.\n""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_WriteInt(File,"Cash",0);
INI_WriteInt(File,"Admin",0);
INI_WriteInt(File,"Kills",0);
INI_WriteInt(File,"Deaths",0);
INI_WriteInt(File,"WantedLevel",0);
INI_WriteInt(File,"Vip",0);
INI_WriteInt(File,"Score",0);
INI_WriteInt(File,"Condoms",0);
INI_WriteInt(File,"Banned",0);
INI_WriteInt(File,"Jailed",0);
INI_WriteInt(File,"Drugs",0);
INI_WriteInt(File,"Nopm",0);
INI_WriteInt(File,"Bank",0);
INI_WriteInt(File,"Sausages",0);
INI_WriteInt(File,"PassChange",0);
INI_WriteInt(File,"Mute",0);
INI_Close(File);
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
TextDrawShowForPlayer(playerid,Textdraw0);
TextDrawShowForPlayer(playerid,Textdraw1);
TextDrawShowForPlayer(playerid,Textdraw2);
TextDrawShowForPlayer(playerid,Textdraw3);
TextDrawShowForPlayer(playerid,Textdraw4);
TextDrawShowForPlayer(playerid,Textdraw5);
TextDrawShowForPlayer(playerid,Textdraw6);
TextDrawShowForPlayer(playerid,Textdraw7);
TextDrawShowForPlayer(playerid,Textdraw8);
TextDrawShowForPlayer(playerid,Textdraw9);
TextDrawShowForPlayer(playerid,Textdraw10);
}
}
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);
GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
SetPlayerWantedLevel(playerid, PlayerInfo[playerid][pWantedLevel]);
SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,"{008000}Success!","{FFFF00}You have successfully logged in!","Ok","");
}
else
{
new string [ 280 ];
INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), ""COL_WHITE"{0066FF}BilluGang Cops And Robbers\n\n{0099FF}Player Login\n\n{FF0000}INVALID PASSWORD!\n\n{FFFFFF}This nick,{0099FF}%s{FFFFFF},is Registered.\nIf this is not your account,please quit and change your nick.\n\nPlease {FFFF66}Enter Your Password {FFFFFF}To Login:", pName);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, ""COL_WHITE"{FFFFFF}CnR {FFFFFF}Login", string, "Login", "Cancel");
}
return 1;
}
If You Need Some Other Code Please Tell Me But Please Help me To Fix It.I Want That When A person type his password and hit the register button then the script make his account in scriptfile not before it
Re: need help with my Register system -
GoldenLion - 22.06.2016
You were saving player's stats even if player's file didn't exist, that is the problem so it creates a new playerfile and saves the stats in there. I had the same problem.
To fix this add
Код:
if(fexist(UserPath(playerid)))
under OnPlayerDisconnect before saving. It checks if player's file exists. If it does, it will save his stats, else it won't do anything.
Or I made the OnPlayerDisconnect for you here:
http://pastebin.com/6G9CJaxV.
Re: need help with my Register system -
Matz - 22.06.2016
You save any plater data on disconnect whether yes or not they are registered, that's why I think
Edit: missed other helper by not refreshing the page.