Raised This Month: $ Target: $400
 0% 

[[HELP]] Why does this plugin crash my server?


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Iwon
BANNED
Join Date: Jul 2008
Old 08-04-2008 , 12:49   Re: [[HELP]] Why does this plugin crash my server?
Reply With Quote #3

I indented the code should work now
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <engine>

#define MAX_PORTALS 10
#define MAX_TARGETS 10
#define MAX_ALLROUNDS   10
#define MAX_BLACKHOLES  10

#define ADMIN_FLAG  ADMIN_LEVEL_A

new mapPortals[MAX_PORTALS]
new 
mapTargets[MAX_TARGETS]
new 
mapAllrounds[MAX_ALLROUNDS]
new 
mapBlackholes[MAX_BLACKHOLES]

new 
numPortals
new numTargets
new numAllrounds
new numBlackholes

new portal_model[64] = "sprites/e-tele1.spr"
new target_model[64] = "sprites/b-tele1.spr"
new allround_model[64] = "sprites/exit1.spr"
new blackhole_model[64] = "models/blackhole.mdl"

public plugin_precache() {
    
precache_model(portal_model)
    
precache_model(target_model)
    
precache_model(allround_model)
    
precache_model(blackhole_model)
    
precache_sound("debris/beamstart1.wav")
    
precache_sound("debris/beamstart7.wav")
}

public 
plugin_init() {
    
register_plugin("AMX Portal""1.4""KleeneX")
    
register_clcmd("amx_portal","create_portal",ADMIN_FLAG,": Create a Portal")
    
register_clcmd("amx_ptarget","create_target",ADMIN_FLAG,": Create a Portal Target")
    
register_clcmd("amx_aportal","create_allround",ADMIN_FLAG,": Create a Allround")
    
register_clcmd("amx_blackhole","create_blackhole",ADMIN_FLAG,": Create a Blackhole")
    
    
register_clcmd("amx_r_portal","remove_portal",ADMIN_FLAG,": Remove all Portals")
    
register_clcmd("amx_r_ptarget","remove_target",ADMIN_FLAG,": Remove all Targets")
    
register_clcmd("amx_r_aportal","remove_allround",ADMIN_FLAG,": Remove all Allrounds")
    
register_clcmd("amx_r_blackhole","remove_blackhole",ADMIN_FLAG,": Remove all Blackholes")
    
    
register_clcmd("amx_portalmenu","cmdPortalMenu",ADMIN_FLAG,": Open the Portal Menu")
    
register_menucmd(register_menuid("\rPortal Menu:"),1023,"actionPortalMenu")
}

public 
create_portal(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
if(numPortals == MAX_PORTALS) {
        
console_print(id"Too many portals.")
        return 
PLUGIN_HANDLED
    
}
    
    new 
Origin[3]
    
get_user_origin(id,Origin)
    
    new 
Float:pOrigin[3]
    
IVecFVec(OriginFloat:pOrigin)
    
    new 
portal create_entity("info_target")
    
entity_set_string(portal,EV_SZ_classname,"amx_portal")
    
    
entity_set_model(portalportal_model)
    
entity_set_int(portalEV_INT_flagsFL_ALWAYSTHINK)
    
set_rendering(portalkRenderFxNone000kRenderTransAdd255)
    
    new 
Float:MinBox[3] = {-16.0, -16.00.0}
    new 
Float:MaxBox[3] = {16.016.016.0}
    
entity_set_vector(portalEV_VEC_minsMinBox)
    
entity_set_vector(portalEV_VEC_maxsMaxBox)
    
    
entity_set_int(portalEV_INT_solid1)
    
    
pOrigin[1] += 50
    entity_set_origin
(portal,pOrigin)
    
    
mapPortals[numPortals] = portal
    
++numPortals
    
return PLUGIN_HANDLED
}

public 
create_target(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
if(numTargets == MAX_TARGETS) {
        
console_print(id"Too many targets.")
        return 
PLUGIN_HANDLED
    
}
    
    new 
Origin[3]
    
get_user_origin(id,Origin)
    
    new 
Float:pOrigin[3]
    
IVecFVec(OriginFloat:pOrigin)
    
    new 
target create_entity("info_target")
    
entity_set_string(target,EV_SZ_classname,"amx_ptarget")
    
    
entity_set_model(targettarget_model)
    
entity_set_int(targetEV_INT_flagsFL_ALWAYSTHINK)
    
set_rendering(targetkRenderFxNone000kRenderTransAdd255)
    
    
pOrigin[1] += 50
    entity_set_origin
(target,pOrigin)
    
    
mapTargets[numTargets] = target
    
++numTargets
    
return PLUGIN_HANDLED
}

public 
create_allround(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
if(numAllrounds == MAX_ALLROUNDS) {
        
console_print(id"Too many allrounds.")
        return 
PLUGIN_HANDLED
    
}
    
    new 
Origin[3]
    
get_user_origin(id,Origin)
    
    new 
Float:pOrigin[3]
    
IVecFVec(OriginFloat:pOrigin)
    
    new 
allround create_entity("info_target")
    
entity_set_string(allround,EV_SZ_classname,"amx_aportal")
    
    
entity_set_model(allroundallround_model)
    
entity_set_int(allroundEV_INT_flagsFL_ALWAYSTHINK)
    
set_rendering(allroundkRenderFxNone000kRenderTransAdd255)
    
    new 
Float:MinBox[3] = {-16.0, -16.00.0}
    new 
Float:MaxBox[3] = {16.016.016.0}
    
entity_set_vector(allroundEV_VEC_minsMinBox)
    
entity_set_vector(allroundEV_VEC_maxsMaxBox)
    
    
entity_set_int(allroundEV_INT_solid1)
    
    
pOrigin[1] += 50
    entity_set_origin
(allround,pOrigin)
    
    
mapAllrounds[numAllrounds] = allround
    
++numAllrounds
    
return PLUGIN_HANDLED
}

public 
create_blackhole(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
if(numBlackholes == MAX_BLACKHOLES) {
        
console_print(id"Too many blackholes.")
        return 
PLUGIN_HANDLED
    
}
    
    new 
Float:vOrigin[3]
    new 
Float:vAngles[3]
    
entity_get_vector(idEV_VEC_originvOrigin)
    
entity_get_vector(idEV_VEC_v_anglevAngles)
    
    new 
blackhole create_entity("info_target")
    
    
entity_set_string(blackholeEV_SZ_classname"amx_blackhole")
    
    
entity_set_model(blackholeblackhole_model)
    
entity_set_size(blackholeFloat:{-40.0,-30.0,-40.0}, Float:{40.0,30.0,40.0})
    
    new 
Float:vNewOrigin[3]
    new 
Float:vNormal[3]
    new 
Float:vTraceDirection[3]
    new 
Float:vTraceEnd[3]
    new 
Float:vTraceResult[3]
    new 
Float:vEntAngles[3]
    
    
VelocityByAim(id64vTraceDirection)
    
    
vTraceEnd[0] = vTraceDirection[0] + vOrigin[0]
    
vTraceEnd[1] = vTraceDirection[1] + vOrigin[1]
    
vTraceEnd[2] = vTraceDirection[2] + vOrigin[2]
    
    
trace_line(idvOriginvTraceEndvTraceResult)
    
    if(
trace_normal(idvOriginvTraceEndvNormal) == 0) {
        
remove_entity(blackhole)
        
console_print(id"You must create a blackhole on a wall!")
        return 
PLUGIN_HANDLED_MAIN
    
}
    
    
vNewOrigin[0] = vTraceResult[0] + (vNormal[0] * 10.0)
    
vNewOrigin[1] = vTraceResult[1] + (vNormal[1] * 10.0)
    
vNewOrigin[2] = vTraceResult[2] + (vNormal[2] * 10.0)
    
    
entity_set_int(blackholeEV_INT_solid1)
    
entity_set_int(blackholeEV_INT_flagsFL_ALWAYSTHINK)
    
    
entity_set_origin(blackholevNewOrigin)
    
vector_to_angle(vNormalvEntAngles)
    
    
entity_set_vector(blackholeEV_VEC_anglesvEntAngles)
    
    
mapBlackholes[numBlackholes] = blackhole
    
++numBlackholes
    
return PLUGIN_HANDLED
}

public 
remove_portal(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
for(new 0numPortalsa++) {
        
remove_entity(mapPortals[a])
    }
    
numPortals 0
    
return PLUGIN_HANDLED
}

public 
remove_target(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
for(new 0numTargetsa++) {
        
remove_entity(mapTargets[a])
    }
    
numTargets 0
    
return PLUGIN_HANDLED
}

public 
remove_allround(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
for(new 0numAllroundsa++) {
        
remove_entity(mapAllrounds[a])
    }
    
numAllrounds 0
    
return PLUGIN_HANDLED
}

public 
remove_blackhole(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    
for(new 0numBlackholesa++) {
        
remove_entity(mapBlackholes[a])
    }
    
numBlackholes 0
    
return PLUGIN_HANDLED
}

