Vice City: Multiplayer

Server Development => Scripting and Server Management => Topic started by: :P on Oct 08, 2015, 09:06 AM

Title: reseted after kick
Post by: :P on Oct 08, 2015, 09:06 AM
if a player failed login and hes kicked but why player stats reseted  kills deaths money bank
function AccInfo( player )
{
      try{
  EchoMessage( ICOL_ORANGE + "** [" + player.ID + "] " + player.Name + " Joined the Server." );
  if ( CheckBan( player ) == 1 ) Kick( player, "Server", "Banned From Server" );
  status[ player.ID ] = PlayerStats();
  local id = player.ID;
  local ip = player.IP;
  if ( GetLevel( player ) > 0 )
  {
      if ( ip != GetIP( player ) )
  {
      ePrivMessage( "Welcome to the Server " + player.Name + "!", player );
  ePrivMessage( "You're not Logged-In. Please login by /login <password>", player );
  status[ player.ID ].IsReg = true;
  status[ player.ID ].IsLogged = false;
  }
  else if ( ip == GetIP( player ) )
  {
       local q = QuerySQL( db, "SELECT * FROM Account WHERE Name='" + player.Name.tolower() + "'" );
   if ( GetSQLColumnData( q, 0 ) != null )
              {
   status[ player.ID ].Kills = GetSQLColumnData( q, 4 );
   status[ player.ID ].Deaths = GetSQLColumnData( q, 5 );
   status[ player.ID ].Cash = GetSQLColumnData( q, 6 );
   status[ player.ID ].Bank = GetSQLColumnData( q, 7 );
   status[ player.ID ].Level = GetSQLColumnData( q, 2 );
   }
   FreeSQLQuery( q );
   ePrivMessage( "Welcome to the Server " + player.Name + "!", player );
   ePrivMessage( "You've auto-logged in onto the server!", player );
   status[ player.ID ].IsReg = true;
   status[ player.ID ].IsLogged = true;
   EchoMessage( ICOL_BROWN + ">> " + player.Name + " Auto-Logged In." );
   
  }
 
  }
  else
  {
      ePrivMessage( "Welcome to the Server " + player.Name + "!", player );
  ePrivMessage( "You're not registered with us. Register by /register <password>", player );   
  }
  WriteIniString( "Files/ServData.ini", "IP", player.Name, player.IP );
  }
  catch(e) print( "AccInfo Error: " + e );
}
OnPlAyerspawn
function onPlayerSpawn( player )
{
    Message( ">> " + player.Name + " has spawned." );
if ( ( status[ player.ID ].IsReg == true ) && ( status[ player.ID ].IsLogged == false ) )
{
    Announce( "/Login", player );
    ePrivMessage("Login First To Access Services",player);
player.Kick();

}
if ( status[ player.ID ].IsReg == false )
    {
    Announce( "/ register", player );
    ePrivMessage("Register First To Access Services",player);
    player.Kick();
}
if ( ( status[ player.ID ].IsReg ) && ( status[ player.ID ].IsLogged ) )
    {
    player.Cash = status[ player.ID ].Cash;
    }  
}
Title: Re: reseted after kick
Post by: MacTavish on Oct 08, 2015, 10:39 AM
Why you kick player when you can prevent spawn if they aren't logged/registered

