Vice City: Multiplayer

Server Development => Scripting and Server Management => Script Showroom => Topic started by: umar4911 on Oct 29, 2017, 11:00 AM

Title: /setlevel /headsetlevel /devsetlevel
Post by: umar4911 on Oct 29, 2017, 11:00 AM
@[MCO]We3da
Here are the cmds

player stats
Level = 0;


database connection and table
DB <- ConnectSQL("databases/Registration.db");


 QuerySQL(DB, "create table if not exists Accounts ( Name TEXT, LowerName TEXT, Password VARCHAR(255), Level NUMERIC DEFAULT 1, Money VARCHAR(255), Bank VARCHAR(255), TimeRegistered VARCHAR(255) DEFAULT CURRENT_TIMESTAMP, UID VARCHAR(255), IP VARCHAR(255), AutoLogin BOOLEAN DEFAULT true, Banned TEXT ) ");


Add this. This is onPlayerJoin and AccInfo function
function onPlayerJoin(player)
{
status[player.ID] = PlayerStats();
AccInfo(player);
}

function AccInfo(player)
{
 local q = QuerySQL(DB, "SELECT * FROM Accounts WHERE Name = '" + escapeSQLString(player.Name) + "'");
 if (q)
 {
  status[player.ID].Level = GetSQLColumnData(q, 3);
}

Commands
else if ( cmd == "setlevel" || cmd == "darlevel")
{
if(status[player.ID].Level < 8) MessagePlayer("[#FFDD33]Information:[#FFFFFF] Unauthorized Access.", player);
if ( !arguments ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else if ( NumTok( arguments, " " ) < 2 ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else
{
local q = QuerySQL(DB , "SELECT * FROM Accounts WHERE Name ='" + GetTok( arguments, " ", 1 ) + "'" );
if(!q) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Invalid Player", player);
else
{
local plr = GetSQLColumnData(q, 0);
local plrl = GetSQLColumnData(q, 3);
if ( plrl > 7 ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of head servers.", player );
else
{
local lvl = GetTok( arguments, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Level must be only in numbers.",player);
else
{
MessagePlayer("[#FFDD33]Administator Command:[#FFFFFF] Admin[" + player.Name + "] set level of player :" + plr + " to: " + lvl + ".",player);
QuerySQL(DB , "UPDATE Accounts SET Level='" + lvl + "' WHERE Name = '" + plr + "'" );
}
}
}
}
}

 
 
else if ( cmd == "headsetlevel" || cmd == "headdarlevel")
{
if(status[player.ID].Level < 10) MessagePlayer("[#FFDD33]Information:[#FFFFFF] Unauthorized Access.", player);
if ( !arguments ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else if ( NumTok( arguments, " " ) < 2 ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else
{
local q = QuerySQL(DB , "SELECT * FROM Accounts WHERE Name ='" + GetTok( arguments, " ", 1 ) + "'" );
if(!q) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Invalid Player", player);
else
{
local plr = GetSQLColumnData(q, 0);
local plrl = GetSQLColumnData(q, 3);
if ( plrl >= 15 ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of the Developer.", player );
else
{
local lvl = GetTok( arguments, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Level must be only in numbers.",player);
if(lvl > "10") MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] You cannot set level of player more than 10.", player);
else
{
MessagePlayer("[#FFDD33]Administrator Command:[#FFFFFF] Admin[" + player.Name + "] set level of player :" + plr + " to: " + lvl + ".",player);
QuerySQL(DB , "UPDATE Accounts SET Level='" + lvl + "' WHERE Name = '" + plr + "'" );
status[plr.ID].Level = lvl.tointeger();

}
}
}
}
}


else if ( cmd == "devsetlevel" || cmd == "devdarlevel")
{
if(status[player.ID].Level < 20) MessagePlayer("[#FFDD33]Information:[#FFFFFF] Unauthorized Access.", player);
if ( !arguments ) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else if ( NumTok( arguments, " " ) < 2 ) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else
{
local plr = FindPlayer(GetTok(arguments, " ", 1));
local q = QuerySQL(DB , "SELECT * FROM Accounts WHERE Name ='" + plr.Name + "'" );
if(!plr) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Invalid player", player);
else if(!q) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Data of player : "+plr+" not found in database", player);
else
{
local plrl = GetSQLColumnData(q, 3);
local lvl = GetTok( arguments, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Level must be only in numbers.",player);
else
{
MessagePlayer("[#FFDD33]Developer Command:[#FFFFFF] Developer[" + player.Name + "] set level of player :" + plr + " to: " + lvl + ".",player);
QuerySQL(DB , "UPDATE Accounts SET Level='" + lvl + "' WHERE Name = '" + plr.Name + "'" );
status[plr.ID].Level = lvl.tointeger();
}
}
}
}


Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Oct 29, 2017, 11:03 AM
Thanks bro Umar For You Helpppppp :DDDDD But
Can You Transfer Thi Command To Fuzzi Account SYstem
 i am Download thi command but dont work for fuzzi account system
 can u modify thi command to fuzzi account system and Thanks.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: ! on Oct 30, 2017, 07:25 AM
Giving me an error: the index status does not exist.
For the f**k sake fix it or remove this topic >:( or move it to the correct place.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Oct 30, 2017, 04:50 PM
Quote from: zeus on Oct 30, 2017, 07:25 AMGiving me an error: the index status does not exist.
For the f**k sake fix it or remove this topic >:( or move it to the correct place.

Did you even made a array named status?
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: ! on Oct 31, 2017, 06:55 AM
Where the **** did he mention to make an array for the status
PS: Visit here (http://forum.vc-mp.org/?board=10.0) and Read it carefully.

QuoteScript Showroom 1
Releases of full, usable scripts.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: umar4911 on Oct 31, 2017, 04:12 PM
Quote from: zeus on Oct 30, 2017, 07:25 AMGiving me an error: the index status does not exist.
For the f**k sake fix it or remove this topic >:( or move it to the correct place.
Quote from: zeus on Oct 31, 2017, 06:55 AMWhere the **** did he mention to make an array for the status
PS: Visit here (http://forum.vc-mp.org/?board=10.0) and Read it carefully.

QuoteScript Showroom 1
Releases of full, usable scripts.
see now and pls dont get angry
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 28, 2017, 11:02 AM
@umar4911 Can u Give Me the Function Of It ? :P
if ( plrl > 7 )
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: umar4911 on Nov 28, 2017, 11:46 AM
Quote from: Mohamed on Nov 28, 2017, 11:02 AM@umar4911 Can u Give Me the Function Of It ? :P
if ( plrl > 7 )
Read the code carefully so you can understand it
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 28, 2017, 06:29 PM
@umar4911 Hmm i Dont Have Any Idea For That's Code But i Need That's.

I Added But When Me Manager Level 9 i Can Set my level To 10

:D
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: umar4911 on Nov 29, 2017, 10:08 AM
Quote from: Mohamed on Nov 28, 2017, 06:29 PM@umar4911 Hmm i Dont Have Any Idea For That's Code But i Need That's.

I Added But When Me Manager Level 9 i Can Set my level To 10

:D
I have named the playerstats class as status
status[player.ID] = PlayerStats();This make it status[player.ID].Level
got it?
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 29, 2017, 12:24 PM
@umar4911 I know That's Brother I'm Joined the Game With Level 9

And i Do /msetlevel We3da 10 // My Level is Setted To 10 Lol And I'm Manager ?

M = Manager / iWant A Function / i Can't Set my level to higher Level Can You Give Me :D
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 29, 2017, 06:29 PM
Quote from: Mohamed on Nov 29, 2017, 12:24 PM@umar4911 I know That's Brother I'm Joined the Game With Level 9

And i Do /msetlevel We3da 10 // My Level is Setted To 10 Lol And I'm Manager ?

M = Manager / iWant A Function / i Can't Set my level to higher Level Can You Give Me :D

Add a if statement if the manager tries to set his level higher than his.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 29, 2017, 06:30 PM
Yas Was find Of Ti @KuRiMi Gave me Example ? :/
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 29, 2017, 06:38 PM
@Mohamed, which command did you used?
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 29, 2017, 06:40 PM
Here It Is @KuRiMi,

else if ( cmd == "setlevel" )
{
if( pstats[ player.ID ].Logged == false ) MessagePlayer( "[#ff0000][INFO][#ffffff] You Need Login or Register First.", player );
else if ( pstats[ player.ID ].Level < 10 ) MessagePlayer( "[#FF0000][INFO][#ffffff] You Are Not Authorized To use This Command", player );
else if ( !text ) MessagePlayer( "[#00BBFF][INFO][#ffffff] /setlevel <Nick/id> <Level>", player );
else
{
local plr = GetPlayer( GetTok( text, " ", 1 ) );
local plrl = GetSQLColumnData(q, 3);
if ( plrl >= 10 ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of the Developer.", player );
if ( !plr ) MessagePlayer( "[#ff0000][ERROR][#ffffff] Unknown Player..", player );
else
{
local lvl = GetTok( text, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#ff0000][ERROR][#ffffff] Level Must Be In Numbers..",player);
else
{
Message("[#fff123]Administrator[#ffffff] " + player.Name + " Set Level To " + plr.Name + ", Level: " + lvl + ".");
QuerySQL( sqliteDB,"UPDATE Accounts SET Level='" + lvl + "' WHERE Name='" + plr.Name + "'");
pstats[ player.ID ].Level = lvl.tointeger();
}
}
}
}

But When I'm Level 9 I Can Set My Level To 10 :/
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 29, 2017, 06:49 PM
Quote from: Mohamed on Nov 29, 2017, 06:40 PMHere It Is @KuRiMi,

else if ( cmd == "setlevel" )
{
if( pstats[ player.ID ].Logged == false ) MessagePlayer( "[#ff0000][INFO][#ffffff] You Need Login or Register First.", player );
else if ( pstats[ player.ID ].Level < 10 ) MessagePlayer( "[#FF0000][INFO][#ffffff] You Are Not Authorized To use This Command", player );
else if ( !text ) MessagePlayer( "[#00BBFF][INFO][#ffffff] /setlevel <Nick/id> <Level>", player );
else
{
local plr = GetPlayer( GetTok( text, " ", 1 ) );
local plrl = GetSQLColumnData(q, 3);
if ( plrl >= 10 ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of the Developer.", player );
if ( !plr ) MessagePlayer( "[#ff0000][ERROR][#ffffff] Unknown Player..", player );
else
{
local lvl = GetTok( text, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#ff0000][ERROR][#ffffff] Level Must Be In Numbers..",player);
else
{
Message("[#fff123]Administrator[#ffffff] " + player.Name + " Set Level To " + plr.Name + ", Level: " + lvl + ".");
QuerySQL( sqliteDB,"UPDATE Accounts SET Level='" + lvl + "' WHERE Name='" + plr.Name + "'");
pstats[ player.ID ].Level = lvl.tointeger();
}
}
}
}

But When I'm Level 9 I Can Set My Level To 10 :/

:c Look at this.
local plrl = GetSQLColumnData(q, 3);Their is no variable storing a userdata. Therefore, you were mising this piece of code.
local q = QuerySQL(DB , "SELECT * FROM Accounts WHERE Name ='" + GetTok( arguments, " ", 1 ) + "'" );
if(!q) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Invalid Player", player);
else {

Here's the fixed version.
else if ( cmd == "setlevel" || cmd == "darlevel")
{
if(status[player.ID].Level < 8) MessagePlayer("[#FFDD33]Information:[#FFFFFF] Unauthorized Access.", player);
if ( !arguments ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else if ( NumTok( arguments, " " ) < 2 ) MessagePlayer("[#FFDD33]Command Error:[#FFFFFF] Use /"+cmd+" [Nick/ID] [Level]", player );
else
{
local q = QuerySQL(DB , "SELECT * FROM Accounts WHERE Name ='" + GetTok( arguments, " ", 1 ) + "'" );
if(!q) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Invalid Player", player);
else
{
local plr = GetSQLColumnData(q, 0);
local plrl = GetSQLColumnData(q, 3);
if ( plrl > 7 ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of head servers.", player );
else
{
local lvl = GetTok( arguments, " ", 2);
if (!IsNum(lvl)) MessagePlayer("[#FFDD33]Usage Error:[#FFFFFF] Level must be only in numbers.",player);
else
{
MessagePlayer("[#FFDD33]Administator Command:[#FFFFFF] Admin[" + player.Name + "] set level of player :" + plr + " to: " + lvl + ".",player);
QuerySQL(DB , "UPDATE Accounts SET Level='" + lvl + "' WHERE Name = '" + plr + "'" );
}
}
}
}
}
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 29, 2017, 06:56 PM
@KuRiMi, I Have Tested It But I'm Join With Level 9
But i Do /setlevel We3 10 // Lol i Can Set My Level To Higher Level // Same Problem
Problem Not Fixed Yet :(
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 29, 2017, 08:55 PM
Quote from: Mohamed on Nov 29, 2017, 06:56 PM@KuRiMi, I Have Tested It But I'm Join With Level 9
But i Do /setlevel We3 10 // Lol i Can Set My Level To Higher Level // Same Problem
Problem Not Fixed Yet :(

Your in-game nick is We3da? I think the major issue is that you didn't add a if statement if that player's level is higher than the number you imputed. So, make another variable that locates the player's level on the account database.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 29, 2017, 09:04 PM
@KuRiMi, I'm Have Command /setlevel Fine Its Work But its For Level 10.
i Want To Add /msetlevel For Level 9
But if Me Level 9 Can Set Level TO Level 10
I'm Want If the Player Do /msetlevel He Just Can Set Level To 9 // Can't Set Level OF Devolper
About That's Command Its Work i Joined With Level 9 And i Joiined With oither Name test
Yas i Can't Set Level of Devolper But i Can Set my level To 10 // that's My probelm.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 30, 2017, 06:03 AM
Quote from: Mohamed on Nov 29, 2017, 09:04 PM@KuRiMi, I'm Have Command /setlevel Fine Its Work But its For Level 10.
i Want To Add /msetlevel For Level 9
But if Me Level 9 Can Set Level TO Level 10
I'm Want If the Player Do /msetlevel He Just Can Set Level To 9 // Can't Set Level OF Devolper
About That's Command Its Work i Joined With Level 9 And i Joiined With oither Name test
Yas i Can't Set Level of Devolper But i Can Set my level To 10 // that's My probelm.

Make sure plr1 is directing to the correct column. Otherwise, it's reading the code incorrectly and allow the level 9 user to prevent going more than 9.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 30, 2017, 07:28 AM
@KuRiMi, Example ? :P
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: D4rkR420R on Nov 30, 2017, 08:09 AM
Quote from: Mohamed on Nov 30, 2017, 07:28 AM@KuRiMi, Example ? :P

Their's no example in this case; you have to look for the answer by finding the answer in which you use a method known as "debugging".
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: ! on Nov 30, 2017, 10:39 AM
Use this level 9 and 10 admins will be able to use this command but level 9 admin wil not be able to assign higher levels while level 10 admin can assign any level to anyone.

if ( cmd == "setlevel" )
{
   if( pstats[ player.ID ].Logged == false ) MessagePlayer( "[#ff0000][INFO][#ffffff] You Need Login or Register First.", player );
   else if ( pstats[ player.ID ].Level < 9 ) MessagePlayer( "[#FF0000][INFO][#ffffff] You Are Not Authorized To use This Command", player );
   else if ( !text ) MessagePlayer( "[#00BBFF][INFO][#ffffff] /setlevel <Nick/id> <Level>", player );
   else
   {
      local
         plr = GetPlayer( GetTok( text, " ", 1 ) ),
         lvl = GetTok( text, " ", 2);
      if ( !plr ) MessagePlayer( "[#ff0000][ERROR][#ffffff] Unknown Player..", player );
      else if ( pstats[ player.ID ].Level == 9 && pstats[ plr.ID ].Level >= pstats[ player.ID ].Level ) MessagePlayer( "[#FFDD33]Usage Error:[#FFFFFF] You cannot set the level of higher level admin.", player );
      else if ( !lvl ) MessagePlayer("[#ff0000][ERROR][#ffffff] Put level", player);
      else if ( !IsNum( lvl ) ) MessagePlayer("[#ff0000][ERROR][#ffffff] Level Must Be In Numbers.", player);
      else
      {
         pstats[ plr.ID ].Level = lvl.tointeger();
         QuerySQL( sqliteDB,"UPDATE Accounts SET Level='"+lvl+"' WHERE lower(Name) LIKE '"+plr.Name+"'");
         Message("[#fff123]Administrator[#ffffff] "+player.Name+" set level of "+plr.Name+" to: "+lvl+".");
      }
   }
}

Quote from: KuRiMi on Nov 30, 2017, 06:03 AMMake sure plr1 is directing to the correct column. Otherwise, it's reading the code incorrectly and allow the level 9 user to prevent going more than 9.
In his case there's no need to assign and get level of plr using database since he is setting level only for online players why to waste time by getting data from database when pstats class has a level stored in it.
Title: Re: /setlevel /headsetlevel /devsetlevel
Post by: Mohamed Boubekri on Nov 30, 2017, 12:23 PM
@! Niiiiiiiiiiiiiiiiiiiiiiiiice Working Thanksssss u Very Muchhhhhhhhh :D :D :D