←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Dodanie do klasy brak rozrzutu w broniach

Emil_wymiatacz's Photo Emil_wymiatacz 08.09.2012

Zauważyłem że nie ma nigdzie poradniku jak dodać do klasy brak rozrzutu w broniach, więc ja napiszę jak dodać.
Zaczynamy

1. Wymagane:
#include <fakemeta>

2. Pod:
#include <fakemeta>

Dodać:
new bool:ma_klase[33];

3. Do:
public plugin_init()

Dodać:
register_forward(FM_PlayerPreThink, "PreThink");
register_forward(FM_UpdateClientData, "UpdateClientData", 1)

4. I na koniec klasy dodać:
public PreThink(id)
{
if(ma_klase[id])
set_pev(id, pev_punchangle, {0.0,0.0,0.0})
}

public UpdateClientData(id, sw, cd_handle)
{
if(ma_klase[id])
set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})
}


Całość będzie wyglądać tak:

#include <amxmodx>
#include <codmod>
#include <fakemeta>
new bool:ma_klase[33];

new const nazwa[] = "Rozrzutowiec";
new const opis[] = "Posiada brak rozrzutu w broniach";
new const bronie = 1<<CSW_M4A1
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 0;

public plugin_init()
{
register_plugin(nazwa, "1.0", "AUTHOR");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

register_forward(FM_PlayerPreThink, "PreThink");
register_forward(FM_UpdateClientData, "UpdateClientData", 1)
}

public cod_class_enabled(id)
{
ma_klase[id] = true;
return COD_CONTINUE;
}

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

public PreThink(id)
{
if(ma_klase[id])
set_pev(id, pev_punchangle, {0.0,0.0,0.0})
}

public UpdateClientData(id, sw, cd_handle)
{
if(ma_klase[id])
set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})
}




Myślę że pomogłem ;)
Jak coś źle zrobiłem to pisać.
Quote

sekio's Photo sekio 08.09.2012

jak bd takie tutki robić to za spamujemy forum takie moje zdanie
Quote

Kronzu's Photo Kronzu 08.09.2012

Ale po co spamować w np.: Prośby o klasy itp. jak masz gotowca?
Quote

siem's Photo siem 11.06.2013

NIE DZIAŁA !

Quote

  • +
  • -
Kewin. (ZeZ)'s Photo Kewin. (ZeZ) 11.06.2013

Bo, źle robisz!

Wy sie nie nauczycie, od razu wrzucac plikow .sma?!

Quote

  • +
  • -
Junak xD's Photo Junak xD 10.07.2013

Mi to nie działa robię dobrze
Quote

  • +
  • -
Magic..'s Photo Magic.. 21.12.2013

