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
Klasa

Dodanie 1/x do klasy i inne

klasa

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

#1 szczypek1g

    Pomocny

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:48
Offline

Napisano 11.06.2022 11:00

Posiadam klase o nazwie Mrożon, która ma aktualnie 1/5 szansy na zamrożenie przeciwnika, chciałbym:

 

- Dodać 1/12 z M4A1 - coś mi nie wychodzi zwykłe dodanie 1/x z broni, bo wtedy kasuje się zamrożenie
- Dodać Efekt zamrożenia, aby był przeciwnik pokryty "lodem"

 

Ew. ktoś ma lepszą klase napisaną z efektem zamrożenia, to może podrzucić :P

 

 


  • +
  • -
  • 0

#2 szczypek1g

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:48
Offline

Napisano 11.06.2022 11:43

Nie mogę edytować, zapomniałem o .sma

#include <amxmodx>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#include <fun>


new bool:ma_klase[33], bool:zamrozenie[33]



new const nazwa[]   = "Mrozon";
new const opis[]    = "Posiada 1/5 na zamrozenie";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 5;
new const kondycja  = 15;
new const inteligencja = 5;
new const wytrzymalosc = 10;

public plugin_init()
{
	register_plugin(nazwa, "1.0", "RiviT");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	
      RegisterHam(Ham_TakeDamage, "player", "TakeDamage", 1)
      RegisterHam(Ham_Killed, "player", "HamKilledPre", 0)
}

public cod_class_enabled(id)
      ma_klase[id] = true

public cod_class_disabled(id)
      ma_klase[id] = false
      
public TakeDamage(this, idinflictor, idattacker)
{
      if(!is_user_connected(idattacker) || get_user_team(idattacker) == get_user_team(this) || zamrozenie[this]) return HAM_IGNORED;

      if(ma_klase[idattacker] && !random(5))
      {
            zamrozenie[this] = true
            set_pev(this, pev_flags, pev(this, pev_flags) | FL_FROZEN)
            set_task(2.0, "Odmroz", this)
            client_print(this, print_center, "Zostales zamrozony na 2s!")
      }
      
      return HAM_IGNORED
}

public HamKilledPre(this, attacker)
{
      if(is_user_connected(this) && zamrozenie[this])
            set_pev(this, pev_flags, pev(this, pev_flags) &~ FL_FROZEN)
}

public Odmroz(id)
{
      if(!is_user_alive(id)) return
      
      new origin[3]
      get_user_origin(id, origin)
      
      set_pev(id, pev_flags, pev(id, pev_flags) &~ FL_FROZEN)
      zamrozenie[id] = false
      
      origin[2] += 35
      set_user_origin(id, origin)
}

  • +
  • -
  • 0

#3 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 11.06.2022 13:08

Zamień cały public TakeDamage na to:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
      if(!is_user_connected(idattacker) || get_user_team(idattacker) == get_user_team(this) || !ma_klase[idattacker]) return HAM_IGNORED;

      if(!random(5) && !zamrozenie[this])
      {
            zamrozenie[this] = true
            set_pev(this, pev_flags, pev(this, pev_flags) | FL_FROZEN)
            set_task(2.0, "Odmroz", this)
            client_print(this, print_center, "Zostales zamrozony na 2s!")
      }

      if(!random(12) && damagebits & (1<<1) && get_user_weapon(idattacker) == CSW_M4A1) {
            KillPlayer(this, idinflictor, idattacker, (1<<1))
      }
      
      return HAM_IGNORED
}


KillPlayer(id, inflictor, attacker, damagebits)
{
      static DeathMsgId
      
      new msgblock, effect
      if (!DeathMsgId)  DeathMsgId = get_user_msgid("DeathMsg")
      
      msgblock = get_msg_block(DeathMsgId)
      set_msg_block(DeathMsgId, BLOCK_ONCE)
      
      set_pdata_int(id, 75, HIT_CHEST , 5)
      set_pdata_int(id, 76, damagebits, 5)
      
      ExecuteHamB(Ham_Killed, id, attacker, 1)
      
      set_pev(id, pev_dmg_inflictor, inflictor)
      
      effect = pev(id, pev_effects)
      if(effect & 128)  set_pev(id, pev_effects, effect-128)
      
      set_msg_block(DeathMsgId, msgblock)

      message_begin(MSG_ALL, DeathMsgId)
      write_byte(attacker)
      write_byte(id)
      write_byte(0)
      write_string("m4a1")
      message_end()
}

nie testowałem.


Rivit (11.06.2022 13:09):
Swoją drogą - jestem pod wrażeniem jak paskudnie pisałem pluginy dawno temu :)

  • +
  • -
  • 0

#4 PANDA_2zl

    Guru

  • Power User

Reputacja: 173
Profesjonalista

  • Postów:716
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 11.06.2022 13:16

