Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Türkiye'nin İlk ve tek FiveM forum adresi

Forum adresimize hoş geldin FiveMTürk olarak amacımız siz değerli kullanıcılarımıza en aktif fikir ve paylaşım platformu sunmak bir yana en güvenilir şekilde alışveriş yapabileceğiniz bir platform sunmaktır.
DF DF
DF DF
DF DF

Rehber C# Programlama Sistemi

MiddleStonks

Üye
FT Kullanıcı
Katılım
20 Nis 2020
Mesajlar
440
Discord
MiddleStonks#1877
39199 39198
Hepinize merhaba! FiveM'in C # ortamındaki özel durumları kapsayan küçük bir kılavuz yapmaya karar verdim.

1. Yerel / API Geri Çağırmaları
Yerel veya API sarma yöntemleri , BaseScript'ten türetilmiş bir sınıfın yapıcısında çalıştırılmamalıdır (buradaki davranış tam olarak bilinmemekle birlikte bu çoğunlukla istemci için geçerlidir)
-
Bu sınırlama için bir geçici çözüm, Function veya API çağrılarını ve ilk tıklamada Function veya API çağrılarını kullanan herhangi bir yöntemi yürütmektir:

C#:
public class TestScript : BaseScript
{
    #region Private Fields

    private bool firstTick = false;
    #endregion

    #region Initialization

    public TestScript()
    {
        Tick += OnTick;
    }
    #endregion

    #region Private Methods

    private async Task OnTick()
    {
        if(!firstTick)
        {
            firstTick = true;
            // API calls.
        }
    }
    #endregion
}

2. NUI Geri Çağırmaları (İstemci)
API geri aramaları aldatıcıdır. NUI ve istemci arasındaki iletişim JavaScript'te yapıldığından, döndürülen veriler zaten ayrıştırılır ve ExpandoObject özelliklerine gönderilir.

C#:
// ... Inside BaseScript
# NUI Implementation
private void RegisterNUICallback(string msg, Func<IDictionary<string, object>, CallbackDelegate, CallbackDelegate> callback)
{
    API.RegisterNuiCallbackType(msg); // Remember API calls must be executed on the first tick at the earliest!

    EventHandlers[$"__cfx_nui:{msg}"] += new Action<ExpandoObject, CallbackDelegate>((body, resultCallback) =>
    {
        callback.Invoke(body, resultCallback);
    });
}
#endregion


Eğer nüfuz etmesi için bir saniye gerekir ve sistem düzenleyecektir. Burada yaptığımız özel olay önceki ile NUI olayları dinlemek olduğu.: _
_cfx_nui:{eventName}. FiveM çerçevesi bunu böyle yapıyor, bu yüzden itaat etmemiz gerekiyor. Şimdi özel olan, geçirilen argümanlardır. DAİMA ExpandoObject ve CallbackDelegate türünde olacaktır. ExpandoObject bizim verilerimizdir (daha fazla bilgi için tür ve DLR hakkında google). ExpandoObject, IDictionary <string, object> tipindedir ve esasen verileri <VariableName, VariableData> ile tutar.
Esasen RegisterNUICallback komutumuz, olay ortaya çıktığında çağırdığımız bir geri aramayı kabul eder. Bu yüzden hayatı kolaylaştırır ve geri aramaya IDictionary olarak aktarırız.


Not: İkinci geçirilen parametrenin (CallbackDelegate türünde) ne için olduğunu henüz keşfetmedim. Lütfen yapabiliyorsanız paylaşın!

3. API RegisterCommand (Sunucu)
Bu da başka bir zor komuttur. RegisterCommand uzak konsolda yazılan komutları dinler. API işlevi, komut adı için bir dize, garip bir 'InputArgument' türü ve kısıtlı adında bir bool ister. Kısıtlı genellikle yanlıştır ve girdi argümanı, komut geçildiğinde yürütmemiz için bir temsilci olarak hareket edecektir. Buradaki soru, bu geri arama ile hangi argümanların iletildiğidir. Görünüşe göre bunlar <int, List. string> int kaynak olduğunda, List gerçekte parametre dizelerinin bir listesidir ve son dize tüm komuttur.
C#:
// ... fyi: This function works in the constructor of the server BaseScript.
API.RegisterCommand("say", new Action<int, List<object>, string>((source, arguments, raw) =>
{
    Debug.WriteLine($"{source}\n{raw}");
    foreach (var arg in arguments)
        Debug.WriteLine($"  {arg}");
}), false);

// Console command: say hello world!
// Debug:
// 0,
// say hello world!
//   hello
//   world!
39201
 


KumbarEmree

𝐅𝐈𝐕𝐄𝐌𝐓𝐔𝐑𝐊
Super-Mod
Katılım
19 Ağu 2019
Mesajlar
1,688
Başarılı Anlatım, Benim gibi C#'ı lua'ya göre daha çok kullanışlı bulan kişilere, yardımcı olacaktır.
 


lildopeee

Üye
Yasaklandı
FT Kullanıcı
Katılım
28 Haz 2020
Mesajlar
1,777
Discord
lil.dopeee#9999
Başarılı Anlatım, Benim gibi C#'ı lua'ya göre daha çok kullanışlı bulan kişilere, yardımcı olacaktır.
ben gibilere mesela :D çok araştırma yaptım bu konu ile iglili ancak çok fazla kaynağa rastlayamadım paylaşımın için çok teşekkürler
 


MiddleStonks

Üye
FT Kullanıcı
Katılım
20 Nis 2020
Mesajlar
440
Discord
MiddleStonks#1877
ben gibilere mesela :D çok araştırma yaptım bu konu ile iglili ancak çok fazla kaynağa rastlayamadım paylaşımın için çok teşekkürler
Bir çok konu var C#'nin FiveM ile özelliklerini bahseden ama çok detaylı veyahut düzgün anlatanı yok, bende bildiğim kadarı ile birde araştırdığım kadarı ile kılavuz hazırladım umarım işinize yarar.
 


Ryuk

?????????
FT Kullanıcı
Katılım
23 Ocak 2020
Mesajlar
403
Discord
'ʀʏᴜᴋ#4102
Eline sağlık güzel bir rehber olmuş.
 


Barlas

?????????
FT Kullanıcı
Katılım
2 Kas 2020
Mesajlar
677
Discord
Barlas#9232
Ellerine sağlık detaylı bir anlatım olmuş.
 


Ü

Üye silindi 20237

Guest
Başarılı rehber,eline sağlık ?
 


Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Bu konuyu görüntüleyen kullanıcılar

Tema düzenleyici

Tema özelletirmeleri

Granit arka planlar

Lütfen Javascript'i etkinleştirin!Javascript'i etkinleştirin!