←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Dodawanie nowych statystyk

Zaszka - zdjęcie Zaszka 23.11.2010

Witaj dzisiaj chcialem przedstawic wam tutorial Jak zrobic nowa statystyke
Statystyka moza byc dowolna moze robic co tylko chcecie ja zrobia taka by dawala 2pkt pancerza za 1 pkt statystyki czyli za 50 pkt statystyki bedzie 100 pkt armoru
A jesli mamy juz kamizelke albo np 200 arma to ciagle bedzie wiecej 0 x pkt


To zaczynamy:
Spoiler


Mam nadzieje ze pomoglem proszę komentowac mi dziala ;d
Użytkownik Zaszka edytował ten post 28.04.2011 11:55
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 23.11.2010

No za sam schemat + ;] Tylko proponowałbym jeszcze bardziej wyraziście to napisać, bo teraz linijki kodu zlewają się z komentarzami do kodu.
Odpowiedz

OcEt - zdjęcie OcEt 23.11.2010

Gosciu Kocham Cie.Tego Szukalem
Odpowiedz

FreZZy - zdjęcie FreZZy 23.11.2010

zrob to w sma i bedzie gites
Odpowiedz

Zaszka - zdjęcie Zaszka 23.11.2010

zrob to w sma i bedzie gites


Jak mam to w sma zrobic ? chcesz gotowca ?
Odpowiedz

FreZZy - zdjęcie FreZZy 23.11.2010

zamiast wrzucać w "spojler" wrzuć to w "sma":
[code=auto:0]
(tekst)[sma][/code]

[i]Dodano 23 listopad 2010 - 19:06:[/i]
szukasz
[sma]new player_agility[33][/sma]
dodajesz pod:
[sma]new player_armor[33][/sma]
W [b]public SaveXP[/b]
szukasz
[sma],`agi`='%i'[/sma]
Dodajesz po tym (bez spacji)
[sma],`arm`='%i'[/sma]
szukasz
[sma],player_agility[id][/sma]
dodajesz po tym:
[sma],player_armor[id][/sma]
Robisz to 3 razy w [b]public save xp[/b]


jak już tamte zmieniłeś, to szukasz
[sma]player_agility[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"agi"))[/sma]
dodajesz pod
[sma]
player_armor[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"arm"))[/sma]
szukasz
[sma]-player_agility[id][/sma]
dodajesz po tym
[sma]-player_armor[id][/sma]
szukasz
[sma]player_agility[id] = 0[/sma]
dodajesz pod
[sma]player_armor[id] = 0[/sma]
w [b]reset hud[/b]
szukasz
[sma]+player_agility[id][/sma]
dodajesz pod tym
[sma]+player_armor[id][/sma]
szukasz w [b]skill tree[/b]
[sma]^n\w\r4. \zrecznosc ( %i )[/sma]
albo
[sma]^n\w\r4. \wytrzymalosc ( %i )[/sma]
dodajesz po tym
[sma]^n\w\r5. \pancerz ( %i )[/sma]
szukasz
[sma],player_dextery[id][/sma]
dodajesz po tym
[sma],player_armor[id][/sma]
szukasz
[sma]case 3:
{
if (player_dextery[id]<max_skill){
player_point[id]-=2
player_dextery[id]+=2
set_speedchange(id)
}
else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}[/sma]
Dodajesz po
[sma]case 4:
{
if (player_armor[id]<50){
player_point[id]-=1
player_armor[id]+=1
set_armorchange(id)
}
else client_print(id,print_center,"Maksymalny poziom pancerza osiagniety")
}[/sma]
szukasz [u]dwa razy[/u]
[sma]set_speedchange(id)[/sma]
dodajesz pod
[sma]set_armorchange(id)[/sma]
dodajesz na koncu całego .sma:
[sma]public set_armorchange(id)
{
if(is_user_alive(id))
{
new armo = get_user_armor(id)
new armorr = player_armor[id]*2
if (armo>99)
{
set_user_armor(id,get_user_armor(id)+armorr)
}
set_user_armor(id,armorr)

}
}[/sma]

poprawiłem literówki, na grubo zaznaczone frazy do wyszukania, podkreślone te, które trzeba zrobić kilka razy.

I wstaiwłem TAB'y gdzieniegdzie (nie dziękujcie ;P )

PS (od tłumacza): drogi autorze, zapomniałeś wspomnieć, że trzeba ustawić, żeby co lvl dostawał 2,5 pkt... -.- To ja radze co 2 lvle 5 pkt

po chwili jakże głębokiego namysłu proponuję tylko zmienić max lvl na wyższy, nie zmieniając statystyk
[size="3"]JAK?[/size]
Pomoc poniżej ;)

