v22460 (04/13/01):

**Tweak, Spider Clamp turrets need more Surface area for legal deploy space now**:

*Minor tweak to improve long-term server stability.
*A new voice Codec, 'GSM' was added to allow voice communication between Linux and Windows users.
*Minor Sound system tweaks and fixes.
*Minor BOT navigation and seeking improvements.
*Fix removing BOTs counting toward the Vote Meter representation.
*Improvement for Vehicle Physics, particularly instances when Vehicles would get stuck on their edge.
*Fix for BOT's skins not dynamically updating to correct team skin, when Admin team changed them.
*Fixed bug where certain cases would cause Cursor to vanish when it should not.
*Minor Server query improvements.
*Fix Players can be added to the 'Admin List'.
*No more voting to BAN, only Super ADMIN may now BAN.
*Various GUI improvements, notably the Voice Com. elements in the Lobby, and some minor pointer Icon improvements for certain cases.
*Linux 'Penguin' Symbol added for Server List Screen when joining, so users may identify Windows and Linux servers at a glance.
This commit is contained in:
Robert MacGregor 2017-07-17 23:10:36 -04:00
parent f9ca0b52f9
commit 116be1648d
52 changed files with 912 additions and 442 deletions

View file

@ -1,7 +1,7 @@
ProductName "Tribes2"
DisplayName "Tribes 2"
PatchFolder .\patch
CurrentVersion 0.22337.0.0
CurrentVersion 0.22460.0.0
AutoStart
MonitorPatch
LaunchExe "tribes2.exe"

View file

@ -523,11 +523,32 @@ function abs(%val)
function ServerConnectionAccepted()
{
%info = GMJ_Browser.getServerInfoString();
%desc = "joined a" SPC getField(%info,4) @ " game (" @ getField(%info,3) @ ") on the \"" @ getField(%info,0) @ "\" server.";
IRCClient::onJoinGame($JoinGameAddress,%desc);
if ( !$pref::Net::CheckEmail )
CancelEmailCheck();
// if($pref::Net::DisconnectChat)
// IRCClient::quit();
Canvas.setContent("LoadingGui");
}
function LocalConnectionAccepted()
{
%desc = $pref::IRCClient::hostmsg;
IRCClient::onJoinGame("", %desc);
if ( !$pref::Net::CheckEmail )
CancelEmailCheck();
// if($pref::Net::DisconnectChat)
// IRCClient::quit(); //this is screwed up right now ^^
Canvas.setContent("LoadingGui");
}

View file

@ -7,6 +7,7 @@ new GuiControl(MainChatHud) {
minExtent = "8 8";
visible = "1";
modal = "1";
bypassHideCursor = "1";
setFirstResponder = "0";
new GuiNoMouseCtrl() {

View file

@ -89,7 +89,7 @@ new GuiChunkedBitmapCtrl(ChatGui) {
lineSpacing = "0";
lineContinuedIndex = "5";
allowedMatches[0] = "http";
matchColor = "0 0 255 255";
matchColor = "4 235 105 255";
};
};
};
@ -152,6 +152,7 @@ new GuiChunkedBitmapCtrl(ChatGui) {
maxLength = "255";
password = "0";
glowOffset = "9 9";
tabComplete = "1";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";

View file

@ -63,18 +63,13 @@ function ToggleConsole(%make)
{
Canvas.popDialog(ConsoleDlg);
$ConsoleActive = false;
if(!ConsoleDlg.mouseOn)
CursorOff();
if ( $enableDirectInput )
activateKeyboard();
}
else
{
Canvas.pushDialog(ConsoleDlg, 99);
ConsoleDlg.mouseOn = Canvas.isCursorOn();
$ConsoleActive = true;
if(!ConsoleDlg.mouseOn)
CursorOn();
deactivateKeyboard();
}
}

View file

