|
Urit Novice
Joined: 23 Jun 2005 Posts: 32
|
Posted: Mon Oct 18, 2010 2:20 am
Feature Request: %roomCoords([roomid],x,y,z) |
I'd like to request a new room function: %roomcoords(roomid,x,y,z)
Leave any field blank to leave the coords unchanged.
Right now the IRE muds pass back room coords in the GMCP output, and I use a custom SQL script to write those to the map DB. I'd like to do this in a supported manner.
This would also immediately update the map view (unlike my custom script does - I have to manually reload the map).
For reference, my script looks like:
Code: |
<?xml version="1.0" encoding="ISO-8859-1" ?>
<cmud>
<alias name="read-map" copy="yes">
<value>#sqldb Midkemia.dbm
Data = %sql( Midkemia, "SELECT RefNum, X, Y, Z, UserStr FROM ObjectTbl WHERE Deleted = 'N' AND UserInt != 1 AND UserStr NOT LIKE '%Coordinates|%' AND UserStr LIKE '%Coordinates%' ORDER BY ZoneID,RefNum")
UserCoords = %null
#echo Reading Data.
#WHILE (!@Data.Eof()) {
$data = @Data.Item("UserStr")
#addkey UserCoords {@Data.Item("RefNum")} {%db( $data, "Coordinates")}
#CALL @Data.Next
}
#echo Data read complete.
Data = %sql( Midkemia, "SELECT RefNum, X, Y, Z, UserStr FROM ObjectTbl WHERE Deleted = 'N' AND UserInt != 1 AND UserStr NOT LIKE '%Coordinates|%' AND UserStr LIKE '%Coordinates%' ORDER BY ZoneID,RefNum")</value>
</alias>
<alias name="write-coords" copy="yes">
<value>#echo Writing room coords to SQL.
#loopdb @userCoords {
$roomnum = %key
$x = (%word( %val, 2, ",")*240)
$y = (%word( %val, 3, ",")*-240)
$z = (%word( %val, 4, ","))
$sqlCmd = %concat( "SELECT refnum, x, y, z, UserStr, UserInt FROM ObjectTbl WHERE refnum = ", %key)
$Data = %sql( Midkemia, $sqlCmd)
#CALL $Data.Edit
$Data.Item("X") := $x
$Data.Item("Y") := $y
$Data.Item("Z") := $z
$Data.Item("UserInt") := 1
#CALL $Data.Post
}
#echo Done writing room coords to SQL.</value>
</alias>
</cmud> |
The roomnotes I make are like:
Coordinates=63,-1,-4,-1|Area=the town of Margrave's Port|Environment=urban|Details="" |
|
|
|
MattLofton GURU
Joined: 23 Dec 2000 Posts: 4834 Location: USA
|
Posted: Mon Oct 18, 2010 3:54 am |
Any reason you're not using %roomnote() and/or %roomflags()? The former references the Room Notes field, which appears underneath the Room Description textarea in the Room Properties. The latter references the UserStr field, and for all intents and purposes is %roomnote() part 2.
|
|
_________________ EDIT: I didn't like my old signature |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Mon Oct 18, 2010 5:12 pm |
You can already access and change the X,Y,Z values using the COM-based mapper scripting that is part of CMUDPro.
|
|
|
|
MattLofton GURU
Joined: 23 Dec 2000 Posts: 4834 Location: USA
|
Posted: Mon Oct 18, 2010 10:19 pm |
Aren't those the room-drawing coordinates? I don't think he is interested in those, so much as an easier way to record the arbitrary numbering system used by MUDs to determine where a room is located.
|
|
_________________ EDIT: I didn't like my old signature |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Tue Oct 19, 2010 12:35 am |
Oh, sorry, yes I misunderstood. If he just wants to record some arbitrary data from the MUD, then using the %roomflags to store a string value (which could be a database variable or string list) would be the way to go.
|
|
|
|
Moo Apprentice
Joined: 10 Apr 2009 Posts: 145
|
Posted: Tue Oct 19, 2010 2:20 am |
I would say he's already using the roomflags field. His script copies the X, Y, Z coordinates he has stored in the roomflags/userstr field into the actual room-drawing coordinates. He was looking for a way to access those coordinates "natively" without having to use SQL... At least, that's my interpretation :P
|
|
|
|
Urit Novice
Joined: 23 Jun 2005 Posts: 32
|
Posted: Tue Oct 19, 2010 3:44 am |
I DO actually want to set the Mapper DRAWING coordinates, yes. That's exactly what I am doing with my ghetto SQL script. I'm using the MUD's coords to set the drawing coords.
I wasn't aware of a magical COM script way of doing this. |
|
|
|
Zugg MASTER
Joined: 25 Sep 2000 Posts: 23379 Location: Colorado, USA
|
Posted: Tue Oct 19, 2010 5:17 pm |
Download the zMapper program from the Downloads page and there is an old *.HLP help file with it. There is an advanced topic in the help file that explains the COM-based mapper scripting stuff. This scripting is available within CMUDPro, or within CMUD if you buy zMapper. If you use CMUDPro and don't buy zMapper, be sure and delete the zMapper.exe file so that CMUDPro doesn't try to check for a zMapper license (which would expire after the 30-day zMapper trial).
Eventually I'll try to get this documentation moved into the CMUDPro help files.
But it is by-design that most advanced mapper stuff requires either CMUDPro or zMapper. |
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|