szukamy
[sma]new LevelXP[101][/sma]
[u]zmieniamy[/u] na
[sma]new LevelXP[151][/sma]
tuż obok mamy tabelkę z XP, ja mam tak:
[sma]new LevelXP[401] = {0, 50, 125, 215, 323, 452, 606, 790, 1010, 1274, 1590, 1969, 2423, 2967, 3619, 4401, 5339, 6370, 7504, 8694, /* 1-20 */
9943, 11254, 12604, 13994, 15425, 16898, 18415, 19977, 21585, 23241, 24946, 26702, 28510, 30372, 32289, 34263, 36296, 38389, 40544, 42763, /* 21-40 */
45048, 47401, 49824, 52319, 54888, 57534, 60259, 63065, 65955, 68931, 71996, 75152, 78402, 81749, 85196, 88746, 92402, 96167, 100044, 104037, /* 41-60 */
108109, 112303, 116622, 121070, 125651, 130369, 135228, 140232, 145386, 150694, 156161, 161792, 167591, 173563, 179714, 186049, 192574, 199294, 206215, 213343, /* 61-80 */
220684, 228245, 236032, 244052, 252312, 260819, 269581, 278605, 287899, 297471, 307330, 317484, 327942, 338713, 349807, 361233, 373001, 385122, 397606, 410464, 423707 /* 81-101 */ }[/sma]
i ja dodaje pod koniec tak (jedną linijkę powtórzyłem oraz przeniosłem nawias "}" na sam koniec):
[sma]220684, 228245, 236032, 244052, 252312, 260819, 269581, 278605, 287899, 297471, 307330, 317484, 327942, 338713, 349807, 361233, 373001, 385122, 397606, 410464, 423707 /* 81-101 */
451396, 465866, 480770, 496121, 511932, 528217, 544990, 562266, 580060, 598387, 617263, 636705, 656730, 677355, 698598, 720478, 743014, 766226, /* 102-120 */
790134, 814759, 840122, 866245, 893151, 920864, 949408, 978808, 1009090, 1040280, 1071781, 1103597, 1135731, 1168186, 1200965, 1234071, 1267508, 1301279, 1335387, 1369836, /* 121-140 */
1404629, 1439769, 1475260, 1511105, 1547308, 1583873, 1620803, 1658102, 1695773, 1733820, 1772247 /* 121-151 */}

jak ktoś woli własną tabelke XP sobie stworzyć to radzę zajrzeć TU: Generate Exp Table PHP i wpisać speed coś koło 4-5 a lvl 151

no i chyba tyle, poprawcie mnie jak się myle O:)
Użytkownik FreZZy edytował ten post 02.01.2011 09:39
Odpowiedz

  • +
  • -
Damex - zdjęcie Damex 24.11.2010

set_speedchange(id)

Możesz dać bardziej szczegółowo ?? ... Bo mi to szuka po pare razy ...
Odpowiedz

Zaszka - zdjęcie Zaszka 24.11.2010

Ej a jak dodac z Gravitacja niewiem zrbilem tak jak z armor tylko zamiast armor dalem w ALL gravity HELP!


[sma]
public set_gravitychange(id)
{
if(is_user_alive(id))
{
new gravity = get_user_gravity(id)
new gravityy = player_gravity[id]/200 // To bedzie na 50pkt statystyki 0.25 to mniej niz ninja ;d jezeli bedzie /100 to 0.5 jezeli /50 to 1.0 ustawiasz ile chcesz kalkulator nie boli ;d
if (gravity>0.9)
{
set_user_gravity(id,get_user_gravity(id)+gravityy)
}
set_user_gravity(id, gravityy)

}
}
[sma]
Odpowiedz

FreZZy - zdjęcie FreZZy 24.11.2010

Gravity:

public set_gravitychange(id)
{
if(is_user_alive(id))
{
new grawitacja = get_user_gravity(id)
new grawitacja2 = player_gravity[id]/200
if (grawitacja>0.9) set_user_gravity(id,get_user_gravity(id)+grawitacja2)
set_user_gravity(id, grawitacja)
}
}



set_speedchange(id)

Możesz dać bardziej szczegółowo ?? ... Bo mi to szuka po pare razy ...


To znajdź wszystkie jakie są i dodaj pod tym
set_armorchange(id)

oczywiście chodzi mi o wyrazy wolne (czyli takie, króre nie tworzą funkcji) np.
public set_speedchange(id)

to jest zupełnie inna bajka, i to trza w spokoju zostawić
Użytkownik FreZZy edytował ten post 02.01.2011 09:43
Odpowiedz

OcEt - zdjęcie OcEt 25.11.2010

Dobra Dziex ale jak dodac z inv albo z money?

Dodano 25 listopad 2010 - 14:48:
No dobra dodalem to gravity ale niedziala bledy wywala macie


frakcjexd.sma(12499) : error 021: symbol already defined: "set_gravitychange"
frakcjexd.sma(12503) : warning 213: tag mismatch
frakcjexd.sma(12508) : warning 213: tag mismatch
Odpowiedz

Zaszka - zdjęcie Zaszka 25.11.2010

Ba! bo podana nazwa gravitychange jest uzyta zastap np set_grawitacjachange(id)
wszystko dobrze tylko nazwe funkcji zmien player_b_inv i dodaj nowe player_c_inv


