Emotion Tycoon – Arbeitsvereinbarung und Playbook
Verwende dies immer, wenn der Benutzer Emotion Tycoon, seine Bäume, Arbeiter, Auswerfer, Boosts, Events, Stockwerke, Speicherplätze, Spielpässe, Überfälle, Codes, das Admin-Panel erwähnt oder Symbole, Partikel, UI, Modelle, Thumbnails oder ein Promo-Video dafür anfordert – selbst wenn er nur ein Symptom beschreibt („Der Baum steckt fest“, „Partikel sehen klein aus“, „Ich habe $0 und bin festgefahren“).
Der Benutzer ist ein Solo-Roblox-Entwickler (Gruppe „Squashed Studios“, ID 706695552), der einen Großteil der Kunst selbst zeichnet und wählerisch ist, wenn etwas nach „vibecoded“ oder KI-generiert aussieht. Alles unten stammt aus seinen eigenen Korrekturen; behandle es als seinen Hausstil, nicht als Vorschlag. Er sendet oft lange sprachgetippte Batches von Anfragen: Wandle jeden Batch in eine Aufgabenliste um, erledige zuerst die schnellen Bugs und beantworte jeden Punkt im Abschlussbericht (einschließlich derer, die du abgelehnt hast).
Die stehenden Regeln des Benutzers
- Respektiere seine Änderungen. Überschreibe niemals manuelle Modell-/UI-Änderungen des Benutzers. Lies vor dem Schreiben.
- Keine KI-aussehende UI. Keine Text-Tags/Chips/Abzeichen („PASS“, „NEU“, „HEISS“), keine glänzenden Gradienten-Pills auf Dingen, keine Symbole, die Textfelder überlappen, keine einfachen schwebenden Textzeilen, die Dinge erklären. Unterscheide Dinge durch Layout, Umriss-Stil, Farbe oder Gruppierung.
- Neue Fenster: klone ein Fenster, das der Benutzer bereits genehmigt hat (
HUD.FriendModalZwei-Spalten-Layout,RebirthModal,OfflineModal) und tausche seinen Inhalt aus, anstatt eines von Grund auf neu zu erstellen. Ein von Grund auf neu erstelltes Fenster wurde als „sichtbar mit KI gemacht“ abgelehnt. Textfelder = versenkte weiße Box mit dem dunklen 3px-Umriss, dunkler Text. - Zahlen, die der Spieler besitzt, sehen aus wie die Geldleiste. Z.B. Raid-Tokens = ein Klon von
HUD.Cashdaneben mit dem Token-Symbol, Hover (PC) / Tippen (Handy) für einen Tooltip. Sorge immer dafür, dass Hover-Info auf Mobilgeräten funktioniert (Tippen schaltet um). - Echte Stud-Textur für UI-Hintergründe:
rbxassetid://100839690373358(niemals eine prozedurale). - Verwende zuerst ihre handgefertigten Assets (IDs unten). Generiere keine Ersatzteile, wenn eines von ihnen existiert.
- Beende jede Antwort, die visuelle Elemente hinzufügt, mit einer kurzen Liste von Assets, die sie zeichnen könnten, um Platzhalter zu ersetzen.
- Robux-Glyphe ist das Private-Use-Zeichen
U+E002. - Halluziniere nicht. Suche im Web / lies den Code, wenn du dir bei einer API oder ID unsicher bist.
- Öffne kein zweites Roblox Studio. Computerbenutzung ist nur für Dinge, die MCP nicht kann (FBX-Import, Game Bar).
- Speichere niemals ihre .blend (
C:\Users\cosul\Desktop\models_for_roblox\RobloxTycoon.blend); erinnere sie an Strg+S. - 3D-Modelle in Blender: modifier-basiert, sauberes Low-Poly, flach schattiert; Ausrüstung im
/roblox-r6-armorKit-Stil. - Keine täglichen Belohnungen (sie bevorzugen Offline/AFK-Verdienste). Behalte überall „?“-Mystery-Hexes – wenn ein „?“ zu einem echten Knoten wird, füge neue „?“-Hexes dahinter hinzu.
- Entschieden / abgelehnt (nicht erneut vorschlagen): Basisschutz, Überspringen der Wiedergeburt, „Alle verbessern“ (nur ein Max-Button pro NPC), ein Kosmetik-Shop, ein Trophäen-Baum (Raid-Tokens bleiben; verdient durch tägliche Top 3 bei Wiedergeburt + alle 5 Wiedergeburt). Wettermaschine = genau 1 pro Grundstück. Synergie-Tutorial: auf Eis, bis sie fragen.
- Lass den Spieler niemals in einer Sackgasse stecken. Jede Änderung an Kosten/Bäumen/Wiedergeburt muss einen Pfad zu einer funktionierenden Linie erhalten (Main hat
lineCost+rescue-Aufladung und einen Cash-Tree-Wächter – halte sie funktionsfähig).
Studio MCP-Workflow
- Die Studio-ID ändert sich pro Sitzung – hole sie mit
list_roblox_studios. - Datenmodell bearbeiten ist im Play-Modus nicht verfügbar. Der Benutzer testet selbst: Prüfe
get_studio_state; während er spielt, kannst du Skripte immer noch über das Server-Datenmodell lesen (game.ServerScriptService.Main.Source). Warte auf ihn (pollen alle paar Minuten); stoppe seinen Playtest nur, wenn er minutenlang inaktiv war, und sag es ihm. Wenn er fragt „Stelle sicher, dass Dinge gespeichert sind“: Änderungen bestehen nur, wenn sie im Edit-Modus vorgenommen wurden. execute_luauin Client/Server hat seinen eigenen require-Cache:require(module)dort ist eine frische Kopie, nicht die laufende (Monkey-Patching bewirkt nichts). Erreiche den laufenden Zustand über die Remotes des Spiels (ReplicatedStorage.Remotes.Request:InvokeServer(action, ...), inkl.admin-Ops) oder Instanzen/Attribute. Um Config-Änderungen im Edit-Modus zu testen,require(Config:Clone()).- Skript-Änderungen:
ScriptEditorService:UpdateSourceAsyncviaexecute_luau, exaktes Suchen/Ersetzen mitstring.find(src, old, 1, true)und bestätige, dass der Treffer eindeutig ist. Verwende[==[ ]==]-Strings (Code enthält oft]]). - Die Startfunktion des
UI-Moduls ist am Limit von 200 lokalen Registern von Luau („Out of local registers“). Füge dort niemals neue Top-Level-Lokale hinzu: Lege neuen Zustand/Funktionen auf die gemeinsameext-Tabelle oder innerhalb vondo ... end-Blöcken. - Um einen seltenen Zustand zu testen (z.B. eine volle Linie), ändere vorübergehend eine Konfigurationskonstante im Edit-Modus, spiele dann und stelle sie zurück.
- Verifiziere durch Spieltests mit
ET_NoSave:start_stop_play,screen_capture,get_console_output.user_mouse_inputx/y sind GUI-/Bildschirmkoordinaten: für einen Weltpunkt verwendeWorldToScreenPoint(= Viewport y - 58); für UI verwendeAbsolutePosition. Screenshots werden skaliert (~0,955 des 2011px-Viewports).textInputin ein TextBox erreicht es nicht – teste stattdessen Redeem-artige Flows über das Remote. - DataStores in Studio sind die LIVE-DataStores (API-Zugriff aktiv): Alles, was du beim Testen schreibst (z.B. Test-Codes), muss danach gelöscht werden.
Spielkarte (wo was lebt)
ReplicatedStorage.Shared.Config– alle Einstellungen: Items, Employees, Perks, Materials, Events, Robux,RobuxClusters, Themes, TreePaths/TreeLayout/RebirthLayout,AURA(wer welche Kacheln bufft/debufft),CAPACITY_PERKS,MAX_LIVE_CUBES(pro Auswerfer-Linie) /MAX_PLOT_CUBES, Wettermaschinen-Funktionen (weatherChance,weatherUpgradeCost= Anteil der Verdopplung der nächsten Wiedergeburt pro Level,weatherRoll,weatherOwned), Raid-Definitionen + Tokens.ReplicatedStorage.Shared.Grid– Zellen-Mathematik (20x20 Kacheln, TILE=4). Rotation r: 0=-Z 1=+X 2=+Z 3=-X.ReplicatedStorage.Shared.VFX– Partikel-Voreinstellungen;VFX.bursterstellt einen Emitter pro Farbe.ServerScriptService.Main– Sitzungen,handlers.*für jede Remote-Aktion (inkl.batchfür Drag-Bauen,upgradeWeather,redeemCode,buyRaidToken), Wettermaschinen-Daten (data.wm,Factory.weatherHook), Rettung, Heartbeat-Schleife.pushStatekann gehalten werden (s.holdPush) während eines Batches.ServerScriptService.Server.{Factory,Plots,Shop,Events,DataService,Leaderboards,Prices,Raids,Admin,Codes}. Factory: Würfelanzahl pro Linie (session.lineCount,uncount),lineCap,LineFull-Attribut auf Auswerfern, Bucket-Blocker-Prüfung (halte es O(n), Linien können 100 Würfel halten),Factory.holdzum Batch-Neubau. Admin: Admin-onlyops(Gift online/offline/cross-server, Events, Announce, Codes). Codes: DataStoreET_Codes_v1(keycodes+uses_<CODE>), Arten cash/scaled/rp/token/boost, Daten, max. Verwendungen (0 = keine Begrenzung).StarterPlayerScripts.ClientModules.{UI,Build,Cubes,Life,Boards,Aura,Pop}– UI = HUD, Bäume, Modals, Inspect-Panel; Build = Geist, Drag/Batch-Platzieren mit durchsichtigen Platzhaltern, Rechtsklick-Halten Löschen, Bewegen; Aura = die grünen/roten/gelben Kachel-Quadrate. Admin-Panel-UI:ServerStorage.AdminGui(+AdminClient), wird nur in das PlayerGui von Admins geklont.- Baum-Canvases sind erstellte Knoten in
StarterGui.TreeGui.Window.Pan.{Canvas,RebirthCanvas,RobuxCanvas}.Nodes(Attribute Q, R, Ring, Path, Mystery). Ein neuer Knoten = benennen/konvertieren eines „?“-Knotens an dieser Zelle (Mysteryentfernen,Pathsetzen) + die ID zuConfig.TreePaths/RebirthLayouthinzufügen. Position: Cash x = 0,4654 + 0,0691q, y = 0,6062 + 0,0850r + 0,0425q; Wiedergeburt x = 0,5 + 0,1230q, y = 0,5 + 0,1300r + 0,0650q. - Studio-only Dev-Remotes:
devEvent,devCash,devRobux,devRobuxRemove,devRobuxReset,devOffline,devTutorial. Admin-Remotes (admin, op, ...) funktionieren im Studio für den Besitzer (Gift rp/cash/token an sich selbst). - Teste niemals versehentlich am echten Speicher.
workspace:SetAttribute("ET_NoSave", true)im Edit vor einem Wegwerf-Playtest, entferne es danach.
Bekannte Fallstricke (jeder hat uns einmal gebissen)
- Premium-NPC-Platzierungsfehler hinterließen „Geister“-Kacheln →
placebaut innerhalb von pcall mit Rollback; behalte dieses Muster bei. - PlayerAdded gibt nach (
Shop.checkPasses, DataStore-Ladevorgänge): Überprüfe nach jedem Yield, ob die Sitzung noch aktuell ist, sonst bekommt ein Spieler, der gegangen ist, sein Grundstück ohne Besitzer neu aufgebaut. PlayerRemoving gibt das Grundstück VOR dem Speichern frei. - Ein
UIGradientmultipliziertBackgroundColor3– ein geklonter türkiser Rahmen mit einem lila Gradienten ergibt marineblau. Setze den Hintergrund auf Weiß, wenn du durch den Gradienten umfärbst. - Die Geldleiste hat eine
BumpUIScale: alles, was von ihrer AbsoluteSize positioniert wird, muss durch diese Skala geteilt werden. - Rechte Maustaste im Build-Modus = Halten zum Löschen; Kamerabewegung ist mittlere Maustaste / WASD.
- Baum-Drag-Start muss
UIS.InputBeganverwenden (Tastendrücke erreichen niewin.InputBegan). - Boden-Themen-Texturen gehen oben auf den Boden (Texture-Instanz); ändere niemals das Material des Bodens.
- Benutzer-Partikel-Bögen sind 2x2 Flipbooks mit kleinen Formen → skaliere Größe ~2–2,5x; Mehrfarben = mehrere Emitter.
- Neu hochgeladene Texturen können eine Weile unscharf aussehen (Roblox-Verarbeitung).
- Hochstufige Auswerfer benötigen riesige Arbeit pro Stufe; schwache Linien verkaufen sich für ~$1 (leerer Würfelwert).
- Bilder:
upload_imagefunktioniert von einem lokalen http-Server (z.B.http://127.0.0.1:8765/<file>). - FBX-Pipeline: Export aus Blender mit
use_selection=True, object_types={'MESH'}, apply_unit_scale=True, mesh_smooth_type='FACE'nach%LOCALAPPDATA%\Temp\et_export\; Import durch Computerbenutzung (Asset Manager → Import → Pfad eingeben → Import), landet inworkspace.<FbxName>. Der Importer spiegelt X: platziere Teile mitCFrame.new(-x_b, z_b, y_b)aus Blender-Koordinaten. Vorschau-Renderings: temporäre „ET_Preview“-Szene → stufige Bilder. - Externe Links im Spiel sind nicht erlaubt: Discord/Gruppe gehen auf die Spielseiten-Social-Links; im Spiel nur ein
GroupService:PromptJoinAsync(groupId)„Gruppe beitreten“-Button.
Monetarisierungs-Layout (aktuell)
- Robux-Shop = getrennte Inseln, zwischen denen man schwenkt (
Config.RobuxClusters: Spielpässe, Premium-Arbeiter, Bargeld, Boosts & Events). Einen Pass hinzufügen = seine ID zu denitemseiner Insel hinzufügen + ein Hex inRobuxCanvas.Nodeshinzufügen. - Pässe vs. Produkte werden durch Insel- und Umriss-Animation unterschieden, niemals durch Labels.
- Preise werden live abgerufen (
Server.Prices→ReplicatedStorage-AttributRobuxPrices). - Pass-IDs: HypeQueen 2026442663, DiamondWorker 2026394625, PassMidas 2025590666, PassLuck 2025848628, PassDrop 2025464639, PassVIP 2026922652, GoldenRobot 2025374681, LayoutSlot3 2026652648, LayoutSlot4 2026010654, Pass2x 2027138654.
- Produkt-IDs: OfflineDouble 3717787338, BuyBlood 3717787331, BuyMeteor 3717787319, BuyThunder 3717787307, BuyGolden 3717787299, BuyRain 3717787292, Boost3x 3717787279, Boost2x 3717787271, CashVault 3717787265, CashBag 3717787258, CashPouch 3717787249, RaidPortal 3717992673, RaidSiphon 3717992684, RaidJunk 3717992698, RaidGloom 3717992711.
- Stockwerke sind kostenlose Wiedergeburt-Belohnungen, die in den Einstellungen ausgewählt werden. Factory-Speicher: 2 freie Slots, Slots 3–4 sind Pässe.
- Spieler im späten Spiel haben Sextillionen und 30+ Wiedergeburt: Preise für späte Inhalte als Anteil an
Config.rebirthCost(skaliert für immer) anstatt als feste Zahl; Codes standardmäßig „% der nächsten Wiedergeburt“ aus demselben Grund.
Die Assets des Benutzers
Symbole: moneyboost3 105474801162476, moneybag 79223369019300, goldenhour 71253971041485, thunderstorm 106415624997312, moneyvault 114456854945836, moneyboost2 88658276906960, meteor 110778083355096, rain 112383447314124, coinpouch 115820638833486, faster_hoppers 85633043652627, x2coins 100838792374750, crown 89385624200044, midas_touch 108493524899149, bloodmoon_2 79508274280864, moon2 97357609209998, hammer 89643796486723, floppydisk 127943322640811, star 119578070875725, zzz 130218032337173, frost 109343690555707, raid_token 112843349186486, weather_machine 112719886234229, conveyor_full 79879060986006 (Linie-voll-Schild), backpack_cubes 84466301181838 / crate_cubes 108346564955404 / chest_cubes 131689000211065 (Kapazitäts-Perks).
Böden: ocean_lights 138556700370722, holy 105026190310831, pink 83692624195325, pink_green 136148045549462, redx 124121848293779.
Partikel (2x2 Bögen): anger 97456853400445, happy_love 83569352224420, bolts 125645422252125, steam 115369146046246, confetti 108450399478144, swirls_sparkles 131593243447656, waterdrops 125415103859140, happy_confetti 103582469151146, money 128140468436252, music_notes 92525208060800, ice_shards 123359736235888.
workspace["Simulator Icon Pack"] (liste seine Decals für IDs auf): nützliche – Pfeil runter 17368169201, Codes 17368032566, MultiGifts 15402969720, Expand 17368183719, Click 17260727409, Rocket 16670799841, Box 17368122337, Crate 17368402884. CubePets 17368391613 ist ein HUND – verwende es niemals für Nicht-Haustier-Dinge.
Promo-Video-Rezept (vollständig automatisiert, keine Benutzereingriffe nach den ersten Genehmigungen)
- Einmalige Genehmigungen: Computer-Zugriff auf Roblox Studio + Game Bar mit System-Tastenkombinationen und Ordnerzugriff auf
~/Videos(Game Bar speichert inVideos\Captures). - Showcase-Zustand:
ET_NoSavesetzen, Play starten, dann via Request-Remote:devCash, jeden Cash-Tree-Knoten entsperren (Schleifeunlockbis kein Fortschritt mehr), Layout löschen, 4 Linien bauen (Auswerfer bei x=1 r=1, Bänder x=2..17, Verkäufer x=18; Arbeiter auf beiden Seiten zum Band ausgerichtet). Verwende Dropper2–4, sodass Würfel tatsächlich gefüllt und zu echten Zahlen verkauft werden. - Regisseur im Client:
BindToRenderStepbei Camera+5 erzwingtCameraType=Scriptableund ein_G.DirCF; Helfer für Halten/Bewegen/Orbit; HUD ScreenGuis ausblenden (nicht TreeGui). Zelle→Welt:X = -134 + 4x, Z = -96 + 4zfür Plot1. Vorschau-Rahmung mitscreen_capturevor der Aufnahme. - Aufnahme: Studio fokussieren,
win+alt+r→ Aufnahme ausführen (execute_luau, < 60 s) →win+alt+r. Stoppe natürliche Events mitdevEvent("")zwischen den Aufnahmen. Löse Events aus mitdevEvent("Thunderstorm" | "MeteorShower" | "BloodMoon" | "CashRain" | "GoldenHour" | "Frost"). Überprüfe Clips mit einem zeitgestempelten Kontaktblatt und wiederhole schlechte Aufnahmen. -
…
[abgeschnitten für Übersetzung]