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

[PORADNIK]Jak dodać do klasy moc przechodzenia przez ściany.

cod nowy

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Buldzio3

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:5
  • Lokalizacja:Warszawa
Offline

Napisano 10.11.2012 16:03

Witam wszystkich w tym poradniku pokaże jak dodać to klasy moc przechodzenia przez ściany.

Na początek tworzymy jakąś klasę u mnie to będzie Duch.
#include <amxmodx>
#include <amxmisc>
#include <codmod>
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}

Do includów dopisujemy:
#include <fakemeta>
#include <colorchat>
Jeśi już je mamy to nie trzeba.

Powinno wyglądać to tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}


Potem pod includami dopisujemy:
#define CZAS_NOCLIP X
Tu gdzie jest "X" to oznacza ile sekund może przechodzić przez ściany, wpisujemy dowolną wartość.

Powinno wyglądać to tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
#define CZAS_NOCLIP X
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}


Pózniej pod "new const wytrzymalosc" dopisujemy:
new bool:ma_klase[33];

new bool:uzyl[33];

new msg_bartime;

Powinno wyglądać to tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
#define CZAS_NOCLIP X
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool:ma_klase[33];
new bool:uzyl[33];
new msg_bartime;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
}


Kolejno w public plugin_init na samym końcu dopisujemy:
register_event("ResetHUD", "ResetHUD", "abe");
msg_bartime = get_user_msgid("BarTime");

Powinno wyglądać to tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
#define CZAS_NOCLIP X
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool:ma_klase[33];
new bool:uzyl[33];
new msg_bartime;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	    register_event("ResetHUD", "ResetHUD", "abe");
msg_bartime = get_user_msgid("BarTime");
}


Do public cod_class_enabled dopisujemy:
ma_klase[id] = true;
uzyl[id] = false;

A do public cod_class_disabled dopisujemy:
ma_klase[id] = false;

Będzie to wyglądać tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
#define CZAS_NOCLIP X
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool:ma_klase[33];
new bool:uzyl[33];
new msg_bartime;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	    register_event("ResetHUD", "ResetHUD", "abe");
msg_bartime = get_user_msgid("BarTime");
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
uzyl[id] = false;
}

public cod_class_disabled(id)
{
ma_klase[id] = false;
}


A na samym końcu pluginu dopisujemy:
public cod_class_skill_used(id)
{
if(!is_user_alive(id) || !ma_klase[id])
return PLUGIN_CONTINUE;

if(uzyl[id])
{
ColorChat(id, RED, "Juz wykorzystales moc diabla!");
return PLUGIN_CONTINUE;
}

set_pev(id, pev_movetype, MOVETYPE_NOCLIP);
set_bartime(id, CZAS_NOCLIP);
set_task(CZAS_NOCLIP.0, "WylaczNoclip", id);
uzyl[id] = true;

return PLUGIN_CONTINUE;
}

public ResetHUD(id)
uzyl[id] = false;

public WylaczNoclip(id)
{
if(!is_user_connected(id))
return;

set_pev(id, pev_movetype, MOVETYPE_WALK);

new Float:origin[3];

pev(id, pev_origin, origin);

if (!is_hull_vacant(origin, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, id))
user_silentkill(id);
}

stock bool:is_hull_vacant(const Float:origin[3], hull,id)
{
static tr;
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
return true;

return false;
}

public set_bartime(id, czas)
{
message_begin(MSG_ONE, msg_bartime, _, id);
write_short(czas);
message_end();
}

Końcowy efekt powinien wyglądać tak:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <fakemeta>
#include <colorchat>
#define CZAS_NOCLIP X
	   
new const nazwa[]   = "Duch";
new const opis[]    = "Umie przechodzić przez ściany (10s).";
new const bronie    = (1<<CSW_M4A1);
new const zdrowie   = 30;
new const kondycja  = 20;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new bool:ma_klase[33];
new bool:uzyl[33];
new msg_bartime;
   
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
	    register_event("ResetHUD", "ResetHUD", "abe");
msg_bartime = get_user_msgid("BarTime");
}
public cod_class_enabled(id)
{
ma_klase[id] = true;
uzyl[id] = false;
}

public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{
if(!is_user_alive(id) || !ma_klase[id])
return PLUGIN_CONTINUE;

if(uzyl[id])
{
ColorChat(id, RED, "Juz wykorzystales moc diabla!");
return PLUGIN_CONTINUE;
}

set_pev(id, pev_movetype, MOVETYPE_NOCLIP);
set_bartime(id, CZAS_NOCLIP);
set_task(CZAS_NOCLIP.0, "WylaczNoclip", id);
uzyl[id] = true;

return PLUGIN_CONTINUE;
}

public ResetHUD(id)
uzyl[id] = false;

public WylaczNoclip(id)
{
if(!is_user_connected(id))
return;

set_pev(id, pev_movetype, MOVETYPE_WALK);

new Float:origin[3];

pev(id, pev_origin, origin);

if (!is_hull_vacant(origin, pev(id, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, id))
user_silentkill(id);
}

stock bool:is_hull_vacant(const Float:origin[3], hull,id)
{
static tr;
engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)
if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))
return true;

return false;
}

public set_bartime(id, czas)
{
message_begin(MSG_ONE, msg_bartime, _, id);
write_short(czas);
message_end();
}

I oto powstała klasa która umie przechodzić przez ściany.





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