Zum Inhalt springen

Creating Custom Blocks for RNG Games

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

💡 Having trouble with Scratch block assembly? Don’t know how to implement code logic? 🚀 Get Help Now

RG

RandomGameDev

Posted on January 22, 2024 • Intermediate

🎲 Need help with custom blocks for RNG game

Hey everyone! I’m working on a random number generator game and I need to use custom blocks (define blocks) to handle the probability system. Here’s what I’m trying to achieve:

  • Create a custom block that handles random costume selection
  • Set up probability weights for different costumes
  • Make the system reusable across different sprites

I’m particularly stuck on how to connect the costume names with their probability values. Any guidance would be really helpful! 🙏

CB

CustomBlockExpert

Replied 3 hours later • ⭐ Best Answer

Great question @RandomGameDev! Custom blocks are perfect for RNG systems. Here’s a comprehensive solution for your probability-based costume system:

🔧 Step 1: Create the Main RNG Custom Block

First, create a custom block called RNG Roll with these parameters:

    define RNG Roll
set [random number v] to (pick random (1) to (100))
if <(random number) < [31]> then
switch costume to [common item v]
set [rarity v] to [Common]
else
if <(random number) < [61]> then
switch costume to [uncommon item v]
set [rarity v] to [Uncommon]
else
if <(random number) < [86]> then
switch costume to [rare item v]
set [rarity v] to [Rare]
else
if <(random number) < [96]> then
switch costume to [epic item v]
set [rarity v] to [Epic]
else
switch costume to [legendary item v]
set [rarity v] to [Legendary]
end
end
end
end
broadcast [item rolled v]
  

🎨 Step 2: Advanced Weighted System

For more complex probability control, create a weighted system:

    define Setup Probability Table
delete all of [costume names v]
delete all of [weights v]

// Add items with their weights
add [common-sword] to [costume names v]
add [30] to [weights v]

add [rare-shield] to [costume names v]
add [15] to [weights v]

add [epic-bow] to [costume names v]
add [8] to [weights v]

add [legendary-staff] to [costume names v]
add [2] to [weights v]

set [total weight v] to [55]
  

🎲 Step 3: Weighted Random Selection

Create a custom block for weighted selection:

    define Weighted Random Roll
set [roll v] to (pick random (1) to (total weight))
set [current weight v] to [0]
set [index v] to [1]

repeat (length of [costume names v])
change [current weight v] by (item (index) of [weights v])
if <(roll) ≤ (current weight)> then
switch costume to (item (index) of [costume names v])
set [selected item v] to (item (index) of [costume names v])
stop [this script v]
end
change [index v] by [1]
end
  

📊 Step 4: Dynamic Probability Adjustment

Create a system that adjusts probabilities based on previous rolls:

    define Adjust Luck (item rarity)
if <(item rarity) = [Legendary]> then
set [luck modifier v] to [0]
else
if <(item rarity) = [Epic]> then
change [luck modifier v] by [-5]
else
change [luck modifier v] by [1]
end
end

// Cap the luck modifier
if <(luck modifier) > [50]> then
set [luck modifier v] to [50]
end
  

🎮 Step 5: Complete Implementation

Put it all together in your main game loop:

    when flag clicked
Setup Probability Table
set [luck modifier v] to [0]

when [space v] key pressed
Weighted Random Roll
Adjust Luck (selected item)
play sound [roll sound v]
wait [0.5] seconds
broadcast [show result v]
  

✨ Step 6: Visual Feedback System

Add visual effects for different rarities:

    when I receive [show result v]
if <(selected item) contains [legendary]> then
set [color v] effect to [25]
repeat [10]
change [brightness v] effect by [10]
wait [0.1] seconds
change [brightness v] effect by [-10]
wait [0.1] seconds
end
clear graphic effects
else
if <(selected item) contains [epic]> then
set [color v] effect to [50]
repeat [5]
turn right [15] degrees
wait [0.1] seconds
end
point in direction [90]
clear graphic effects
end
end
  

Pro Tips:

  • 🎯 Use lists to store costume names and weights for easy modification
  • 🔄 Implement pity systems to guarantee rare items after many attempts
  • 📈 Add statistics tracking to show drop rates to players
  • 🎨 Create different visual effects for each rarity tier
  • 🔊 Use different sound effects for different rarities

This system gives you complete control over probabilities and makes it easy to add new items or adjust drop rates! 🎉

RG

RandomGameDev

Replied 45 minutes later

@CustomBlockExpert This is absolutely incredible! 🤩 The weighted system is exactly what I needed!

I implemented the basic version and it works perfectly. Quick question - how do I make sure the same item doesn’t appear multiple times in a row?

AD

AdvancedDeveloper

Replied 1 hour later

@RandomGameDev Great question! Here’s how to prevent consecutive duplicates:

    define Weighted Random Roll (no duplicates)
set [attempts v] to [0]
repeat until <not <(selected item) = (last item)>>
// Your weighted random code here
change [attempts v] by [1]
if <(attempts) > [10]> then
// Force a different item if stuck
stop [this script v]
end
end
set [last item v] to (selected item)
  

This ensures variety while preventing infinite loops! 🔄

VB

Vibelf_Community

Pinned Message • Moderator

🎲 Master Advanced RNG Systems

Excellent discussion on custom blocks and probability systems! For those ready to create even more sophisticated RNG mechanics, explore:

  • 🎯 Multi-tier gacha systems
  • 📊 Statistical analysis tools
  • 🔄 Dynamic probability adjustment
  • 🎁 Seasonal event systems

📚 Related Topics

Ready to build professional-grade RNG systems? Get expert guidance from our specialized tutors!