GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

[RAGE:MP] Csharp İle Geliştirilmiş Motor Sistemi

Başlatan Krips Je, Bugün, 01:31:52

« önceki - sonraki »

0 Üye ve 2 Ziyaretçi konuyu incelemekte.

Krips Je

İyi günler, ben bu sistemi SideV için test amaçlı csharp diliyle kodlamıştım. sistemi daha fazla geliştirdiğim için ilk halinide sizlerle paylaşmak istedim. Her araca binildiğinde motor otomatik kapalı geliyor, oyuncu /motor komutunu yazdığında motor 3 saniyelik gecikme ile çalışıyor. Bu süreçte hem chate hem de ekranın altına bilgi mesajları veriliyor. Aşağıda sistemin hem ne yaptığı, hem neden bu şekilde yazıldığını detaylı şekilde açıkladım.

Sistemin Özellikleri:

- Araça binildiğinde motor otomatik olarak kapalı olur. 
- Oyuncu /motor komutunu kullanarak motoru açabilir ya da kapatabilir. 
- Motor açılırken 3 saniyelik gecikme ile gerçekçilik katılır. 
- Gecikme sırasında ekranın alt orta kısmında "Motor çalıştırılıyor..." yazısı belirir. 
- 3 saniye sonra "Motor çalıştırıldı." mesajı görünür ve motor aktif olur. 
- Araçtan inip tekrar bindiğinizde motor yine kapalı olur.

Kodlar ve Açıklamaları:

Sunucu tarafı kodlar (Csharp):

Kodun amacı: Oyuncu araca bindiğinde motoru kapatmak ve komutla kontrol etmeyi sağlamak.


PAWN Kodu: Seç
using GTANetworkAPI;
using System;
using System.Threading.Tasks;

public class MotorSystem : Script
{
    [ServerEvent(Event.PlayerEnterVehicle)]
    public void OnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat)
    {
        if (seat == -1)
        {
            vehicle.EngineStatus = false;
            player.SendNotification("Motor kapalı. Açmak için /motor yaz.");
        }
    }

    [Command("motor")]
    public async void ToggleEngine(Player player)
    {
        if (!player.IsInVehicle)
        {
            player.SendChatMessage("Araçta olman gerekiyor.");
            return;
        }

        Vehicle vehicle = player.Vehicle;

        if (vehicle.EngineStatus)
        {
            vehicle.EngineStatus = false;
            player.SendChatMessage("Motor kapatıldı.");
        }
        else
        {
            player.SendChatMessage("Motor çalıştırılıyor...");
            player.TriggerEvent("BilgiMesaj", "Motor çalıştırılıyor...", 3000);
            await Task.Delay(3000);
            vehicle.EngineStatus = true;
            player.SendChatMessage("Motor çalıştırıldı.");
        }
    }
}

Kısaca neden böyle yazdım:
- PlayerEnterVehicle eventi ile oyuncu araca bindiği anda motoru kapattım.
- await Task.Delay(3000) ile 3 saniyelik gecikme ekledim, bu sayede "motor çalıştırılıyor" efekti oluştu.
- TriggerEvent ile client tarafına görsel bildirim yolluyorum (alt ortada yazı çıkması için).

Client tarafı event (JS veya HTML tarafına bağlantı):

PAWN Kodu: Seç
mp.events.add("BilgiMesaj", (text, duration) => {
    mp.gui.execute(`app.showNotification('${text}', ${duration});`);
});

Neden lazım?
Bu kod sayesinde chat mesajı dışında, oyuncunun ekranının ortasında bir görsel uyarı çıkabiliyor. Daha etkileyici duruyor. vuejs ya da özel bir UI tasarımın falan varsa buna göre özelleştirebilirsin.



Sistem çok basit ancak mantığı anlamanızda yardımcı olur. Üzerinde düzenlemeler yaparak kendin oyunmodunuza entegre edebilirsiniz. İyi kullanımlar :serefe:

"Kodunu yaz, gerisini compiler düşünsün." - Meçhul Yazılımcı