function onPlayerRequestSpawn(player)
{
if(status[ player.ID ].IsReg== false)
{
MessagePlayer("Please register first by /register",player);
return 0;
}
else if(status[ player.ID ].IsReg == true && status[ player.ID ].IsLogged == false)
{
MessagePlayer("Please login first by /login",player);
return 0;
}
else return 1;
}
Title: Re: reseted after kick
Post by: :P on Oct 08, 2015, 10:42 AM
thanks kusnangi its great idea
can you give me idea how to create logout cmds and function
Title: Re: reseted after kick
Post by: Mashreq on Oct 08, 2015, 10:59 AM
The best way to implement logout is to first edit your IP in database to something else and then you need to set your logged class as false as well as kill the player when you have logged out.
Title: Re: reseted after kick
Post by: Xmair on Oct 08, 2015, 11:00 AM
Easy.
else if ( cmd == "logout" )
{
if ( status[player.ID].IsReg == false ) MessagePlayer("You are not registered.",player);
elss if ( status[player.ID].IsLogged == false ) MessagePlayer("You are not logged in",player);
else
{
status[player.ID].IsLogged=false;
player.Health=0.00;
player.Pos=Vector(player.Pos.x,player.Pos.y,player.Pos.z 10); //to eject player if in a vehicle. Remember to put the plus sign at player.Pos.z. 10 as my mobile doesnt have the plus sign
MessagePlayer("Logged out.",player);
}
}
Untested because I am at mob.
Title: Re: reseted after kick
Post by: MacTavish on Oct 08, 2015, 11:02 AM
Quote from: Mashreq on Oct 08, 2015, 10:59 AMThe best way to implement logout is to first edit your IP in database to something else and then you need to set your logged class as false as well as kill the player when you have logged out.

Quote from: Xmair on Oct 08, 2015, 11:00 AMEasy.
else if ( cmd == "logout" )
{
if ( status[player.ID].IsReg == false ) MessagePlayer("You are not registered.",player);
elss if ( status[player.ID].IsLogged == false ) MessagePlayer("You are not logged in");
else
{
status[player.ID].IsLogged=false;
player.Health=0.00;
player.Pos=Vector(player.Pos.x,player.Pos.y,player.Pos.z 10); //to eject player if in a vehicle.
}
}
Untested because I am at mob.

Okay but what about the data that will only gonna save when player leaves server
Title: Re: reseted after kick
Post by: Xmair on Oct 08, 2015, 11:05 AM
I guess there is already a savestats function onPlayerPart in warchiefs.
Anyway, updated :
else if ( cmd == "logout" )
{
if ( status[player.ID].IsReg == false ) MessagePlayer("You are not registered.",player);
elss if ( status[player.ID].IsLogged == false ) MessagePlayer("You are not logged in",player);
else
{
SaveStats(player);//Or wotever you use to save the stats.
status[player.ID].IsLogged=false;
player.Health=0.00;
player.Pos=Vector(player.Pos.x,player.Pos.y,player.Pos.z 10); //to eject player if in a vehicle. Remember to put the plus sign at player.Pos.z. 10 as my mobile doesnt have the plus sign
MessagePlayer("Logged out.",player);
}
}
Untested because I am at mob.
Title: Re: reseted after kick
Post by: :P on Oct 08, 2015, 11:42 AM
error end of statment expected if or ;
Title: Re: reseted after kick
Post by: KingOfVC on Oct 08, 2015, 11:52 AM
-..-

else if ( cmd == "logout" )
{
if ( status[player.ID].IsReg == false ) MessagePlayer("You are not registered.",player);
else if ( status[player.ID].IsLogged == false ) MessagePlayer("You are not logged in",player);
else
{
SaveStats(player);//Or wotever you use to save the stats.
status[player.ID].IsLogged=false;
player.Health=0.00;
player.Pos=Vector(player.Pos.x,player.Pos.y,player.Pos.z 10); //to eject player if in a vehicle. Remember to put the plus sign at player.Pos.z. 10 as my mobile doesnt have the plus sign
MessagePlayer("Logged out.",player);
}
}
Title: Re: reseted after kick
Post by: Mashreq on Oct 08, 2015, 11:53 AM
Try using this one:
else if ( cmd == "logout" )
{
if ( status[ player.ID ].IsReg == false ) MessagePlayer("You are not registered.",player);
elss if ( status[ player.ID ].IsLogged == false ) MessagePlayer("You are not logged in",player);
else
{
SaveStats( player );
local IP = "0.0.0.0";
QuerySQL( db, "UPDATE Account SET IP='" + IP + "' WHERE Name='" + player.Name.tolower() + "'" );
status[ player.ID ].IsLogged = false;
player.Health = 0;
player.Pos = player.Pos;
MessagePlayer("You have logged out from the server.",player);
}
}
Title: Re: reseted after kick
Post by: :P on Oct 08, 2015, 11:55 AM
Same Error but why
Title: Re: reseted after kick
Post by: Mashreq on Oct 08, 2015, 12:00 PM
I have spotted a error while checking if a player is logged in or not.
Change your:
elss if ( status[ player.ID ].IsLogged == false ) MessagePlayer("You are not logged in",player);
to
else if ( status[ player.ID ].IsLogged == false ) MessagePlayer("You are not logged in",player);
Title: Re: reseted after kick
Post by: :P on Oct 08, 2015, 12:15 PM
error player trying to set null
Title: Re: reseted after kick
Post by: KAKAN on Oct 08, 2015, 12:39 PM
On which line does it shows the error?
Title: Re: reseted after kick
Post by: :P on Oct 08, 2015, 12:49 PM
no line was specified only OnPlayerCommand  Player trying to set null
Title: Re: reseted after kick
Post by: Thijn on Oct 08, 2015, 04:10 PM
Then remove the try catch around your script.
Title: Re: reseted after kick
Post by: MacTavish on Oct 08, 2015, 05:00 PM
That error is in onPlayerPart in last line status[player.ID] = null;


I know because i already had that problem few months ago
Title: Re: reseted after kick
Post by: Mashreq on Oct 08, 2015, 05:03 PM
You need to remove your status[ id ] = null; in your SaveStats and you can add status[ player.ID ] = null; in your onPlayerPart event below your SaveStats or at the end of the event.
Title: Re: reseted after kick
Post by: :P on Oct 09, 2015, 02:52 PM
not works
Title: Re: reseted after kick
Post by: . on Oct 09, 2015, 02:53 PM
Quote from: xxkillerxx on Oct 09, 2015, 02:52 PMnot works

:poop:

(https://lh3.ggpht.com/CHvlu-o3SlISrZIIZLcH23WrqrE5wVxoNOn7MXwS7_bPZniwoe30BOImmFo7Ru535WM=w300)

I think you're the one that doesn't work.
Title: Re: reseted after kick
Post by: MacTavish on Oct 09, 2015, 03:05 PM
(https://forum.vc-mp.org/proxy.php?request=http%3A%2F%2Fimg-comment-fun.9cache.com%2Fmedia%2F2ad99bf4141683179577626170_700wa_0.gif&hash=857fee999ad2688cf1d40f91c7d56f195bc77c22)
Title: Re: reseted after kick
Post by: :P on Oct 09, 2015, 03:06 PM
Quote from: Kusanagi on Oct 08, 2015, 05:00 PMThat error is in onPlayerPart in last line status[player.ID] = null;


I know because i already had that problem few months ago
how you solve it
Title: Re: reseted after kick
Post by: MacTavish on Oct 09, 2015, 03:25 PM
Quote from: xxkillerxx on Oct 09, 2015, 03:06 PM
Quote from: Kusanagi on Oct 08, 2015, 05:00 PMThat error is in onPlayerPart in last line status[player.ID] = null;


I know because i already had that problem few months ago
how you solve it

That was solved by my Unexpected bettery fault that exploded my laptop
Title: Re: reseted after kick
Post by: :P on Oct 09, 2015, 03:29 PM
what can i use for giving back weps to a player for example i disarm a player give him 1 wep in case of like !fight when he exit how i can give him weps back
Title: Re: reseted after kick
Post by: KAKAN on Oct 09, 2015, 03:49 PM
Save them in a array and do it.
Title: Re: reseted after kick
Post by: :P on Oct 09, 2015, 05:01 PM
i try but its giving error calling to array
Title: Re: reseted after kick
Post by: EK.IceFlake on Oct 09, 2015, 05:08 PM
I know an easy fix however it might be hard for you
[spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler][spoiler]buy a brain[/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler][/spoiler]
Title: Re: reseted after kick
Post by: KAKAN on Oct 09, 2015, 05:15 PM
WTF is that!
Title: Re: reseted after kick
Post by: Xmair on Oct 10, 2015, 02:33 AM
Buy a brain.
Title: Re: reseted after kick
Post by: KAKAN on Oct 10, 2015, 04:56 AM
Show us your onPlayerPart and cKick functions.