public 
server_frame() {
    for(new 
0<= numPortals; ++a) {
        if(
is_valid_ent(mapPortals[a])) {
            if(
entity_get_float(mapPortals[a], EV_FL_frame) < 0.0 || entity_get_float(mapPortals[a], EV_FL_frame) > 25) {
                
entity_set_float(mapPortals[a], EV_FL_frame0.0)
            }
            else 
entity_set_float(mapPortals[a], EV_FL_frameentity_get_float(mapPortals[a], EV_FL_frame) + 0.5)
        }
    }
    for(new 
0<= numTargets; ++a) {
        if(
is_valid_ent(mapTargets[a])) {
            if(
entity_get_float(mapTargets[a], EV_FL_frame) < 0.0 || entity_get_float(mapTargets[a], EV_FL_frame) > 25) {
                
entity_set_float(mapTargets[a], EV_FL_frame0.0)
            }
            else 
entity_set_float(mapTargets[a], EV_FL_frameentity_get_float(mapTargets[a], EV_FL_frame) + 0.5)
        }
    }
    for(new 
0<= numAllrounds; ++a) {
        if(
is_valid_ent(mapAllrounds[a])) {
            if(
entity_get_float(mapAllrounds[a], EV_FL_frame) < 0.0 || entity_get_float(mapAllrounds[a], EV_FL_frame) > 25) {
                
entity_set_float(mapAllrounds[a], EV_FL_frame0.0)
            }
            else 
entity_set_float(mapAllrounds[a], EV_FL_frameentity_get_float(mapAllrounds[a], EV_FL_frame) + 0.5)
        }
    }
    for(new 
0<= numBlackholes; ++a) {
        if(
is_valid_ent(mapBlackholes[a])) {
            if(
entity_get_float(mapBlackholes[a], EV_FL_frame) < 195.0 || entity_get_float(mapBlackholes[a], EV_FL_frame) > 255) {
                
entity_set_float(mapBlackholes[a], EV_FL_frame195.0)
            }
            else 
entity_set_float(mapBlackholes[a], EV_FL_frameentity_get_float(mapBlackholes[a], EV_FL_frame) + 1.5)
        }
    }
}

