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

Jak zapisac w nvault?


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

#1 Gasior

    Zaawansowany

  • Użytkownik

Reputacja: 9
Nowy

  • Postów:105
  • Imię:Maciek
  • Lokalizacja:Lublin
Offline

Napisano 21.11.2016 16:28

Plugin nie zapisuje modeli, tak aby przy wejsciu na serwer gracz nie musial go wybierac na nowo.
 

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine> 
#include <nvault>


#pragma semicolon 1


#define MENUITEM_DISABLED   (1<<26)


new g_Model[33];
new plik_vault;


new g_ModelFiles[][][] = {
    {"saperterro", "ctsplinter"},
    {"oranget", "camoct"},
    {"phoenixt", "urbanos"},
    {"viptt", "snowct"}
};


new g_ModelNames[][] = {
    "Model 1",
    "Model 2",
    "Model 3",
    "Model 4"
};


#if ( sizeof g_ModelNames != sizeof g_ModelFiles )
    #error You have to format the g_ModelFiles to the same size as g_ModelNames
#endif


public plugin_init() {
register_plugin("Modele VIP", "1.3", "Gasior");
    
register_event("ResetHUD", "resetModel", "b");
register_clcmd("say /modele", "modelevip");
    
plik_vault = nvault_open("g_Model");
if(plik_vault == INVALID_HANDLE)
set_fail_state("Nie moge otworzyc pliku :/");
    
return PLUGIN_CONTINUE;
}


public plugin_precache() {


    new tempfile[128];
    
    for ( new i = 0 ; i < sizeof g_ModelFiles ; i++ ) {
        for ( new j = 0 ; j < 2 ; j++ ) {
            formatex(tempfile, 127, "models/player/%s/%s.mdl", g_ModelFiles[i][j], g_ModelFiles[i][j]);
            precache_model(tempfile);
        }
    }
}


public client_connect(id) {
    g_Model[id] = 0;
    LoadData(id);
}


public modelevip(id) {
    if ( ! ( get_user_flags(id) & ADMIN_LEVEL_H ) )
        return;
    
    new menu = menu_create( "\yWybierz swoj VIP Model:", "menu_handler" );
    
    new i;
    for ( i = 0 ; i < sizeof g_ModelFiles ; i++ ) {
        new menuitem[64];
        formatex(menuitem, charsmax(menuitem), "\%c%s", g_Model[id] - 1 == i ? 'd' : 'w', g_ModelNames[i]);
        menu_additem(menu, menuitem,_, g_Model[id] - 1 == i ? MENUITEM_DISABLED : 0);
    }
    
    menu_addblank(menu, 0);
    menu_additem(menu, "Pokaz Modele");
    menu_addblank(menu, 0);
    menu_addtext(menu, "Dziekujemy za bycie VIPem na FFA ProjektSpark.pl", 0);
    
    menu_display(id, menu);
}


public menu_handler(id, menu, item) {


if ( item == MENU_EXIT ) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}


if ( item == sizeof g_ModelFiles ) {
g_Model[id] = 0;
}
else {
g_Model[id] = item + 1;
}
resetModel(id);


switch(item)
{
case 4:
show_motd(id, "modele.txt", "Modele");
}


SaveData(id);
        
return PLUGIN_CONTINUE;
}


public resetModel(id) {


    if ( ! is_user_connected(id) )
        return;
    
    new userTeam2, CsTeams:userTeam = cs_get_user_team(id);
    
    switch ( userTeam ) {
        case CS_TEAM_T: userTeam2 = 1;
        case CS_TEAM_CT: userTeam2 = 2;
    }
    
    if ( g_Model[id] && userTeam2 )
        cs_set_user_model(id, g_ModelFiles[g_Model[id] - 1][userTeam2 - 1]);
    else
        cs_reset_user_model(id);


    return;
}


public SaveData(id)
{ 
new authid[32];
get_user_authid(id, authid, 31);


new vaultkey[64],vaultdata[64];
formatex(vaultkey, 63, "%s-modele", authid);
formatex(vaultdata,63,"%d", g_Model[id]);
nvault_set(plik_vault,vaultkey,vaultdata);


return PLUGIN_CONTINUE;
}


public LoadData(id) 
{ 
new authid[32];
get_user_authid(id, authid, 31);
new vaultkey[64],vaultdata[64];
formatex(vaultkey, 63, "%s-modele", authid);


g_Model[id] = str_to_num(vaultdata);


format(vaultkey, 63, "%s-modele", authid);
get_vaultdata(vaultkey, vaultdata, 63);


return PLUGIN_CONTINUE;
} 

  • +
  • -
  • 0

#2 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 21.11.2016 18:05

public client_connect(id) {
    LoadData(id);
}

public client_disconnect(id) {
	SaveData(id);
	g_Model[id] = 0;
}

podmień zamiast client_connect


  • +
  • -
  • 0

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#3 Gasior

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 9
Nowy

  • Postów:105
  • Imię:Maciek
  • Lokalizacja:Lublin
Offline

Napisano 22.11.2016 00:40

To nic nie zmienia.

 

Jakieś inne sugestie? 


  • +
  • -
  • 0

#4 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 24.11.2016 02:59

Dlaczego w funkcji LoadData, najpierw przypisujesz graczowi model 0 (str_to_num("")), a dopiero potem odczytujesz zapis z vault'a do zmiennej vaultdata? :)
+ rozumiem, że zapis po authid jest zamierzony, bo w innym wypadku ns'om będzie się mógł resetować model.
  • +
  • -
  • 0

#5 Gasior

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 9
Nowy

  • Postów:105
  • Imię:Maciek
  • Lokalizacja:Lublin
Offline

Napisano 24.11.2016 13:42

W funkcji LoadData, chcialem aby g_Model mial taka sama wartosc jak vaultdata, aby mozna w ten sposob przekazac informacje, ale chyba gdzies sie zgubilem. 

 

Jak w takim razie to zapisac?


  • +
  • -
  • 0

#6 _McHappy

    Wszechwiedzący

  • Support Team

Reputacja: 243
Wszechwidzący

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

Napisano 24.11.2016 14:45

Dobrze kombinujesz, lecz pomyliłeś kolejność.

Przenieś linijkę:

g_Model[id] = str_to_num(vaultdata);

Tuż przed return PLUGIN_CONTINUE;

Oraz usuń zbędną linijkę:

format(vaultkey, 63, "%s-modele", authid);

Użytkownik _McHappy edytował ten post 24.11.2016 14:51

  • +
  • -
  • 0

#7 Gasior

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 9
Nowy

  • Postów:105
  • Imię:Maciek
  • Lokalizacja:Lublin
Offline

Napisano 26.11.2016 12:24

To by nie rozwiązało problemu, ale już sobie poradziłem. Można zamknąć.


  • +
  • -
  • 0




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

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