@ -10,6 +10,7 @@ new GuiChunkedBitmapCtrl(CreditsGui) {
variable = "$ShellBackground";
helpTag = "0";
useVariable = "1";
hideCursor = "1";
qLineCount = "0";
new ShellPaneCtrl() {

View file

@ -283,7 +283,6 @@ function Editor::onSleep(%this)
MoveMap.pop();
GlobalActionMap.unbind(keyboard, "tab");
lockMouse(false);
CursorOn();
%this.popDialogs();

View file

@ -10,6 +10,16 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
variable = "$ShellBackground";
helpTag = "0";
useVariable = "1";
forumCount = "-1";
refreshFlag = "0";
state = "done";
eid = "112";
ebstat = "1";
initialized = "1";
key = "163";
TDialogOpen = "0";
bflag = "4";
TextCheck = "0";
new ShellPaneCtrl(ForumShell) {
profile = "ShellPaneProfile";
@ -152,6 +162,13 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0";
headerSort = "0";
allowReposition = "0";
noSelect = "0";
lastID = "413653";
state = "done";
highestUpdate = "413653";
lastDate = "04/20/2001 11:09am";
allRead = "1";
key = "162";
};
};
new ShellScrollCtrl() {
@ -186,12 +203,14 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
horizSizing = "width";
vertSizing = "height";
position = "0 0";
extent = "532 180";
extent = "532 36";
minExtent = "8 8";
visible = "1";
helpTag = "0";
lineSpacing = "2";
allowColorChars = "0";
maxChars = "-1";
deniedSound = "InputDeniedSound";
};
};
};
@ -336,7 +355,7 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "137 1908";
extent = "137 414";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -392,7 +411,7 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "52 1161";
extent = "52 1902";
minExtent = "8 8";
visible = "1";
helpTag = "0";
@ -424,6 +443,7 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
drawSeparators = "0";
headerSort = "1";
allowReposition = "0";
noSelect = "0";
};
};
new GuiTextCtrl() {
@ -455,39 +475,39 @@ new GuiChunkedBitmapCtrl(ForumsGui) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "234 300";
extent = "117 38";
position = "291 300";
extent = "82 38";
minExtent = "32 38";
visible = "1";
command = "ForumsRefreshTopics();";
helpTag = "0";
text = "REFRESH TOPICS";
text = "REFRESH ";
simpleStyle = "0";
};
new ShellBitmapButton(FM_NextThreads) {
new ShellBitmapButton(FTNextBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "406 309";
extent = "90 38";
position = "357 300";
extent = "53 38";
minExtent = "32 38";
visible = "0";
command = "ForumsGoTopics(1);";
visible = "1";
command = "ForumsGui.NextThreadPage();";
helpTag = "0";
text = "NEXT TOPICS";
text = "--->";
simpleStyle = "0";
};
new ShellBitmapButton(FM_PrevThreads) {
new ShellBitmapButton(FTPrevBtn) {
profile = "ShellButtonProfile";
horizSizing = "right";
vertSizing = "top";
position = "324 309";
extent = "90 38";
position = "254 300";
extent = "53 38";
minExtent = "32 38";
visible = "0";
command = "ForumsGoTopics(2);";
visible = "1";
command = "ForumsGui.PreviousThreadPage();";
helpTag = "0";
text = "PREV TOPICS";
text = "<---";
simpleStyle = "0";
};
new ShellBitmapButton(RForumsBtn) {

View file

@ -10,6 +10,7 @@ new GuiControl(FrameOverlayGui) {
setFirstResponder = "True";
modal = "false";
helpTag = "0";
bypassHideCursor = "1";
new GuiConsoleTextCtrl(TextOverlayControl) {
profile = "GuiTextProfile";

View file

@ -301,6 +301,7 @@ new GuiControl(MessageHud)
extent = "640 480";
minExtent = "8 8";
visible = "0";
bypassHideCursor = "1";
new ShellFieldCtrl(MessageHud_Frame)
{
@ -351,6 +352,7 @@ new GuiControl(ChatMenuHudDlg)
extent = "640 480";
minExtent = "8 8";
visible = "0";
bypassHideCursor = "1";
new ShellFieldCtrl(ChatMenuHud)
{

View file

@ -148,13 +148,8 @@ function InteriorDontRestrict::onAction()
function interiorDebugDialog::onWake( %this )
{
%this.cursor = isCursorOn();
if ( !%this.cursor )
CursorOn();
}
function interiorDebugDialog::onSleep( %this )
{
if ( !%this.cursor )
CursorOff();
}

View file

@ -93,6 +93,5 @@ function InteriorPreviewGui::onSleep(%this)
GlobalActionMap.unbind(keyboard, "tab");
GlobalActionMap.unbind(keyboard, "f9");
lockMouse(false);
CursorOn();
}

View file

@ -7,64 +7,114 @@ new GuiControl(JoinChatDlg) {
extent = "640 480";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
new ShellPaneCtrl(JoinChatPane) {
profile = "ShellDlgPaneProfile";
horizSizing = "center";
vertSizing = "center";
position = "117 47";
position = "120 60";
extent = "400 360";
minExtent = "48 92";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
text = "CHOOSE CHAT CHANNEL";
maxLength = "255";
noTitleBar = "0";
new ShellScrollCtrl() {
profile = "NewScrollCtrlProfile";
horizSizing = "center";
vertSizing = "height";
position = "91 36";
extent = "218 232";
minExtent = "24 52";
new ShellFancyArrayScrollCtrl() {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "48 39";
extent = "304 227";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
willFirstRespond = "1";
fixedHorizontal = "1";
vertSpacerBitmap = "gui/shll_vertspacer";
horzSpacerBitmap = "gui/shll_horzspacer";
new VirtualScrollCtrl() {
profile = "NewScrollCtrlProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 16";
extent = "304 211";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
willFirstRespond = "0";
hScrollBar = "alwaysOff";
vScrollBar = "alwaysOn";
constantThumbHeight = "0";
defaultLineHeight = "15";
childMargin = "0 3";
fieldBase = "gui/shll_field";
childMargin = "0 0";
new GuiScrollContentCtrl() {
new VirtualScrollContentCtrl() {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "4 7";
extent = "194 218";
position = "4 4";
extent = "280 203";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
new ShellTextList(JoinChatList) {
profile = "ShellTextArrayProfile";
new GuiControl() {
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "194 8";
extent = "288 9616";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
enumerate = "1";
resizeCell = "1";
columns = "0";
fitParentWidth = "1";
clipColumnText = "0";
};
};
};
new ShellFancyTextList(JoinChatList) {
profile = "ShellServerBrowserProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "284 223";
minExtent = "8 20";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
altCommand = "JoinChatDlg.join();";
helpTag = "0";
startScrollRegion = "0 0";
headerBitmap = "gui/server_tabs";
sortArrowBitmap = "gui/shll_sortarrow";
fieldBase = "gui/shll_field";
barBase = "gui/shll_bar";
glowOffset = "4";
rowHeight = "19";
headerFontSize = "0";
headerFontColor = "8 19 6 255";
headerFontColorHL = "25 68 56 255";
separatorColor = "192 192 192 255";
drawSeparators = "0";
headerSort = "1";
allowReposition = "0";
noSelect = "0";
allowColorChars = "0";
};
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";
@ -73,6 +123,8 @@ new GuiControl(JoinChatDlg) {
extent = "128 38";
minExtent = "32 38";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
command = "Canvas.popDialog(JoinChatDlg); LaunchTabView.viewTab(\"CHAT\",ChatGui,0);";
accelerator = "escape";
helpTag = "0";
@ -83,10 +135,12 @@ new GuiControl(JoinChatDlg) {
profile = "GuiDefaultProfile";
horizSizing = "center";
vertSizing = "top";
position = "86 269";
extent = "228 36";
position = "67 269";
extent = "272 36";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
new ShellTextEditCtrl(JoinChatName) {
@ -94,13 +148,19 @@ new GuiControl(JoinChatDlg) {
horizSizing = "right";
vertSizing = "bottom";
position = "48 0";
extent = "180 38";
extent = "223 38";
minExtent = "32 38";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
command = "JoinChatName.onCharInput();";
altCommand = "JoinChatDlg.join();";
helpTag = "0";
maxLength = "24";
historySize = "0";
maxLength = "255";
password = "0";
tabComplete = "0";
deniedSound = "InputDeniedSound";
glowOffset = "9 9";
};
new GuiTextCtrl() {
@ -111,8 +171,11 @@ new GuiControl(JoinChatDlg) {
extent = "44 22";
minExtent = "8 8";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
helpTag = "0";
text = "Channel:";
maxLength = "255";
};
};
new ShellBitmapButton() {
@ -123,6 +186,8 @@ new GuiControl(JoinChatDlg) {
extent = "128 38";
minExtent = "32 38";
visible = "1";
hideCursor = "0";
bypassHideCursor = "0";
command = "JoinChatDlg.join();";
helpTag = "0";
text = "JOIN CHAT";

View file

@ -156,7 +156,7 @@ new GuiChunkedBitmapCtrl(LobbyGui) {
minExtent = "8 20";
visible = "1";
helpTag = "0";
startScrollRegion = "4 0";
startScrollRegion = "3 0";
headerBitmap = "gui/server_tabs";
sortArrowBitmap = "gui/shll_sortarrow";
fieldBase = "gui/shll_field";

View file

@ -9,6 +9,7 @@ new GameTSCtrl(PlayGui) {
visible = "1";
setFirstResponder = "1";
modal = "1";
hideCursor = "1";
helpTag = "0";
beaconBaseTextureName = "gui/beacon_base";
beaconTargetTextureName = "gui/crosshairs";

View file

@ -8,6 +8,7 @@ new GuiControl(TaskHudDlg) {
minExtent = "8 8";
visible = "0";
helpTag = "0";
bypassHideCursor = "1";
new ShellFieldCtrl() {
profile = "GuiChatBackProfile";

View file

@ -1,4 +1,4 @@
Input log opened at Sun Apr 15 10:48:48 2001
Input log opened at Mon Apr 23 18:55:20 2001
Operating System:
WinNT version 5.0

View file

@ -479,7 +479,7 @@ function CTFGame::gameOver(%game)
messageAll('MsgClearObjHud', "");
for(%i = 0; %i < ClientGroup.getCount(); %i ++)
{
%client = %group.getObject(%i);
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
}
for(%j = 1; %j <= %game.numTeams; %j++)
@ -520,30 +520,6 @@ function CTFGame::clientMissionDropReady(%game, %client)
DefaultGame::clientMissionDropReady(%game, %client);
}
//NOTE - if we revert to this method of scoring, the function DefaultGame::awardScoreSuicide() no longer increments %client.deaths
// function CTFGame::recalcScore(%game, %cl)
// {
// // currently no penalty for suicide?
// //%cl.offenseScore = ((%cl.kills * %game.SCORE_PER_KILL) * (%cl.kills * %game.SCORE_PER_KILL)) / ((%cl.kills * %game.SCORE_PER_KILL) + (%cl.deaths * %game.SCORE_PER_DEATH)); //currently 1 pt per
// %cl.offenseScore = %cl.kills * %game.SCORE_PER_KILL + // 1
// %cl.deaths * %game.SCORE_PER_DEATH + // -1
// %cl.escortAssists * %game.SCORE_PER_ESCORT_ASSIST + // 1
// %cl.teamKills * %game.SCORE_PER_TEAMKILL + // -1
// %cl.flagCaps * %game.SCORE_PER_PLYR_FLAG_CAP + // 3
// %cl.genDestroys * %game.SCORE_PER_GEN_DESTROY + // 2
//
// %cl.defenseScore = %cl.genDefends * %game.SCORE_PER_GEN_DEFEND + // 1
// %cl.carrierKills * %game.SCORE_PER_CARRIER_KILL + // 1
// %cl.escortAssists * %game.SCORE_PER_ESCORT_ASSIST + // 1
// %cl.turretKills * %game.SCORE_PER_TURRET_KILL + // 1
// %cl.flagReturns * %game.SCORE_PER_FLAG_RETURN + // 1
// %cl.genRepairs * %game.SCORE_PER_GEN_REPAIR + // 1
//
// %cl.score = %cl.offenseScore + %cl.defenseScore;
//
// %game.recalcTeamRanks(%cl);
// }
function CTFGame::assignClientTeam(%game, %client, %respawn)
{
DefaultGame::assignClientTeam(%game, %client, %respawn);

View file

@ -53,11 +53,21 @@ function JoinChatDlg::onWake(%this)
MessageBoxYesNo("Connect IRC","Connect to IRC server?","IRCClient::connect();","Canvas.popDialog(JoinChatDlg);");
}
//------------------------------------------------------------------------------
function JoinChatList::onAdd( %this )
{
%this.addColumn( 0, "Channel Name", 210, 210, 210 );
%this.addColumn( 1, "Users", 74, 74, 74, "numeric center" );
%this.addColumn( 2, "", 0, 0, 0, "numeric" );
%this.setSortColumn( 2 );
%this.setSortIncreasing( false );
%this.addStyle( 1, $ShellBoldFont, $ShellFontSize, "180 180 180", "220 220 220", "40 40 40" );
}
//------------------------------------------------------------------------------
function JoinChatList::onSelect(%this,%id,%text)
{
%stripped = stripChars( %text, "\c4");
JoinChatName.setValue(%stripped);
JoinChatName.setValue( getField( %text, 0 ) );
}
//------------------------------------------------------------------------------
@ -76,6 +86,24 @@ function JoinChatDlg::join(%this)
}
}
//------------------------------------------------------------------------------
function JoinChatName::onCharInput( %this )
{
%text = %this.getValue();
if ( %text !$= "" )
{
%count = JoinChatList.rowCount();
for ( %row = 0; %row < %count; %row++ )
{
if ( %text $= getSubStr( getField( JoinChatList.getRowText( %row ), 0 ), 0, strlen( %text ) ) )
break;
}
if ( %row < %count )
JoinChatList.scrollVisible( %row );
}
}
//------------------------------------------------------------------------------
function ChatGui::onAdd(%this)
{
@ -145,7 +173,7 @@ function ChatTabView::onSelect(%this,%obj,%name)
if ($IRCClient::currentChannel == $IRCClient::attachedChannel)
ChatGuiMessageVector.detach();
ChatGuiMessageVector.attach(%obj);
ChatGuiMessageVector.scrollToBottom();
//ChatGuiMessageVector.scrollToBottom();
$IRCClient::attachedChannel = %obj;
}
$IRCClient::currentChannel = %obj;
@ -197,12 +225,17 @@ function ChatGuiMessageVector::urlClickCallback(%this,%type,%url,%content)
case "http":
gotoWebPage(%url);
case "server":
IRCClient::onJoinGame(%content,%url);
//IRCClient::onJoinGame(%content,%url);
%url = nextToken(%url,a," ");
%url = nextToken(%url,map,"(");
%url = nextToken(%url,type,")");
if(getSubStr(%content, 0, 1) $= "#")
{
// this is a fake server, its really a channel for invites
IRCClient::join(%content);
return;
}
// set the loading gui
// LoadingGui.map = %map;
// LoadingGui.missionType = %type;
@ -755,17 +788,18 @@ function IRCClient::notify(%event)
JoinChatList.clear();
for (%i = 0; %i < $IRCClient::numChannels; %i++)
{
%officailChannelMod = IRCClient::getOfficailChannelMod($IRCClient::channelNames[%i]);
%channelListDisplayName = %officailChannelMod @ IRCClient::displayChannel($IRCClient::channelNames[%i]) @"\c1 ["@ $IRCClient::channelUsers[%i] @"]";
JoinChatList.addRow(%i, %channelListDisplayName);
}
JoinChatList.sort(0);
if (strlen(JoinChatName.getValue()))
switch$ ( $IRCClient::channelNames[%i] )
{
%i = JoinChatList.findTextIndex(JoinChatName.getValue());
JoinChatList.scrollVisible(%i);
JoinChatList.setSelectedById(JoinChatList.getRowId(%i));
case "#Tribes2": %temp = 3;
case "#Tribes2-recruiting": %temp = 2;
case "#Help": %temp = 1;
default: %temp = 0;
}
JoinChatList.addRow(%i, IRCClient::displayChannel( $IRCClient::channelNames[%i]) TAB $IRCClient::channelUsers[%i] TAB %temp );
JoinChatList.setRowStyle( %i, %temp > 0 );
}
JoinChatList.sort();
JoinChatName.onCharInput();
case IDIRC_CHANNEL_HAS_KEY:
KeyChannelName.setValue(IRCClient::displayChannel($IRCClient::keyChannel));
Canvas.pushDialog(ChannelKeyDlg);
@ -799,11 +833,8 @@ function IRCClient::notify(%event)
}
ChatTabView.removeTab($IRCClient::deletedChannel);
case IDIRC_INVITED:
MessageBoxOKCancel("Invite",
"You have been invited to channel " @
IRCClient::displayChannel($IRCClient::invitechannel) @
" by " @ $IRCClient::inviteperson @ ".",
"IRCClient::join($IRCClient::invitechannel);");
//MessageBoxOKCancel("Invite", "You have been invited to channel " @ IRCClient::displayChannel($IRCClient::invitechannel) @ " by " @ $IRCClient::inviteperson @ ".", "IRCClient::join($IRCClient::invitechannel);");
IRCClient::newMessage($IRCClient::CurrentChannel, "You have been invited to channel " @ $IRCClient::invitechannel @ " by " @ $IRCClient::inviteperson @ ".");
case IDIRC_BAN_LIST:
ChannelBannedList_refresh();
case IDIRC_TOPIC:
@ -859,6 +890,8 @@ function IRCClient::connected()
//------------------------------------------------------------------------------
function IRCClient::newMessage(%channel,%message)
{
%message = IRCClient::findChannelURL(%message);
if (%channel == $IRCClient::channels.getObject(0) ||
%channel $= "")
$IRCClient::channels.getObject(0).pushBackLine(%message);
@ -1136,20 +1169,6 @@ function IRCClient::findChannel(%name,%create)
}
}
//------------------------------------------------------------------------------
function IRCClient::getOfficailChannelMod(%name)
{
if(%name $= "#Tribes2"
|| %name $= "#Tribes2-recruiting"
|| %name $= "#Help")
{
return "\c4";
}
else return "";
}
//------------------------------------------------------------------------------
function IRCClient::displayChannel(%channel)
{
@ -1445,8 +1464,7 @@ function IRCClient::dispatch(%prefix,%command,%params)
case "JOIN":
IRCClient::onJoin(%prefix,%params);
case "NICK":
error("onNick has been removed!");
//IRCClient::onNick(%prefix,%params);
IRCClient::onNick(%prefix,%params);
case "QUIT":
IRCClient::onQuit(%prefix,%params);
case "ERROR":
@ -1665,6 +1683,54 @@ function IRCClient::onPrivMsg(%prefix,%params)
}
}
//------------------------------------------------------------------------------
function IRCClient::findChannelURL(%msg)
{
%numWords = getWordCount(%msg);
for(%i = 0; %i < %numWords; %i++)
{
%word = getWord(%msg, %i);
%firstLetter = getSubStr(%word, 0, 1);
if(%firstLetter $= "#")
{
// this is a fake server link that will get parsed to an
// IRCClient::join by the urlCallback hack
%newWord = "<t2server:" @ %word @ ">"@ IRCClient::displayChannel(%word)@"</t2server>";
%word = %newWord;
}
if(%newText $= "")
%newText = %word;
else %newText = %newText SPC %word;
}
return %newText;
}
//------------------------------------------------------------------------------
function IRCClient::onNick(%prefix,%params)
{
%person = IRCClient::findPerson2(%prefix,false);
if (%person)
{
if (!(%person.flags & $PERSON_IGNORE))
IRCClient::newMessage($IRCClient::currentChannel,%person.getName() @ " is now known as " @ %params @ ".");
%channel = IRCClient::findChannel(%person.getName());
if (%channel)
%channel.setName(%params);
%person.setName(%params);
// If this is me, re-set the console variable
if (%person == $IRCClient::people.getObject(0))
$IRCClient::NickName = %person.getName();
}
}
//------------------------------------------------------------------------------
function IRCClient::onQuit(%prefix,%params)
{
@ -1681,7 +1747,11 @@ function IRCClient::onQuit(%prefix,%params)
if (!(%p.flags & $PERSON_IGNORE))
IRCClient::newMessage(%c,"\c4" @ IRCClient::taggedNick(%p) @ " has disconnected from IRC.");
if (%c == $IRCClient::currentChannel)
{
IRCClient::notify(IDIRC_PART);
//IRCClient::part(%c.getName());
}
}
}
@ -2668,11 +2738,14 @@ function IRCClient::nick(%nick)
if (($IRCClient::state $= IDIRC_CONNECTED || $IRCClient::state $= IDIRC_CONNECTING_IRC) &&
strlen(nick))
{
if (stricmp(%nick, $IRCClient::people.getObject(0).displayName))
if (stricmp(%nick, $IRCClient::people.getObject(0).getName()))
IRCClient::send("NICK " @ %nick);
}
else
$IRCClient::people.getObject(0).displayName = %nick;
{
$IRCClient::people.getObject(0).setName(%nick);
$IRCClient::NickName = %nick;
}
}
//------------------------------------------------------------------------------
@ -2681,6 +2754,166 @@ function IRCClient::name(%name)
$IRCClient::people.getObject(0).real = %name;
}
//--------------------------------------------------------------------------------
function ChatMessageEntry::onTabComplete(%this)
{
// the word that the cursor is on or just behind
// and exchange it for a matching nick from this channel
//%channel = $IRCClient::channels.getObject(0);
%me = $IRCClient::people.getObject(0);
// if there is no text just iterate through the channel members
%text = %this.getValue();
if(%text $= "")
{
error("null string completion not implemented yet.");
return;
}
%cursorPos = %this.getCursorPos();
%textLen = strLen(%text);
// find the first space behind the cursor
for(%a = %cursorPos; %a >= 0; %a--)
{
%letter = getSubStr(%text, %a, 1);
if(%letter $= " ")
{
%space = %a + 1; // add 1 so we dont INCLUDE the space
%begining = %space;
//echo("first space is at pos" SPC %begining);
break;
}
if(%a == 0)
{
//echo("there are no prev spaces.");
%begining = 0;
}
}
// find the first space in front of the cursor
for(%b = %cursorPos; %b <= %textLen; %b++)
{
%letter = getSubStr(%text, %b, 1);
if(%letter $= " ")
{
%end = %b;
//echo("end space is at pos" SPC %end);
break;
}
if(%b == %textLen)
{
//echo("there are no end spaces.");
%end = %textLen;
}
}
//why dont we move the cursor to the end of the word if they try and tab complete
//successfull or not
%this.setCursorPos(%b);
// this forms a word
%wordLen = %end - %begining;
%word = getSubStr(%text, %begining, %wordLen);
//error("Word to tabComplete: "@%word@".");
//we interupt here
// if we have the last word we tab completed then we are trying to cycle
// we want to cycle with the stem of the last word we completed from
// so we use the stem instead of the word
if(%word $= %me.lastCompletion)
{
%word = %me.lastCompletionStub;
%wordLen = strLen(%word);
}
// is it a tab-completable word?
for (%i = 0; %i < $IRCClient::people.getCount(); %i++)
{
%person = $IRCClient::people.getObject(%i);
if(%person.untagged !$= "")
%personName = %person.untagged;
else %personName = %person;
%personSnip = getSubStr(%personName, 0, %wordLen);
if(%personSnip $= %word)
{
%nickPossiblity[%numMatches++] = %personName;
}
}
if(!%numMatches)
{
//error("no matches...sorry.");
return;
}
// we have ALL the possible tab completes for the word
// if we have just tab completed on of them give us the next one instead
// cycle through the possiblities
for(%i = 1; %i <= %numMatches; %i++)
{
if(%nickPossiblity[%i] $= %me.lastCompletion)
{
%newWord = %nickPossiblity[%i+1];
break;
}
}
if(%newWord $= "" )
%newWord = %nickPossiblity1;
%newWordLenDif = strLen(%newWord) - strLen(%word);
if(%newWord $= "")
{
//error("There is no word to tab complete");
return -1;
}
// there is a word (%newWord) find out which word it is
for(%i = 0; %i < getWordCount(%text); %i++)
{
%wordCheck = getWord(%text, %i);
//echo("is this word our candidate? "@%wordCheck);
if(%wordCheck $= %word)
{
%wordNum = %i;
}
//what if there are multiple instances of this word?
}
// replace the word with the new word and move the cursor
for(%x = 0; %x < getWordCount(%text); %x++)
{
%thisWord = getWord(%text, %x);
if(%wordNum == %x)
{
%thisWord = %newWord;
}
if(%newText $= "")
%newText = %thisWord;
else %newText = %newText SPC %thisWord;
}
%this.setCursorPos( %this.getCursorPos() + %newWordLenDif -1 );
// replace what the current text is, with new text
%this.setValue(%newText);
%me.lastCompletion = %newWord;
%me.lastCompletionStub = %word;
}
//----------------------------------------------------------------------
function IRCClient::nickHighLight(%message)
{
@ -2981,18 +3214,22 @@ function IRCClient::onJoinServer(%mission,%server,%address,%mayprequire,%prequir
function IRCClient::onJoinGame(%address, %desc)
{
//error("IRCClient::onJoinGame( "@ %address @", "@ %desc @" )");
IRCClient::away("joined a game.");
//IRCClient::away("joined a game.");
%me = $IRCClient::people.getObject(0);
if(%address $= %me.lastAddress)
{
return;
}
%me.lastAddress = %address;
%joinLink = "<t2server:" @ %address @ ">Click here to follow</t2server>.";
if(%address $= "")
%msg = $pref::IRCClient::hostMsg;
%msg = %desc;
else
%msg = "launched into <t2server:" @ %address @ ">" @ %desc @ "</t2server>.";
%msg = %desc SPC %joinLink;
//IRCClient::sendAction(%msg);
@ -3000,7 +3237,10 @@ function IRCClient::onJoinServer(%mission,%server,%address,%mayprequire,%prequir
{
%c = $IRCClient::channels.getObject(%i);
if (!%c.private)
{
IRCClient::send("PRIVMSG " @ %c.getName() @ " :\x01ACTION " @ %msg @ "\x01");
IRCClient::newMessage($IRCClient::currentChannel, IRCClient::taggedNick($IRCClient::people.getObject(0)) @ "\c9 " @ %msg);
}
}
}

View file

@ -444,6 +444,7 @@ function CnHGame::resetScore(%game, %client)
%client.offenseScore = 0;
%client.kills = 0;
%client.deaths = 0;
%client.suicides = 0;
%client.teamKills = 0;
%client.flipFlopsCapped = 0;

View file

@ -213,24 +213,6 @@ function DMGame::updateKillScores(%game, %clVictim, %clKiller, %damageType, %imp
messageClient(%clVictim, 'MsgDMPlayerDies', "", %clVictim.deaths + %clVictim.suicides);
}
//NOTE - if we revert to this method of scoring, the function DefaultGame::awardScoreSuicide() no longer increments %client.deaths
//function DMGame::recalcScore(%game, %client)
//{
// // MES - just in case :)
// if((%client.kills + %client.deaths) == 0)
// %client.efficiency = 0;
// else
// %client.efficiency = ((%client.kills) * (%client.kills)) / (%client.kills + %client.deaths);
//TINMAN - I changed this since DM seems based on efficiency, and the previous score doesn't appear anywhere...
//%client.score = (%client.kills * %game.SCORE_PER_KILL) + (%client.deaths * %game.SCORE_PER_DEATH);
// %client.score = mFloatLength(%client.efficiency, 1);
// messageClient(%client, 'MsgDMYourEfficIs', "", %client.score);
// %game.recalcTeamRanks(%client);
// %game.checkScoreLimit(%client);
//}
function DMGame::recalcScore(%game, %client)
{
%killValue = %client.kills * %game.SCORE_PER_KILL;
@ -272,7 +254,7 @@ function DMGame::gameOver(%game)
cancel(%game.timeThread);
messageAll('MsgClearObjHud', "");
for(%i = 0; %i < ClientGroup.getCount(); %i ++) {
%client = %group.getObject(%i);
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
}
}

View file

@ -267,4 +267,7 @@ function DnDGame::resetScore(%game, %client)
%client.scoreSelfKills = 0;
%client.teamKills = 0;
%client.objScore = 0;
%client.kills = 0;
%client.deaths = 0;
%client.suicides = 0;
}

View file

@ -578,16 +578,7 @@ function PasswordDlg::accept( %this )
//------------------------------------------------------------------------------
function JoinSelectedGame()
{
// This stuff must go soon!
%info = GMJ_Browser.getValue();
LoadingGui.map = getField( %info, 3 );
LoadingGui.missionType = getField( %info, 4 );
//
%info = GMJ_Browser.getServerInfoString();
%desc = "a" SPC getField(%info,4) @ "(" @ getField(%info,3) @ ") game on the \"" @ getField(%info,0) @ "\" server. Click here to follow";
IRCClient::onJoinGame($JoinGameAddress,%desc);
$ServerInfo = GMJ_Browser.getServerInfoString();
JoinGame($JoinGameAddress);
}
@ -914,7 +905,7 @@ function StartHostedGame()
return;
}
IRCClient::onJoinGame("", "");
//IRCClient::onJoinGame("", "");
MessagePopup( "STARTING SERVER", "Initializing..." );
Canvas.repaint();

View file

@ -268,8 +268,6 @@ function LaunchGui::onAdd(%this)
//----------------------------------------------------------------------------
function LaunchGui::onWake(%this)
{
if ( !Canvas.isCursorOn() )
CursorOn();
$enableDirectInput = "0";
deactivateDirectInput();
Canvas.pushDialog(LaunchToolbarDlg);

View file

@ -45,9 +45,6 @@ function LobbyGui::onWake( %this )
}
$InLobby = true;
%this.mouseOn = Canvas.isCursorOn();
if ( !%this.mouseOn )
CursorOn();
//pop any key maps
moveMap.pop();
@ -57,7 +54,6 @@ function LobbyGui::onWake( %this )
observerBlockMap.pop();
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
$enableDirectInput = "0";
deactivateDirectInput();
@ -91,9 +87,6 @@ function LobbyGui::onSleep( %this )
LobbyVoteMenu.mode = "";
LobbyCancelBtn.setVisible( false );
LobbyStatusText.setText( "" );
if ( !%this.mouseOn )
CursorOff();
%this.mouseOn = "";
$InLobby = false;
}
@ -114,7 +107,6 @@ function lobbyLeaveGame()
function lobbyReturnToGame()
{
Canvas.setContent( PlayGui );
CursorOff();
}
//------------------------------------------------------------------------------
@ -139,8 +131,7 @@ function LobbyPlayerList::initColumns( %this )
%this.clear();
%this.clearColumns();
%this.addColumn( 0, " ", 24, 24, 24, "center" ); // Flag column
%this.addColumn( 6, " ", 20, 20, 20, "icon" ); // Voice Enabled column
%this.addColumn( 7, " ", 20, 20, 20, "icon" ); // Listening column
%this.addColumn( 6, "lobby_headset", 36, 36, 36, "headericon" ); // Voice Com column
%this.addColumn( 1, "Player", $pref::Lobby::Column1, 50, 200 );
if ( $clTeamCount > 1 )
%this.addColumn( 2, "Team", $pref::Lobby::Column2, 50, 200 );
@ -197,11 +188,17 @@ function lobbyUpdatePlayer( %clientId )
if ( %player.canListen )
{
%voiceEnabled = %player.voiceEnabled ? "lobby_icon_speak" : "";
%listening = %player.isListening ? "lobby_icon_listen" : "";
if ( %player.voiceEnabled )
{
%voiceIcons = "lobby_icon_speak";
if ( %player.isListening )
%voiceIcons = %voiceIcons @ ":lobby_icon_listen";
}
else
%voiceEnabled = %listening = "shll_icon_timedout";
%voiceIcons = %player.isListening ? "lobby_icon_listen" : "";
}
else
%voiceIcons = "shll_icon_timedout";
if ( $clTeamCount > 1 )
{
@ -209,10 +206,10 @@ function lobbyUpdatePlayer( %clientId )
%teamName = "Observer";
else
%teamName = $clTeamScore[%player.teamId, 0] $= "" ? "-" : $clTeamScore[%player.teamId, 0];
%text = %tag TAB %voiceEnabled TAB %listening TAB %player.name TAB %teamName TAB %player.score TAB %player.ping TAB %player.packetLoss;
%text = %tag TAB %voiceIcons TAB %player.name TAB %teamName TAB %player.score TAB %player.ping TAB %player.packetLoss;
}
else
%text = %tag TAB %voiceEnabled TAB %listening TAB %player.name TAB %player.score TAB %player.ping TAB %player.packetLoss;
%text = %tag TAB %voiceIcons TAB %player.name TAB %player.score TAB %player.ping TAB %player.packetLoss;
if ( LobbyPlayerList.getRowNumById( %clientId ) == -1 )
LobbyPlayerList.addRow( %clientId, %text );
@ -299,11 +296,36 @@ function LobbyPlayerPopup::onSelect( %this, %id, %text )
case 9: // enable/disable voice communication
togglePlayerVoiceCom( %this.player );
case 10:
confirmAdminListAdd( %this.player, false );
case 11:
confirmAdminListAdd( %this.player, true );
}
Canvas.popDialog( LobbyPlayerActionDlg );
}
function confirmAdminListAdd( %client, %super )
{
if( %super )
MessageBoxYesNo( "CONFIRM", "Are you sure you want to add " @ %client.name @ " to the server super admin list?", "toSuperList( " @ %client.clientId @ " );" );
else
MessageBoxYesNo( "CONFIRM", "Are you sure you want to add " @ %client.name @ " to the server admin list?", "toAdminList( " @ %client.clientId @ " );" );
}
function toSuperList( %client )
{
commandToServer( 'AddToSuperAdminList', %client );
}
function toAdminList( %client )
{
commandToServer( 'AddToAdminList', %client );
}
//------------------------------------------------------------------------------
function LobbyPlayerPopup::onCancel( %this )
{

View file

@ -11,11 +11,6 @@ $max_TSDetailAdjust = 1.0;
//------------------------------------------------------------------------------
function OptionsDlg::onWake( %this )
{
// Save the cursor state since it's possible we will be coming from the sim:
%this.wasCursorOn = Canvas.isCursorOn();
if ( !%this.wasCursorOn )
CursorOn();
$enableDirectInput = "1";
activateDirectInput();
@ -269,10 +264,6 @@ function OptionsDlg::deviceDependent( %this )
//------------------------------------------------------------------------------
function OptionsDlg::onSleep( %this )
{
// Restore the cursor state:
if ( !%this.wasCursorOn )
CursorOff();
$enableDirectInput = "0";
deactivateDirectInput();
@ -1153,16 +1144,20 @@ function OP_VoiceListenMenu::init( %this )
%this.add( ".v12", 1 );
%this.add( ".v12 - .v24", 3 );
%this.add( ".v12 - .v29", 7 );
// %this.add( ".v12 - .gsm", 15 );
%this.add( ".v12 - .gsm", 15 );
switch ( $pref::Audio::decodingMask )
{
// case 0 or 3 or 7 or 15:
case 0 or 3 or 7:
case 0 or 3 or 7 or 15:
%this.setSelected( $pref::Audio::decodingMask );
default:
%this.setSelected( 1 );
}
// Linux only has the GSM codec available for now
if ( $platform $= "linux" ) {
%this.setActive(false);
}
}
//------------------------------------------------------------------------------
@ -1172,9 +1167,14 @@ function OP_VoiceSendMenu::init( %this )
%this.add( ".v12", 0 );
%this.add( ".v24", 1 );
%this.add( ".v29", 2 );
// %this.add( ".gsm", 3 );
%this.add( ".gsm", 3 );
%this.setSelected($pref::Audio::encodingLevel);
// Linux only has the GSM codec available for now
if ( $platform $= "linux" ) {
%this.setActive(false);
}
}
function OP_VoiceCodecInfo::init( %this )
@ -1182,10 +1182,10 @@ function OP_VoiceCodecInfo::init( %this )
%headerStyle = "<font:" @ $ShellLabelFont @ ":" @ $ShellFontSize @ "><color:00DC00>";
%displayText = "<spush>" @ %headerStyle @ "Voice Codec Information:<spop>" NL
"\n" @
" .v12: variable bitrate codec (~1.2 kbits/sec win)" NL
" .v24: fixed bitrate codec (2.4 kbits/sec win)" NL
" .v29: fixed bitrate codec (2.9 kbits/sec win)" NL
// " .gsm: fixed bitrate codec (6.6 kbits/sec win/linux)" NL
" .v12: variable bitrate codec (~1.2 kbits/sec win only)" NL
" .v24: fixed bitrate codec (2.4 kbits/sec win only)" NL
" .v29: fixed bitrate codec (2.9 kbits/sec win only)" NL
" .gsm: fixed bitrate codec (6.6 kbits/sec win/linux)" NL
"\n" @
"<bitmap:bullet_2><lmargin:24>" @
"Setting your codec levels too high can have adverse" @
@ -1831,13 +1831,11 @@ function RemapDlg::onWake( %this )
RemapText.setText( "<just:center>Press a key to assign it to this action" NL "or Esc to cancel..." );
else
RemapText.setText( "<just:center>Press a key or button to assign it to this action" NL "or Esc to cancel..." );
//CursorOff();
}
//------------------------------------------------------------------------------
function RemapDlg::onSleep( %this )
{
//CursorOn();
}
//------------------------------------------------------------------------------

View file

@ -332,7 +332,7 @@ function RabbitGame::gameOver(%game)
messageAll('MsgClearObjHud', "");
for(%i = 0; %i < ClientGroup.getCount(); %i++)
{
%client = %group.getObject(%i);
%client = ClientGroup.getObject(%i);
%game.resetScore(%client);
cancel(%client.waypointSchedule);
}
@ -344,6 +344,8 @@ function RabbitGame::resetScore(%game, %client)
{
%client.score = 0;
%client.kills = 0;
%client.deaths = 0;
%client.suicides = 0;
%client.flagGrabs = 0;
%client.flagTimeMS = 0;
}

View file

@ -885,6 +885,7 @@ function SiegeGame::resetScore(%game, %client)
%client.score = 0;
%client.kills = 0;
%client.deaths = 0;
%client.suicides = 0;
%client.objScore = 0;
%client.teamKills = 0;
%client.turretKills = 0;

View file

@ -337,8 +337,7 @@ function SinglePlayerGame::onClientKilled(%game, %clVictim, %clKiller, %damageTy
if(%num == 1)
%textNum = "one life";
else %textNum = %num SPC "lives";
messageBoxOk("Restart", "You have" SPC %textNum SPC "remaining.", "CursorOff(); spawnSinglePlayer();");
//canvas.cursorOn();
messageBoxOk("Restart", "You have" SPC %textNum SPC "remaining.", "spawnSinglePlayer();");
}
else schedule(3000, $player.player, singlePlayerDead);
}
@ -418,7 +417,6 @@ function trainingBiodermSpeaks(%client)
function singlePlayerDead()
{
missionFailed($player.miscMsg[trainingDeathLoss]);
CursorOn();
AIMissionEnd();
$objectiveQ[$enemyTeam].clear();
cancel($player.distanceCheckSchedule);
@ -839,7 +837,6 @@ function missionComplete(%text)
$player.endMission = schedule(15000, game, forceFinish);
messageBoxOk("Victory", %text, "forceFinish();");
//canvas.cursorOn();
//AI stop
clearQueue();
@ -877,7 +874,6 @@ function reloadMission()
{
cancel($player.endMission);
Game.gameOver();
CursorOn();
loadMission($currentMission, singlePlayer);
debriefContinue();
}
@ -992,10 +988,6 @@ function SinglePlayerGame::createCustomKeymap(%game)
//=======================================================================================
function SinglePlayerEscapeDlg::onWake( %this )
{
%this.wasCursorOn = Canvas.isCursorOn();
if ( !%this.wasCursorOn )
CursorOn();
$timeScale = 0;
if( OptionsDlg.isAwake())
@ -1014,16 +1006,12 @@ function SinglePlayerEscapeDlg::onSleep( %this )
function SinglePlayerEscapeDlg::leaveGame( %this )
{
Canvas.popDialog( SinglePlayerEscapeDlg );
if ( !%this.wasCursorOn )
CursorOff();
MessageBoxYesNo( "LEAVE GAME", $player.miscMsg[LeaveGame], "forceFinish();", "CursorOff(); $timeScale = 1;" );
MessageBoxYesNo( "LEAVE GAME", $player.miscMsg[LeaveGame], "forceFinish();", "$timeScale = 1;" );
}
function SinglePlayerEscapeDlg::gotoSettings( %this )
{
Canvas.popDialog( SinglePlayerEscapeDlg );
//if ( !%this.wasCursorOn )
// CursorOff();
Canvas.pushDialog( OptionsDlg );
}
@ -1032,7 +1020,6 @@ function SinglePlayerEscapeDlg::returnToGame( %this )
//error( "** CALLING SinglePlayerEscapeDlg::returnToGame **" );
$timeScale = 1;
Canvas.popDialog( SinglePlayerEscapeDlg );
CursorOff();
movemap.push();
//trainingmap.push();
@ -1041,6 +1028,9 @@ function SinglePlayerEscapeDlg::returnToGame( %this )
function singlePlayerGame::OptionsDlgSleep(%game)
{
$enableDirectInput = 1;
activateDirectInput();
Canvas.pushDialog( SinglePlayerEscapeDlg );
// the player may have changed his keys
// we need to reload the big spdialog string table that

View file

@ -170,23 +170,6 @@ function TeamHuntersGame::resetScore(%game, %client)
%client.deaths = 0;
}
//NOTE - if we revert to this method of scoring, the function DefaultGame::awardScoreSuicide() no longer increments %client.deaths
// function TeamHuntersGame::recalcScore(%game, %cl)
// {
// if (%cl <= 0)
// return;
//
// %cl.score = 0;
// %cl.score += %cl.kills * %game.SCORE_PER_KILL;
// %cl.score += %cl.deaths * %game.SCORE_PER_DEATH;
// %cl.score += %cl.suicides * %game.SCORE_PER_SUICIDE;
//
// //must send the message to update the HUD
// messageClient(%cl, 'MsgYourScoreIs', "", %cl.score);
//
// %game.recalcTeamRanks(%cl);
// }
function TeamHuntersGame::recalcScore(%game, %cl)
{
if (%cl <= 0)

View file

@ -6,6 +6,8 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
%gender = (%client.sex $= "Male" ? 'he' : 'she');
if ( Game.scheduleVote $= "" )
{
%clientsVoting = 0;
//send a message to everyone about the vote...
if (%playerVote)
{
@ -36,14 +38,13 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
}
Game.kickClient = %arg1;
%clientsVoting = 0;
if(%teamSpecific)
{
for ( %clientIndex = 0; %clientIndex < ClientGroup.getCount(); %clientIndex++ )
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %clientIndex );
%cl = ClientGroup.getObject( %idx );
if(%cl.team == %client.team)
if (%cl.team == %client.team && !%cl.isAIControlled())
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1.name);
%clientsVoting++;
@ -51,15 +52,43 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
}
}
else
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1.name);
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1.name);
%clientsVoting++;
}
}
}
}
else
{
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1.name);
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1.name);
%clientsVoting++;
}
}
}
}
else if ( %typeName $= "VoteChangeMission" )
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 %3 (%4).', %client.name, %actionMsg, %arg1, %arg2 );
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3 (%4).', %client.name, %actionMsg, %arg1, %arg2 );
%clientsVoting++;
}
}
}
else if (%arg1 !$= 0)
{
if (%arg2 !$= 0)
@ -68,7 +97,17 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
{
%admin = getAdmin();
if(%admin > 0)
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 Tournament Mode (%3).', %client.name, %actionMsg, %arg1);
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 Tournament Mode (%3).', %client.name, %actionMsg, %arg1);
%clientsVoting++;
}
}
}
else
{
messageClient( %client, 'clientMsg', 'There must be a server admin to play in Tournament Mode.');
@ -76,14 +115,43 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
}
}
else
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 %3 %4.', %client.name, %actionMsg, %arg1, %arg2);
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3 %4.', %client.name, %actionMsg, %arg1, %arg2);
%clientsVoting++;
}
}
}
}
else
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1);
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2 %3.', %client.name, %actionMsg, %arg1);
%clientsVoting++;
}
}
}
}
else
messageAll( 'VoteStarted', '\c2%1 initiated a vote to %2.', %client.name, %actionMsg);
{
for ( %idx = 0; %idx < ClientGroup.getCount(); %idx++ )
{
%cl = ClientGroup.getObject( %idx );
if ( !%cl.isAIControlled() )
{
messageClient( %cl, 'VoteStarted', '\c2%1 initiated a vote to %2.', %client.name, %actionMsg);
%clientsVoting++;
}
}
}
// open the vote hud for all clients that will participate in this vote
if(%teamSpecific)
@ -92,7 +160,7 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
{
%cl = ClientGroup.getObject( %clientIndex );
if(%cl.team == %client.team)
if(%cl.team == %client.team && !%cl.isAIControlled())
messageClient(%cl, 'openVoteHud', "", %clientsVoting, ($Host::VotePassPercent / 100));
}
}
@ -101,7 +169,8 @@ function serverCmdStartNewVote(%client, %typeName, %actionMsg, %arg1, %arg2, %ar
for ( %clientIndex = 0; %clientIndex < ClientGroup.getCount(); %clientIndex++ )
{
%cl = ClientGroup.getObject( %clientIndex );
messageClient(%cl, 'openVoteHud', "", $HostGamePlayerCount, ($Host::VotePassPercent / 100));
if ( !%cl.isAIControlled() )
messageClient(%cl, 'openVoteHud', "", %clientsVoting, ($Host::VotePassPercent / 100));
}
}

