←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Item nie dla każdego

FreZZy - zdjęcie FreZZy 10.03.2011

Witam,

wiele już osób mnie pytało jak zrobić, żeby taki a taki item nie działał na takiej a takiej klasie. Ja wam zaprezentuje jak to zrobić. Do tego celu zablokujemy klasie Ninja itemków Fireshield, Arch Angel Wings oraz Small Angel Wings, a klasie Hunter (Łowca) itemka Stalkers Ring.

Zaczynamy zabawę:

* na samym początku tworzymy funkcję, która powoduje wywalenie i losowanie nowego itemku dla danej klasy


w public award_item(id, itemnum), pod ostatnim case swoich itemów, zamiast:

}
BoostRing(id)
return PLUGIN_CONTINUE
}


daj:
	}
wywal_item(id)
BoostRing(id)
return PLUGIN_CONTINUE
}

public wywal_item(id)
{
if(player_class[id] == Ninja) //dlatego że nie chcemy tych itemków na ninjy
{
if(player_item_id[id]==10) //smalle
{
dropitem(id)
award_item(id,0)
}
else if(player_item_id[id]==11) //archy
{
dropitem(id)
award_item(id,0)
}
else if(player_item_id[id]==30) //fireshield
{
dropitem(id)
award_item(id,0)
}
}
else if(player_class[id] == Hunter)
{
if(player_item_id[id]==17) //stalker
{
dropitem(id)
award_item(id,0)
}
}
}


dlaczego tam są takie liczby jak 10, 11, 30, 17? Ponieważ są to case itemów o które nam chodzi.

Pamiętaj! Jak zmieniasz itemy w diablo to upewnij się że pod case które podałem masz na pewno te same itemy!
Użytkownik FreZZy edytował ten post 10.03.2011 18:51
Odpowiedz

  • +
  • -
dRaq - zdjęcie dRaq 10.03.2011

można to na jednym if'ie zrobić, zamiast mieszać tyle

 if(player_item_id[id]==10 || player_item_id[id]==XX)

i tak dalej "||" to nic innego jak "lub"

i nie wiem czy on nie wywołuje najpierw award item, a później go wyrzuca? nie logiczne dropitem zamienić miejscami z award
Użytkownik dRaq edytował ten post 10.03.2011 18:43
Odpowiedz

FreZZy - zdjęcie FreZZy 10.03.2011

poprawiłem dzięki :)

tak, ale chciałem żeby to było widocznie i czytelnie, a używając else if nie traci się dużo więcej na wydajności niż przy ||
Odpowiedz

  • +
  • -
dRaq - zdjęcie dRaq 10.03.2011

Teraz mogę + dać ;]
aczkolwiek jest jeszcze jedna możliwość dania tego bezpośrednio w case itemu :D
Użytkownik dRaq edytował ten post 10.03.2011 23:01
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 11.03.2011

Według mnie raczej zbędny poradnik...
Poszukali by troszkę to by znaleźli...
Blokada itemu dla klasy. - AMXX.pl: Support AMX Mod X
Odpowiedz

FreZZy - zdjęcie FreZZy 11.03.2011

KariiO

po pierwsze ten twoj kod nie działa :) losuje itemek w itemku

po drugie w tutkach specjalnie umieściłem żeby było wiadomo który kod śmiga
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 11.03.2011

Jak by nie działał to bym go nie dawał chyba logiczne...
A działa bo sam mam na serwerze...

Edit1@
public wywal_item(id)
{
switch(player_class[id])
{
case Ninja:
{
if(player_item_id[id]==10) //smalle
{
dropitem(id)
award_item(id,0)
}
else if(player_item_id[id]==11) //archy
{
dropitem(id)
award_item(id,0)
}
else if(player_item_id[id]==30) //fireshield
{
dropitem(id)
award_item(id,0)
}
}
case Hunter:
{
if(player_item_id[id]==17) //stalker
{
dropitem(id)
award_item(id,0)
}
}
}
}

Użytkownik KariiO edytował ten post 12.03.2011 11:09
Odpowiedz

FreZZy - zdjęcie FreZZy 13.03.2011

bez sensu jak jest jedna, 2 klasy - dobre jak są wszystkie
Odpowiedz

  • +
  • -
Karmi1 - zdjęcie Karmi1 08.04.2011

A jak zrobić aby item był tylko dla trzech klas? (Zablokować 17 innym)
Odpowiedz

FreZZy - zdjęcie FreZZy 08.04.2011

public wywal_item(id)
{
if(player_class[id] != Klasa1 || player_class[id] != Klasa2 || player_class[id] != Klasa3)
{
if(player_item_id[id]== XX )
{
dropitem(id)
award_item(id,0)
}

}
}


Klasa1, Klasa2, Klasa3 - twoje 3 klasy, dla których ma być ten itemek dostępny

XX - numer case itemka
Odpowiedz