Kod:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define PLUGIN "Gelismis Otomatik Yetki Sistemi"
#define VERSION "1.0"
#define AUTHOR "akcaliberkk"
#define PLUGINPREFIX "[OYS] "
#define TASKID 5699
#define PRUNE 3 // X gün girmeyen hesapları sil. Default: 10
new const file[] = "addons/amxmodx/configs/users.ini";
new
pAdminolEnabled, pSlotolEnabled, pSlotFlags,
pAdminFlags, pSlotolSure, pAdminolSure,
pAdminTag, pSlotTag,
iVault,
iTimer[33],
MessageMode[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
pSlotolEnabled = register_cvar("slotol_aktif","1")
pSlotolSure = register_cvar("slotol_sure","0")
pSlotFlags = register_cvar("slotol_yetkiler","bj")
pSlotTag = register_cvar("slotol_tag","[CIRAK] # ")
pAdminolEnabled = register_cvar("adminol_aktif","1")
pAdminolSure = register_cvar("adminol_sure","48")
pAdminFlags = register_cvar("adminol_yetkiler","abcdefhijkmnopqrstu")
pAdminTag = register_cvar("adminol_tag","[KALFA] # ")
register_clcmd("say /cırakol","cmdSlotol")
register_clcmd("say /kalfaol","cmdAdminol")
register_clcmd("say /ustaol","cmdustaol")
register_clcmd("say /bilgilerim","cmdYetkiler")
register_clcmd("say /yetkilerim","cmdYetkiler")
register_clcmd("Sifrenizi Girin","ListenPassword")
if(!file_exists(file)) {
set_fail_state("OTOMATIK YETKI SISTEMI: Users.ini dosyasi bulunamadi !")
}
set_task(350.0,"Tanitim",TASKID,_,_,"b")
nvault_prune(iVault, 0, (get_systime() - (PRUNE*86400)) )
}
public plugin_cfg() {
iVault = nvault_open("onlinesureler")
if(iVault == INVALID_HANDLE) {
set_fail_state("OTOMATIK YETKI SISTEMI: Online surelerin kaydedilecegi onlinesureler.vault dosyasi acilirken hata olustu !")
}
}
public plugin_end() {
nvault_close(iVault)
}
public client_putinserver(id) {
new name[32], szData[32], iTimeStamp;
get_user_name(id, name, 31)
if(!nvault_lookup(iVault, name, szData, 31, iTimeStamp)) nvault_set(iVault, name, "0")
iTimer[id] = get_systime();
}
public client_disconnect(id) {
new szData[32], name[32];
get_user_name(id, name, 31)
formatex(szData, 31, "%d", (nvault_get(iVault,name) + (get_systime() - iTimer[id])/60) )
nvault_set(iVault, name, szData)
}
public client_infochanged(id) {
new oldname[32], newname[32];
get_user_info(id, "name", newname, 31)
get_user_name(id, oldname, 31)
if(!equal(oldname,newname)) {
new szData[32], iTimeStamp;
formatex(szData, 31, "%d", (nvault_get(iVault,oldname) + (get_systime() - iTimer[id])/60) )
nvault_set(iVault, oldname, szData)
if(!nvault_lookup(iVault, newname, szData, 31, iTimeStamp)) nvault_set(iVault, newname, "0")
iTimer[id] = get_systime();
}
}
public cmdustaol(id) {
if(!get_pcvar_num(pSlotolEnabled)) return PLUGIN_CONTINUE
if(!access(id,ADMIN_USER)) {
ColorChat(id, "^4%s^3Zaten yetkileriniz var. Bu sistemden sadece normal oyuncular yararlanabilir.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Yetkilerinizi gormek icin ^4/bilgilerim ^3veya ^4/yetkilerim ^3yazin.",PLUGINPREFIX)
return PLUGIN_HANDLED
}
new name[32];
get_user_name(id, name, 31)
new check[32],szSlotTag[32], szData[32], iTimeStamp;
get_pcvar_string(pSlotTag,szSlotTag,31)
formatex(check, 31, "%s%s",szSlotTag,name)
if(nvault_lookup(iVault,check, szData, 31, iTimeStamp)) {
ColorChat(id, "^4%s^3Usta olma isteginiz reddedildi ! ^4%s ^3adinda zaten bir kayit var.",PLUGINPREFIX, check)
return PLUGIN_HANDLED
}
new iOnlineTime = nvault_get(iVault, name) + ((get_systime() - iTimer[id])/60);
if(iOnlineTime < get_pcvar_num(pSlotolSure)) {
ColorChat(id, "^4%s^3Malesef sunucuda yeterince fazla kalmadiginiz icin Usta olamiyorsunuz.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Suana kadar kaldiginiz Toplam Sure: ^4%d dk. ^3Usta olabilmek icin ^4%d dk.^3 daha sunucuda kalmaniz gerek.",\
PLUGINPREFIX, iOnlineTime, get_pcvar_num(pSlotolSure) - iOnlineTime)
return PLUGIN_HANDLED
}
ColorChat(id, "^4%s^3Usta olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
ColorChat(id, "^4%s^3Usta olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
MessageMode[id] = 1;
console_cmd(id, "messagemode ^"Sifrenizi Girin^"")
return PLUGIN_HANDLED
}
public cmdSlotol(id) {
if(!get_pcvar_num(pSlotolEnabled)) return PLUGIN_CONTINUE
if(!access(id,ADMIN_USER)) {
ColorChat(id, "^4%s^3Zaten yetkileriniz var. Bu sistemden sadece normal oyuncular yararlanabilir.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Yetkilerinizi gormek icin ^4/bilgilerim ^3veya ^4/yetkilerim ^3yazin.",PLUGINPREFIX)
return PLUGIN_HANDLED
}
new name[32];
get_user_name(id, name, 31)
new check[32],szSlotTag[32], szData[32], iTimeStamp;
get_pcvar_string(pSlotTag,szSlotTag,31)
formatex(check, 31, "%s%s",szSlotTag,name)
if(nvault_lookup(iVault,check, szData, 31, iTimeStamp)) {
ColorChat(id, "^4%s^3Slot olma isteginiz reddedildi ! ^4%s ^3adinda zaten bir kayit var.",PLUGINPREFIX, check)
return PLUGIN_HANDLED
}
new iOnlineTime = nvault_get(iVault, name) + ((get_systime() - iTimer[id])/60);
if(iOnlineTime < get_pcvar_num(pSlotolSure)) {
ColorChat(id, "^4%s^3Malesef sunucuda yeterince fazla kalmadiginiz icin cırak olamiyorsunuz.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Suana kadar kaldiginiz Toplam Sure: ^4%d dk. ^3cırak olabilmek icin ^4%d dk.^3 daha sunucuda kalmaniz gerek.",\
PLUGINPREFIX, iOnlineTime, get_pcvar_num(pSlotolSure) - iOnlineTime)
return PLUGIN_HANDLED
}
ColorChat(id, "^4%s^3cırak olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
ColorChat(id, "^4%s^3cırak olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
MessageMode[id] = 1;
console_cmd(id, "messagemode ^"Sifrenizi Girin^"")
return PLUGIN_HANDLED
}
public cmdAdminol(id) {
if(!get_pcvar_num(pAdminolEnabled)) return PLUGIN_CONTINUE
if(!access(id,ADMIN_USER)) {
ColorChat(id, "^4%s^3Zaten yetkileriniz var. Bu sistemden sadece normal oyuncular yararlanabilir.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Yetkilerinizi gormek icin ^4/bilgilerim ^3veya ^4/yetkilerim ^3yazin.",PLUGINPREFIX)
return PLUGIN_HANDLED
}
new name[32];
get_user_name(id, name, 31)
new check[32],szAdminTag[32], szData[32], iTimeStamp;
get_pcvar_string(pAdminTag,szAdminTag,31)
formatex(check, 31, "%s%s",szAdminTag,name)
if(nvault_lookup(iVault,check, szData, 31, iTimeStamp)) {
ColorChat(id, "^4%s^3Kalfa olma isteginiz reddedildi ! ^4%s ^3adinda zaten bir kayit var.",PLUGINPREFIX, check)
return PLUGIN_HANDLED
}
new iOnlineTime = nvault_get(iVault, name) + ((get_systime() - iTimer[id])/60);
if(iOnlineTime < get_pcvar_num(pAdminolSure)) {
ColorChat(id, "^4%s^3Malesef sunucuda yeterince fazla kalmadiginiz icin Kalfa olamiyorsunuz.",PLUGINPREFIX)
ColorChat(id, "^4%s^3Suana kadar kaldiginiz Toplam Sure: ^4%d dk. ^3Kalfa olabilmek icin ^4%d dk.^3 daha sunucuda kalmaniz gerek.",\
PLUGINPREFIX, iOnlineTime, get_pcvar_num(pAdminolSure) - iOnlineTime)
return PLUGIN_HANDLED
}
ColorChat(id, "^4%s^3Kalfa olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
ColorChat(id, "^4%s^3Kalfa olma isteginiz kabul edildi. Lutfen sifrenizi belirleyin...",PLUGINPREFIX)
MessageMode[id] = 2;
console_cmd(id, "messagemode ^"Sifrenizi Girin^"")
return PLUGIN_HANDLED
}
public ListenPassword(id) {
if(!MessageMode[id]) {
console_print(id, "Erisim reddedildi !")
return PLUGIN_HANDLED
}
new args[64];
read_args(args,63)
remove_quotes(args[6])
new pass[25];
copy(pass, 24, args[6])
if(strlen(pass) > 20 || strlen(pass) < 3) {
ColorChat(id, "^4%s^3Sifreniz en az 3 en fazla 20 karakter arasinda olmalidir. Tekrar girin.",PLUGINPREFIX)
console_cmd(id,"messagemode ^"Sifrenizi Girin^"")
return PLUGIN_HANDLED
}
console_cmd(id, "setinfo _pw ^"%s^"",pass)
new flags[32], tag[32];
get_pcvar_string( (MessageMode[id] == 2 ? pAdminFlags : pSlotFlags), flags,31)
get_pcvar_string( (MessageMode[id] == 2 ? pAdminTag : pSlotTag), tag,31)
new name[32], newname[32];
get_user_name(id, name, 31)
formatex(newname, 31, "%s%s",tag, name)
console_cmd(id, "name ^"%s^"",newname)
yetkilendir(newname, flags, pass)
ColorChat(id, "^4%s^3Tebrikler. Basariyla %s oldunuz. Hesap ismi: ^4%s ^3Sifre: ^4%s",PLUGINPREFIX, ( MessageMode[id] == 2 ? "admin" : "slot" ), newname, pass)
ColorChat(id, "^4%s^3Tebrikler. Basariyla %s oldunuz. Hesap ismi: ^4%s ^3Sifre: ^4%s",PLUGINPREFIX, ( MessageMode[id] == 2 ? "admin" : "slot" ), newname, pass)
iTimer[id] = get_systime();
nvault_set(iVault, name, "0")
MessageMode[id] = 0;
return PLUGIN_HANDLED
}
public cmdYetkiler(id) {
new flags[32],name[32];
get_user_name(id,name,31)
get_flags(get_user_flags(id), flags, 31)
ColorChat(id, "^4 Isim: ^3%s ^4Yetkileriniz: ^3%s",name, flags)
}
public guncelle() {
server_cmd("amx_reloadadmins")
}
yetkilendir(const name[], const flags[], const pass[]) {
new szLine[128];
formatex(szLine, charsmax(szLine), "^"%s^" ^"%s^" ^"%s^" ^"a^" // Otomatik yetkilendirici tarafindan eklendi.^n",name, pass, flags)
write_file(file, szLine)
set_task(1.5,"guncelle")
}
public Tanitim() {
if(!get_pcvar_num(pSlotolEnabled) && !get_pcvar_num(pAdminolEnabled)) {
remove_task(TASKID)
return PLUGIN_HANDLED
}
ColorChat(0,"^4%s^3Bu serverda bedava yetki alabilirsiniz. %s %s ^3yazin.",\
PLUGINPREFIX,(get_pcvar_num(pSlotolEnabled) ? "Bedava ^4Adminlik ^3icin ^4/cırakol^3" : ""), \
(get_pcvar_num(pAdminolEnabled) ? "Bedava ^4Adminlik ^3icin ^4/kalfaol" : ""));
return PLUGIN_CONTINUE
}
stock ColorChat(const id, const string[], {Float, Sql, Resul,_}:...) {
new msg[191], players[32], count = 1;
static len;
len = formatex(msg, charsmax(msg), "^x01" );
vformat(msg[len], charsmax(msg) - len, string, 3);
if(id)players[0] = id;
else get_players(players,count,"ch");
for (new i = 0; i < count; i++){
if(is_user_connected(players[i])){
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
return;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/