function onStart()
\n Oda yüklendiğinde bir kez çağrılır. Başlatma kodu için uygundur.\n\n- function onClick()
\n Bir Şey tıklandığında çağrılır. ("passthrough" fizik türü ile uyumsuzdur.)\n\n- function onUpdate()
\n Saniyede yaklaşık 30 kez çağrılır. Kare başına mantık (örneğin, hareket, gerçek zamanlı hesaplamalar) için kullanılır.\n\n- function onCollision(other)
\n Bu Şey başka bir Şey ile çarpıştığında (other
) çağrılır.\n\n- function onButtonDown(b)
\n Bir denetleyici düğmesine ("up"
, "down"
, "left"
, "right"
, "a"
veya "b"
) basıldığında çağrılır.\n\n- function onButtonUp(b)
\n Bir denetleyici düğmesi bırakıldığında çağrılır.\n\n---\n\n### Girdi İşleme\n\nonButtonDown
/onButtonUp
(yukarıda) kullanın veya input
tablosunu kontrol edin:\n\n- input.up
/ input.down
/ input.left
/ input.right
/ input.a
/ input.b
\n Düğme basılı tutulurken true
olur.\n\n- input.upJustPressed
/ input.upJustReleased
(benzer şekilde down
, left
, right
, a
, b
için)\n Basıldığında veya bırakıldığında tam olarak bir kare için true
olur.\n\n- input.x
/ input.y
\n DPAD'in yatay/dikey durumu için [-1,1]
aralığında bir sayı.\n\n- input.natX
/ input.natZ
\n Kolay karakter hareketi için dünya alanında “doğal” bir hareket vektörü.\n\n- input.natYaw
\n DPAD yönüne karşılık gelen yaw açısı (derece cinsinden).\n\n---\n\n### Fizik Türleri\n\nŞeyler bu fizik davranışlarına sahip olabilir:\n- "kinematic"
(varsayılan) – fizik tarafından etkilenmez, ancak diğerleriyle çarpışır.\n- "upright"
– fiziksel olarak simüle edilir, dik durur.\n- "tumbly"
– tamamen fiziksel olarak simüle edilir, devrilebilir.\n- "passthrough"
– çarpışma yok.\n- "trigger"
– çarpışma yok, ancak çarpışma olaylarını yine de tetikler.\n\n---\n\n## Kategoriye Göre İşlevler/Yöntemler\n\nAşağıda her API işlevi ve parametreleri bulunmaktadır. Thing:methodName(...)
olarak belirtilen yöntemler self
üzerinde veya başka bir Şey referansı üzerinde çağrılabilir (örneğin, getThing("X"):methodName(...)
).\n\n---\n\n### ✨ Efektler\n\n1. playSound(soundFileName, loop, volume, delayBeforeStart)
\n Bir ses çalar.\n - soundFileName (string)
– sesin adı. Uzantı isteğe bağlıdır (.wav/.mp3
).\n - loop (boolean, optional)
– varsayılan false
.\n - volume (number, optional)
– [0..1]
aralığında.\n - delayBeforeStart (number, optional)
– çalmadan önce beklemek için saniye.\n\n2. playSoundWithPitch(soundFileName, pitch, volume)
\n playSound
ile aynı, ancak yarım ton olarak bir perde kayması ile.\n - pitch (number)
– normalin üzerinde (pozitif) veya altında (negatif) yarım tonlar.\n\n3. setSoundVolume(soundFileName, volume)
\n Şu anda çalmakta olan bir sesin ses seviyesini değiştirir. Gelecekteki çalmaları etkilemez.\n\n4. stopSound(soundFileName)
\n Şu anda çalmakta olan bir sesi durdurur.\n\n5. explode(x, y, z, radius, force)
\n (x,y,z)
konumunda isteğe bağlı radius
ve force
ile bir fizik patlama kuvveti uygular.\n\n6. Thing:particles(particlesName, options)
\n Bir parçacık efekti başlatır (örneğin, "explosion"
, "smoke"
, "rain"
, vb.). Durdurmak için bir ID döndürür.\n - options (table, optional)
– ofsetler, renk, süre vb. belirtebilir.\n\n7. Thing:stopParticles(particlesId)
\n Bu Şey üzerindeki daha önce başlatılmış bir parçacık efektini durdurur. particlesId
'yi atlayarak tümünü durdurabilirsiniz.\n\n---\n\n### 🏠 Oda\n\n1. reset()
\n Odayı orijinal durumuna sıfırlar.\n\n2. goToRoom(roomName, keepSession)
\n roomName
'e gider (örneğin, "ownerName/roomName"
).\n - keepSession (bool, optional)
– true
ise, oturum verileri odalar aynı sahibine sahipse taşınır.\n\n3. goToUser(uname)
\n Bir kullanıcının profil sayfasına gider.\n - uname
yoksa, oda sahibinin profiline gider.\n\n4. setRoomLighting(roomLightingPreset)
\n - roomLightingPreset (string)
– "BRIGHT"
, "DIM"
veya "DARK"
.\n\n5. isOwnRoom()
\n Mevcut kullanıcı bu odayı sahipleniyorsa true
, aksi takdirde false
döndürür.\n\n---\n\n### 🧠 Mantık\n\n1. wait(delayInSeconds, functionToCall)
\n functionToCall
'u delayInSeconds
bekledikten sonra çağırır.\n\n2. every(intervalInSeconds, functionToCall)
\n functionToCall
'u her intervalInSeconds
tekrarlı olarak çağırır.\n\n---\n\n### 💬 İletişim\n\n1. send(targetThing, messageName, args, delay)
\n on<MessageName>(args)
'i targetThing
üzerinde isteğe bağlı delay
ile çağırır.\n\n2. broadcast(messageName, args, delay)
\n on<MessageName>(args)
'i odadaki tüm Şeyler üzerinde isteğe bağlı delay
ile çağırır.\n\n---\n\n### 🛠️ Araçlar\n\n1. print(toPrint)
\n Hata ayıklama yazdırma; ekranda kısa bir süre için bir mesaj gösterir.\n\n2. openUrl(url)
\n url
'i yeni bir tarayıcı sekmesinde açar.\n\n3. randomPick(array)
\n array
'den rastgele bir eleman (ve indeksini) döndürür.\n\n4. unixTime()
\n Mevcut Unix zaman damgasını döndürür (1970-01-01'den bu yana saniyeler).\n\n5. dateTime(useUtc)
\n Mevcut tarih/saatini ISO dizesi olarak döndürür. useUtc
true
ise, UTC kullanılır.\n\n6. roomTime()
\n Kodun başlamasından bu yana geçen saniyeleri döndürür (her oynatma modunda sıfırlanır).\n\n7. insert(array, element)
\n element
i array
e ekler.\n\n8. insertAt(array, index, element)
\n element
i index
konumuna ekler, sonraki elemanları kaydırır.\n\n9. remove(array, index)
\n index
konumundaki elemanı (veya belirtilmezse son elemanı) kaldırır, kaldırılan elemanı döndürür.\n\n10. Thing:enterCameraMode(options)
\n Bu Şeyin bakış açısıyla bir kamera açar.\n - options (table, optional)
\n\n11. Thing:exitCameraMode()
\n Kamera modu aktifse çıkış yapar.\n\n---\n\n### 💼 Oturum\n\n1. setSessionValue(key, value)
\n Bir oturum anahtarı ayarlar. goToRoom
üzerinde keepSession
kullanılırsa kalıcıdır. Sayfa yeniden yüklendiğinde kaybolur.\n\n2. clearSessionValue(key)
\n Bir oturum anahtarını temizler.\n\n3. clearSession()
\n Tüm oturum değerlerini temizler.\n\n4. getSessionValue(key)
\n Bir oturum değerini alır (veya ayarlı değilse nil
).\n\n---\n\n### 🤖 AI\n\n1. aiCharacter(primer, userText)
\n “Hepsi bir arada” AI konuşması. Tekrarlanan çağrılar çakışırsa, ek çağrılar hiçbir şey yapmaz.\n - primer (string, optional)
– örneğin, arka plan hikayesi veya kişilik.\n - userText (string, optional)
– belirtilmezse, kullanıcıdan metin girmesi istenir.\n\n2. aiChatCreate(introText)
\n Yeni bir AI konuşması oluşturur ve bir sohbet kimliği döndürür.\n\n3. aiChat(chatId, userText, callback)
\n Kullanıcı girişini mevcut bir AI konuşmasına (chatId
ile) gönderir; callback(response)
çağırır.\n\n---\n\n### ➕ Matematik\n\n1. distance(x1,y1,z1, x2,y2,z2)
\n 3D mesafeyi döndürür.\n\n2. min(a,b)
/ max(a,b)
\n İki sayının daha küçük/büyük olanını döndürür.\n\n3. abs(x)
, floor(x)
, ceil(x)
, round(x)
\n x
üzerinde temel matematik işlemleri.\n\n4. sin(deg)
, cos(deg)
, tan(deg)
\n Derece cinsinden trigonometrik fonksiyonlar.\n\n5. random(max)
\n [1..max]
aralığında bir tamsayı döndürür.\n\n6. randomBetween(min, max)
\n [min..max]
aralığında bir tamsayı döndürür.\n\n7. randomFloat()
\n [0..1)
aralığında bir sayı döndürür.\n\n8. randomSeed(seed)
\n Tekrarlanabilir rastgele diziler için RNG tohumunu ayarlar.\n\n---\n\n### 🧵 Dizeler\n\n1. toLowercase(s)
/ toUppercase(s)
\n s
'in küçük/büyük harfli halini döndürür.\n\n2. substring(s, startIndex, endIndex)
\n s
'in alt dizisini döndürür. 1 tabanlı indeksler, dahil.\n\n3. find(s, pattern)
\n s
içinde pattern
'in başlangıç/bitiş indekslerini döndürür (veya bulunamazsa nil,nil
).\n\n4. split(s, delimiter)
\n s
'i delimiter
ile diziye böler.\n\n5. join(strings, delimiter)
\n Dizeleri delimiter
ile birleştirir.\n\n6. replaceAll(s, pattern, replacement)
\n s
içindeki pattern
'in tüm oluşumlarını replacement
ile değiştirir.\n\n---\n\n### 📷 Fotoğraf\n\n1. sharePhoto(photo)
\n Kullanıcının bir photo
nesnesini (fotoğraf çekiminden) paylaşmasına olanak tanıyan fotoğraf arayüzünü açar.\n\n2. Thing:instantPhoto(options)
\n Bu Şeyin bakış açısıyla bir fotoğraf çeker ve doğrudan paylaşım arayüzünü açar.\n - options (table, optional)
\n\n3. Thing:takePhoto(options)
\n Bu Şeyin bakış açısıyla bir fotoğraf çeker ve bir fotoğraf nesnesi döndürür.\n - options (table, optional)
\n\n---\n\n### 📔 Yorumlar\n\n1. fetchComments(callback, continuationToken)
\n Oda yorumlarını yükler. Yüklendiğinde callback(comments, token)
çağrılır.\n - Her yorum text
, author
, timestamp
, belki photo
, vb. içerir.\n - continuationToken
daha fazla sayfa yüklemek için kullanılabilir.\n\n2. promptForComment(callback)
\n Kullanıcıdan odaya bir metin yorumu istemi. Gönderildiğinde otomatik olarak gönderir.\n - Gönderimden sonra callback(comment)
çağrılır.\n\n---\n\n### 🎮 Yüksek Skorlar\n\n1. loadHighScores(callback)
\n Mevcut oda için en fazla 20 skoru yükler.\n - callback(success, scoresArray, myScoreEntry)
\n\n2. submitHighScore(score, callback)
\n Kullanıcı için yeni bir sayısal skor gönderir.\n - Kullanıcının önceki skoru daha yüksekse, değiştirilmez.\n - callback(success)
isteğe bağlıdır.\n\n3. deleteHighScore(callback)
\n Mevcut kullanıcının skorunu siler.\n - callback(success)
isteğe bağlıdır.\n\n---\n\n### 🦄 Şey (Genel Şey İşlevleri)\n\n1. getThing(thingName)
\n thingName
ile bir Şey döndürür (çiftler varsa rastgele).\n\n2. getAllThings()
\n Tüm üst düzey Şeylerin bir dizisini döndürür (çocuklar değil).\n\n3. Thing:say(msg)
\n Bir konuşma balonu gösterir.\n - msg (string veya dizi)
– veya kapatmak için nil
.\n\n4. Thing:getPosition()
/ Thing:getLocalPosition()
\n Dünya/yerel alanda (x, y, z)
döndürür.\n\n5. Thing:getRotation()
/ Thing:getLocalRotation()
\n Derece cinsinden (rx, ry, rz)
dönüşü döndürür (dünya/yerel).\n\n6. Thing:setPosition(x,y,z)
/ Thing:setLocalPosition(lx,ly,lz)
\n Pozisyonu anında ayarlar (dünya/yerel).\n\n7. Thing:setRotation(rx,ry,rz)
/ Thing:setLocalRotation(rx,ry,rz)
\n Dönüşü anında ayarlar (dünya/yerel).\n\n8. Thing:getCenter()
\n Geometrik merkez (cx,cy,cz)
döndürür.\n\n9. Thing:getName()
\n İsim dizesini döndürür.\n\n10. Thing:setTint(colorHex)
/ Thing:getTint()
\n Şeyin renk tonunu ayarlar veya alır (örneğin, "#ff0000"
).\n\n11. Thing:startMoveTo(x,y,z,duration)
\n Şeyi (x,y,z)
konumuna duration
saniye içinde yumuşakça hareket ettirir.\n\n12. Thing:stopMove()
\n Bir hareket animasyonunu durdurur (startMoveTo
veya startMoveBy
).\n\n13. Thing:setVelocity(vx,vy,vz)
\n Doğrusal hızı doğrudan ayarlar (dinamik fizik için). startMoveTo
/startMoveBy
ile uyumsuzdur.\n\n14. Thing:setSpin(vx,vy,vz)
\n Derece/saniye cinsinden açısal hızı ayarlar. Hareket animasyonlarıyla da uyumsuzdur.\n\n15. Thing:getVelocity()
/ Thing:getSpin()
\n Mevcut doğrusal/açısal hızı döndürür.\n\n16. Thing:startSpin(speed, duration, axis)
\n Seçilen eksen etrafında döndürme animasyonu.\n - speed (deg/sec)
, duration (optional)
, axis (string, default "Y")
.\n\n17. Thing:stopSpin()
\n startSpin()
animasyonunu durdurur.\n\n18. Thing:startMoveBy(dx,dy,dz,duration, space)
\n Şeyi (dx,dy,dz)
kadar duration
süresince hareket ettirir, isteğe bağlı olarak "world"
, "parent"
veya "self"
alanında.\n\n19. Thing:startBounce(amplitude, period, duration, uneven)
/ Thing:stopBounce()
\n Tekrar tekrar büyür/küçülür. Varsayılan amplitude
= 0.05
, period
= 0.5s
.\n\n20. Thing:startSway(amplitude, frequency, axis)
/ Thing:stopSway()
\n Yan yana eğilir. Varsayılanlar: amplitude=30°, frequency=0.5, axis="X".\n\n21. Thing:startSwivel(amplitude, frequency)
/ Thing:stopSwivel()
\n Y ekseni etrafında yan yana döner. Varsayılan amplitude=30°, frequency=0.5.\n\n22. Thing:startBackAndForth(dx,dy,dz, frequency, space)
/ Thing:stopBackAndForth()
\n Şeyi bir çizgi üzerinde ileri geri hareket ettirir.\n\n23. Thing:startUpAndDown(amplitude, frequency)
/ Thing:stopUpAndDown()
\n Şeyi tekrar tekrar yukarı ve aşağı hareket ettirir. Varsayılan amplitude=10, frequency=0.5.\n\n24. Thing:startTurn(angle, duration, axis)
/ Thing:stopTurn()
\n X/Y/Z ekseni etrafında angle
derece döner ve duration
süresince.\n\n25. Thing:startChangeScale(scale, duration, relative)
/ Thing:stopChangeScale()
\n Ölçeği scale
'e duration
süresince animasyonla değiştirir. Eğer relative
=true ise, mevcut ölçeği çarpar.\n\n26. Thing:startChangeGlow(glow, duration)
/ Thing:stopChangeGlow()
\n Parlaklığı yumuşak bir şekilde değiştirir (0..4)
.\n\n27. Thing:applyForce(forceX, forceY, forceZ)
\n Dinamik bir Şeye fiziksel kuvvet uygular.\n\n28. Thing:setText(text)
\n Metni ayarlar (örneğin, bir tabelada).\n\n29. Thing:setMedia(mediaName)
/ Thing:getMedia()
\n Medya (resimler vb.) ayarlar veya alır, medya yetenekli bir Şey üzerinde.\n\n30. Thing:enableLight(enable)
/ Thing:disableLight()
/ Thing:toggleLight()
\n Bir Şeyin ışık kaynağını kontrol eder.\n\n31. Thing:getCloudString(varName, defaultIfNotFound)
/ Thing:setCloudString(varName, varValue)
\n Bu Şey üzerinde kalıcı dize depolama, tüm kullanıcılar arasında zamanla paylaşılan.\n\n32. Thing:getCloudInt(varName, defaultIfNotFound)
/ Thing:setCloudInt(varName, varValue)
/ Thing:addToCloudInt(varName, delta)
\n Kalıcı tamsayı depolama. addToCloudInt
birden fazla ziyaretçi arasında atomiktir.\n\n33. Thing:setPhysicsType(physicsType)
\n Fizik türünü değiştirir: "kinematic"
, "upright"
, "tumbly"
, "passthrough"
, "trigger"
.\n\n34. Thing:isKinematic()
/ Thing:isDynamic()
/ Thing:getPhysicsType()
\n Şeyin fizik türünü kontrol eder.\n\n35. Thing:getForwardDir()
/ Thing:getRightDir()
/ Thing:getUpDir()
/ Thing:getBackDir()
/ Thing:getLeftDir()
/ Thing:getDownDir()
\n Şeyin yerel eksenlerine göre normalize edilmiş yön vektörlerini döndürür.\n\n36. Thing:setFrame(frameNo)
\n Şeyin animasyon karesini ayarlar (diğer animasyonları durdurur).\n\n37. Thing:setAnimation(animMode, fps, startFrame, endFrame, pause)
\n Animasyon oynatımını kontrol eder:\n - animMode
: "off"
, "loop"
, "pingpong"
, "shuffle"
veya "single"
.\n - fps (number, optional)
\n - startFrame/endFrame (numbers, optional; use -1 for last frame)
\n - pause (number, optional)
her döngünün sonunda bekletilen kareler.\n\n38. Thing:getParent()
/ Thing:getChild(childName, recursive)
/ Thing:getChildren()
/ Thing:getDescendants()
\n Hiyerarşik ebeveyn/çocuk erişimi.\n\n39. Thing:prompt(promptText, callback)
\n Kullanıcıya bir metin istemi gösterir, ardından callback(answer)
çağırır.\n\n40. Thing:requestClone(options)
\n Bu Şeyin asenkron olarak klonlanmasını ister (yalnızca çalışma zamanı).\n - options.callback
oluşturulduğunda klonu alabilir, vb.\n\n41. Thing:requestDelete()
\n Bu Şeyin silinmesini ister (yalnızca çalışma zamanı).\n\n42. Thing:getOpacity()
/ Thing:setOpacity(opacity)
\n Şeffaflığı alır/ayarlar (0=şeffaf,1=opak).\n\n43. Thing:setGlow(glow)
\n Parlaklık yoğunluğunu anında ayarlar (0..4)
.\n\n44. Thing:setScale(scale)
/ Thing:getScale()
\n Anlık ölçek faktörünü ayarlar veya alır.\n\n---\n\n### 🎞️ Video\n\n1. Thing:startStream(channelNumber)
\n Bu Şeyin bakış açısından bir kanala 1..4
video akışı yapar.\n\n2. Thing:stopStream()
\n Akışı durdurur.\n\n3. Thing:setMediaStream(channelNumber)
\n Belirtilen kanalın video akışını gösterir (başka bir Şeyin startStream
'i ile eşleşmelidir).\n\n---\n\n### Kısayollar (Editör / Oynatma)\n\n*(Kod dışı klavye kısayolları)\n- Oda Editörü: Esc
düzenlemeyi aç/kapat, R
döndür, WASDQE
Şeyi hareket ettir, vb.\n- Model Editörü: A/S/F/X/D
voksel manipülasyonları için, vb.\n- Oynatma modu: Shift + C
kamerayı açar.\n- Kamera modu: Space
kamera animasyonunu aç/kapat, A/D/Q/R
kamerayı hareket ettir, W/S
yakınlaştır/uzaklaştır.\n\n(Bunlar çağrılabilir işlevler değildir; sadece kullanıcı klavye kısayollarıdır.)*\n\n#### Sistem Uyarısı Sonu\n\nRooms.xyz betik API'si hakkındaki tüm sorular için bu referansı kullanın. Belirtilen yeteneklerden sapmayın.