works
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.DS_Store
|
||||
2
Makefile
Normal file
2
Makefile
Normal file
@@ -0,0 +1,2 @@
|
||||
def:
|
||||
c++ -fPIC -shared qjs_steam.cpp -Isdk/public -I../cell/source -Lsdk/redistributable_bin/osx -lsteam_api -lcell -o steam.dylib
|
||||
@@ -1,9 +1,6 @@
|
||||
#ifndef NSTEAM
|
||||
|
||||
// Include C headers first to get types
|
||||
#include "qjs_steam.h"
|
||||
#include "cell.h"
|
||||
#include "jsffi.h"
|
||||
#include "qjs_blob.h"
|
||||
|
||||
// C++ headers
|
||||
#include <steam/steam_api.h>
|
||||
@@ -3255,11 +3252,4 @@ JSValue js_steam_use(JSContext *js) {
|
||||
return steam;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
#else
|
||||
// Stub when Steam is disabled
|
||||
extern "C" JSValue js_steam_use(JSContext *js) {
|
||||
return JS_NULL;
|
||||
}
|
||||
#endif
|
||||
} // extern "C"
|
||||
16
qjs_steam.h
16
qjs_steam.h
@@ -1,16 +0,0 @@
|
||||
#ifndef QJS_STEAM_H
|
||||
#define QJS_STEAM_H
|
||||
|
||||
#include "cell.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
JSValue js_steam_use(JSContext *js);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // QJS_STEAM_H
|
||||
1
steam_appid.txt
Normal file
1
steam_appid.txt
Normal file
@@ -0,0 +1 @@
|
||||
480
|
||||
117
tests/steam.ce
Normal file
117
tests/steam.ce
Normal file
@@ -0,0 +1,117 @@
|
||||
var steam = use('steam')
|
||||
|
||||
log.console("STEAM!")
|
||||
|
||||
// Test Steam functionality
|
||||
if (steam && steam.user) {
|
||||
var isLoggedOn = steam.user.logged_on()
|
||||
log.console("Steam user logged on:", isLoggedOn)
|
||||
if (isLoggedOn) {
|
||||
var userName = steam.friends.name()
|
||||
var steamId = steam.user.steam_id()
|
||||
var appId = steam.app.id()
|
||||
log.console("Steam user name: '" + userName + "'")
|
||||
log.console("Steam user ID: '" + steamId.toString() + "'")
|
||||
log.console("Steam app ID: " + appId.toString())
|
||||
|
||||
// Request user stats for achievements
|
||||
steam.stats.request()
|
||||
|
||||
// Display online friends
|
||||
log.console("\n=== ONLINE FRIENDS ===")
|
||||
var friendCount = steam.friends.count(1) // EFriendFlagImmediate = 1
|
||||
if (friendCount > 0) {
|
||||
for (var i = 0; i < friendCount; i++) {
|
||||
var friend = steam.friends.get_friend(i, 1)
|
||||
if (friend) {
|
||||
var friendName = steam.friends.get_friend_persona_name(friend)
|
||||
var friendState = steam.friends.get_friend_persona_state(friend)
|
||||
// Only show online friends (state > 0)
|
||||
if (friendState > 0) {
|
||||
var stateNames = ["Offline", "Online", "Busy", "Away", "Snooze", "Looking to Trade", "Looking to Play"]
|
||||
var stateName = stateNames[friendState] || "Unknown"
|
||||
log.console(" " + friendName + " - " + stateName)
|
||||
|
||||
// Check if friend is playing a game
|
||||
var gameInfo = steam.friends.get_friend_game_played(friend)
|
||||
if (gameInfo && gameInfo.game_id) {
|
||||
var gameName = steam.friends.get_friend_rich_presence(friend, "steam_display")
|
||||
if (gameName) {
|
||||
log.console(" Playing: " + gameName)
|
||||
} else {
|
||||
log.console(" Playing game ID: " + gameInfo.game_id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.console(" No friends found or friends list not loaded yet")
|
||||
}
|
||||
|
||||
// Display achievement information
|
||||
log.console("\n=== ACHIEVEMENTS ===")
|
||||
var achievementCount = steam.achievement.count()
|
||||
if (achievementCount > 0) {
|
||||
log.console("Total achievements: " + achievementCount)
|
||||
|
||||
for (var i = 0; i < achievementCount; i++) {
|
||||
var achName = steam.achievement.name(i)
|
||||
if (achName) {
|
||||
var achieved = steam.achievement.get(achName)
|
||||
var displayName = steam.achievement.get_display_attribute(achName, "name")
|
||||
var description = steam.achievement.get_display_attribute(achName, "desc")
|
||||
|
||||
if (achieved) {
|
||||
var unlockInfo = steam.achievement.get_and_unlock_time(achName)
|
||||
if (unlockInfo) {
|
||||
var unlockDate = new Date(unlockInfo.unlock_time * 1000)
|
||||
log.console(" ✓ " + (displayName || achName) + " - Unlocked " + unlockDate.toLocaleDateString())
|
||||
} else {
|
||||
log.console(" ✓ " + (displayName || achName) + " - Unlocked")
|
||||
}
|
||||
} else {
|
||||
// Check for progress on this achievement
|
||||
var progressInt = steam.achievement.get_progress_limits_int(achName)
|
||||
var progressFloat = steam.achievement.get_progress_limits_float(achName)
|
||||
|
||||
var progressText = ""
|
||||
if (progressInt && progressInt.max_progress > 0) {
|
||||
progressText = " (Progress: " + progressInt.min_progress + "/" + progressInt.max_progress + ")"
|
||||
} else if (progressFloat && progressFloat.max_progress > 0) {
|
||||
progressText = " (Progress: " + progressFloat.min_progress.toFixed(1) + "/" + progressFloat.max_progress.toFixed(1) + ")"
|
||||
}
|
||||
|
||||
log.console(" ✗ " + (displayName || achName) + progressText)
|
||||
if (description) {
|
||||
log.console(" " + description)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Show global achievement stats if available
|
||||
steam.stats.request_global_achievement_percentages()
|
||||
|
||||
// Get most achieved achievement info
|
||||
var mostAchieved = steam.achievement.get_most_achieved_info()
|
||||
if (mostAchieved) {
|
||||
log.console("\nMost achieved: " + mostAchieved.name + " (" + mostAchieved.percent.toFixed(1) + "% of players)")
|
||||
}
|
||||
} else {
|
||||
log.console("No achievements found for this game")
|
||||
}
|
||||
|
||||
// Display user phone/security status
|
||||
log.console("\n=== ACCOUNT SECURITY ===")
|
||||
log.console("Phone verified: " + steam.user.is_phone_verified())
|
||||
log.console("Two-factor enabled: " + steam.user.is_two_factor_enabled())
|
||||
log.console("Behind NAT: " + steam.user.is_behind_nat())
|
||||
|
||||
// Display user level and badge info if available
|
||||
var userLevel = steam.user.level()
|
||||
if (userLevel > 0) {
|
||||
log.console("Steam level: " + userLevel)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user