diff --git a/Classic/scripts/admin.cs b/Classic/scripts/admin.cs index 70027e5..353e0b9 100755 --- a/Classic/scripts/admin.cs +++ b/Classic/scripts/admin.cs @@ -564,23 +564,46 @@ function ServerCmdPrintClientInfo(%client, %targetClient) { if ((!%targetClient.isSuperAdmin) && (%client.isSuperAdmin)) { - %wonid = getField( %targetClient.getAuthInfo(), 3); %ip = %targetClient.getAddress(); + %guid = %targetClient.guid; } else { - %wonid = "PROTECTED"; - %ip = "PROTECTED"; + %ip = "N/A"; + %guid = "N/A"; } - MessageClient(%client, '', '---------------------------------------------------------------'); - MessageClient(%client, 'ClientInfo', "\c3Client Info...\n" @ - "ClientName: \c2" @ %targetClient.nameBase @ "\n" @ - "\c3Wonid: \c2" @ %wonid @ "\n" @ - "\c3IP: \c2" @ %ip @ "\n\n" @ - "\c3TeamKills:\c2 " @ %targetClient.teamkills @ "\n" @ - "\c3BK (BaseKills): \c2" @ %targetClient.tkDestroys @ "\n" @ - "\c3Suicides:\c2 " @ %targetClient.suicides @ "\n"); - MessageClient(%client, '', '---------------------------------------------------------------'); + + // get the client info + %authInfo = %targetClient.getAuthInfo(); + %name = getField(%authInfo, 0); + + if(%name $= "") //Bots + %name = "N/A"; + + if(%targetClient.isSmurf) + %smurfname = stripChars( detag( getTaggedString( %targetClient.name ) ), "\cp\co\c6\c7\c8\c9" ); + else + %smurfname = "N/A"; + + if(%targetClient.teamkills $= "") + %teamkills = "N/A"; + else + %teamkills = %targetClient.teamkills; + + if(%targetClient.tkDestroys $= "") + %tkDestroys = "N/A"; + else + %tkDestroys = %targetClient.tkDestroys; + + MessageClient(%client, '', ' '); + MessageClient(%client, 'ClientInfo', "\c3Client Info:\n" @ + "ClientName: \c2" @ %name @ "\n" @ + "\c3SmurfName: \c2" @ %smurfname @ "\n" @ + "\c3Guid: \c2" @ %guid @ "\n" @ + "\c3IP: \c2" @ %ip @ "\n" @ + "\c3TeamKills:\c2 " @ %teamkills @ "\n" @ + "\c3BaseKills: \c2" @ %tkDestroys @ "\n"); + MessageClient(%client, '', ' '); } else messageClient(%client, 'MsgError', '\c2Only Admins can use this command.'); diff --git a/Classic/scripts/autoexec/VoteMenu.cs b/Classic/scripts/autoexec/VoteMenu.cs index 96b46e3..991aa10 100644 --- a/Classic/scripts/autoexec/VoteMenu.cs +++ b/Classic/scripts/autoexec/VoteMenu.cs @@ -1257,9 +1257,10 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k else messageClient( %client, 'MsgPlayerPopupItem', "", %key, "GagPlayer", "", 'Gag Player', 17); + messageClient( %client, 'MsgPlayerPopupItem', "", %key, "PrintClientInfo", "", 'Client Info', 16 ); // z0dd - ZOD - MeBad, 7/13/03. Send client information. + if( %client.isSuperAdmin ) { - messageClient( %client, 'MsgPlayerPopupItem', "", %key, "PrintClientInfo", "", 'Client Info', 16 ); // z0dd - ZOD - MeBad, 7/13/03. Send client information. messageClient( %client, 'MsgPlayerPopupItem', "", %key, "BanPlayer", "", 'Ban', 4 ); if ( %targetClient.isFroze ) diff --git a/Classic/scripts/autoexec/multipleMapRotation.cs b/Classic/scripts/autoexec/multipleMapRotation.cs new file mode 100644 index 0000000..51b77c5 --- /dev/null +++ b/Classic/scripts/autoexec/multipleMapRotation.cs @@ -0,0 +1,36 @@ +//$Host::ClassicRotationFile = "prefs/mapRotation1.cs"; + +//Enable/Disable +$EnableMultipleMapRotation = 0; + +//How any mapRotation Files +//Naming scheme mapRotation1.cs, mapRotation2.cs, mapRotation3.cs, etc +$mapRotationFilesCount = 3; + +function multipleMapRotation() +{ + if($EnableMultipleMapRotation) + { + %var = stripChars($Host::ClassicRotationFile, "prefs/mapRotation.cs"); + //echo("var: " @ %var); + if(%var $= $mapRotationFilesCount) + %var = 1; + else + %var = %var + 1; + + %mapRot = "prefs/mapRotation" @ %var @ ".cs"; + $Host::ClassicRotationFile = %mapRot; + + //Echo at start + schedule(10000,0,"multipleMapRotationEcho",0); + } +} + +//Echo at start +function multipleMapRotationEcho() +{ + echo("Current MapRotation: " @ $Host::ClassicRotationFile); +} + +//Run +multipleMapRotation(); \ No newline at end of file diff --git a/Classic/scripts/packs/cloakingpack.cs b/Classic/scripts/packs/cloakingpack.cs new file mode 100755 index 0000000..c0393e8 --- /dev/null +++ b/Classic/scripts/packs/cloakingpack.cs @@ -0,0 +1,185 @@ +// ------------------------------------------------------------------ +// CLOAKING PACK +// +// When activated, this pack cloaks the user from all visual detection +// by other players and cameras. This is a local effect only (someone standing +// next to the cloaked player will still be visible). Motion sensors will +// still detect a (moving) cloaked player. +// +// When not activated, the pack creates a localized passive sensor dampening +// field. The user will not be visible to any non-motion-detecting sensor. +// +//Only light armors may equip with this item. + +datablock EffectProfile(CloakingPackActivateEffect) +{ + effectname = "packs/cloak_on"; + minDistance = 2.5; + maxDistance = 2.5; +}; + +// datablock AudioProfile(CloakingPackActivateSound) +// { +// filename = "fx/packs/cloak_on.wav"; +// description = CloseLooping3d; +// preload = true; +// effect = CloakingPackActivateEffect; +// }; + +//Added (From CloseLooping3d) +datablock AudioDescription(CloakLooping3d) +{ + volume = 1.0; + isLooping= true; + + is3D = true; + minDistance= 15.0; //Was 10 + MaxDistance= 55.0; //Was 50 + type = $EffectAudioType; + environmentLevel = 1.0; +}; + +datablock AudioProfile(CloakingPackActivateSound) +{ + filename = "fx/packs/cloak_on.wav"; + description = CloakLooping3d; + preload = true; + effect = CloakingPackActivateEffect; +}; + +datablock ShapeBaseImageData(CloakingPackImage) +{ + shapeFile = "pack_upgrade_cloaking.dts"; + item = CloakingPack; + mountPoint = 1; + offset = "0 0 0"; + + usesEnergy = true; + minEnergy = 3; + + stateName[0] = "Idle"; + stateTransitionOnTriggerDown[0] = "Activate"; + + stateName[1] = "Activate"; + stateScript[1] = "onActivate"; + stateSequence[1] = "fire"; + stateSound[1] = "CloakingPackActivateSound"; + stateEnergyDrain[1] = 10.5; // z0dd - ZOD, 7/16/03. Improve cloak pack. Was 12 (Base). Was 11.75 in Classic 1.3, now match jammer pack + stateTransitionOnTriggerUp[1] = "Deactivate"; + stateTransitionOnNoAmmo[1] = "Deactivate"; + + stateName[2] = "Deactivate"; + stateScript[2] = "onDeactivate"; + stateTransitionOnTimeout[2] = "Idle"; +}; + +datablock ItemData(CloakingPack) +{ + className = Pack; + catagory = "Packs"; + shapeFile = "pack_upgrade_cloaking.dts"; + mass = 1; + elasticity = 0.2; + friction = 0.6; + pickupRadius = 2; + rotate = true; + image = "CloakingPackImage"; + pickUpName = "a cloaking pack"; + computeCRC = true; +}; + +function CloakingPackImage::onMount(%data, %obj, %node) +{ + // player is sensor-invisible while wearing pack (except to motion sensors) + %obj.setPassiveJammed(true); +} + +function CloakingPackImage::onUnmount(%data, %obj, %node) +{ + %obj.setPassiveJammed(false); + %obj.setCloaked(false); + %obj.setImageTrigger(%node, false); +} + +// make player completely invisible to all players/sensors (except motion) +function CloakingPackImage::onActivate(%data, %obj, %slot) +{ + if(%obj.reCloak !$= "") + { + Cancel(%obj.reCloak); + %obj.reCloak = ""; + } + + if(%obj.client.armor $= "Light") + { + // can the player currently cloak (function returns "true" or reason for failure)? + if(%obj.canCloak() $= "true") + { + messageClient(%obj.client, 'MsgCloakingPackOn', '\c2Cloaking pack on.'); + %obj.setCloaked(true); + // z0dd - ZOD, 9/29/02. Removed T2 demo code from here + commandToClient( %obj.client, 'setCloakIconOn' ); + } + else + { + // notify player that they cannot cloak + messageClient(%obj.client, 'MsgCloakingPackFailed', '\c2Jamming field prevents cloaking.'); + %obj.setImageTrigger(%slot, false); + } + } + else + { + // hopefully avoid some loopholes + messageClient(%obj.client, 'MsgCloakingPackInvalid', '\c2Cloaking available for light armors only.'); + %obj.setImageTrigger(%slot, false); + } +} + +function CloakingPackImage::onDeactivate(%data, %obj, %slot) +{ + if(%obj.reCloak !$= "") + { + Cancel(%obj.reCloak); + %obj.reCloak = ""; + } + + // if pack is not on then dont bother... + if(%obj.getImageState($BackpackSlot) $= "activate") + messageClient(%obj.client, 'MsgCloakingPackOff', '\c2Cloaking pack off.'); + + %obj.setCloaked(false); + %obj.setImageTrigger(%slot, false); + // z0dd - ZOD, 9/29/02. Removed T2 demo code from here + commandToClient( %obj.client, 'setCloakIconOff' ); +} +// z0dd - ZOD, 5/18/03. Removed functions, created parent. Streamline. +//function CloakingPack::onPickup(%this, %obj, %shape, %amount) +//{ + // created to prevent console errors +//} + +function ShapeBaseData::onForceUncloak(%this, %obj, %reason) +{ + // dummy +} + +function Armor::onForceUncloak(%this, %obj, %reason) +{ + %pack = %obj.getMountedImage($BackpackSlot); + if((%pack <= 0) || (%pack.item !$= "CloakingPack")) + return; + + if(%obj.getImageState($BackpackSlot) $= "activate") + { + // cancel recloak thread + if(%obj.reCloak !$= "") + { + Cancel(%obj.reCloak); + %obj.reCloak = ""; + } + + messageClient(%obj.client, 'MsgCloakingPackOff', '\c2Cloaking pack off. Jammed.'); + %obj.setCloaked(false); + %obj.setImageTrigger($BackpackSlot, false); + } +}