GM:Move

  boolean GM:Move( Player ply, CMoveData mv )
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

1 Player ply
Oyuncu
2 CMoveData mv
Hareket bilgisi

Döndürülen Değerler

1 boolean
Varsayılan motor eylemini bastırmak için true döndürün.

Ö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