# GM:Move

- **Ortam:** İstemci, Sunucu
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/GM:Move
- **Çeviri tarihi:** 2025-09-08

```lua
boolean GM:Move( Player ply, CMoveData mv )
```

> **NOT:** Bu hook [tahmin edilir](https://gmod.tr/wiki/Prediction) (predicted). Bu, tek oyunculu modda Client alanında çağrılmayacağı anlamına gelir.

## Açıklama

Move hook'u, oyuncunun MoveData'sını manipüle etmeniz için çağrılır.

Move hook'unda oyuncunun pozisyonunu hiçbir şekilde ayarlamamalısnız. Bunun sebebi, tahmin hataları (prediction errors) nedeniyle, ağ kodunun (netcode) paketler geç ulaştığında move hook'unu birden çok kez çalıştırabilmesidir. Bu nedenle, bu hook'ta yalnızca movedata yapısını ayarlamalısınız.

Genellikle bu hook'u kullanmanız gerekmez - özel bir hareket türü yapmak istiyorsanız drive sistemine göz atmalısınız.

Bu hook, [GM:PlayerTick](https://gmod.tr/wiki/GM:PlayerTick)'ten sonra çağrılır.

Hareket sistemi hakkında bir açıklama için [Oyun Hareketi](https://gmod.tr/wiki/Game_Movement) sayfasına bakın.

## Argümanlar

1. [Player](https://gmod.tr/wiki/Player) **ply**: Oyuncu
2. [CMoveData](https://gmod.tr/wiki/CMoveData) **mv**: Hareket bilgisi

## Döndürülen Değerler

1. [boolean](https://gmod.tr/wiki/boolean): Varsayılan motor eylemini bastırmak için true döndürün.

### Örnek

Bir noclip hareket türü.

```lua
hook.Add( "Move", "Noclip", function( ply, mv )

	--
	-- Bir hız ayarlayın, shift basılı tutulursa daha hızlı gidin
	--
	local speed = 0.0005 * FrameTime()
	if ( mv:KeyDown( IN_SPEED ) ) then speed = 0.005 * FrameTime() end

	--
	-- Movedata'dan bilgileri alın
	--
	local ang = mv:GetMoveAngles()
	local pos = mv:GetOrigin()
	local vel = mv:GetVelocity()

	--
	-- Hızları ekleyin. Bu karmaşık görünebilir. İlk satırda
	-- temel olarak ileri vektörünü al, sonra bunu ileri hızımızla
	-- çarp (W'ye basıyorsak > 0, S'ye basıyorsak < 0 ve ikisine de basmıyorsak 0 olacak)
	-- - ve bunu hıza ekle diyoruz. Bunu sağ ve yukarı için de yapıyoruz,
	-- bu da bize serbest hareketimizi sağlıyor.
	--
	vel = vel + ang:Forward() * mv:GetForwardSpeed() * speed
	vel = vel + ang:Right() * mv:GetSideSpeed() * speed
	vel = vel + ang:Up() * mv:GetUpSpeed() * speed

	--
	-- Hızımızın kontrolden çıkmasını istemediğimiz için biraz
	-- hava direnci uyguluyoruz. Hiçbir tuşa basılmıyorsa,
	-- daha fazla yavaşlamak için daha fazla direnç uyguluyoruz.
	--
	if ( math.abs( mv:GetForwardSpeed() ) + math.abs( mv:GetSideSpeed() ) + math.abs( mv:GetUpSpeed() ) < 0.1 ) then
		vel = vel * 0.90
	else
		vel = vel * 0.99
	end

	--
	-- Hızı pozisyona ekleyin (hareket budur)
	--
	pos = pos + vel

	--
	-- Yeni hesaplanan değerleri entity'nin kendisine ayarlamıyoruz,
	-- bunun yerine onları movedata'da saklıyoruz. Bunlar FinishMove
	-- hook'unda uygulanmalıdır.
	--
	mv:SetVelocity( vel )
	mv:SetOrigin( pos )

	--
	-- Varsayılan davranışı kullanmamak için true döndürün
	--
	return true

end)
```

- [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/GM:Move
