I have a problem. When I use this semiclip, the server crashs.
Please do not say me that "Use other semiclip plugin." I need this plugin.
Could you help me about my problem?
Thanks for helping me
PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#define IsPlayer(%1) (1 <= %1 <= get_maxplayers())
new players[32], inum, semiclip_cvar, mp_friendlyfire, syncObj
new iTeams[33] = {-1, ...};
public plugin_init() {
register_plugin("Semiclip", "1.1", "Crusher918") // Edited by PurposeLess
RegisterHam(Ham_Player_PreThink, "player", "FwdHamPlayerPreThink", true)
RegisterHam(Ham_Killed, "player", "FwdHamPlayerKilled", true)
register_forward(FM_ShouldCollide, "FwdShouldCollide")
register_forward(FM_AddToFullPack, "FwdAddToFullPack", true)
semiclip_cvar = register_cvar("semiclip", "0")
mp_friendlyfire = register_cvar("mp_friendlyfire", "0")
syncObj = CreateHudSyncObj();
}
public FwdHamPlayerPreThink(const id) {
if(get_pcvar_num(semiclip_cvar)) {
Semiclip(id, SOLID_NOT)
}
}
public client_PostThink(id) {
if(get_pcvar_num(semiclip_cvar)) {
Semiclip(id, SOLID_SLIDEBOX)
}
}
public FwdHamPlayerKilled() {
if(get_pcvar_num(semiclip_cvar)) {
get_players(players, inum, "ae")
for(new i=0; i < inum; i++) {
entity_set_int(players[i], EV_INT_solid, SOLID_SLIDEBOX)
}
}
}
public FwdShouldCollide(const touched, const other) {
if(get_pcvar_num(mp_friendlyfire))
return FMRES_IGNORED;
if(get_pcvar_num(semiclip_cvar)) {
if(IsPlayer(touched) && IsPlayer(other)) {
iTeams[touched] = get_user_team(touched);
iTeams[other] = get_user_team(other);
if(iTeams[touched] == iTeams[other]) {
static id, body
get_user_aiming(touched, id, body)
if(id != touched && is_user_connected(id))
{
static name[32]
get_user_name(id, name, charsmax(name))
set_hudmessage(255,0,0, 0.0, 0.87, 0)
ShowSyncHudMsg(touched, syncObj, "%s", name)
}
forward_return(FMV_CELL, 0)
return FMRES_SUPERCEDE;
}
}
}
return FMRES_IGNORED;
}
public FwdAddToFullPack(es, e, iEnt, id, hostflags, player, pSet) {
if(get_pcvar_num(semiclip_cvar)) {
if(player && id != iEnt && get_orig_retval()) {
iTeams[id] = get_user_team(id);
iTeams[iEnt] = get_user_team(iEnt);
if(iTeams[id] == iTeams[iEnt])
set_es(es, ES_Solid, SOLID_NOT)
}
}
}
Semiclip(const id, const solid) {
if(get_pcvar_num(semiclip_cvar)) {
if(!is_user_alive(id))
return
get_players(players, inum, "a")
for(new i = 0; i < inum; i++) {
if(id != players[i]) {
iTeams[id] = get_user_team(id);
iTeams[players[i]] = get_user_team(players[i]);
if(iTeams[id] == iTeams[players[i]])
entity_set_int(players[i], EV_INT_solid, solid)
}
}
}
}