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

Set_task opóżnienie


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

#1 xCiacho

    Początkujący

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 02.07.2014 10:56

Witam serdecznie czy jest możliwość opóźnienia set_tasku na początku rundy?

 

do poniższego kodu chciałbym dodać taska aby po 10-15 sekundach dopiero wczytało lvl  tylko czy to nie popsuje  jeżeli gracz wejdzie i w ciągu tych np 5 sekundach wyjdzie serwera to zapisze mu lvl tak jak dobrze rozumeim?

 

public client_connect( id )
{
PXP[ id ] = 0
LoadData( id )
}
public client_disconnect( id )
{
SaveData( id )
PXP[ id ] = 0
PLEVEL[ id ] = 0
PKS[ id ] = 0
}

  • +
  • -
  • 0

#2 lexar

    Wszechwiedzący

  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 02.07.2014 11:07

To po prostu robisz taska na załadowanie się levela który włączy się po upłynięciu 15 sekund

 

set_task(15.0, "client_connect")

 

Z disconnectem nie musisz nic robić ;)


  • +
  • -
  • 1

#3 xCiacho

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 02.07.2014 11:29

No ale co się stanie jeżeli przed upływem 15 sekund gracz wyjdzie z serwera? zapisze mu się jako lvl 1 :/


  • +
  • -
  • 0

#4 lexar

    Wszechwiedzący

  • Power User

Reputacja: 63
Pomocny

  • Postów:502
  • GG:
  • Lokalizacja:Wyspa Kucyków
Offline

Napisano 02.07.2014 11:47

No jak? Gracz wchodzi na serwer i wybiera klase z 1 lvlem, po 15 sekundach plugin wczytuje wszystkie lvle i gracz już ma lvl który miał przedtem. Jeżeli wyjdzie z gry do 15 sekund od wejścia na serwer to będzie miał 1 lvl na każdej klasie bo plugin wczyta wszystkie lvle dopiero po 15 sekundach od wejścia na serwer. Myślę, że to wszystko tak się potoczy xD


  • +
  • -
  • 1

#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 02.07.2014 12:32


No jak? Gracz wchodzi na serwer i wybiera klase z 1 lvlem, po 15 sekundach plugin wczytuje wszystkie lvle i gracz już ma lvl który miał przedtem. Jeżeli wyjdzie z gry do 15 sekund od wejścia na serwer to będzie miał 1 lvl na każdej klasie bo plugin wczyta wszystkie lvle dopiero po 15 sekundach od wejścia na serwer. Myślę, że to wszystko tak się potoczy
Tego niestety wiedziec nie możesz ;D Obawy autora tematu są uzasadnione. Prosimy o pokazanie kodu zapisu danych a powiemy ci czy musisz sie bać. Możesz wczytac dane wcześniej np. w client_connect ale pokazać je graczu dopiero po 10~15 sekundach ;D
  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 02.07.2014 12:34

Wystarczy trzymać gdzieś czy dane zostały wczytane wtedy zapisuj ;)


  • +
  • -
  • 2

#7 xCiacho

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 02.07.2014 12:35

o tak wygląda zapis i odczyt

public SaveData(id)
{
new nick[32];
get_user_name(id, nick, 31);
 
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",nick)
format(vaultdata,255,"%i#%i#",PXP[id],PLEVEL[id])
nvault_set(g_vault,vaultkey,vaultdata)
nvault_set(g_vault2,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
 
public LoadData(id)
{
new nick[32];
get_user_name(id, nick, 31);
 
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",nick)
format(vaultdata,255,"%i#%i#",PXP[id],PLEVEL[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
 
replace_all(vaultdata, 255, "#", " ")
 
new playerxp[32], playerlevel[32]
 
parse(vaultdata, playerxp, 31, playerlevel, 31)
 
PXP[id] = str_to_num(playerxp)
PLEVEL[id] = str_to_num(playerlevel)
 
return PLUGIN_CONTINUE
}

  • +
  • -
  • 0

#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 02.07.2014 12:38

W takim wypadku dobrze że sie o to martwiłeś bo zapisało by ci 1 lvl :( . Wyjście z sytuacji:

Wystarczy trzymać gdzieś czy dane zostały wczytane wtedy zapisuj

lub

Możesz wczytac dane wcześniej np. w client_connect ale pokazać je graczu dopiero po 10~15 sekundach ;D


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#9 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 02.07.2014 12:45

Wystarczy zrobić najzwyklejszą zmienną i przy wczytaniu ustawić na true, a kiedy gracz wychodzi i jest ustawiona na true to zapisać i zmienić na false, a jeśli nie to po prostu nic nie robić.


  • +
  • -
  • 1

#10 xCiacho

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 02.07.2014 12:51

Nie chciałbym już nie zepsuć ... bo szkoda mi już czasu na to


  • +
  • -
  • 0

#11 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 02.07.2014 13:49

new data_loaded[33];
if (data_loaded[id]) {
    // Zapisz tutaj dane
}
// Po załadowaniu danych ORAZ gdy danych w nvault nie znaleziono:
data_loaded[id] = true;
public client_connect(id) {
    data_loaded[id] = false;
}

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#12 xCiacho

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 02.07.2014 14:07

Wybacz GwynBlade wywala function "SaveData" should return a value 

 

public client_connect( id )
{
data_loaded[id] = false;
}

public SaveData(id)
{
if (data_loaded[id]) {
new nick[32];
get_user_name(id, nick, 31);
 
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",nick)
format(vaultdata,255,"%i#%i#",PXP[id],PLEVEL[id])
nvault_set(g_vault,vaultkey,vaultdata)
nvault_set(g_vault2,vaultkey,vaultdata)
return PLUGIN_CONTINUE
} 
}
 
public LoadData(id)
{
new nick[32];
get_user_name(id, nick, 31);
 
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",nick)
format(vaultdata,255,"%i#%i#",PXP[id],PLEVEL[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
 
replace_all(vaultdata, 255, "#", " ")
 
new playerxp[32], playerlevel[32]
 
parse(vaultdata, playerxp, 31, playerlevel, 31)
 
PXP[id] = str_to_num(playerxp)
PLEVEL[id] = str_to_num(playerlevel)
data_loaded[id] = true;
return PLUGIN_CONTINUE
}

  • +
  • -
  • -1




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

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