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
CoD Nowy

Skuteczna blokada otrzymywania broni

cod nowy

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

#1 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 07.12.2013 09:45

Siema,

wiele tematów ostatnimi czasy pojawia się z pytaniem: "Jak zablokować broń?"

Ludzie podają dobre sposoby, jednak są one dziurawe :(

Przykładem jest ten sposób (nie najlepszy): http://amxx.pl/topic...ka/#entry591014

Ja tutaj pokażę jak lepiej zablokować otrzymywanie danej broni - sposób nie ma dziur ;)

 

Okej, lecimy!

Otwieramy *.sma klasy, jeżeli to całkiem nowa klasa, należy dodać pod

#include <codmod>

to

new bool:ma_klase[33];

oraz gdzieś niżej dodać jeszcze to:

public cod_class_enabled(id)

    ma_klase[id] = true;

    

public cod_class_disabled(id)

    ma_klase[id] = false;

Mamy już podstawę klasy, więc rejestrujemy moduł hamsandwich oraz fakemeta, poprzez dodanie pod:

#include <codmod>

tego

#include <hamsandwich>
#include <fakemeta>

Moduł ten pozwoli nam na wychwycenie otrzymania danej broni ;) Więc w plugin_init należałoby zarejestrować odpowiedniego forwarda. Czyli do plugin_init dodajemy:

RegisterHam(Ham_Item_AddToPlayer, "XYZ", "fw_AddItem");

Tam gdzie XYZ wpisujemy nazwę naszej broni (fachowe nazwy można wziąć stąd: http://amxx.pl/topic...ive-item-speed/ , nazwa to weapon_*).

Czyli dla AK47 wpisuje coś takiego

RegisterHam(Ham_Item_AddToPlayer, "weapon_ak47", "fw_AddItem");

Dla zablokowania kilku broni, wystarczy dodać kilka takich linijek z innymi nazwami ;)

Ok, teraz funkcja blokowania, gdzieś niżej dodajemy:

public fw_AddItem(iEnt, id)

{

    if(!pev_valid(iEnt) || !is_user_alive(id) || !ma_klase[id])

        return HAM_IGNORED;

    

    return HAM_SUPERCEDE;

}

I tyle nam starczy ;) Po skompilowaniu klasy, ta nie będzie mogła otrzymać broni zarejestrowanych w plugin_init().

Broni nie dostaniemy nawet w środku rundy, z jakiegoś perku czy podobnych ;)

 

Poradnik potem jeszcze dopracuję, na razie to tyle ;)

 


  • +
  • -
  • 3

#2 PrezydenT

    Zaawansowany

  • Użytkownik

Reputacja: 23
Życzliwy

  • Postów:146
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 07.12.2013 17:23

Hmmm, co rozumiesz pod słowem "dziurawy"?? Ja w moim sposobie wychwyciłem tylko to że jeżeli zdobędziemy perk z bronią- dostaniemy ją, ale w chwili rozpoczęcia nowej rundy i tak jest zabierana... Nie miej tego za akt buntu, ale chcę się dowiedzieć, w czym to jest lepsze od mojego sposobu....


Użytkownik Sqwareck edytował ten post 07.12.2013 17:23

  • +
  • -
  • 0

#3 d0naciak

    Godlike

  • Autor tematu
  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 07.12.2013 18:20

W tym jest lepszy, że w chwili dodania broni, ta natychmiastowo jest zabierana - a u Ciebie broń zabierana jest dopiero przy Spawnie.

Nie lepiej uczyć się czegoś lepszego, zgrabniejszego i ładnie wyglądającego, niż żerować na czyiś kodach? Kiedy można, trzeba iść do przodu.


  • +
  • -
  • 1





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

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

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