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.8d/5.9l] Odejmowanie doświadczenia za zabicie gracza z zbyt dużą różnicą poziomu

Fix

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

#1 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 10.04.2010 11:28

*
Popularny

Znajdź:
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/40.0)/3.0)))

Zamień na:

W miejsce X wpisujemy MAX_LEVEL+1 np. dla 100 lvl - X=101, 200 lvl - X=201, 1000 lvl - X=1001
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/X.0)/3.0)))

  • +
  • -
  • 7

#2 bogery15

    Profesjonalista

  • Zbanowany

Reputacja: -3
Nowy

  • Postów:202
  • Lokalizacja:Polska
Offline

Napisano 15.05.2010 09:39

a podasz mi wzór jak zrobić zeby nie odejmowało expa? za zabicie mniejszego/wiekszego w ogóle?

#3 Vertricus

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 15.05.2010 10:23

Wzór jest w poście CTRL+C -> CTRL+V (tylko dane zmień )
  • +
  • -
  • 0

#4 bogery15

    Profesjonalista

  • Zbanowany

Reputacja: -3
Nowy

  • Postów:202
  • Lokalizacja:Polska
Offline

Napisano 15.05.2010 10:54

wlasnie nie wiem na jakie zmienic :D troche tego nie kumam,

dałem tak
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/350.0)/3.0)))
i tak jak ktoś kogo zabije z nieduża iloscia lvl to spada expo ;/

Użytkownik bogery15 edytował ten post 15.05.2010 15:35


#5 WarninG.

    Profesjonalista

  • Zbanowany

Reputacja: 11
Początkujący

  • Postów:203
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 05.07.2010 20:13

mam 1001 to powiesz jak mam wpisać uzupełni mi ktoś żebym nie zrobił byka?

#6 Gutaj

    I Can Fly

  • Power User

Reputacja: 161
Profesjonalista

  • Postów:667
  • GG:
  • Steam:steam
  • Imię:Patrick
  • Lokalizacja:Warszawa
Offline

Napisano 05.07.2010 20:20

if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/501.0)/3.0)))

  • +
  • -
  • 1

#7 WarninG.

    Profesjonalista

  • Zbanowany

Reputacja: 11
Początkujący

  • Postów:203
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 05.07.2010 20:23

Dziękuję leci +

#8 *Piko*

    Życzliwy

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:21
  • GG:
  • Steam:steam
  • Lokalizacja:Krosno
Offline

Napisano 28.09.2010 14:36

Cześc. Troszkę tego nie rozumiem, czy mógł by mi ktoś pomóć? Na moim serwerze jest 4001lvl.
  • +
  • -
  • 0
[NewCodMod] 87.98.237.7:27018Dołączona grafika
[ProCodMod] 31.186.84.134:27044Dołączona grafika

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.10.2010 20:47

Cześc. Troszkę tego nie rozumiem, czy mógł by mi ktoś pomóć? Na moim serwerze jest 4001lvl.

Czyli zamiast
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/40.0)/3.0)))

dajesz
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/2001.0)/3.0)))

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

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:26
  • Imię:Michal
  • Lokalizacja:tychy
Offline

Napisano 07.12.2010 08:07

A co jezeli mam max lvl 401 i kod mam taki :
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/201.0)/3.0)))

a exp spada ciagle?
  • +
  • -
  • 0

#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 14.12.2010 21:28

Znajdź:

if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/40.0)/3.0)))

Zamień na:
[uwaga='Vert']W miejsce X wpisujemy twój [ MAX_LEVEL/2 + 1 ] np. dla 100 lvl X = 51, 200 X=101, 1000 X= 501
[/uwaga]
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/X.0)/3.0)))

Tyle czasu i chyba nikt nie zauważył, że ten sposób jest zły, dlaczego? A no załóżmy, że max lvl to 100, cvar diablo_xpbonus = 20 i teraz ktoś z 1 lvl zabił kogoś z 100 (czyli różnica = 99 lvl), więc po obliczeniu xp_award wyjdzie tylko 5.54621849, a przy różnicy 70 lvl - 41.8300654, no a teraz przy różnicy 50 - 48.5527544, czyli najwięcej (jak ktoś chce to tutaj może się pobawić obliczeniami). Teraz jakby nie patrzeć poradnik powinien wyglądać tak
Znajdź
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/40.0)/3.0)))

