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
PokeMod

[Poradnik PokeMod] Zmiana ilości dostawanego EXP'a

pokemod

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

#1 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 30.07.2012 14:13

Witam.
Z racji takiej, że jest coraz więcej tematów związanym z EXP'em na pokemodzie, postanowiłem napisać oto ten poradnik. Z samego tematu możemy się już dowiedzieć o czym będzie ten tutorial: wszystko na temat dostawanego exp'a.

Do roboty ;)

1.
Pierwszym i jedynym plikiem, który będziemy edytować jest XP.inl. Znajdziemy go w scripting>pokemon>xp.inl. Sama nazwa tego pliku wskazuję nam, że w nim jest wszystko co związane z exp'em. Po otwarciu go szukamy funkcji:

KillXP(attacker, victim)

Cała wygląda tak:

KillXP(attacker, victim)
{
if(attacker==victim)
return
new xp_to_give = PlayersLevel(victim)
if( Pokemod_FF(victim, attacker) ){
GiveXP(attacker, PlayersActive[attacker], -1*xp_to_give)
poke_printlang(attacker,"POKEMOD_KILLMATE", xp_to_give)
}
else
GiveXP(attacker, PlayersActive[attacker], xp_to_give)
}

2. Teraz zajmiemy się jej dokładnym opisem (co za co odpowiada)
a)


if(attacker==victim)
return

attacker - id atakującego
victim - id ofiary
Warunek sprawdza czy id atakującego jest taie same jak id ofiary, jeżeli tak to funkcja nie zostanie wykonana.
b.)

new xp_to_give = PlayersLevel(victim)

Zmienna pobierająca LEVEL aktualnie używającego pokemona ofiary
c)

if( Pokemod_FF(victim, attacker) )

Warunek sprawdzający czy nie nastąpił TeamKill. Jeżeli to nastąpi to wydarzy się wszystko co pod nim aż do:

else

d)


GiveXP(attacker, PlayersActive[attacker], -1*xp_to_give)

GiveXP - funkcja od dawania exp'a
attacker - id, któremu ma dać exp'a
PlayersActive[attacker] - pokemon (w tym przypadku aktulanie używany przez gracza)
-1*xp_to_give - -1 pomnożone przez level pokemona

poke_printlang(attacker,"POKEMOD_KILLMATE", xp_to_give)

Funkjca, która powiadamia na say'u o tym, że ktoś zabił kolegę z drużyny.

W momencie jak ktoś zabiję swojego kolegę z drużyny, zostanie o tym powiadomiony na say'u oraz zostanie mu odięty exp, ile ? -1*xp_to_give czyli -1*level aktualnie używającego pokemona gracza czyli zawsze to będzie level pokemona tylko, że na minusie.

e)

else

Dokładny opis: http://amxx.pl/topic.....-sluzy/<br />[

GiveXP(attacker, PlayersActive[attacker], xp_to_give)

GiveXP - funkcja od dawania exp'a
attacker - id, któremu ma dać exp'a
PlayersActive[attacker] - pokemon (w tym przypadku aktulanie używany przez gracza)
xp_to_give - wytłumaczone w punkcie b, zmienna pobierająca level pokemona


3. Zmiana ilości dostawanego EXP'a
W pokemodzie, dostawany exp bazuje na level'u pokemona zabitego gracza, czyli jak zabijemy gracza, który aktualnie gra Charmanderem 5 level to dostaniemy za niego 5 exp'a. Ja na swoim pokemodzie zawsze robiłem tak, że mnożyłem przez 2 i dostawało się 2 razy więcej expa, czyli jak zabiłem Charmandera 5 level to dostałem 10 exp'a. Polecam ten sposób, a jak to zrobić, już tłumaczę. W tej funkcji szukamy lininjki tuż po "else":

GiveXP(attacker, PlayersActive[attacker], xp_to_give)

Wystarczy po xp_to_give dodać *2 (xp_to_give*2) czyli całość ma wyglądać tak:

GiveXP(attacker, PlayersActive[attacker], xp_to_give*2)

A cała funkcja o tak:

KillXP(attacker, victim)
{
if(attacker==victim)
return
new xp_to_give = PlayersLevel(victim)
if( Pokemod_FF(victim, attacker) ){
GiveXP(attacker, PlayersActive[attacker], -1*xp_to_give)
poke_printlang(attacker,"POKEMOD_KILLMATE", xp_to_give)
}
else
GiveXP(attacker, PlayersActive[attacker], xp_to_give*2)
}

Oczywiście można też np. mnożyć przez 3 (*3), dodać 20(+20) itp.

 

4. Dodatkowy xp dla VIP'a

 

Aby VIP(osoba z odpowiednią flagą) dostawała więcej xp'a za killa wystarczy dodać jeden warunek. Można na dwa sposoby: http://amxx.pl/dokum.../get_user_flags lub http://amxx.pl/dokum...ja/f26/has_flag . Osobiście preferuję drugi sposób, gdyż sam go ciągle używam w pokemodzie, ale tak czy siak pokaże jak zrobić to każdym sposobem. Dajmy na to, że VIP będzie na flagę "t" czyli na ADMIN_LEVEL_H, a warunki powinny wyglądać następująco:

if(has_flag(attacker, "t")

lub tak:

if(get_user_flags(attacker) & ADMIN_LEVEL_H)

Teraz tylko wstawić te warunki do funkcji, dodać odpowiednią ilość dodatkowego exp'a i będzie gotowe. Jeżeli ustalimy, że nromalny gracz dostaje tyle xp'a ile wynosi lvl pokemona zabitego przez nas grasza a VIP'owi da 2x więcej to cała funkcja ma wyglądać następująco:

Spoiler

bądź drugim sposobem:

 

 

Spoiler
Teraz tylko kompilacja i gotowe.
 

5. Kompilacja pokemod'a
Po zmienieniu xp.inl. wchodzicie do addons>amxmodx>scripting. Tam znajdujecie pokemod.sma. Zaznaczacie go i trzymacie naciśnięty lewy przycisk myszy. Następnie przesuwacie pokemod.sma na compile.exe. Powinno wyskoczyć czarne okienko, nie wyłączajcie go. Możecie dopiero wyłączyć jak się już skompiluje, czyli wyskoczy coś takiego jak zaznaczone na czerwono screenie:
http://imageshack.us...beztytuugv.jpg/
Nie zwracajcie na moje wraningi, u was takie nie powinny być. Gdy już się skompiluje, należy nacisnąć enter, aby wyłączyć okienko. Następnie wchodzimy do addons>amxmodx>scripting>compiled. tam jest nowo powstały plik pokemod.amxx z waszym wybranym level'em. Należy go wgrać do addons>amxmodx>plugins, zrestartować serwer i GOTOWE.


Użytkownik radim edytował ten post 09.05.2013 14:33

  • +
  • -
  • 3

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#2 Nestea****Lemon

    Herbata ?!

  • Użytkownik

Reputacja: 81
Zaawansowany

  • Postów:313
  • GG:
  • Imię:Dawid
  • Lokalizacja:Radzyń Podlaski
Offline

Napisano 01.08.2012 09:25

Ładny poradnik , łap +
  • +
  • -
  • 0

cY2lZ.gif

http://nestea-tdm.cba.pl <---- Nestea****Lemon Blog


Aktualnie tworzę moda do Minecrafta ^D^


#3 radim

    Godlike

  • Autor tematu
  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 09.05.2013 14:34

Poradnik został definitywnie skończony i wzbogacony o jeden punkt: Dodatkowy xp dla VIP'a


  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !






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

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

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