←  Problemy z pluginami

AMXX.pl: Support AMX Mod X i SourceMod

»

Plugin nie pzyznaje Flagi

  • +
  • -
MrSocek - zdjęcie MrSocek 26.08.2017

Witam. Otóż mój problem polega na tym że napisałem oto prosty plugin:
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
register_plugin("Temporary Flag (NICK)", "1.0", "DavivaD")
register_clcmd("amx_give_temp_flag","give_temp_flag",_," <NICK> <Czas Trwania w Sekundach> <Flagi> ")
}

public give_temp_flag()
{
new aName[64];
read_argv(1,aName,64);

new aTime[64];
read_argv(2,aTime,64);

new aFlags[64];
read_argv(3,aFlags,64);

new szName = find_player("a", aName)

new nTime = str_to_num(aTime);
new szTime = get_systime() + nTime;

new szFlags = read_flags(aFlags);

new szDir[64];
get_configsdir(szDir, 63);

new szFile[200];
format(szFile,199,"%s/tempusers.ini",szDir)

new szText[128];
format(szText, 127, "%s %d %s", aName, szTime, aFlags);

write_file(szFile, szText);
set_user_flags(szName, szFlags);
}

public client_autorized(id)
{
new szTime = get_systime();

new szDir[64];
get_configsdir(szDir, 63);

new szFile[200];
format(szFile,199,"%s/tempusers.ini",szDir)

new szName[32];

new rName[42], rTime[42], rFlags[42];
new line=0, text[128], chars;
do
{
line = read_file(szFile,line,text,127,chars)
parse(text, rName, 41, rTime, 41, rFlags, 41)

new cName = find_player("a", rName)
new cTime = str_to_num(rTime);

if(cName == get_user_name(id,szName,31))
{
if(cTime >= szTime)
{
new szFlags = read_flags(rFlags);
set_user_flags(id, szFlags)
}
}
}
while(line!=0)
}


Jedynym problemem jest fakt że on nie daje Flag. W czym jest problem?
Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 27.08.2017

client_autorized

Na

client_authorized

+ zapoznaj się z przykładem prawidłowego odczytywania plików https://amxx.pl/doku.../f904/read_file

+ ten zapis (szczególnie z późniejszym wykorzystaniem) nie ma sensu

new cName = find_player("a", rName)

Powinieneś pobrać nick gracza przez get_user_name() i zwyczajnie porównać go (z tym pobranym przez parse()) w warunku:

if(equal(szName, rName))
Użytkownik _McHappy edytował ten post 27.08.2017 11:53
Odpowiedz

  • +
  • -
MrSocek - zdjęcie MrSocek 28.08.2017

Przy drobnej modyfikacji to dalej nie działa...
#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
register_plugin("Temporary Flag (NICK)", "1.0", "DavivaD")
register_clcmd("amx_give_temp_flag","give_temp_flag",_," <NICK> <Czas Trwania w Sekundach> <Flagi> ")
}

public give_temp_flag()
{
new aName[64];
read_argv(1,aName,64);

new aTime[64];
read_argv(2,aTime,64);

new aFlags[64];
read_argv(3,aFlags,64);

new szName = find_player("a", aName);

new nTime = str_to_num(aTime);
new szTime = get_systime() + nTime;

new szFlags = read_flags(aFlags);

new szDir[64];
get_configsdir(szDir, 63);

new szFile[200];
format(szFile,199,"%s/tempusers.ini",szDir)

new szText[128];
format(szText, 127, "%s %d %s", aName, szTime, aFlags);

write_file(szFile, szText);
//new szDebug = get_user_flags(szName);
//remove_user_flags(szName, szDebug);
//client_print(szName, print_console, "[DEBUG] BEFORE %d - %d", szName, szDebug);
set_user_flags(szName, szFlags);
//szDebug = get_user_flags(szName);
//client_print(szName, print_console, "[DEBUG] INPUT %s - %s -- %d - %d", aName, aFlags, szName, szFlags);
//client_print(szName, print_console, "[DEBUG] AFTER %d - %d", szName, szDebug);
}

public client_authorized(id)
{
new szTime = get_systime();

new szDir[64];
get_configsdir(szDir, 63);

new szFile[200];
format(szFile,199,"%s/tempusers.ini",szDir)

new szName[32];
get_user_name(id, szName, 31);

new rName[42], rTime[42], rFlags[42];
new text[128], chars;
for(new line=0;read_file(szFile, line, text, 127, chars);line++)
{
parse(text, rName, 41, rTime, 41, rFlags, 41)

new cTime = str_to_num(rTime);

//client_print(id, print_console, "[DEBUG] %s == %d", rName, szName);
//client_print(id, print_chat, "[DEBUG] %s == %d", rName, szName);

if(equal(rName, szName))
{
if(cTime <= szTime)
{
new szFlags = read_flags(rFlags);
set_user_flags(id, szFlags)
//client_print(id, print_console, "[DEBUG] %s - %d", szName, szFlags);
}
}
}
}
Odpowiedz