←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Jak stworzyć top10 pod względ...

Zablokowany

  • +
  • -
kapi10072 - zdjęcie kapi10072 18.12.2011

Witam..
Chciałbym zrobić ranking top10 w taki sposób:
mam np tak.

new zmienna[33];

public client_disconnect(id)
{
zmienna[id] += 1
}

I jak zrobić do tego tak, aby można było pobrać top10 graczy, którzy w tym przypadku się rozłączyli.
Dane zapisywane są do nvault i najlepiej żeby ktoś podał, jak to do nvault zapisać.

Pozdrawiam !
Użytkownik kapi10072 edytował ten post 19.12.2011 18:43
Odpowiedz

  • +
  • -
kapi10072 - zdjęcie kapi10072 19.12.2011

A jak to dobrze, zapisać do nvalut.. bo próbowałem i mi czasami wyskakiwały różne liczby..
Odpowiedz

  • +
  • -
kapi10072 - zdjęcie kapi10072 20.12.2011



set_user_frags(id,fragi[id])
cs_set_user_deaths ( id, deads[id] )

return PLUGIN_CONTINUE
}

public save_frags(id){

fragi[id]+=get_user_frags(id) // zwiekszamy liczbe fragow i deadow o stan bierzacy
deads[id]+=get_user_deaths(id)



Jak powiększyć liczbę zmiennej..

fragi[id]+=get_user_frags(id) // zwiekszamy liczbe fragow i deadow o stan bierzacy

bo raczej
get_user_frags(id) nie zadziała :D

i jak jeszcze pobrać za pomocą nvault_util te pierwsze 10 osób ?
Użytkownik kapi10072 edytował ten post 20.12.2011 19:03
Odpowiedz

  • +
  • -
dram - zdjęcie dram 21.12.2011

Pobierasz wszystkich do jednej tablicy. Potem sortujesz i masz wyniki ulożone np. od największej do najmniejszej ilości expa.
2. w deathmsg możesz przechwytywać i dopisywać do tablicy fragi/dedy
Odpowiedz

  • +
  • -
kapi10072 - zdjęcie kapi10072 25.12.2011

To drugie to jest podany przykład z Trochę o nVault..
a ja chcę powiększyć jakąś zmienną o ilość tej zmiennej, jakoś tak :P

ok, mam taki kod

#include <amxmodx>
#include <nvault>

new a[33];
new b[33];
new c[33];
new d[33];
new e[33];
new EXP[33];

new g_vault;

public plugin_init() {
register_plugin("Nowy", "0.1", "kapi10072");
register_clcmd("top10", "ShowTop");
register_clcmd("dodaj", "dodaj");

g_vault = nvault_open("mod")
}

public dodaj(id)
{
a[id] += 1
b[id]+= 1
c[id] += 1
d[id] += 1
e[id] += 1
EXP[id] += 10
}

public client_connect(id)
{
LoadData(id)

}
public client_disconnect(id)
{
SaveData(id)
a[id] = 0
b[id] = 0
c[id] = 0
d[id] = 0
e[id] = 0
EXP[id] = 0
}
public SaveData(id)
{
new AuthID[35]
get_user_name(id, AuthID, 34)
new vaultkey[64], vaultdata[256]

format(vaultkey,63,"%s-Mod",AuthID)
format (vaultdata,255,"%i#%i#%i#%i#%i#%i#",a[id], b[id],c[id],d[id],e[id],EXP[id])

nvault_set(g_vault,vaultkey,vaultdata)

return PLUGIN_CONTINUE
}

public LoadData(id)
{
new AuthID[35]
get_user_name(id,AuthID,34)
new vaultkey[64], vaultdata[256]

format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#%i#%i#%i#i#",a[id], b[id],c[id],d[id],e[id],EXP[id])

nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata,255,"#"," ")

new playerxp[32], playera[32], playerb[32], playerc[32], playerd[32], playere[32]

parse(vaultdata, playerxp,31, playera,31, playerb, 31, playerc,31 ,playerd ,31, playere, 31)

EXP[id] = str_to_num(playerxp)
a[id] = str_to_num(playera)
b[id] = str_to_num(playerb)
c[id] = str_to_num(playerc)
d[id] = str_to_num(playerd)
e[id] = str_to_num(playere)

return PLUGIN_CONTINUE
}
public ShowTop(id)
{
// ???????
}




I jak teraz zrobić z tego top10, uwzględniając 1 pozycję od ilości EXP'a oraz chce żeby reszta danych (a,b,c,d,e) także były pokazane.

Liczę na pomoc, pozdrawiam

@refresh
Użytkownik kapi10072 edytował ten post 23.12.2011 14:20
Odpowiedz

  • +
  • -
^Grzyboo - zdjęcie ^Grzyboo 26.12.2011

Ojj top wg. nvault to ciężka sprawa. Zabawa arrayami oraz może się przydać Nvault - Util
Użytkownik ^Grzyboo edytował ten post 26.12.2011 13:57
Odpowiedz

  • +
  • -
diablix - zdjęcie diablix 26.12.2011

Jakbyś chciał przerzucić się na bazę to wystarczy jedno zapytanie

SELECT * FROM `tabela` ORDER BY `kolumna_z_xp` DESC LIMIT 10
Odpowiedz

  • +
  • -
kapi10072 - zdjęcie kapi10072 26.12.2011

Podziękował za odpowiedź..
Przejdę na SQL - sądzę, że sobie poradzę :P

Kod na nvault jakiś mam, ale rzeczywiście to jest ciężka sprawa..

Dziękuje i do zobaczenia..
Temat do zamknięcia.
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 26.12.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany