Added a few new issues related to PyMPQ. Also found some problems with PyDAT but haven't found time to reproduce them:
-"sometimes" changing info in units.dat doesn't mark the file as unsaved (I changed air weapon and air max hits in alan schezar's entry).
-if you edit an entry and then copy & paste it, it pastes the values before your edits (may only happen after saving, only found it in weapons.dat so far while editing twin autocannons and pasting over the hero variant of the attack)
-after selecting orderid 154 in orders.dat, moving up and down with arrow keys updates id selected, but doesn't change loaded stats (you have to left click on the entry to update the stats)
PyMPQ crashes when I extract any files.
Error log.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1537, in __call__
return self.func(*args)
File "D:\StarCraft Stuff\PyMS-master\PyMS-master\PyMPQ.pyw", line 1087, in extract
r = SFileReadFile(fh)
File "D:\StarCraft Stuff\PyMS-master\PyMS-master\Libs\SFmpq.py", line 379, in SFileReadFile
if _SFmpq.SFileReadFile(file, byref(data, total_read), read-total_read, byref(r), None):
WindowsError: exception: access violation reading 0xFFFFFFFFFA6678CF
Also: There is a tiny bug in PYAI edit.
If you miss type any of these = crash.
--<TMCx 0000 (Forgot the the other 2 dashes. And had it goto --TMXc 0000 with no 2 dashes. = crash.
And/or crash if you don't have anything for goto = crash.
I make StarCraft BroodWar Maps! Servers I'm On: USEast/USWest!
Updated as of: 9/11/2021
The PyMPQ crash is from exporting sound files imported with WinMPQ. At least for me, exporting any other file works fine. I reported this earlier this week:
https://github.com/poiuyqwert/PyMS/issues/116PyAI shouldn't behave that way, that's strange. It should just warn you of syntax errors. I don't use that build's PyAI so I don't know if it's reproducible.
ALL PRAISE YOUR SUPREME LORD CORBO
I found easier to get PIL from this link and not from anywhere you posted in your documentation or official python site:
easy installation too
https://www.pythonware.com/products/pil/
fuck you all
Just had a terrible experience (while streaming) where I attempted to open
this bmp with PyGRP and was hardlocked, requiring me to cut power to my PSU and restart. This is obviously not great for hardware life expectancy and I've had to do this so many times with PyMS that I feel compelled to remind you that there are still several issues with the program that result in hardlocks, at least on win10. When reproducing them I encourage you to do so in a virtual machine to save your hardware, but I'm at my wits' end at this point.
PyDAT also does not show graphical previews (icons, grps) on my machine, not sure what's wrong with my install as it does with Neiv's fork and did with older versions of PyMS.
EDIT: Fixed the PyDAT error. The fault seemed to be in the settings file, which had // instead of \ in the filepaths. I don't know why this would cause issues but changing them to use \ resolved the problem.
Post has been edited 1 time(s), last time on Apr 8 2019, 11:08 am by Pr0nogo.
Whenever I try to export a frame from a unit grp (Like the Valkyrie, for instance), I get the following error:
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1404, in __call__
File "PyGRP.pyw", line 702, in exports
File "PyGRP.pyw", line 18, in grptobmp
TypeError: isstr() takes exactly 1 argument (2 given)
And the exporting fails, though the frames can be viewed just fine while they are inside the .grp. How do I resolve this?
None.
PyMS and ProTRG developer
Whenever I try to export a frame from a unit grp (Like the Valkyrie, for instance), I get the following error:
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1404, in __call__
File "PyGRP.pyw", line 702, in exports
File "PyGRP.pyw", line 18, in grptobmp
TypeError: isstr() takes exactly 1 argument (2 given)
And the exporting fails, though the frames can be viewed just fine while they are inside the .grp. How do I resolve this?
It looks like you have an old version of PyMS (you can check Libs/versions.json and compare it to the latest here:
https://github.com/poiuyqwert/PyMS/blob/master/Libs/versions.json )
You should download the latest version from
github (direct link for zip download:
download)
I'm going to be replacing an entire extended tileset's graphics soon and want to be able to preserve pathing, height, and ramp flags (basically minitile settings). How would I do this using the latest pytile?
edit 1: seems like what I want is in the megatile explorer, but selecting every megatile is really tricky when the display appears completely messed up, and when it doesn't seem to react to the accurate cursor position. I have no idea if I've selected all tiles or not.
edit 2: ok, seems like even though the display is wrong, clicking the last tile does select the last tile, so I was able to export the settings for all megas at once. However, exporting the graphics for all megas produced a file that couldn't be opened by photoshop or irfanview. No problem, I'll export all the group graphics, modify them, and reimport them. Attempting to export all groups at once freezes pytile (presumably because it is taking an astronomically-long time to process all the groups), so I opted to do it in phases rather than wait. More micromanagement but better than chancing on a botched export. After that, I edited and reimported (in the same phases, just in case), only to find that megatiles are sorted by order of import. At first I sought to reimport my tiles in the same manner I presumed blizzard hard, only to discover that they in fact had not followed a simple descending order, as evidenced by mud tiles mixed in with doodad tiles. I also discovered tiles that were nowhere in the tileset, old ones that had been overwritten (or so I had thought), and thus were nowhere to be found in the new version I was using as they were never imported in the first place. It was at this point that I gave up trying to match the megas up to the settings file and have since resigned myself to copying the flags by hand - something I would really rather not have to do, but see no way around at this point.
TLDR: megatile selector is visually inaccurate, megatile graphical exporter doesn't appear to work when processing large amounts of megas in my (very limited) tests, group graphical exporter needs some sort of progress bar so you know it isn't just dead in the water, scrolling issue is really annoying and caused me countless restarts in the middle of trying to do this, and I need more caffeine.
Post has been edited 2 time(s), last time on Apr 15 2019, 12:50 pm by Pr0nogo.
Whenever I try to export a frame from a unit grp (Like the Valkyrie, for instance), I get the following error:
Exception in Tkinter callback
Traceback (most recent call last):
File "Tkinter.pyc", line 1404, in __call__
File "PyGRP.pyw", line 702, in exports
File "PyGRP.pyw", line 18, in grptobmp
TypeError: isstr() takes exactly 1 argument (2 given)
And the exporting fails, though the frames can be viewed just fine while they are inside the .grp. How do I resolve this?
It looks like you have an old version of PyMS (you can check Libs/versions.json and compare it to the latest here:
https://github.com/poiuyqwert/PyMS/blob/master/Libs/versions.json )
You should download the latest version from
github (direct link for zip download:
download)
Ugh, how do you run .pyw files?
None.
They should run automatically if you have python 2.7 installed.
Back in 2017 you posted
this, explaining the use of @suppress_all and @suppress_next_line. These just get commented out in the ASC3->PyAI conversion and when uncommented they throw errors in PyAI, so clearly I'm doing something wrong when using them. Is there any other documentation on this? I could also mark all new units as @spellcasters in unitdef if there are no drawbacks to it, but I'd prefer to not have to do that.
suppressions are and always have been in aibin.py
You'll need to be a bit more specific.
Oh, nevermind, I was wrong, it works fine script-level too
example
@suppress_all(ga_military)
@suppress_all(gg_military)
Suppresses warnings of
defensebuild_gg(1, shuttle)
defenseuse_gg(1, shuttle)
defensebuild_ga(1, shuttle)
defenseuse_ga(1, shuttle)
having no ground weapon
Or if you only want to suppress the warning for a specific line, @suppress_next_line(ga_military)
It doesn't work when translated from ASC3(which I agree is stupid, should probably work with @suppress_next_line %1 formatting), you need to add it manually or readd it from commented out. It also doesn't save between compilings, but it doesn't give any warnings - except maybe if P_Q broke it with a new version, I wouldn't know, I'm only using neiv's fork
Post has been edited 1 time(s), last time on Apr 19 2019, 5:17 pm by Nekron.
Thanks. Would be nice for a blanket suppression of everything, like supress_all(all) (which is redundant but w/e).
Any idea on if/when the dialog file .BIN editor is going to be updated with Remastered support?
... or any other utility to edit those that I can use in the meantime...
Trial and error... mostly error.
Not aware of any tools that support SCR UI edits. pq hasn't updated PyMS since January according to github. You'll have to play the waiting game until an interested tooldev researches the new format or move to 1161.
Well that can keep in my case, if I get to editing the UI it'll be among the last things I do before release. It's kinda counterproductive anyway to divert attention to minor things while there are missions to be made.
Last I checked, the format has already been researched and it hasn't changed a great deal. It's just that it hasn't been implemented.
Switching to 1.16 is kind of tempting for a couple of reasons but I'll probably keep the project the way it is. Unless - God forbid! - Blizzard reverses course and invalidates everything we're doing at one point through some "protective measure".
Trial and error... mostly error.
PyMS and ProTRG developer
I should have some time to take a look at supporting them (if I recall what FaRTy has said, it should be a fairly quick update). But I currently only have access to a Mac, CASC stuff is not working for me on it, and I don't have the time to figure that out, so if someone can PM me a bunch (or all if possible) remastered dialog .bin files, I can take a look.
I've used this quickly hacked pyms file (Libs/DialogBIN.py) to read SCR dialogs, though it may lose data when saving as it ignores the additional field that doesn't exist in 1.16.1.
https://gist.github.com/neivv/06a9942ae3e711e79159c82a6be156bdNote that using it makes PyBIN unable to read 1.16.1 dialogs.
--
Format changes were that there were 2 (usually?) zero bytes inserted at offset 0x20 for each widget, and a new widget type which is managed by the embedded chromium renderer.
None.