// #category = ProPack // #name = ProPack Flag // #version = 6.98 // #date = October 7, 2001 // #warrior = Neofight // #email = neofight@tribes2.org // #web = http://propack.tribes2.org // #description = Transparent flag event pop-ups // #status = beta // #credit = Crunchy package ProPackFlag { function ProPackFlagHandleReturned(%msgType, %msgString, %clientname, %teamName, %team) { %team = StripNameColors(detag(%team)); %name = StripNameColors(detag(%clientname)); ProPackFlagPopup(%name, %team, "returned", "", ""); } function ProPackFlagHandleTaken(%msgType, %msgString, %clientname, %teamName, %team) { %team = StripNameColors(detag(%team)); %name = StripNameColors(detag(%clientname)); ProPackFlagPopup(%name, %team, "took", "", ""); } function ProPackFlagTR2Taken(%msgType, %msgString, %clientname, %teamName, %team) { %team = StripNameColors(detag(%team)); %name = StripNameColors(detag(%clientname)); if ($IHaveFlag) { ProPackFlagPopup(%name, %team, "took", "", ""); } else if (StrStr(%msgString, "Teammate") != -1) { ProPackFlagPopup(%name, %team, "took", "", ""); } else { ProPackFlagPopup(%name, %team, "took", "", ""); } } function ProPackFlagHandleDropped(%msgType, %msgString, %clientname, %teamName, %team) { %team = StripNameColors(detag(%team)); %name = StripNameColors(detag(%clientname)); ProPackFlagPopup(%name, %team, "dropped", "", ""); } function ProPackFlagHandleCapped(%msgType, %msgString, %clientname, %teamName, %team) { %team = StripNameColors(detag(%team)); %name = StripNameColors(detag(%clientname)); ProPackFlagPopup(%name, %team, "captured", "", ""); } function ProPackFlagPopup(%clientname, %team, %action, %team1color, %team2color) { %teamName = $clTeamScore[%team, 0]; %name = StripNameColors(detag(%clientname)); %color = (%team == $PPTeam) ? %team1color : %team2color; if (ProPackFlag.schedule != 0) cancel(ProPackFlag.schedule); if ($IHaveFlag) { %text = %color@"You" SPC %action SPC "the flag!"; } else if ( %name $= "0" || %name $= $PPName ) { if (%action $= "took") %action = "taken"; %text = %color@"The" SPC %teamname SPC "flag was" SPC %action@"!"; } else { %text = %clientname SPC %color@%action SPC "the" SPC %teamName SPC "flag!"; } ProPackFlagText.setText(""@%text); if ($ProPackPrefs::FlagHudActive) { ProPackFlag.setVisible(true); } else { ProPackFlag.setVisible(false); } ProPackFlag.schedule = schedule(5000, 0, eval, "ProPackFlag.setVisible(false);"); ProPackFlag.schedule = schedule(5000, 0, "ProPackFlagClearPopup"); } function ProPackFlagClearPopup() { ProPackFlagText.setText(""); } function ProPackFlagCreate() { ProPackFlagDestroy(); %ProFlagX = getWord($pref::Video::resolution, 0) * 0.5 - 160; %ProFlagY = getWord($pref::Video::resolution, 1) * 0.8; new ShellFieldCtrl(ProPackFlag) { profile = "GuiConsoleProfile"; horizSizing = "center"; vertSizing = "center"; position = %ProFlagX SPC %ProFlagY; extent = "320 20"; minExtent = "8 8"; visible = "1"; new GuiMLTextCtrl(ProPackFlagText) { profile = "ProPackTextCtrl"; horizSizing = "center"; vertSizing = "center"; position = "0 0"; extent = "318 18"; visible = "1"; helpTag = "0"; lineSpacing = "2"; allowColorChars = "1"; maxChars = "-1"; }; }; playgui.add(ProPackFlag); } function ProPackFlagDestroy() { if (isObject(ProPackFlag)) { playGui.remove(ProPackFlag); ProPackFlag.delete(); } } // --- Overrides --- function clientCmdTogglePlayHuds(%val) { if ( (%val) && ($ProPackPrefs::FlagHudActive) ) { ProPackFlag.setVisible(true); } else { ProPackFlag.setVisible(false); } parent::clientCmdTogglePlayHuds(%val); } function PlayGui::onWake(%this) { parent::onWake(%this); if (!isObject(ProPackFlag)) schedule(3000, 0, "ProPackFlagCreate"); if(isObject(HM) && isObject(HudMover)) hudmover::addhud(ProPackFlag, "ProPackFlag"); } function DispatchLaunchMode() { addMessageCallback('MsgCTFFlagTaken', ProPackFlagHandleTaken); addMessageCallback('MsgCTFFlagDropped', ProPackFlagHandleDropped); addMessageCallback('MsgCTFFlagCapped', ProPackFlagHandleCapped); addMessageCallback('MsgCTFFlagReturned', ProPackFlagHandleReturned); addMessageCallback('MsgTeamRabbitFlagTaken', ProPackFlagHandleTaken); addMessageCallback('MsgTeamRabbitFlagDropped', ProPackFlagHandleDropped); addMessageCallback('MsgTeamRabbitFlagReturned', ProPackFlagHandleReturned); addMessageCallback('MsgTR2FlagTaken', ProPackFlagTR2Taken); addMessageCallback('MsgTR2FlagDropped', ProPackFlagHandleDropped); parent::DispatchLaunchMode(); } }; activatePackage(ProPackFlag);