Arkadaşlar yok mu bu plugini istediğim gibi yapacak. Yetkililer yapamasanız bile en azından bir cevap verin olur veya olmaz.
Kod:
#include <amxmodx>
#include <hamsandwich>
#include <engine>

#define VERSION "1.0"

new Float:MinsMaxs[2][3][3]

new iTotalZones

public plugin_init() {
    register_plugin("NoKillZones",VERSION,"Firippu")
    
    new file[40],configsdir[24]
    get_localinfo("amxx_configsdir",configsdir,23)
    format(file,39,"%s/NoKillZones.ini",configsdir)
    
    new fh = fopen(file,"rt")
    if(!fh) {
        return PLUGIN_CONTINUE
    }
    
    new szMap[32]
    get_mapname(szMap,31)
    
    new i,szMapName[32],szTotalZones[3]
    while(!feof(fh)) {
        static szBuffer[49]
        
        fgets(fh,szBuffer,charsmax(szBuffer))
        
        if(!equali(szMap,szMapName)) {
            parse(szBuffer,szMapName,charsmax(szMap))
            
            if(equali(szMap,szMapName)) {
                szMap = szMapName
            }
        } else if(str_to_num(szTotalZones) == 0) {
            parse(szBuffer,szTotalZones,charsmax(szTotalZones))
            
            iTotalZones = str_to_num(szTotalZones)
        } else if(iTotalZones>i) {
            static szMins0[8],szMins1[8],szMins2[8],szMaxs0[8],szMaxs1[8],szMaxs2[8]
            
            parse(szBuffer,szMins0,charsmax(szMins0),szMins1,charsmax(szMins1),szMins2,charsmax(szMins2),szMaxs0,charsmax(szMaxs0),szMaxs1,charsmax(szMaxs1),szMaxs2,charsmax(szMaxs2))
            
            MinsMaxs[0][i][0] = str_to_float(szMins0); MinsMaxs[0][i][1] = str_to_float(szMins1); MinsMaxs[0][i][2] = str_to_float(szMins2)
            MinsMaxs[1][i][0] = str_to_float(szMaxs0); MinsMaxs[1][i][1] = str_to_float(szMaxs1); MinsMaxs[1][i][2] = str_to_float(szMaxs2)
            
            i++
        }
    }
    
    fclose(fh)
    
    if(iTotalZones != 0) {
        RegisterHam(Ham_TakeDamage,"player","fwdTakeDmg")
    }
    
    return PLUGIN_CONTINUE
}

public fwdTakeDmg(iVictim,iInflictor,iAttacker) {
    static Float:vVictimOrigin[3],Float:vAttackerOrigin[3]
    
    entity_get_vector(iVictim,EV_VEC_origin,vVictimOrigin)
    entity_get_vector(iAttacker,EV_VEC_origin,vAttackerOrigin)
    
    for(new i=0; i<iTotalZones; i++) {
        if(CheckZone(i,iVictim,iAttacker,vVictimOrigin,vAttackerOrigin) != 0) {
            entity_set_vector(iVictim,EV_VEC_punchangle,Float:{0.0,0.0,0.0})
            
            return HAM_SUPERCEDE
        }
    }
    
    return HAM_IGNORED
}

public CheckZone(iZone,iVictim,iAttacker,Float:vVictimOrigin[3],Float:vAttackerOrigin[3]) {
    if(vVictimOrigin[0]>MinsMaxs[0][iZone][0] && vVictimOrigin[0]<MinsMaxs[1][iZone][0]
    && vVictimOrigin[1]>MinsMaxs[0][iZone][1] && vVictimOrigin[1]<MinsMaxs[1][iZone][1]
    && vVictimOrigin[2]>MinsMaxs[0][iZone][2] && vVictimOrigin[2]<MinsMaxs[1][iZone][2]
    || vAttackerOrigin[0]>MinsMaxs[0][iZone][0] && vAttackerOrigin[0]<MinsMaxs[1][iZone][0]
    && vAttackerOrigin[1]>MinsMaxs[0][iZone][1] && vAttackerOrigin[1]<MinsMaxs[1][iZone][1]
    && vAttackerOrigin[2]>MinsMaxs[0][iZone][2] && vAttackerOrigin[2]<MinsMaxs[1][iZone][2]) {
        engclient_print(iAttacker,engprint_center,"[pG`Surf Koruma!]Burada zarar veremezsin")
        engclient_print(iVictim,engprint_center,"[pG ` Surf Koruma!]Bu Bolge Korumalidir!")
        
        return 1
    }
    
    return 0
}