1. sayfa (Toplam 3 sayfa)

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Pzr Kas 11, 2018 12:09 am
gönderen Yek'-ta
Bayrak kapmacanın orjinal modu yani CTF daha çok hlds sunucular içindi, lüzumsuz gördüğüm yerleri vardı ve geliştirilmeye pek müsait göremiyordum. Hatta REHLDS kullandığımız için orpheu özelliğini kullanamıyorduk, bu yüzden de takım skorları değişmiyordu. Bende modu yeniden yazdım. Fakat sadece bize yeterli gördüğüm yerleri yazdım sadece. 2 gün evvel başlayıp %80'inini bitirdiğim bayrak kapmaca modunun takibini paylaşıyorum. Mod panel için hazırlanıyor.

+CSDurağı için özel bayrak kapmaca modeli,
+Bayrağı taşıyan kişinin sırtında bayrak modeli,
+Kullanılan 2 modelin boyutlarının toplamı 865 Kb.
+Sadece reapi ve engine kütüphaneleri kullanılarak 1 sınıf altında 4 obje(CTBayrak, TEBayrak, CTAlan, TEAlan), konum belirleme için ise 1 sınıf altında 2 obje bulunuyor. Konum belirleme objeleri sadece yeni konum belirler iken çıkıyor,
+Eklenti yazarları için native ve forward özellikleri, kolay erişim olması için kütüphane halinde,
+CTF de orpheu yüzünden kullanamadığımız takım skorlarına +1 özelliği reapi ile eklendi,
+Kolay konum belirleme menüsü,

Moddan kısa bir test videosu.


Moddan ekran görüntüleri
20181110233531_1.jpg
20181110233528_1.jpg
20181110233346_1.jpg
20181110233340_1.jpg
20181110233255_1.jpg
20181110233247_1.jpg
20181110233139_1.jpg
20181110233100_1.jpg
20181110233058_1.jpg
-----------------------------
Buraya kadar her şey normal, mod oldukça basit tutuldu. Modu eğer kendi tarafınızdan geliştirmek, bir farklılık olmasını istiyor iseniz modun kütüphanesi ile özel eklentiler yazabilirsiniz.

csd_bayrakkapmaca.inc

Kod: Tümünü seç

/*
forum.csduragi.com
Yek'-ta
*/

#if defined _csd_bayrakkapmaca_included
    #endinput
#endif
#define _csd_bayrakkapmaca_included


#define BAYRAK_YERDE -1
#define BAYRAK_ALANDA 0

/**
 * TE Takımında taşıyıcı var ise onun numarasını verir.
 *
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == BaskaBirOyuncu)
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == 0) // Bayrak alanda mı?
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == -1) // Bayrak yere mi düştü?
 *
 * @return      Oyuncu degeri.
 */
 native csd_tebayrak_tasiyici()

/**
 * CT Takımında taşıyıcı var ise onun numarasını verir.
 *
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == BaskaBirOyuncu)
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == BAYRAK_ALANDA) // Bayrak alanda mı?
 * Örnek; if(csd_tebayrak_tasiyici(oyuncu) == BAYRAK_YERDE) // Bayrak yere mi düştü?
 *
 * @return      Oyuncu degeri.
 */
 native csd_ctbayrak_tasiyici()

/**
 * Bayrak yere düştüğü an çalışan public.
 *
 * @param oyuncu        Bayrağı düşüren oyuncunun numarası.
 */
forward csd_bayrak_dustu(oyuncu)

/**
 * Rakip takımın bayrağı yerden alındığı an çalışan public.
 *
 * @param oyuncu        Bayrağı yerden alan oyuncunun numarası.
 */
forward csd_bayrak_alindi(oyuncu)

/**
 * Kendi takımının bayrağını yerden alıp alana gönderdiğinde çalışan public.
 *
 * @param oyuncu        Bayrağı geri taşıyan oyuncunun numarası.
 */
forward csd_bayrak_geri_tasindi(oyuncu)

/**
 * Bir takım +1 skor aldığında çalışan public.
 *
 * @param oyuncu        +1 Skor sağlayan oyuncunun numarası.
 */
