fork download
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <y_ini>
  4.  
  5. #define PATH "/Users/%s.ini"
  6.  
  7. enum pInfo
  8. {
  9. pPass[129],
  10. pAdmin,
  11. pLogged
  12. }
  13. new PlayerInfo[MAX_PLAYERS][pInfo];
  14.  
  15. forward LoadUser_data(playerid,name[],value[]);
  16.  
  17. public LoadUser_data(playerid,name[],value[])
  18. {
  19. INI_String("Password", PlayerInfo[playerid][pPass], 129);
  20. INI_Int("Admin", PlayerInfo[playerid][pAdmin]);
  21. return 1;
  22. }
  23.  
  24. public OnPlayerConnect(playerid)
  25. {
  26. SendClientMessage(playerid, -1, "{00FF00}Welcome to Vintage Roleplay!");
  27. new pname[MAX_PLAYER_NAME], file[256];
  28. GetPlayerName(playerid, pname, sizeof(pname));
  29. format(file, sizeof(file), PATH, pname);
  30.  
  31. if(fexist(file))
  32. {
  33. SendClientMessage(playerid, -1, "{FFFF00}You already have an account. Use /login [password]");
  34. }
  35. else
  36. {
  37. SendClientMessage(playerid, -1, "{00FFFF}You are new! Use /register [password]");
  38. }
  39. return 1;
  40. }
  41.  
  42. CMD:register(playerid, params[])
  43. {
  44. new pass[129], pname[MAX_PLAYER_NAME], file[256];
  45. if(sscanf(params, "s[129]", pass)) return SendClientMessage(playerid, -1, "Usage: /register [password]");
  46.  
  47. GetPlayerName(playerid, pname, sizeof(pname));
  48. format(file, sizeof(file), PATH, pname);
  49.  
  50. if(fexist(file)) return SendClientMessage(playerid, -1, "You are already registered, use /login");
  51.  
  52. new INI:fileh = INI_Open(file);
  53. INI_WriteString(fileh,"Password",pass);
  54. INI_WriteInt(fileh,"Admin", (GetPlayerCount() == 1 ? 12 : 0)); // first player = founder
  55. INI_Close(fileh);
  56.  
  57. format(PlayerInfo[playerid][pPass], 129, pass);
  58. PlayerInfo[playerid][pLogged] = 1;
  59. SendClientMessage(playerid, -1, "{00FF00}Registered and logged in!");
  60. return 1;
  61. }
  62.  
  63. CMD:login(playerid, params[])
  64. {
  65. new pass[129], pname[MAX_PLAYER_NAME], file[256];
  66. if(sscanf(params,"s[129]", pass)) return SendClientMessage(playerid,-1,"Usage: /login [password]");
  67.  
  68. GetPlayerName(playerid, pname, sizeof(pname));
  69. format(file, sizeof(file), PATH, pname);
  70.  
  71. if(!fexist(file)) return SendClientMessage(playerid,-1,"You are not registered, use /register");
  72.  
  73. INI_ParseFile(file,"LoadUser_%s", .bExtra = true, .extra = playerid);
  74.  
  75. if(strcmp(pass, PlayerInfo[playerid][pPass], true) == 0)
  76. {
  77. PlayerInfo[playerid][pLogged] = 1;
  78. SendClientMessage(playerid,-1,"{00FF00}Login successful!");
  79. }
  80. else SendClientMessage(playerid,-1,"{FF0000}Wrong password!");
  81. return 1;
  82. }
  83.  
  84. CMD:alogin(playerid, params[])
  85. {
  86. if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,-1,"You are not an admin.");
  87. PlayerInfo[playerid][pLogged] = 2;
  88. SendClientMessage(playerid,-1,"{00FF00}You are now on admin duty.");
  89. return 1;
  90. }
  91.  
  92. CMD:ahelp(playerid, params[])
  93. {
  94. if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,-1,"Not an admin.");
  95. SendClientMessage(playerid,-1,"Admin Commands: /kick /ban /banip /skick /alogin");
  96. return 1;
  97. }
  98.  
  99. CMD:kick(playerid, params[])
  100. {
  101. if(PlayerInfo[playerid][pAdmin] < 1) return 0;
  102. new id;
  103. if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /kick [id]");
  104. Kick(id);
  105. return 1;
  106. }
  107.  
  108. CMD:ban(playerid, params[])
  109. {
  110. if(PlayerInfo[playerid][pAdmin] < 1) return 0;
  111. new id;
  112. if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /ban [id]");
  113. Ban(id);
  114. return 1;
  115. }
  116.  
  117. CMD:banip(playerid, params[])
  118. {
  119. if(PlayerInfo[playerid][pAdmin] < 1) return 0;
  120. new ip[16];
  121. if(sscanf(params,"s[16]",ip)) return SendClientMessage(playerid,-1,"Usage: /banip [ip]");
  122. BanEx(ip);
  123. return 1;
  124. }
  125.  
  126. CMD:skick(playerid, params[])
  127. {
  128. if(PlayerInfo[playerid][pAdmin] < 1) return 0;
  129. new id;
  130. if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /skick [id]");
  131. SendClientMessage(id,-1,"{FF0000}You have been silently kicked by admin.");
  132. Kick(id);
  133. return 1;
  134. }
  135.  
  136. public OnGameModeInit()
  137. {
  138. SetGameModeText("Vintage Roleplay");
  139. AddPlayerClass(0, 1502.0, -1670.0, 13.5, 270.0, 0,0,0,0,0,0); // Los Santos spawn
  140. return 1;
  141. }
  142.  
  143. public OnPlayerSpawn(playerid)
  144. {
  145. SendClientMessage(playerid,-1,"{00FF00}Welcome to Los Santos, enjoy your roleplay!");
  146. return 1;
  147. }
  148.  
Success #stdin #stdout 0.03s 26024KB
stdin
Standard input is empty
stdout
#include <a_samp>
#include <sscanf2>
#include <y_ini>

#define PATH "/Users/%s.ini"

enum pInfo
{
    pPass[129],
    pAdmin,
    pLogged
}
new PlayerInfo[MAX_PLAYERS][pInfo];

forward LoadUser_data(playerid,name[],value[]);

public LoadUser_data(playerid,name[],value[])
{
    INI_String("Password", PlayerInfo[playerid][pPass], 129);
    INI_Int("Admin", PlayerInfo[playerid][pAdmin]);
    return 1;
}

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, -1, "{00FF00}Welcome to Vintage Roleplay!");
    new pname[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), PATH, pname);

    if(fexist(file))
    {
        SendClientMessage(playerid, -1, "{FFFF00}You already have an account. Use /login [password]");
    }
    else
    {
        SendClientMessage(playerid, -1, "{00FFFF}You are new! Use /register [password]");
    }
    return 1;
}

CMD:register(playerid, params[])
{
    new pass[129], pname[MAX_PLAYER_NAME], file[256];
    if(sscanf(params, "s[129]", pass)) return SendClientMessage(playerid, -1, "Usage: /register [password]");

    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), PATH, pname);

    if(fexist(file)) return SendClientMessage(playerid, -1, "You are already registered, use /login");

    new INI:fileh = INI_Open(file);
    INI_WriteString(fileh,"Password",pass);
    INI_WriteInt(fileh,"Admin", (GetPlayerCount() == 1 ? 12 : 0)); // first player = founder
    INI_Close(fileh);

    format(PlayerInfo[playerid][pPass], 129, pass);
    PlayerInfo[playerid][pLogged] = 1;
    SendClientMessage(playerid, -1, "{00FF00}Registered and logged in!");
    return 1;
}

CMD:login(playerid, params[])
{
    new pass[129], pname[MAX_PLAYER_NAME], file[256];
    if(sscanf(params,"s[129]", pass)) return SendClientMessage(playerid,-1,"Usage: /login [password]");

    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), PATH, pname);

    if(!fexist(file)) return SendClientMessage(playerid,-1,"You are not registered, use /register");

    INI_ParseFile(file,"LoadUser_%s", .bExtra = true, .extra = playerid);

    if(strcmp(pass, PlayerInfo[playerid][pPass], true) == 0)
    {
        PlayerInfo[playerid][pLogged] = 1;
        SendClientMessage(playerid,-1,"{00FF00}Login successful!");
    }
    else SendClientMessage(playerid,-1,"{FF0000}Wrong password!");
    return 1;
}

CMD:alogin(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,-1,"You are not an admin.");
    PlayerInfo[playerid][pLogged] = 2;
    SendClientMessage(playerid,-1,"{00FF00}You are now on admin duty.");
    return 1;
}

CMD:ahelp(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid,-1,"Not an admin.");
    SendClientMessage(playerid,-1,"Admin Commands: /kick /ban /banip /skick /alogin");
    return 1;
}

CMD:kick(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return 0;
    new id;
    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /kick [id]");
    Kick(id);
    return 1;
}

CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return 0;
    new id;
    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /ban [id]");
    Ban(id);
    return 1;
}

CMD:banip(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return 0;
    new ip[16];
    if(sscanf(params,"s[16]",ip)) return SendClientMessage(playerid,-1,"Usage: /banip [ip]");
    BanEx(ip);
    return 1;
}

CMD:skick(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return 0;
    new id;
    if(sscanf(params,"u",id)) return SendClientMessage(playerid,-1,"Usage: /skick [id]");
    SendClientMessage(id,-1,"{FF0000}You have been silently kicked by admin.");
    Kick(id);
    return 1;
}

public OnGameModeInit()
{
    SetGameModeText("Vintage Roleplay");
    AddPlayerClass(0, 1502.0, -1670.0, 13.5, 270.0, 0,0,0,0,0,0); // Los Santos spawn
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SendClientMessage(playerid,-1,"{00FF00}Welcome to Los Santos, enjoy your roleplay!");
    return 1;
}