Why does this script crashes?
#8

If it is my GM, than must i be a timer of every second, or Y_Objects. Ive nothing special in my GM.

Code of adminscript by me:
pawn Код:
#include <a_samp>
#include <dini>
#include <dutils>

#define FILTERSCRIPT
#if defined FILTERSCRIPT
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define COLOUR_GREEN        0x33AA33AA
#define COLOUR_RED          0xAA3333AA
#define COLOUR_YELLOW       0xFFFF00AA
#define COLOUR_LIGHTBLUE        0x33CCFFAA
#define COLOUR_ORANGE       0xFF9900AA

#define PlayerFile              "Users/%s.ini"
#define SettingFile         "Settings/MainSettings.ini"
#define CommandFile         "Settings/Commands.ini"


enum PLAYER_MAIN
{
    PLAYER_NAME[MAX_PLAYER_NAME],
    PLAYER_IP[16],
    PLAYER_REGGED,
    PLAYER_PASS,
    PLAYER_LOGGED,
    PLAYER_LEVEL,
    PLAYER_WIRED,
    PLAYER_JAILED
}

enum SETTINGS_MAIN
{
  POCKET_MONEY,
  JAIL_COMMANDS,
  ANNOUNCE_SECONDS,
  PASS_MIN,
  PASS_MAX
}

enum COMMANDS_MAIN
{
  AKILL,
  ANNOUNCE,
  ARMOURALL,
  BAN,
  CARHP,
  EXPLODE,
  FLIP,
  GOTO,
  GETHERE,
  GIVEARMOUR,
  GIVEHEALTH,
  GIVEWEAPON,
  GOD,
  HEALALL,
  IMITATE,
  IP,
  KICK,
  MAXAMMO,
  PING,
  SETLEVEL,
  SETWANTED,
  TBAN,
  TIME,
  WEATHER
}

new gPlayerInfo[MAX_PLAYERS][PLAYER_MAIN];
new gSettings[SETTINGS_MAIN];
new gCommands[COMMANDS_MAIN];

public OnFilterScriptInit()
{
    print("\n****************************************");
    print("* Admin Filterscript by Remi-X *");
    print("****************************************\n");

    if(!fexist(SettingFile))
    {
        dini_Create(SettingFile);
        dini_IntSet(SettingFile, "PocketMoney", 3000);
        dini_IntSet(SettingFile, "JailCommands", 0);
        dini_IntSet(SettingFile, "AnnounceSeconds", 3);
        dini_IntSet(SettingFile, "PassMin", 3);
        dini_IntSet(SettingFile, "PassMax", 15);
    }

    gSettings[POCKET_MONEY]         = dini_Int(SettingFile, "PocketMoney");
    gSettings[JAIL_COMMANDS]        = dini_Int(SettingFile, "JailCommands");
    gSettings[ANNOUNCE_SECONDS]     = dini_Int(SettingFile, "AnnounceSeconds");
    gSettings[PASS_MIN]             = dini_Int(SettingFile, "PassMin");
    gSettings[PASS_MAX]             = dini_Int(SettingFile, "PassMax");

    if(!fexist(CommandFile))
    {
        dini_Create(CommandFile);
        dini_IntSet(CommandFile, "Akill", 6);
        dini_IntSet(CommandFile, "Announce", 5);
        dini_IntSet(CommandFile, "Armourall", 3);
        dini_IntSet(CommandFile, "Ban", 9);
        dini_IntSet(CommandFile, "Carhp", 4);
        dini_IntSet(CommandFile, "Explode", 5);
        dini_IntSet(CommandFile, "Goto", 4);
        dini_IntSet(CommandFile, "Gethere", 5);
        dini_IntSet(CommandFile, "Givearmour", 6);
        dini_IntSet(CommandFile, "Givehealth", 6);
        dini_IntSet(CommandFile, "Giveweapon", 7);
        dini_IntSet(CommandFile, "God", 10);
        dini_IntSet(CommandFile, "Healall", 7);
        dini_IntSet(CommandFile, "Imitate", 8);
        dini_IntSet(CommandFile, "Ip", 2);
        dini_IntSet(CommandFile, "Kick", 7);
        dini_IntSet(CommandFile, "Maxammo", 8);
        dini_IntSet(CommandFile, "Ping", 1);
        dini_IntSet(CommandFile, "Setlevel", 10);
        dini_IntSet(CommandFile, "Setwanted", 6);
        dini_IntSet(CommandFile, "Tban", 9);
        dini_IntSet(CommandFile, "Time", 3);
        dini_IntSet(CommandFile, "Weather", 3);
    }

    gCommands[AKILL]            = dini_Int(CommandFile, "Akill");
    gCommands[ANNOUNCE]         = dini_Int(CommandFile, "Announce");
    gCommands[ARMOURALL]        = dini_Int(CommandFile, "Armourall");
    gCommands[BAN]              = dini_Int(CommandFile, "Ban");
    gCommands[CARHP]            = dini_Int(CommandFile, "Carhp");
    gCommands[EXPLODE]          = dini_Int(CommandFile, "Explode");
    gCommands[GOTO]             = dini_Int(CommandFile, "Goto");
    gCommands[GETHERE]          = dini_Int(CommandFile, "Gethere");
    gCommands[GIVEARMOUR]       = dini_Int(CommandFile, "Givearmour");
    gCommands[GIVEHEALTH]       = dini_Int(CommandFile, "Givehealth");
    gCommands[GIVEWEAPON]       = dini_Int(CommandFile, "Giveweapon");
    gCommands[GOD]              = dini_Int(CommandFile, "God");
    gCommands[HEALALL]          = dini_Int(CommandFile, "Healall");
    gCommands[IMITATE]          = dini_Int(CommandFile, "Imitate");
    gCommands[IP]               = dini_Int(CommandFile, "Ip");
    gCommands[KICK]             = dini_Int(CommandFile, "Kick");
    gCommands[MAXAMMO]          = dini_Int(CommandFile, "Maxammo");
    gCommands[SETLEVEL]         = dini_Int(CommandFile, "Setlevel");
    gCommands[SETWANTED]        = dini_Int(CommandFile, "Setwanted");
    gCommands[TBAN]             = dini_Int(CommandFile, "Tban");
    gCommands[TIME]             = dini_Int(CommandFile, "Time");
    gCommands[WEATHER]          = dini_Int(CommandFile, "Weather");

    return 1;
}
#endif


