04 Jan, 2013, dracmas wrote in the 1st comment:
Votes: 0
I'm triggering an update on the client side from prompt to get actp.msdp variables updated.
Could someone wade through my plugin and tell me how to fix it? With the way it is im
always lagging a prompt behind, so if im steadily moving in directions in mud the rooms im
seeing is for the previous room I just left and not the one Im in now.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MudletPackage>
<MudletPackage version="1.0">
<TriggerPackage>
<TriggerGroup isActive="yes" isFolder="yes" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>msdp</name>
<script></script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName>gw2(1)</packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList/>
<regexCodePropertyList/>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="yes" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>prompt</name>
<script>raiseEvent(&quot;onPrompt&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>1</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>^\&lt;\&lt;$</string>
</regexCodeList>
<regexCodePropertyList>
<integer>1</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>msdp_vars and prompt</name>
<script>raiseEvent(&quot;msdpsetup&quot;)
</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>^\[INFO\] MXP version 1\.0 detected and enabled\.$</string>
</regexCodeList>
<regexCodePropertyList>
<integer>1</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>change prompt for msdp</name>
<script>send(&quot;prompt &lt;&lt;&quot;)
</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>^\&lt;(.*?)hp (.*?)ma (.*?)mv\&gt;$</string>
</regexCodeList>
<regexCodePropertyList>
<integer>1</integer>
</regexCodePropertyList>
</Trigger>
</TriggerGroup>
<TriggerGroup isActive="yes" isFolder="yes" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>Group-fighting</name>
<script></script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList/>
<regexCodePropertyList/>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>man1</name>
<script>send(&quot;man back&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>You stumble as you try to move to the rear of the group.</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>man3</name>
<script>send(&quot;man back&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>Your front line collapses! Your group is thrown into chaos!</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>group all up</name>
<script>send(&quot;wake&quot;)
send(&quot;stand&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>all up</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>man2</name>
<script>send(&quot;sing&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>You can't fall back, you're being attacked</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>man4</name>
<script>send(&quot;sind&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>and attacks YOU!</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
<Trigger isActive="yes" isFolder="no" isTempTrigger="no" isMultiline="no" isPerlSlashGOption="no" isColorizerTrigger="no" isFilterTrigger="no" isSoundTrigger="no" isColorTrigger="no" isColorTriggerFg="no" isColorTriggerBg="no">
<name>man6</name>
<script>send(&quot;wake&quot;)
send(&quot;stand&quot;)</script>
<triggerType>0</triggerType>
<conditonLineDelta>0</conditonLineDelta>
<mStayOpen>0</mStayOpen>
<mCommand></mCommand>
<packageName></packageName>
<mFgColor>#ff0000</mFgColor>
<mBgColor>#ffff00</mBgColor>
<mSoundFile></mSoundFile>
<colorTriggerFgColor>#000000</colorTriggerFgColor>
<colorTriggerBgColor>#000000</colorTriggerBgColor>
<regexCodeList>
<string>as you pass out!</string>
</regexCodeList>
<regexCodePropertyList>
<integer>0</integer>
</regexCodePropertyList>
</Trigger>
</TriggerGroup>
</TriggerPackage>
<ScriptPackage>
<ScriptGroup isActive="yes" isFolder="yes">
<name>msdp</name>
<packageName>gw2(1)</packageName>
<script></script>
<eventHandlerList/>
<Script isActive="yes" isFolder="no">
<name>setup</name>
<packageName></packageName>
<script>
function setup()
for i = 1, 2 do tempTimer(i, [[send &quot;\n&quot;]]) end
tempTimer(1, function () sendATCP(&quot;@REPORT&quot;, &quot;SERVER_ID WORLD_TIME CHARACTER_NAME HEALTH HEALTH_MAX MANA MANA_MAX MOVEMENT MOVEMENT_MAX AREA_NAME ROOM_NAME ROOM_VNUM AC HONOR CONTINENT LEVEL CLASS DRACHMA ALIGNMENT EXPERIENCE MONEY STR CON DEX WIS INT STR_PERM CON_PERM DEX_PERM WIS_PERM WEAPON_DAM SPELL_BONUS_CAP HEAL_BONUS HEAL_BONUS_CAP CHARISMA CHARISMA_CAP FLAIL_DAM KICK_DAM HAND_DAM HAND_DAM_CAP DAM_RED DAM_RED_CAP SEX GROUP_LEADER TANK_HEALTH TANK_HEALTH_MAX TANK_LEVEL TANK_NAME LEVEL_SEC LEVEL_TER LEVEL_QUA LEVEL_QUI LEVEL_HEX LEVEL_SEP LEVEL_OCT LEVEL_AVA CITIZEN CLASS_SEC CLASS_TER CLASS_QUA CLASS_QUI CLASS_HEX CLASS_SEP CLASS_OCT CLASS_AVA STAB_DAM STAB_DAM_CAP UNDEAD_CONT UNDEAD_CONT_CAP SPELL_BONUS INT_PERM HITROLL DAMROLL OPPONENT_HEALTH OPPONENT_HEALTH_MAX OPPONENT_LEVEL OPPONENT_NAME TERRAIN AFFECTS ROOM_EXITS&quot;) end)
tempTimer(2, function () cecho(&quot;&lt;green&gt;&lt;MSDP ACTIVATED&gt;&lt;reset&gt;&quot;) end)
end

</script>
<eventHandlerList>
<string>msdpsetup</string>
</eventHandlerList>
</Script>
<Script isActive="yes" isFolder="no">
<name>prompt</name>
<packageName></packageName>
<script>function prompt()
cecho(atcp.MSDPHEALTH..&quot;/&quot;..atcp.MSDPHEALTH_MAX..&quot;&lt;red&gt;hp&lt;reset&gt; &quot;..atcp.MSDPMANA..&quot;/&quot;..atcp.MSDPMANA_MAX..&quot;&lt;blue&gt;ma&lt;reset&gt; &quot;..atcp.MSDPMOVEMENT..&quot;/&quot;..atcp.MSDPMOVEMENT_MAX..&quot;&lt;green&gt;mv&lt;reset&gt; [&lt;white&gt;&quot;..atcp.MSDPAREA_NAME..&quot;&lt;reset&gt;:&lt;navy&gt;&quot;..atcp.MSDPROOM_NAME..&quot;&lt;reset&gt;] &gt;&gt;&quot;)
end
</script>
<eventHandlerList>
<string>onPrompt</string>
</eventHandlerList>
</Script>
<Script isActive="yes" isFolder="no">
<name>layout</name>
<packageName></packageName>
<script>function layout()

setBorderTop(100)
top_container = Geyser.Container:new({
name = &quot;top_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width =&quot;100%&quot;, height= 100, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderBottom(100)
bottom_container = Geyser.Container:new({
name = &quot;bottom_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = &quot;100%&quot;, height= 100, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderLeft(300)
left_container = Geyser.Container:new({
name = &quot;left_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = 200, height=&quot;100%&quot;, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderRight(300)
right_container = Geyser.Container:new({
name = &quot;right_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = 200, height=&quot;100%&quot;, – with a width of 200, and a height of the full screen, hence 100%
})



Top_Border = Geyser.Label:new({
name = &quot;Top_Border&quot;,
x = &quot;20%&quot;, y = &quot;0%&quot;,
width = &quot;60%&quot;, height = &quot;15%&quot;,
message = [[&lt;center&gt;&lt;font size=40&gt;SLOTHMUD - A RETURN TO ITS ORIGINS&lt;/font&gt;&lt;/center&gt;]]
})
Top_Border:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])

Locations = Geyser.Label:new({
name = &quot;Locations&quot;,
x = &quot;0%&quot;, y = &quot;0%&quot;,
width = &quot;20%&quot;, height = &quot;25%&quot;
})
Locations:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Locations:echo(&quot;LOCATION INFORMATION:&lt;br&gt;&lt;hr&gt;&lt;br&gt;Continent: &quot;..atcp.MSDPCONTINENT..&quot;&lt;br&gt;Area: &quot;..atcp.MSDPAREA_NAME..&quot;&lt;br&gt;Room: &quot;..atcp.MSDPROOM_NAME..&quot;&lt;br&gt;Exits: &quot;..atcp.MSDPROOM_EXITS..&quot;&lt;br&gt;Terraion: &quot;..atcp.MSDPTERRAIN..&quot;&lt;br&gt;Room ID: &quot;..atcp.MSDPROOM_VNUM)

Grouping = Geyser.Label:new({
name = &quot;Grouping&quot;,
x = &quot;0%&quot;, y = &quot;25%&quot;,
width = &quot;135%&quot;, height = &quot;35%&quot;
}, left_container)
Grouping:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Grouping:echo(&quot;GROUP FIGHTING:&lt;br&gt;&lt;hr&gt;&lt;br&gt;Group Leader: &quot;..atcp.MSDPGROUP_LEADER..&quot;&lt;br&gt;Tank Name: &quot;..atcp.MSDPTANK_NAME..&quot;&lt;br&gt;Tank Health: &quot;..atcp.MSDPTANK_HEALTH..&quot;/&quot;..atcp.MSDPTANK_HEALTH_MAX..&quot;&lt;br&gt;Tank Level: &quot;..atcp.MSDPTANK_LEVEL..&quot;&lt;br&gt;&lt;br&gt;Enemy: &quot;..atcp.MSDPOPPONENT_NAME..&quot;&lt;br&gt;Level: &quot;..atcp.MSDPOPPONENT_LEVEL..&quot;&lt;br&gt;Health: &quot;..atcp.MSDPOPPONENT_HEALTH..&quot;/&quot;..atcp.MSDPOPPONENT_HEALTH_MAX)
–echo(&quot;Grouping&quot;, &quot;[[&lt;p style=&quot;font-family: monospace; font-size:small;&quot;&gt;]][[GROUP FIGHTING: &lt;br&gt;==============&lt;br&gt;Group Leader: ]]..atcp.MSDPGROUP_LEADER..[[&lt;br&gt;Tank Name: ]]..atcp.MSDPTANK_NAME..[[&lt;br&gt;Tank Health: ]]..atcp.MSDPTANK_HEALTH..[[/]]..atcp.MSDPTANK_HEALTH_MAX..[[&lt;br&gt;Tank Level: ]]..atcp.MSDPTANK_LEVEL..[[&lt;br&gt;&lt;br&gt;Enemy: ]]..atcp.MSDPOPPONENT_NAME..[[&lt;br&gt;Level: ]]..atcp.MSDPOPPONENT_LEVEL..[[&lt;br&gt;Health: ]]..atcp.MSDPOPPONENT_HEALTH..[[/]]..atcp.MSDPOPPONENT_HEALTH_MAX[[&lt;/p&gt;]])

Statistics = Geyser.Label:new({
name = &quot;Statistics&quot;,
x = &quot;550%&quot;, y = &quot;0%&quot;,
width = &quot;130%&quot;, height = &quot;100%&quot;
}, right_container)
Statistics:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Statistics:echo(&quot;STATS INFORMATION:&lt;hr&gt;Name: &quot;..atcp.MSDPCHARACTER_NAME..&quot;&lt;br&gt;Citizen of &quot;..atcp.MSDPCITIZEN..&quot;&lt;br&gt; Your alignment is: &quot;..atcp.MSDPALIGNMENT..&quot;&lt;br&gt;Sex: &quot;..atcp.MSDPSEX..&quot;&lt;hr&gt;Money: &quot;..atcp.MSDPMONEY..&quot;&lt;br&gt;Drachma: &quot;..atcp.MSDPDRACHMA..&quot;&lt;hr&gt;Levels:&lt;br&gt;&quot;..atcp.MSDPCLASS..&quot; &quot;..atcp.MSDPLEVEL..&quot; &quot;..atcp.MSDPCLASS_SEC..&quot; &quot;..atcp.MSDPLEVEL_SEC..&quot; &quot;..atcp.MSDPCLASS_TER..&quot; &quot;..atcp.MSDPLEVEL_TER..&quot; &quot;..atcp.MSDPCLASS_QUA..&quot; &quot;..atcp.MSDPLEVEL_QUA..&quot;&lt;br&gt;&quot;..atcp.MSDPCLASS_QUI..&quot; &quot;..atcp.MSDPLEVEL_QUI..&quot; &quot;..atcp.MSDPCLASS_HEX..&quot; &quot;..atcp.MSDPLEVEL_HEX..&quot; &quot;..atcp.MSDPCLASS_SEP..&quot; &quot;..atcp.MSDPLEVEL_SEP..&quot; &quot;..atcp.MSDPCLASS_OCT..&quot; &quot;..atcp.MSDPLEVEL_OCT..&quot;&lt;br&gt;Avatar: &quot;..atcp.MSDPCLASS_AVA..&quot; &quot;..atcp.MSDPLEVEL_AVA..&quot;&lt;hr&gt; Experience: &quot;..atcp.MSDPEXPERIENCE..&quot;&lt;hr&gt;Health: &quot;..atcp.MSDPHEALTH..&quot; / &quot;..atcp.MSDPHEALTH_MAX..&quot;&lt;hr&gt; Mana: &quot;..atcp.MSDPMANA..&quot; / &quot;..atcp.MSDPMANA_MAX..&quot;&lt;hr&gt; Moves: &quot;..atcp.MSDPMOVEMENT..&quot; / &quot;..atcp.MSDPMOVEMENT_MAX..&quot;&lt;hr&gt; AC: &quot;..atcp.MSDPAC..&quot;&lt;hr&gt; HONOR: &quot;..atcp.MSDPHONOR..&quot;&lt;hr&gt; STR:&quot;..atcp.MSDPSTR..&quot;/&quot;..atcp.MSDPSTR_PERM..&quot; CON:&quot;..atcp.MSDPCON..&quot;/&quot;..atcp.MSDPCON_PERM..&quot;&lt;br&gt; DEX:&quot;..atcp.MSDPDEX..&quot;/&quot;..atcp.MSDPDEX_PERM..&quot; WIS:&quot;..atcp.MSDPWIS..&quot;/&quot;..atcp.MSDPWIS_PERM..&quot;&lt;br&gt;INT:&quot;..atcp.MSDPINT..&quot;/&quot;..atcp.MSDPINT_PERM..&quot; CHAR:&quot;..atcp.MSDPCHARISMA..&quot;/&quot;..atcp.MSDPCHARISMA_CAP..&quot;&lt;hr&gt;Spells and Damage:&lt;br&gt;Weapon Damage: &quot;..atcp.MSDPWEAPON_DAM..&quot;&lt;br&gt;Stab Damage: &quot;..atcp.MSDPSTAB_DAM..&quot;/&quot;..atcp.MSDPSTAB_DAM_CAP..&quot;&lt;br&gt;Hand Damage: &quot;..atcp.MSDPHAND_DAM..&quot;/&quot;..atcp.MSDPHAND_DAM_CAP..&quot;&lt;br&gt; Undead Cont: &quot;..atcp.MSDPUNDEAD_CONT..&quot;/&quot;..atcp.MSDPUNDEAD_CONT_CAP..&quot;&lt;br&gt;Spell Bonus: &quot;..atcp.MSDPSPELL_BONUS..&quot;/&quot;..atcp.MSDPSPELL_BONUS_CAP..&quot;&lt;br&gt;Heal Bonus: &quot;..atcp.MSDPHEAL_BONUS..&quot;/&quot;..atcp.MSDPHEAL_BONUS_CAP..&quot;&lt;hr&gt;Hitroll: &quot;..atcp.MSDPHITROLL..&quot;&lt;hr&gt;Damroll: &quot;..atcp.MSDPDAMROLL..&quot;&lt;hr&gt;Damage Red: &quot;..atcp.MSDPDAM_RED..&quot;/&quot;..atcp.MSDPDAM_RED_CAP)


end</script>
<eventHandlerList>
<string>onPrompt</string>
</eventHandlerList>
</Script>
</ScriptGroup>
</ScriptPackage>
</MudletPackage>
04 Jan, 2013, dracmas wrote in the 2nd comment:
Votes: 0
Nevermind. IMMS on Slothmud figured out what I did wrong. I needed to set a timer to grab the variables instead of using the prompt.
04 Jan, 2013, dracmas wrote in the 3rd comment:
Votes: 0
On second thought, I need any advise on how to make themes better for mudlet. Honest criticism. I know I'm new at this, but anything would help.
This plugin is seriously flawed. I should never have tried to do a custom prompt which is just an echo extended off of "<<" as a prompt. Most won't like being forced to do so.
I'm going to run a timer to update the plugin, really going to have to get a closer look at how Kavir updates atcp.MSDP in his script. Otherwise any tips are appreciated.

Eventually I'd like to do the mapper plugin, but even I know thats a bit over my head. We have the variables to do so, I just can't understand how to go about doing it.
Kinda like having to have someone explain on IRC a few times before I got as far as I did on this.

So mainly I'm doing a re-write of this script and want do it better than I did this time :)
04 Jan, 2013, KaVir wrote in the 4th comment:
Votes: 0
You don't need a timer, you just define an event for each variable - whenever that variable changes, the mud automatically sends the new value to Mudlet, and that triggers the appropriate script.

For example, here is my HEALTH script which gets called whenever MSDPHEALTH or MSDPHEALTH_MAX changes:

————————————————-
– Put your Lua functions here. –
– –
– Note that you can also use external Scripts –
————————————————-

function HEALTH(event, args)

current = 0
max = 295

if atcp.MSDPHEALTH ~= nil and atcp.MSDPHEALTH_MAX ~= nil then
– create the text to display on the gauge
text = "Health: "..atcp.MSDPHEALTH.."/"..atcp.MSDPHEALTH_MAX
outline_text ("healthLabel", text, "yellow", 3, false, 92, 632-bottom_offset, 250, 11)

– make sure the gauge doesn't go off either end
current = tonumber(atcp.MSDPHEALTH) * max / tonumber(atcp.MSDPHEALTH_MAX)
if current < 0 then
current = 0
elseif current > max then
current = max
end – if
end – if

setGauge("healthBar", current, max)

setGaugeStyleSheet("healthBar", [[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #220202, stop: 0.1 #440505, stop: 0.2 #660808, stop: 0.3 #880b0b, stop: 0.4 #aa0e0e, stop: 0.5 #cc1111, stop: 0.6 #aa0e0e, stop: 0.7 #880b0b, stop: 0.8 #660808, stop: 0.9 #440505, stop: 1 #220202);
border-top: 0px black solid;
border-left: 1px black solid;
border-bottom: 0px black solid;
border-radius: 7;
padding: 3px;]],
[[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #080000, stop: 0.1 #110000, stop: 0.2 #190000, stop: 0.3 #220000, stop: 0.4 #2a0000, stop: 0.5 #330000, stop: 0.6 #2a0000, stop: 0.7 #220000, stop: 0.8 #190000, stop: 0.9 #110000, stop: 1 #080000);
border-width: 0px;
border-color: black;
border-style: solid;
border-radius: 7;
padding: 3px;]])

end – HEALTH

You just create a bunch of little scripts like that, it's pretty straightforward once you get started.
05 Jan, 2013, dracmas wrote in the 5th comment:
Votes: 0
I did this like in your plugin
function SERVER_ID(event, args)

initialise_msdp()

end – SERVER_ID
added handler for MSDPSERVER_ID

Which is sent here
function initialise_msdp()

– Set the PLUGIN_ID so the mud knows which version you're using.
sendATCP("@PLUGIN_ID", "GW2_Mudlet_Plugin_(version_1.0)")

– Tell the mud which MSDP variables to report.
sendATCP("@REPORT", "WORLD_TIME CHARACTER_NAME HEALTH HEALTH_MAX MANA MANA_MAX MOVEMENT MOVEMENT_MAX AREA_NAME ROOM_NAME ROOM_VNUM AC HONOR CONTINENT LEVEL CLASS DRACHMA ALIGNMENT EXPERIENCE MONEY STR CON DEX WIS INT STR_PERM CON_PERM DEX_PERM WIS_PERM WEAPON_DAM SPELL_BONUS_CAP HEAL_BONUS HEAL_BONUS_CAP CHARISMA CHARISMA_CAP FLAIL_DAM KICK_DAM HAND_DAM HAND_DAM_CAP DAM_RED DAM_RED_CAP SEX GROUP_LEADER TANK_HEALTH TANK_HEALTH_MAX TANK_LEVEL TANK_NAME LEVEL_SEC LEVEL_TER LEVEL_QUA LEVEL_QUI LEVEL_HEX LEVEL_SEP LEVEL_OCT LEVEL_AVA CITIZEN CLASS_SEC CLASS_TER CLASS_QUA CLASS_QUI CLASS_HEX CLASS_SEP CLASS_OCT CLASS_AVA STAB_DAM STAB_DAM_CAP UNDEAD_CONT UNDEAD_CONT_CAP SPELL_BONUS INT_PERM HITROLL DAMROLL OPPONENT_HEALTH OPPONENT_HEALTH_MAX OPPONENT_LEVEL OPPONENT_NAME TERRAIN AFFECTS ROOM_EXITS")

end – initialise_msdp
No handler

Then I just have my outline scripts which displays everything.

How did you get it to stop repeatedly sending atcp requests once you have the variables you wanted?
05 Jan, 2013, dracmas wrote in the 6th comment:
Votes: 0
Here's what I ended up using. Im going to break down the gui eventually, so I can update things on their own separately, but for now I just wanted to make sure the display works.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE MudletPackage>
<MudletPackage version="1.0">
<ScriptPackage>
<ScriptGroup isActive="yes" isFolder="yes">
<name>testing</name>
<packageName>testing</packageName>
<script></script>
<eventHandlerList/>
<Script isActive="yes" isFolder="no">
<name>SERVER_ID</name>
<packageName></packageName>
<script>function SERVER_ID(event, args)
initialise_msdp()
end – SERVER_ID
</script>
<eventHandlerList>
<string>MSDPSERVER_ID</string>
</eventHandlerList>
</Script>
<Script isActive="yes" isFolder="no">
<name>initialise_msdp</name>
<packageName></packageName>
<script> function initialise_msdp()
– Set the PLUGIN_ID so the mud knows which version you're using.
sendATCP(&quot;@PLUGIN_ID&quot;, &quot;GW2_Mudlet_Plugin_(version_1.0)&quot;)
– Tell the mud which MSDP variables to report.
sendATCP(&quot;@REPORT&quot;, &quot;WORLD_TIME CHARACTER_NAME HEALTH HEALTH_MAX MANA MANA_MAX MOVEMENT MOVEMENT_MAX AREA_NAME ROOM_NAME ROOM_VNUM AC HONOR CONTINENT LEVEL CLASS DRACHMA ALIGNMENT EXPERIENCE MONEY STR CON DEX WIS INT STR_PERM CON_PERM DEX_PERM WIS_PERM WEAPON_DAM SPELL_BONUS_CAP HEAL_BONUS HEAL_BONUS_CAP CHARISMA CHARISMA_CAP FLAIL_DAM KICK_DAM HAND_DAM HAND_DAM_CAP DAM_RED DAM_RED_CAP SEX GROUP_LEADER TANK_HEALTH TANK_HEALTH_MAX TANK_LEVEL TANK_NAME LEVEL_SEC LEVEL_TER LEVEL_QUA LEVEL_QUI LEVEL_HEX LEVEL_SEP LEVEL_OCT LEVEL_AVA CITIZEN CLASS_SEC CLASS_TER CLASS_QUA CLASS_QUI CLASS_HEX CLASS_SEP CLASS_OCT CLASS_AVA STAB_DAM STAB_DAM_CAP UNDEAD_CONT UNDEAD_CONT_CAP SPELL_BONUS INT_PERM HITROLL DAMROLL OPPONENT_HEALTH OPPONENT_HEALTH_MAX OPPONENT_LEVEL OPPONENT_NAME TERRAIN AFFECTS ROOM_EXITS&quot;)
end – initialise_msdp
</script>
<eventHandlerList/>
</Script>
<Script isActive="yes" isFolder="no">
<name>layout</name>
<packageName></packageName>
<script>function layout()

setBorderTop(100)
top_container = Geyser.Container:new({
name = &quot;top_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width =&quot;100%&quot;, height= 100, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderBottom(100)
bottom_container = Geyser.Container:new({
name = &quot;bottom_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = &quot;100%&quot;, height= 100, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderLeft(300)
left_container = Geyser.Container:new({
name = &quot;left_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = 200, height=&quot;100%&quot;, – with a width of 200, and a height of the full screen, hence 100%
})

setBorderRight(300)
right_container = Geyser.Container:new({
name = &quot;right_container&quot;, – give it a unique name here
x=0, y=0, – have it start at the top-left corner of mudlet
width = 200, height=&quot;100%&quot;, – with a width of 200, and a height of the full screen, hence 100%
})



Top_Border = Geyser.Label:new({
name = &quot;Top_Border&quot;,
x = &quot;20%&quot;, y = &quot;0%&quot;,
width = &quot;60%&quot;, height = &quot;15%&quot;,
message = [[&lt;center&gt;&lt;font size=40&gt;SLOTHMUD - A RETURN TO ITS ORIGINS&lt;/font&gt;&lt;/center&gt;]]
})
Top_Border:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])

Locations = Geyser.Label:new({
name = &quot;Locations&quot;,
x = &quot;0%&quot;, y = &quot;0%&quot;,
width = &quot;20%&quot;, height = &quot;25%&quot;
})
Locations:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Locations:echo(&quot;LOCATION INFORMATION:&lt;br&gt;&lt;hr&gt;&lt;br&gt;Continent: &quot;..atcp.MSDPCONTINENT..&quot;&lt;br&gt;Area: &quot;..atcp.MSDPAREA_NAME..&quot;&lt;br&gt;Room: &quot;..atcp.MSDPROOM_NAME..&quot;&lt;br&gt;Exits: &quot;..atcp.MSDPROOM_EXITS..&quot;&lt;br&gt;Terraion: &quot;..atcp.MSDPTERRAIN..&quot;&lt;br&gt;Room ID: &quot;..atcp.MSDPROOM_VNUM)

Grouping = Geyser.Label:new({
name = &quot;Grouping&quot;,
x = &quot;0%&quot;, y = &quot;25%&quot;,
width = &quot;135%&quot;, height = &quot;35%&quot;
}, left_container)
Grouping:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Grouping:echo(&quot;GROUP FIGHTING:&lt;br&gt;&lt;hr&gt;&lt;br&gt;Group Leader: &quot;..atcp.MSDPGROUP_LEADER..&quot;&lt;br&gt;Tank Name: &quot;..atcp.MSDPTANK_NAME..&quot;&lt;br&gt;Tank Health: &quot;..atcp.MSDPTANK_HEALTH..&quot;/&quot;..atcp.MSDPTANK_HEALTH_MAX..&quot;&lt;br&gt;Tank Level: &quot;..atcp.MSDPTANK_LEVEL..&quot;&lt;br&gt;&lt;br&gt;Enemy: &quot;..atcp.MSDPOPPONENT_NAME..&quot;&lt;br&gt;Level: &quot;..atcp.MSDPOPPONENT_LEVEL..&quot;&lt;br&gt;Health: &quot;..atcp.MSDPOPPONENT_HEALTH..&quot;/&quot;..atcp.MSDPOPPONENT_HEALTH_MAX)
–echo(&quot;Grouping&quot;, &quot;[[&lt;p style=&quot;font-family: monospace; font-size:small;&quot;&gt;]][[GROUP FIGHTING: &lt;br&gt;==============&lt;br&gt;Group Leader: ]]..atcp.MSDPGROUP_LEADER..[[&lt;br&gt;Tank Name: ]]..atcp.MSDPTANK_NAME..[[&lt;br&gt;Tank Health: ]]..atcp.MSDPTANK_HEALTH..[[/]]..atcp.MSDPTANK_HEALTH_MAX..[[&lt;br&gt;Tank Level: ]]..atcp.MSDPTANK_LEVEL..[[&lt;br&gt;&lt;br&gt;Enemy: ]]..atcp.MSDPOPPONENT_NAME..[[&lt;br&gt;Level: ]]..atcp.MSDPOPPONENT_LEVEL..[[&lt;br&gt;Health: ]]..atcp.MSDPOPPONENT_HEALTH..[[/]]..atcp.MSDPOPPONENT_HEALTH_MAX[[&lt;/p&gt;]])

Statistics = Geyser.Label:new({
name = &quot;Statistics&quot;,
x = &quot;550%&quot;, y = &quot;0%&quot;,
width = &quot;130%&quot;, height = &quot;100%&quot;
}, right_container)
Statistics:setStyleSheet([[
background-color: black;
border-width: 2px;
border-style: solid;
border-color: grey;
border-radius: 10px;
font: bold large &quot;Monospace&quot;;
]])
Statistics:echo(&quot;STATS INFORMATION:&lt;hr&gt;Name: &quot;..atcp.MSDPCHARACTER_NAME..&quot;&lt;br&gt;Citizen of &quot;..atcp.MSDPCITIZEN..&quot;&lt;br&gt; Your alignment is: &quot;..atcp.MSDPALIGNMENT..&quot;&lt;br&gt;Sex: &quot;..atcp.MSDPSEX..&quot;&lt;hr&gt;Money: &quot;..atcp.MSDPMONEY..&quot;&lt;br&gt;Drachma: &quot;..atcp.MSDPDRACHMA..&quot;&lt;hr&gt;Levels:&lt;br&gt;&quot;..atcp.MSDPCLASS..&quot; &quot;..atcp.MSDPLEVEL..&quot; &quot;..atcp.MSDPCLASS_SEC..&quot; &quot;..atcp.MSDPLEVEL_SEC..&quot; &quot;..atcp.MSDPCLASS_TER..&quot; &quot;..atcp.MSDPLEVEL_TER..&quot; &quot;..atcp.MSDPCLASS_QUA..&quot; &quot;..atcp.MSDPLEVEL_QUA..&quot;&lt;br&gt;&quot;..atcp.MSDPCLASS_QUI..&quot; &quot;..atcp.MSDPLEVEL_QUI..&quot; &quot;..atcp.MSDPCLASS_HEX..&quot; &quot;..atcp.MSDPLEVEL_HEX..&quot; &quot;..atcp.MSDPCLASS_SEP..&quot; &quot;..atcp.MSDPLEVEL_SEP..&quot; &quot;..atcp.MSDPCLASS_OCT..&quot; &quot;..atcp.MSDPLEVEL_OCT..&quot;&lt;br&gt;Avatar: &quot;..atcp.MSDPCLASS_AVA..&quot; &quot;..atcp.MSDPLEVEL_AVA..&quot;&lt;hr&gt; Experience: &quot;..atcp.MSDPEXPERIENCE..&quot;&lt;hr&gt;Health: &quot;..atcp.MSDPHEALTH..&quot; / &quot;..atcp.MSDPHEALTH_MAX..&quot;&lt;hr&gt; Mana: &quot;..atcp.MSDPMANA..&quot; / &quot;..atcp.MSDPMANA_MAX..&quot;&lt;hr&gt; Moves: &quot;..atcp.MSDPMOVEMENT..&quot; / &quot;..atcp.MSDPMOVEMENT_MAX..&quot;&lt;hr&gt; AC: &quot;..atcp.MSDPAC..&quot;&lt;hr&gt; HONOR: &quot;..atcp.MSDPHONOR..&quot;&lt;hr&gt; STR:&quot;..atcp.MSDPSTR..&quot;/&quot;..atcp.MSDPSTR_PERM..&quot; CON:&quot;..atcp.MSDPCON..&quot;/&quot;..atcp.MSDPCON_PERM..&quot;&lt;br&gt; DEX:&quot;..atcp.MSDPDEX..&quot;/&quot;..atcp.MSDPDEX_PERM..&quot; WIS:&quot;..atcp.MSDPWIS..&quot;/&quot;..atcp.MSDPWIS_PERM..&quot;&lt;br&gt;INT:&quot;..atcp.MSDPINT..&quot;/&quot;..atcp.MSDPINT_PERM..&quot; CHAR:&quot;..atcp.MSDPCHARISMA..&quot;/&quot;..atcp.MSDPCHARISMA_CAP..&quot;&lt;hr&gt;Spells and Damage:&lt;br&gt;Weapon Damage: &quot;..atcp.MSDPWEAPON_DAM..&quot;&lt;br&gt;Stab Damage: &quot;..atcp.MSDPSTAB_DAM..&quot;/&quot;..atcp.MSDPSTAB_DAM_CAP..&quot;&lt;br&gt;Hand Damage: &quot;..atcp.MSDPHAND_DAM..&quot;/&quot;..atcp.MSDPHAND_DAM_CAP..&quot;&lt;br&gt; Undead Cont: &quot;..atcp.MSDPUNDEAD_CONT..&quot;/&quot;..atcp.MSDPUNDEAD_CONT_CAP..&quot;&lt;br&gt;Spell Bonus: &quot;..atcp.MSDPSPELL_BONUS..&quot;/&quot;..atcp.MSDPSPELL_BONUS_CAP..&quot;&lt;br&gt;Heal Bonus: &quot;..atcp.MSDPHEAL_BONUS..&quot;/&quot;..atcp.MSDPHEAL_BONUS_CAP..&quot;&lt;hr&gt;Hitroll: &quot;..atcp.MSDPHITROLL..&quot;&lt;hr&gt;Damroll: &quot;..atcp.MSDPDAMROLL..&quot;&lt;hr&gt;Damage Red: &quot;..atcp.MSDPDAM_RED..&quot;/&quot;..atcp.MSDPDAM_RED_CAP)


end
</script>
<eventHandlerList>
<string>MSDPROOM_NAME</string>
<string>MSDPROOM_EXITS</string>
<string>MSDPROOM_VNUM</string>
<string>MSDPAREA_NAME</string>
<string>MSDPCHARACTER_NAME</string>
<string>MADPHEALTH</string>
<string>MSDPHEALTH_MAX</string>
<string>MSDPMANA</string>
<string>MSDPMANA_MAX</string>
<string>MSDPMOVEMENT</string>
<string>MSDPMOVEMENT_MAX</string>
<string>MSDPAC</string>
<string>MSDPHONOR</string>
<string>MSDPCONTINENT</string>
<string>MSDPLEVEL</string>
<string>MSDPCLASS</string>
<string>MSDPDRACHMA</string>
<string>MSDPALIGNMENT</string>
<string>MSDPEXPERIENCE</string>
<string>MSDPMONEY</string>
<string>MSDPSTR</string>
<string>MSDPCON</string>
<string>MSDPDEX</string>
<string>MSDPWIS</string>
<string>MSDPINT</string>
<string>MSDPSTR_PERM</string>
<string>MSDPCON_PERM</string>
<string>MSDPDEX_PERM</string>
<string>MSDPWIS_PERM</string>
<string>MSDPWEAPON_DAM</string>
<string>MSDPSPELL_BONUS_CAP</string>
<string>MSDPHEAL_BONUS_CAP</string>
<string>MSDPHEAL_BONUS</string>
<string>MSDPCHARISMA</string>
<string>MSDPCHARISMA_CAP</string>
<string>MSDPFLAIL_DAM</string>
<string>MSDPKICK_DAM</string>
<string>MSDPHAND_DAM</string>
<string>MSDPHAND_DAM_CAP</string>
<string>MSDPDAM_RED</string>
<string>MSDPDAM_RED_CAP</string>
<string>MSDPSEX</string>
<string>MSDPGROUP_LEADER</string>
<string>MSDPTANK_HEALTH</string>
<string>MSDPTANK_HEALTH_MAX</string>
<string>MSDPTANK_LEVEL</string>
<string>MSDPTANK_NAME</string>
<string>MSDPLEVEL_SEC</string>
<string>MSDPLEVEL_TER</string>
<string>MSDPLEVEL_QUA</string>
<string>MSDPLEVEL_QUI</string>
<string>MSDPLEVEL_HEX</string>
<string>MSDPLEVEL_SEP</string>
<string>MSDPLEVEL_OCT</string>
<string>MSDPLEVEL_AVA</string>
<string>MSDPCITIZEN</string>
<string>MSDPCLASS_SEC</string>
<string>MSDPCLASS_TER</string>
<string>MSDPCLASS_QUA</string>
<string>MSDPCLASS_QUI</string>
<string>MSDPCLASS_HEX</string>
<string>MSDPCLASS_SEP</string>
<string>MSDPCLASS_OCT</string>
<string>MSDPCLASS_AVA</string>
<string>MSDPSTAB_DAM</string>
<string>MSDPSTAB_DAM_CAP</string>
<string>MSDPUNDEAD_CONT</string>
<string>MSDPUNDEAD_CONT_CAP</string>
<string>MSDPSPELL_BONUS</string>
<string>MSDPINT_PERM</string>
<string>MSDPHITROLL</string>
<string>MSDPDAMROLL</string>
<string>MSDPOPPONENT_HEALTH</string>
<string>MSDPOPPONENT_HEALTH_MAX</string>
<string>MSDPOPPONENT_LEVEL</string>
<string>MSDPOPPONENT_NAME</string>
<string>MSDPTERRAIN</string>
<string>MSDPAFFECTS</string>
</eventHandlerList>
</Script>
</ScriptGroup>
</ScriptPackage>
</MudletPackage>
0.0/6