←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

PTB do modów gdzie występuje lvl

Zablokowany

  • +
  • -
sebul - zdjęcie sebul 16.08.2011

Witam. Ostatnio myślałem nad zrobieniem własnego PTB, który brałby także pod uwagę lvl gracza (natyw), bo jak wiadomo zwykłe PTB tego nie robi i często źle balansuje drużyny. Ogólnie pomysł na plugin już mam i myślę, że nie będzie to aż tak bardzo trudne, ale nie wiem jak napisać jedną dosyć ważną (jak nie najważniejszą) funkcję. Plugin działał by na zasadzie, że po każdej rundzie do globalnej tablicy
new Float:punkty_gracza[33];

przypisywał by jakąś tam ilość punktów, np. na 200 lvl
punkty_gracza[id] = (fragi*2-śmierci)*(lvl gracza/400+0.5);

no i na podstawie tej tablicy, odbywały by się wszystkie akcje wykonywane przez PTB. Jeśli jakaś drużyna prowadziła by przynajmniej 3 rundami, ale jednocześnie mniej niż 5 rundami, to plugin równał by drużyny tak (przenosił, zamieniał graczy), aby suma tej globalnej tablicy w każdej drużynie była jak najbardziej przybliżona do siebie, dopiero jeśli przewaga wygranych rund wynosiła by 5, albo więcej, wtedy przenosiło by najlepszego gracza, albo zamieniało by go z najgorszym. Oczywiście trzeba będzie dodać też blokadę co do maksymalnej wielkości drużyny, czy też maksymalnej różnicy w ilościach graczy w drużynach oraz jakieś cvary do tego co napisałem, itp. ale z tym raczej bym sobie poradził. No i skoro proszę tutaj o pomoc, to jakbym skończył pisać plugin, to bym go tutaj udostępnił. Mam nadzieje, że ktoś wie jak napisać tą funkcję opisaną wyżej i mi tutaj pomoże.

Dodano 16 sierpień 2011 - 17:21:
Pomyślałem trochę nad tym i już wiem jak napisać tą funkcję, ale teraz mam pytanie czy jest już jakaś funkcja, która będzie zwracać różnicę pomiędzy dwoma liczbami? Mogę ją też samemu napisać, ale może jest już coś takiego w dokumentacji.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 16.08.2011

różnice ? w sensie odejmowanie :F
Dokumentacja AMXX.pl: Core >> float > floatsub
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.08.2011

Ogólnie różnicę pomiędzy liczbami, nie odejmowanie, bo przy odejmowaniu może zwrócić liczbę ujemną, a tutaj właśnie jak wpiszę "floatsub(2.0,5.0)" to zwróci -3. W sumie można to teraz napisać tak
stock Float:roznica(Float:num1, Float:num2) {
if(num1 > num2)
return floatsub(num1,num2);
else
return floatsub(num2,num1);
}

ale może jednak jest coś takiego co od razu tak robi...?
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 16.08.2011

if(różnica <0)
różnica*(-1)

Prawda, że genialne? xD
Użytkownik A może sma? edytował ten post 16.08.2011 18:18
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.08.2011

Nie pytałem o inny sposób ^ ^ ale Twój i tak wydaje się gorszy, bo za każdym razem, gdy różnica będzie < 0 to będę musiał mnożyć przez ją -1, a chyba jednak lepiej omijać mnożenia, a tym bardziej dzielenia, jak się oczywiście tylko da.
Odpowiedz

  • +
  • -
A może sma? - zdjęcie A może sma? 16.08.2011

Yyyy... Dlaczego?
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 16.08.2011

Chodzi o to, że przy mnożeniu (tutaj nie jestem pewny), a tym bardziej przy dzieleniu, serwer potrzebuje więcej pamięci, czyli jeśli można coś zrobić bez mnożenia/dzielenia, to czemu mam serwer bardziej przeciążać? Oczywiście przy takich wyliczeniach tej pamięci dużo nie potrzeba, ale jeśli miały by to być jakieś długie wyliczenia, to różnica w użyciu tej pamięci pewnie była by spora.
Robi się już nie potrzebny bałagan...
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 16.08.2011

twoj stock jest ok nie widziałem funkcji amxx która działa by w ten sposób ale gdyby była robiła by to pewnie podobnie do twojego stocka ;)
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 17.08.2011

Zamknąć można, plugin zrobiony, jest aktualnie u mnie na testach ;] Ogólnie wyszło na to, że zrobiłem przeróbkę normalnego PTB...
Odpowiedz

Adminek AMXX.PL - zdjęcie Adminek AMXX.PL 17.08.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: problem rozwiązany

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany