Re: help with code optimizing
Quote:
Originally Posted by arkshine
(Post 659027)
You should review your code G-Dog, it's badly optimized, really.
|
ok I noticed I could have done a few things better, still learning actually so any pointers are welcome
Code:
#include <amxmodx>
#include <fakemeta>
#include <colorchat>
/* Night Club
* Original from "Advanced Roll The Dice"
*
* (c) Copyright 2008 xPaw.
*
* Credits:
*
* Striker - his "Advanced Roll The Dice"
* OpenMind - Helping ;)
*/
//sprites
new sprflare[7];
//pcvars
new cvar_time, cvar_count;
//misc
new bool:Nightclub, timer_ent, timer;
new soundlist[8][] = {
"misc/xPaw/benny1.wav", "misc/xPaw/candyshop.mp3", "misc/xPaw/crazy.mp3",
"misc/xPaw/fighter.mp3", "misc/xPaw/poppin.mp3", "misc/xPaw/vodka.mp3",
"misc/xPaw/makeit.mp3", "misc/xPaw/coco.mp3"
}
new partynames[8][] = {
"60-x Party^x01 :)", "50cent!", "CrazyGirl!", "DJ Fighter!", "DJ DarkSide ;D",
"MC Russ!", "Mp3 :/", "DJ CoCo :D"
}
new flarelist[7][] = {
"sprites/fireworks/bflare.spr", "sprites/fireworks/rflare.spr", "sprites/fireworks/gflare.spr",
"sprites/fireworks/tflare.spr", "sprites/fireworks/oflare.spr", "sprites/fireworks/pflare.spr",
"sprites/fireworks/yflare.spr"
}
new rmin[7] = { 0, 129, 0, 0, 129, 129, 129 }
new rmax[7] = { 126, 255, 126, 126, 255, 255, 255 }
new gmin[7] = { 0, 0, 129, 129, 101, 0, 129 }
new gmax[7] = { 126, 126, 255, 255, 199, 126, 255 }
new bmin[7] = { 129, 0, 0, 129, 0, 101, 0 }
new bmax[7] = { 255, 126, 126, 255, 126, 199, 126 }
new const plugin[] = "Night Club"
new const version[] = "1.6"
new const author[] = "xPaw"
public plugin_init()
{
register_plugin(plugin,version,author);
cvar_time = register_cvar("sv_club_time", "10");
cvar_count = register_cvar("sv_club_flare_count", "12");
timer_ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if ( pev_valid(timer_ent) )
{
set_pev(timer_ent, pev_classname, "timer_loop");
set_pev(timer_ent, pev_nextthink, get_gametime() + 0.1);
register_forward(FM_Think, "timer_think");
}
}
public plugin_precache()
{
new i
for( i = 0; i < 8; i++ )
engfunc(EngFunc_PrecacheSound, soundlist[i]);
for( i = 0; i < 7; i++ )
sprflare[i] = engfunc(EngFunc_PrecacheModel, flarelist[i]);
}
public client_command(id) //was trying to get everything done at once, is it actually better to register the 5(3 if use say) differant commands instead?
{
static cmd[10];
read_argv(1,cmd,9);
if ( equali( cmd, "say", 3 ) || equali( cmd, "say_team", 8 ) ) {
read_argv(2,cmd,9);
//strip "/" if it's there
if ( equali( cmd, "/", 1 ) ) copy( cmd, 9, cmd[1] );
}
if ( equali(cmd, "club",4) ) {
start_nightclub(id);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public client_disconnect(id) {
timer = 0;
nightclub_off(id);
}
public timer_think(ent)
{
if ( ent != timer_ent ) return FMRES_IGNORED;
if ( timer > 0 ) {
new id = pev(timer_ent, pev_owner);
single_knife(id);
timer--;
if ( timer == 0 ) nightclub_off(id);
}
set_pev(timer_ent, pev_nextthink, get_gametime() + 0.1);
return FMRES_HANDLED;
}
start_nightclub(id)
{
if( !is_user_alive(id) ) ColorChat(id, RED, "^x01**^x04 Dead people dont go to^x03 Nightclub!")
if( Nightclub ) ColorChat(id, RED, "^x01**^x04 Now you cant go to^x03 Nightclub,^x04 try later!")
else
{
new rand = random_num(0,7);
static User[32];
get_user_name(id,User,31);
Nightclub = true;
set_pev(timer_ent, pev_owner, id);
timer = ( get_pcvar_num(cvar_time) + 2 ) * 90;
ColorChat(0, BLUE, "^x01**^x03 %s^x04 is dancing at the^x03 NightClub,^x04 here is^x01 %s",User, partynames[rand]);
client_cmd(0, "%s %s", rand == 0 ? "spk" : "mp3 play", soundlist[rand]);
}
}
nightclub_off(id) {
ColorChat(0, RED, "^x01**^x04 Now^x03 Nightclub^x04 is open for ^x01guests!");
Nightclub = false;
timer = 0;
_set_rendering(id);
}
single_knife(id)
{
new rand = random_num(0, 6);
new r,g,b
r = random_num(rmin[rand],rmax[rand]);
g = random_num(gmin[rand],gmax[rand]);
b = random_num(bmin[rand],bmax[rand]);
static korigin[3];
get_user_origin(id,korigin)
_set_rendering(id,kRenderFxGlowShell,r,g,b,kRenderTransAlpha,255)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(15); // TE_SPRITETRAIL
write_coord(korigin[0]); // coord, coord, coord (start)
write_coord(korigin[1]);
write_coord(korigin[2]-20);
write_coord(korigin[0]); // coord, coord, coord (end)
write_coord(korigin[1]);
write_coord(korigin[2]+20);
write_short(sprflare[rand]);
write_byte(get_pcvar_num(cvar_count)); // byte (count)
write_byte(10); // byte (life in 0.1's)
write_byte(10); // byte (scale in 0.1's)
write_byte(random_num(40,100)); // byte (velocity along vector in 10's)
write_byte(40); // byte (randomness of velocity in 10's)
message_end();
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(27);
write_coord(korigin[0]); // coord, coord, coord (start)
write_coord(korigin[1]);
write_coord(korigin[2]);
write_byte(30); // byte (radius in 10's)
write_byte(r); // byte byte byte (color)
write_byte(g);
write_byte(b);
write_byte(70); // byte (life in 10's)
write_byte(11); // byte (decay rate in 10's)
message_end();
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(122); // very similar to lavasplash.
write_coord(korigin[0]); // coord, coord, coord (start)
write_coord(korigin[1]);
write_coord(korigin[2]);
write_short (random_num(400,1000));
write_byte (random_num(0,255)); // (particle color)
write_byte (40); // (duration * 10) (will be randomized a bit)
message_end();
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(14);
write_coord(korigin[0]);
write_coord(korigin[1]);
write_coord(korigin[2]-100);
write_byte(3500); // radius
write_byte(80);
write_byte(20);
message_end();
}
_set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
if ( !pev_valid(index) ) return 0;
set_pev(index, pev_renderfx, fx);
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(index, pev_rendercolor, RenderColor);
set_pev(index, pev_rendermode, render);
set_pev(index, pev_renderamt, float(amount));
return 1;
}
|