Zombie Plague sunucumda sorunsuzca kullandığım bir SemiClip eklentim var fakat bu eklenti oyun içinde zombilerin bazı anlarda hangi silahla vurursak vuralım hasar almamasına yol açıyor.. Hem uzak mesafeden hem de yakın mesafeden.. Kendimce ufak ayarlamalar çekmeye çalıştım, işe yaramadı. Yine moda uyumlu farklı bir iki eklenti kurup denedim, işe yaramadı. CSDurağının hazır modunu değil kendi düzenleyip kurduğum modu kullanıyorum fakat hazır ZP modunda da test ettim, yine sonuç aynı. Ek olarak bu sorunla ilk defa karşılaşıyorum, önceki sunucularımda hiç böyle bir sorun yoktu. Herhangi bir fikri olan veya düzeltebilecek birisi var mı?
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
}