Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

Zarządzanie niewidzialnością w cod mod - rozkmina systemu


Najlepsza odpowiedź GwynBleidD, 06.07.2015 19:41

W trie trzymasz niewidzialność dla każdego pluginu/perka/klasy czy czego tam chcesz. W arrayu będzie z tym problem, dlaczego?

Załóżmy, że masz 1 klasę, 2 perki i jeszcze jakiś item, wszystkie dają niewidzialność, klasa daje w zależności od levelu, perki i item zawsze tyle samo.

Niech będzie, że perk 1 daje 20%, perk 2 daje 30% i item daje też 30%.

Gracz ma klasę, perka 1 i item, akurat ma taki level, że level daje mu 20%, w Arrayu jest więc zapisane: 20% 20% 30%, gracz zmienia perk na ten drugi, co robisz? Przejdź do postu


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

#1 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 06.07.2015 10:57

Witam,

zauważyłem, że coś nie styka z niewidzialnością w cod mod, wniknąłem głębiej i znalazłem - niewidzialność pierwotna zostaje nadpisana przez coś innego (np z perku, sklepu)

 

 

 

Jak napisać taki system, który będzie zarządzać tym wszystkim?

Wiem, że to musi być w jednym pluginie (zrobiłem natyw już)

public UstawRendering(id, ile)
{
	if(rendering_gracza[id] > ile)
	{
		rendering_gracza[id] = ile
		ZastosujRender(id)
	}
}

public ZastosujRender(id)
{
	if(g_statystyki[id][KAMUFLAZ] < rendering_gracza[id])
		fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, g_statystyki[id][KAMUFLAZ]);
	else
		fm_set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, rendering_gracza[id]);
}

To by działało, gdyby nie jeden fakt - w tym cod mod jest statystyka, sklep, perki, klasy - wszystko ma niewidzialność...

 

W tej chwili kod porównuje niewidzialność z bieżącą i jeżeli mniejsza to ustawia, ale jest błąd:

 

Mam klase, która ma 150 widoczności (widoczność ustawiana w cod_class_enabled)

Nabijam jakiś tam poziom i dowalam wszystko w statystyke niewidzialność.

Odradzam się i co widze? A no to, że kod działa, widoczność jest ta ze statystyki, a nie z klasy

Ale resetuje punkty i co? G**** Widoczność jest normalna... 255, nie ta z klasy (klasa miała 170), a powinna być z klasy

 

 

 

Jak to zrobić, taką porównywarkę? Myślałem, żeby trzymać gdzieś stary render gracza, ale jak to resetować potem itp.

Problem jest typu - wymyśl algorytm,

 

jeżeli coś niezrozumiałe to pytać


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

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

Napisano 06.07.2015 11:29

Aktualnie pisze coś takiego


  • +
  • -
  • 1

#3 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 06.07.2015 13:08

Pytanie... Czy udostępnisz?
  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#4 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

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

Napisano 06.07.2015 14:49

Problem jest, ale nie aż tak poważny... Wcale nie musisz trzymać tego w 1 pluginie :)

 

1. Rejestrujesz natyw o nazwie dla przykładu przelicz_niewidzialnosc

2. Dla każdego pluginu, który choć raz użył tego natywu rejestrujesz forward

3. W forwardzie każdy plugin, który korzysta z niewidzialności przy każdym jego wykonaniu dla danego gracza, określa jaką powinien mieć niewidzialność - jeśli ma np perk, ustalamy mu 20%, jeśli nie ma nic, ustalamy mu 100% (czyli widoczny). Wynik po prostu zostaje zwrócony w forwardzie

4. Po wykonaniu wszystkich forwardów plugin główny wybiera najmniejszą wartość lub dokonuje jakichś "szacunków" żeby wyliczyć wartość na innej podstawie (np średnią)

 

Jeśli chcesz zmienić niewidzialność graczowi, dbasz o to by Twój plugin w forwardzie zwrócił odpowiednią wartość, a następnie wykonujesz przelicz_niewidzialnosc.

 

Podejście numer dwa - lista niewidzialności.

 

1. Rejestrujesz 2 natywy: zarejestruj_niewidzialnosc i ustaw_niewidzialnosc

2. zarejestruj_niewidzialnosc tworzy nowy wpis w trie w którym jako klucz podajesz swoją dowolną, unikalną nazwę (czyli np dla perku XX będzie to po prostu perk_XX), a jako wartość 100% (czy tam 255, czy 1, czy cokolwiek innego, zależy od tego jak niewidzialność jest ustawiana) oznaczającą brak niewidzialności

3. gdy plugin chce zmienić graczowi niewidzialność, wykonuje ustaw_niewidzialnosc z odpowiednią wartością, plugin główny zapisuje ją na odpowiednniej pozycji w trie i wybiera z trie najmniejszą wartość, ustawiając ją graczowi. Jeśli trie jest puste, ustawia brak niewidzialności.

 

przykład użycia:

zarejestruj_niewidzialnosc('perk_superasny')

ustaw_niewidzialnosc(id, 'perk_superasny', 30)

 

Podejście numer trzy - własny system (np punktowy)

 

Ustalasz jakiś system punktowy, od którego będzie zależeć ile niewidzialności ma gracz, każdy plugin będzie mógł dodać punkty lub je zabrać.

 

Podejście numer cztery - sprawdzanie wartości niewidzialności

 

