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ć ?
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
[ROZWIĄZANE] Czy set_user_flags resetuje się po zmianie mapy?
#1
Napisano 30.03.2015 09:50
#2
Napisano 30.03.2015 10:20
Polecam http://amxx.pl/topic...-na-dany-czas/ !!
Użytkownik vbombatcz edytował ten post 30.03.2015 10:32
#3
Napisano 30.03.2015 10:30
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)
#5
Napisano 30.03.2015 10:33
Chodzi mi o ustawienie konkretnej flagi do końca mapy
#7
Napisano 30.03.2015 10:40
na ile masz ustawiony czas mapy??
Co za różnica, przykładowo 25min
#8
Napisano 30.03.2015 10:48
•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
#9
Napisano 30.03.2015 10:56
No dobra, może coś z tego da się zrobić ale nie teraz. Dzięki
#11
Napisano 30.03.2015 13:29
Pobaw się z:
set_user_flags(id, Flaga)
a przed końcem mapy z:
remove_user_flags(id, Flaga)
#12
Napisano 30.03.2015 15:59
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
#13
Napisano 30.03.2015 16:41
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ąć.
#14
Napisano 30.03.2015 17:12
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych