Taki sam level na roznych klasach
Kmf!p
03.07.2015
Witam,
potrzebuje zrobic takie cos ze jesli gracz ma na klasie np. komandos 48 lvl (najwyzszy) to jak zrobic zeby na pozostalych klasach tez mial taki sam? ogolnie mowiac zeby gracz mogl grac kazda klasa i miec na niej taki sam level.
Załączone pliki
Użytkownik Kmf!p edytował ten post 03.07.2015 13:39
Linux'
04.07.2015
Trzeba usunąć z zapisu (w kluczu nvault) nazwe klasy...
To chyba tyle
Tyle, jezeli punky statystyk itp tez maja przechodzic na inne klasy. Jezeli nie, trzeba rozdzielic zapisywanie statystyk i zapisywanie poziomow.
Rivit
04.07.2015
Trzeba usunąć z zapisu (w kluczu nvault) nazwe klasy...
To chyba tyle
Tyle, jezeli punky statystyk itp tez maja przechodzic na inne klasy. Jezeli nie, trzeba rozdzielic zapisywanie statystyk i zapisywanie poziomow.
Tak, zapomniałem o tym
Kmf!p
04.07.2015
dobra a jak usune zapisywanie nazwy klasy to bedzie to dzialac dobrze ?
bo chce zrobic tak zeby np. klasa komandos mam 48 lvl i mam rozdane staty po swojemu i czy te staty i level przeniosa sie gdy zmienie klase ?
czy raczej nie będę mial w statystykach w ogóle punktow na innych klasach, ale musze miec punkty skoro będę mial level ?
poprostu chce zrobic tak ze moge wbijac level wszystkimi klasami, ale zeby to dzialalo tak jakbym gral jedna klasa (zeby nie dodawaly sie statystyki i inne rzeczy) po zmianie klasy chce miec ten level i staty co na wczesniejszej klasie czyli najwyzszy level.
czyli wystarczy usunac nazwe klasy z zapisu ?
Linux'
05.07.2015
trzeba rozdzielic zapisywanie statystyk i zapisywanie poziomow.
Czego jeszcze nie rozumiesz?
Kmf!p
05.07.2015
nie moglem wywnioskowac na co odpowiadasz z tego co widze tez nie wiesz
juz poradzilem sobie, i nie musialem rozdzielac niczego wystarczylo usunac zapis nazwy klasy.
Linux'
05.07.2015
Haha ta . Oczywiscie, ze sie nie znam. Ale tak na szybko pozwolilem sobie zrobic po swojemu, bys nie zakladal nastepnego tematu z pytaniem dlaczego rozdane punkty przechodza na inne klasy.
Załączone pliki
Kmf!p
05.07.2015
tylko ze ja chce zeby te punkty i poziom przechodzil na inne klasy i wlasnie pisze o tym od poczatku, nie chce zeby sie sumowaly, ale z tego co widze to nie sumuja sie poki co jeszcze nie testowalem dokladnie. plus za post na poczatku bo po nim miedzy innymi zaczailem jak to zrobic.
Użytkownik Kmf!p edytował ten post 05.07.2015 19:01
Kmf!p
29.07.2015
jednak cos jest nie tak bo zdaza sie ze poziomy doswiadczenie sie czasami resetuje
tak wyglada moj public
public ZapiszDane(id) { if(!klasa_gracza[id] || doswiadczenie_gracza[id] < 1 || vault == INVALID_HANDLE) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], identyfikator[64]; format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]); new typ_zapisu = get_pcvar_num(cvar_typ_zapisu); switch(typ_zapisu) { case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu); nvault_set(vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public WczytajDane(id, klasa) { if(vault == INVALID_HANDLE) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], identyfikator[64]; new typ_zapisu = get_pcvar_num(cvar_typ_zapisu); switch(typ_zapisu) { case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa], typ_zapisu); if(!nvault_get(vault,vaultkey,vaultdata,255)) // Jezeli nie ma danych gracza sprawdza stary zapis. { format(vaultkey, charsmax(vaultkey), "%s-%i-cod", nazwa_gracza[id], klasa); nvault_get(vault,vaultkey,vaultdata,255); } replace_all(vaultdata, 255, "#", " "); new danegracza[6][32]; parse(vaultdata, danegracza[0], 31, danegracza[1], 31, danegracza[2], 31, danegracza[3], 31, danegracza[4], 31, danegracza[5], 31); doswiadczenie_gracza[id] = str_to_num(danegracza[0]); poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1; inteligencja_gracza[id] = str_to_num(danegracza[2]); zdrowie_gracza[id] = str_to_num(danegracza[3]); wytrzymalosc_gracza[id] = str_to_num(danegracza[4]); kondycja_gracza[id] = str_to_num(danegracza[5]); punkty_gracza[id] = (poziom_gracza[id]-1)-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]; return PLUGIN_CONTINUE; }
sadze ze problem lezy gdzies tu
format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa_gracza[id]], typ_zapisu); format(vaultkey, charsmax(vaultkey),"%s-%s-%i-cod", identyfikator, nazwy_klas[klasa], typ_zapisu); format(vaultkey, charsmax(vaultkey), "%s-%i-cod", nazwa_gracza[id], klasa);
bo wczytuje/zapisuje klasy gracza, a ja chce zeby wczytywalo/zapisywalo doswiadczenie, ale nie wiem jak przerobic zeby wczytywalo/zapisywalo to doswiadczenie i zeby nie bylo podzialu na klasy bo mi nie potrzeba zapisywac doswiadczenia na wszystkich klasach. w sumie tak tez dziala ale zdaza sie ze komus lvl nagle spadnie i nie da sie wbic bo cos jest nie tak z zapisem.
Kmf!p
29.07.2015
dodam ze problem wystapil gdy gracz gral jedna klasa mial 32 lvl wpisal /klasa wybral inna klase, wpisal kill w konsoli i juz na innej klasie nie mial lvl level zablokowal mu sie na 3 czy tam 4 i na tym nicku nie da sie wbic wiekszego , dodam ze probowalem tak robic i umnie lvl byl, a u niego nie ma
jeszcze moge zapis z nvault podac widac ze cos jest nie tak.
to jest jego zapis
Fr3sh.-1-cod#545#4#0#3#0#0šé·U%
Użytkownik Kmf!p edytował ten post 29.07.2015 17:02
Kmf!p
31.07.2015
jednak problem lezy gdzie indziej, i zapis okazuje sie byc dobry. tylko sa 2 nicki na serwerze na ktore ten zapis nie dziala mianowicie: Fr3sh. i Rybka :3 raczej nie jest to problem z nickami bo na podobnych nickach dziala, juz sam nie wiem czego to wina kazdemu normalnie dziala tylko im nie...dziwne. na orginalnym zapisie z cod tez nie dziala na tych nikach. wylanczalem serwer wywalalem te dwa pliki z folderu vault, wlanczam serwer i dalej to samo a wchodze na swoj i normalnie exp leci i lvl jak i na kazdym innym nicku, a na tych dobija sie 4 lvl i wiecej sie nie da pisze spadles do 2 poziomu i tak w kolko.
Kmf!p
11.08.2015
pomozcie ...
wczesniejsze posty sa nie aktualne
wszystko dziala, ale do czasu nagle jednemu graczowi spadnie poziom(na 2lvl) i nie mozna wbic wiecej jak do 4 lvl, kazda proba oddania lvl nie pomaga ustawiam na np. 30 lvl gosc zamiast wbic 31 to spada mu na 2 lvl i tak w kolko. na nicku ktorym ten lvl spadl nie da sie grac nawet po resecie lvl bo i tak wbije sie max 4 lvl co jest dziwne innym graczom w tym czasie wszystko dziala normalnie ogarnie ktos to zeby dzialalo normalnie bez tego kasowania sie lvl ?
public ZapiszDane(id) { if(doswiadczenie_gracza[id] < 1 || vault == INVALID_HANDLE) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], identyfikator[64]; format(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", doswiadczenie_gracza[id], poziom_gracza[id], inteligencja_gracza[id], zdrowie_gracza[id], wytrzymalosc_gracza[id], kondycja_gracza[id]); new typ_zapisu = get_pcvar_num(cvar_typ_zapisu); switch(typ_zapisu) { case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } format(vaultkey, charsmax(vaultkey),"%s-%i-cod", identyfikator, typ_zapisu); nvault_set(vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public WczytajDane(id) { if(vault == INVALID_HANDLE) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], identyfikator[64]; new typ_zapisu = get_pcvar_num(cvar_typ_zapisu); switch(typ_zapisu) { case 1: copy(identyfikator, charsmax(identyfikator), nazwa_gracza[id]); case 2: get_user_authid(id, identyfikator, charsmax(identyfikator)); case 3: get_user_ip(id, identyfikator, charsmax(identyfikator)); } format(vaultkey, charsmax(vaultkey),"%s-%i-cod", identyfikator, typ_zapisu); if(!nvault_get(vault,vaultkey,vaultdata,255)) // Jezeli nie ma danych gracza sprawdza stary zapis. { format(vaultkey, charsmax(vaultkey), "%s-cod", nazwa_gracza[id]); nvault_get(vault,vaultkey,vaultdata,255); } replace_all(vaultdata, 255, "#", " "); new danegracza[6][32]; parse(vaultdata, danegracza[0], 31, danegracza[1], 31, danegracza[2], 31, danegracza[3], 31, danegracza[4], 31, danegracza[5], 31); doswiadczenie_gracza[id] = str_to_num(danegracza[0]); poziom_gracza[id] = str_to_num(danegracza[1])>0?str_to_num(danegracza[1]):1; inteligencja_gracza[id] = str_to_num(danegracza[2]); zdrowie_gracza[id] = str_to_num(danegracza[3]); wytrzymalosc_gracza[id] = str_to_num(danegracza[4]); kondycja_gracza[id] = str_to_num(danegracza[5]); punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]; return PLUGIN_CONTINUE; }
public SprawdzPoziom(id) { new limit_poziomu = get_pcvar_num(cvar_limit_poziomu); new bool:zdobyl_poziom, bool:stracil_poziom; while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu) { poziom_gracza[id]++; punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]; zdobyl_poziom = true; } while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1)) { poziom_gracza[id]--; stracil_poziom = true; } if(poziom_gracza[id] > limit_poziomu) { poziom_gracza[id] = limit_poziomu; ResetujPunkty(id); } if(stracil_poziom) { ResetujPunkty(id); set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0); ShowSyncHudMsg(id, SyncHudObj2,"Spadles do %i poziomu!", poziom_gracza[id]); } else if(zdobyl_poziom) { new name[32] get_user_name(id, name, 31) ColorChat(0, GREEN, "[%s]^x03 %s^x04 awansowal na^x03 %i^x04 poziom.", nazwy_klas[klasa_gracza[id]], name, poziom_gracza[id]) client_cmd(id, "spk QTM_CodMod/levelup"); } ZapiszDane(id); }
Kmf!p
14.08.2015
lub zrobic zeby jakos na standardowym zapisie z coda pobrac nazwe klasy i najwyzszy lvl i ustawic ten lvl na innych klasach tez.