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
Fix

[5.9l] Zła redukcja obrażeń po zwiększeniu lvl

Fix

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

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 06.12.2010 00:32

*
Popularny

Nie wiem czy ktoś to zauważył, ale po zwiększeniu lvl (czyli i max statów, a dokładniej zręczności), redukcja obrażeń trochę źle działa, gdyż przy 50 pkt w zręczności miało się już praktycznie max % redukcji tych obrażeń, a dodawanie powyżej 50 pkt w zręczność, mało co dawało i tak mając 100 pkt w zręczności, redukcja obrażeń była prawie taka sama jak przy 50 punktach. Oczywiście jest na to rozwiązanie ;]
Znajdź wszystkie
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)

zamień na
player_damreduction[id] = damachange(X, Y, Z);

Dodaj gdziekolwiek w sma, np. przed "public reset_skill(id)"


I Opcja bez zmiany sposobu obliczeń
stock Float:damachange(maxstat, skill, dziel) {
if(skill > 0)
return (47.3057*(1.0-floatpower(2.7182,-(0.06798/(maxstat/50))*float(skill)))/dziel);

return 0.0;
}
  • zamiast X wpisz maksymalną wartość statystyki, czyli w standardzie jest to 50
  • zamiast Y wpisz statystykę, która będzie w obliczeniach, czyli dla redukcji obrażeń będzie to "player_agility[id]"
  • zamiast Z wpisz liczbę przez którą redukcja obrażeń będzie się dzielić, im większa liczba, tym mniejsza będzie redukcja, w standardzie jest 100

II Opcja ze zmianą sposobu obliczania redukcji, jak dla mnie ta opcja jest lepsza, przy większej ilości punktów dodanych w zręczność, 1 punkt daje więcej niż przy standardowych wyliczeniach
stock Float:damachange(maxstat, skill, Float:dziel) {
if(skill > 0) {
new Float:qwe = float(skill)/maxstat;
new Float:bonus = (2.0-floatpower(2.0, qwe))/(dziel*4);
if(bonus < 0.0) bonus = 0.0;
return bonus+qwe/dziel;
}

return 0.0;
}

  • zamiast X wpisz maksymalną wartość statystyki, np. 50
  • zamiast Y wpisz statystykę, która będzie w obliczeniach, czyli dla redukcji obrażeń będzie to "player_agility[id]"
  • zamiast Z wpisz liczbę zmiennoprzecinkową, przez którą redukcja obrażeń będzie się dzielić, jeśli wpiszesz 2.0 to maksymalna wartość redukcji będzie wynosić 50%, im większa liczba, tym mniejsza będzie redukcja

  • +
  • -
  • 14

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 ZiuTeK

    Wszechwiedzący

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 06.12.2010 17:45

A czy nie latwiej i prosciej bedzie zmieniac wartosc 100 ?
Skoro przy 100 levelach dzielimy ta wartosc przez 100 to analogicznie przy 200 podzielimy przez 200, przy 400 przez 400.
Po co komu te obliczenia ?
Dla 200 leveli

player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/200)

  • +
  • -
  • 0

#3 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 06.12.2010 21:16

A czy nie latwiej i prosciej bedzie zmieniac wartosc 100 ?
Skoro przy 100 levelach dzielimy ta wartosc przez 100 to analogicznie przy 200 podzielimy przez 200, przy 400 przez 400.
Po co komu te obliczenia ?
Dla 200 leveli

player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/200)

Niestety nie łatwiej... tamte obliczenia to wyższa szkoła jazdy ^^ i tutaj samo zwiększenie dzielnika da tylko to, że będziemy mieli mniejszą wartość i tym sposobem max redukcja obrażeń, będzie wynosić przy 200 lvl, tylko ok. 24%
A zresztą zobacz sobie to -> Google ;] i jak chcesz to się pobaw z tymi cyframi.

I jeszcze coś, jeśli by zrobić tym sposobem co podałeś, to i tak dalej przy 50 pkt zręczności miało by się praktycznie tyle samo redukcji obrażeń, co przy 100 pkt.

Użytkownik sebul edytował ten post 06.12.2010 21:19

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#4 cesik

    Zaawansowany

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:129
  • Imię:Dawid
  • Lokalizacja:KIELCE
Offline

Napisano 17.02.2011 21:00

a czy wartosc dla 150 lvl-a bedzie nastepujaca?
0,10197
i bedzie szlo tak?
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0,10197*float(player_agility[id])))/150)

Użytkownik cesik edytował ten post 17.02.2011 21:03


#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 17.02.2011 22:27