Mi też to niedziłą :(

 

Quote

  • +
  • -
Drago36's Photo Drago36 22.12.2013

Mi też to niedziłą :(

Zrób osobny temat ,pomożemy.

Quote

  • +
  • -
Magic..'s Photo Magic.. 22.12.2013

Dzięki bardzo Drago36 ale znalazłem na no-racional więc to samo prawie jest ok :D .

 

link : http://amxx.pl/topic...e-2#entry593291

 


Edited by Magic.., 22.12.2013 09:31.
Quote

  • +
  • -
ByQ_Pl's Photo ByQ_Pl 01.01.2014

A zamiast całkowitego to np. zmniejszenie "O POŁOWE" :) ??

Jak ten perk, ogranicznik rozrzutu ;D

Quote

  • +
  • -
RasiaQ's Photo RasiaQ 01.01.2014

To wtedy wygląda to tak

 

Biblioteki:

#include <fakemeta>

 

Zmienna:

new ma_klase[33];

 

W plugin_init()

register_forward(FM_CmdStart, "CmdStart");

 

Jeśli nie masz to dodajesz :

public cod_class_enabled(id)
{
    ma_klase[id] = true;
}
    
public cod_perk_disabled(id)
{
    ma_klase[id] = false;
}

 

I na koniec .sma

public CmdStart(id, uc_handle)
{
    if(ma_klase[id] && get_uc(uc_handle, UC_Buttons) & IN_ATTACK)
    {
        new Float:punchangle[3]
        pev(id, pev_punchangle, punchangle)
        for(new i=0; i<3;i++)
                punchangle[i]*=0.9;
        set_pev(id, pev_punchangle, punchangle)
    }
}

 

Quote

Tops's Photo Tops 12.01.2016

sry ale nie daje sie kompilikowac



Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team
 
codclass_ReciolMaster.sma(1) : error 010: invalid function or declaration
codclass_ReciolMaster.sma(24) : error 021: symbol already defined: "ma_klase"
 
2 Errors.
Could not locate output file codclass_ReciolMaster.amxx (compile failed).
 

 

kod sma.


 

#include <amxmodx>

#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
new bool:ma_klase[33];
        
new const nazwa[]   = "Reciol Master ";
new const opis[]    = "Posiada 3 skoki, 2 miny, eleminator rozrzutu i wlasny model gracza ";
new const bronie    = (1<<CSW_M4A1)|(1<<CSW_DEAGLE)|(1<<CSW_P90);
new const zdrowie   = 25;
new const kondycja  = 30;
new const inteligencja = 30;
new const wytrzymalosc = 30;
    
new const modelMiny[] = "models/QTM_CodMod/mine.mdl"
 
new sprite_blast_miny;
new ilosc_min_gracza[33];
 
new skoki[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_touch("mine", "player",  "DotykMiny");
 
register_event("HLTV", "NowaRunda_Miny", "a", "1=0", "2=0");
 
RegisterHam(Ham_Spawn, "player", "fwSpawn_Miny", 1);
 
   
register_forward(FM_CmdStart, "fwCmdStart_MultiJump");
 
RegisterHam( Ham_Spawn, "player", "fwSpawn_ModelGracza" );
 
register_forward(FM_PlayerPreThink, "PreThink");
register_forward(FM_UpdateClientData, "UpdateClientData", 1)
 
}
 
public plugin_precache()
{
 
precache_model(modelMiny);
sprite_blast_miny = precache_model("sprites/dexplo.spr");
 
static szModel[ ] = "models/player/reciol_master/reciol_master.mdl";
precache_model( szModel );
 
}
 
public client_disconnect(id)
{
 
new entMiny = find_ent_by_class(0, "mine");
while(entMiny > 0)
{
if(entity_get_edict(entMiny, EV_ENT_owner) == id)
remove_entity(entMiny);
entMiny = find_ent_by_class(entMiny, "mine");
}
 
}
 
public cod_class_enabled(id)
{
if(!(get_user_flags(id) & ADMIN_LEVEL_G))
{
client_print(id, print_chat, "[Reciol Master ] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
 
ilosc_min_gracza[id] = 3;
ma_klase[id] = true;
   
return COD_CONTINUE;
}
 
public cod_class_disabled(id)
{
ma_klase[id] = false;
 
}
 
public cod_class_skill_used(id)
{
        
if (!ilosc_min_gracza[id])
{
client_print(id, print_center, "Wykorzystales juz wszystkie miny!");
}
else
{
 
ilosc_min_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, "mine");
entity_set_edict(ent ,EV_ENT_owner, id);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(ent, origin);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
 
entity_set_model(ent, modelMiny);
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
 
drop_to_floor(ent);
 
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50);
}
}
 
public fwSpawn_Miny(id)
{
if(is_user_alive(id))
ilosc_min_gracza[id] = 3;
}
 
public DotykMiny(ent, id)
{
if(!is_valid_ent(ent))
return;
 
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (get_user_team(attacker) != get_user_team(id))
{
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_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast_miny);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
 
new entlist[33];
new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
 
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
 
if (!is_user_alive(pid) || get_user_team(attacker) == get_user_team(pid))
continue;
 
cod_inflict_damage(attacker, pid, 70.0, 0.8, ent, (1<<24));
}
remove_entity(ent);
}
}
 
public NowaRunda_Miny()
{
new entMiny = find_ent_by_class(-1, "mine");
while(entMiny > 0)
{
remove_entity(entMiny);
entMiny = find_ent_by_class(entMiny, "mine");
}
}
 
public fwCmdStart_MultiJump(id, uc_handle)
{
if(!is_user_alive(id) || !ma_klase[id])
return FMRES_IGNORED;
 
new flags = pev(id, pev_flags);
 
if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id])
{
skoki[id]--;
new Float:velocity[3];
pev(id, pev_velocity,velocity);
velocity[2] = random_float(265.0,285.0);
set_pev(id, pev_velocity,velocity);
}
else if(flags & FL_ONGROUND)
skoki[id] = 3;
 
return FMRES_IGNORED;
}
 
public fwSpawn_ModelGracza( id )
{
if( !is_user_alive( id ) || !ma_klase[ id ] )
return;
 
engfunc( EngFunc_SetClientKeyValue, id, engfunc( EngFunc_GetInfoKeyBuffer, id ), "model", "reciol_master" );
}
public PreThink(id)
{
if(ma_klase[id])
set_pev(id, pev_punchangle, {0.0,0.0,0.0})
}
 
public UpdateClientData(id, sw, cd_handle)
{
if(ma_klase[id])
set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0})
}
 

 

 

Quote