#include <amxmodx>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
#include <fun>

new bool:ma_klase[33], bool:zamrozenie[33]

new const nazwa[]   = "Mrozon";
new const opis[]    = "Posiada 1/5 na zamrozenie";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 5;
new const kondycja  = 15;
new const inteligencja = 5;
new const wytrzymalosc = 10;

public plugin_init()
{
	register_plugin(nazwa, "1.0", "RiviT");
		
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage", 1)
	RegisterHam(Ham_Killed, "player", "HamKilledPre", 0)
}

public cod_class_enabled(id)
	ma_klase[id] = true

public cod_class_disabled(id)
	ma_klase[id] = false
      
public TakeDamage(this, idinflictor, idattacker)
{
	if(!is_user_connected(idattacker) || get_user_team(idattacker) == get_user_team(this) || zamrozenie[this]) return HAM_IGNORED;
	
	if(ma_klase[idattacker] && random_num(1, 12) == 1)
	{
		zamrozenie[this] = true
		set_pev(this, pev_flags, pev(this, pev_flags) | FL_FROZEN)
		set_task(2.0, "Odmroz", this)
		client_print(this, print_center, "Zostales zamrozony na 2s!")
		set_user_rendering(this, kRenderFxGlowShell, 107, 179, 250, kRenderNormal, 20);
	}
	      
	return HAM_IGNORED;
}

public HamKilledPre(this, attacker)
{
	if(is_user_connected(this) && zamrozenie[this])
		set_pev(this, pev_flags, pev(this, pev_flags) &~ FL_FROZEN)
}

public Odmroz(id)
{
	if(!is_user_alive(id)) return
	      
	new origin[3]
	get_user_origin(id, origin)
	      
	set_pev(id, pev_flags, pev(id, pev_flags) &~ FL_FROZEN)
	zamrozenie[id] = false
	set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
	      
	origin[2] += 35
	set_user_origin(id, origin)
}

takie ode mnie bo widze w między czasie ktoś uprzedził


Użytkownik SezonowyGracz edytował ten post 11.06.2022 13:32

  • +
  • -
  • 0

#5 szczypek1g

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:48
Offline

Napisano 11.06.2022 18:24

Zamień cały public TakeDamage na to:

public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
      if(!is_user_connected(idattacker) || get_user_team(idattacker) == get_user_team(this) || !ma_klase[idattacker]) return HAM_IGNORED;

      if(!random(5) && !zamrozenie[this])
      {
            zamrozenie[this] = true
            set_pev(this, pev_flags, pev(this, pev_flags) | FL_FROZEN)
            set_task(2.0, "Odmroz", this)
            client_print(this, print_center, "Zostales zamrozony na 2s!")
      }

      if(!random(12) && damagebits & (1<<1) && get_user_weapon(idattacker) == CSW_M4A1) {
            KillPlayer(this, idinflictor, idattacker, (1<<1))
      }
      
      return HAM_IGNORED
}


KillPlayer(id, inflictor, attacker, damagebits)
{
      static DeathMsgId
      
      new msgblock, effect
      if (!DeathMsgId)  DeathMsgId = get_user_msgid("DeathMsg")
      
      msgblock = get_msg_block(DeathMsgId)
      set_msg_block(DeathMsgId, BLOCK_ONCE)
      
      set_pdata_int(id, 75, HIT_CHEST , 5)
      set_pdata_int(id, 76, damagebits, 5)
      
      ExecuteHamB(Ham_Killed, id, attacker, 1)
      
      set_pev(id, pev_dmg_inflictor, inflictor)
      
      effect = pev(id, pev_effects)
      if(effect & 128)  set_pev(id, pev_effects, effect-128)
      
      set_msg_block(DeathMsgId, msgblock)

      message_begin(MSG_ALL, DeathMsgId)
      write_byte(attacker)
      write_byte(id)
      write_byte(0)
      write_string("m4a1")
      message_end()
}

nie testowałem.

A to jest coś o tym efekcie zamrożenia? Czy tylko 1/12?

 

@SezonowyGracz
Twoje działa z tym efektem, ale nie znika po odmrożeniu


Użytkownik szczypek1g edytował ten post 11.06.2022 18:34

  • +
  • -
  • 0

#6 PANDA_2zl

    Guru

  • Power User

Reputacja: 173
Profesjonalista

  • Postów:716
  • Imię:Michał
  • Lokalizacja:Kraków
Offline

Napisano 11.06.2022 19:10

public Odmroz(id)
{
        set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
	if(!is_user_alive(id)) return
	      
	new origin[3]
	get_user_origin(id, origin)
	      
	set_pev(id, pev_flags, pev(id, pev_flags) &~ FL_FROZEN)
	zamrozenie[id] = false
	      
	origin[2] += 35
	set_user_origin(id, origin)
}

podmień


  • +
  • -
  • 0





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

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

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