User talk:Smurf/Archive 3

From Guild Wars Wiki
Jump to navigationJump to search

Extracting from .dat

Hey Smurf. I wanted to start grabbing inventory icons out of the .dat, but I don't know where to start. Do you use the gwdat browser? Where did you download it from? And how do you go about extracting and saving the files? I hope you are able to help me out. :) - BeX iawtc 02:17, 4 February 2008 (UTC)

I personally don't use the gw.dat browser for inventory icons. So you'll probably get a better answer at Guild Wars Wiki talk:Projects/Inventory icons than from me on how to use it. -Smurf 04:18, 5 February 2008 (UTC)

Thanks

For the quest links for War Prep. Thought I'd have to delete a char, then you go and do them without being asked. Backsword 10:35, 17 February 2008 (UTC)

wizrds

nice new map 24.141.45.72 01:44, 20 February 2008 (UTC)

Concise

I was wondering, are these "concise" descriptions really necessary? You're essentially re-wording what is already mentioned on the page. Or maybe I'm just not getting it. MiraLantis 21:46, 17 March 2008 (UTC)

GWWT:SKILLS#Bad......Bad.....Update is the place to discuss it. I personally won't use it much but some people might like them. Kind of the same thing with all the dialogue we document. From what I've read there is little opposition to adding it. They're just unsure of how to incorporate it. I'm just trying to help out with the big task. -Smurf 21:54, 17 March 2008 (UTC)
Wouldn't it be better it update the main description instead of describing the skill twice on its own page? That's what I'm talking about... MiraLantis 21:56, 17 March 2008 (UTC)
I make total sense... really I do... I think I need to not drink and wiki. Anyways, I still find it silly, but I didn't know there was a huge discussion about the formatting of skills... I mean obviously there's a discussion. There's always a discussion. Just hadn't noticed that one. Oh well, I still think it's silly, but props for helping the wiki. MiraLantis 21:59, 17 March 2008 (UTC)
Well, once we have both description, we can later hide one of them on the skill page by changing the {{skill infobox}} template and still use either description on the skill lists. -Smurf 22:10, 17 March 2008 (UTC)
While we're at concise descriptions: I already noticed you added the biggest part of the concise descriptions yet, including monster and snow-fighting skills. I heared that you get it through gw.dat. With GwDatBrowser, i get all the files, but the text files are only inscrutable bafflegab to me. I heared that one can read this files by using so called "hex editors". I downloaded one, but it somehow didn't work. May i ask which program you use to be able to read the text files? —ZerphatalkThe Improver 01:46, 19 March 2008 (UTC)
For the skills I can't get at the Priest of Balthazar, I use the game client and a memory editor (specifically Cheat Engine). The client uses the same numbers on Game integration/Skills for skills and store them as integers. If you (or anyone) want I could write a step by step tutorial on how to use Cheat Engine to find and modify the skill bar. -Smurf 03:47, 19 March 2008 (UTC)
Were game clients programs that can be used to get "offline" into the game, as you can see it on the pictures of Chriskang's talk? And integers were whole numbers that assign - in this case - every skill a number? I'd be happy about a step tuturial, if you don't mind. I hope i would understand that stuff then. (btw, that Cheat Engine looked a bit like my hex editor i downloaded) —ZerphatalkThe Improver 09:12, 19 March 2008 (UTC)
here ya go. Though I'm usually terrible at explaining stuff. When I say client I'm just referring to the game, nothing special. I just call it a client since it requires a server to play. Integer is just a 4 byte whole number so in Cheat Engine you'll be using the value type 4 Bytes to search for the skill ID. -Smurf 16:56, 19 March 2008 (UTC)
great, your step-by-step inroduction was nice, it worked :D —ZerphatalkThe Improver 00:17, 20 March 2008 (UTC)

Wizard's Isle Map

Just wondering how you managed to put that together? I would like to do the same with The Isle of Meditation, but I don't see a map of it in the mini-map viewer. Do you have to host a GvG match to get see this, or did you stitch together images from the compass?--The preceding unsigned comment was added by User:Ghosst (talk).

The map was created by taking multiple aerial screenshots and can't be done with Guild Wars alone. I used a custom d3d9.dll file (a DirectX file) based on [1] that allows me to switch to a orthographic projection and also Cheat Engine (a memory scanner/editor) to move my character in the sky and to make the camera look straight down. For the borders I made a small program that copies my character's location to the clipboard with a keypress and then I just hug the walls finding all the corners and pasting the coordinates into Inkscape. For the NPC positions, I use the same program and use observer mode mode clicking on each NPC. It's a long process :) -Smurf 04:19, 3 June 2008 (UTC)
Smurf... You are so imba! :P poke | talk 05:44, 3 June 2008 (UTC)
Indeed! Backsword 08:50, 13 June 2008 (UTC)
Would you care to upload said d3d9.dll file somewhere we don't have to sign up for spam?Ghosst 16:45, 13 June 2008 (UTC)
knock yourself out -Smurf 20:56, 14 June 2008 (UTC)

White backgrounds

How did you manage to get the white backgrounds on images such as for the Mursaat Maul? It doesn't look like you cut it out Jennalee 06:52, 9 June 2008 (UTC)

I replaced the ground texture with a white one before taking the screenshot. See Guide to modifying in-game graphics on how to replace textures. -Smurf 13:12, 9 June 2008 (UTC)
I'll look into it, thanks :) Jennalee 08:29, 12 June 2008 (UTC)


More skills

Hya. You still doing the memopry editing thing? I have a list of skill ids of skills I suspect is active ingame, but which I can't get to normally. (and I'm too lazy to set up things myself) Would you be willing to look into them? Backsword 08:50, 13 June 2008 (UTC)

sure, I'll do it. -Smurf 10:11, 13 June 2008 (UTC)
Were these the ones you were looking for: 2882, 2883, 2884, 2844 added in the recent update? -Smurf 10:58, 13 June 2008 (UTC)
Na, those we have data on, even articles (but I wonder why they skiped one number). The ones I'm wondering about are unseen ones, that I hope will explain ingame behaviour. Although chances are many of them will contain nothing but the sting "(monster only)" or so. I put a list here: User:Backsword/Sandbox/Skill IDs. Somewhat longer, but any info is fine. Backsword 07:45, 16 June 2008 (UTC)
User:Smurf/Sandbox&oldid=937694. #1464, Turbulent Flow, I checked all the elementalist attributes (since The Drought is an ele) and couldn't get the green number to change. -Smurf 10:19, 16 June 2008 (UTC)
Ah, excellent. Thanks for the help. Some of those are quite good, and I can clearly see them helping us, like False Death. Others are not what I expected. Did you get the skill type by the sorting function? Backsword 20:39, 18 June 2008 (UTC)
No, I currently don't know how to get the skill type. The ones with a skill type in the description were part of the skill description. -Smurf 05:27, 20 June 2008 (UTC)
I tried to get the skill type once as well, but it seems that when having a skill on the skill bar, only the visible text is stored in the memory but not internal things :( poke | talk 12:25, 20 June 2008 (UTC)

Character location

Hey there, I was interested in how to get the character coordinates and came across your page, how would I go about finding that w/ CE or something? Thanks Mwpeck 00:08, 25 June 2008 (UTC)

If you're unfamiliar with memory searching then download cheat engine and do the tutorials (at least steps 1 through 4) included with it. Use their forum if you have trouble with the tutorial. Then you can use it to search for the coordinates. Since you don't know the values, start with "Unknown initial value". The address will change if you zone or change district. Also, if you can, start in a corner so you can later move your character to the same exact spot and use the "Same as first scan" scan type. The X coordinate increases going east, Y increases going north, and Z decreases going up. You can narrow it down to about 15 or so. You can manually remove any addresses in green text as it won't be any of those. Move the remaining ones to the bottom list in cheat engine and use trial and error to find the one you're looking for. The ground tiles are 96 units wide, so add like 500 to the value so you'll notice your character move. The X and Y addresses will be next to each other, so if the address of X is 0AFB40E8, Y will be at 0AFB40EC. You'll have to search for Z separately. If you move your character around with the keyboard or mouse clicking, you'll jump back to where you're supposed to be, so you may want disable moving by mouse clicking in the options. -Smurf 04:07, 25 June 2008 (UTC)
Wow thanks for the info, that should be enough to get me started on it. Mwpeck 04:45, 25 June 2008 (UTC)
Hmmmmm, having some trouble finding the coordinates. Got in a corner and did the initial scan......moved north and scanned for increased values, then moved south and scanned for decreased values. Repeated this till I had ~40 or so (counting the green ones) and moved to the corner and searched for "same as first scan", had maybe 20 left, moved non-green ones to the bottom and changed them and my character never moved on any of them. I also tried freezing then changing them (so they didnt reset) and nothing happened. Any help would be apprieciated. Mwpeck 17:22, 25 June 2008 (UTC)
Do not search for multiple values at once; search only for one direction and when you have that address, look for another. poke | talk 17:23, 25 June 2008 (UTC)
I am searching for only 1 value, the Y coordinate of the character (increases going north according to Smurf). Which is why I move north and look for values that increased, then move south and look for values that decreased. Mwpeck 17:26, 25 June 2008 (UTC)
Hmm, sorry, misread it. poke | talk 17:40, 25 June 2008 (UTC)
Sounds like you did it right. Make sure you have the "gw.exe" process selected. Value type should be set to "Float" (forgot to mention that). Also when your changing the values, make sure you're not next to a cliff. Sometimes it won't move you if you are. -Smurf 17:46, 25 June 2008 (UTC)
Ok, I have gotten it down to 4 possible values while looking for floats, 2 of the values are the same as each other, and the other 2 are the same as each other. I believe one of them to be Z as it increases if I go down stairs, decreases if I go up stairs (like you said) and changes very little when I'm on flat ground(second set of matching numbers). I believe the first set to be Y because if I run perfectly to the east (by rubbing against an east-facing wall) they do not change, however if I am moving north or south in any direction they increase/decrease accordingly. I can lock/change them both but my character does not move. If I do not lock them, they change back to what they were as soon as I try changing them. I am changing them to values I can run the character to normally. Any other suggestions? Thanks Mwpeck 18:34, 25 June 2008 (UTC)
I tried it myself now and I found quite a lot values that display the current location. But I found 3 different types of those values. First type is changed as soon as I click with my mouse somewhere, those adresses seem to store the target for mouse-movement; Second type is directly changed whenever the character moves/changes position, this value is live; Second type (b) is the same but seems a bit laggy, and still actualizes values when you stop; and finally third type stores the characters standing position, so if I click somewhere the value doesn't change until the movement stops, then it is actualized. Strangely the value I need to change to move the character is one of those (3rd type).
Btw. if I change all of those 3rd type values (I have found 4 and the one I need to change to move the character) to the same value, I can after that even click without being transported back. poke | talk 18:43, 25 June 2008 (UTC)
Any special way to find the standing value or is it a matter of closely watching the addresses you come up with to see which one changes when the character stops moving? Mwpeck 18:55, 25 June 2008 (UTC)
Good point Poke, I've always scanned after my character stopped moving. If you only found 4 addresses then wait a couple seconds after your character stopped moving before searching. If you're changing the value and it changes back, then that's not the one you're looking for. Don't worry about locking them. Also I always make sure I'm on the ground and not on an object like bridges or stairs when I'm scanning. You might have problems finding the Z if you are on them. -Smurf 20:03, 25 June 2008 (UTC)
Man I must be doing something obviously wrong......I just did the process again on flat ground, waiting a few seconds after I stop moving to hit the button. Found a corner, did the first scan. Moved south, searched for decreased values, move futher south, searched for decreased values. Moved north, searched for increased values, and did it again. Then moved back to the corner and searched for values the same as initial scan. Repeated this a few times and ended up with 15 addresses, upon changing any of those values, they all either did not move my character and stayed in the value I set, or they did not move my character and reset to the previous value. I was standing in an open field while doing so, so there should have been plenty of room to move the character (was only changing it by a few hundred). Mwpeck 20:21, 25 June 2008 (UTC)
I'm currently browsing through the memory and looking for a fixed hint on that address.. but it's really hard, I hate Assembler -.-
And yes, Smurf, I scanned as well after my character stopped, but I had a long list, added them all and watched them/sorted them, and found that out. Also that only applies to moving via mouse as it seems as if the values are updated more often via keyboard movement. For the z-position, is that even needed? When I move the character, I'm always the z-value always changes automatically so I'm on top of the floor. And is there a possibility to move the camera alone? If so, how to find the values for that? poke | talk 21:04, 25 June 2008 (UTC)
How many scans did you run and how many values did you have that you had to go through? I have ran so many tests and have not been able to find anything.....I even ran some using the mouse to move and was unable to come up with anything. Mwpeck 21:13, 25 June 2008 (UTC)
10 or 20 scans of just increase and decrease scans with some unchanged scans and same as first and I can get something like this. By going into a corner you get the coordinate to be a whole number and you can tell which addresses hold the value (864 in the screenshot). You can add Gw.exe+936D14 manually to get the X coordinate. It's not the address that controls the position but it may help. It will work until the game updates. -Smurf 22:14, 25 June 2008 (UTC)
Hmm.. I think I found a quick way to get the X and Y address now using the debugger.. I'll continue testing.. poke | talk 22:34, 25 June 2008 (UTC)
I tried finding all the pointers but failed miserably :) -Smurf 22:37, 25 June 2008 (UTC)
Well, I know now where I have to look and where the address I need is used but I'm not able to go back in the code, as it is directly after a jump statement (at least I don't know how that would work :P) poke | talk 22:43, 25 June 2008 (UTC)
Tried that and I ended up with 3 addresses with the same value (in this case they were 3312, and they were whole numbers no matter where I stood). And 1 address that was similar but not a whole number, 3315.0341-. All the other addresses were less than 10 so I doubt they were coordinates. Yet changing any (or all) of the mentioned coordinates, my character still does not move. One thing I had discovered is the mouse click coordinates.....an interesting thing with those that I did was change them while I'm running (they were infinite while not moving so I couldnt change them unless I moved), when my character arrived where I clicked I was teleported to the coordinate I changed it too, likely only client-side but it led to some interesting explorations. Mwpeck 22:39, 25 June 2008 (UTC)
Sounds as if you did something wrong :P poke | talk 22:43, 25 June 2008 (UTC)
Thats what I dont understand, even checked the settings from his image. Same CE version, same settings (I turned fast scan on, it was off before) and I did it again and ended up with 3 addresses. One of them seems to be the Y coordinate, but if I change it, it resets it self to what it was. Mwpeck 22:48, 25 June 2008 (UTC)
As you were just at it, Smurf, I have a question as well :D When using orthographic projection, I tried to find values for the camera pan so I could make a bird's eye view. This worked quite well, but I had the problem that I couldn't use a too high value, as the camera reset itself then, so I was wondering what values do you use? I found the z-pan using values from ca. -1.3 up to 1.48 without resetting the camera. But at 1.48 the camera is still not correctly from above. poke | talk 10:19, 25 June 2008 (UTC)
Camera rotation is in radians so 90° is pi/2 (use the calculator). However when I use that exact value to look straight down, the camera will do a weird rotation so I round down to 1.57078. Also, I don't use the 1st-person view. I move the camera away from the character as far as I can with the mouse wheel and move the character model out of the way. The character model coordinates have the same values as the ones you use to move around (and you probably came across them when looking for the coordinates). -Smurf 16:52, 25 June 2008 (UTC)
Ah, great, thanks. I'll do some more tests now :) poke | talk 17:01, 25 June 2008 (UTC)
I've been trying to work out how the camera works in gw and I found this page. So far I've found pointers for zoom and camera position (pan and rotation in the same value). The zoom is straight-forward enough but I have no idea how the position work. I have it set as double because that's what it looks like to me, but if I try to inject the 90*(pi/180) value rounded down it just moves away to infinity and doesn't pan up. If I inject some value I get from the game the camera moves to that position fine. Are "pan" and "rotation" not supposed to be the same value or what am I doing wrong? -Pixelz 10:50, 10 August 2008 (UTC)
The values are stored as floats, not doubles. -Smurf 04:31, 12 August 2008 (UTC)
Ok, I've found the value for the Z-pan, but I've still not been able to figure out how you zoom out a lot. Do you zoom out or do you inject the Z coordinate or something so you fly up in the air? -Pixelz 14:14, 12 August 2008 (UTC)
We zoom out by rewriting the DirectX calls so the camera distance is higher. That is not something that can be changed using the original in-game possibilities. poke | talk 15:47, 12 August 2008 (UTC)
I've found the pointer for zoom but even if I inject a high value it doesn't zoom out any further then what can be done normally. What does rewriting DirectX calls entail? Is that still just memory injection with CE? -Pixelz 19:34, 12 August 2008 (UTC)
To move the camera further away from your character using cheat engine, you'd have to find the assembly code preventing you from doing that. Modifing the DirectX calls requires computer programming and some knowledge of how DirectX works; I just use the method and code from http://www.codeguru.com/cpp/g-m/directx/directx8/article.php/c11453/ . -Smurf 12:01, 14 August 2008 (UTC)

Character location using memory viewer

Ok, it seems to work quite well using the memory viewer and the debugger. Here is how to get the X and Y position of the character:
Prepare CE with GW, so that everything is running; click Memory Viewer and in the upper left panel of the window right-click and click Go to Address. Enter the address 005C7E82 and press enter. Now there should be a line "fld dword ptr" selected. Now for the tricky part: Press F5 and confirm the attachment with Yes; as soon as the window title changes to "Currently debugging thread" (which happens really fast), on the right side of the window click "ESI". A window will pop up with an address; copy it (CTRL+C), press cancel, F5 and F9 to let GW running again. Close the Memory Viewer, press Add address manually, paste the copied address and add +78 at the end of the address - this is the X position - select the float type and confirm with OK. For the Y position add another address using the copied address but add +7C at the end.
Now in GW try running around and look if the values change, if yes it's fine, if not start again from the beginning. poke | talk 23:21, 25 June 2008 (UTC)

Awesome job, I tried looking up pointers and what not but I dont know assembly at all. Thanks for the help.
Also, I'm assuming this would change when the client is patched.....how would one go about finding the correct address after a patch? Mwpeck 23:36, 25 June 2008 (UTC)
I don't think this will change, but if it changes, it won't be a big problem to get the new address. The hard part was only looking for a fixed address where the address, you have to copy, is stored, but I failed.. Maybe I'll look for it again sometime :P poke | talk 23:43, 25 June 2008 (UTC)
What do you mean you failed? Seems to work fine over here, as for the memory location, reason being is because games like Diablo 2, every patch changes memory locations, I know its a different company, but Anets roots lead back to the D2 team, so I figured they would probably do things similar in a way to how they are use to doing them. Then again thats just speculation on my part, guess we will see when they throw out the next patch :) Mwpeck 05:45, 26 June 2008 (UTC)
I failed as I wanted a fixed address where for the position; attaching the debugger everytime can slow down and even crash GW, so I would prefer a way without it. poke | talk 10:11, 26 June 2008 (UTC)
well, it changed with the update. I tried finding it myself but no luck, I cant even find the correct dynamic address (moving and checking for changed values, going back to a corner I started in and looking for same values as I started with, and not moving and checking for unchanged). I did that all the way down to about 200 addresses and went through them and not a single one was my x or y coordinate. Dunno why but they will not show up for me. Otherwise I think I could have found the new static pointer for it. Kinda hard when you cant find the dynamic address though :/ Mwpeck 03:08, 3 July 2008 (UTC)
use 005C7EFC -Smurf 03:33, 3 July 2008 (UTC)
Thanks, might mess around with trying to find the dynamic address after I already know it, so I can hopefully find it later when they update again on my own.
Ok, figured out why I was never able to find it. For some reason, if I do a "Same as first scan" scan, it NEVER stays in the list of addresses. For example, the current X address for me is 16505558, I can do increase/decrease/changed/unchanged scans and it is in the list every time. If I move back to the same corner I was in when I hit First Scan, and do a same as first scan check, the 16505558 is nowhere in the list of addresses, even though it is the exact same as when I hit First scan (in this case that value would be -10656).....bad thing is I can only eliminate it down to ~500 addresses with it still in the list.....what I'm thinking is find a corner (make sure I remember where it is) then mark down what that value is. From there I should be able to go back to that corner and do an exact value scan and at least eliminate anything thats not related to the X coordinate. Any idea why "same as first scan" is removing the current X coord address from the list even though I am using it in the same corner I started it? Mwpeck 17:01, 3 July 2008 (UTC)
When you start at X=-10656.141125 and get back then to X=-10656.141122 then it is not the same. Try another corner and be sure to be really in it. poke | talk 18:10, 3 July 2008 (UTC)
According to the corner I was in, it was exactly x = -10656, not a fraction more or less. Therefore x = -10656 at start and x = -10656 later on should be the same spot. I tried 3 or 4 times in different corners and the correct address for x never showed up. However if I did not use "same as first scan" it showed up every time, even though it was like 100-200 values I had to go through every time. There is however a corner in Isle of the Nameless that has an x value of -10084, using exact scan for that value after an initial scan pretty much took me to 20-30 addresses, which contained the proper address. Mwpeck 22:39, 3 July 2008 (UTC)
Incase anyone is still interested in this, the new static address from todays update is: 005C7F4C Mwpeck 06:19, 11 July 2008 (UTC)

dragon arena

thx for the dragonball map. dude, i have no idea how long this process takes u, but wanted to let u know it is much appreciated. --VVong|BA 20:43, 10 July 2008 (UTC)

Foe maps

"Probably won't do any more until I find an easier way than taking screenshots of the compass." - So you take screenshots of the compass with the foes and go through all of them later to draw their positions on the map? Then I can understand that you don't want to do it ^^ Wouldn't it be possible to take screenshots of the foes in orthographic projection so that you can see multiple in one screenshot? poke | talk 14:07, 13 July 2008 (UTC)

Ya I would follow a group of foes so they're in compass range but not aggro range and while I'm facing north (so it would be easier to match the position with the map) would take a screenshot when they stopped or changed their direction. Then I would go through the screenshots in order and just eyeball their position on my map in Inkscape. Regarding the ortho screenshot idea, the server only sends npc locations for those in range of your compass. Beyond the compass range, the npcs just disappear. So it's probably more trouble than it's worth.
I'm just going to have to follow the groups myself which usually restricts me to doing only one group at a time since the compass is so small and I don't want to aggro any groups I'm tracking. One way to make the process quicker is to grab the coordinates automatically either by capturing packets or getting them from memory. I tried using GW Lan Project's InjectPacketDump program to find packets that tells me anything about npc spawn/movement, but didn't have much luck (assuming the coordinates are encoded in floats). Using cheat engine I was able to find an array of pointers to npcs, your own character being one of them, and +0x78 being the offset for the x coordinate in the npc object. That's about where I'm at so far. -Smurf 05:04, 14 July 2008 (UTC)

oops

Sry, i should have read the talk page first :P —ZerphatalkThe Improver 15:42, 23 July 2008 (UTC)

no apology needed, you made the edit before the talk page was made. -Smurf 15:49, 23 July 2008 (UTC)
then i apologize for not having taken a look at the timestamp^^ —ZerphatalkThe Improver 15:51, 23 July 2008 (UTC)

dance

i stole your User Smurf .png. hope you don't mind xD - Y0_ich_halt User Y0 ich halt sig.jpg 10:12, 24 July 2008 (UTC)

I don't mind at all. -Smurf 13:56, 24 July 2008 (UTC)
good :D —ZerphatalkThe Improver 06:35, 25 July 2008 (UTC)

Image:Dye Remover.png

I'm happy we at least have a nice one now. :) —ZerphatalkThe Improver 07:14, 26 July 2008 (UTC)

gwdatbrowser update

Hi Smurf, in this new version of the browser it automatically plays sounds as you scroll down the list. Is there anyway to turn this off as it is quite irritating and the old version didn't do that. --LemmingUser Lemming64 sigicon.png 21:28, 30 July 2008 (UTC)

without changing the code? don't think so. Here's a version with the autoplay commented out [2]. -Smurf 02:26, 1 August 2008 (UTC)

Maps

Gj on the maps :D — Eloc 20:20, 25 August 2008 (UTC)