GM:Move
Bu hook tahmin edilir (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'ten sonra çağrılır.
Hareket sistemi hakkında bir açıklama için Oyun Hareketi sayfasına bakın.
Argümanlar
Döndürülen Değerler
Örnek
Bir noclip hareket türü.
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)
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord