Is there a way to hide score in scoreboard (multiplayer)

sahbaz

Chieftain
Joined
Jun 6, 2021
Messages
19
Hey all,

I have seen some discussions related to this, my friends and me would like to hide scores, in ideal use-case, score would be hidden and al nations wont be sorted by score on scoreboard.

I know/assume for this that some changes needs to be done in:
Assets\Python\Screens\CvMainInterface

Is there someone who might know how to do this ?
 
Hi sahbaz

Perhaps I'm not understanding you correctly, but I think you can hide the scoreboard by clicking on your name/civilisation in the lower right corner. This should make all other civ names disappear. Is that what you mean?

Kind regards,
Ita Bear
 
Yes that is correct, but still if I want to talk with other civs I need to show them and to click on it. And in multiplayer how I can know that my friends wont be "cheating" :lol:
There must be solution to this, i have seen that in some modes they upgraded this scoreboard to show more info like (difficulty level and things like that)
 
Well, BUG mod (or BUG + BULL) includes the Advanced Scoreboard component. I’ve never jacked with it myself, but basically the scoreboard is customizable. In the BUG options in-game you can add or remove what the scoreboard displays. Not sure if that includes the score itself, or the sorting aspect.

(You can talk to civs via the foreign advisor scren too btw)
 
Well, BUG mod (or BUG + BULL) includes the Advanced Scoreboard component. I’ve never jacked with it myself, but basically the scoreboard is customizable. In the BUG options in-game you can add or remove what the scoreboard displays. Not sure if that includes the score itself, or the sorting aspect.

(You can talk to civs via the foreign advisor scren too btw)


If I remove it from the BUG options in game, does that means all other guys in multiplayer will share same settings as server ?
What I mean is, if I am host, and I turn off scoreboard in BUG menu, does that means same for all other human players in the game ?
 
I know/assume for this that some changes needs to be done in: Assets\Python\Screens\CvMainInterface
I think that's the right approach. You could search that file for "playerscore". Maybe replacing all uses of player scores with 0 would already pretty much give you what you want. May also have to look at uses of playerscore and teamscore in BUG's Scoreboard.py. The Victory screen (CvVictoryScreen.py) also shows some team scores. If you're not used to editing Civ's Python scripts: Setting LoggingEnabled=1 in CivilizationIV.ini is pretty indispensable. Can then consult PythonErr.log or enable error popups in the INI (HidePythonExceptions=0).
Charriu's CloseToHome mod includes a setting to deactivate score display. You could ask him who this is done. [...]
They do it through a DLL change. That DLL function is only a wrapper for a Python call; returning 0 from CvUtil.getScoreComponent should accomplish the same thing. However, if I'm not mistaken, such a change will not merely hide scores but keep scores at 0, and that will affect AI behavior, e.g. the hidden rank-based diplo modifiers (not hidden in BULL - due to the included Show Hidden Attitude mod). Well, if you play multiplayer without any AI civs, then it should be fine. I don't think any game rules hinge on scores and ranks. Though replays and Hall of Fame won't show scores then.
If I remove it from the BUG options in game, does that means all other guys in multiplayer will share same settings as server ?
No. BUG settings aren't synchronized, they only apply locally. Edit: UI changes in Python also won't be synchronized; you'd have to send the files you've modified to the other players beforehand.
 
Last edited:
I think that's the right approach. You could search that file for "playerscore". Maybe replacing all uses of player scores with 0 would already pretty much give you what you want. May also have to look at uses of playerscore and teamscore in BUG's Scoreboard.py. The Victory screen (CvVictoryScreen.py) also shows some team scores. If you're not used to editing Civ's Python scripts: Setting LoggingEnabled=1 in CivilizationIV.ini is pretty indispensable. Can then consult PythonErr.log or enable error popups in the INI (HidePythonExceptions=0).
They do it through a DLL change. That DLL function is only a wrapper for a Python call; returning 0 from CvUtil.getScoreComponent should accomplish the same thing. However, if I'm not mistaken, such a change will not merely hide scores but keep scores at 0, and that will affect AI behavior, e.g. the hidden rank-based diplo modifiers (not hidden in BULL - due to the included Show Hidden Attitude mod). Well, if you play multiplayer without any AI civs, then it should be fine. I don't think any game rules hinge on scores and ranks. Though replays and Hall of Fame won't show scores then.No. BUG settings aren't synchronized, they only apply locally. Edit: UI changes in Python also won't be synchronized; you'd have to send the files you've modified to the other players beforehand.


We actually play with AI, so 3 of us and 15+ AIs, and if i understood you correctly, if we change score for everyone to be for example 1, it will affect AI behavior ?
 
If yall play with BUG, everyone needs to have BUG installed. My understanding is with MP, players need like assets or you get syncing issues.

Score is a customizable item in the mod component I mentioned. Here's a copy/paste from the BUG Mod Help file:

Spoiler :

Instructions

The Advanced Scoreboard can be configured in the Scoreboard tab of the BUG Options Screen (Alt+Ctrl+O). Selecting the 'Advanced Layout: Enabled' checkbox, you can fully customize the Scoreboard.

The 'Column Order' text box allows you to choose which items to show in the Scoreboard and in which order, simply by typing the corresponding code in the box (the edit box has hover text detailing the available codes). The codes that you can use in this box, to display the corresponding items, are the following (note that the last three (*LO) are displayed only for your opponents in a multiplayer game, the first four (SZVC) and State Religion (R) are displayed even for your Civilization, while the others are displayed only for your opponents):



  • S displays the civ's score
  • Z displays the civ's score variation towards previous turn (if the 'Score Delta' checkbox is selected and according to what is selected in the 'Include Current Turn' checkbox)
  • V displays a silver star if the civ has at least one vassal
  • C displays the civ's/leader's name (according to what is selected in the 'Display Name' and 'Use Player Name' checkboxes, and aligned according to what is selected in the 'Left-Align' checkbox)
  • ? displays a question mark if you have not yet met the civ
  • W displays a crossed swords icon if you are at war with the civ, or a peace symbol icon if you have signed a Peace Treaty with the civ
  • P displays the civ's power ratio compared to you (according to the values which have been selected in the 'Power Ratio' option boxes)
  • T displays the tech the civ is researching, if it is known to you (as icon or name according to what is selected in the 'Research Icons' checkbox)
  • U displays the number of research turns left, if it is known to you (for vassals, for team-mates or by espionage)
  • E displays a spy icon if you have a positive espionage point ratio against the civ.
  • N displays a trade icon if the civ is connected to your trade network
  • B displays a parchment icon if you have an Open Borders agreement with the civ
  • D displays a parchment icon (different from the previous one) if you have a Defensive Pact with the civ
  • R displays the the civ's state religion
  • A displays an icon showing the civ's attitude toward you (if the 'Attitude Icons' checkbox is selected)
  • H displays an angry man icon if you are the Worst Enemy of the civ (if the 'Worst Enemy Icons' checkbox is selected)
  • M displays a red fist if the civ is mobilizing for war or in a war itself (a.k.a. We Have Enough on Our Hands)
  • * displays an asterisk when you are waiting for this civ to finish its turn
  • L displays civ's network stats (ping)
  • O the network player is 'out-of-sync'
  • number set the number of spacing pixels after the previous column (the default spacing value is ignored for columns with a specified spacing value; negative values are acceptable to bring two columns closer together)
  • space ignored, for making the sequence of codes more readable


I did not see anything regarding sorting of the scoreboard, but maybe this is something that is moddable. (I'm not a modder)

I had two trains of thought here. One is that you and your friends install BUG (or BUG+BULL), and make the change in the options to remove score from the scoreboard. (I assume you have consensus among your group for this change) The second thought is to make this change to the BUG mod itself. (Not sure if compiling is necessary) Then everyone installs the altered version of BUG.

I did a quick scan of the Scoreboard python file. There is sorting code in there. I'm not a python coder so I don't know how or if that can be altered to the desired effect. I'm attaching the file.

I zip version of BUG exists that contains all the files as opposed to the installer version. (exe)

If you need help with modding in general, I recommend asking questions over in the Creation and Customization Forum.
 

Attachments

  • Scoreboard.rar
    4.4 KB · Views: 32
They do it through a DLL change. That DLL function is only a wrapper for a Python call; returning 0 from CvUtil.getScoreComponent should accomplish the same thing. However, if I'm not mistaken, such a change will not merely hide scores but keep scores at 0, and that will affect AI behavior, e.g. the hidden rank-based diplo modifiers (not hidden in BULL - due to the included Show Hidden Attitude mod). Well, if you play multiplayer without any AI civs, then it should be fine. I don't think any game rules hinge on scores and ranks. Though replays and Hall of Fame won't show scores then.No. BUG settings aren't synchronized, they only apply locally. Edit: UI changes in Python also won't be synchronized; you'd have to send the files you've modified to the other players beforehand.

I'm currently playing a Pitboss with CTH and NoSore enabled. Opponents have modifiers like "Backwards nations should work together" or some such in the diplo screen. (Yes, this is MP. The mod includes BUG which leads to some oddities.) I suspect AI behavior would work properly with their way to disable score.
 
I'm currently playing a Pitboss with CTH and NoSore enabled. Opponents have modifiers like "Backwards nations should work together" or some such in the diplo screen. [...]
Well, if those modifiers don't just appear randomly (there will be some ranking even if everyone has the same score), then I stand corrected. A recent post by @Charriu at Realms Beyond also says that "Even under NoScore the game still knows the score, it only doesn't show it." However, looking at the latest code, it seems that CvGame::updateScore computes scores and ranks for teams and players through CvPlayer::calculateScore, which returns 0 for dead civs and 1 otherwise. And the ranks computed by CvGame are used for the low-rank attitude (CvPlayerAI::AI_getLowRankAttitude) that BULL displays as "developing nations ...". I may be missing something here. :undecide:
 
Thank you guys for detailed answers and help, I actually contacted Charriu and he explained me what needs to be done. Basically what he told me is that 2 things need to be updated, and this should work with basically every mode, for example for Realism Invictus i had to update this:

in CvMainInterface file:

Code:
sText1 += u"<color=%d,%d,%d,%d>%d</color>" %(pPlayer.getPlayerTextColorR(), pPlayer.getPlayerTextColorG(), pPlayer.getPlayerTextColorB(), pPlayer.getPlayerTextColorA(), CyGame().getPlayerScore(iPlayer))

into

sText1 += u"<color=%d,%d,%d,%d>%d</color>" %(pPlayer.getPlayerTextColorR(), pPlayer.getPlayerTextColorG(), pPlayer.getPlayerTextColorB(), pPlayer.getPlayerTextColorA(), 42)


And

iScore = gc.getGame().getPlayerScore(ePlayer)

into

iScore = 5 (or score which you want to be shown)



and in CvInfoScreen

Code:
if (scoreType == self.TOTAL_SCORE): return iScore
to
if (scoreType == self.TOTAL_SCORE): return 5

The thing is, this are changes only on UI, so it wont affect on AI's behavior, which is good thing of course :)


Again thank you guys for answers and special thanks to Charriu, he is very cool guy and he provided code changes immediately after I asked
 
Top Bottom