[ROZWIĄZANE] Czy set_user_flags resetuje s...
ParadisO
30.03.2015
Chciałbym ustawić komuś flagę ale tylko do końca mapy, czy set_user_flags ustawia ją w ten sposób, czy muszę później ją usuwać ?
vbombatcz
30.03.2015
Polecam http://amxx.pl/topic...-na-dany-czas/ !!
Użytkownik vbombatcz edytował ten post 30.03.2015 10:32
ParadisO
30.03.2015
Dzięki za linka, ciekawe ale nie zupełnie o to pytałem.
A co do plusa to miałem dać ale nie lubię jak ktoś się prosi ( i to chyba są warny)
vbombatcz
30.03.2015
•Cvary
amx_addtempadmin
Nick - Faktyczne imię gracza, który jest w grze.
Flaga czasu - m ( minuty ), h ( godziny ), d ( dni ), y ( lata ).
Długość czasu - 1,9, 12,1456, 9999 ...
Flagi admina - , b, c, d, e, f, g, h ...
Komenda:
amx_addtempadmin vBomba m 25 " Flagi jaką chcesz dac " - >vBomba bedzie miał flage na 25 minuty z flagami " Flagi jaką chcesz dac "
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Temporary Admin"
#define VERSION "1.0"
#define AUTHOR "Alka"
new gTempAdminFile[64];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("amx_addtempadmin", "cmdAddTempAdmin", ADMIN_ALL, "<#name/userid> <#time flag> <#time length> <#admin flags>");
set_task(60.0, "cmdCheckAdmins", 1457790, "", 0, "b", 0);
}
public plugin_cfg()
{
new sConfigsDir[64];
get_configsdir(sConfigsDir, sizeof sConfigsDir - 1);
formatex(gTempAdminFile, sizeof gTempAdminFile - 1, "%s/temp_admin.ini", sConfigsDir);
if(!file_exists(gTempAdminFile))
write_file(gTempAdminFile, ";Temporary Admins File^n;Do not modify any existent line on this file^n;To add a comment line just begin it with an ^";^"", -1);
}
public cmdAddTempAdmin(id, level, cid)
{
if(!cmd_access(id, level, cid, 5))
return 1;
new sArg[32], sArg2[2], sArg3[32], sArg4[32];
read_argv(1, sArg, sizeof sArg - 1);
read_argv(2, sArg2, sizeof sArg2 - 1);
read_argv(3, sArg3, sizeof sArg3 - 1);
read_argv(4, sArg4, sizeof sArg4 - 1);
new iTarget = cmd_target(id, sArg, 8);
if(!iTarget)
return 1;
if(is_user_admin(iTarget))
{
client_print(id, print_console, "Player %d is already an admin, check ^"users.ini^" and modify his flags.", iTarget);
return 1;
}
new sTargetInfo[32];
if(is_steam_user(iTarget))
get_user_authid(iTarget, sTargetInfo, sizeof sTargetInfo - 1);
else
get_user_ip(iTarget, sTargetInfo, sizeof sTargetInfo - 1, 1);
new iTimeLength;
switch(sArg2[0])
{
case 'm' : { iTimeLength = str_to_num(sArg3) * 25; }
case 'h' : { iTimeLength = str_to_num(sArg3) * 3600; }
case 'd' : { iTimeLength = str_to_num(sArg3) * 86400; }
case 'y' : { iTimeLength = str_to_num(sArg3) * 31557600; }
default : return 1;
}
new iFile = fopen(gTempAdminFile, "at+");
new sBuffer[128];
formatex(sBuffer, sizeof sBuffer - 1, "^n%s;%s;%d", sTargetInfo, sArg4, get_systime() + iTimeLength);
fprintf(iFile, sBuffer);
fclose(iFile);
CheckAdmin(iTarget);
client_print(id, print_console, "Successfully added player %d to temp admin list.", iTarget);
return 1;
}
public client_authorized(id)
CheckAdmin(id);
public client_infochanged(id)
{
static sNewName[32], sOldName[32];
get_user_name(id, sOldName, sizeof sOldName - 1);
get_user_info(id, "name", sNewName, sizeof sNewName - 1);
if(!equali(sNewName, sOldName))
CheckAdmin(id);
}
public cmdCheckAdmins()
{
static sPlayers[32], iNum;
get_players(sPlayers, iNum, "ch");
for(new i = 0 ; i < iNum ; i++)
CheckAdmin(sPlayers[i]);
}
stock CheckAdmin(index)
{
static sUserInfo[32];
if(is_steam_user(index))
get_user_authid(index, sUserInfo, sizeof sUserInfo - 1);
else
get_user_ip(index, sUserInfo, sizeof sUserInfo - 1, 1);
static iFlags;
iFlags = get_user_flags(index);
static iFile;
iFile = fopen(gTempAdminFile, "rt");
static sBuffer[128], sTemp[3][32];
new iLine;
while(!feof(iFile))
{
fgets(iFile, sBuffer, sizeof sBuffer - 1);
if(sBuffer[0] == ';' || !sBuffer[0])
{
iLine++;
continue;
}
str_piece(sBuffer, sTemp, sizeof sTemp, sizeof sTemp[] - 1, ';');
if(equali(sUserInfo, sTemp[0]) && get_systime() > str_to_num(sTemp[2]))
{
if(iFlags == read_flags(sTemp[1]))
{
remove_user_flags(index, read_flags(sTemp[1]));
set_user_flags(index, read_flags("z"));
}
write_file(gTempAdminFile, ";Admin expired", iLine);
break;
}
if(equali(sUserInfo, sTemp[0]) && get_systime() <= str_to_num(sTemp[2]))
{
if(iFlags != read_flags(sTemp[1]))
{
remove_user_flags(index, read_flags("z"));
set_user_flags(index, read_flags(sTemp[1]));
}
break;
}
iLine++;
}
fclose(iFile);
}
stock bool:is_steam_user(index)
{
new Steamid[32];
get_user_authid(index, Steamid, sizeof Steamid - 1);
if(Steamid[7] == ':')
return true;
return false;
}
stock str_piece(const input[], output[][], outputsize, piecelen, token = '|')
{
new i = -1, pieces, len = -1 ;
while ( input[++i] != 0 )
{
if ( input[i] != token )
{
if ( ++len < piecelen )
output[pieces][len] = input[i] ;
}
else
{
output[pieces++][++len] = 0 ;
len = -1 ;
if ( pieces == outputsize )
return pieces ;
}
}
return pieces + 1;
}
Użytkownik vbombatcz edytował ten post 30.03.2015 10:50
WeBsteR
30.03.2015
Pobaw się z:
set_user_flags(id, Flaga)
a przed końcem mapy z:
remove_user_flags(id, Flaga)
sebul
30.03.2015

ParadisO
30.03.2015
set_user_flags
dodaje flagi tylko do końca mapy, bo jak spojrzysz albo w standardowy plugin od przyznawania adminów, itp. albo ten od amxbansa, to zauważysz, że tam właśnie flagi przydziela się po każdym przeładowaniu mapy.
Dziękuję, takiej odpowiedzi oczekiwałem
Można zamknąć.
sebul
30.03.2015
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL