philippj/SteamworksPy

[LINUX] Really weird behaviour of callbacks

Def-Try opened this issue · 0 comments

so, my code is this:

from steamworks import STEAMWORKS, EWorkshopFileType
sw = STEAMWORKS() 
sw.initialize()

from time import sleep

_IID = -1
IID = -1

def _cb_create(item):
	global _IID, IID
	_IID = item.publishedFileId
	IID = _IID
	#IID = _IID & 0b0000011111111111111111111111111111111111111111111111111111111111
	print(item.result, item.publishedFileId, IID, item.userNeedsToAcceptWorkshopLegalAgreement)

def _cb_update(item):
	global _IID, IID
	_IID = item.publishedFileId
	IID = _IID
	#IID = _IID & 0b0000011111111111111111111111111111111111111111111111111111111111
	print(item.result, item.publishedFileId, IID, item.userNeedsToAcceptWorkshopLegalAgreement)

callbacks = {
	"create": _cb_create,
	"update": _cb_update
}

def update(sw, iid, note=None, title=None, desc=None, preview=None, content=None):
	print(f"ItemID {iid}")
	if iid == -1 or iid == 0:
		print("Invalid itemID, aborting")
		return
	print("Starting Item update")
	iuh = sw.Workshop.StartItemUpdate(4000, iid)
	print(f"ItemUpdateHandle {iuh}")
	print("Updating info")
	sw.Workshop.SetItemTitle(iuh, title or "Title")
	sw.Workshop.SetItemDescription(iuh, desc or "Description")
	if preview:
		print("Uploading preview")
		sw.Workshop.SetItemPreview(iuh, preview)
	if content:
		print("Uploading content")
		sw.Workshop.SetItemContent(iuh, content)
	print("Submitting")
	sw.Workshop.SubmitItemUpdate(iuh, note or "No update info provided", callbacks['update'], True)
	sleep(1)
	for _ in range(10):
		sw.run_callbacks()
		sleep(0.1)


sw.Workshop.CreateItem(4000, EWorkshopFileType.COMMUNITY, callbacks['create'], True)
sleep(1)
for _ in range(10):
	sw.run_callbacks()
	sleep(0.1)

update(sw, IID, "update note", "addon title", "addon description")

and it outputs this:

[S_API] SteamAPI_Init(): Loaded '/home/googer/.local/share/Steam/linux64/steamclient.so' OK.
Setting breakpad minidump AppID = 4000
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198971792706 [API loaded no]
1 952283722281910272 952283722281910272 False
ItemID 952283722281910272
Starting Item update
ItemUpdateHandle 8213354041600338912
Updating info
Submitting
9 952283722281910272 952283722281910272 False

code thinks that itemid is 952283722281910272, but really, it is 3032959564.
probably bit shifts i thought, but...

>>> a = 952283722281910272
>>> f"{a:064b}"
'0000110100110111001100010000000000000000000000000000000000000000'
>>> a = 3032959564
>>> f"{a:064b}"
'0000000000000000000000000000000010110100110001110100101001001100'

i built library by myself, libsteam_api.so taken from steamworks v147. attaching both SteamworksPy.so, libsteam_api.so below.
libraries.zip