Veteran Member
Join Date: Apr 2017
Location: Brazil
|
![Old](images/statusicon/post_old.svg)
05-08-2019
, 17:54
Re: Become Admin
|
#8
|
Quote:
Originally Posted by glmmlg
first time to 10 , than 20 but don`t work , my mod its csdm.
But plugin have more bugs. like if you become vip for x days or hours , your kills doesnt delet , eg: in my case i will put vip for 60 min but you have to do 100 kils. after your vip expire you can type again /ba and get vip bcz your kills doesnt deleted ![Smile](images/smilies/smile.gif)
|
Try
Spoiler
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fvault>
#include <colorchat>
#define PLUGIN "Become Admin"
#define VERSION "1.0"
#define AUTHOR "hackera457"
//#define CHECK_USER_BANNED
#define ADMIN_EXPIRED 2592000 /*30 days*/ /*Time in seconds*/
enum _:Settings
{
BADMIN_REQUIRE_TIME,
BADMIN_REQUIRE_KILLS,
BADMIN_ADMIN_FLAGS
};
new const g_szDataVault[] = "BecomeAdmin_USER_Data";
new const g_szAdminsVault[] = "BecomeAdmin_ADMIN_DB";
new g_szCommands[][]={
"say /ba","say_team /ba",
"say ba", "say_team ba"
};
new g_iKills[33], g_iPlayedTime[33];
new g_szFlags[32];
new g_pSettings[Settings];
#if defined CHECK_USER_BANNED
new Trie:g_tUserBansDB;
new bool:g_bIsUserNotBanned[33];
#endif
new bool:g_bHasUserReqTime[33];
new bool:g_bHasUserReqKills[33];
public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR);
register_cvar("hackera457_becomeadmin",VERSION,FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED);
g_pSettings[BADMIN_REQUIRE_TIME] = register_cvar("becomeadmin_req_playtime","1500");
g_pSettings[BADMIN_REQUIRE_KILLS] = register_cvar("becomeadmin_req_kills","50");
g_pSettings[BADMIN_ADMIN_FLAGS] = register_cvar("becomeadmin_admin_flags","abcdeijo");
for(new i=0; i < 4; i++)
register_clcmd(g_szCommands[i],"ShowMenu");
get_pcvar_string(g_pSettings[BADMIN_ADMIN_FLAGS],g_szFlags, sizeof g_szFlags -1);
#if defined CHECK_USER_BANNED
g_tUserBansDB = TrieCreate();
LoadBansFromFile();
#endif
register_event("DeathMsg", "eDeath", "a");
register_event("HLTV", "event_new_round", "a", "1=0", "2=0");
}
public client_connect(id)
{
LoadUserData(id);
CheckUser(id);
}
public client_disconnect(id)
{
SaveUserData(id);
}
public client_putinserver(id)
{
LoadAdminInfo(id);
}
public event_new_round()
{
static iPlayers[32],iNum, iPlayer;
get_players(iPlayers,iNum,"ch");
for(new i=0; i < iNum; i++)
{
iPlayer = iPlayers[i];
if(!is_user_connected(iPlayer))
continue;
g_iPlayedTime[iPlayer] = g_iPlayedTime[iPlayer]+ (get_user_time(iPlayer) / 60);
}
}
public plugin_end()
{
#if defined CHECK_USER_BANNED
TrieDestroy(g_tUserBansDB);
#endif
}
public ShowMenu(id)
{
if(is_user_admin(id))
{
ColorChat(id,TEAM_COLOR,"^1[^4Become^3Admin^1] You have been already became an Admin!");
return PLUGIN_HANDLED;
}
CheckUser(id);
static szMenuItem[64], iMenu;
iMenu = menu_create("\rBecome an Admin:","handlerMenuAdmin");
#if defined CHECK_USER_BANNED
formatex(szMenuItem, sizeof szMenuItem -1,"\yYou were not banned. %s",(g_bIsUserNotBanned[id] ? "\r[CHECKED]" : ""));
#else
formatex(szMenuItem, sizeof szMenuItem -1,"\dYou were not banned.");
#endif
menu_additem(iMenu, szMenuItem,"1",_,menu_makecallback("DisableBanOption"));
formatex(szMenuItem, sizeof szMenuItem -1, "\yYou were played \d%i \yminutes. %s",get_pcvar_num(g_pSettings[BADMIN_REQUIRE_TIME]),(g_bHasUserReqTime[id] ? "\r[CHECKED]" : ""));
menu_additem(iMenu, szMenuItem,"2",_,menu_makecallback("DisableTimeOption"));
formatex(szMenuItem, sizeof szMenuItem -1,"\yYou were have \d%i \ykills. %s",get_pcvar_num(g_pSettings[BADMIN_REQUIRE_KILLS]),(g_bHasUserReqKills[id] ? "\r[CHECKED]" : ""));
menu_additem(iMenu, szMenuItem,"3",_,menu_makecallback("DisableKillOption"));
if(is_user_become_admin(id))
{
menu_additem(iMenu, "\rBecome Admin","4");
}
menu_setprop(iMenu, MPROP_EXITNAME, "\rExit");
menu_display(id,iMenu,0);
return PLUGIN_HANDLED;
}
public DisableBanOption(id,iMenu, iItem)
{
return ITEM_DISABLED;
}
public DisableTimeOption(id,iMenu, iItem)
{
return ITEM_DISABLED;
}
public DisableKillOption(id,iMenu, iItem)
{
return ITEM_DISABLED;
}
public handlerMenuAdmin(id,iMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
static szData[6],szName[64],iAccess, iCallback, iKey;
menu_item_getinfo(iMenu, iItem, iAccess, szData, sizeof szData -1, szName, sizeof szName -1, iCallback);
iKey = str_to_num(szData);
switch(iKey)
{
case 4:
{
#if defined CHECK_USER_BANNED
if(g_bIsUserNotBanned[id] && g_bHasUserReqTime[id] && g_bHasUserReqKills[id])
#else
if(g_bHasUserReqTime[id] && g_bHasUserReqKills[id])
#endif
{
BecomeAdmin(id,g_szFlags);
SaveAdminInfo(id,g_szFlags);
}
}
}
return PLUGIN_HANDLED;
}
public eDeath()
{
static iKiller, iVictim;
iKiller = read_data(1);
iVictim = read_data(2);
if(!is_user_connected(iKiller) || iKiller == iVictim)
return;
g_iKills[iKiller]++
}
#if defined CHECK_USER_BANNED
LoadBansFromFile()
{
static iFilePointer, szData[512], szAddIp[32], szBanTime[40], szUserIp[32], iTotalBans, iStart;
iTotalBans = 0;
iFilePointer = fopen("listip.cfg","r");
if(!iFilePointer)
return;
while(!feof(iFilePointer))
{
fgets(iFilePointer,szData, sizeof szData -1);
trim(szData);
if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/'))
continue;
iStart = containi(szData, "addip");
if(iStart < 0)
continue;
parse(szData[iStart], szAddIp, sizeof szAddIp -1, szBanTime, sizeof szBanTime -1, szUserIp, sizeof szUserIp -1);
TrieSetCell(g_tUserBansDB, szUserIp, iTotalBans);
iTotalBans++;
}
fclose(iFilePointer);
}
#endif
CheckUser(id)
{
if(!is_user_connected(id) || is_user_hltv(id) || is_user_bot(id))
return;
static iRequireTime, iRequireKills;
iRequireTime = get_pcvar_num(g_pSettings[BADMIN_REQUIRE_TIME]);
iRequireKills = get_pcvar_num(g_pSettings[BADMIN_REQUIRE_KILLS]);
#if defined CHECK_USER_BANNED
static szUserIp[30], iUserTotalBans;
get_user_ip(id,szUserIp, sizeof szUserIp -1,1);
TrieGetCell(g_tUserBansDB, szUserIp, iUserTotalBans);
if(iUserTotalBans <=0)
g_bIsUserNotBanned[id] = true;
#endif
if(g_iPlayedTime[id] >= iRequireTime)
g_bHasUserReqTime[id] = true;
if(g_iKills[id] >=iRequireKills)
g_bHasUserReqKills[id] = true;
}
BecomeAdmin(id, const szFlags[])
{
if(is_user_admin(id))
return;
if(is_user_become_admin(id))
{
remove_user_flags(id,read_flags("z"));
set_user_flags(id,read_flags(szFlags));
g_iKills[id] = 0
}
ColorChat(id,TEAM_COLOR,"^1[^4Become^3Admin^1] You became an ^4ADMIN^1! Your flags: ^4%s^1!",szFlags);
}
LoadUserData(id)
{
static szName[32], szData[512], szPlayedTime[60], szKills[32];
get_user_name(id,szName, sizeof szName -1);
if(fvault_get_data(g_szDataVault,szName, szData, sizeof szData -1))
{
replace_all(szData, sizeof szData -1,"#"," ");
parse(szData, szPlayedTime, sizeof szPlayedTime -1, szKills, sizeof szKills -1);
g_iKills[id] = str_to_num(szKills);
g_iPlayedTime[id] = str_to_num(szPlayedTime);
}
else
{
g_iKills[id] = 0;
g_iPlayedTime[id] = 0;
}
}
SaveUserData(id)
{
static szName[32], szVaultData[512];
get_user_name(id,szName, sizeof szName -1);
formatex(szVaultData, sizeof szVaultData -1, "%i#%i",g_iPlayedTime[id], g_iKills[id]);
fvault_set_data(g_szDataVault,szName,szVaultData);
g_iKills[id] = 0;
g_iPlayedTime[id] = 0;
}
LoadAdminInfo(id)
{
static szName[32], szData[512], szFlags[32], szExpire[60], iExpireTime;
get_user_name(id,szName, sizeof szName -1);
if(fvault_get_data(g_szAdminsVault,szName,szData, sizeof szData -1))
{
replace_all(szData, sizeof szData -1,"|", " ");
parse(szData,szFlags, sizeof szFlags -1,szExpire, sizeof szExpire -1);
iExpireTime = str_to_num(szExpire);
if(iExpireTime < time())
fvault_remove_key(g_szAdminsVault, szName);
else
BecomeAdmin(id,szFlags);
}
}
SaveAdminInfo(id, const sFlags[])
{
if(!is_user_become_admin(id))
return;
static szName[32], szData[512], szVaultData[512], iExpired;
get_user_name(id,szName, sizeof szName -1);
iExpired = time()+ ADMIN_EXPIRED;
if(!fvault_get_data(g_szAdminsVault,szName,szData, sizeof szData -1))
{
formatex(szVaultData, sizeof szVaultData -1, "%s|%i", sFlags,iExpired);
fvault_set_data(g_szAdminsVault,szName,szVaultData);
}
}
bool:is_user_become_admin(id)
{
#if defined CHECK_USER_BANNED
return (g_bIsUserNotBanned[id] && g_bHasUserReqTime[id] && g_bHasUserReqKills[id]) ? true : false;
#else
return (g_bHasUserReqTime[id] && g_bHasUserReqKills[id]) ? true: false;
#endif
}
__________________
Quote:
Originally Posted by fysiks
Please stop trying to help. You appear to just be posting random stuff. Wait until you actually understand more about AMX Mod X and how the game works.
|
https://iceeedr.com.br/
|
|