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

Zmienna przechowująca wielkości zmiennych graczyCiężko to opisać w tytule...


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

#1 oeN.

    Wszechwidzący

  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 26.03.2015 20:10

Witam,

 

Na wstępie przepraszam za dziwnie nazwany tytuł ale naprawdę nie mam pojęcia jak to napisać w skrócie.

Tworzę system klanów (to już zrobione) i chcę by każdy założony klan miał własne punkty które zdobywamy za zabicia. Zasada działania jest dość prosta, gracz jest w klanie, zabija innego gracz i klan dostaje +X punktów. Tylko jest jedno ale... co zrobić by każdy klan miał osobną zmienną (a raczej osobne ID) i żeby ta zmienna zwiększała się za każdym razem jak gracz owego klanu zdobędzie zabicie (tutaj po prostu bym zapisał punkty do zmiennej gracza i potem dodawał do zmiennej klanu jak gracz wyjdzie/mapa się zmieni/będzie nowa runda).


Użytkownik oeN. edytował ten post 26.03.2015 20:10

  • +
  • -
  • 0

#2 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 26.03.2015 20:13

sprawdzasz id(klanu) gracza zabijającego przy zabiciu i dodajesz do zmiennej jego klanu. Tworzenie zmiennych aby dodać do klanu punkty (jeżeli klan ma swą zmienną na ptk) jest nieoptymalne.

Przechowujesz na bieżąco zmienne klanu ?


Użytkownik NoLiFeR edytował ten post 26.03.2015 20:14

  • +
  • -
  • 0

#3 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 26.03.2015 20:27

Nie mam jako takiego id klanu, wszystko jest zapisywane i czytane z bazy danych.


  • +
  • -
  • 0

#4 ParadisO

    Wszechmogący

  • Power User

Reputacja: 128
Zaawansowany

  • Postów:689
  • Lokalizacja:Częstochowa
Offline

Napisano 26.03.2015 21:15

Możesz spróbować zrobić to na tablicach ale to może być skomplikowane, w skrócie

tab[id_klanu][pkt_klanu]

Prostszym sposobem jednak chyba będzie ustawienie ID dla klanu i drugiego ID dla punktów. 

ID klanu ustawiaj przy zakładaniu, najlepiej auto increment jakby było i do funkcji z dodawaniem punktów wędruje wtedy Twoje id klanu i dodaje mu pkt.

 

Jeżeli to Ci nie pomogło to musisz nam pokazać kawałek kodu, może być ten w którym dodajesz pkt, fajnie by było jakby to była osobna funkcja.

 

Pozdrawiam,

Paradiso


  • +
  • -
  • 0

#5 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 27.03.2015 09:49

Rozwiązanie 1.

 

Utwórz w bazie danych nowe pole z unikalną nazwą klanu, składającą się z samych literek najlepiej. Może być generowana losowo przy zakładaniu klanu, może mieć faktycznie jakieś znaczenie, to nieistotne na tym etapie. Istotne jest natomiast by było to ID unikalne, dodaj więc indeks typu unique w bazie danych.

 

Następnie w pluginie utwórz CellTrie w którym jako klucz będziesz używał tego ID (nazwa klanu tu się niestety nie nada, bo może się zmieniać, może być zbyt długa, może nie być unikalna i jeszcze kilka przypadków się może zdarzyć), a jako wartość będziesz ustawiał ilość fragów.

 

Jeśli nie chcesz się kłopotać z dodatkową kolumną, możesz jako klucz w CellTrie używać kolumny PRIMARY_KEY w bazie, którą absolutnie powinieneś posiadać. Jeśli jej nie posiadasz, to cofnij się do etapu w którym ją powinieneś utworzyć. ID to jednak musisz przekonwertować na string, bo CellTrie nie przyjmie liczby jako klucza.

 

Z góry uprzedzam CellArray się tu nie nada, klucze w CellArray owszem są liczbą, ale muszą tworzyć spójny ciąg, tj nie może Ci brakować jakiegoś numerka, a niestety w bazie ID o numerze np 2 może zniknąć, bo klan o tym ID został usunięty, wtedy cała koncepcja się sypie. Nie kombinuj też z przesuwaniem numerów żeby tą dziurę załatać, bo później się okaże że wszystko się posypało, tego się nie robi!

 

Rozwiązanie 2.

 

Utwórz 2 tablice (czy będą dynamiczne, czy nie to już sam zdecyduj), w jednej przechowuj na kolejnych pozycjach ID gangu z kolumny PRIMARY_KEY w bazie danych, w drugiej na odpowiadających pozycjach przechowuj fragi. Przy zapisie do bazy danych po prostu przeczesuj tą tablicę i zapisuj odpowiednie ID. Dodatkowo utwórz tablicę dla graczy w której będziesz przechowywał pozycję z tych tablic na której znajduje się gang gracza, uprości to odwoływanie się do gangu gracza.

 

Wady tej metody: musisz korzystać z wewnętrznego ID, gangi mogą być wczytane z bazy tylko raz na mapę (no niby można zrobić to kilka razy, ale z każdym wczytaniem będzie wiązało się mnóstwo roboty) i zapisywać do bazy wygodnie można tylko wszystkie gangi na raz. Zaletą jest jednak brak użycia CellTrie, co dla niektórych może być kłopotem, jednak nie ma się co bać, zalecam sposób 1. To czy będziesz tworzył dodatkowe unikalne ID w postaci stringa czy będziesz polegał na PRIMARY_KEY już zależy od Ciebie.


  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#6 oeN.

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 95
Zaawansowany

  • Postów:294
  • Lokalizacja:Dom
Offline

Napisano 27.03.2015 11:28

Przy tworzeniu klanu zapisuje się jego ID w bazie i jest za każdym razem inne, unikalne.

Podrzucę cały kod pluginu. Może ktoś coś z tego wyłapie i coś podpowie.

 

@GwynBleidD

Nigdy nie używałem CellTrie, jakaś podpowiedź?

Załączone pliki


Użytkownik oeN. edytował ten post 27.03.2015 11:32

  • +
  • -
  • 0




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

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