Każdy plugin będzie posługiwał się wartościami od 0.0 do 1.0, jeśli będzie chciał ustawić graczowi niewidzialność:

1. pobierze jego aktualny poziom niewidzialności

2. przemnoży go przez swoją wartość

3. ustawi otrzymaną liczbę jako wartość niewidzialności

 

Jeśli będzie chciał zabrać, po prostu zamiast mnożenia użyje dzielenia.

 

W ten sposób jeśli 1 plugin ustawi graczowi niewidzialność na 0.5 i drugi również na 0.5, dostanie on w efekcie wartość 0.25.


  • +
  • -
  • 1
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

#5 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 06.07.2015 15:30

Gwyn, dziękuję za odpowiedź, jak zawsze wiele mi to pomaga, ogólną wizję już mam.

 

 

Nie chcę, aby wyliczało średnią, chcę żeby spośród x, które w tym czasie ma ustawione, wybrało najmniejszą i ustawiło, jeżeli "skończy się" ta najmniejsza (drop perka) to ustawia najmniejszą z możliwych już...

 

 

 

Pomysł z pakowaniem tego do Trie nie jest taki głupi...

A jakby w jakiejś tablicy trzymać wszystkie wartośći, które mu dodałem?

Potem jakiś natyw do usuwania tego z tablicy

 

 

Tylko jak to wykonać...

Będę mieć id gracza lub nazwe (Trie lub Array), do tego dochodzą jeszcze wartośći, które muszą być trzymane pod jednym kluczem (wyciągam wszystkie i wybieram największą

 

Array trzymający Array?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#6 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

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

Napisano 06.07.2015 17:49

A jakby w jakiejś tablicy trzymać wszystkie wartośći, które mu dodałem?

Musisz w jakiś sposób śledzić jaki plugin ustawił jaką wartość - stąd pomysł z trie, bo wtedy możesz sobie każdą zmianę "podpisać" :) Właściwie to rejestrowania tutaj nawet nie potrzebujesz, po prostu zmienić.

Będę mieć id gracza lub nazwe (Trie lub Array), do tego dochodzą jeszcze wartośći, które muszą być trzymane pod jednym kluczem (wyciągam wszystkie i wybieram największą

Array trzymający Array?

new Trie:invisibility[33];

new client_connect(id) {
    invisibility[id] = TrieCreate()
}
to Ci coś mówi? :)

Prawdopodobnie będziesz potrzebował tandemu - Array + Trie, inaczej ciężko będzie znaleźć najmniejszą wartość. W Arrayu trzymasz klucze z Trie, dzięki czemu możesz po Trie iterować.
  • +
  • -
  • 1
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

#7 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 06.07.2015 18:33


new Trie:invisibility[33];

new client_connect(id) {
invisibility[id] = TrieCreate()
}

 

Nie mówi wszystko :/

 

Czyli mam Trie dla każdego gracza, ale co mi z tego?

 

Nie rozumiem tego kompletnie

 

 

 

 

Mam Trie dla każdego gracza, nie mogę tam trzymać wartości niewidzialności?

 

 

A jakby zrobić Array dla każdego?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#8 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

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

Napisano 06.07.2015 19:41   Najlepsza odpowiedź

W trie trzymasz niewidzialność dla każdego pluginu/perka/klasy czy czego tam chcesz. W arrayu będzie z tym problem, dlaczego?

Załóżmy, że masz 1 klasę, 2 perki i jeszcze jakiś item, wszystkie dają niewidzialność, klasa daje w zależności od levelu, perki i item zawsze tyle samo.

Niech będzie, że perk 1 daje 20%, perk 2 daje 30% i item daje też 30%.

Gracz ma klasę, perka 1 i item, akurat ma taki level, że level daje mu 20%, w Arrayu jest więc zapisane: 20% 20% 30%, gracz zmienia perk na ten drugi, co robisz?
  • +
  • -
  • 1
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

#9 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 06.07.2015 19:57

Stop,

dlaczego w Trie niewidzialność każdego itemu/perku?

Dlaczego nie stowrzyć Trie dla gracza i w nim tablice i tam pakować to co gracz dostanie?

Edit

No dobra, mam Trie do którego dostanę się po nicku, co tam mam trzymać? Uchwyt do Array? Wtedy to będzie cell czy array?
GwynBleidD (06.07.2015 22:12):
No właśnie to co opisałeś mam na myśli...

  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#10 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 08.07.2015 07:38

Zrobiłem tak,

new Array:render[33]

w putinserver tworze

w disconnect destroy

 

 

 

Teraz gdy jakis perk bedzie chcial zmienic to Push jego wartość i wywołaj funkcje ustawiającą niewidzialność.

 

Algorytm szukający najmniejszą sam sobie napiszę.

 

proszę nie zamykać, może być potrzebne


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#11 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 10.07.2015 20:04

Dobra, wszystko jest gotowe, ale są bugi...

I jest taka sprawa, że gdy zginę trzymając nóż to w następnej rundzie będę miał w moim "niewidzialnościowym" Array'u wartość '55', bo zginąłem na nożu. Juz miałem dopisywać kod, który po śmierci zabierze to 55, ale co jeżeli inny plugin będzie mieć taką samą niewidzialność ustawioną? Po prostu usunie mu :/

 

Jak to rozwiązać?

 


  • +
  • -
  • 1

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!





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

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