View file

@ -473,11 +473,6 @@ function AIConnection::onAIConnect(%client, %name, %team, %skill, %offense, %voi
%voicePitch = 1.0;
%client.voicePitch = %voicePitch;
if ( getRandom() > 0.5 )
%client.skin = addTaggedString( "basebot" );
else
%client.skin = addTaggedString( "basebbot" );
%client.name = addTaggedString( "\cp\c9" @ %name @ "\co" );
%client.nameBase = %name;
@ -485,8 +480,15 @@ function AIConnection::onAIConnect(%client, %name, %team, %skill, %offense, %voi
echo("CADD: " @ %client @ " " @ %client.getAddress());
$HostGamePlayerCount++;
//set the initial team - Game.assignClientTeam() should be called later on...
%client.team = %team;
if ( %client.team & 1 )
%client.skin = addTaggedString( "basebot" );
else
%client.skin = addTaggedString( "basebbot" );
//setup the target for use with the sensor net, etc...
%client.target = allocClientTarget(%client, %client.name, "", %client.voiceTag, '_ClientConnection', 0, 0, %client.voicePitch);
%client.target = allocClientTarget(%client, %client.name, %client.skin, %client.voiceTag, '_ClientConnection', 0, 0, %client.voicePitch);
//i need to send a "silent" version of this for single player but still use the callback -jr`
if($currentMissionType $= "SinglePlayer")
@ -494,9 +496,6 @@ function AIConnection::onAIConnect(%client, %name, %team, %skill, %offense, %voi
else
messageAllExcept(%client, -1, 'MsgClientJoin', '\c1%1 joined the game.', %name, %client, %client.target, true);
//set the initial team - Game.assignClientTeam() should be called later on...
%client.team = %team;
//assign the skill
%client.setSkillLevel(%skill);

View file

@ -224,8 +224,6 @@ function PlayGui::onWake(%this)
// hack city - these controls are floating around and need to be clamped
schedule(0, 0, "refreshCenterTextCtrl");
schedule(0, 0, "refreshBottomTextCtrl");
CursorOff();
}
function refreshBottomTextCtrl()
@ -251,8 +249,6 @@ function PlayGui::onSleep(%this)
if ( isObject( observerMap ) )
observerMap.pop();
//flyingCameraMove.pop();
CursorOn();
}
function onConnectRequestRejected( %msg )
@ -1652,6 +1648,7 @@ function clientCmdMissionStartPhase2(%seq)
// clean some stuff up.
MessageHud.close();
purgeResources();
if (!$pref::NoClearConsole)
cls();
commandToServer('MissionStartPhase2Done', %seq);
}

View file

@ -5,13 +5,18 @@ if ( $platform $= "linux" ) {
} else {
$pref::Audio::drivers = "Miles";
}
$pref::Audio::frequency = 22100;
$pref::Audio::frequency = 22050;
$pref::Audio::sampleBits = 16;
$pref::Audio::channels = 2;
$pref::Audio::enableVoiceCapture = 1;
$pref::Audio::voiceChannels = 1;
if ( $platform $= "linux" ) {
$pref::Audio::encodingLevel = 3;
$pref::Audio::decodingMask = 15;
} else {
$pref::Audio::encodingLevel = 0;
$pref::Audio::decodingMask = 1;
}
$pref::Audio::forceMaxDistanceUpdate = 0;
$pref::Audio::environmentEnabled = 0;
$pref::Audio::musicEnabled = 1;

View file

@ -171,7 +171,6 @@ function CommanderMapGui::onWake(%this)
alxStop( $HudHandle['CommandScreen'] );
alxPlay(CommandMapActivateSound, 0, 0, 0);
$HudHandle['CommandScreen'] = alxPlay(CommandMapHumSound, 0, 0, 0);
CursorOn();
CMDTextButton.setValue(CommanderMap.renderText);
@ -198,7 +197,6 @@ function CommanderMapGui::onSleep(%this)
%this.open = false;
commandToServer('ScopeCommanderMap', false);
CursorOff();
if(CMContextPopup.visible == true)
CMContextPopup.reset();
@ -214,6 +212,9 @@ function CommanderMapGui::onSleep(%this)
// if this gui is being removed outside of CommanderMapGui::close()
if(CommanderTV.open && CommanderTV.attached)
commandToServer('AttachCommanderCamera', -1);
//always set the cursor back to an arrow when you leave...
Canvas.setCursor(CMDCursorArrow);
}
function CommanderMapGui::open(%this)
@ -776,6 +777,7 @@ new ActionMap(CommanderTVControl);
CommanderTVControl.bind(mouse, xaxis, yaw);
CommanderTVControl.bind(mouse, yaxis, pitch);
function CommanderTV_ButtonPress(%val)
{
if(%val)

View file

@ -18,16 +18,11 @@ function MessageBoxOK( %title, %message, %callback )
//------------------------------------------------------------------------------
function MessageBoxOKDlg::onWake( %this )
{
%this.mouseOn = Canvas.isCursorOn();
if ( !%this.mouseOn )
CursorOn();
}
//------------------------------------------------------------------------------
function MessageBoxOKDlg::onSleep( %this )
{
if ( !%this.mouseOn )
CursorOff();
%this.callback = "";
}
@ -46,16 +41,11 @@ function MessageBoxOKCancel( %title, %message, %callback, %cancelCallback )
//------------------------------------------------------------------------------
function MessageBoxOKCancelDlg::onWake( %this )
{
%this.mouseOn = Canvas.isCursorOn();
if ( !%this.mouseOn )
CursorOn();
}
//------------------------------------------------------------------------------
function MessageBoxOKCancelDlg::onSleep( %this )
{
if ( !%this.mouseOn )
CursorOff();
%this.callback = "";
}
@ -74,16 +64,11 @@ function MessageBoxYesNo( %title, %message, %yesCallback, %noCallback )
//------------------------------------------------------------------------------
function MessageBoxYesNoDlg::onWake( %this )
{
%this.mouseOn = Canvas.isCursorOn();
if ( !%this.mouseOn )
CursorOn();
}
//------------------------------------------------------------------------------
function MessageBoxYesNoDlg::onSleep( %this )
{
if ( !%this.mouseOn )
CursorOff();
%this.yesCallback = "";
%this.noCallback = "";
}
@ -112,16 +97,11 @@ function CloseMessagePopup()
//------------------------------------------------------------------------------
function PickTeamDlg::onWake( %this )
{
%this.mouseOn = Canvas.isCursorOn();
if ( !%this.mouseOn )
CursorOn();
}
//------------------------------------------------------------------------------
function PickTeamDlg::onSleep( %this )
{
if ( !%this.mouseOn )
CursorOff();
}
//------------------------------------------------------------------------------
@ -159,6 +139,7 @@ function fillLoadSaveList( %ctrl, %fileSpec, %validate, %isSave )
%id++;
}
}
%ctrl.sort( 0 );
}
//------------------------------------------------------------------------------

View file

@ -20,10 +20,6 @@ function cancelCredits()
//delete the contents of the ML ctrl so as to free up memory...
Credits_Text.setText("");
//restore the mouse
ConsoleDlg.mouseOn = true;
cursorOn();
}
function CreditsGui::onWake(%this)
@ -41,9 +37,6 @@ function CreditsGui::onWake(%this)
}
CreditsActionMap.push();
//hide the mouse
cursorOff();
//build the ML text ctrl...
exec("scripts/creditsText.cs");

View file

@ -1209,10 +1209,16 @@ function DefaultGame::assignClientTeam(%game, %client, %respawn )
if ( %client.isAIControlled() )
{
if ( %leastTeam & 1 )
{
%client.skin = addTaggedString( "basebot" );
setTargetSkin( %client.target, 'basebot' );
}
else
{
%client.skin = addTaggedString( "basebbot" );
setTargetSkin( %client.target, 'basebbot' );
}
}
else
setTargetSkin( %client.target, $teamSkin[%client.team] );
//setTargetSkin( %client.target, %client.skin );
@ -1253,6 +1259,11 @@ function DefaultGame::clientJoinTeam( %game, %client, %team, %respawn )
logEcho(%client.nameBase@" (cl "@%client@") joined team "@%client.team);
}
function DefaultGame::AIHasJoined(%game, %client)
{
//defined to prevent console spam
}
function DefaultGame::AIChangeTeam(%game, %client, %newTeam)
{
//make sure we're trying to drop an AI
@ -1283,6 +1294,19 @@ function DefaultGame::AIChangeTeam(%game, %client, %newTeam)
%client.team = %newTeam;
if (%newTeam < 0)
Game.assignClientTeam(%client);
else
{
if ( %client.team & 1 )
{
%client.skin = addTaggedString( "basebot" );
setTargetSkin( %client.target, 'basebot' );
}
else
{
%client.skin = addTaggedString( "basebbot" );
setTargetSkin( %client.target, 'basebbot' );
}
}
messageAllExcept( %client, -1, 'MsgClientJoinTeam', '\c1bot %1 has switched to team %2.', %client.name, $teamName[%client.team], %client, %client.team );
}
@ -2328,6 +2352,12 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k
if( ! %targetClient.matchStartReady )
return;
if( %client.isSuperAdmin )
{
messageClient( %client, 'MsgPlayerPopupItem', "", %key, "addAdmin", "", 'Add to Server Admin List', 10);
messageClient( %client, 'MsgPlayerPopupItem', "", %key, "addSuperAdmin", "", 'Add to Server SuperAdmin List', 11);
}
//mute options
if ( !%isTargetSelf )
{
@ -2355,9 +2385,6 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k
if ( !%isTargetSelf )
{
messageClient( %client, 'MsgPlayerPopupItem', "", %key, "KickPlayer", "", 'Vote to Kick', 3 );
if ( !%isTargetBot )
messageClient( %client, 'MsgPlayerPopupItem', "", %key, "BanPlayer", "", 'Vote to Ban', 4 );
}
}
@ -2373,6 +2400,7 @@ function DefaultGame::sendGamePlayerPopupMenu( %game, %client, %targetClient, %k
if ( !%isTargetBot )
{
if( %client.isSuperAdmin )
messageClient( %client, 'MsgPlayerPopupItem', "", %key, "BanPlayer", "", 'Ban', 4 );
if ( !%isTargetObserver )

View file

@ -31,6 +31,7 @@ $NotDeployableReason::NoTerrainFound = 6;
$NotDeployableReason::NoInteriorFound = 7;
$NotDeployableReason::TurretTooClose = 8;
$NotDeployableReason::TurretSaturation = 9;
$NotDeployableReason::SurfaceTooNarrow = 10;
$MinDeployableDistance = 0.5;
$MaxDeployableDistance = 4.0; //meters from body
@ -569,6 +570,20 @@ function ShapeBaseImageData::testNoInteriorFound(%item, %surface)
//don't check this for non-Clasping turret deployables
}
//-------------------------------------------------
function TurretIndoorDeployableImage::testHavePurchase(%item, %xform)
{
%footprintRadius = 0.34;
%collMask = $TypeMasks::InteriorObjectType;
return %item.deployed.checkDeployPurchase(%xform, %footprintRadius, %collMask);
}
function ShapeBaseImageData::testHavePurchase(%item, %xform)
{
//don't check this for non-Clasping turret deployables
return true;
}
//-------------------------------------------------
function TurretIndoorDeployableImage::testTurretTooClose(%item, %plyr)
{
@ -767,6 +782,10 @@ function ShapeBaseImageData::testInvalidDeployConditions(%item, %plyr, %slot)
{
%disqualified = $NotDeployableReason::ObjectTooClose;
}
else if (!%item.testHavePurchase(%xform))
{
%disqualified = $NotDeployableReason::SurfaceTooNarrow;
}
}
if (%plyr.getMountedImage($BackpackSlot) == %item) //player still have the item?
@ -857,6 +876,9 @@ function Deployables::displayErrorMsg(%item, %plyr, %slot, %error)
case $NotDeployableReason::TurretSaturation:
%msg = '\c2There are too many turrets nearby.%1';
case $NotDeployableReason::SurfaceTooNarrow:
%msg = '\c2There is not adequate surface to clamp to here.%1';
default:
%msg = '\c2Deploy failed.';
}

View file

@ -1132,27 +1132,16 @@ function clientCmdTogglePlayHuds(%val)
mainVoteHud.setVisible(0);
}
//------------------------------------------------------------------------------
// - check if anything currently up needs the cursor to be enabled
function keepCursorOn()
{
return(CommanderMapGui.open || $ConsoleActive);
}
//------------------------------------------------------------------------------
function toggleCursorHuds(%tag)
{
if($Hud[%tag] !$= "" && $Hud[%tag].pushed)
{
if (Canvas.isCursorOn() && !keepCursorOn())
CursorOff();
hideHud(%tag);
clientCmdTogglePlayHuds(true);
}
else
{
if (!Canvas.isCursorOn())
CursorOn();
showHud(%tag);
clientCmdTogglePlayHuds(false);
}
@ -1243,8 +1232,6 @@ function closeHud(%msgType, %msgString, %tag)
$Hud[%tag].setVisible(false);
Canvas.popDialog($Hud[%tag]);
$Hud[%tag].pushed = 0;
if (Canvas.isCursorOn() && !keepCursorOn())
CursorOff();
}
}

View file

@ -1082,13 +1082,13 @@ datablock DebrisData( PlayerDebris )
{
explodeOnMaxBounce = false;
elasticity = 0.15;
elasticity = 0.35;
friction = 0.5;
lifetime = 4.0;
lifetimeVariance = 0.0;
minSpinSpeed = 40;
minSpinSpeed = 60;
maxSpinSpeed = 600;
numBounces = 5;
@ -1100,7 +1100,7 @@ datablock DebrisData( PlayerDebris )
useRadiusMass = true;
baseRadius = 1;
velocity = 20.0;
velocity = 18.0;
velocityVariance = 12.0;
};
@ -1892,6 +1892,8 @@ datablock PlayerData(LightMaleBiodermArmor) : LightMaleHumanArmor
shapeFile = "bioderm_light.dts";
jetEmitter = BiodermArmorJetEmitter;
debrisShapeName = "bio_player_debris.dts";
//Foot Prints
decalData = LightBiodermFootprint;
decalOffset = 0.3;
@ -1912,6 +1914,8 @@ datablock PlayerData(MediumMaleBiodermArmor) : MediumMaleHumanArmor
shapeFile = "bioderm_medium.dts";
jetEmitter = BiodermArmorJetEmitter;
debrisShapeName = "bio_player_debris.dts";
//Foot Prints
decalData = MediumBiodermFootprint;
decalOffset = 0.35;
@ -1934,6 +1938,8 @@ datablock PlayerData(HeavyMaleBiodermArmor) : HeavyMaleHumanArmor
shapeFile = "bioderm_heavy.dts";
jetEmitter = BiodermArmorJetEmitter;
debrisShapeName = "bio_player_debris.dts";
//Foot Prints
decalData = HeavyBiodermFootprint;
decalOffset = 0.4;
@ -2522,30 +2528,27 @@ function Armor::damageObject(%data, %targetObject, %sourceObject, %position, %am
// where did this guy get it?
%damLoc = %targetObject.getDamageLocation(%position);
// if(%targetClient.race !$= "Bioderm")
// {
// // should this guy be blown apart?
// if( %damageType == $DamageType::Explosion ||
// %damageType == $DamageType::TankMortar ||
// %damageType == $DamageType::Mortar ||
// %damageType == $DamageType::MortarTurret ||
// %damageType == $DamageType::BomberBombs ||
// %damageType == $DamageType::SatchelCharge )
// {
// if( %previousDamage >= 0.35 ) // only if <= 35 percent damage remaining
// {
// %targetObject.setMomentumVector(%momVec);
// %targetObject.blowup();
// }
// }
// }
// should this guy be blown apart?
if( %damageType == $DamageType::Explosion ||
%damageType == $DamageType::TankMortar ||
%damageType == $DamageType::Mortar ||
%damageType == $DamageType::MortarTurret ||
%damageType == $DamageType::BomberBombs ||
%damageType == $DamageType::SatchelCharge )
{
if( %previousDamage >= 0.35 ) // only if <= 35 percent damage remaining
{
%targetObject.setMomentumVector(%momVec);
%targetObject.blowup();
}
}
// this should be funny...
// if( %damageType == $DamageType::VehicleSpawn && %targetClient.race !$= "Bioderm" )
// {
// %targetObject.setMomentumVector("0 0 1");
// %targetObject.blowup();
// }
if( %damageType == $DamageType::VehicleSpawn )
{
%targetObject.setMomentumVector("0 0 1");
%targetObject.blowup();
}
// If we were killed, max out the flash
%targetObject.setDamageFlash(0.75);

View file

@ -236,6 +236,10 @@ function DisconnectedCleanup()
clearTextureHolds();
purgeResources();
// Restart the email check:
if ( !EmailGui.checkingEmail && EmailGui.checkSchedule $= "" )
CheckEmail( true );
IRCClient::onLeaveGame();
}
@ -884,7 +888,7 @@ function serverSetClientTeamState( %client )
}
else // let this player join the team he was on last game
{
if(Game.numTeams > 1)
if(Game.numTeams > 1 && %client.lastTeam <= Game.numTeams )
{
Game.clientJoinTeam( %client, %client.lastTeam, false );
}
@ -1444,12 +1448,15 @@ function dumpGameString()
function isOnAdminList(%client)
{
if( !%totalRecords = getRecordCount( $Host::adminList ) )
if( !%totalRecords = getRecordCount( $Host::AdminList ) )
{
return false;
}
for(%i = 0; %i < %totalRecords; %i++)
{
%record = getField(getRecord( $Host::adminList, %i ), 0 );
%record = getField( getRecord( $Host::AdminList, 0 ), %i);
echo( "record: " @ %record @ "guid: " @ %client.guid );
if(%record == %client.guid)
return true;
}
@ -1460,11 +1467,14 @@ function isOnAdminList(%client)
function isOnSuperAdminList(%client)
{
if( !%totalRecords = getRecordCount( $Host::superAdminList ) )
{
return false;
}
for(%i = 0; %i < %totalRecords; %i++)
{
%record = getField( getRecord( $Host::superAdminList, %i ), 0);
%record = getField( getRecord( $Host::superAdminList, 0 ), %i);
echo( "record: " @ %record @ "guid: " @ %client.guid );
if(%record == %client.guid)
return true;
}
@ -1472,8 +1482,11 @@ function isOnSuperAdminList(%client)
return false;
}
function addToAdminList( %client )
function ServerCmdAddToAdminList( %admin, %client )
{
if( !%admin.isSuperAdmin )
return;
%count = getRecordCount( $Host::AdminList );
for ( %i = 0; %i < %count; %i++ )
@ -1483,11 +1496,17 @@ function addToAdminList( %client )
return; // They're already there!
}
$Host::AdminList = $Host::AdminList NL %client.guid;
if( %count == 0 )
$Host::AdminList = %client.guid;
else
$Host::AdminList = $Host::AdminList TAB %client.guid;
}
function addToSuperAdminList( %client )
function ServerCmdAddToSuperAdminList( %admin, %client )
{
if( !%admin.isSuperAdmin )
return;
%count = getRecordCount( $Host::SuperAdminList );
for ( %i = 0; %i < %count; %i++ )
@ -1497,7 +1516,10 @@ function addToSuperAdminList( %client )
return; // They're already there!
}
$Host::SuperAdminList = $Host::SuperAdminList NL %client.guid;
if( %count == 0 )
$Host::SuperAdminList = %client.guid;
else
$Host::SuperAdminList = $Host::SuperAdminList TAB %client.guid;
}
function resetTournamentPlayers()

View file

@ -55,8 +55,7 @@ $MasterServerAddress = "IP:198.74.40.152:28000";
// 0: .v12 (1.2 kbits/sec), 1: .v24 (2.4 kbits/sec), 2: .v29 (2.9kbits/sec)
// 3: gsm (6.6 kbits/sec)
// GSM: $Audio::maxEncodingLevel = 3;
$Audio::maxEncodingLevel = 2;
$Audio::maxEncodingLevel = 3;
$Audio::maxVoiceChannels = 2;
$Host::MapPlayerLimits["Abominable", "CnH"] = "-1 32";

View file

@ -116,19 +116,13 @@ function clientCmdStationVehicleShowHud()
if ( Canvas.getContent() != PlayGui.getId() )
return;
if ( !Canvas.isCursorOn() )
CursorOn();
showHud( 'vehicleHud' );
clientCmdTogglePlayHuds(false);
}
//------------------------------------------------------------------------------
function clientCmdStationVehicleHideHud()
{
if ( Canvas.isCursorOn() )
CursorOff();
hideHud( 'vehicleHud' );
clientCmdTogglePlayHuds(true);
}

View file

@ -158,6 +158,9 @@ datablock FlyingVehicleData(HAPCFlyer) : HavocDamageProfile
checkRadius = 7.8115;
observeParameters = "1 15 15";
stuckTimerTicks = 32; // If the hapc spends more than 1 sec in contact with something
stuckTimerAngle = 80; // with a > 80 deg. pitch, BOOM!
};
function HAPCFlyer::hasDismountOverrides(%data, %obj)

View file

@ -747,7 +747,8 @@ function TribeAdminMemberDlg::onDatabaseQueryResult( %this, %status, %resultStri
{
case "setMemberProfile":
%this.state = "done";
messageBoxOK("COMPLETE","Member Profile has been updated","WonUpdateCertificate();TL_Roster.setValue(1);");
ForumsTopicsList.refreshFlag = true;
messageBoxOK("COMPLETE","Member Profile has been updated","WonUpdateCertificate();TL_Profile.setValue(1);");
}
}
else if (getSubStr(getField(%status,1),0,9) $= "ORA-04061")
@ -1684,6 +1685,24 @@ function PlayerPane::ButtonClick( %this, %senderid )
W_MemberList.addColumn( 1, "TITLE", 80, 0, 300 );
W_MemberList.addColumn( 2, "RNK", 38, 0, 50, "numeric center" );
%playerName = TWBTabView.getTabText(TWBTabView.GetSelectedID());
if(%playerName $= getField(getRecord(wonGetAuthInfo(),0),0))
{
%ai = wonGetAuthInfo();
for(%ix=0;%ix<getField(getRecord(%ai,1),0);%ix++)
{
%row = getRecord(%ai,2+%ix);
%wid = getField(%row,2);
%name = getField(%row,0);
%title = getField(%row,4);
if(%title $= "")
%title = "Not Shown";
%adminLevel = getField(%row,3);
%editkick = %adminLevel >= 2;
W_MemberList.AddMember(%wid,%name,%adminLevel,%editkick,%row);
W_MemberList.AddRow(%wid,%name TAB %title TAB %adminLevel);
}
}
else
TribeAndWarriorBrowserGui.eid = schedule(500,0,DatabaseQueryArray,13,0,%playerName,%this,%this.key,true);
case 3: //Player Buddylist
W_MemberList.Clear();

View file

@ -380,6 +380,16 @@ function CheckEmail(%calledFromSched)
EmailGui.checkingEmail = true;
}
//-----------------------------------------------------------------------------
function CancelEmailCheck()
{
if ( EmailGui.checkSchedule )
{
error( ">> SCHEDULED EMAIL CHECK " @ EmailGui.checkSchedule @ " CANCELED <<" );
cancel( EmailGui.checkSchedule );
EmailGui.checkSchedule = "";
}
}
//-----------------------------------------------------------------------------
function EmailEditBlocks()
{
Canvas.pushDialog(EmailBlockDlg);

View file

@ -3,6 +3,9 @@
//------------------------------------------
$ForumCacheVersion = 8; //lucky seven...NOT!
$ForumCachePath = "webcache/" @ getField(wonGetAuthInfo(),3) @ "/";
$currentForumPage = 0;
$topicPageLength = 60;
$ForumsConnecting = "CONNECTING";
$ForumsGetForums = "FETCHING FORUM LIST ";
$ForumsGetTopics = "FETCHING TOPICS ";
@ -67,6 +70,12 @@ if(!isObject(ForumsMessageVector))
new MessageVector(ForumsMessageVector);
}
//-----------------------------------------------------------------------------
function updateTopicPageBtn(%prev,%next)
{
FTPrevBtn.setActive( %prev );
FTNextBtn.setActive( %next );
}
//-----------------------------------------------------------------------------
function DateStrCompare(%date1,%date2)
{
%d1 = getSubStr(%date1,0,2);
@ -212,15 +221,13 @@ function ForumsGetTextDisplay(%text, %offSet)
//-----------------------------------------------------------------------------
function ForumsGoTopics(%direction)
{
// ForumsTopicsList.direction = %direction;
ForumsTopicsList.MaxDate = "";
ForumsTopicsList.MinDate = "";
ForumShell.setTitle($ForumsConnecting);
ForumsThreadPane.setVisible(false);
ForumsTopicsPane.setVisible(true);
FO_RejectBtn.visible = false;
FO_EditBtn.visible = false;
FO_AcceptBtn.visible = false;
if ( ForumsTopicsList.rowCount() == 0 || ForumsTopicsList.refreshFlag )
{
FM_NewTopic.setActive(true);
@ -235,8 +242,8 @@ function ForumsGoTopics(%direction)
function ForumsRefreshTopics()
{
ForumsTopicsList.refreshFlag = true;
// ForumsMessageVector.clear();
// ForumsMessageVector.tid = "";
$currentForumPage = 0;
updateTopicPageBtn(0,0);
ForumsGui.eid = schedule(250,ForumsGui,GetTopicsList);
}
//-----------------------------------------------------------------------------
@ -328,7 +335,6 @@ function ForumsNewTopic()
}
else
{
// ForumsGui.LaunchForum = getField(ForumsList.getRowTextById(ForumsList.getSelectedID()),0);
$ForumsSubject = "";
Canvas.pushDialog( ForumsComposeDlg );
ForumsBodyText.setValue( "" );
@ -498,15 +504,13 @@ function GetForumsList()
//-----------------------------------------------------------------------------
function GetTopicsList()
{
// error("GTL: " @ ForumsComposeDlg.forum);
ForumsGui.key = LaunchGui.key++;
ForumShell.setTitle($ForumsGetTopics);
ForumsGui.state = "getTopicList";
ForumsTopicsList.clear();
canvas.SetCursor(ArrowWaitCursor);
ForumsTopicsList.clearList();
// error("DQA:" @ 8 TAB ForumsComposeDlg.forum);
DatabaseQueryArray(8,80,ForumsComposeDlg.forum,ForumsGui,ForumsGui.key,true);
DatabaseQueryArray(8,$currentForumPage,ForumsComposeDlg.forum,ForumsGui,ForumsGui.key,true);
ForumsTopicsList.refreshFlag = 0;
}
//-----------------------------------------------------------------------------
@ -565,9 +569,12 @@ function ForumsGui::onWake(%this)
ForumShell.setTitle($ForumsConnecting);
ForumsGui.state = "getForumList";
canvas.SetCursor(ArrowWaitCursor);
$currentForumPage = 0;
DatabaseQueryArray(7,100,"",ForumsGui,ForumsGui.key);
}
// Make these buttons inactive until a message is selected:
FTPrevBtn.setActive(false);
FTNextBtn.setActive(false);
FO_ReplyBtn.setActive( false );
FO_NextBtn.setActive( false );
FO_PreviousBtn.setActive( false );
@ -615,6 +622,22 @@ function ForumsGui::onDatabaseQueryResult(%this,%status,%resultString,%key)
{
ForumShell.setTitle($ForumsGetTopics @ ": " @ getField(%resultString,0));
%this.state = "TopicList";
%recordCount = getField(%resultString,0);
if(%recordCount > $topicPageLength)
{
if($currentForumPage == 0)
updateTopicPageBtn(0,1);
else if($currentForumPage > 0)
updateTopicPageBtn(1,1);
}
else
{
if($currentForumPage == 0)
updateTopicPageBtn(0,0);
else if($currentForumPage > 0)
updateTopicPageBtn(1,0);
}
}
else
{
@ -812,6 +835,36 @@ function ForumsGui::onDatabaseRow(%this,%row,%isLastRow,%key)
}
}
//-----------------------------------------------------------------------------
function ForumsGui::NextThreadPage()
{
if($currentForumPage >= 5)
return;
ForumsGui.key = LaunchGui.key++;
ForumShell.setTitle($ForumsGetTopics);
ForumsGui.state = "getTopicList";
ForumsTopicsList.clear();
canvas.SetCursor(ArrowWaitCursor);
ForumsTopicsList.clearList();
$currentForumPage++;
DatabaseQueryArray(8,$currentForumPage,ForumsComposeDlg.forum,ForumsGui,ForumsGui.key,true);
ForumsTopicsList.refreshFlag = 0;
}
//-----------------------------------------------------------------------------
function ForumsGui::PreviousThreadPage()
{
if($currentForumPage == 0)
return;
ForumsGui.key = LaunchGui.key++;
ForumShell.setTitle($ForumsGetTopics);
ForumsGui.state = "getTopicList";
ForumsTopicsList.clear();
canvas.SetCursor(ArrowWaitCursor);
ForumsTopicsList.clearList();
$currentForumPage--;
DatabaseQueryArray(8,80,ForumsComposeDlg.forum,ForumsGui,ForumsGui.key,true);
ForumsTopicsList.refreshFlag = 0;
}
//-----------------------------------------------------------------------------
//-- ForumsList --------------------------------------------------------------
//-----------------------------------------------------------------------------
function ForumsList::onSelect(%this)
@ -821,6 +874,7 @@ function ForumsList::onSelect(%this)
FM_NewTopic.setActive(true);
ForumsComposeDlg.forum = ForumsList.getSelectedID();
ForumShell.setTitle("FORUMS: " @ getField(ForumsList.getRowTextbyID(ForumsList.getSelectedID()),0));
$currentForumPage = 0;
ForumsGui.eid = schedule(250,ForumsGui,GetTopicsList);
}
//-----------------------------------------------------------------------------

