Difference between revisions of "Commshare"
DeinFreund (talk | contribs) (How to turn on commshare) |
m |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | |||
− | |||
== Overview == | == Overview == | ||
− | Commshare (or Command Share) | + | Commshare (or Command Share) allows players to share control of units. Players who engage in Commsharing are assigned to a squad, which functions as if all the members of the squad were one player. Each squad member contributes all income and [[units]] to the squad. |
− | Enable Commshare by holding | + | Enable Commshare by holding {{key press|Tab}} to open the player list, then pressing the <samp>[[File:Commshare.png|x16px|Commshare|link=]] Commshare</samp> icon to invite a player into your squad or to accept a player's invitation to a squad. |
− | = | + | == Modes == |
Commshare has three modes of operation: | Commshare has three modes of operation: | ||
+ | ;All mode | ||
+ | :All players are merged at game start (specifically, ≈166ms into the game). Nobody may unmerge or kick anyone at any time. | ||
+ | ;Invite mode (Default) | ||
+ | :To merge with another player, you must first both agree to it. The player who invites the other first becomes the "squad leader," who acts as the representative of the squad. Squad leaders can kick anyone for any reason at any time. The players will receive their units back upon getting kicked. You may also leave a squad at any time as well. Issuing an invite is simple: Press {{key press|Tab}}, then click on the half teal/half green Commander. | ||
+ | ;None | ||
+ | :No commsharing is allowed. No commshare commands will be responded to. | ||
− | + | == Privileges == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = Privileges = | ||
All members may accept, decline, or issue invites. Only the squad leader may kick anyone. | All members may accept, decline, or issue invites. Only the squad leader may kick anyone. | ||
− | = Developing = | + | == Developing == |
− | Commands to commshare should be issued using SendLuaRulesMsg with the following string: | + | Commands to commshare should be issued using <syntaxhighlight lang="lua" inline>SendLuaRulesMsg</syntaxhighlight> with the following string: |
− | + | <syntaxhighlight lang="lua">sharemode <command> <param></syntaxhighlight> | |
This is not case sensitive. The following are valid commands: | This is not case sensitive. The following are valid commands: | ||
− | {| | + | {|class="wikitable sortable" |
− | !Command | + | !Command!!Param!!class="unsortable"|Purpose |
|- | |- | ||
− | |Accept || playerID || Accepts an invite from playerID. | + | |Accept || <var>playerID</var> || Accepts an invite from <var>playerID</var>. |
|- | |- | ||
− | |Decline || playerID || Declines an invite from playerID. | + | |Decline || <var>playerID</var> || Declines an invite from <var>playerID</var>. |
|- | |- | ||
− | |Invite || playerID || Issues an invite to playerID. | + | |Invite || <var>playerID</var> || Issues an invite to <var>playerID</var>. |
|- | |- | ||
− | |Kick || playerID || Forces playerID to unmerge, requires teamleader. | + | |Kick || <var>playerID</var> || Forces <var>playerID</var> to unmerge, requires teamleader. |
|- | |- | ||
− | |Remerge || None || Causes you to remerge | + | |Remerge || None || Causes you to remerge if you were disconnected or kicked from game. |
|- | |- | ||
|Unmerge || None || Causes you to unmerge. | |Unmerge || None || Causes you to unmerge. | ||
|} | |} | ||
− | == | + | === Getting invites === |
− | Invites are stored in TeamRulesParam as private data. It is stored as if it | + | Invites are stored in <syntaxhighlight lang="lua" inline>TeamRulesParam</syntaxhighlight> as private data. It is stored as if it were an ordered table. |
− | {| | + | {|class="wikitable sortable" |
− | !Param | + | !Param!!class="unsortable"|Info!!class="unsortable"|Notes |
|- | |- | ||
− | |commshare_invitecount || # of invites || Get this first, then do a for i=1,commshare_invitecount loop. | + | |<syntaxhighlight lang="lua" inline>commshare_invitecount</syntaxhighlight> || # of invites || Get this first, then do a <syntaxhighlight lang="lua" inline>for i = 1, commshare_invitecount</syntaxhighlight> loop. |
|- | |- | ||
− | |"commshare_invite_" .. i .."_id" || ID of the player who sent the invite || | + | |<syntaxhighlight lang="lua" inline>"commshare_invite_" .. i .."_id"</syntaxhighlight> || ID of the player who sent the invite || |
|- | |- | ||
− | |"commshare_invite_" .. i .."_timeleft" || Time remaining on this invite || You must check if this is different than last second's count to see if it's dead. | + | |<syntaxhighlight lang="lua" inline>"commshare_invite_" .. i .."_timeleft"</syntaxhighlight> || Time remaining on this invite || You must check if this is different than last second's count to see if it's dead. |
|} | |} | ||
+ | |||
{{Navbox manual}} | {{Navbox manual}} |
Latest revision as of 22:33, 31 October 2022
Overview
Commshare (or Command Share) allows players to share control of units. Players who engage in Commsharing are assigned to a squad, which functions as if all the members of the squad were one player. Each squad member contributes all income and units to the squad.
Enable Commshare by holding Tab to open the player list, then pressing the Commshare icon to invite a player into your squad or to accept a player's invitation to a squad.
Modes
Commshare has three modes of operation:
- All mode
- All players are merged at game start (specifically, ≈166ms into the game). Nobody may unmerge or kick anyone at any time.
- Invite mode (Default)
- To merge with another player, you must first both agree to it. The player who invites the other first becomes the "squad leader," who acts as the representative of the squad. Squad leaders can kick anyone for any reason at any time. The players will receive their units back upon getting kicked. You may also leave a squad at any time as well. Issuing an invite is simple: Press Tab, then click on the half teal/half green Commander.
- None
- No commsharing is allowed. No commshare commands will be responded to.
Privileges
All members may accept, decline, or issue invites. Only the squad leader may kick anyone.
Developing
Commands to commshare should be issued using SendLuaRulesMsg
with the following string:
sharemode <command> <param>
This is not case sensitive. The following are valid commands:
Command | Param | Purpose |
---|---|---|
Accept | playerID | Accepts an invite from playerID. |
Decline | playerID | Declines an invite from playerID. |
Invite | playerID | Issues an invite to playerID. |
Kick | playerID | Forces playerID to unmerge, requires teamleader. |
Remerge | None | Causes you to remerge if you were disconnected or kicked from game. |
Unmerge | None | Causes you to unmerge. |
Getting invites
Invites are stored in TeamRulesParam
as private data. It is stored as if it were an ordered table.
Param | Info | Notes |
---|---|---|
commshare_invitecount |
# of invites | Get this first, then do a for i = 1, commshare_invitecount loop.
|
"commshare_invite_" .. i .."_id" |
ID of the player who sent the invite | |
"commshare_invite_" .. i .."_timeleft" |
Time remaining on this invite | You must check if this is different than last second's count to see if it's dead. |
Debug data:
[SQLBagOStuff] MainObjectStash using store ReplicatedBagOStuff
[objectcache] MainWANObjectCache using store EmptyBagOStuff
IP: 52.15.44.82
Start request GET /mediawiki/index.php?diff=cur&oldid=4591&title=Commshare
HTTP HEADERS:
CONTENT-TYPE:
CONTENT-LENGTH: 0
USER-AGENT: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
HOST: zero-k.info
ACCEPT-ENCODING: gzip, br, zstd, deflate
ACCEPT: */*[localisation] LocalisationCache: using store LCStoreDB
[session] SessionManager using store SqlBagOStuff
[DBReplication] Cannot use ChronologyProtector with EmptyBagOStuff
[DBReplication] Wikimedia\Rdbms\LBFactory::getChronologyProtector: request info {
"IPAddress": "52.15.44.82",
"UserAgent": "Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)",
"ChronologyProtection": false,
"ChronologyPositionIndex": 0,
"ChronologyClientId": false
}[DBConnection] Wikimedia\Rdbms\LoadBalancer::lazyLoadReplicationPositions: executed chronology callback.
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[session] SessionBackend "sk6bi14fcsq2m7fds25jmqsccvc2te8c" is unsaved, marking dirty in constructor
[session] SessionBackend "sk6bi14fcsq2m7fds25jmqsccvc2te8c" save: dataDirty=1 metaDirty=1 forcePersist=0
[cookie] already deleted setcookie: "wikidb229_mw__session", "", "1713327355", "/", "", "", "1"
[cookie] already deleted setcookie: "wikidb229_mw_UserID", "", "1713327355", "/", "", "", "1"
[cookie] already deleted setcookie: "wikidb229_mw_Token", "", "1713327355", "/", "", "", "1"
[cookie] already deleted setcookie: "forceHTTPS", "", "1713327355", "/", "", "", "1"
[DBConnection] Wikimedia\Rdbms\LoadBalancer::getLocalConnection: connected to database 0 at 'localhost'.
Title::getRestrictionTypes: applicable restrictions to [[Commshare]] are {edit,move}
[ContentHandler] Created handler for wikitext: WikitextContentHandler
Article::view: showing diff page
DifferenceEngine old '4591' new 'cur' rcid ''
[MessageCache] MessageCache using store SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] SqlBagOStuff::lock failed due to timeout for wikidb229-mw_:messages:en.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[MessageCache] MessageCache::load: Loading en... local cache is empty, global cache is expired/volatile, loading from database
ParserFactory: using preprocessor: Preprocessor_Hash
Unstubbing $wgLang on call of $wgLang::_unstub from ParserOptions->__construct
DifferenceEngine old '0' new '0' rcid '0'
[GlobalTitleFail] MessageCache::parse called by DifferenceEngine->getMultiNotice/DifferenceEngine::intermediateEditsMsg/Message->parse/Message->toString/Message->parseText/MessageCache->parse with no title set.
WikiPage::getParserOutput: using parser cache: yes
[caches] parser: SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
Parser cache options found.
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
[SQLBagOStuff] Connection mysql object #127 (handle id #121) will be used for SqlBagOStuff
ParserOutput cache found.
MediaWiki::preOutputCommit: primary transaction round committed
MediaWiki::preOutputCommit: pre-send deferred updates completed
MediaWiki::preOutputCommit: session changes committed
MediaWiki::preOutputCommit: LBFactory shutdown completed
Title::getRestrictionTypes: applicable restrictions to [[Commshare]] are {edit,move}