Witam ! zrobiłem 3 klasy i mam problem z komplikacją :
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
new const nazwa[] = "Elektryk";
new const opis[] = "Masz 3 blyskawice, ktore zadaja 50 DMG. (uzycie E )";
new const bronie = (1<<CSW_P228)|(1<<CSW_M4A1);
new const zdrowie = 40;
new const kondycja = 8;
new const inteligencja = 0;
new const wytrzymalosc = 30;
new sprite_blast;
new ilosc_rakiet_gracza[33];
new poprzednia_rakieta_gracza[33];
public plugin_init() {
register_plugin(nazwa, "1.0", "piterka");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_event("ResetHUD", "ResetHUD", "abe");
}
public cod_class_enabled(id)
{
ColorChat(id, GREEN, "Klasa %s zostala stworzona przez www.cs-...pl ", nazwa);
ma_klase[id] = true;
ResetHUD(id);
}
public plugin_precache()
{
sprite = precache_model("sprites/lgtning.spr");
precache_sound(gszSound);
}
public cod_class_enabled(id)
{
ilosc_blyskawic[id] = 3;
ma_klase[id] = 1;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = 0;
ilosc_blyskawic[id] = 0;
}
public cod_class_skill_used(id) {
if(!is_user_alive(id)) return PLUGIN_HANDLED;
if(!ilosc_blyskawic[id]) {
return PLUGIN_HANDLED;
}
new ofiara, body;
get_user_aiming(id, ofiara, body);
if(is_user_alive(ofiara)){
if(get_user_team(ofiara) == get_user_team(id)) {
return PLUGIN_HANDLED;
}
if(poprzednia_blyskawica[id]+5.0>get_gametime()) {
client_print(id,print_chat,"Blyskawicy mozesz uzyc raz na 5 sek.");
return PLUGIN_HANDLED;
}
poprzednia_blyskawica[id] = floatround(get_gametime());
ilosc_blyskawic[id]--;
puscBlyskawice(id, ofiara, 50.0, 0.5);
}
return PLUGIN_HANDLED;
}
stock Create_TE_BEAMENTS(startEntity, endEntity, iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed) {
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BEAMENTS )
write_short( startEntity ) // start entity
write_short( endEntity ) // end entity
write_short( iSprite ) // model
write_byte( startFrame ) // starting frame
write_byte( frameRate ) // frame rate
write_byte( life ) // life
write_byte( width ) // line width
write_byte( noise ) // noise amplitude
write_byte( red ) // red
write_byte( green ) // green
write_byte( blue ) // blue
write_byte( alpha ) // brightness
write_byte( speed ) // scroll speed
message_end()
}
puscBlyskawice(id, ofiara, Float:fObrazenia = 55.0, Float:fCzas = 1.0){
//Obrazenia
new ent = create_entity("info_target");
entity_set_string(ent, EV_SZ_classname, "blyskawica");
cod_inflict_damage(id, ofiara, fObrazenia, 1.0, ent, DMG_SHOCK);
remove_entity(ent);
//Piorun
Create_TE_BEAMENTS(id, ofiara, sprite, 0, 10, floatround(fCzas*10), 150, 5, 200, 200, 200, 200, 10);
//Dzwiek
emit_sound(id, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
emit_sound(ofiara, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
}
public ResetHUD(id) {
if(ma_klase[id] == 1) {
ilosc_blyskawic[id] = 3;
}
}
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <xs>
#include <colorchat>
#define AUTHOR "SAMURAI & kisiel96 & DarkGL" // dziekuje w tym miejscu DarkGL za pomoc <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cwaniak.gif' class='bbc_emoticon' alt=':]' />
/* ***** KONFIGURACJA ***** */
#define ILOSC_WORKOW_GRACZA 10
#define ODDAJWORKI
/* ***** KONFIGURACJA ***** */
#define PALLET_MINS Float:{ -27.260000, -22.280001, -22.290001 }
#define PALLET_MAXS Float:{ 27.340000, 26.629999, 29.020000 }
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1)
#define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor,%1)
new g_class[] = "amxx_pallets";
new phealth;
new losuj;
new bool:ma_klase[33];
new ilosc_workow_gracza[33];
new max_ilosc_workow_gracza[33];
new tryb[33];
new const nazwa[] = "Pomagier";
new const opis[] = "Moze ukladac worki z piaskiem (10 workow). Im ma wiecej inteligencji, tym worki sa mocniejsze";
new const bronie = 1<<CSW_M249 | 1<<CSW_DEAGLE;
new const zdrowie = 30;
new const kondycja = 5;
new const inteligencja = 0;
new const wytrzymalosc = 30;
public plugin_init()
{
register_plugin(nazwa, "1.0", "AUTHOR");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
phealth = register_cvar("pomagier_health","250");
register_event("ResetHUD", "ResetHUD", "abe");
register_event("HLTV","event_newround", "a","1=0", "2=0");
register_forward(FM_PlayerPreThink, "PlayerPreThink")
register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
register_forward(FM_CmdStart,"fwd_CmdStart")
}
public cod_class_enabled(id)
{
ColorChat(id, GREEN, "Klasa %s zostala stworzona przez www.cs-...pl ", nazwa);
ma_klase[id] = true;
ResetHUD(id);
}
public plugin_natives()
{
register_native("cod_get_user_class_sandbag", "PobierzIlosc", 1);
register_native("cod_get_user_class_max_sandbag", "PobierzIloscMax", 1);
}
public plugin_precache()
{
precache_model("models/pallet_with_bags.mdl");
precache_model("models/pallet_with_bags2.mdl");
}
public cod_class_enabled(id)
{
#if defined PREMIUM
if(!(get_user_flags(id) & ADMIN_LEVEL_H))
{
ColorChat(id, GREEN, "[Pomagier] Nie masz uprawnien, aby uzywac tej klasy.")
return COD_STOP;
}
#endif
ma_klase[id] = true;
ilosc_workow_gracza[id] = ILOSC_WORKOW_GRACZA;
max_ilosc_workow_gracza[id] = ILOSC_WORKOW_GRACZA;
tryb[id] = 0;
return COD_CONTINUE;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public ResetHUD(id)
{
ilosc_workow_gracza[id] = ILOSC_WORKOW_GRACZA;
tryb[id] = 0;
}
public cod_class_skill_used(id)
{
switch(tryb[id])
{
case 0:
{
client_print(id, print_center, "Tryb stawiania workow");
tryb[id] = 1;
}
case 1:
{
client_print(id, print_center, "Tryb usuwania workow");
tryb[id] = 2;
}
case 2:
{
client_print(id, print_center, "Tryb strzelania");
tryb[id] = 0
}
}
}
public PlayerPreThink(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!ma_klase[id])
{
return FMRES_IGNORED;
}
switch(tryb[id])
{
case 1:
{
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK);
return FMRES_HANDLED;
}
case 2:
{
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK);
return FMRES_HANDLED;
}
}
return FMRES_HANDLED;
}
public UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!ma_klase[id])
{
return FMRES_IGNORED;
}
switch(tryb[id])
{
case 1:
{
set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );
}
case 2:
{
set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 );
}
}
return FMRES_HANDLED;
}
public fwd_CmdStart(id, uc_handle, seed)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!is_user_alive(id))
{
return FMRES_IGNORED;
}
if(!ma_klase[id])
{
return FMRES_IGNORED;
}
new buttons = get_uc(uc_handle, UC_Buttons)
new oldbuttons = get_user_oldbutton(id);
if((buttons & IN_ATTACK) || !(oldbuttons & IN_ATTACK))
{
return FMRES_IGNORED;
}
switch(tryb[id])
{
case 1:
{
PostawWorek(id);
set_uc(uc_handle, UC_Buttons, buttons & ~IN_ATTACK);
return FMRES_HANDLED;
}
case 2:
{
UsunWorek(id);
set_uc(uc_handle, UC_Buttons, buttons & ~IN_ATTACK);
return FMRES_HANDLED;
}
}
return FMRES_IGNORED;
}
public PostawWorek(id)
{
if(!ilosc_workow_gracza[id])
{
client_print(id, print_center, "Nie mozesz postawic juz wiecej workow z piaskiem! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_CONTINUE;
}
if(is_user_alive(id))
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "func_wall"));
set_pev(ent,pev_classname,g_class);
losuj = random(2);
switch(losuj)
{
case 0:
{
engfunc(EngFunc_SetModel,ent,"models/pallet_with_bags.mdl");
}
case 1:
{
engfunc(EngFunc_SetModel,ent,"models/pallet_with_bags2.mdl");
}
}
static Float:xorigin[3];
get_user_hitpoint(id,xorigin);
if(engfunc(EngFunc_PointContents,xorigin) == CONTENTS_SKY)
{
client_print(id, print_center, "Nie mozesz tu postawic workow! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_HANDLED;
}
static Float:p_mins[3], Float:p_maxs[3];
p_mins = PALLET_MINS;
p_maxs = PALLET_MAXS;
xorigin[2] += 30.0;
if(!checkBagsPlace(xorigin, p_mins, p_maxs))
{
client_print(id, print_center, "Nie mozesz tu postawic workow! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_HANDLED;
}
xorigin[2] -= 30.0
engfunc(EngFunc_SetSize, ent, p_mins, p_maxs);
set_pev(ent, pev_mins, p_mins);
set_pev(ent, pev_maxs, p_maxs );
set_pev(ent, pev_absmin, p_mins);
set_pev(ent, pev_absmax, p_maxs );
engfunc(EngFunc_SetOrigin, ent, xorigin);
set_pev(ent,pev_solid,SOLID_BBOX);
set_pev(ent,pev_movetype,MOVETYPE_FLY);
new Float:p_cvar_health = get_pcvar_float(phealth)+float(cod_get_user_intelligence(id, 1, 1, 1));
set_pev(ent,pev_health,p_cvar_health);
set_pev(ent,pev_takedamage,DAMAGE_YES);
static Float:rvec[3];
pev(id,pev_v_angle,rvec);
rvec[0] = 0.0;
set_pev(ent,pev_angles,rvec);
fm_drop_to_floor(ent);
ilosc_workow_gracza[id]--;
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public UsunWorek(id)
{
new ent, body, class[32];
get_user_aiming(id, ent, body);
if(ilosc_workow_gracza[id] == max_ilosc_workow_gracza[id])
{
client_print(id, print_center, "Nie postawiles jeszcze zadnego worka z piaskiem! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_CONTINUE;
}
if(pev_valid(ent) && ilosc_workow_gracza[id] != max_ilosc_workow_gracza[id])
{
pev(ent, pev_classname, class, 31);
if (equal(class, g_class))
{
fm_remove_entity(ent);
#if defined ODDAJWORKI
ilosc_workow_gracza[id]++;
#endif
return PLUGIN_CONTINUE;
}
else
{
client_print(id, print_center, "Wyceluj w worek! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_CONTINUE;
}
}
else
{
client_print(id, print_center, "Wyceluj w worek! Przywrocono tryb strzelania");
tryb[id] = 0;
return PLUGIN_CONTINUE;
}
return PLUGIN_CONTINUE;
}
public event_newround()
{
remove_allpalletswbags();
}
bool:checkBagsPlace(Float: fOrigin[3],Float: fMins[3],Float: fMaxs[3])
{
new Float:fOriginTmp[3]
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMins[0];
fOriginTmp[1] += fMaxs[1];
fOriginTmp[2] += fMaxs[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMaxs[0];
fOriginTmp[1] += fMaxs[1];
fOriginTmp[2] += fMaxs[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMins[0];
fOriginTmp[1] += fMins[1];
fOriginTmp[2] += fMaxs[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMaxs[0];
fOriginTmp[1] += fMins[1];
fOriginTmp[2] += fMaxs[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMins[0];
fOriginTmp[1] += fMaxs[1];
fOriginTmp[2] += fMins[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMaxs[0];
fOriginTmp[1] += fMaxs[1];
fOriginTmp[2] += fMins[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMins[0];
fOriginTmp[1] += fMins[1];
fOriginTmp[2] += fMins[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
fOriginTmp[0] += fMaxs[0];
fOriginTmp[1] += fMins[1];
fOriginTmp[2] += fMins[2];
if(!traceTo(fOrigin,fOriginTmp))
{
return false;
}
xs_vec_copy(fOrigin,fOriginTmp)
return true;
}
bool:traceTo(const Float:fFrom[3],const Float:fTo[3])
{
new tr = create_tr2();
engfunc(EngFunc_TraceLine, fFrom, fTo,DONT_IGNORE_MONSTERS, 0, tr);
new Float:fFrac;
get_tr2(tr, TR_flFraction, fFrac);
free_tr2(tr);
return (fFrac == 1.0);
}
stock get_user_hitpoint(id, Float:hOrigin[3])
{
if (!is_user_alive(id))
return 0;
new Float:fOrigin[3], Float:fvAngle[3], Float:fvOffset[3], Float:fvOrigin[3], Float:feOrigin[3];
new Float:fTemp[3];
pev(id, pev_origin, fOrigin);
pev(id, pev_v_angle, fvAngle);
pev(id, pev_view_ofs, fvOffset);
xs_vec_add(fOrigin, fvOffset, fvOrigin);
engfunc(EngFunc_AngleVectors, fvAngle, feOrigin, fTemp, fTemp);
xs_vec_mul_scalar(feOrigin, 9999.9, feOrigin);
xs_vec_add(fvOrigin, feOrigin, feOrigin);
engfunc(EngFunc_TraceLine, fvOrigin, feOrigin, 0, id);
global_get(glb_trace_endpos, hOrigin);
return 1;
}
stock remove_allpalletswbags()
{
new pallets = -1;
while((pallets = fm_find_ent_by_class(pallets, g_class)))
fm_remove_entity(pallets);
}
public PobierzIlosc(id)
{
if(ma_klase[id])
return ilosc_workow_gracza[id]
return 0;
}
public PobierzIloscMax(id)
{
if(ma_klase[id])
return max_ilosc_workow_gracza[id]
return 0;
}
//////END OF FILE//////
#include <amxmodx>
#include <amxmisc>
#include <codmod>
#include <engine>
#include <hamsandwich>
#include <fakemeta>
new const nazwa[] = "Skoczek";
new const opis[] = "Ma autoBH, dwie rakietki";
new const bronie = (1<<CSW_ELITE)|(1<<CSW_M4A1);
new const zdrowie = 35;
new const kondycja = 15;
new const inteligencja = 0;
new const wytrzymalosc = 0;
new sprite_blast;
new ilosc_rakiet_gracza[33];
new poprzednia_rakieta_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_touch("rocket", "*" , "DotykRakiety");
RegisterHam(Ham_Spawn, "player", "fwSpawn_Rakiety", 1);
register_forward(FM_PlayerPreThink, "fwPrethink_AutoBH");
}
public cod_class_enabled(id)
{
ColorChat(id, GREEN, "Klasa %s zostala stworzona przez www.cs-...pl ", nazwa);
ma_klase[id] = true;
ResetHUD(id);
}
public plugin_precache()
{
sprite_blast = precache_model("sprites/dexplo.spr");
precache_model("models/rpgrocket.mdl");
}
public client_disconnect(id)
{
new entRakiety = find_ent_by_class(0, "rocket");
while(entRakiety > 0)
{
if(entity_get_edict(entRakiety, EV_ENT_owner) == id)
remove_entity(entRakiety);
entRakiety = find_ent_by_class(entRakiety, "rocket");
}
}
public cod_class_enabled(id)
{
ilosc_rakiet_gracza[id] = 2;
ma_klase[id] = true;
}
public cod_class_disabled(id)
{
ma_klase[id] = false;
}
public cod_class_skill_used(id)
{
if (!ilosc_rakiet_gracza[id])
{
client_print(id, print_center, "Wykorzystales juz wszystkie rakiety!");
}
else
{
if(poprzednia_rakieta_gracza[id] + 2.0 > get_gametime())
{
client_print(id, print_center, "Rakiet mozesz uzywac co 2 sekundy!");
}
else
{
if (is_user_alive(id))
{
poprzednia_rakieta_gracza[id] = floatround(get_gametime());
ilosc_rakiet_gracza[id]--;
new Float: Origin[3], Float: vAngle[3], Float: Velocity[3];
entity_get_vector(id, EV_VEC_v_angle, vAngle);
entity_get_vector(id, EV_VEC_origin , Origin);
new Ent = create_entity("info_target");
entity_set_string(Ent, EV_SZ_classname, "rocket");
entity_set_model(Ent, "models/rpgrocket.mdl");
vAngle[0] *= -1.0;
entity_set_origin(Ent, Origin);
entity_set_vector(Ent, EV_VEC_angles, vAngle);
entity_set_int(Ent, EV_INT_effects, 2);
entity_set_int(Ent, EV_INT_solid, SOLID_BBOX);
entity_set_int(Ent, EV_INT_movetype, MOVETYPE_FLY);
entity_set_edict(Ent, EV_ENT_owner, id);
VelocityByAim(id, 1000 , Velocity);
entity_set_vector(Ent, EV_VEC_velocity ,Velocity);
}
}
}
}
public fwSpawn_Rakiety(id)
{
if(is_user_alive(id))
ilosc_rakiet_gracza[id] = 2;
}
public DotykRakiety(ent)
{
if (!is_valid_ent(ent))
return;
new attacker = entity_get_edict(ent, EV_ENT_owner);
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);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();
new entlist[33];
new numfound = find_sphere_class(ent, "player", 190.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, 55.0, 0.9, ent, (1<<24));
}
remove_entity(ent);
}
public fwPrethink_AutoBH(id)
{
if(!ma_klase[id])
return PLUGIN_CONTINUE
if (pev(id, pev_button) & IN_JUMP) {
new flags = pev(id, pev_flags)
if (flags & FL_WATERJUMP)
return FMRES_IGNORED;
if ( pev(id, pev_waterlevel) >= 2 )
return FMRES_IGNORED;
if ( !(flags & FL_ONGROUND) )
return FMRES_IGNORED;
new Float:velocity[3];
pev(id, pev_velocity, velocity);
velocity[2] += 250.0;
set_pev(id, pev_velocity, velocity);
set_pev(id, pev_gaitsequence, 6);
}
return FMRES_IGNORED;
}