LeetProxy Lua API
Bu sayfa, LeetProxy içindeki dahili Lua fonksiyonlarını özetler. Tüm scriptler, proxy exe ile aynı klasördeki Scripts klasörüne koyduğunuz .lua dosyalarıdır ve oyunda /lua komutuyla çalıştırılır.
Temel Fonksiyonlar
Proxy log penceresine debug mesajı yazar.
Scripti ms milisaniye bekletir. İçeride, isRunning() durumunu kontrol eder; script /stoplua ile durdurulursa bekleme erken biter.
Script hâlâ çalışıyorsa true, /stoplua ile durdurulmuşsa false döndürür. Uzun döngülerde her iterasyonda kontrol etmeniz önerilir.
for / while döngülerinde aşağıdaki patterni kullanın:
while isRunning() do
-- işiniz...
sleep(500)
end
Oyuncunun son yazdığı mesajı (slash komutlar dahil) döndürür. Değer okunduğunda buffer temizlenir, yani aynı mesaj bir daha gelmez. Mesaj yoksa boş string döner.
local msg = getMessage()
if msg ~= "" then
OnConsoleMessage("[Lua] Son mesaj: " .. msg)
end
Verilen metni komut yapısına çevirir. Dönen tablo: { raw, name, args, params, argc }. Örneğin createCommand("/warp FARMWORLD mode=fast 123"):
name:"/warp"args:{"FARMWORLD", "123"}params:{ mode = "fast" }argc:2
local cmd = createCommand("/warp FARMWORLD mode=fast")
if cmd.name == "/warp" then
local targetWorld = cmd.args[1] or ""
local mode = cmd.params.mode or "normal"
OnConsoleMessage(("[Lua] %s -> %s (mode=%s)"):format(cmd.name, targetWorld, mode))
end
Belirtilen komutu (ör. "/test") Lua'ya özel local komut olarak kaydeder. Bu komutlar Growtopia sunucusuna gönderilmez, dolayısıyla unknown command mesajı gelmez. Komut satırını getMessage() + createCommand() ile Lua içinde işleyebilirsin.
registerCommand("/test")
while isRunning() do
local line = getMessage()
if line ~= "" then
local cmd = createCommand(line)
if cmd.name == "/test" then
OnConsoleMessage("[Lua] /test komutu calisti.")
end
end
sleep(100)
end
Oyuncu & Hesap Bilgileri
Hesabın numeric kullanıcı ID’sini döndürür.
Hesabın GrowID (tankIDName) bilgisini döndürür.
Hesabın gün cinsinden yaşı.
Oyuncunun world içindeki netID değerini döndürür.
Şu anki ülke kodu (örn. "tr", "us").
Dünya & session bilgileri
Bulunduğunuz world adını döndürür.
Son ziyaret edilen world adını döndürür.
/setsave ile ayarlanmış kayıtlı world adını döndürür.
Güvenlik / kimlik bilgileri
Client’ın dahili kimlik ve meta alanları; gelişmiş spoof / güvenlik amaçlıdır. Sıradan scriptler için genelde dokunulmaz.
Konum & Envanter
Oyuncu konumunu { x, y } çifti olarak döndürür.
Verilen item ID’sinden envanterde kaç adet olduğunu döndürür.
Item envanterde varsa true, yoksa false.
Hareket / Aksiyon Fonksiyonları
Belirtilen world’e warp atar. Örnek: warp("FARMWORLD").
Verilen item ID’sinden count kadarını yere atar.
Verilen item ID’sinden count kadarını çöpe atar / recycle eder.
Packet & UI Helper’ları
Variant Packet kısayolları
Client’ta sarı konsol mesajı gösterir.
Karakterinizin üstünde konuşma balonu gösterir.
Ekranın ortasında kısa overlay metni gösterir.
Growtopia dialog formatında gönderdiğiniz text ile özel dialog açar.
Oyuncunun freeze durumunu ayarlar (anti-freeze / frozen efektleri).
Ham packet gönderme
target: "server" veya "client"
type: Packet tipi (ör. 2 = game packet, 3 = text, vb.)
text: Gönderilecek payload (raw string).
PlayerMoving tipi paket gönderir. table içinde isteğe bağlı alanlar:
packetType, netID, characterState, plantingTree,
punch = {x, y}, position = {x, y}, speed = {vx, vy},
target = "server" | "client" (varsayılan: "server").
Örnek 1: Basit Farm Bilgi Scripti
Bulunduğunuz world ve konum bilgilerini gösterir, envanterinizdeki belirli bir item’i kontrol eder ve ekrana bilgi mesajları basar.
-- Basit bilgi scripti
local world = getWorld()
local lastWorld = getLastWorld()
local posX, posY = table.unpack(getPosition())
print("Aktif world: " .. world)
print("Son dünya: " .. lastWorld)
print(("Konum: %.1f, %.1f"):format(posX, posY))
-- 242: World Lock ID (örnek)
local wlCount = getItemCount(242)
if wlCount > 0 then
OnConsoleMessage("Envanterinde " .. wlCount .. " adet WL var.")
else
OnConsoleMessage("Envanterinde hiç WL yok.")
end
-- World değiştirmek istersen:
-- warp("FARMWORLD")
Örnek 2: Otomatik Bilgi Döngüsü
Belirli aralıklarla world ismini ve konumu konsola yazar. /stoplua komutuyla güvenli şekilde durdurulur.
-- Her 2 saniyede bir world / konum bilgisini yazdır
while isRunning() do
local world = getWorld()
local x, y = table.unpack(getPosition())
OnConsoleMessage(
("[Lua] World: %s | Pos: %.1f, %.1f"):format(world, x, y)
)
sleep(2000)
end
Örnek 3: Lua Komut Sistemi
Bu script, registerCommand ve createCommand kullanarak tamamen Lua tarafında çalışan local komutlar tanımlar. Örnek komutlar: /merhaba ve /where.
registerCommand("/merhaba")
registerCommand("/where")
while isRunning() do
local line = getMessage()
if line ~= "" and line:sub(1, 1) == "/" then
local cmd = createCommand(line)
if cmd.name == "/merhaba" then
OnTalkBubble("merhaba!")
end
if cmd.name == "/where" then
local world = getWorld()
OnConsoleMessage(("[Lua] World: %s"):format(world))
end
end
sleep(100)
end