yani iki zombi iç içe girince hiç bir şekilde hasar almıyorlar mermi işlemiyor
bu sorunun düzeltilmesini istiyorum yardımlarınızı bekliyorum
Kod: Tümünü seç
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
new g_iSemiClip[33];
new Semi[33]
public plugin_init() {
register_plugin("Playerlarin Birbirinin Icinden Gecme", "1.0", "Optimist");
register_forward( FM_StartFrame, "fwStartFrame", 0 );
register_forward( FM_AddToFullPack, "fwFullPack", 1 );
RegisterHam(Ham_TakeDamage, "player", "Take_Damage")
RegisterHam(Ham_TakeDamage, "player", "Take_Damage_Post", 1)
}
public fwFullPack( es, e, ent, host, flags, player, pSet ) {
if( player && g_iSemiClip[ent] && g_iSemiClip[host] ) {
set_es(es, ES_Solid, SOLID_NOT);
}
return FMRES_IGNORED;
}
public fwStartFrame() {
static iPlayers[32], iNum, iPlayer, iPlayer2;
get_players(iPlayers, iNum);
arrayset(g_iSemiClip, 0, sizeof(g_iSemiClip));
new iTeams[33] = {-1, ...};
for( new i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[i];
if( !is_user_alive(iPlayer) )
continue;
for( new j = 0; j < iNum; j++ ) {
iPlayer2 = iPlayers[j];
if(iPlayer == iPlayer2 || !is_user_alive(iPlayer2))
continue;
static Float:vOrigin1[3], Float:vOrigin2[3];
pev(iPlayer, pev_origin, vOrigin1);
pev(iPlayer2, pev_origin, vOrigin2);
if( vector_distance( vOrigin1, vOrigin2 ) < 96) {
if(zp_get_user_zombie(iPlayer) == zp_get_user_zombie(iPlayer2) && !Semi[iPlayer] && !Semi[iPlayer2])
{
g_iSemiClip[iPlayer] = true;
g_iSemiClip[iPlayer2] = true;
}
if(!zp_get_user_zombie(iPlayer) == !zp_get_user_zombie(iPlayer2))
{
g_iSemiClip[iPlayer] = true;
g_iSemiClip[iPlayer2] = true;
}
if(!zp_get_user_zombie(iPlayer) == zp_get_user_zombie(iPlayer2))
{
g_iSemiClip[iPlayer] = false;
g_iSemiClip[iPlayer2] = false;
}
if(zp_get_user_zombie(iPlayer) == !zp_get_user_zombie(iPlayer2))
{
g_iSemiClip[iPlayer] = false;
g_iSemiClip[iPlayer2] = false;
}
}
}
}
for( new i = 0; i < iNum; i++ ) {
iPlayer = iPlayers[i];
if( is_user_alive(iPlayer) )
set_pev(iPlayer, pev_solid, g_iSemiClip[iPlayer] ? SOLID_NOT : SOLID_SLIDEBOX);
}
return FMRES_IGNORED;
}
public Take_Damage(victim, inflictor, attacker, Float:damage, damagebits)
{
if(!is_user_alive(victim) || !is_user_connected(attacker))
return
if(!zp_get_user_zombie(victim))
return
set_pev( victim, pev_solid, SOLID_SLIDEBOX )
Semi[victim] = 1
}
public Take_Damage_Post(victim, inflictor, attacker, Float:damage, damagebits)
{
if(!is_user_alive(victim) || !is_user_connected(attacker))
return
if(!zp_get_user_zombie(victim))
return
set_pev( victim, pev_solid, SOLID_SLIDEBOX )
Semi[victim] = 0
}