+#include "../_all.qh"
+
+#include "mutator.qh"
+
#define _SSMAGIX "SUPERSPEC_OPTIONSFILE_V1"
-#define _ISLOCAL ((edict_num(1) == self) ? TRUE : FALSE)
-
-#define ASF_STRENGTH 1
-#define ASF_SHIELD 2
-#define ASF_MEGA_AR 4
-#define ASF_MEGA_HP 8
-#define ASF_FLAG_GRAB 16
-#define ASF_OBSERVER_ONLY 32
-#define ASF_SHOWWHAT 64
-#define ASF_SSIM 128
-#define ASF_FOLLOWKILLER 256
-#define ASF_ALL 0xFFFFFF
+#define _ISLOCAL ((edict_num(1) == self) ? true : false)
+
+const float ASF_STRENGTH = 1;
+const float ASF_SHIELD = 2;
+const float ASF_MEGA_AR = 4;
+const float ASF_MEGA_HP = 8;
+const float ASF_FLAG_GRAB = 16;
+const float ASF_OBSERVER_ONLY = 32;
+const float ASF_SHOWWHAT = 64;
+const float ASF_SSIM = 128;
+const float ASF_FOLLOWKILLER = 256;
+const float ASF_ALL = 0xFFFFFF;
.float autospec_flags;
-#define SSF_SILENT 1
-#define SSF_VERBOSE 2
-#define SSF_ITEMMSG 4
+const float SSF_SILENT = 1;
+const float SSF_VERBOSE = 2;
+const float SSF_ITEMMSG = 4;
.float superspec_flags;
.string superspec_itemfilter; //"classname1 classname2 ..."
if(Spectate(_player) == 1)
self.classname = "spectator";
- return TRUE;
+ return true;
}
void superspec_save_client_conf()
fh = fopen(fn, FILE_WRITE);
if(fh < 0)
{
- dprint("^1ERROR: ^7 superspec can not open ", fn, " for writing.\n");
+ LOG_TRACE("^1ERROR: ^7 superspec can not open ", fn, " for writing.\n");
}
else
{
float i;
if(_for.superspec_itemfilter == "")
- return TRUE;
+ return true;
if(_for.superspec_itemfilter == "")
- return TRUE;
+ return true;
float l = tokenize_console(_for.superspec_itemfilter);
for(i = 0; i < l; ++i)
{
if(argv(i) == _item.classname)
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
}
MUTATOR_HOOKFUNCTION(superspec_ItemTouch)
}
if((self.autospec_flags & ASF_SHIELD && _item.invincible_finished) ||
- (self.autospec_flags & ASF_STRENGTH && _item.strength_finished) ||
- (self.autospec_flags & ASF_MEGA_AR && _item.classname == "item_armor_large") ||
- (self.autospec_flags & ASF_MEGA_HP && _item.classname == "item_health_mega") ||
- (self.autospec_flags & ASF_FLAG_GRAB && _item.classname == "item_flag_team"))
+ (self.autospec_flags & ASF_STRENGTH && _item.strength_finished) ||
+ (self.autospec_flags & ASF_MEGA_AR && _item.itemdef == ITEM_ArmorMega) ||
+ (self.autospec_flags & ASF_MEGA_HP && _item.itemdef == ITEM_HealthMega) ||
+ (self.autospec_flags & ASF_FLAG_GRAB && _item.classname == "item_flag_team"))
{
if((self.enemy != other) || IS_OBSERVER(self))
var = strcat(var, text," ^7(^3 ", long, "^7 | ^3", short, " ^7)\n")
if(MUTATOR_RETURNVALUE) // command was already handled?
- return FALSE;
+ return false;
if(IS_PLAYER(self))
- return FALSE;
+ return false;
if(cmd_name == "superspec_itemfilter")
{
if(self.superspec_itemfilter == "")
{
superspec_msg("^3superspec_itemfilter^7 is ^1not^7 set", "\n^3superspec_itemfilter^7 is ^1not^7 set\n", self, "", 1);
- return TRUE;
+ return true;
}
float i;
float l = tokenize_console(self.superspec_itemfilter);
self.superspec_itemfilter = strzone(argv(1));
}
- return TRUE;
+ return true;
}
if(cmd_name == "superspec")
_aspeco = strcat(_aspeco, "^3 item_message ^7(short^5 im^7) makes superspectate print items that were picked up.\n");
_aspeco = strcat(_aspeco, "^7 Use cmd superspec_itemfilter \"item_class1 item_class2\" to set up a filter of what to show with ^3item_message.\n");
superspec_msg("^2Available Super Spectate ^3options:\n\n\n", "\n^2Available Super Spectate ^3options:\n", self, _aspeco, 1);
- return TRUE;
+ return true;
}
if(argv(1) == "clear")
superspec_msg("^3Current Super Spectate options are:\n\n\n\n\n", "\n^3Current Super Spectate options are:\n", self, _aspeco, 1);
- return TRUE;
+ return true;
}
/////////////////////
_aspeco = strcat(_aspeco, "^3 followkiller ^7(short ^5fk^7) to autospec the killer/off\n");
_aspeco = strcat(_aspeco, "^3 all ^7(short ^5aa^7) to turn everything on/off\n");
superspec_msg("^2Available Auto Spectate ^3options:\n\n\n", "\n^2Available Auto Spectate ^3options:\n", self, _aspeco, 1);
- return TRUE;
+ return true;
}
float i, _bits = 0, _start = 1;
OPTIONINFO(self.autospec_flags, _aspeco, ASF_FOLLOWKILLER, "Followkiller", "followkiller", "fk");
superspec_msg("^3Current auto spectate options are:\n\n\n\n\n", "\n^3Current auto spectate options are:\n", self, _aspeco, 1);
- return TRUE;
+ return true;
}
if(cmd_name == "followpowerup")
}
superspec_msg("", "", self, "No active powerup\n", 1);
- return TRUE;
+ return true;
}
if(cmd_name == "followstrength")
}
superspec_msg("", "", self, "No active Strength\n", 1);
- return TRUE;
+ return true;
}
if(cmd_name == "followshield")
}
superspec_msg("", "", self, "No active Shield\n", 1);
- return TRUE;
+ return true;
}
if(cmd_name == "followfc")
{
if(!g_ctf)
- return TRUE;
+ return true;
entity _player;
float _team = 0;
- float found = FALSE;
+ float found = false;
if(cmd_argc == 2)
{
{
if(_player.flagcarried && (_player.team == _team || _team == 0))
{
- found = TRUE;
+ found = true;
if(_team == 0 && IS_SPEC(self) && self.enemy == _player)
continue; // already spectating a fc, try to find the other fc
return _spectate(_player);
if(!found)
superspec_msg("", "", self, "No active flag carrier\n", 1);
- return TRUE;
+ return true;
}
- return FALSE;
+ return false;
#undef OPTIONINFO
}
void superspec_hello()
{
if(self.enemy.crypto_idfp == "")
- centerprint(self.enemy, "Your client have/allow no crypto id, superspec options will not be saved/restored.");
- else
- centerprint(self.enemy, sprintf("Hello %s\nSince your client has a Crypto ID, your superspec preferences will be persisted on this server.", self.enemy.netname));
+ Send_Notification(NOTIF_ONE_ONLY, self.enemy, MSG_INFO, INFO_SUPERSPEC_MISSING_UID);
remove(self);
}
MUTATOR_HOOKFUNCTION(superspec_ClientConnect)
{
if(!IS_REAL_CLIENT(self))
- return FALSE;
+ return false;
string fn = "superspec-local.options";
float fh;
if (!_ISLOCAL)
{
if(self.crypto_idfp == "")
- return FALSE;
+ return false;
fn = sprintf("superspec-%s.options", uri_escape(self.crypto_idfp));
}
fh = fopen(fn, FILE_READ);
if(fh < 0)
{
- dprint("^1ERROR: ^7 superspec can not open ", fn, " for reading.\n");
+ LOG_TRACE("^1ERROR: ^7 superspec can not open ", fn, " for reading.\n");
}
else
{
string _magic = fgets(fh);
if(_magic != _SSMAGIX)
{
- dprint("^1ERROR^7 While reading superspec options file: unknown magic\n");
+ LOG_TRACE("^1ERROR^7 While reading superspec options file: unknown magic\n");
}
else
{
fclose(fh);
}
- return FALSE;
+ return false;
}
MUTATOR_HOOKFUNCTION(superspec_PlayerDies)
}
self = _old_self;
- return FALSE;
+ return false;
}
MUTATOR_HOOKFUNCTION(superspec_ClientDisconnect)
{
superspec_save_client_conf();
- return FALSE;
+ return false;
}
MUTATOR_DEFINITION(mutator_superspec)