Stawianie + Skamienienie:
public UzyjMiny(id){
new Float:vfOrigin[3];
new name [32];
get_user_name(id, name, 31);
pev(id, pev_origin, vfOrigin);
new minao = get_pcvar_num(gPcvarMinaOdl);
if((PrzeszkodaMina(vfOrigin, minao*1.0)) && (!gPlayerMinaUsed[id]))
Mina(id);
else if(!gPlayerMinaUsed[id])
client_print(id, print_center, "[Mina] Stoisz za blisko przeszkody!");
return PLUGIN_HANDLED;
}
PrzeszkodaMina(const Float:vfPunkt[3], Float:odleglosc){
new Float:vfStart[3], Float:vfEnd[3];
vfStart[0] = vfEnd[0] = vfPunkt[0];
vfStart[1] = vfEnd[1] = vfPunkt[1];
vfStart[2] = vfEnd[2] = vfPunkt[2];
//1
vfStart[0] += odleglosc;
vfEnd[0] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
//2
vfStart[0] -= odleglosc;
vfEnd[0] += odleglosc;
vfStart[1] += odleglosc;
vfEnd[1] -= odleglosc;
if(engfunc( EngFunc_PointContents, vfStart ) != CONTENTS_EMPTY
&& engfunc( EngFunc_PointContents, vfEnd ) != CONTENTS_EMPTY)
return 0;
return 1;
}
public Mina(id){
if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_CONTINUE
if(gPlayerMinaUsed[id] || g_PlayerBadges[id][BADGE_NUMBER12]==0)
return PLUGIN_HANDLED;
gPlayerMinaUsed[id]=true;
DisplayHUD(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, "mina");
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);
mina[ent]=g_PlayerBadges[id][BADGE_NUMBER12]
engfunc(EngFunc_SetModel, ent, "models/bf4mod/mina.mdl")
entity_set_size(ent,Float:{-4.0,-8.0,-2.0},Float:{4.0,8.0,0.1});
new WidzMiny1 = get_pcvar_num(gPcvarWidzMiny1);
new WidzMiny2 = get_pcvar_num(gPcvarWidzMiny2);
new WidzMiny3 = get_pcvar_num(gPcvarWidzMiny3);
new WidzMiny4 = get_pcvar_num(gPcvarWidzMiny4);
new WidzMiny5 = get_pcvar_num(gPcvarWidzMiny5);
switch(g_PlayerBadges[id][BADGE_NUMBER17]){
case 0: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny1);
case 1: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny2);
case 2: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny3);
case 3: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny4);
case 4: set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,WidzMiny5);
}
return PLUGIN_CONTINUE;
}
Dotyk:
public pfn_touch ( ent, ptd ){
if (ptd == 0)
return PLUGIN_CONTINUE
if(!is_user_connected(ent) || !is_user_alive(ent)) return PLUGIN_CONTINUE
new szClassNameMina[32], wlasciciel
if(pev_valid(ptd)){
wlasciciel = pev(ptd, pev_owner)
entity_get_string(ptd,EV_SZ_classname,szClassNameMina,31)
}
else
return PLUGIN_HANDLED;
if(equali(szClassNameMina,"mina")){
if (get_user_team(wlasciciel) != get_user_team(ptd))
{
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(wlasciciel) == get_user_team(pid))
continue;
switch(mina[ptd]){
case 1: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina1));
case 2: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina2));
case 3: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina3));
case 4: set_user_health(ent, get_user_health(ent)-get_pcvar_num(gPcvarMina4));
}
if (!is_user_alive(ent)) {
set_user_frags(wlasciciel, get_user_frags(wlasciciel)+1)
set_user_frags(ent, get_user_frags(ent)+1)
minakills[wlasciciel]++;
minadeath[ent]++;
totalkills[wlasciciel]++;
totaldeath[ent]++;
}
mina[ptd]=0
efekt_ekran_mina(ent)
efekt_wybuchu(ent)
remove_entity(ptd)
}
}
}
return PLUGIN_CONTINUE;
}
Użytkownik Danny OK edytował ten post 21.05.2014 13:08