This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| 4rpl:commands:setunitwantsern [2024/05/23 11:59] – created Karsten75 | 4rpl:commands:setunitwantsern [2025/03/24 04:21] (current) – Mentioned undock issue in description and added function quick copy. Vertu | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| </ | </ | ||
| :!: Available in version 2.5 and later. | :!: Available in version 2.5 and later. | ||
| - | ====== | + | ====== |
| SetUnitWantsERN(< | SetUnitWantsERN(< | ||
| ===== Description ===== | ===== Description ===== | ||
| Sets whether the unit with the specified UID desires an ERN. Pass `true` to make the unit desire ERN, or `false` to indicate it does not. | Sets whether the unit with the specified UID desires an ERN. Pass `true` to make the unit desire ERN, or `false` to indicate it does not. | ||
| + | |||
| + | Beware that when an ERN is docked to a unit, you can't use this API to have that unit release the ERN by having it no longer want one. See the workaround code if this is a concern. | ||
| Line 17: | Line 19: | ||
| <code 4rpl> | <code 4rpl> | ||
| # need worked example | # need worked example | ||
| + | </ | ||
| + | |||
| + | ===== Workaround for SetUnitWantsErn(< | ||
| + | |||
| + | <code 4rpl> | ||
| + | # A unit that has an ERN slotted and receives the 4rpl command to "not want an ERN", | ||
| + | # will not actually unequip the ERN. As a workaround, it is possible to destroy the unit | ||
| + | # and recreate it without the ERN. That's what this function is for. | ||
| + | |||
| + | <-uid GetUnitWantsErn not <-uid GetUnitErnState AND if | ||
| + | <-uid @freeErnFromUnit | ||
| + | endif | ||
| + | |||
| + | : | ||
| + | ->UID | ||
| + | <-UID getunitconstructingdata ev2 pop dup -1 eq if pop 999 endif -> | ||
| + | <-UID getunittype <-UID getunitposition <-UID getunitsettings createunit dup ->newUID < | ||
| + | # Resources that are on the way to the old unit will be lost. | ||
| + | | ||
| + | # Enable/ | ||
| + | <-newUID <-UID | ||
| + | # dup2 getunitmaxammo setunitmaxammo | ||
| + | dup2 getunitammo setunitammo | ||
| + | dup2 getunitcandestroy setunitcandestroy | ||
| + | dup2 getunitselectable setunitselectable | ||
| + | dup2 getunitenabled setunitenabled | ||
| + | dup2 getunitarmed setunitarmed | ||
| + | dup2 getunitsupplied setunitsupplied | ||
| + | # dup2 getunithealrate setunithealrate | ||
| + | # dup2 getunitmaxhealth setunitmaxhealth | ||
| + | dup2 getunithealth setunithealth | ||
| + | # dup2 getunitrange setunitrange | ||
| + | dup2 getunitstuncount setunitstuncount | ||
| + | dup2 getunitmovecell dup -1 neq if setunitmovecell else pop pop pop pop endif | ||
| + | pop pop | ||
| + | | ||
| + | <-UID 1 1 1 destroyunit | ||
| + | |||
| + | </ | ||
| + | Just the function (for quick copy and paste): | ||
| + | <code 4rpl> | ||
| + | : | ||
| + | ->UID | ||
| + | <-UID getunitconstructingdata ev2 pop dup -1 eq if pop 999 endif -> | ||
| + | <-UID getunittype <-UID getunitposition <-UID getunitsettings createunit dup ->newUID < | ||
| + | # Resources that are on the way to the old unit will be lost. | ||
| + | | ||
| + | # Enable/ | ||
| + | <-newUID <-UID | ||
| + | # dup2 getunitmaxammo setunitmaxammo | ||
| + | dup2 getunitammo setunitammo | ||
| + | dup2 getunitcandestroy setunitcandestroy | ||
| + | dup2 getunitselectable setunitselectable | ||
| + | dup2 getunitenabled setunitenabled | ||
| + | dup2 getunitarmed setunitarmed | ||
| + | dup2 getunitsupplied setunitsupplied | ||
| + | # dup2 getunithealrate setunithealrate | ||
| + | # dup2 getunitmaxhealth setunitmaxhealth | ||
| + | dup2 getunithealth setunithealth | ||
| + | # dup2 getunitrange setunitrange | ||
| + | dup2 getunitstuncount setunitstuncount | ||
| + | dup2 getunitmovecell dup -1 neq if setunitmovecell else pop pop pop pop endif | ||
| + | pop pop | ||
| + | | ||
| + | <-UID 1 1 1 destroyunit | ||
| + | |||
| </ | </ | ||
| < | < | ||