| 赞 | 49 |
| VIP | |
| 好人卡 | |
| 积分 | 85 |
| 经验 | |
| 最后登录 | 2026-2-12 |
| 在线时间 | 403 小时 |
- 梦石
- 5
- 星屑
- 3525
- 在线时间
- 403 小时
- 注册时间
- 2016-6-25
- 回帖
- 217
|
悬赏100星屑已解决
Steam API用的是
https://rpg.blue/thread-396612-1-1.html
这个帖子的,ruby的Steam API接口,亲测里面的每一个函数都可以成功调用
于是我往里面加了若干个新的API调用函数
第一个函数“寻找或创建排行榜”成功执行了
但是第二个函数“上传玩家分数”
https://partner.steamgames.com/d ... oadLeaderboardScore
总是无法成功调用
以下是代码
[pre lang="ruby"]# 寻找或创建排行榜 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')
###############################################################
#
###############################################################[/pre]
文献中写到这个函数需要传入第一个函数回调的排行榜句柄
但是我查阅了文献
我觉得它应该是个uint64,但是文档却在暗示它是个带两个成员的指针
恋野迷踪_零教授Prof.Zero(854923362) 5:10:21
然后这个函数要这个指针的第一个成员
恋野迷踪_零教授Prof.Zero(854923362) 5:10:44
我每次都能拿到一个不一样的int64,非常神奇,我觉得这肯定不是正确的句柄,所以每次传给第二个函数都毫无反应
然后我就把回调从L改成了P
但是这样则会导致进程崩掉
一时间无从下手 |
最佳答案
查看完整内容
来看看这个:https://rpg.blue/thread-491526-1-1.html
|