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

Brak dostępu do broni

cod nowy

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

#1 ChillOut

    Życzliwy

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:31
  • Lokalizacja:Dz-wo
Offline

Napisano 05.01.2012 17:40

Witam, chciałbym się dowiedzieć jak zrobić, by dana klasa nie miała dostępu do jakiejkolwiek broni oprócz noża. Klasę zrobiłem generatorem klas, ale nie ma tam takiej opcji. Nie wybrałem żadnej broni, ale na start zawsze dostaje ona broń standardową, czyli gdy jest w CT jest to "USP", a gdy jest w TT dostaje "Glock18", więc chciałbym się dowiedzieć jak zablokować dostęp do broni danej klasie, jeśli ktoś to o to kod .sma:
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <cstrike>

new const nazwa[] = "Nozownik";
new const opis[] = "Ma noz, 1/1 z noza, ograniczona widzialnosc dodatkowe 200 hp, 50 kondycji oraz ma 2 apteczki";
new const bronie = 0;
new const zdrowie = 200;
new const kondycja = 50;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new sprite_white_apteczki;
new ilosc_apteczek_gracza[33];

new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_event("CurWeapon", "eventKnife_Niewidzialnosc", "be", "1=1");
register_think("medkit", "Think_Apteczki");
RegisterHam(Ham_Spawn, "player", "fwSpawn_Apteczki", 1);

RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenCios");
}
public plugin_precache()
{
sprite_white_apteczki = precache_model("sprites/white.spr");
precache_model("models/w_medkit.mdl");
}
public client_disconnect(id)
{
new entApteczki = find_ent_by_class(0, "medkit");
while(entApteczki > 0)
{
if(entity_get_edict(entApteczki, EV_ENT_owner) == id)
remove_entity(entApteczki);
entApteczki = find_ent_by_class(entApteczki, "medkit");
}
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Nozownik] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
ilosc_apteczek_gracza[id] = 2;
ma_klase[id] = true;

return COD_CONTINUE;
}
public cod_class_disabled(id)
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{

if (!ilosc_apteczek_gracza[id])
{
client_print(id, print_center, "Masz tylko 2 apteczki na runde!");
}
else
{
ilosc_apteczek_gracza[id]--;
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
new ent = create_entity("info_target");
entity_set_string(ent, EV_SZ_classname, "medkit");
entity_set_edict(ent, EV_ENT_owner, id);
entity_set_int(ent, EV_INT_solid, SOLID_NOT);
entity_set_vector(ent, EV_VEC_origin, origin);
entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);

entity_set_model(ent, "models/w_medkit.mdl");
set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) ;
drop_to_floor(ent);

entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
}
}
public eventKnife_Niewidzialnosc(id)
{
if(!ma_klase[id])
return;
if( read_data(2) == CSW_KNIFE )
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 8);
}
else
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
}
}
public fwSpawn_Apteczki(id)
{
if(is_user_alive(id))
ilosc_apteczek_gracza[id] = 2;
}

public Think_Apteczki(ent)
{
if(!is_valid_ent(ent))
return PLUGIN_CONTINUE;
new id = entity_get_edict(ent, EV_ENT_owner);
new dist = 300;
new heal = 5+floatround(cod_get_user_intelligence(id)*0.5);
if (entity_get_edict(ent, EV_ENT_euser2) == 1)
{
new Float:forigin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
new entlist[33];
new numfound = find_sphere_class(0,"player", float(dist),entlist, 32,forigin);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (get_user_team(pid) != get_user_team(id))
continue;
new maksymalne_zdrowie = 100+cod_get_user_health(pid);
new zdrowie = get_user_health(pid);
new Float:nowe_zdrowie = (zdrowie+heal<maksymalne_zdrowie)?zdrowie+heal+0.0:maksymalne_zdrowie+0.0;
if (is_user_alive(pid)) entity_set_float(pid, EV_FL_health, nowe_zdrowie);
}
entity_set_edict(ent, EV_ENT_euser2, 0);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
{
remove_entity(ent);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 );
new Float:forigin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
new iOrigin[3];
for(new i=0;i<3;i++)
iOrigin[i] = floatround(forigin[i]);
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + dist );
write_coord( iOrigin[2] + dist );
write_short( sprite_white_apteczki );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 100 );// r, g, b
write_byte( 100 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 0 ); // speed
message_end();
entity_set_edict(ent, EV_ENT_euser2 ,1);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);

