This commit is contained in:
Ggafrik 2025-06-29 10:35:00 +08:00
parent 08c59ca1d4
commit 9fced65142
17 changed files with 395 additions and 1 deletions

110
.cursorrules Normal file
View File

@ -0,0 +1,110 @@
You are an expert in Luau programming, with deep knowledge of its unique features and common use cases in roblox game development and embedded systems.
Key Principles
- Write clear, concise Lua code that follows idiomatic patterns
- Leverage Lua's dynamic typing while maintaining code clarity
- Use proper error handling and coroutines effectively
- Follow consistent naming conventions and code organization
- Optimize for performance while maintaining readability
Lua-Specific Guidelines
- Use local variables whenever possible for better performance
- Utilize Lua's table features effectively for data structures
- Implement proper error handling using pcall/xpcall
- Use metatables and metamethods appropriately
- Follow Lua's 1-based indexing convention consistently
Naming Conventions
- Use snake_case for variables and functions
- Use PascalCase for classes/modules
- Use UPPERCASE for constants
- Prefix private functions/variables with underscore
- Use descriptive names that reflect purpose
Code Organization
- Group related functions into modules
- Use local functions for module-private implementations
- Organize code into logical sections with comments
- Keep files focused and manageable in size
- Use require() for module dependencies
Error Handling
- Use pcall/xpcall for protected calls
- Implement proper error messages and stack traces
- Handle nil values explicitly
- Use assert() for preconditions
- Implement error logging when appropriate
Performance Optimization
- Use local variables for frequently accessed values
- Avoid global variables when possible
- Pre-allocate tables when size is known
- Use table.concat() for string concatenation
- Minimize table creation in loops
Memory Management
- Implement proper cleanup for resources
- Use weak tables when appropriate
- Avoid circular references
- Clear references when no longer needed
- Monitor memory usage in long-running applications
Testing
- Write unit tests for critical functions
- Use assertion statements for validation
- Test edge cases and error conditions
- Implement integration tests when needed
- Use profiling tools to identify bottlenecks
Documentation
- Use clear, concise comments
- Document function parameters and return values
- Explain complex algorithms and logic
- Maintain API documentation
- Include usage examples for public interfaces
Best Practices
- Initialize variables before use
- Use proper scope management
- Implement proper garbage collection practices
- Follow consistent formatting
- Use appropriate data structures
Security Considerations
- Validate all input data
- Sanitize user-provided strings
- Implement proper access controls
- Avoid using loadstring when possible
- Handle sensitive data appropriately
Common Patterns
- Implement proper module patterns
- Use factory functions for object creation
- Implement proper inheritance patterns
- Use coroutines for concurrent operations
- Implement proper event handling
Game Development Specific
- Use proper game loop structure
- Implement efficient collision detection
- Manage game state effectively
- Optimize render operations
- Handle input processing efficiently
Debugging
- Use proper debugging tools
- Implement logging systems
- Use print statements strategically
- Monitor performance metrics
- Implement error reporting
Code Review Guidelines
- Check for proper error handling
- Verify performance considerations
- Ensure proper memory management
- Validate security measures
- Confirm documentation completeness
Remember to always refer to the official Lua documentation and relevant framework documentation for specific implementation details and best practices.

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
# Project place file
/rbxPlanetSteroids.rbxlx
# Roblox Studio lock files
/*.rbxlx.lock
/*.rbxl.lock

7
aftman.toml Normal file
View File

@ -0,0 +1,7 @@
# This file lists tools managed by Aftman, a cross-platform toolchain manager.
# For more information, see https://github.com/LPGhatguy/aftman
# To add a new tool, add an entry to this table.
[tools]
rojo = "rojo-rbx/rojo@7.4.4"
# rojo = "rojo-rbx/rojo@6.2.0"

38
default.project.json Normal file
View File

@ -0,0 +1,38 @@
{
"name": "rbxPlanetSteroids",
"tree": {
"$className": "DataModel",
"ServerScriptService": {
"$className": "ServerScriptService",
"$path": "src/Server"
},
"StarterPlayer": {
"$className": "StarterPlayer",
"StarterCharacterScripts": {
"$className": "StarterCharacterScripts",
"$path": "src/CharacterScripts"
},
"StarterPlayerScripts": {
"$className": "StarterPlayerScripts",
"$path": "src/StarterPlayerScripts"
}
},
"ServerStorage": {
"$className": "ServerStorage",
"$path": "src/ServerStorage"
},
"ReplicatedStorage": {
"$className": "ReplicatedStorage",
"Data": {
"$path": "src/ReplicatedStorage/Data"
},
"Tools": {
"$path": "src/ReplicatedStorage/Tools"
}
}
}
}

View File

@ -1 +1,17 @@
测试
# rbxPlanetSteroids
Generated by [Rojo](https://github.com/rojo-rbx/rojo) 7.4.4.
## Getting Started
To build the place from scratch, use:
```bash
rojo build -o "rbxPlanetSteroids.rbxlx"
```
Next, open `rbxPlanetSteroids.rbxlx` in Roblox Studio and start the Rojo server:
```bash
rojo serve
```
For more help, check out [the Rojo documentation](https://rojo.space/docs).

View File

@ -0,0 +1,29 @@
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- 等待玩家加载完成
player:WaitForChild("GetPlayerData")
-- 获取玩家数据的函数
local function getPlayerData()
local getDataEvent = player:WaitForChild("GetPlayerData")
getDataEvent:FireServer()
return getDataEvent.OnClientEvent:Wait()
end
-- 示例:获取并显示玩家数据
local function displayPlayerData()
local data = getPlayerData()
if data then
print("Player Data:")
print("Score:", data.score)
print("Level:", data.level)
print("Lives:", data.lives)
end
end
-- 定期更新显示每30秒
while true do
displayPlayerData()
task.wait(30)
end

View File

@ -0,0 +1,15 @@
local AttributesData = {}
AttributesData.Data = {
"Muscle",
"Energy",
"Charm",
"Intelligence",
}
AttributesData.MaxLimit = {
"Energy"
}
return AttributesData

View File

@ -0,0 +1,10 @@
local BuffsData = {}
BuffsData.Data = {
[301] = { name = "Speed Up" },
[302] = { name = "Shield" },
[303] = { name = "Double XP" },
-- ...
}
return BuffsData

View File

@ -0,0 +1,14 @@
local EquipmentsData = {}
EquipmentsData.Data = {
[1] = {
name = "T-shirt",
type = "Clothing",
attributes = {
Muscle = 10,
Energy = 5,
}
}
}
return EquipmentsData

View File

@ -0,0 +1,54 @@
local HumanData = {}
HumanData.Data = {
[1] = {
name = "Alice",
tags = {101, 102},
relations = {201, 202},
buffs = {301},
equipment = {
car = 401,
house = 402,
clothes = 403,
},
stats = {
health = 100,
strength = 50,
intelligence = 80,
}
},
[2] = {
name = "Bob",
tags = {103},
relations = {203},
buffs = {},
equipment = {
car = nil,
house = 404,
clothes = 405,
},
stats = {
health = 90,
strength = 60,
intelligence = 70,
}
},
[3] = {
name = "Charlie",
tags = {},
relations = {},
buffs = {302, 303},
equipment = {
car = 406,
house = nil,
clothes = nil,
},
stats = {
health = 120,
strength = 40,
intelligence = 60,
}
}
}
return HumanData

View File

@ -0,0 +1,17 @@
local ItemData = {}
ItemData.Data = {
[1] = {
name = "Health Potion",
count = 3,
consume_on_use = true,
},
[2] = {
name = "Magic Scroll",
count = 1,
consume_on_use = false,
},
-- 可继续添加更多物品
}
return ItemData

View File

@ -0,0 +1,10 @@
local RelationsData = {}
RelationsData.Data = {
[201] = { name = "Friend" },
[202] = { name = "Enemy" },
[203] = { name = "Mentor" },
-- ...
}
return RelationsData

View File

@ -0,0 +1,9 @@
local TagsData = {}
TagsData.Data = {
[101] = { name = "Brave" },
[102] = { name = "Smart" },
[103] = { name = "Strong" },
}
return TagsData

View File

@ -0,0 +1,14 @@
local Handles = {}
-- 检查值是否存在于表中
function Handles:valueExistsInTable(tab, value)
for _, v in pairs(tab) do
if v == value then
return true
end
end
return false
end
return Handles

View File

@ -0,0 +1,13 @@
-- if not script.Parent:IsA("Frame") then return end
-- local Players = game:GetService("Players")
-- local player = Players.LocalPlayer
-- local TB_StartGame = script.Parent.TB_StartGame
-- local Folder_Events = player:WaitForChild("PlayerState_Events")
-- local RE_ChangePlayerState = Folder_Events:WaitForChild("RE_ChangePlayerState")
-- TB_StartGame.MouseButton1Click:Connect(function()
-- RE_ChangePlayerState:FireServer("gameplay")
-- end)

View File

@ -0,0 +1,32 @@
local function load_bil_gui()
local player = game.Players.LocalPlayer
local gui = player:WaitForChild("PlayerGui")
local bil_gui = game.StarterPlayer.StarterPlayerScripts.BilGui -- BilGui 是一个文件夹
print("加载bilgui开始")
-- 将 BilGui 加载到指定的 UI 预制体中
for _, folder in ipairs(bil_gui:GetChildren()) do
if folder:IsA("Folder") then
local target_ui = gui:WaitForChild(folder.Name)
if target_ui then
for _, script in ipairs(folder:GetChildren()) do
if script:IsA("LocalScript") then
local target_frame = target_ui:WaitForChild(script.Name) -- 找对应脚本名字的frame
if target_frame then
local script_clone = script:Clone()
script_clone.Parent = target_frame
print("加载成功: " .. script.Name)
else
warn("目标 Frame 未找到: " .. script.Name)
end
end
end
else
warn("目标 UI 预制体未找到: " .. script.Name)
end
end
end
print("加载bilgui结束")
end
load_bil_gui()