zamień na
W miejsce X wpisujemy MAX_LEVEL+1 np. dla 100 lvl - X=101, 200 lvl - X=201, 1000 lvl - X=1001
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/X.0)/3.0)))

Użytkownik sebul edytował ten post 10.02.2011 14:35

  • +
  • -
  • 2

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


#12 foch.^

    Banned

  • Zbanowany

Reputacja: -3
Nowy

  • Postów:19
  • Imię:Jakub
  • Lokalizacja:Wrocław
Offline

Napisano 22.01.2011 19:17

a pomożecie z 401 lvl? bo nie chcę też zrobić byka?

#13 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 22.01.2011 19:41

a pomożecie z 401 lvl? bo nie chcę też zrobić byka?

Czyli pewnie chodzi Ci o 400.
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/401.0)/3.0)))

Użytkownik sebul edytował ten post 22.01.2011 19:55

  • +
  • -
  • 0

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


#14 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

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

Napisano 23.01.2011 19:12

a pomożecie z 401 lvl? bo nie chcę też zrobić byka?

Czyli pewnie chodzi Ci o 400.
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/401.0)/3.0)))



prędzej będzie
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/201.0)/3.0)))


Mi tak bynajmniej działa
  • +
  • -
  • 0

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

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#15 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.01.2011 19:14

a pomożecie z 401 lvl? bo nie chcę też zrobić byka?

Czyli pewnie chodzi Ci o 400.
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/401.0)/3.0)))



prędzej będzie
if(more_lvl>0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/201.0)/3.0)))


Mi tak bynajmniej działa

A teraz pytanie... Czytałeś to -> [5.8d/5.9l] Odejmowanie doświadczenia za zabicie gracza z zbyt dużą różnicą poziomu - Nieoficjalny polski support AMX Mod X ?? Bo działać też na pewno będzie działać, ale działanie tego będzie nie takie jak trzeba, co zresztą jest wytłumaczone w tamtym poście.

Użytkownik sebul edytował ten post 23.01.2011 19:18

  • +
  • -
  • 0

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


#16 FreZZy

    Guru

  • Zbanowany

Reputacja: 210
Profesjonalista

  • Postów:716
  • GG:
  • Imię:Paweł
  • Lokalizacja:Wwa
Offline

Napisano 23.01.2011 21:44

sebul, koksie, to chyba ten sam temat co dałeś do niego linka nie?

#17 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.01.2011 21:51

sebul, koksie, to chyba ten sam temat co dałeś do niego linka nie?

Dałem link do mojego posta? :o I nie jestem koksem...
  • +
  • -
  • 0

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


#18 Vertricus

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 25.01.2011 21:55

Dziwne bo dla twoich danych, wychodzi co innego :>
Google
Google


(get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/401.0)/3.0))

Od czego zależy znak?
(get_cvar_num("diablo_xpbonus")/7) > 0 przy założeniu że ktoś umie używać cvarów

(more_lvl*((2.0-more_lvl/401.0)/3.0)) Czy to jest większe od zera? hmm
more_lvl > 0 gwarantuje nam to ten if -> "if(more_lvl>0) "

zostaje:
(2.0-more_lvl/401.0)/3.0 dzielenie przed dodatnią ni jak bawi się ze znakiem :]

zostaje:

2.0-more_lvl/401.0

za x daje szukaną a za more_level naciągniem do max_level (choć i tak powinno być mniejsze o 1 bo startujemy z 1 levelem :))
2.0-max_level/x > 0
-max_level/x > -2.0
-max_level > -2.0x
-max_level/-2.0 < x
max_level/2.0 < x

Myślę że nic nie sknociłem wychodzi że X musi być większy od maksymalnej różnicy poziomów podzielonej przez dwa więc smutno mi za ciebie :F


a co do samego tematu i to że komuś dalej ucieka level :>
Zainteresujcie sie jak duże macie cvary na bonus :) bo powodem tego będzie to: :**
else if(more_lvl<-50)xp_award -= get_cvar_num("diablo_xpbonus")*(2/3)
else if(more_lvl<-40)xp_award -= get_cvar_num("diablo_xpbonus")/2
else if(more_lvl<-30)xp_award -= get_cvar_num("diablo_xpbonus")/3
else if(more_lvl<-20)xp_award -= get_cvar_num("diablo_xpbonus")/4
else if(more_lvl<-10)xp_award -= get_cvar_num("diablo_xpbonus")/7
  • +
  • -
  • 0

#19 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 26.01.2011 00:43

Na początek nie wiem za co ten minus wcześniej, podałem link do swojego postu z tego tematu, a ktoś ma jakieś do mnie aluzje z tym "koksem" i że niby podaje link do tego samego tematu (a tak jak napisałem wcześniej, to jest link do postu z tego tematu, zresztą mojego postu), a ja odpisując co to za link dostaje za to minusa... eh ;/ Ale mniejsza z tym, minus czy plus mi nie robi to różnicy, ale chodzi o sam fakt, niby za co...?

A co do postu wyżej.
new more_lvl=player_lvl[victim_id]-player_lvl[killer_id]

more_lvl to jak widać, jest to różnica z lvl ofiary i zabójcy, czyli jeśli zabójca ma mniejszy lvl, to more_lvl > 0, czyli warunek "if(more_lvl>0)" zostanie spełniony i zabójca dostaje bonus w postaci expa. Lecimy dalej.
floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/101.0)/3.0)))

Tak jak pisałem, załóżmy, że cvar za zabicie jest równy 20, max lvl 100, a ofiara będzie miała 100 lvl, natomiast zabójca 10 lvl (90 różnicy).
No to obliczamy takie działanie -> (20/7)*(90*((2-90/101)/3)) = 95.049505 dostajemy +95 expa
A teraz załóżmy, że ofiara ma 80 lvl, a zabójca 30 (50 różnicy), czyli działanie będzie takie -> (20/7)*(50*((2-50/101)/3)) = 71.6643093 dostajemy +72 expa
i teraz ofiara - 60, a zabójca - 50 (10 różnicy) -> (20/7)*(10*((2-10/101)/3)) = 18.1046676 +18 expa
A teraz kolejno takie same założenia, ale z tym co masz u siebie w tutku
1. (20/7)*(90*((2-90/51)/3)) = 20.1680672 +20 expa, za zabicie kogoś kto ma o 90 lvl więcej
2. (20/7)*(50*((2-50/51)/3)) = 48.5527544 +49 expa, za zabicie kogoś kto ma o 50 lvl więcej
3. (20/7)*(10*((2-10/51)/3)) = 17.1802054 +17 expa, za zabicie kogoś kto ma o 10 lvl więcej
No to teraz niech każdy porówna sam oba przypadki. Przypominam, że te wszystkie wartości, później dodaje się do podstawowej wartości expa, który dostaje się za zabójstwo, w przypadku mniejszego lvl zabójcy (more_lvl > 0), dodaje nam dodatkowo exp, a przy większym lvl zabójcy (more_lvl < 0), odejmuje nam exp (ale te wartości już inaczej są liczone). Nie chce się spierać, ale według mnie sytuacja jest bardzo jasna i to chyba ja mam rację...

Użytkownik sebul edytował ten post 26.01.2011 02:01

  • +
  • -
  • 0

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


#20 JakubL

    Zaawansowany

  • Zbanowany

Reputacja: 11
Początkujący

  • Postów:147
  • Imię:Jakub
  • Lokalizacja:Poland?
Offline

Napisano 30.01.2011 10:07

Czyli co w końcu przy 201lvl mam zamienić bo po przeczytaniu tematu już nic nie rozumiem :(





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