Jump to content
  • 0

pomoc Register


Neopry

Dotaz

Ahoj,

Když se hráč přihlásí a má třeba 1 000$ tak při dalším přihlášení má navíc 2 000$...

Nevíte někdo jak to změnit tak aby dostaval tu částku kterou měl i předtím u sebe a né o 2 000 více ? :d

Předem díky

Používám tento FS...

#include <a_samp>
#define FILTERSCRIPT
#if defined FILTERSCRIPT
#define COLOR_GREY 0xBEBEBEAA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_GRAD5 0xE3E3E3FF
#define COLOR_GRAD1 0xB4B5B7FF
#define COLOR_YELLOW 0xFFFF00AA
forward ShowStats(playerid,targetid);
forward OnPlayerUpdate(playerid);
forward Encrypt(string[]);
forward OnPlayerLogin(playerid,const string[]);
enum pInfo
{
pPassword[128],
pKills,
pDeaths,
pCash,
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new gPlayerLogged[MAX_PLAYERS];
new gPlayerAccount[MAX_PLAYERS];

public OnFilterScriptInit()
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
   SendClientMessage(playerid, COLOR_YELLOW, "Jste tu nový ? /register VAŠE_HESLO ");
   new playrname[MAX_PLAYER_NAME];
   new connect[128];
   GetPlayerName(playerid, playrname, sizeof(playrname));
format(connect, sizeof(connect), "%s.cer", playrname);
if(fexist(connect))
{
 gPlayerAccount[playerid] = 1;
 SendClientMessage(playerid, COLOR_YELLOW, "Jste registrovaný prosím přihlašte se pomocí /login heslo ");
 return 1;
}
else
{
 gPlayerAccount[playerid] = 0;
 SendClientMessage(playerid, COLOR_YELLOW, "Nejste registrovaný prosím registrujte se pomocí /register heslo");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
   OnPlayerUpdate(playerid);
   gPlayerLogged[playerid] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
   new kills = PlayerInfo[playerid][pKills];
   SetPlayerScore(playerid, kills);
   new Float:Health;
   GetPlayerHealth(playerid, Health);
   if(Health == 0.0)
   {
   PlayerInfo[playerid][pDeaths] += 1;
   }
   GivePlayerMoney(killerid,0);
   PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 1;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
   new cmd[256];
   new idx;
   cmd = strtok(cmdtext, idx);
   new tmp[256];
   new playername[MAX_PLAYER_NAME];
   if (strcmp(cmd, "/login", true) ==0 )
{
 if(IsPlayerConnected(playerid))
 {
	 new tmppass[64];
  if(gPlayerLogged[playerid] == 1)
  {
   SendClientMessage(playerid, COLOR_GREY, "Jste přihlášený.");
   return 1;
  }
  tmp = strtok(cmdtext, idx);
  if(!strlen(tmp))
  {
   SendClientMessage(playerid, COLOR_GREY, " /login heslo ");
   return 1;
  }
  strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
  Encrypt(tmppass);
  OnPlayerLogin(playerid,tmppass);
 }
 return 1;
}
if (strcmp(cmd, "/register", true)==0)
{
 new string[265];
 tmp = strtok(cmdtext, idx);
 if(!strlen(tmp))
 {
  SendClientMessage(playerid, COLOR_GREY, "Napiš: /register heslo ");
  return 1;
 }
 if (gPlayerAccount[playerid] == 1)
 {
  SendClientMessage(playerid, COLOR_GREY, "  Váš nick je zaregistrovaný  ");
  return 1;
 }
 strmid(PlayerInfo[playerid][pPassword], tmp, 0, strlen(cmdtext), 255);
 Encrypt(PlayerInfo[playerid][pPassword]);
 GetPlayerName(playerid, playername, sizeof(playername));
 format(string, sizeof(string), "%s.cer", playername);
 new File: file = fopen(string, io_read);
 if (file)
 {
  SendClientMessage(playerid, COLOR_GREY, "   Váš nick je zaregistrovaný");
  fclose(file);
  return 1;
 }
 new File:hFile;
 hFile = fopen(string, io_append);
 new var[32];//
    format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(hFile, var);
    format(var, 32, "Zabití=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
    format(var, 32, "Umrtí=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(var, 32, "Peníze=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
 fclose(hFile);
 SendClientMessage(playerid, COLOR_WHITE, "Nyní jste registrovaný!");
 SendClientMessage(playerid, COLOR_WHITE, "Pro  přihlášení dejte /login heslo.");
 OnPlayerLogin(playerid,PlayerInfo[playerid][pPassword]);
 return 1;
}
if (strcmp(cmd, "/stats", true) == 0)
{
 if(IsPlayerConnected(playerid))
 {
  if (gPlayerLogged[playerid] != 0)
  {
   ShowStats(playerid,playerid);
  }
  else
  {
   SendClientMessage(playerid, COLOR_GRAD1, "   Nejste pryhlášen !");
  }
 }
 return 1;
}
return 0;
}
public Encrypt(string[])
{
for(new x=0; x < strlen(string); x++)
  {
   string[x] += (3^x) * (x % 15);
   if(string[x] > (0xff))
   {
 string[x] -= 64;
   }
  }
return 1;
}

public OnPlayerLogin(playerid,const string[])
{
   new pname2[MAX_PLAYER_NAME];
new pname3[MAX_PLAYER_NAME];
new string2[64];
new string3[128];
GetPlayerName(playerid, pname2, sizeof(pname2));
format(string2, sizeof(string2), "%s.cer", pname2);
new File: UserFile = fopen(string2, io_read);
if (UserFile)
{
 new valtmp[128];
 fread(UserFile, valtmp);strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255);
 if ((strcmp(PlayerInfo[playerid][pPassword], string, true, strlen(valtmp)-1) == 0))
 {
  new key[128],val[128];
   new Data[128];
   while(fread(UserFile,Data,sizeof(Data)))
  {
   key = ini_GetKey(Data);
		    if( strcmp( key , "Zabití" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
		    if( strcmp( key , "Umrtí" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
		    if( strcmp( key , "Peníze" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
		    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
  }
  fclose(UserFile);
  gPlayerLogged[playerid] = 1;
  gPlayerAccount[playerid] = 1;
  new kills = PlayerInfo[playerid][pKills];
	    SetPlayerScore(playerid, kills);
  GetPlayerName(playerid, pname3, sizeof(pname3));
  format(string3, sizeof(string3), "Vítám vas %s, jste uspěšně přyhlášený niní můžete hrát!", pname3);
  SendClientMessage(playerid, COLOR_WHITE,string3);
 }
 else
 {
  SendClientMessage(playerid, COLOR_GREY, " Heslo je špatné ");
  fclose(UserFile);
 }
}
return 1;
}
public OnPlayerUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
 if(gPlayerLogged[playerid])
 {
  new string3[32];
  new pname3[MAX_PLAYER_NAME];
  GetPlayerName(playerid, pname3, sizeof(pname3));
  format(string3, sizeof(string3), "%s.cer", pname3);
  new File: pFile = fopen(string3, io_write);
  if (pFile)
  {
   new var[32];
   format(var, 32, "%s\n", PlayerInfo[playerid][pPassword]);fwrite(pFile, var);
   fclose(pFile);
   new File: hFile = fopen(string3, io_append);
   PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
   format(var, 32, "Kills=%d\n",PlayerInfo[playerid][pKills]);fwrite(hFile, var);
   format(var, 32, "Deaths=%d\n",PlayerInfo[playerid][pDeaths]);fwrite(hFile, var);
   format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
   fclose(hFile);
  }
 }
}
return 1;
}
stock ini_GetKey( line[] )
{
new keyRes[128];
keyRes[0] = 0;
   if ( strfind( line , "=" , true ) == -1 ) return keyRes;
   strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
   return keyRes;
}
stock ini_GetValue( line[] )
{
new valRes[128];
valRes[0]=0;
if ( strfind( line , "=" , true ) == -1 ) return valRes;
strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
return valRes;
}

strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
 index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
 result[index - offset] = string[index];
 index++;
}
result[index - offset] = EOS;
return result;
}
public ShowStats(playerid,targetid)
{
   if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
{
 new cash =  GetPlayerMoney(targetid);
 new deaths = PlayerInfo[targetid][pDeaths];
 new kills = PlayerInfo[targetid][pKills];
 new name[MAX_PLAYER_NAME];
 GetPlayerName(targetid, name, sizeof(name));
 new Float:px,Float:py,Float:pz;
 GetPlayerPos(targetid, px, py, pz);
 new coordsstring[256];
 SendClientMessage(playerid, COLOR_GREEN,"_______________________________________");
 format(coordsstring, sizeof(coordsstring),"*** %s ***",name);
 SendClientMessage(playerid, COLOR_WHITE,coordsstring);
 format(coordsstring, sizeof(coordsstring), "Zabití:[%d] Umrtí:[%d] Peníze:[$%d]",kills,deaths,cash);
 SendClientMessage(playerid, COLOR_GRAD5,coordsstring);
 SendClientMessage(playerid, COLOR_GREEN,"_______________________________________");
}
}
#endif

Link to comment
Share on other sites

1 odpověd na tuto otázku

Recommended Posts

  • 0

if( strcmp( key , "Peníze" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }

GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);

 

zkus změnit GivePlayerMoney na SetPlayerMoney

 

 

 

stock SetPlayerMoney(playerid,howmuch) {

PRIVATE_Last_Money[playerid]=howmuch;

GivePlayerMoney(playerid,howmuch-GetPlayerMoney(playerid));

}

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...