[Nvault] Nie zapisuje/odczytuje danych z p...
AmD
30.09.2010
Witam!
mam Problem z Zapisem/Odczytem Pliku vault...
Robiąc Xp Moda coś zepsułem i nie zapisuje mnie danych...
Oto mój Zapis, odczyt oraz stock...
Stock:
Co tu jest źle?
Nie wiem czy to wina że sprawdzam to na lanie lub dla tego że na NS, a może po prostu coś zrąbałem nie wiem [nie sprawdzam na steam bo zanim on się włączy to zdążę 3 razy sprawdzić, nie testuje na serwerach bo mam tylko 1 i nie chce by gracze chwilowo wiedzieli że robię takie coś jak XP mod.]
Pozdrawiam !
Użytkownik AmD edytował ten post 30.09.2010 11:45
mam Problem z Zapisem/Odczytem Pliku vault...
Robiąc Xp Moda coś zepsułem i nie zapisuje mnie danych...
Oto mój Zapis, odczyt oraz stock...
public SaveXp(id) {
new vaultkey[64], vaultdata[256];
new name[64];
if(!is_user_steam(id)){
get_user_name(id,name,charsmax(name));
}
else
{
get_user_authid(id,name,charsmax(name));
}
format(vaultkey, 63, "%s-mod", name);
format(vaultdata, 255, "%i#%i#%i#%i#%i#", PlayerXP[id], PlayerLevel[id],SkillPoints[id], PtkGraw[id], PtkSpeed[id]);
nvault_set(g_Vault, vaultkey, vaultdata);
return PLUGIN_CONTINUE;
}
public LoadXp(id) {
new vaultkey[64], vaultdata[256];
new name[64];
if(!is_user_steam(id)){
get_user_name(id,name,charsmax(name));
}
else
{
get_user_authid(id,name,charsmax(name));
}
format(vaultkey, 63, "%s-mod", name);
format(vaultdata, 255, "%i#%i#%i#%i#%i#", PlayerXP[id], PlayerLevel[id],SkillPoints[id], PtkGraw[id], PtkSpeed[id]);
nvault_get(g_Vault, vaultkey, vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32], skillpoints[32], ptkgraw[32], ptkspeed[32];
parse(vaultdata, playerxp, 31, playerlevel, 31, skillpoints, 31, ptkgraw, 31, ptkspeed, 32);
PlayerXP[id] = str_to_num(playerxp);
PlayerLevel[id] = str_to_num(playerlevel);
SkillPoints[id] = str_to_num(skillpoints);
PtkGraw[id] = str_to_num(ptkgraw);
PtkSpeed[id] = str_to_num(ptkspeed);
return PLUGIN_CONTINUE;
}
Stock:
stock bool: is_user_steam(id)
{
static pcv_dp_r_id_provider;
pcv_dp_r_id_provider = get_cvar_pointer("dp_r_id_provider");
server_cmd("dp_clientinfo %d", id);
server_exec();
static uClient;
uClient = get_pcvar_num(pcv_dp_r_id_provider);
if ( uClient == 2)
return true;
return false;
}
Co tu jest źle?
Nie wiem czy to wina że sprawdzam to na lanie lub dla tego że na NS, a może po prostu coś zrąbałem nie wiem [nie sprawdzam na steam bo zanim on się włączy to zdążę 3 razy sprawdzić, nie testuje na serwerach bo mam tylko 1 i nie chce by gracze chwilowo wiedzieli że robię takie coś jak XP mod.]
Pozdrawiam !
Użytkownik AmD edytował ten post 30.09.2010 11:45
kyku
30.09.2010
sa jakies bledy w logach? wszystko wydaje sie byc dobre (poza optymalnością )
AmD
30.09.2010
właśnie nic nie ma
ps. czemu nie optymalny?
// a i chyba pomyliłem działy... przyzwyczaiłem się że zazwyczaj tutaj pisze i tym razem też
Użytkownik AmD edytował ten post 30.09.2010 11:49
ps. czemu nie optymalny?
// a i chyba pomyliłem działy... przyzwyczaiłem się że zazwyczaj tutaj pisze i tym razem też
Użytkownik AmD edytował ten post 30.09.2010 11:49
kyku
30.09.2010
moze blad zrobiles podczas wywolania tych funkcji ?
w client_putinserver (lub connect / aut..) powinno byc LoadXp(id);
i przy disconnect SaveXp(id);
Dodano 30 wrzesień 2010 - 12:52:
sprobuj tak
w client_putinserver (lub connect / aut..) powinno byc LoadXp(id);
i przy disconnect SaveXp(id);
Dodano 30 wrzesień 2010 - 12:52:
sprobuj tak
public SaveXp(id) { new vaultkey[35], vaultdata[256]; if(!is_user_steam(id)){ get_user_name(id,vaultkey,charsmax(vaultkey)); } else { get_user_authid(id,vaultkey,charsmax(vaultkey)); } format(vaultdata, 255, "%i %i %i %i %i", PlayerXP[id], PlayerLevel[id],SkillPoints[id], PtkGraw[id], PtkSpeed[id]); nvault_set(g_Vault, vaultkey, vaultdata); return PLUGIN_CONTINUE; } public LoadXp(id) { new vaultkey[35], vaultdata[256]; if(!is_user_steam(id)){ get_user_name(id,vaultkey,charsmax(vaultkey)); } else { get_user_authid(id,vaultkey,charsmax(vaultkey)); } nvault_get(g_Vault, vaultkey, vaultdata,255); new playerxp[32], playerlevel[32], skillpoints[32], ptkgraw[32], ptkspeed[32]; parse(vaultdata, playerxp, 31, playerlevel, 31, skillpoints, 31, ptkgraw, 31, ptkspeed, 31); PlayerXP[id] = str_to_num(playerxp); PlayerLevel[id] = str_to_num(playerlevel); SkillPoints[id] = str_to_num(skillpoints); PtkGraw[id] = str_to_num(ptkgraw); PtkSpeed[id] = str_to_num(ptkspeed); return PLUGIN_CONTINUE; }
AmD
30.09.2010
jest problem wystąpił gdy chciałem zrobić zapis na Nick albo tak jak teraz sid/nick
@edit
nie działa
Użytkownik AmD edytował ten post 30.09.2010 11:55
@edit
nie działa
Użytkownik AmD edytował ten post 30.09.2010 11:55
kyku
30.09.2010
poza tym nie wiem czy az tablica 31 znakowa jest potrzebna podczas odczytu tych statystyk chyba ze punkty beda mialy tyle znakow
100000000000000000000000000000
Dodano 30 wrzesień 2010 - 12:58:
moze to
100000000000000000000000000000
Dodano 30 wrzesień 2010 - 12:58:
moze to
stock bool: is_user_steam(id) { static pcv_dp_r_id_provider; pcv_dp_r_id_provider = get_cvar_pointer("dp_r_id_provider"); server_cmd("dp_clientinfo %d", id); server_exec(); static uClient; uClient = get_pcvar_num(pcv_dp_r_id_provider); if ( uClient == 2) return true; return false; }zamien na
stock bool: is_user_steam(id) { new auth[34];get_user_authid(id, auth, 33);if(contain(auth, ":") != -1) return true; return false; }
AmD
30.09.2010
o patrz działa!
dzięki
jeszcze sprawdzę coś bo jak dobrze pamiętam bo mi się te 2 ostatnie tablice nie wczytywały ale zaraz sprawdzę
@edit ok działa wszystko pięknie
dziękuje!
@edit a jeszcze mam problem
zrobiłem 2 skille ale nie działają (w sumie to grawitacja zamiast się zmniejszać to się zwiększa...)
kod:
co tu jest źle?
(dałem taska ponieważ u mnie na serwie nie ma rund a jakoś muszę ustawić dla gracza skilla)
Dodano 01 październik 2010 - 11:54:
@odśwież.
Użytkownik AmD edytował ten post 30.09.2010 14:44
dzięki
jeszcze sprawdzę coś bo jak dobrze pamiętam bo mi się te 2 ostatnie tablice nie wczytywały ale zaraz sprawdzę
@edit ok działa wszystko pięknie
dziękuje!
@edit a jeszcze mam problem
zrobiłem 2 skille ale nie działają (w sumie to grawitacja zamiast się zmniejszać to się zwiększa...)
kod:
public logevent_start(id) {
new graw = get_user_gravity(id)
new speed = get_user_maxspeed(id)
for (new id=0; id < 32; id++) {
if(PtkGraw[id] > 0){
switch(PtkGraw[id]){
case 1: set_user_gravity(id, graw +0.1)
case 2: set_user_gravity(id, graw +0.12)
case 3: set_user_gravity(id, graw +0.14)
case 4: set_user_gravity(id, graw +0.16)
case 5: set_user_gravity(id, graw +0.17)
case 6: set_user_gravity(id, graw +0.18)
case 7: set_user_gravity(id, graw +0.20)
case 8: set_user_gravity(id, graw +0.27)
case 9: set_user_gravity(id, graw +0.29)
case 10: set_user_gravity(id, graw +0.35)
}
}
if(PtkSpeed[id] > 0){
switch(PtkSpeed[id]){
case 1: set_user_maxspeed(id, speed +0.1)
case 2: set_user_maxspeed(id, speed +0.12)
case 3: set_user_maxspeed(id, speed +0.14)
case 4: set_user_maxspeed(id, speed +0.15)
case 5: set_user_maxspeed(id, speed +0.16)
case 6: set_user_maxspeed(id, speed +0.17)
case 7: set_user_maxspeed(id, speed +0.18)
case 8: set_user_maxspeed(id, speed +0.20)
case 9: set_user_maxspeed(id, speed +0.29)
case 10: set_user_maxspeed(id, speed +0.35)
}
}
}
hud_prethink(id)
set_task(5.0, "logevent_start", id)
}
co tu jest źle?
(dałem taska ponieważ u mnie na serwie nie ma rund a jakoś muszę ustawić dla gracza skilla)
Dodano 01 październik 2010 - 11:54:
@odśwież.
Użytkownik AmD edytował ten post 30.09.2010 14:44
G[o]Q
01.10.2010
case 1: set_user_gravity(id, graw +0.1)
case 1: set_user_gravity(id, graw -0.1)
wybierz sobie poprawna wersje
AmD
01.10.2010
próbowałem...
sprawdzałem także w ifie,
próbowałem zrobić coś takiego:
i tak:
ale grawitacja nadal zamiast być mniejsza jest ciągle większa...
[uwaga to są tylko przykłady! floaty zostały inaczej zapisane!]
sprawdzałem także w ifie,
próbowałem zrobić coś takiego:
[podobnie zrobiłem z grawitacją]
set_user_maxspeed( id, speed + ( PtkSpeed[ id ] * 10.0 ) );
i tak:
set_user_maxspeed( id, PtkSpeed[id] * 0.3 + speed)
ale grawitacja nadal zamiast być mniejsza jest ciągle większa...
[uwaga to są tylko przykłady! floaty zostały inaczej zapisane!]
DarkGL
01.10.2010
pieknie to wymyśliłeś
1.
public logevent_start(id) {
na
public logevent_start() {
2.
new graw = get_user_gravity(id)
new speed = get_user_maxspeed(id)
wrzucamy do petli
3. new graw = get_user_gravity(id)
new speed = get_user_maxspeed(id)
na
new Float:graw = get_user_gravity(id)
new Float:speed = get_user_maxspeed(id)
set_task(5.0, "logevent_start", id)
wywal to
1.
public logevent_start(id) {
na
public logevent_start() {
2.
new graw = get_user_gravity(id)
new speed = get_user_maxspeed(id)
wrzucamy do petli
3. new graw = get_user_gravity(id)
new speed = get_user_maxspeed(id)
na
new Float:graw = get_user_gravity(id)
new Float:speed = get_user_maxspeed(id)
set_task(5.0, "logevent_start", id)
wywal to
AmD
02.10.2010
dziękipieknie to wymyśliłeś
i tak nie działa...
public logevent_start() {
for (new id=0; id < 32; id++) {
new Float:graw = get_user_gravity(id)
new Float:speed = get_user_maxspeed(id)
if(PtkGraw[id] > 0){
switch(PtkGraw[id]){
case 1: set_user_gravity(id, graw -0.1)
case 2: set_user_gravity(id, graw -0.12)
case 3: set_user_gravity(id, graw -0.14)
case 4: set_user_gravity(id, graw -0.16)
case 5: set_user_gravity(id, graw -0.17)
case 6: set_user_gravity(id, graw -0.18)
case 7: set_user_gravity(id, graw -0.20)
case 8: set_user_gravity(id, graw -0.27)
case 9: set_user_gravity(id, graw -0.29)
case 10: set_user_gravity(id, graw -0.35)
}
}
if(PtkSpeed[id] > 0){
switch(PtkSpeed[id]){
case 1: set_user_maxspeed(id, speed +0.1)
case 2: set_user_maxspeed(id, speed +0.12)
case 3: set_user_maxspeed(id, speed +0.14)
case 4: set_user_maxspeed(id, speed +0.15)
case 5: set_user_maxspeed(id, speed +0.16)
case 6: set_user_maxspeed(id, speed +0.17)
case 7: set_user_maxspeed(id, speed +0.18)
case 8: set_user_maxspeed(id, speed +0.20)
case 9: set_user_maxspeed(id, speed +0.29)
case 10: set_user_maxspeed(id, speed +0.35)
}
}
}
}
coś źle?
DarkGL
02.10.2010
for (new id=0; id < 32; id++)
na
for (new id=1; id < 32; id++)
jeżeli graw nie działą
to warunek
if(PtkGraw[id] > 0){
nie jest spełniony
a maxspeed nie zauważysz różnicy
bo standardowo na nozu jest 250.0 więc jak dodasz te np,. 0.35 nie zauważysz zęby biegł szybciej musisz dodać np 35.0
na
for (new id=1; id < 32; id++)
jeżeli graw nie działą
to warunek
if(PtkGraw[id] > 0){
nie jest spełniony
a maxspeed nie zauważysz różnicy
bo standardowo na nozu jest 250.0 więc jak dodasz te np,. 0.35 nie zauważysz zęby biegł szybciej musisz dodać np 35.0
AmD
02.10.2010
ok grawitacja działa
speed dalej nie chodź dałem 35.0... (nadal 250.0 z cisnę na nożu...)
muszę tą funkcje wywołać podczas spawnu gracza (najlepiej) więc dałem:
czy to będzie działało prawidłowo jeśli gracz będzie się spawnił ponownie dzięki pluginowi? (np. by nie miał podwójnej grawitacji)
speed dalej nie chodź dałem 35.0... (nadal 250.0 z cisnę na nożu...)
muszę tą funkcje wywołać podczas spawnu gracza (najlepiej) więc dałem:
RegisterHam( Ham_Spawn, "player" , "logevent_start" , 1 );
czy to będzie działało prawidłowo jeśli gracz będzie się spawnił ponownie dzięki pluginowi? (np. by nie miał podwójnej grawitacji)
DarkGL
02.10.2010
RegisterHam( Ham_Spawn, "player" , "spawned" , 1 );
speed jest resetowany co zmianę broni czyli gdy zmienisz broń powraca do normal
public spawned(id) { new Float:graw = get_user_gravity(id) new Float:speed = get_user_maxspeed(id) if(PtkGraw[id] > 0){ switch(PtkGraw[id]){ case 1: set_user_gravity(id, graw -0.1) case 2: set_user_gravity(id, graw -0.12) case 3: set_user_gravity(id, graw -0.14) case 4: set_user_gravity(id, graw -0.16) case 5: set_user_gravity(id, graw -0.17) case 6: set_user_gravity(id, graw -0.18) case 7: set_user_gravity(id, graw -0.20) case 8: set_user_gravity(id, graw -0.27) case 9: set_user_gravity(id, graw -0.29) case 10: set_user_gravity(id, graw -0.35) } } if(PtkSpeed[id] > 0){ switch(PtkSpeed[id]){ case 1: set_user_maxspeed(id, speed +0.1) case 2: set_user_maxspeed(id, speed +0.12) case 3: set_user_maxspeed(id, speed +0.14) case 4: set_user_maxspeed(id, speed +0.15) case 5: set_user_maxspeed(id, speed +0.16) case 6: set_user_maxspeed(id, speed +0.17) case 7: set_user_maxspeed(id, speed +0.18) case 8: set_user_maxspeed(id, speed +0.20) case 9: set_user_maxspeed(id, speed +0.29) case 10: set_user_maxspeed(id, speed +0.35) } } }
speed jest resetowany co zmianę broni czyli gdy zmienisz broń powraca do normal
DarkGL
02.10.2010
ja ci dałem łądniejszy kod to że speed się resetuje to musisz użyć eventu zmiany broni i w nim ustawiać
AmD
02.10.2010
znając życie chodzi o:
całego spawna nie mogę pod to podpiąć bo wtedy gravity = -X ( zamiast mieć mniejszą nie mamy wcale )
zrobiłem funkcje z samym skillem prędkości ale nadal to samo
register_event("CurWeapon","Funkcja_Publiczna","be")
całego spawna nie mogę pod to podpiąć bo wtedy gravity = -X ( zamiast mieć mniejszą nie mamy wcale )
zrobiłem funkcje z samym skillem prędkości ale nadal to samo
DarkGL
02.10.2010
grrr w curweapon dajesz
new Float:speed = get_user_maxspeed(id)
if(PtkSpeed[id] > 0){
switch(PtkSpeed[id]){
case 1: set_user_maxspeed(id, speed +0.1)
case 2: set_user_maxspeed(id, speed +0.12)
case 3: set_user_maxspeed(id, speed +0.14)
case 4: set_user_maxspeed(id, speed +0.15)
case 5: set_user_maxspeed(id, speed +0.16)
case 6: set_user_maxspeed(id, speed +0.17)
case 7: set_user_maxspeed(id, speed +0.18)
case 8: set_user_maxspeed(id, speed +0.20)
case 9: set_user_maxspeed(id, speed +0.29)
case 10: set_user_maxspeed(id, speed +0.35)
}
}
a z spawned usuwasz to co ci podałem powyżej
new Float:speed = get_user_maxspeed(id)
if(PtkSpeed[id] > 0){
switch(PtkSpeed[id]){
case 1: set_user_maxspeed(id, speed +0.1)
case 2: set_user_maxspeed(id, speed +0.12)
case 3: set_user_maxspeed(id, speed +0.14)
case 4: set_user_maxspeed(id, speed +0.15)
case 5: set_user_maxspeed(id, speed +0.16)
case 6: set_user_maxspeed(id, speed +0.17)
case 7: set_user_maxspeed(id, speed +0.18)
case 8: set_user_maxspeed(id, speed +0.20)
case 9: set_user_maxspeed(id, speed +0.29)
case 10: set_user_maxspeed(id, speed +0.35)
}
}
a z spawned usuwasz to co ci podałem powyżej