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

XP MOD


  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 kyku

    Wszechmogący

  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 11.06.2010 14:17

Witam, dawno nie zwracałem się z prośbą do Was ale tym razem po prostu sobie nie poradzę, wymiękam :P

Mam tutaj taki kod (oczywiście jest to tylko kawałek ale reszta nie ma za bardzo na działanie wpływu)
Spoiler


Więc tak, kod działa aczkolwiek gracze skarżą się, że czasem im się "cofa" (czy też zmienia).
Dziwne jest to, ponieważ (że tak brzydko powiem) z d*py gracze, z 150 poziomu mają 44.. (taki przykład).

Jakieś pomysły?

Dodam, że mam na serwerze inny plugin który działa na podobnej zasadzie (nvault) i nie ma żadnych problemów.

Użytkownik kyku edytował ten post 11.06.2010 14:18

  • +
  • -
  • 0

#2 Kubaczek <3

    Zaawansowany

  • Użytkownik

Reputacja: 17
Początkujący

  • Postów:116
  • Steam:steam
  • Lokalizacja::)
Offline

Napisano 11.06.2010 14:50

Miałem to samo przy vault, przeszedłem na sql i hula.
  • +
  • -
  • 0

#3 kyku

    Wszechmogący

  • Autor tematu
  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 11.06.2010 15:06

ja z sql na nvault bo serwer padal ; d
  • +
  • -
  • 0

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 11.06.2010 15:17

strzelam
save
replace_all(nick, 34, " ", "'");

i to samo w load ;)
  • +
  • -
  • 0

#5 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 11.06.2010 15:21

1.Zapisuj na sid, a jesli ktos jest z nonsteam (ma steam_id_lan) to dopiero na nick.
2.Po co Ci -xpmod na końcu key'a? Usuń to, bo to niepotrzebne, niech sam nick/sid będzie kluczem (key'em).
3.Jeśli xp nie dostaje się co chwila to od razu to zapisuj vaultem, wtedy po każdej operacji będzie zapis na bieżąco, a zmienne wywal, no chyba, że co chwila dostaje się za coś expa to wtedy do zmiennych i co runda najrzadziej zapisuj.
4.

public SaveData(id)
{
if(!zaladowalo[id]) return PLUGIN_HANDLED;// zmienna informujaca czy dany gracz byl zaladowany, ale jesli go nie zaladowalo to czemu go nie zapiszesz? Tworzenie konto robisz ręcznie? Jesli ma być automatycznie zapisywane dla nowych graczy to wywal tę linijkę
if(is_user_bot(id)) return PLUGIN_HANDLED;
if(player_xp[id]<=player_xp_old[id] || player_xp[id]==99999999999) return PLUGIN_HANDLED;//nie do konca rozumiem co to, jakby byl caly kod..
new nick[35]//32 wystarczy

new vaultkey[64],vaultdata[256]// po co Ci taka wielka tablica vaultdata? vaultkey w zasadzie powinien byc samym nickiem, po co ten dopisek -xpmod?
format(vaultkey,63,"%s-xpmod",nick)//czyli jak to wyzej poprawisz to ta linijka do usuniecia
format(vaultdata,255,"%i#%i#%i#", player_lvl[id], player_xp[id], player_dead[id])/* Po co wstawiasz #? Zrób to tak:
format(vaultdata,255,"%i %i %i", player_lvl[id], player_xp[id], player_dead[id])
skoro to liczby to nie zawierają spacji, więc później bez problemu podzielisz to parse'm*/
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}


5.
public LoadData(id)
{


if(is_user_bot(id) || !is_user_connected(id)) return PLUGIN_HANDLED;

new nick[35] //wystarczy 32
get_user_name(id, nick, 34);//analogicznie 31
replace_all(nick, 34, "#", "");//po co to ?

new vaultkey[64],vaultdata[256]//po co Ci takie duze tablice? przeczytaj co pisalem wyzej
format(vaultkey,63,"%s-xpmod",nick)// jak wyżej pisałem, wywal "-xpmod", bo to zbędne
format(vaultdata,255,"%i#%i#%i#",player_lvl[id], player_xp[id], player_dead[id])//po co formatujesz string do którego za chwile i tak zapiszesz co innego?(zapiszesz tu wartosc z vaulta)
nvault_get(g_vault,vaultkey,vaultdata,255)//uzyj nvault_lookup, który od razu zwróci Ci, czy taki klucz został odnaleziony w bazie vault, po czym mozesz to zawarunkować i w razie niepowodzenia dasz return, żeby dalej nie wykonywać funkcji
replace_all(vaultdata, 255, "#", " ")//wywal to
new tmp[3][32];
parse(vaultdata, tmp[0], 31, tmp[1], 31, tmp[2], 31)//chyba takich długich wartości expa nie będzie, 31 znaków to grubo ponad bilion :D
player_lvl[id] = str_to_num(tmp[0]);
player_xp[id] = str_to_num(tmp[1]);
player_dead[id] = str_to_num(tmp[2]);
zaladowalo[id] = 1;//jesli to co wyzej ma byc automatycznie to ta zmienna jest zbedna

return PLUGIN_CONTINUE
}



Popraw to i dalej będziemy działać :)
  • +
  • -
  • 1

#6 kyku

    Wszechmogący

  • Autor tematu
  • Użytkownik

Reputacja: 166
Profesjonalista

  • Postów:612
  • Lokalizacja:Jasło
Offline

Napisano 11.06.2010 19:05

Widzę, że znów dość często udzielasz się na forum :) dzięki za pomoc i życzę Ci ponownie moderatora
  • +
  • -
  • 0




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

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