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

print(...)

Proxy log penceresine debug mesajı yazar.

sleep(ms)

Scripti ms milisaniye bekletir. İçeride, isRunning() durumunu kontrol eder; script /stoplua ile durdurulursa bekleme erken biter.

isRunning()

Script hâlâ çalışıyorsa true, /stoplua ile durdurulmuşsa false döndürür. Uzun döngülerde her iterasyonda kontrol etmeniz önerilir.

İpucu: Uzun for / while döngülerinde aşağıdaki patterni kullanın:

while isRunning() do
  -- işiniz...
  sleep(500)
end
getMessage()

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
createCommand(line)

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
registerCommand(name)

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

getUserID()

Hesabın numeric kullanıcı ID’sini döndürür.

getTankIDName()

Hesabın GrowID (tankIDName) bilgisini döndürür.

getPlayerAge()

Hesabın gün cinsinden yaşı.

getNetID()

Oyuncunun world içindeki netID değerini döndürür.

getCountry()

Şu anki ülke kodu (örn. "tr", "us").

Dünya & session bilgileri

getWorld()

Bulunduğunuz world adını döndürür.

getLastWorld()

Son ziyaret edilen world adını döndürür.

getSaveWorld()

/setsave ile ayarlanmış kayıtlı world adını döndürür.

Güvenlik / kimlik bilgileri

getKlv()
getMeta()
getRid()
getMac()
getWk()

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

getPosition()

Oyuncu konumunu { x, y } çifti olarak döndürür.

getItemCount(id)

Verilen item ID’sinden envanterde kaç adet olduğunu döndürür.

hasItem(id)

Item envanterde varsa true, yoksa false.

Hareket / Aksiyon Fonksiyonları

warp(worldName)

Belirtilen world’e warp atar. Örnek: warp("FARMWORLD").

drop(id, count)

Verilen item ID’sinden count kadarını yere atar.

trash(id, count)

Verilen item ID’sinden count kadarını çöpe atar / recycle eder.

Packet & UI Helper’ları

Variant Packet kısayolları

OnConsoleMessage(text)

Client’ta sarı konsol mesajı gösterir.

OnTalkBubble(text)

Karakterinizin üstünde konuşma balonu gösterir.

OnTextOverlay(text)

Ekranın ortasında kısa overlay metni gösterir.

OnDialogRequest(text)

Growtopia dialog formatında gönderdiğiniz text ile özel dialog açar.

OnSetFreezeState(seconds)

Oyuncunun freeze durumunu ayarlar (anti-freeze / frozen efektleri).

Ham packet gönderme

sendPacket(target, type, text)

target: "server" veya "client"
type: Packet tipi (ör. 2 = game packet, 3 = text, vb.)
text: Gönderilecek payload (raw string).

sendPlayerMoving(table)

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