forward csd_bayrak_skorlandi(oyuncu)
Örnek bir eklenti aşağıdaki gibidir.

Kod: Tümünü seç

/* Yek'-ta */

#include <amxmodx>
#include <csd_bayrakkapmaca>

#define PLUGIN  "Bu Modda Neler Oluyor?"
#define VERSION "1.0"
#define AUTHOR  "Yek'-ta"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("say /bayraklar","evetsondurumusoyluyorum")
}

//Native
public evetsondurumusoyluyorum(oyuncu){
    if(csd_tebayrak_tasiyici() == BAYRAK_ALANDA){
        client_print_color(oyuncu, oyuncu, "^3 CT Takımının bayrağı yerinde")
    }
    else if(csd_tebayrak_tasiyici() == BAYRAK_YERDE){
        client_print_color(oyuncu, oyuncu, "^3 CT Takımının bayrağı haritanın bir yerlerinde.")
    }
    else if(csd_tebayrak_tasiyici() == oyuncu){
        client_print_color(oyuncu, oyuncu, "^3 Oğlum CT takımının bayrağı sende ya..")
    }
    else{
        new oyuncuismi[32]
        get_user_name(csd_tebayrak_tasiyici(),oyuncuismi,charsmax(oyuncuismi))
        client_print_color(oyuncu, csd_tebayrak_tasiyici(), "^1 CT Takımının bayrağı ^3%s ^1oyuncusunda",oyuncuismi)
    }

    if(csd_ctbayrak_tasiyici() == BAYRAK_ALANDA){
        client_print_color(oyuncu, oyuncu, "^3 TE Takımının bayrağı yerinde")
    }
    else if(csd_ctbayrak_tasiyici() == BAYRAK_YERDE){
        client_print_color(oyuncu, oyuncu, "^3 TE Takımının bayrağı haritanın bir yerlerinde.")
    }
    else if(csd_ctbayrak_tasiyici() == oyuncu){
        client_print_color(oyuncu, oyuncu, "^3 Oğlum TE takımının bayrağı sende ya..")
    }
    else{
        new oyuncuismi[32]
        get_user_name(csd_ctbayrak_tasiyici(),oyuncuismi,charsmax(oyuncuismi))
        client_print_color(oyuncu, csd_ctbayrak_tasiyici(), "^1 TE Takımının bayrağı ^3%s ^1oyuncusunda",oyuncuismi)
    }
}

//Forward
public csd_bayrak_dustu(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Hey genç bayrağı düşürdün")
}

public csd_bayrak_alindi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Aferim yeğenim, yaparsın bu işi, git ve takımın skorla")
}

public csd_bayrak_geri_tasindi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Büyük bir tedirginlik hissediyorduk, iyi oldu eyvallah")
}

public csd_bayrak_skorlandi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Evet! Takımını skorladın, devam et böyle")
}
Şuanda eklemeyi düşündüğüm tek özellik oyuncunun kendi bayrak alanı içerisinde olup olmadığını sorgulatmak. Bunu da native + forward yapabilirim belki. Oyuncu kendi alanına girdi forwardı ve oyuncunun alanda olup olmadığını sorgulatmak. Bu özellik modun %20 lik bölümünü oluşturduğu için, bu özellik bitince modu test sunucusuna kuracağım.

Mod ile ilgili fikirlerinizi, görüşlerinizi alabilirim. Mesela ben bu moda böyle bir eklenti yazabilirim, bu yüzden bana bunların sorguları lazım dediğiniz yerler.

Geçen gün denediğimiz paintball mod, bu modla birlikte kullanılabiliyor. Yani Bayrak Kapmaca + PaintBall sunucu rahatlık ile açabileceksiniz.

Bayrak Kapmaca Mod Fikir ve Düşünce paylaşımı

Gönderilme zamanı: Pzr Kas 11, 2018 12:20 am
gönderen Yek'-ta
Dosyaya kaydedilen bayrak değerlerinin nasıl olduğu ile ilgili ekran görüntüsü;
bayraklariuzantisi.png
Şunu belirtmeyi unutmuşum; sv_restart 1 yaptığınız zaman takım skorları sıfırlanacağı için, bayrak skorları da sıfırlanır.

Yeni bayrak kapmaca modu

Gönderilme zamanı: Sal Kas 13, 2018 2:08 pm
gönderen Yek'-ta
Kütüphaneye yeni eklenenler;

Kod: Tümünü seç

/**
 * Oyuncunun TE Alanında mı değil mi sorgusunun cevabını verir
 *
 * Örnek; if(csd_tealanindami(oyuncu))
 *
 * @return      oyuncu eğer içinde ise true verir.
 */
 native csd_tealanindami(oyuncu)


/**
 * Oyuncunun CT Alanında mı değil mi sorgusunun cevabını verir
 *
 * Örnek; if(csd_ctalanindami(oyuncu))
 *
 * @return      oyuncu eğer içinde ise true verir.
 */
 native csd_ctalanindami(oyuncu)





/**
 * CT alanına biri girdiği vakit çalışan public
 *
 * @param oyuncu        CT alanına giren oyuncunun numarası.
 */
forward csd_ctalaninagirdi(oyuncu)


/**
 * TE alanına biri girdiği vakit çalışan public
 *
 * @param oyuncu        TE alanına giren oyuncunun numarası.
 */
forward csd_tealaninagirdi(oyuncu)
Kütüphane ile birlikte yeni test eklentisi;

Kod: Tümünü seç

/* Yek'-ta */

#include <amxmodx>
#include <csd_bayrakkapmaca>

#define PLUGIN  "Bu Modda Neler Oluyor?"
#define VERSION "1.0"
#define AUTHOR  "Yek'-ta"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("say /bayraklar","evetsondurumusoyluyorum")
}

//Native
public evetsondurumusoyluyorum(oyuncu){
    if(csd_tebayrak_tasiyici() == BAYRAK_ALANDA){
        client_print_color(oyuncu, oyuncu, "^3 CT Takımının bayrağı yerinde")
    }
    else if(csd_tebayrak_tasiyici() == BAYRAK_YERDE){
        client_print_color(oyuncu, oyuncu, "^3 CT Takımının bayrağı haritanın bir yerlerinde.")
    }
    else if(csd_tebayrak_tasiyici() == oyuncu){
        client_print_color(oyuncu, oyuncu, "^3 Oğlum CT takımının bayrağı sende ya..")
    }
    else{
        new oyuncuismi[32]
        get_user_name(csd_tebayrak_tasiyici(),oyuncuismi,charsmax(oyuncuismi))
        client_print_color(oyuncu, csd_tebayrak_tasiyici(), "^1 CT Takımının bayrağı ^3%s ^1oyuncusunda",oyuncuismi)
    }

    if(csd_ctbayrak_tasiyici() == BAYRAK_ALANDA){
        client_print_color(oyuncu, oyuncu, "^3 TE Takımının bayrağı yerinde")
    }
    else if(csd_ctbayrak_tasiyici() == BAYRAK_YERDE){
        client_print_color(oyuncu, oyuncu, "^3 TE Takımının bayrağı haritanın bir yerlerinde.")
    }
    else if(csd_ctbayrak_tasiyici() == oyuncu){
        client_print_color(oyuncu, oyuncu, "^3 Oğlum TE takımının bayrağı sende ya..")
    }
    else{
        new oyuncuismi[32]
        get_user_name(csd_ctbayrak_tasiyici(),oyuncuismi,charsmax(oyuncuismi))
        client_print_color(oyuncu, csd_ctbayrak_tasiyici(), "^1 TE Takımının bayrağı ^3%s ^1oyuncusunda",oyuncuismi)
    }

    if(csd_ctalanindami(oyuncu)){
        client_print_color(oyuncu, oyuncu, "^3 Şuanda CT alanındasın.")
    }
    if(csd_tealanindami(oyuncu)){
        client_print_color(oyuncu, oyuncu, "^3 Şuanda TE alanındasın.")
    }
}

//Forward
public csd_bayrak_dustu(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Hey genç bayrağı düşürdün")
}

public csd_bayrak_alindi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Afferim yiğenim, yaparsın bu işi, git ve takımın skorla")
}

public csd_bayrak_geri_tasindi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Büyük bir tedirginlik hissediyorduk, iyi oldu eyvallah")
}

public csd_bayrak_skorlandi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 Evet! Takımını skorladın, devam et böyle")
}

public csd_ctalaninagirdi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 CT Alanına girdin")
}

public csd_tealaninagirdi(oyuncu){
    client_print_color(oyuncu, oyuncu, "^3 TE alanına girdin")
}
Olabilecek açıkların denemeleri yapılıyor;

Yeni bayrak kapmaca modu

Gönderilme zamanı: Çrş Kas 14, 2018 1:05 am
gönderen Yek'-ta
Saçma bir açık vardı, sorun çözüldü :)
Kapalı alan haritalarında objeler yerine döndüğü vakit anlamsız bir şekilde belli noktalardan görünüp diğer noktalardan görünmüyordu.

Moda hakimiyetin kolay olması için ini dosyası hazırlandı.
bayrakkapmacaini.png
Eklediğiniz her --> satırı ile başlayan girdiler oyun ayarıdır. Bununla birlikte 2 tanımlı girdi var. İkisi de bayrak modellerini değiştirmek için.

Yeni bayrak kapmaca modu

Gönderilme zamanı: Çrş Kas 14, 2018 1:20 am
gönderen Yek'-ta
Bayrak bilgisi konsol takibi.

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Çrş Kas 14, 2018 1:43 am
gönderen Levelsiz
Yeni panelde mi geliyor bu mod paketi

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Çrş Kas 14, 2018 7:57 am
gönderen By.King ►EmrullaH◄
Evt

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Çrş Kas 14, 2018 8:52 am
gönderen Ömer TELLİ
Neden *.bayramlari uzantısı, ben yedek almak istediğimde , txt , ini vs gibi şekilde yüklemek varken panelin izin vermediğin bir uzantıyı nasıl düzenleyeceğim

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Çrş Kas 14, 2018 9:45 am
gönderen Yek'-ta
Ömer TELLİ yazdı: Çrş Kas 14, 2018 8:52 am Neden *.bayramlari uzantısı, ben yedek almak istediğimde , txt , ini vs gibi şekilde yüklemek varken panelin izin vermediğin bir uzantıyı nasıl düzenleyeceğim
de_dust2.bayraklari.cfg , .cfg uzantılı. Konsol takip ekran görüntüsünden bakabilirsiniz.

Yeni bayrak kapmaca modu [Takip Konusu]

Gönderilme zamanı: Prş Kas 15, 2018 2:34 am
gönderen Yek'-ta
csd_bayrakkapmaca.ini de forward lara objeler de tanımlandırıldı.

Deneme için skorlama efekti yazıldı.
Video;



Eklenti;

Kod: Tümünü seç

#include <amxmodx>
#include <fakemeta>
#include <csd_bayrakkapmaca>

new spritedosyasi

public plugin_init()
{
    register_plugin("Skorlandi Efekt", "1.0", "Yek'-ta")
}

public plugin_precache() {
    spritedosyasi = precache_model("sprites/fireworks.spr")
    precache_sound("csd_bayrakkapmaca/havaifisekefektsesi.wav")
}

public csd_bayrak_skorlandi(oyuncu,obje){
    new Float: originF[3]
    pev(obje, pev_origin, originF)

    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    write_byte(TE_SPRITE);
    engfunc(EngFunc_WriteCoord, originF[0]+random_float(-5.0, 5.0));
    engfunc(EngFunc_WriteCoord, originF[1]+random_float(-5.0, 5.0));
    engfunc(EngFunc_WriteCoord, originF[2]+200.0);
    write_short(spritedosyasi);
    write_byte(15);
    write_byte(200);
    message_end();
    emit_sound(obje, CHAN_WEAPON, "csd_bayrakkapmaca/havaifisekefektsesi.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}