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

[ROZWIĄZANE] Problem z perkiem wyrzucanie broniNie działa

CoD Nowy

  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Kaleka

    Wszechwidzący

  • Użytkownik

Reputacja: 108
Zaawansowany

  • Postów:237
  • GG:
  • Imię:Eryk
  • Lokalizacja:Łódź
Offline

Napisano 22.11.2011 13:34

Standardowo perk wyglądał tak:
#include <amxmodx>
#include <codmod>

new const perk_name[] = "Wyrzucenie Broni";
new const perk_desc[] = "Masz 1/5 szans na wyrzucenie broni przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");

cod_register_perk(perk_name, perk_desc);

register_event("Damage", "Damage", "b", "2!=0");
}

public cod_perk_enabled(id, wartosc)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;

public Damage(id)
{
new idattacker = get_user_attacker(id);

if(!is_user_alive(idattacker))
return;

if(!ma_perk[idattacker])
return;

if(random_num(1, 5) != 1)
return;

client_cmd(id, "drop");
}


Edytowałem fukcje Damage(id) ponieważ miałem 'chyba' bug z tym, że czasem atakującemu wyrzucało broń:

public Damage(id)
{
new idattacker = get_user_attacker(id);

new ofiara = read_data( 2 );

if(!is_user_alive(idattacker) && !is_user_alive(ofiara))
return;

if(!ma_perk[idattacker])
return;

if(random_num(1, 5) != 1)
return;

client_cmd(ofiara, "drop");
}



Czy zrobiłem to dobrze? nie działa mi wyrzucanie broni, czy czasem nie powinienem podmienić fukncji Damage(id) na:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;

if(!ma_perk[idattacker])
return HAM_IGNORED;

if(get_user_team(this) != get_user_team(idattacker) && random_num(1, 5) == 1 && damagebits & DMG_BULLET)
client_cmd(this, "drop");

return HAM_IGNORED;
}

  • +
  • -
  • 0

reklama.png

pluginyCOD.pl  Perki i klasy oraz dodatki do codmoda!

 


#2 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 22.11.2011 13:47

Powinieneś ale musiałbyś dodać hamsandwich do pluginu i RegisterHam typu Take Damage do plugin init.
  • +
  • -
  • 1

#3 Kaleka

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 108
Zaawansowany

  • Postów:237
  • GG:
  • Imię:Eryk
  • Lokalizacja:Łódź
Offline

Napisano 22.11.2011 14:06

Powinieneś ale musiałbyś dodać hamsandwich do pluginu i RegisterHam typu Take Damage do plugin init.


To oczywiste ;) , przetestuje zaraz czy po podmianie Damage na Take_Damage perk działa normalnie ;>
  • +
  • -
  • 0

reklama.png

pluginyCOD.pl  Perki i klasy oraz dodatki do codmoda!

 


#4 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 22.11.2011 14:10


#include <amxmodx>
#include <codmod>
#include <hamsandwich>

new const perk_name[] = "Wyrzucenie Broni";
new const perk_desc[] = "Masz 1/5 szans na wyrzucenie broni przeciwnika";

new bool:ma_perk[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");

cod_register_perk(perk_name, perk_desc);

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id, wartosc)
ma_perk[id] = true;

public cod_perk_disabled(id)
ma_perk[id] = false;

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;

if(!ma_perk[idattacker])
return HAM_IGNORED;

if(get_user_team(this) != get_user_team(idattacker) && random_num(1, 5) == 1 && damagebits & DMG_BULLET)
client_cmd(this, "drop");

return HAM_IGNORED;
}

  • +
  • -
  • 1

#5 Kaleka

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 108
Zaawansowany

  • Postów:237
  • GG:
  • Imię:Eryk
  • Lokalizacja:Łódź
Offline

Napisano 22.11.2011 16:14

@UP
Wymagało poprawek, ale przyda się komuś leci +

Dla tych którzy chcieli by mieć losową wartość na wyrzucenie broni przeciwnika:

#include <amxmodx>
#include <codmod>
#include <hamsandwich>

#define DMG_BULLET (1<<1)

new const perk_name[] = "Wyrzucenie Broni";
new const perk_desc[] = "Masz 1/LW szans na wyrzucenie broni przeciwnika"; // szansa 1/3-10

new bool:ma_perk[33];
new wartosc_perku[33];

public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");

cod_register_perk(perk_name, perk_desc, 3, 10); // zmien 3 i 10 aby zmienic losowa wartosc od 1/3-10

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
}

public cod_perk_enabled(id, wartosc)
{
ma_perk[id] = true;
wartosc_perku[id] = wartosc; // nadaje wartosc perku
}

public cod_perk_disabled(id)
ma_perk[id] = false;

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;

if(!is_user_alive(idattacker) && !is_user_alive(this))
return HAM_IGNORED;

if(!ma_perk[idattacker])
return HAM_IGNORED;


if(get_user_team(this) != get_user_team(idattacker) && random_num(1, wartosc_perku[idattacker]) == 1 && damagebits & DMG_BULLET)
client_cmd(this, "drop");

// To wyzej sprawdza czy atakujacy nie atakuje swojego oraz losuje 1/wartosc_perku

return HAM_IGNORED;
}


Do zamknięcia.
  • +
  • -
  • 0

reklama.png

pluginyCOD.pl  Perki i klasy oraz dodatki do codmoda!

 


#6 Goliath

    Godlike

  • Przyjaciel

Reputacja: 1 237
Godlike

  • Postów:2 334
  • GG:
  • Steam:steam
  • Imię:Maciej
  • Lokalizacja:Mońki
Offline

Napisano 22.11.2011 16:25

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0





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