public 
pfn_touch(ptr,ptd) {
    if (
ptr && ptd 0) {
        new 
Portal[32]
        
entity_get_string(ptrEV_SZ_classnamePortal31)
        if ( 
equal(Portal,"amx_portal") ) {
            if(
numTargets == 0) return PLUGIN_HANDLED
            
else{
                new 
random_targetOrigin[3]
                new 
Float:eOrigin[3]
                
random_target mapTargets[random_num(0,numTargets 1)]
                
entity_get_vector(random_targetEV_VEC_origineOrigin )
                
FVecIVec(Float:eOrigin,Origin)
                
                
Origin[0] += 80
                Origin
[1] += 80
                Origin
[2] += 10
                
                
new Float:velocity[3]
                
entity_get_vector(ptdEV_VEC_velocityvelocity)
                
emit_sound(ptrCHAN_WEAPON"debris/beamstart1.wav"0.4ATTN_NORM0PITCH_NORM)
                
                
set_user_origin(ptd,Origin)
                
                
velocity[2] = random_float(200.0225.0)
                
entity_set_vector(ptdEV_VEC_velocityvelocity)
                
emit_sound(random_targetCHAN_WEAPON"debris/beamstart7.wav"0.4ATTN_NORM0PITCH_NORM)
            }
        }
        if ( 
equal(Portal,"amx_aportal") ) {
            if(
numAllrounds == 1) return PLUGIN_HANDLED
            
else{
                new 
random_targetOrigin[3]
                new 
Float:eOrigin[3]
                
random_target mapAllrounds[random_num(0,numAllrounds 1)]
                if(
random_target != ptr) {
                    
entity_get_vector(random_targetEV_VEC_origineOrigin )
                    
FVecIVec(Float:eOrigin,Origin)
                    
                    
Origin[0] += 80
                    Origin
[1] += 80
                    Origin
[2] += 10
                    
                    
new Float:velocity[3]
                    
entity_get_vector(ptdEV_VEC_velocityvelocity)
                    
emit_sound(ptrCHAN_WEAPON"debris/beamstart1.wav"0.4ATTN_NORM0PITCH_NORM)
                    
                    
set_user_origin(ptd,Origin)
                    
                    
velocity[2] = random_float(200.0225.0)
                    
entity_set_vector(ptdEV_VEC_velocityvelocity)
                    
emit_sound(random_targetCHAN_WEAPON"debris/beamstart7.wav"0.4ATTN_NORM0PITCH_NORM)
                }
            }
        }
        if(
equal(Portal,"amx_blackhole")) {
            if(
numBlackholes == 1) {
                
//user_kill(ptd,1)
                
return PLUGIN_HANDLED
                
}else{
                new 
random_target
                
new Float:eOrigin[3]
                
random_target mapBlackholes[random_num(0,numBlackholes 1)]
                if(
random_target != ptr) {
                    
entity_get_vector(random_targetEV_VEC_origineOrigin )
                    
                    new 
Float:vEntAngles[3]
                    
entity_get_vector(random_targetEV_VEC_anglesvEntAngles)
                    
                    if(
vEntAngles[0] < 181)
                        
eOrigin[2] += 50
                    
else if(vEntAngles[0] < 361)    
                        
eOrigin[2] -= 50
                    
                    
if(vEntAngles[1] == 0)
                        
eOrigin[0] += 80
                    
else if(vEntAngles[1] < 91)
                        
eOrigin[1] += 80
                    
else if(vEntAngles[1] < 181)
                        
eOrigin[0] -= 80
                    
else if(vEntAngles[1] < 271)
                        
eOrigin[1] -= 80
                    
                    
new Float:velocity[3]
                    new 
players[32],pnum
                    get_players
(players,pnum)
                    
entity_get_vector(ptdEV_VEC_velocityvelocity)
                    
                    
emit_sound(ptrCHAN_WEAPON"debris/beamstart1.wav"0.4ATTN_NORM0PITCH_NORM)
                    
entity_set_vector(ptd,EV_VEC_origin,eOrigin)
                    
emit_sound(random_targetCHAN_WEAPON"debris/beamstart7.wav"0.4ATTN_NORM0PITCH_NORM)
                    
                    if(
vEntAngles[0] < 361 && vEntAngles[0] > 180)  
                        
velocity[2] = random_float(-200.0, -225.0)
                    else
                        
velocity[2] = random_float(200.0225.0)
                    
entity_set_vector(ptdEV_VEC_velocityvelocity)
                }
            }
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
cmdPortalMenu(id,level,cid) {
    if (!
cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
    displayPortalMenu
(id)
    return 
PLUGIN_HANDLED
}

public 
displayPortalMenu(id) {
    new 
MenuBody[256], keys
    
    
new nLen formatMenuBody255"\rPortal Menu:^n" )
    
    if (
numPortals == MAX_PORTALSnLen += formatMenuBody[nLen], 255-nLen,"^n\w1. Create Portal \r(Limit reached)")
    else 
nLen += formatMenuBody[nLen], 255-nLen"^n\w1. Create Portal" )
    if (
numTargets == MAX_TARGETSnLen += formatMenuBody[nLen],255-nLen,"^n\w2. Create Target \r(Limit reached)")
    else 
nLen += formatMenuBody[nLen],255-nLen,"^n\w2. Create Target")
    if (
numAllrounds == MAX_ALLROUNDSnLen += formatMenuBody[nLen],255-nLen,"^n\w3. Create Allround \r(Limit reached)")
    else 
nLen += formatMenuBody[nLen],255-nLen,"^n\w3. Create Allround")
    if (
numBlackholes == MAX_BLACKHOLESnLen += formatMenuBody[nLen],255-nLen,"^n\w4. Create Blackhole \r(Limit reached)^n")
    else 
nLen += formatMenuBody[nLen],255-nLen,"^n\w4. Create Blackhole^n")
    
nLen += formatMenuBody[nLen], 255-nLen"^n\w5. Remove Portals" )
    
nLen += formatMenuBody[nLen], 255-nLen"^n\w6. Remove Targets" )
    
nLen += formatMenuBody[nLen], 255-nLen"^n\w7. Remove Allround" )
    
nLen += formatMenuBody[nLen], 255-nLen"^n\w8. Remove Blackholes^n" )
    
nLen += formatMenuBody[nLen], 255-nLen"^n\y0. Exit" )
    
    
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
    
    
show_menuidkeysMenuBody, -1)
    
    return 
PLUGIN_CONTINUE
}

public 
actionPortalMenu(id,key) {
    new 
cidlevel
    
switch(key) {
        case 
0create_portal(id,level,cid)
            case 
1create_target(id,level,cid)
            case 
2create_allround(id,level,cid)
            case 
3create_blackhole(id,level,cid)
            case 
4remove_portal(id,level,cid)
            case 
5remove_target(id,level,cid)
            case 
6remove_allround(id,level,cid)
            case 
7remove_blackhole(id,level,cid)
        }
    if (
key != 9displayPortalMenu(id)
    return 
PLUGIN_HANDLED

Attached Files
File Type: sma Get Plugin or Get Source (portal.sma - 615 views - 13.8 KB)
Iwon is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:40.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode