赞 49
VIP 0
好人卡 0
积分 84
经验 1480
最后登录 2024-9-21
在线时间 390 小时
Lv4.逐梦者
梦石 5
星屑 3419
在线时间 390 小时
注册时间 2016-6-25
帖子 232
100 星屑
Steam API用的是
https://rpg.blue/thread-396612-1-1.html
这个帖子的,ruby的Steam API接口,亲测里面的每一个函数都可以成功调用
于是我往里面加了若干个新的API调用函数
第一个函数“寻找或创建排行榜”成功执行了
但是第二个函数“上传玩家分数”
https://partner.steamgames.com/d ... oadLeaderboardScore
总是无法成功调用
以下是代码
# 寻找或创建排行榜 ISteamUserStats::FindOrCreateLeaderboard(name, int=2, int=1)
def find_or_create_leaderboard( name)
if initted?
@@dll_SteamAPI_ISteamUserStats_FindOrCreateLeaderboard.call ( @i_user_stats, name, 2 , 1 ) #% 256 != 0
else
nil
end
end
def find_leaderboard( name)
if initted?
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard.call ( @i_user_stats, name) #% 256 != 0
else
nil
end
end
# 上传用户分数 ISteamUserStats::UploadLeaderboardScore(steamleaderboard_t, int=2, newScore)
def upload_leaderboard_score( name, score)
if initted?
handle = find_or_create_leaderboard( name)
if !handle.nil ?
p handle
#handle = handle.unpack('L')
#p handle
#handle = handle[0]
@@dll_SteamAPI_ISteamUserStats_UploadLeaderboardScore.call ( @i_user_stats,
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard.call ( @i_user_stats, name) ,
1 , score, ' ' , 0 )
else
nil
end
else
nil
end
end
#
###############################################################
# 2020.12.3 新增 零教授
###############################################################
# 排行榜功能
###############################################################
# 寻找或创建排行榜 ISteamUserStats::FindOrCreateLeaderboard(name, int=2, int=1)
@@dll_SteamAPI_ISteamUserStats_FindOrCreateLeaderboard = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_FindOrCreateLeaderboard' , 'PPII' , 'L' )
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_FindLeaderboard' , 'PP' , 'L' )
# 上传用户分数 ISteamUserStats::UploadLeaderboardScore(name, int=2, newScore)
@@dll_SteamAPI_ISteamUserStats_UploadLeaderboardScore = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_UploadLeaderboardScore' , 'PLIIPI' , 'L' )
###############################################################
#
###############################################################
# 寻找或创建排行榜 ISteamUserStats::FindOrCreateLeaderboard(name, int=2, int=1)
def find_or_create_leaderboard( name)
if initted?
@@dll_SteamAPI_ISteamUserStats_FindOrCreateLeaderboard.call ( @i_user_stats, name, 2 , 1 ) #% 256 != 0
else
nil
end
end
def find_leaderboard( name)
if initted?
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard.call ( @i_user_stats, name) #% 256 != 0
else
nil
end
end
# 上传用户分数 ISteamUserStats::UploadLeaderboardScore(steamleaderboard_t, int=2, newScore)
def upload_leaderboard_score( name, score)
if initted?
handle = find_or_create_leaderboard( name)
if !handle.nil ?
p handle
#handle = handle.unpack('L')
#p handle
#handle = handle[0]
@@dll_SteamAPI_ISteamUserStats_UploadLeaderboardScore.call ( @i_user_stats,
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard.call ( @i_user_stats, name) ,
1 , score, ' ' , 0 )
else
nil
end
else
nil
end
end
#
###############################################################
# 2020.12.3 新增 零教授
###############################################################
# 排行榜功能
###############################################################
# 寻找或创建排行榜 ISteamUserStats::FindOrCreateLeaderboard(name, int=2, int=1)
@@dll_SteamAPI_ISteamUserStats_FindOrCreateLeaderboard = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_FindOrCreateLeaderboard' , 'PPII' , 'L' )
@@dll_SteamAPI_ISteamUserStats_FindLeaderboard = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_FindLeaderboard' , 'PP' , 'L' )
# 上传用户分数 ISteamUserStats::UploadLeaderboardScore(name, int=2, newScore)
@@dll_SteamAPI_ISteamUserStats_UploadLeaderboardScore = Win32API.new ( self .steam_dll_name , 'SteamAPI_ISteamUserStats_UploadLeaderboardScore' , 'PLIIPI' , 'L' )
###############################################################
#
###############################################################
文献中写到这个函数需要传入第一个函数回调的排行榜句柄
但是我查阅了文献
我觉得它应该是个uint64,但是文档却在暗示它是个带两个成员的指针
恋野迷踪_零教授Prof.Zero(854923362) 5:10:21
然后这个函数要这个指针的第一个成员
恋野迷踪_零教授Prof.Zero(854923362) 5:10:44
我每次都能拿到一个不一样的int64,非常神奇,我觉得这肯定不是正确的句柄,所以每次传给第二个函数都毫无反应
然后我就把回调从L改成了P
但是这样则会导致进程崩掉
一时间无从下手
最佳答案
查看完整内容
来看看这个:https://rpg.blue/thread-491526-1-1.html