View file

@ -1,6 +1,8 @@
addWebLink( "Tribes 2 Home Page", "www.tribes2.com" );
addWebLink( "T2 Technical Information", "sierrastudios.com/games/tribes2/support" );
addWebLink( "5 Assed Monkey", "www.5assedmonkey.com" );
addWebLink( "Arc 2055", "www.arc2055.com" );
addWebLink( "Atari Secret Society", "www.atarisecretsociety.org" );
addWebLink( "BarrysWorld", "www.barrysworld.com" );
addWebLink( "Clan Happytyme", "www.happytyme.com" );
addWebLink( "ClanBase", "www.clanbase.com" );
@ -14,17 +16,21 @@ addWebLink( "Long Dongles", "www.longdongles.com" );
addWebLink( "MaxBaud.Net", "www.maxbaud.net" );
addWebLink( "MoreGaming", "www.moregaming.com" );
addWebLink( "NetGames UK", "www.nguk.net" );
addWebLink( "NGI", "www.ngi.it" );
addWebLink( "PlanetTribes", "www.planettribes.com" );
addWebLink( "Raging Angels", "www.ragingangels.org" );
addWebLink( "Rogue Disciples", "www.roguedisciples.com" );
addWebLink( "StrikeForce", "www.strikeforcecenter.com" );
addWebLink( "TeamSound", "www.teamsound.com" );
addWebLink( "Telepresence Heavy Assault Team", "www.that.co.nz" );
addWebLink( "Tribes2 Database", "www.tribes2database.com" );
addWebLink( "TribesMaps", "www.tribesmaps.com" );
addWebLink( "The Ghostbear Tribe", "www.ghostbear.net" );
addWebLink( "TribalWar", "www.tribalwar.com" );
addWebLink( "Tribes2 Database", "www.tribes2database.com" );
addWebLink( "Tribes Gamers", "www.tribesgamers.com" );
addWebLink( "TribesMaps", "www.tribesmaps.com" );
addWebLink( "Tribes Worlds", "www.tribesworlds.com" );
addWebLink( "Tribes-Universe", "www.tribes-universe.com" );
addWebLink( "WirePlay", "www.wireplay.com.au" );
addWebLink( "ClanServ", "www.clanserv.com" );
//addWebLink( "Z Free", "games13.clear.net.nz" );

View file

@ -1,10 +1,16 @@
$WebLinkCount = 0;
$currentPage = 0;
function LaunchNews()
{
LaunchTabView.viewTab( "NEWS", NewsGui, 0 );
}
//-----------------------------------------------------------------------------
function updatePageBtn(%prev,%next)
{
NewsPrevBtn.setActive( %prev );
NewsNextBtn.setActive( %next );
}
//-----------------------------------------------------------------------------
function NewsGui::onWake(%this)
{
Canvas.SetCursor(ArrowWaitCursor);
@ -104,39 +110,21 @@ function NewsGui::onDatabaseQueryResult(%this, %status, %RowCount_Result, %key)
%this.acl = getField(%status,3);
%this.ttlRecords = getField( %status,2 );
%this.recordCount = getField( %RowCount_Result,0 );
%this.pages = 0;
// RecordSet = least of 24 or rows returned
if(getField(%RowCount_Result,0) < 24)
%this.recordSet = getField(%RowCount_Result,0);
if(%this.recordCount > 23)
{
if($currentPage == 0)
updatePageBtn(0,1);
else if($currentPage > 0)
updatePageBtn(1,1);
}
else
%this.recordSet = 24;
{
if($currentPage == 0)
updatePageBtn(0,0);
else if($currentPage > 0)
updatePageBtn(1,0);
}
// Calculate the Number of Pages
for( %temprec = %this.ttlRecords; %temprec > 0; %temprec -= 24 )
{
%this.pages++;
}
// SET = which page we are on
if( %this.set == 1 && %this.pages >= 2 )
{
NewsNextBtn.setActive( true );
NewsPrevBtn.setActive( false );
}
else if ( %this.set == %this.pages && %this.pages >= 2 )
{
NewsNextBtn.setActive( false );
NewsPrevBtn.setActive( true );
}
else if (%this.set == %this.pages && %this.pages <= 1)
{
NewsNextBtn.setActive( false );
NewsPrevBtn.setActive( false );
}
else
{
NewsNextBtn.setActive( true );
NewsPrevBtn.setActive( true );
}
default: // result string
}
}
@ -313,14 +301,14 @@ function NewsHeadlines::onSelect( %this, %id, %text )
function NewsGui::getPreviousNewsItems( %this )
{
// Fetch the next batch of newer news items:
if ( %this.set == 1 )
if($currentPage == 0)
return;
canvas.SetCursor(ArrowWaitCursor);
NewsGui.key = LaunchGui.key++;
%this.state = "status";
%this.articleCount = 0;
%this.set--;
DatabaseQueryArray(0,0,"1" TAB getField(%this.setList[%this.set],1), NewsGui, NewsGui.key );
$currentPage--;
DatabaseQueryArray(0,$currentPage,"1" TAB getField(%this.setList[%this.set],1), NewsGui, NewsGui.key );
}
//-----------------------------------------------------------------------------
function NewsGui::getNextNewsItems( %this )
@ -330,8 +318,8 @@ function NewsGui::getNextNewsItems( %this )
NewsGui.key = LaunchGui.key++;
%this.state = "status";
%this.articleCount = 0;
DatabaseQueryArray(0,0,"1" TAB getField(%this.setList[%this.set],0), NewsGui, NewsGui.key );
%this.set++;
$currentPage++;
DatabaseQueryArray(0,$currentPage,"1" TAB getField(%this.setList[%this.set],0), NewsGui, NewsGui.key );
}
//-----------------------------------------------------------------------------
function NewsMOTDText::onDatabaseQueryResult(%this, %status, %RowCount_Result, %key)

View file

@ -1 +1 @@
buildVersion.setValue( "APR 15, 2001, 10:42 AM (dmoore)" );
buildVersion.setValue( "APR 23, 2001, 6:48 PM (dmoore)" );

View file

@ -1563,21 +1563,6 @@ else
helpTag = "0";
text = "Confirm Password:";
};
new ShellTextEditCtrl() {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "133 115";
extent = "269 38";
minExtent = "32 38";
visible = "1";
variable = "$CreateAccountEmail";
helpTag = "0";
historySize = "0";
maxLength = "128";
password = "0";
glowOffset = "9 9";
};
new GuiTextCtrl() {
profile = "ShellTextRightProfile";
horizSizing = "right";
@ -1589,17 +1574,20 @@ else
helpTag = "0";
text = "Email:";
};
new ShellToggleButton() {
profile = "ShellRadioProfile";
new GuiLoginPasswordCtrl(EditAccountPasswordBox) {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "63 156";
extent = "366 30";
minExtent = "26 27";
position = "222 43";
extent = "180 38";
minExtent = "32 38";
visible = "1";
variable = "$CreateAccountSendInfo";
variable = "$CreateAccountPassword";
helpTag = "0";
text = "SEND ME INFORMATION ABOUT TRIBES 2 AND OTHER PRODUCTS";
historySize = "0";
maxLength = "16";
password = "1";
glowOffset = "9 9";
};
new ShellTextEditCtrl() {
profile = "NewTextEditProfile";
@ -1616,21 +1604,33 @@ else
password = "1";
glowOffset = "9 9";
};
new GuiLoginPasswordCtrl(EditAccountPasswordBox) {
new ShellTextEditCtrl() {
profile = "NewTextEditProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "222 43";
extent = "180 38";
position = "133 115";
extent = "269 38";
minExtent = "32 38";
visible = "1";
variable = "$CreateAccountPassword";
variable = "$CreateAccountEmail";
helpTag = "0";
historySize = "0";
maxLength = "16";
password = "1";
maxLength = "128";
password = "0";
glowOffset = "9 9";
};
new ShellToggleButton() {
profile = "ShellRadioProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "63 156";
extent = "366 30";
minExtent = "26 27";
visible = "1";
variable = "$CreateAccountSendInfo";
helpTag = "0";
text = "SEND ME INFORMATION ABOUT TRIBES 2 AND OTHER PRODUCTS";
};
new ShellBitmapButton() {
profile = "ShellButtonProfile";
horizSizing = "right";