return PLUGIN_CONTINUE;
}

public fwTakeDamage_JedenCios(id, ent, attacker)
{
if(is_user_alive(attacker) && ma_klase[attacker] && get_user_weapon(attacker) == CSW_KNIFE)
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(id) + 1));
return HAM_HANDLED;
}
return HAM_IGNORED;
}

  • +
  • -
  • 0

#2 _nothing_

    NO ACTA !

  • Zbanowany

Reputacja: 134
Zaawansowany

  • Postów:377
  • GG:
  • Imię:Nothing
  • Lokalizacja:Poland
Offline

Napisano 05.01.2012 17:51

w plugin_init dodaj :

RegisterHam(Ham_Spawn, "player", "Spawn", 1)

na samym dole dodaj :



public Spawn(id)
{
         if(ma_klase[id])
         {
             strip_user_weapons(id)
             give_item(id, "weapon_knife");

         }
}

Teraz nawet gdy z perka dostaniesz jakąś broń to w nowej rundzie wyrzuci Ci tą broń .

Użytkownik _nothing_ edytował ten post 05.01.2012 17:50


#3 ChillOut

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:31
  • Lokalizacja:Dz-wo
Offline

Napisano 05.01.2012 18:03

@UP
Za chwilę wytestuje, ale masz ode mnie +. :P

@EDIT
Zrobiłem tak jak kazałeś tylko, podczas kompilacji wystąpiły 2 błędy.

Użytkownik ChillOut edytował ten post 05.01.2012 18:19

  • +
  • -
  • 0

#4 PRoMEN

    Zaawansowany

  • Zbanowany

Reputacja: 48
Pomocny

  • Postów:147
  • Imię:Damian
  • Lokalizacja:Kraków
Offline

Napisano 05.01.2012 19:10

jakie błędy? (pokaż błedy które się pokazują przy kompilacji)

Użytkownik PRoMEN edytował ten post 06.01.2012 12:40


#5 ChillOut

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:31
  • Lokalizacja:Dz-wo
Offline

Napisano 05.01.2012 21:16

@UP
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <cstrike>

new const nazwa[] = "Nozownik";
new const opis[] = "1/1 z noza, ograniczona widocznosc dodatkowe 200 hp, 50 kondycji oraz ma 2 apteczki";
new const bronie = 0;
new const zdrowie = 200;
new const kondycja = 50;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new sprite_white_apteczki;
new ilosc_apteczek_gracza[33];

