←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Czyszczenie nvault z niepotrzebnych danych

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 26.08.2012

opis
Plugin na początku mapy szuka w pliku CodMod.vault wpisów w których doświadczenie gracza wynosi 0 i usuwa je. Działa tylko przy zapisie na nick (i tak nikt nie używa zapisu na ip, ew sid ale proszę napisać w temacie to dodam)
inne informacje
Do kompilacji wymaga biblioteki Nvaulut Utility
Link: http://forums.allied...ad.php?t=139584
komendy
Brak.
cvary
Brak.

Załączone pliki

Odpowiedz

  • +
  • -
ZarzadCSB - zdjęcie ZarzadCSB 26.08.2012

Nie wiem czy bardzo przydatne to będzie.
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 26.08.2012

Dużo osób nażekało że usuwają im się levele, ponieważ plik jest przeciążony. Ten plugin usuwa zbędne dane czyli odciąża plik w znaczym stopniu.
Odpowiedz

  • +
  • -
Pan PrO - zdjęcie Pan PrO 27.08.2012

Plugin jest sprawdzony ??
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 27.08.2012

a nie łatwiej zmienić ZapiszDane w silniku Coda z

if(!klasa_gracza[id])
  return PLUGIN_CONTINUE;

na

if(!klasa_gracza[id] || doswiadczenie_gracza[id] < 1)
  return PLUGIN_CONTINUE;

? Na jedno wyjdzie.
Użytkownik CheQ edytował ten post 27.08.2012 09:28
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 27.08.2012

Dobra wyjdzie na jedno jak od razu na serwie będzie to wgrane, ale jak to dodasz po jakimś czasie to ten plugin wyczyści wszystko gdzie exp = 0
Odpowiedz

SoPelQ - zdjęcie SoPelQ 28.08.2012

@top: Dorobił byś możliwość "Jezeli klasa nie byla uzywany 2miechy to jest kasowny zapis z nvault" i "Jezeli ma ktos poziom nizszy niz 50 lvl, zapis jest czyszczony".

@Cheq: jak zmienie to:
if(!klasa_gracza[id] || doswiadczenie_gracza[id] < 1)
  return PLUGIN_CONTINUE;
Na to:
if(!klasa_gracza[id] || poziom_gracza[id] < 50)
  return PLUGIN_CONTINUE;
To czy jeżeli ktoś bd miał lvl niższy niż 50 nie zapisze go?
Użytkownik SoPelQ edytował ten post 28.08.2012 01:41
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 28.08.2012

Tu ci czyści co 30 dni: http://amxx.pl/topic...post__p__414821
Co do usuwania poniżej 50 poziomu zmień to:
if(nexp[0] == '0')

na

new iexp = str_to_num(nexp)
if(iexp < TU_PODAJESZ_ILE_EXPA)

i tyle
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 28.08.2012

@SoPelQ

Powinno. Ale to po prostu nie zapisuje kogoś kto ma Poniżej 50 poziomu a nie Kasuje (choć na jedno wychodzi) xD
Odpowiedz

SoPelQ - zdjęcie SoPelQ 28.08.2012

Co do usuwania poniżej 50 poziomu zmień to:

if(nexp[0] == '0')

na

new iexp = str_to_num(nexp)
if(iexp < TU_PODAJESZ_ILE_EXPA)

i tyle

Gdy tak zrobilem wywalilo all lvle z serwera. Za "TU_PODAJESZ_ILE_EXPA" wpisalem "35000", potem sprawdzilem z "30" w obu przypadkach to samo.
Co do samego plugu, gdy sprawdzam zapis .vault poprzez nvault reader są wpisy posiadajace 0 expa.
Użytkownik SoPelQ edytował ten post 28.08.2012 17:50
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 28.08.2012

Nie możliwe że wywaliło wszystko, widocznie coś źle wgrywasz, sam sprawdzałem dziś rano i wszystko działało.
Odpowiedz

SoPelQ - zdjęcie SoPelQ 28.08.2012

Jak można źle podmienić jedną linijkę:D
Podmieniłem te linijke:
if(nexp[0] == '0')
na to:
new iexp = str_to_num(nexp)
if(iexp < 35000)
35k expa to około 30lvla na moim codzie. Zmieniłem mapę, jednak po jej zmianie cały plik vault został sformatowany z 500kb zostalo 16b.

Co do tego ze nie czysci mi zapisow z vault w orginalnej wersji, pobralem CodMod.vault, otworzylem nvault readerem i tam byly powpisywane 1lvle (0expa)(a plug dzialal juz 2dni), plugin wpisany w plugins.ini
Użytkownik SoPelQ edytował ten post 28.08.2012 20:04
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 28.08.2012

Jesteś pewien że cod nowy? Bo tylko na nowym działa.
Odpowiedz

SoPelQ - zdjęcie SoPelQ 28.08.2012

Oczywiście że mam coda nowego, dlatego się dziwie czy tylko mi to nie działa:(
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 29.08.2012

Od kiedy tablica o długości 1 może przechować 5 znaków?
Zmień nexp[1] na nexp[5]...
Warunek ZAWSZE był prawdą, bo największa cyfra to 9, a 9 < 35000
;]

PS Levele nie do odzyskania, jeżeli nie masz kopii zapasowej...
PPS @SoPelQ: Problem wystąpił tylko u Ciebie, bo tylko Ty edytowałeś tą linijkę :D
PPPS Ktoś niezłą wtopę zaliczył ;D
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 29.08.2012

Wtopa ostra :D

Plugin przydatny jeżeli ma już ktoś śmietnik w pliku .vault, bo jak CzeQ napisał można zapobiegać zamiast leczyć xD
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 29.08.2012

A może sma?
Racja nie zauwazyłem tego :P Plugin pisałem z myślą o 0 więc jeden znak mi wystarczył.
Odpowiedz

adif11 - zdjęcie adif11 19.01.2013

Witam czy mógł by ktoś napisać jak zrobić aby usuwało postacie poniżej 200 expa? zmieniłem wszystko jak podał a może sma ale nadal usuwane są postacie :< powyżej 1000 expa
Odpowiedz

Piro_0 - zdjęcie Piro_0 27.01.2013

Da rade to zrobić żeby usówało nieaktywne konta od 30 dniach?
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie Jak się nazwać 28.01.2013

Wersja sterowana przez cvar w którym ustalamy poniżej jakiej ilości expa ma usuwać (domyślnie cod_autoclean 1 czyli poniżej 1 expa będzie usuwało):
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <nvault_util>

#define PLUGIN    "Nvault auto cleaner (for cod mod)"
#define AUTHOR    "Pusty [b]"
#define VERSION    "1.0"

new vault
new cvar_pointer

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    cvar_pointer = register_cvar("cod_autoclean", "1")
}

public plugin_precache()
    AutoClean();

public AutoClean()
{
    vault = nvault_open("CodMod")
    new iVault = nvault_util_open("CodMod")
    nvault_util_readall(iVault, "fwd_ReadVault")
    nvault_util_close(iVault)
    nvault_close(vault)
}

public fwd_ReadVault( iCurrent , iTotal , const szKey[] , const szVal[] , iTimeStamp , const Data[] , iSize )
{
    new name[48], class[48], reszta[1], nexp[7], exp;
    strtok(szKey, name, charsmax(name), class, charsmax(class), '-')
    strtok(class, class, charsmax(class), reszta, charsmax(reszta), '-')
    strtok(szVal[1], nexp, charsmax(nexp), reszta, charsmax(reszta), '#')
    exp = str_to_num(nexp)
    if(exp < get_pcvar_num(cvar_pointer))
    {
        new vaultkey[64]
        format(vaultkey, charsmax(vaultkey),"%s-%s-1-cod", name, class);
        nvault_remove(vault, vaultkey)
    }
}
Odpowiedz