public OnPlayerConnect(playerid)
{
    new file[100],Name[MAX_PLAYER_NAME],Ip[16]; GetPlayerName(playerid,Name,sizeof(Name)); GetPlayerIp(playerid,Ip,sizeof(Ip)); format(file,sizeof(file),PlayerFile,Name);
    if(!dini_Exists(file)) {
        dini_Create(file);
        dini_Set(file,"Name",Name);
        dini_Set(file,"Ip",Ip);
        dini_IntSet(file,"Registered",-1);
        dini_IntSet(file,"Password",0);
        dini_IntSet(file,"Level",0);
        dini_IntSet(file,"Wired",0);
        dini_IntSet(file,"Jailed",0);
        SendClientMessage(playerid,COLOUR_ORANGE,"You're username is not recognized on this server. Please /register to continue.");
    }
    strcat(gPlayerInfo[playerid][PLAYER_NAME],                      dini_Get(file,"Name"));
    strcat(gPlayerInfo[playerid][PLAYER_IP],                        dini_Get(file,"Ip"));
    gPlayerInfo[playerid][PLAYER_REGGED]                        = dini_Int(file,"Registered");
    gPlayerInfo[playerid][PLAYER_PASS]                  = dini_Int(file,"Password");
    gPlayerInfo[playerid][PLAYER_LEVEL]                         = dini_Int(file,"Level");
    gPlayerInfo[playerid][PLAYER_WIRED]                 = dini_Int(file,"Wired");
    gPlayerInfo[playerid][PLAYER_JAILED]                        = dini_Int(file,"Jailed");
    if(gPlayerInfo[playerid][PLAYER_REGGED] == 0)           SendClientMessage(playerid,COLOUR_ORANGE,"You're username is recognised on this server, but you have not registered. Please /register to continue.");
    else if(gPlayerInfo[playerid][PLAYER_REGGED] == 1)       SendClientMessage(playerid,COLOUR_ORANGE,"You're username is recognised on this server. Please /login to continue.");
    gPlayerInfo[playerid][PLAYER_REGGED]                = 0;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new file[100];
    format(file,sizeof(file),PlayerFile,gPlayerInfo[playerid][PLAYER_NAME]);
    dini_Set(file,"Name",gPlayerInfo[playerid][PLAYER_NAME]);
    dini_Set(file,"Ip",gPlayerInfo[playerid][PLAYER_IP]);
    dini_IntSet(file,"Registered",gPlayerInfo[playerid][PLAYER_REGGED]);
    dini_IntSet(file,"Password",gPlayerInfo[playerid][PLAYER_PASS]);
    dini_IntSet(file,"Level",gPlayerInfo[playerid][PLAYER_LEVEL]);
    dini_IntSet(file,"Wired",gPlayerInfo[playerid][PLAYER_WIRED]);
    dini_IntSet(file,"Jailed",gPlayerInfo[playerid][PLAYER_JAILED]);
    gPlayerInfo[playerid][PLAYER_NAME]  = 0;
    gPlayerInfo[playerid][PLAYER_IP]   = 0;
    gPlayerInfo[playerid][PLAYER_REGGED] = 0;
    gPlayerInfo[playerid][PLAYER_LOGGED] = 0;
    gPlayerInfo[playerid][PLAYER_PASS]  = 0;
    gPlayerInfo[playerid][PLAYER_LEVEL] = 0;
    gPlayerInfo[playerid][PLAYER_WIRED] = 0;
    gPlayerInfo[playerid][PLAYER_JAILED] = 0;
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
  dcmd(register, 8, cmdtext);
  dcmd(login, 5, cmdtext);
  dcmd(logout, 6, cmdtext);
  dcmd(password, 8, cmdtext);

  return 0;
}

dcmd_register(playerid, params[])
{
  if(gPlayerInfo[playerid][PLAYER_REGGED] == 1)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You have already registered!");
  else if(!params[0])
    return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /register [password]");
  else if(strlen(params) < gSettings[PASS_MIN] || strlen(params) > gSettings[PASS_MAX])
  {
    new string[256];
    format(string, sizeof(string), "ERROR: Password must be between %d and $d characters long!", gSettings[PASS_MIN], gSettings[PASS_MAX]);
    return SendClientMessage(playerid, COLOUR_ORANGE, string);
  }
  else
  {
    new password = num_hash(params);
    gPlayerInfo[playerid][PLAYER_PASS] = password;
    gPlayerInfo[playerid][PLAYER_REGGED] = 1;
    gPlayerInfo[playerid][PLAYER_LOGGED] = 1;
    GetPlayerIp(playerid, gPlayerInfo[playerid][PLAYER_IP], 16);
    new string[256]; format(string, sizeof(string), "You have successfully registered your account with the password \'%s\'. You have been automatically logged in.", params);
    return SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
  }
}

dcmd_login(playerid, params[])
{
  if(gPlayerInfo[playerid][PLAYER_REGGED] != 1)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must register first to do that! Use /register [password] to register and login.");
  else if(gPlayerInfo[playerid][PLAYER_LOGGED] == 1)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You are already logged-in.");
  else if(!params[0])
    return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /login [password]");
  else
  {
    new password = num_hash(params);
    if(gPlayerInfo[playerid][PLAYER_PASS] == password)
    {
      gPlayerInfo[playerid][PLAYER_LOGGED] = 1;
    GetPlayerIp(playerid, gPlayerInfo[playerid][PLAYER_IP], 16);
      return SendClientMessage(playerid, COLOUR_LIGHTBLUE, "You have successfully logged in to your account.");
    }
    else
      return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: Incorrect password.");
  }
}

dcmd_logout(playerid, params[])
{
#pragma unused params
  if(gPlayerInfo[playerid][PLAYER_REGGED] != 1)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must register first to do that! Use /register [password] to register.");
  else if(gPlayerInfo[playerid][PLAYER_LOGGED] == 0)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You are already logged-out.");
  else
  {
    gPlayerInfo[playerid][PLAYER_LOGGED] = 0;
    return SendClientMessage(playerid, COLOUR_LIGHTBLUE, "You have successfully logged out of your account.");
  }
}

dcmd_password(playerid, params[])
{
  if(gPlayerInfo[playerid][PLAYER_REGGED] != 1)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must register first to do that! Use /register [password] to register and login.");
  else if(gPlayerInfo[playerid][PLAYER_LOGGED] == 0)
    return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: You must be logged-in to do that! Use /login [password] to login.");
  else
  {
    new tmp[256],
      tmp2[256],
      index;
    tmp = strtok(params, index);
    if(!strlen(tmp))
      return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /password [password] [new password]");
    tmp2 = strtok(params, index);
    if(!strlen(tmp2))
      return SendClientMessage(playerid, COLOUR_ORANGE, "USAGE: /password [password] [new password]");
    new oldpassword = num_hash(tmp), newpassword = num_hash(tmp2);
    if(gPlayerInfo[playerid][PLAYER_PASS] == oldpassword)
    {
      if(oldpassword == newpassword)
        return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: Your old password can not be the same as your new password.");
      else if(strlen(tmp2) < gSettings[PASS_MIN] || strlen(tmp2) > gSettings[PASS_MAX])
      {
        new string[100]; format(string, sizeof(string), "ERROR: Your new password must be between %d and %d characters long!", gSettings[PASS_MIN], gSettings[PASS_MAX]);
        return SendClientMessage(playerid, COLOUR_ORANGE, string);
      }
      gPlayerInfo[playerid][PLAYER_PASS] = newpassword;
      new string[256]; format(string, sizeof(string), "You have successfully changed your password from \'%s\' to \'%s\'.", tmp, tmp2);
      return SendClientMessage(playerid, COLOUR_LIGHTBLUE, string);
    }
    else
      return SendClientMessage(playerid, COLOUR_ORANGE, "ERROR: Incorrect password.");
  }
}
Reply


Messages In This Thread
Why does this script crashes? - by Remi-X - 10.04.2009, 09:14
Re: Why does this script crashes? - by Remi-X - 10.04.2009, 12:38
Re: Why does this script crashes? - by Nubotron - 10.04.2009, 12:47
Re: Why does this script crashes? - by Remi-X - 10.04.2009, 14:45
Re: Why does this script crashes? - by Remi-X - 11.04.2009, 06:17
Re: Why does this script crashes? - by Remi-X - 11.04.2009, 09:42
Re: Why does this script crashes? - by MarcoNecroX - 11.04.2009, 09:45
Re: Why does this script crashes? - by Remi-X - 11.04.2009, 11:53

Forum Jump:


Users browsing this thread: 1 Guest(s)