Google
Czyli musisz wpisać tam 0.04532, a dokładniej
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.04532*float(player_agility[id])))/100)

No i pamiętaj, że przecinek tutaj działa inaczej, musi być koniecznie kropka.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 Divic

    Wszechpomocny

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:326
  • Lokalizacja:Polska
Offline

Napisano 18.04.2011 12:43

K moj blad.. nie pozmieniałem danych we wszystkich linijkach

Ja u siebie dałem ze można we wszystki staty dac max 100 pkt :P ciężej jest bo nie rozwinie się każdej umiejętności xD

Użytkownik Divic edytował ten post 18.04.2011 14:35

  • +
  • -
  • 0

#7 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 18.04.2011 13:06

Przy 100 lvlach to standard, bo tam masz max 50 pkt.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#8 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 02.09.2011 23:56

Do poradnika dodałem dwie opcje, według mnie może komuś się przydać, tym bardziej, że ta druga opcja jest bardziej odpowiednia, bo redukcja zwiększa się takim samym tempem, z tym że przy mniejszej ilości punktów w zręczność gracz dostaje większy bonus do redukcji.

Pierwszy post został jeszcze poprawiony, wcześniej zapomniałem o tym, że przecież są itemy na dodanie dodatkowych punktów do statów.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#9 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 01.11.2011 00:59

Pierwszy post zaktualizowany, poprawiłem stock do obliczania redukcji obrażeń.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#10 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

  • Postów:2 086
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Namysłów
Offline

Napisano 12.02.2012 13:08

Błąd w kodzie :) W II sposobie :)

zamiast:

stock Float:damachange(maxstat, skill, Float:dziel) {
	    if(skill > 0) {
			    new Float:qwe = float(skill)/maxstat;
			    new Float:bonus = (2.0-floatpower(2.0, qwe))/(dziel*4);
			    if(bonus < 0.0) bonus = 0.0;
			    return bonus+qwe/dziel;
	    }
	    return 0.0;
}

dajcie

stock Float:damagereduction(maxstat, skill, Float:dziel) {
	    if(skill > 0) {
			    new Float:qwe = float(skill)/maxstat;
			    new Float:bonus = (2.0-floatpower(2.0, qwe))/(dziel*4);
			    if(bonus < 0.0) bonus = 0.0;
			    return bonus+qwe/dziel;
	    }
	    return 0.0;
}

sebul (12.02.2012 13:49):
Raczej niedopatrzenie, które i tak nie wpływa bezpośrednio na działanie fixa ^^

  • +
  • -
  • 1

Nie pomagam za darmo na PW/GG/Steam od tego jest forum

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#11 ogieR8

    Wszechmogący

  • Power User

Reputacja: 203
Profesjonalista

  • Postów:641
  • Imię:Mariusz
  • Lokalizacja:Ruda Śląska
Offline

Napisano 29.12.2014 00:09

Sorry, że wracam do wątku, ale odnośnie nazwy tematu.. a gdyby tak ..

player_damreduction[id] = oblicz_redukcje(max_level, skill, Float:dzielnik) 

np.

player_damreduction[id] = oblicz_redukcje(200, player_agility[id], 2.0)

i gdzieś tam na dole stock

stock Float:oblicz_redukcje(max, skill, Float:dziel) {
	if(skill > 0) {
		new Float:yyy = (max / (100 / dziel)) * 1.0
		new Float:xxx = 1.0 - ((skill / yyy) / 100)
		return xxx;
	}
	return 1.0;
}

100/dziel = maxymalny poziom redukcji w %

Chcemy 50% ? 50 = 100/x   x = 2.0

Chcemy 100% redukcji ? 100=100/x   x = 1.0
 
Czy takie wyjście jest dobre ? Pytam tych wyżej ustawionych, bo wzory raczej są dobre, ale nie wiem czy float wpuściłem w dobrych miejscach :X I wydaję mi się ten sposób bardziej realny. X%max_statystyki = X%max_redukcji 
 
Nie rozumiem po co tak kombinować, proste sposoby są najlepsze, takie mam zdanie, a teraz testuje :)

 

Wyniki testu

Spoiler


  • +
  • -
  • 0

Irytuje mnie nieczytelny kod, jeśli oczekujesz ode mnie pomocy - zmień to !


#12 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 29.12.2014 13:10

Nie chcę mi się tego co napisałeś teraz analizować, ale moja funkcja z założenia miała dawać więcej bonusu na samym początku (przy mniejszej ilości punktów statystyki).
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo






Również z jednym lub większą ilością słów kluczowych: Fix

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

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