a np inv to musisz nowa funkcje inv zrobic bo jak dasz player_b_inv[id] to ci sie skasuje jak item wywalisz chyba ?

public set_invchange(id)
{
if(is_user_alive(id))
{
new invi = player_c_inv[id]
new invii = player_inv[id]
new inviii = 255-player_inv[id]
if (invii>0)
{
player_c_inv(id, inviii)
}

//to bedzie 205 widocznosci na 50 skila dasz 200 i bedzie 55 widocznosci za kazdy skill 1 widocznosci mniej
}
}

Dodano 25 listopad 2010 - 15:58:

Ba! bo podana nazwa gravitychange jest uzyta zastap np set_grawitacjachange(id)
wszystko dobrze tylko nazwe funkcji zmien player_b_inv i dodaj nowe player_c_inv


a np inv to musisz nowa funkcje inv zrobic bo jak dasz player_b_inv[id] to ci sie skasuje jak item wywalisz chyba ?

public set_invchange(id)
{
if(is_user_alive(id))
{
new invi = player_c_inv[id]
new invii = player_inv[id]
new inviii = 255-player_inv[id]
if (invii>0)
{
player_c_inv(id, inviii)
}

//to bedzie 205 widocznosci na 50 skila dasz 200 i bedzie 55 widocznosci za kazdy skill 1 widocznosci mniej
}
}


To sama matma z money sprawdz sobie jak robie reszte powiedzmy ze Ci zrobie juz bo mnie wkurzaja ciagle pytania ;d...
Użytkownik Zaszka edytował ten post 25.11.2010 15:56
Odpowiedz

  • +
  • -
Damex - zdjęcie Damex 27.11.2010

Macie nie będę cham ...

Może komuś się przyda
z Money "Kasa"
public set_moneychange(id)
{
        if(is_user_alive(id))
        {
                new mon = cs_get_user_money(id)
                new moneyy = player_money[id]*250
                if (mon>99)
                {
                        cs_set_user_money(id,cs_get_user_money(id)+moneyy)
                }
                cs_set_user_money(id,moneyy)

        }

}

Dodano 28 listopad 2010 - 13:36:
Ej Umie ktoś do tego stworzyć publicka jak tam wyżej ?

player_b_theif
albo do tego
player_theif
Użytkownik Damex edytował ten post 27.11.2010 16:42
Odpowiedz

Zaszka - zdjęcie Zaszka 29.11.2010

Witaj ponownie.

Czy wam sie exp zapisuje bo ostatnio troche pogralem na lanie z botami do next mapy i mi sie exp nie zapisal jakies errory z sql'em

czy wy macie to samo ?
Odpowiedz

  • +
  • -
Juma - zdjęcie Juma 29.11.2010

Ulala.. Ładnie, przyda się nie jednemu :) Plusik.
Odpowiedz

szczepaneto - zdjęcie szczepaneto 29.11.2010

bo nie ma bazy danych ;P ale to nie od tego temat

Dodano 29 listopad 2010 - 19:59:
mi gravity nie działa :| co trzeba jeszcze zmienić

Dodano 29 listopad 2010 - 20:43:
powiem tak kasa się nie kończy jak dasz w nią punkty niewidzialność nie wiem jak zrobić a gravity poprostu nie działa skacze na taką sama wysokość
Odpowiedz

GoldeN - zdjęcie GoldeN 29.11.2010

public set_moneychange(id)
{
if(is_user_alive(id))
{
new mon = cs_get_user_money(id)
new moneyy = player_money[id]*250
if (mon>99)
{
cs_set_user_money(id,cs_get_user_money(id)+moneyy)
}
cs_set_user_money(id,moneyy)

}

}


A nie lepiej po prostu:

        cs_set_user_money(id, cs_get_user_money(id)+player_money[id]*25, 1)

if(cs_get_user_money(id) >= 16000)
cs_set_user_money(id, 16000, 1)


i dodać w jakimś evencie startu rundy? -.-
Odpowiedz

  • +
  • -
Damex - zdjęcie Damex 02.12.2010

cs_set_user_money(id, cs_get_user_money(id)+player_money[id]*25, 1)

        if(cs_get_user_money(id) >= 16000)
                cs_set_user_money(id, 16000, 1)

Tak jak ty tutej podałeś to jest wszystko źle bo dostajesz od razu 16000 na start rundy ... i te player money nic nam nie daje ;)
Odpowiedz

szczepaneto - zdjęcie szczepaneto 02.12.2010

mam wielką prośbę można by było podać 2 przykład np niewidzialność
Odpowiedz

  • +
  • -
NiFreZ - zdjęcie NiFreZ 12.12.2010

mam wielką prośbę można by było podać 2 przykład np niewidzialność



Tez proszę ;]
Odpowiedz

szczepaneto - zdjęcie szczepaneto 13.12.2010

to jak poda ktoś 2 przykład ^^

Dodano 13 grudzień 2010 - 21:09:
refresh bd plusiki :)
Odpowiedz