Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Plugin nie pzyznaje Flagi


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
2 odpowiedzi w tym temacie

#1 MrSocek

    Początkujący

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:19
  • Lokalizacja:Polska
Offline

Napisano 26.08.2017 23:45

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?
  • +
  • -
  • 0

#2 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

  • Postów:501
  • GG:
  • Imię:Radek
  • Lokalizacja:Tak
Offline

Napisano 27.08.2017 11:37

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

  • +
  • -
  • 0

#3 MrSocek

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:19
  • Lokalizacja:Polska
Offline

Napisano 28.08.2017 23:22

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);
}
}
}
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych