Jujuv icon

[SA:MP | GM] Base-GM Alt

Jujuv | PRO | 06/09/12 07:41:15 PM UTC | 0 ⭐ | 343 👁️ | Never ⏰ | []
Pawn |

18.41 KB

|

None

|

0 👍

/

0 👎

/*
 
         ___                                                           
        | . \ _ _  ___  ___  ___  _ _  ___  ___  ___  ___ ___ ___  _ _ 
        |  _/| '_>/ ._>|___|| . \| '_>/ . \/ | '/ ._><_-<<_-</ . \| '_>
        |_|  |_|  \___.     |  _/|_|  \___/\_|_.\___./__//__/\___/|_|  
                            |_|                                        
                            _    _    _               
                          _| |_ | |_ <_>._ _  ___  ___
                           | |  | . || || ' |/ . |<_-<
                           |_|  |_|_||_||_|_|\_. |/__/
                                             <___'    
*/
/*--------------------------------------Librarys--------------------------------------------*/
#include <a_samp>
#include <djson>
#include <dutils>
 
/*--------------------------------------Macros----------------------------------------------*/
#define DIALOG_REGISTER 0
#define DIALOG_LOGIN 1
#define DIALOG_ADMIN_MENU 2
#define DIALOG_ADMIN_SET 4
#define DIALOG_BAN_CONFIRM 5
#define DIALOG_DEL_ACCOUNT_CONFIRM 6
#define DIALOG_DEL_ACCOUNT_DONE 7
#define DIALOG_UNBAN_INPUT 8
#define DIALOG_UNBAN_DONE 9
 
#define MEMBER 0
#define MODO 1
#define ADMIN 2
 
#define COLOR_YELLOW 0xFFD200FF
 
 
 
 
/*
 
 
           _____ _       _           _   _   _     _                 
          |  __ \ |     | |         | | | | | |   (_)                
          | |  \/ | ___ | |__   __ _| | | |_| |__  _ _ __   __ _ ___ 
          | | __| |/ _ \| '_ \ / _` | | | __| '_ \| | '_ \ / _` / __|
          | |_\ \ | (_) | |_) | (_| | | | |_| | | | | | | | (_| \__ \
           \____/_|\___/|_.__/ \__,_|_|  \__|_| |_|_|_| |_|\__, |___/
                                                            __/ |    
                                                           |___/     
 
 
 
 
*/
/*--------------------------------------Variables------------------------------------*/
new gMaxPlayersConnected;
/*--------------------------------------Enumerations---------------------------------*/
enum E_PLAYERINFO
{
        logued,
        staffRank,
        playerClicked
        
}
/*--------------------------------------Arrays---------------------------------------*/
new pInfo[MAX_PLAYERS][E_PLAYERINFO];
 
/*
 
              ______                    _    _                    
              |  ___|                  | |  (_)                   
              | |_  _   _  _ __    ___ | |_  _   ___   _ __   ___ 
              |  _|| | | || '_ \  / __|| __|| | / _ \ | '_ \ / __|
              | |  | |_| || | | || (__ | |_ | || (_) || | | |\__ \
              \_|   \__,_||_| |_| \___| \__||_| \___/ |_| |_||___/
                                                                  
                                                                  
                       _____  _      _                    
                      |_   _|| |    (_)                   
                        | |  | |__   _  _ __    __ _  ___ 
                        | |  | '_ \ | || '_ \  / _` |/ __|
                        | |  | | | || || | | || (_| |\__ \
                        \_/  |_| |_||_||_| |_| \__, ||___/
                                                __/ |     
                                               |___/      
*/
 
/*--------------------------------------------Functions-------------------------------------*/
stock strs(string1[], string2[])//Strings Sames (strs)
{
        if(!strcmp(string1, string2) && strlen(string1) == strlen(string2) && strlen(string1) > 1)
            {return true;}
        else
            {return false; }
}
 
stock GivePlayerName(playerid)//Return the name of the given playerid
{
    new pName[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, pName, sizeof(pName));
    
    return pName;
}
stock GetPlayerAccountFile(playerid)//Return the user file path 
{
        new pName[MAX_PLAYER_NAME+1], filePath[50];
        pName = GivePlayerName(playerid);
        format(filePath, sizeof(filePath), "/Accounts/%s.json", pName);
        
        return filePath;
}
stock IsPlayerRegistered(playerid)
{
    if(fexist(GetPlayerAccountFile(playerid))) { return true; }//If the user-file for the nick exists
    else{ return false; }
        
}
 
stock RemovePlayerAccount(playerid)
{
    if(IsPlayerRegistered(playerid)) { djRemoveFile(GetPlayerAccountFile(playerid)); }
}
 
stock TryLogin(playerid, string[])//Return: 0 if sucefully logued in; 1 if password is bad; 2 if user is not registered
{
    if(IsPlayerRegistered(playerid))
        {
            new password[MAX_STRING];
            password = dj(GetPlayerAccountFile(playerid), "GlobalInfo/Password");
            
            if(strs(hash(string), password))
                { pInfo[playerid][logued] = true; LoadPlayerData(playerid); return 0; }
            else
                { return 1; }
        }
    else
        { return 2; }
}
stock Register(playerid, password[], bool:force)
{
    if(force)
        {
            RemovePlayerAccount(playerid);
            pInfo[playerid][logued] = false;
            pInfo[playerid][staffRank] = MEMBER;
            Register(playerid, password, false);
            return true;
        }
    else if(!IsPlayerRegistered(playerid))
        {
                new pName[MAX_PLAYER_NAME+1], filePath[50];
                pName = GivePlayerName(playerid);
                filePath = GetPlayerAccountFile(playerid);
                
                djCreateFile(filePath);
                djSet(filePath, "GlobalInfo/password", hash(password));
                
                return true;
        }
    else
        { return false; }
}
 
stock GetAdminRank(playerid)
{
        if(IsPlayerRegistered(playerid))
            { return pInfo[playerid][staffRank]; }
        else
            { return -1; }
}
stock IsPlayerLoguedIn(playerid)
{
    if(pInfo[playerid][logued])
        { return true; }
    else
        { return false; }
}
 
stock SetPlayerAdmin(playerid, rank)
{
    if(IsPlayerLoguedIn(playerid))
        { pInfo[playerid][staffRank] = rank; }
}
 
stock IsPlayerBanned(playerid)
{
    if(djInt(GetPlayerAccountFile(playerid), "Moderation/ban"))
        { return true;}
    else
        { return false; }
}
 
stock LoadPlayerData(playerid)
{
    if(IsPlayerLoguedIn(playerid))
        {
            new filePath[50];
            filePath = GetPlayerAccountFile(playerid);
            
            pInfo[playerid][staffRank] = djInt(filePath, "GlobalInfo/staffRank");
        }
}
 
stock SavePlayerData(playerid)
{
    if(IsPlayerLoguedIn(playerid))
        {
            new filePath[50];
            filePath = GetPlayerAccountFile(playerid);
            
            djSetInt(filePath, "GlobalInfo/staffRank", pInfo[playerid][staffRank]);
        }
}
 
stock IsPlayerNearPlayer(player, playerpoint)
{
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerpoint, x, y, z);
    
    if(IsPlayerInRangeOfPoint(player, 10.0, x, y, z))
        { return true;}
    else
        { return false; }
}
 
stock SpeakToNearPlayers(playerid, message[])
{
    for(new i = 0; i < gMaxPlayersConnected; i++)
    {
        if(IsPlayerNearPlayer(playerid, i))
            { SendPlayerMessageToPlayer(i, playerid, message); }
    }
}
 
/*--------------------------------------------Forwards--------------------------------------*/
 
/*
 
               _____         _  _  _                   _         
              /  __ \       | || || |                 | |        
              | /  \/  __ _ | || || |__    __ _   ___ | | __ ___ 
              | |     / _` || || || '_ \  / _` | / __|| |/ // __|
              | \__/\| (_| || || || |_) || (_| || (__ |   < \__ \
               \____/ \__,_||_||_||_.__/  \__,_| \___||_|\_\|___/
                                                                 
 
*/
main()
{
    print("\n----------------------------------");
    print(" Basic GM by Jujuv");
    print("----------------------------------\n");
}
 
public OnGameModeInit()
{
    djson_GameModeInit();
    djAutocommit(true);
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}
 
public OnGameModeExit()
{
    djson_GameModeExit();
    return 1;
}
 
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
}
 
public OnPlayerConnect(playerid)
{
    
    if(gMaxPlayersConnected < playerid)
        { gMaxPlayersConnected = playerid; }
    
    if(IsPlayerRegistered(playerid))
        { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Please register", "Good to see you back, bro' !\n Enter your password to log-in and HAVE FUN !", "Ok", "Cancel (Kick"); }
    else
        { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Please register", "Hello !\n Your account isn't registered yet but we will fix it right now !\n Choose a password for your new account", "Ok", "Cancel (Kick)"); }
    
        
    if(IsPlayerBanned(playerid))
        { Kick(playerid); }
    return 1;
}
 
public OnPlayerDisconnect(playerid, reason)
{
    SavePlayerData(playerid);
    
    if(playerid == gMaxPlayersConnected)
        {
                for(new i = gMaxPlayersConnected-1; i >= 0; i--)
                {
                        if(IsPlayerConnected(i))
                                {gMaxPlayersConnected = i; break;}
                }
        }
    return 1;
}
 
public OnPlayerSpawn(playerid)
{
    return 1;
}
 
public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}
 
public OnVehicleSpawn(vehicleid)
{
    return 1;
}
 
public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}
 
public OnPlayerText(playerid, text[])
{
    SpeakToNearPlayers(playerid, text);
    return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}
 
public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}
 
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    return 1;
}
 
public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}
 
public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}
 
public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}
 
public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}
 
public OnRconCommand(cmd[])
{
    return 1;
}
 
public OnPlayerRequestSpawn(playerid)
{
    return 1;
}
 
public OnObjectMoved(objectid)
{
    return 1;
}
 
public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}
 
public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}
 
public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}
 
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
    return 1;
}
 
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}
 
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}
 
public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}
 
public OnPlayerExitedMenu(playerid)
{
    return 1;
}
 
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}
 
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}
 
public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat)
{
    return 1;
}
 
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    return 1;
}
 
public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}
 
public OnPlayerUpdate(playerid)
{
    return 1;
}
 
public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}
 
public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}
 
public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}
 
public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
        {
            case DIALOG_REGISTER:
                {
                    if(!response)
                        { Kick(playerid); }
                    else if(strlen(inputtext) >= 7 && strlen(inputtext) <= 24)
                        { Register(playerid, inputtext, false); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Please register", "You must enter your password to enjoy the server!\n The one you entered is bad\n Please enter your password", "Ok", "Cancel (Kick)");}
                    else
                        { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Please register", "Your password is too short or too long (min 6; max 24)", "Ok", "Cancel (Kick)"); }
                }
            case DIALOG_LOGIN:
                {
                        if(!response)
                            { Kick(playerid); }
                        else
                            { 
                                new anwser = TryLogin(playerid, inputtext);
                                
                                if(anwser == 1)
                                    { ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Please register", "You must enter your password to enjoy the server!\n The one you entered is bad\n Please enter your password", "Ok", "Cancel (Kick)"); }
                            }
                }
            case DIALOG_ADMIN_MENU://Copy-Paste from another of my OWNS public scripts !
             {
                        switch(listitem)
                        {
                                        case 0://Set admin
                                        {
                                        if((GetAdminRank(playerid) >= ADMIN && GetAdminRank(pInfo[playerid][playerClicked]) < ADMIN) || IsPlayerAdmin(playerid))
                                        {
                                                ShowPlayerDialog(playerid, DIALOG_ADMIN_SET, DIALOG_STYLE_LIST, "Choisisez:", "Membre\r\nModerateur\r\nAdministrateur\r\n", "Valider", "Annuler");
                                        }
                                }
                                        case 1://Kick
                                        {
                                        if(GetAdminRank(pInfo[playerid][playerClicked]) == MEMBER)
                                        {
                                            new msg[MAX_STRING];
                                            format(msg, sizeof(msg), "[Moderation]%s has been kicked from the server", GivePlayerName(playerid));
                                            SendClientMessageToAll(COLOR_YELLOW, msg);
                                            Kick(pInfo[playerid][playerClicked]);
                                        }
                                }
                                        case 2://Ban
                                        {
                                        if(GetAdminRank(pInfo[playerid][playerClicked]) == MEMBER)
                                        {
                                                        ShowPlayerDialog(playerid, DIALOG_BAN_CONFIRM, DIALOG_STYLE_MSGBOX, "Confirmation", "Are you sure ?", "Yes", "No");
                                        }
                                }
                                        case 3://Remove player account
                                        {
                                            ShowPlayerDialog(playerid, DIALOG_DEL_ACCOUNT_CONFIRM, DIALOG_STYLE_MSGBOX, "Confirmation", "EAre you sure ?", "Yes", "No");
                                }
                                case 4://TP
                                {
                                    new Float:x, Float:y, Float:z;
                                    GetPlayerPos(pInfo[playerid][playerClicked], x, y, z);
                                    SetPlayerPosFindZ(playerid, x+random(20), y+random(20), z);
                                }
                                case 5://Spec
                                {
                                    if(IsPlayerLoguedIn(pInfo[playerid][playerClicked]))
                                    {
                                        if(playerid == pInfo[playerid][playerClicked])
                                        {
                                           TogglePlayerSpectating(playerid, 0);
                                        }
                                        else
                                        {
                                            TogglePlayerSpectating(playerid, 1);
                                            PlayerSpectatePlayer(playerid, pInfo[playerid][playerClicked]);
                                        }
                                    }
                                }
                        }
                }
                    case DIALOG_ADMIN_SET:
                        {
                                switch(listitem)
                                {
                                        case 0://member
                                        {
                                                SetPlayerAdmin(pInfo[playerid][playerClicked], MEMBER);
                                        }
                                        case 1://modo
                                        {
                                                SetPlayerAdmin(pInfo[playerid][playerClicked], MODO);
                                        }
                                        case 2://admin
                                        {
                                                SetPlayerAdmin(pInfo[playerid][playerClicked], ADMIN);
                                        }
                                }
                        }
                    case DIALOG_BAN_CONFIRM:
                        {
                                if(response)
                                {
                                    new msg[MAX_STRING];
                                    format(msg, sizeof(msg), "[Moderation] %s has been banned from the server", GivePlayerName(pInfo[playerid][playerClicked]));
                                    djSetInt(GetPlayerAccountFile(pInfo[playerid][playerClicked]),"Moderation/ban", 1);
                                    SendClientMessageToAll(COLOR_YELLOW, msg);
                                    Kick(playerid);
                                }
                        }
                    case DIALOG_DEL_ACCOUNT_CONFIRM:
                    {
                        if(response && !GetAdminRank(pInfo[playerid][playerClicked]))
                                {
                                    RemovePlayerAccount(pInfo[playerid][playerClicked]);
                                    
                                    if(IsPlayerConnected(pInfo[playerid][playerClicked]))
                                                { Kick(pInfo[playerid][playerClicked]); }
                                            
                                    ShowPlayerDialog(playerid, DIALOG_DEL_ACCOUNT_DONE, DIALOG_STYLE_MSGBOX, "Done", "Account sucefully removed", "Ok", "");
                                }
                    }
                    case DIALOG_UNBAN_INPUT:
                    {
                            if(response)
                            {
                                    new filePath[50];
                                    format(filePath, sizeof(filePath), "/Accounts/%s.json", inputtext);
                                    
                                    if(fexist(filePath))
                                        {
                                                if(djInt(filePath, "Moderation/ban"))
                                                    { djSetInt(filePath, "Moderation/ban", 0); SendClientMessage(playerid, COLOR_YELLOW, "Player has been sucefully unbanned"); }
                                                else
                                                    { SendClientMessage(playerid, COLOR_YELLOW, "This player isn't banned"); }
                                        }
                                    else
                                        { SendClientMessage(playerid, COLOR_YELLOW, "This username isn't registered"); }
                                    
                            }
                    }
        }
    return 1;
}
 
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    pInfo[playerid][playerClicked] = clickedplayerid;
    
    if(GetAdminRank(playerid) > MEMBER)
        {  ShowPlayerDialog(playerid, DIALOG_ADMIN_MENU, DIALOG_STYLE_LIST, "Administration", "Set Admin\r\nKick\r\nBan\r\nRempve Account\r\nTeleport to player\r\nSpec player\r\n", "Ok", "Cancel"); }
    return 1;
}
 
 
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!strcmp("/unban", cmdtext, true, 10))
    {
        if(GetAdminRank(playerid) == ADMIN)
            {  ShowPlayerDialog(playerid,  DIALOG_UNBAN_INPUT, DIALOG_STYLE_INPUT, "Unban", "Enter the name of the player wich you want to unban", "Unban", "Cancel"); }
        else
            { SendClientMessage(playerid, COLOR_YELLOW, "You must be an andmin to do that"); }
        return 1;
    }
    return 0;
}
public OnEnterExitModShop(playerid, enterexit, interiorid)
{
    return 1;
}
 
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    return 1;
}
 
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    
 
    return 1;
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