←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Wiekszy lvl = więcej expa

radek_b11's Photo radek_b11 13.03.2012

Witam

Jak zrobić że im większy lvl tym więcej expa?
Quote

  • +
  • -
Droso's Photo Droso 13.03.2012

Napisz o co dokladnie chodzi.
Tym więcej expa (co?)
Quote

WiWaldi:*'s Photo WiWaldi:* 13.03.2012

Mu chodzi o to że jak się zwiększa level to dostaje więcej exp'a .
Mianowicie jeśli dobrze rozumiem chodzi o to że jak da np
cod_killxp "300"

To jak będzie miał większy lvl to killxp mu też się podniesie .

Wiem bo napisał
Jak zrobić że im większy lvl tym więcej expa? 



Więc się nie odzywa jak nie potrafisz czytać .
Edited by WiWaldi:*, 13.03.2012 10:50.
Quote

  • +
  • -
Enson's Photo Enson 13.03.2012

Mu chodzi o to że jak się zwiększa level to dostaje więcej exp'a .
Mianowicie jeśli dobrze rozumiem chodzi o to że jak da np

cod_killxp "300"

To jak będzie miał większy lvl to killxp mu też się podniesie .


skad mozesz wiedziec o co mu chodzi, niech sie autor tematu wypowie a nie ze ktos bedzie robil w ciemno prace
Quote

radek_b11's Photo radek_b11 13.03.2012

Przykład:

1 lvl - 5000k
250 lvl - 5500k
500 lvl - 1000k
itd
Quote

  • +
  • -
Enson's Photo Enson 13.03.2012

Tylko ze w tym momencie exp za zabicie na cod modzie jest rozliczany w ten sposob:
(lvl przeciwnika - twoj lvl) * (ustawiony_exp_na_serwie/10) = tyle expa dostajesz za zabicie

wiec jezeli ty bys chcial ten podzial lvlowy na expa to jak mialby byc rozliczany exp na serwie? w ten sposob czy jakis inny?

bo jezeli w ten sam to strasznie szybko bedziesz mial nabijane lvl na serwie xP
Edited by Enson, 13.03.2012 11:01.
Quote

radek_b11's Photo radek_b11 13.03.2012

Serwer jest 5001 lvl Fast Exp

To zależy czy szybko :P

Jeżeli standard to 9800 expa
więc załóżmy że różnica była by ok 2500k czyli mniej więcej 12300k max i to tak jak rozpisałeś byłoby :)
Quote

  • +
  • -
Enson's Photo Enson 14.03.2012

nad plugin init dodajesz:
new  cvar_doswiadczenie_za_fraga1,
cvar_doswiadczenie_za_fraga2,
cvar_doswiadczenie_za_fraga3,
cvar_doswiadczenie_za_fraga4,
cvar_doswiadczenie_za_fraga5;
new cvar_przedzialn1,
cvar_przedzialn2,
cvar_przedzialn3,
cvar_przedzialn4,
cvar_przedzialn5;
new cvar_przedzialx1,
cvar_przedzialx2,
cvar_przedzialx3,
cvar_przedzialx4,
cvar_przedzialx5;


do plugin_init:
 cvar_doswiadczenie_za_fraga1 = register_cvar("cod_killxp1", "10");//ile expa w pirewszym przedziale
cvar_doswiadczenie_za_fraga2 = register_cvar("cod_killxp2", "20");//ile expa w drugim przedziale
cvar_doswiadczenie_za_fraga3 = register_cvar("cod_killxp3", "30");//ile expa w trzecim przedziale
cvar_doswiadczenie_za_fraga4 = register_cvar("cod_killxp4", "40");//ile expa w czwartym przedziale
cvar_doswiadczenie_za_fraga5 = register_cvar("cod_killxp5", "50");//ile expa w piatym przedziale

cvar_przedzialn1 = register_cvar("cod_przedzialn1", "0");//pierwszy przedzial minimum
cvar_przedzialn2 = register_cvar("cod_przedzialn1", "10");//drugi przedzial minimum
cvar_przedzialn3 = register_cvar("cod_przedzialn1", "20");//trzeci przedzial minimum
cvar_przedzialn4 = register_cvar("cod_przedzialn1", "30");//czwarty przedzial minimum
cvar_przedzialn5 = register_cvar("cod_przedzialn1", "40");//piaty przedzial minimum

cvar_przedzialx1 = register_cvar("cod_przedzialx1", "10");//pierwszy przedzial maximum
cvar_przedzialx2 = register_cvar("cod_przedzialx2", "20");//drugi przedzial maximum
cvar_przedzialx3 = register_cvar("cod_przedzialx3", "30");//trzeci przedzial maximum
cvar_przedzialx4 = register_cvar("cod_przedzialx4", "40");//czwarty przedzial maximum
cvar_przedzialx5 = register_cvar("cod_przedzialx5", "50");//piaty przedzial maximum


Nastepnie szukasz public SmiercGraczaPost i w zamian zawartosci tej funkcji dajesz to:
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return HAM_IGNORED;

if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new doswiadczenie_za_fraga1 = get_pcvar_num(cvar_doswiadczenie_za_fraga1);
new doswiadczenie_za_fraga2 = get_pcvar_num(cvar_doswiadczenie_za_fraga2);
new doswiadczenie_za_fraga3 = get_pcvar_num(cvar_doswiadczenie_za_fraga3);
new doswiadczenie_za_fraga4 = get_pcvar_num(cvar_doswiadczenie_za_fraga4);
new doswiadczenie_za_fraga5 = get_pcvar_num(cvar_doswiadczenie_za_fraga5);

new nowe_doswiadczenie1 = get_pcvar_num(cvar_doswiadczenie_za_fraga1);
new nowe_doswiadczenie2 = get_pcvar_num(cvar_doswiadczenie_za_fraga2);
new nowe_doswiadczenie3 = get_pcvar_num(cvar_doswiadczenie_za_fraga3);
new nowe_doswiadczenie4 = get_pcvar_num(cvar_doswiadczenie_za_fraga4);
new nowe_doswiadczenie5 = get_pcvar_num(cvar_doswiadczenie_za_fraga5);

new p_max1 = get_pcvar_num(cvar_przedzialx1);
new p_max2 = get_pcvar_num(cvar_przedzialx2);
new p_max3 = get_pcvar_num(cvar_przedzialx3);
new p_max4 = get_pcvar_num(cvar_przedzialx4);
new p_max5 = get_pcvar_num(cvar_przedzialx5);

new p_min1 = get_pcvar_num(cvar_przedzialn1);
new p_min2 = get_pcvar_num(cvar_przedzialn2);
new p_min3 = get_pcvar_num(cvar_przedzialn3);
new p_min4 = get_pcvar_num(cvar_przedzialn4);
new p_min5 = get_pcvar_num(cvar_przedzialn5);

if (poziom_gracza[attacker] >= p_min1 && poziom_gracza[attacker] < p_max1)
{
if (poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie1 += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_fraga1/10);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie1;

}

if (poziom_gracza[attacker] >= p_min2 && poziom_gracza[attacker] <p_max2)
{
if (poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie2 += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_fraga2/10);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie2;
}

if (poziom_gracza[attacker] >= p_min3 && poziom_gracza[attacker] < p_max3)
{
if (poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie3 += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_fraga3/10);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie3;

}

if (poziom_gracza[attacker] >= p_min4 && poziom_gracza[attacker] < p_max4)
{
if (poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie4 += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_fraga4/10);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie4;
}

if (poziom_gracza[attacker] >= p_min5 && poziom_gracza[attacker] <= p_max5)
{
if (poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie5 += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_fraga5/10);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie5;
}

if(!perk_gracza[attacker])
UstawPerk(attacker, -1, -1, 1);
}

SprawdzPoziom(attacker);

return HAM_IGNORED;
}


wedlug tych ustawionych cvarow aktualnie ustawione jest:
0-9lvl = x10 exp
10-19lvl = x20 exp
20-29lvl = x30 exp
30-39lvl = x40 exp
40-49lvl = x50 exp

Cala ta funkcja byla przeze mnie testowana i w 100% dziala.

Nowsza wersje lepiej optymalna opublikuje jak skoncze robic i testowac.

Ustaw sobie wedlug swoich upodoban

Mysle ze sie przyda to wielu osobom ;P bo sporo pytalo juz o cos takiego ^^
Edited by Enson, 14.03.2012 00:47.
Quote

  • +
  • -
HaDeS From HELL's Photo HaDeS From HELL 14.03.2012

Nooo przyda się ale ten kod jest tragiczny moim zdaniem.

I nie wiem czy dobrze zrozumiałem chcesz mieć takie coś

1 lvl - odstaje 5500 k za zabójstwo
100 lvl - dostaje 5000 k za zabójstwo
a 500 lvl - dostaje 1 k za zabójstwo ?

jak tak ma być jak ja rozpisałem to Ensona kod jest w ogóle inny jak być powinien
Edited by Mr.Szybcioor, 14.03.2012 08:27.
Quote

radek_b11's Photo radek_b11 14.03.2012

od 1 do 250lvl 5000k expa
od 250 do 500 lvl 6000k expa
itd
Quote

  • +
  • -
Enson's Photo Enson 14.03.2012

Nooo przyda się ale ten kod jest tragiczny moim zdaniem.

I nie wiem czy dobrze zrozumiałem chcesz mieć takie coś

1 lvl - odstaje 5500 k za zabójstwo
100 lvl - dostaje 5000 k za zabójstwo
a 500 lvl - dostaje 1 k za zabójstwo ?

jak tak ma być jak ja rozpisałem to Ensona kod jest w ogóle inny jak być powinien


na pw mi autor tematu napisal ze chce miec przedzialy lvlowe. Od X do Y lvla ma byc Z exp i kilka przedzialow. Wiec mu zrobilem w taki sposob jak chcial -.^ cvary ma wiec wytarczy ze sobie edytuje wartosci

a kod jest chaotyczny przeciez napisalem to w poscie ze ta wersja kodu jest malo optymalna -.-
Quote

  • +
  • -
HaDeS From HELL's Photo HaDeS From HELL 14.03.2012

Radek daj mi dokładną rozpiske ile ma się dostawać expa na danym lvl to ci to zrobię.
Quote

radek_b11's Photo radek_b11 14.03.2012

1-250 5000k
250-500 6000k
500-1000 7000k
1000-2000 8000k
2000-3000 9000k
3000-4000 10000k
5000 11000k
Quote

  • +
  • -
radim's Photo radim 15.03.2012

Spróbuj w ten sposób. Znajdź linijkę odpowiadajacą za dostawanie expa i zmień ją na:
doswiadczenie_gracza[id] += poziom_gracza[id]+get_pcvar_num(cod_killxp);
Np. jak zabijesz kogoś z poziomem 25 to dostaniesz 300 expa + 25 czyli tyle ile wynosi jego lvl. Taki system działa w Pokemodzie.
Moim zdaniem to trochę za mało więc proponował bym zrobić o tak:
doswiadczenie_gracza[id] += poziom_gracza[id]*3+get_pcvar_num(cod_killxp);
Dostajemy wtedy 300 + 75(25*3) exp'a. Nie wiem czy zadziała, ale powinno.
Quote

radek_b11's Photo radek_b11 15.03.2012

a jak ktoś będzie miał 2500lvl to lepiej poczekam aż kolega napisze kod z exp :)
Quote

  • +
  • -
radim's Photo radim 15.03.2012

Wystarczy zastosować funkcję "if" xD
Edited by radim, 15.03.2012 21:14.
Quote

radek_b11's Photo radek_b11 20.03.2012

zrobiłeś ?
Quote