new ma_klase[33];
public plugin_init()
{
register_plugin(nazwa, "1.0", "amxx.pl");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_event("CurWeapon", "eventKnife_Niewidzialnosc", "be", "1=1");
register_think("medkit", "Think_Apteczki");
RegisterHam(Ham_Spawn, "player", "fwSpawn_Apteczki", 1);
RegisterHam(Ham_Spawn, "player", "Spawn", 1);

RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage_JedenCios");
}
public plugin_precache()
{
sprite_white_apteczki = precache_model("sprites/white.spr");
precache_model("models/w_medkit.mdl");
}
public client_disconnect(id)
{
new entApteczki = find_ent_by_class(0, "medkit");
while(entApteczki > 0)
{
if(entity_get_edict(entApteczki, EV_ENT_owner) == id)
remove_entity(entApteczki);
entApteczki = find_ent_by_class(entApteczki, "medkit");
}
}
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
client_print(id, print_chat, "[Nozownik] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
ilosc_apteczek_gracza[id] = 2;
ma_klase[id] = true;

return COD_CONTINUE;
}
public cod_class_disabled(id)
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{

if (!ilosc_apteczek_gracza[id])
{
client_print(id, print_center, "Masz tylko 2 apteczki na runde!");
}
else
{
ilosc_apteczek_gracza[id]--;
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
new ent = create_entity("info_target");
entity_set_string(ent, EV_SZ_classname, "medkit");
entity_set_edict(ent, EV_ENT_owner, id);
entity_set_int(ent, EV_INT_solid, SOLID_NOT);
entity_set_vector(ent, EV_VEC_origin, origin);
entity_set_float(ent, EV_FL_ltime, halflife_time() + 7 + 0.1);

entity_set_model(ent, "models/w_medkit.mdl");
set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) ;
drop_to_floor(ent);

entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.1);
}
}
public eventKnife_Niewidzialnosc(id)
{
if(!ma_klase[id])
return;
if( read_data(2) == CSW_KNIFE )
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 8);
}
else
{
set_rendering(id,kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
}
}
public fwSpawn_Apteczki(id)
{
if(is_user_alive(id))
ilosc_apteczek_gracza[id] = 2;
}

public Think_Apteczki(ent)
{
if(!is_valid_ent(ent))
return PLUGIN_CONTINUE;
new id = entity_get_edict(ent, EV_ENT_owner);
new dist = 300;
new heal = 5+floatround(cod_get_user_intelligence(id)*0.5);
if (entity_get_edict(ent, EV_ENT_euser2) == 1)
{
new Float:forigin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
new entlist[33];
new numfound = find_sphere_class(0,"player", float(dist),entlist, 32,forigin);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (get_user_team(pid) != get_user_team(id))
continue;
new maksymalne_zdrowie = 100+cod_get_user_health(pid);
new zdrowie = get_user_health(pid);
new Float:nowe_zdrowie = (zdrowie+heal<maksymalne_zdrowie)?zdrowie+heal+0.0:maksymalne_zdrowie+0.0;
if (is_user_alive(pid)) entity_set_float(pid, EV_FL_health, nowe_zdrowie);
}
entity_set_edict(ent, EV_ENT_euser2, 0);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 1.5);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime) < halflife_time() || !is_user_alive(id))
{
remove_entity(ent);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime)-2.0 < halflife_time())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 );
new Float:forigin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
new iOrigin[3];
for(new i=0;i<3;i++)
iOrigin[i] = floatround(forigin[i]);
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + dist );
write_coord( iOrigin[2] + dist );
write_short( sprite_white_apteczki );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 100 );// r, g, b
write_byte( 100 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 0 ); // speed
message_end();
entity_set_edict(ent, EV_ENT_euser2 ,1);
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.5);

return PLUGIN_CONTINUE;
}

public fwTakeDamage_JedenCios(id, ent, attacker)
{
if(is_user_alive(attacker) && ma_klase[attacker] && get_user_weapon(attacker) == CSW_KNIFE)
{
cs_set_user_armor(id, 0, CS_ARMOR_NONE);
SetHamParamFloat(4, float(get_user_health(id) + 1));
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Spawn(id)
{
if(ma_klase[id])
{
strip_user_weapons(id)
give_item(id, "weapon_knife");
}
}

  • +
  • -
  • 0

#6 _nothing_

    NO ACTA !

  • Zbanowany

Reputacja: 134
Zaawansowany

  • Postów:377
  • GG:
  • Imię:Nothing
  • Lokalizacja:Poland
Offline

Napisano 06.01.2012 02:12

Teraz jest OK
Spoiler
Wyskakuje 5 błędów ale to dlatego, że kod jest nierówny tak to wszystko działa :) Sprawdź i daj znać

#7 ChillOut

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:31
  • Lokalizacja:Dz-wo
Offline

Napisano 06.01.2012 12:01

Tylko nie wiem dlaczego nie mogę wybrać tej klasy, bo nie pokazuje sie w wyborze klas. Czy to przez te 5 błędów?
  • +
  • -
  • 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