# Scripted Entities

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/Scripted_Entities
- **Çeviri tarihi:** 2026-04-04

**Yazılımlı Varlıklar** (veya **Gönderildi.**kısaca s) tamamen Lua'da kodlanmış özel varlıklardır.

Genellikle ayrı bir şekilde tanımlanırlar. `.lua` Dosya `lua/entities/` Dosya.

Farklılık **Motor Kuruluşları** Kullanamayacağınız bir şey. [Mülkiyet Kancaları](https://gmod.tr/wiki/ENTITY_Hooks) motor birimleri üzerinde.

## Yazılımlı Varlık Tipleri

6 farklı türde Scripted Entity vardır:

| ENT. Type | Açıklama |
|---|---|
| nextbot | Daha iyi navigasyona sahip yeni tip bir NPC. Hepsi. [NextBot](https://gmod.tr/wiki/NextBot) İşlevler ve kancalar da bu varlıklarda kullanılabilir. |
| anim | Oyun dünyasında görsel ve/veya fiziksel varlığı olan normal bir varlık, aletler veya hayal edebileceğiniz her şey gibi. |
| fırça | Çoğunlukla Hammer Seviye Düzenleyicisi ile çok yakından kullanılır. |
| noktası | Genellikle oyun dünyasında görsel veya fiziksel bir temsili olmayan, mantıksal varlıklar gibi yalnızca sunucu kenarında bulunan bir varlık. |
| Filtrele | Trigger ile birlikte kullanılan farklı bir "nokta" varlığı (`brush` türü) varlıklar. |
| Ai. | 2004 Kaynak Motoru NPC sistemi birimi |

## Senaryo yazma

Aşağıdakiler ile kullanılabilir: **Yazılımlı Varlıklar**:

- [ENT yapısı](https://gmod.tr/wiki/Structures/ENT)
- [YETİK kancaları.](https://gmod.tr/wiki/ENTITY_Hooks)
- [Varlık](https://gmod.tr/wiki/Entity) fonksiyonları

Aşağıdakiler ile kullanılabilir: **Yazılı Silahlar** (Ayrıca olarak da bilinir) **SWEP**s:

- [SWEP yapısı](https://gmod.tr/wiki/Structures/SWEP)
- [Varlık](https://gmod.tr/wiki/Entity) fonksiyonları
- [Silah.](https://gmod.tr/wiki/Weapon) fonksiyonları
- [Silah kancaları](https://gmod.tr/wiki/WEAPON_Hooks)

Aşağıdaki örnek betikler içine yerleştirilir. `lua/entities`Eğer varlık oluşturma hakkında daha derinlemesine bir ders istersen, [buraya tıklayın.](https://gmod.tr/wiki/Entity_Creating_Custom_Entities)

### Örnek

Basit bir dosya. **Gönderildi.** İstemci ve sunucu üzerinde çalışan bir betik. Dosyayı adlandırabilirsiniz `barrel.lua` ya da adını taşıyan bir klasöre yerleştirin `barrel` Ve ona bir isim ver. `shared.lua`Fiziksel bir varil yaratır ve yok edilebilir.

```lua
AddCSLuaFile()

ENT.Type = "anim"
ENT.Base = "base_anim"

-- Yumurta menüsünde görünen isim.
ENT.PrintName   = "Explosive Barrel"

ENT.Information = "Shoot to explode."

ENT.Author      = "You!"

ENT.Spawnable = true

-- Varlığın spawn menüsünde bulunduğu kategori.
ENT.Category = "Other"

- Bunlar özel varlık değişkenleri, onları değiştirmekten çekinmeyin!
ENT.ExplosionDamage = 100
ENT.ExplosionRadius = 250

- Bu özel değişken varlığın sonsuza kadar patlamasını engeller.
ENT.HasExploded = false

-- Bu kod varlık oluşturulduğunda çalıştırılır.
function ENT:Initialize()
    self:SetModel("models/props_c17/oildrum001_explosive.mdl")

	- Yalnızca sunucuda fizik ayarlayın çünkü müşteri üzerinde yaparsanız garip sorunlar yaratma eğilimindedir.
	if SERVER then
    	self:PhysicsInit(SOLID_VPHYSICS)
    	self:SetMoveType(MOVETYPE_VPHYSICS)
    	self:SetSolid(SOLID_VPHYSICS)
	end

    local phys = self:GetPhysicsObject()

    - Bu, yaratıldığında havada sıkışmak yerine varlığı düşürecek.
    if ( IsValid(phys) ) then
        phys:Wake()
    end

    - Bu, varlığın silinmesine izin vermek için gereklidir.
    if ( SERVER ) then
        self:PrecacheGibs()
    end
end

- Hasar gördüğünde patlar!
function ENT:OnTakeDamage(damageInfo)
    if self.HasExploded then
        return Eğer varlık zaten patlamışsa şifreyi burada durdurun.
    end

    local newEffectData = EffectData() -- util. Effect'da kullanılacak yeni bir EffectData oluşturur.
    newEffectData:SetOrigin(self:GetPos())
    newEffectData:SetMagnitude(100)
    newEffectData:SetScale(1)

    - Patlama etkisini yarat!
    util.Effect("Explosion",newEffectData)

    - Varlığı parçalara ayırır. (Vektör gibslere yukarı doğru kuvvet ekler)
    self:GibBreakServer(Vector(0,0,10))

    - Bunu doğruya ayarlamak varlığın tekrar patlamasını engeller.
    self.HasExploded = true

    self:Remove()
end

function ENT:OnRemove()
    if ( SERVER ) then
        - Patlama hasarı.
        -- (Son iki değişken özel ve üstte değiştirilebilir)
        util.BlastDamage(self,self,self:GetPos(),self.ExplosionRadius,self.ExplosionDamage)
    end
end
```

### Örnek

A. **Gönderildi.** Üç yazılımdan oluşan bu dosyayı varlığınızın adını taşıyan bir klasöre yerleştirin.

#### Kod

```lua
-- cl_init.lua

include("shared.lua") -- Bu müşteri üzerinde shared.lua çalışır
```

#### Kod

```lua
-- init.lua

-- Müşteriye paylaşılan ve cl_init gönder
AddCSLuaFile("shared.lua")
AddCSLuaFile("cl_init.lua")

include("shared.lua") -- Bu sunucuda shared.lua çalışıyor.

-- Bu kod varlık oluşturulduğunda çalıştırılır.
function ENT:Initialize()
    self:SetModel("models/props_c17/oildrum001_explosive.mdl")

    self:PhysicsInit(SOLID_VPHYSICS)
    self:SetMoveType(MOVETYPE_VPHYSICS)
    self:SetSolid(SOLID_VPHYSICS)

    local phys = self:GetPhysicsObject()

    - Bu, yaratıldığında havada sıkışmak yerine varlığın düşmesini sağlayacak.
    if ( IsValid( phys ) ) then
        phys:Wake()
    end

    - Bu, varlığın silinmesine izin vermek için gereklidir.
    self:PrecacheGibs()

end

- Hasar gördüğünde patlar!
function ENT:OnTakeDamage(damageInfo)
    if self.HasExploded then
        return Eğer varlık zaten patlamışsa şifreyi burada durdurun.
    end

    local newEffectData = EffectData() -- util. Effect'da kullanılacak yeni bir EffectData oluşturur.
    newEffectData:SetOrigin(self:GetPos())
    newEffectData:SetMagnitude(100)
    newEffectData:SetScale(1)

    - Patlama etkisini yarat!
    util.Effect("Explosion", newEffectData)

    - Varlığı parçalara ayırır. (Vektör gibslere yukarı doğru kuvvet ekler)
    self:GibBreakServer(Vector(0, 0, 10))

    - Bunu doğruya ayarlamak varlığın tekrar patlamasını engeller.
    self.HasExploded = true

    self:Remove()
end

function ENT:OnRemove()
    - Patlama hasarı.
    -- (Son iki değişken özel ve üstte değiştirilebilir)
    util.BlastDamage( self, self, self:GetPos(), self.ExplosionRadius, self.ExplosionDamage )
end
```

#### Kod

```lua
-- shared.lua

AddCSLuaFile()

ENT.Type = "anim"
ENT.Base = "base_anim"

-- Yumurta menüsünde görünen isim.
ENT.PrintName   = "Explosive Barrel"

ENT.Information = "Shoot to explode."

ENT.Author      = "You!"

ENT.Spawnable = true

-- Varlığın spawn menüsünde bulunduğu kategori.
ENT.Category = "Other"

- Bunlar özel varlık değişkenleri, onları değiştirmekten çekinmeyin!
ENT.ExplosionDamage = 100
ENT.ExplosionRadius = 250

- Bu özel değişken varlığın sonsuza kadar patlamasını engeller.
ENT.HasExploded = false
```

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/Scripted_Entities
