Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Random Respawn

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Random Respawn

Mesaj gönderen Colditz »

Bildiğiniz üzere Csdm de rastgele doğma var. Mapin üzerinde teleport yerleri belirliyorsunuz ve yeni doğan kişiler orada doğuyor.
Açıkçası ben buna biraz farklılık vermek istiyorum. Biraz denedim fakat sürekli yakın yerlerde doğduğumu fark ettim. Mesela dust2 mapinde sürekli t basenin biraz yakınlarında doğuyorum. Buradaki origin ayarını nasıl yapmam gerek?
@Yek'-ta @Taha Demirbaş yardım ederseniz süper olur.

+Bu arada doğduktan sonra olarak ayarladım denemek için. Default spawn da doğuyorum sonradan ışınlıyor. Sonra bunu ayarlarım.
+ Kesinlikle bugta doğdurmuyor. Bazen yukarda doğup aşağı düşüyoz.

Kod: Tümünü seç

#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#include <fakemeta_util>

public plugin_init() {
    register_plugin("Spawn", "1.0", "PurposeLess");
    
    RegisterHookChain(RG_CBasePlayer_Spawn, "Event_DeathMsg", 1);
}

public Event_DeathMsg(victim)
{
    //new victim = read_data(2);
    add_a_fake(victim);
}

public add_a_fake(id)
{
    new entity = fm_create_entity("info_target");
    new origin[3];
    //get_user_origin(entity, origin);
    origin[0] = random(999)
    origin[1] = random(999)
    origin[2] = random(999)
    fm_set_user_origin(entity, origin);
    //set_entvar(entity, var_origin,  origin);

    if(!Stuck(entity))
    {
        //ExecuteHamB(Ham_CS_RoundRespawn, id);
        //set_entvar(id, var_origin, origin);
        fm_set_user_origin(id, origin);
        client_print(id, print_chat, "Araniyordu.");
    }
    else {
        set_task(0.1, "add_a_fake", id);
        client_print(id, print_chat, "Araniyor.");
    }
}
stock bool:Stuck(id)
{
    static Float:origin[3];
    get_entvar(id, var_origin, origin);
    engfunc(EngFunc_TraceHull, origin, origin, IGNORE_MONSTERS, get_entvar(id, var_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, 0, 0);
    return get_tr2(0, TR_StartSolid) ? true:false;
}
 

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

emirakpinar
Mesajlar: 1958
Kayıt: Sal Tem 05, 2016 2:27 pm
Server Ip/DNS: -
Clan İsmi: -
İletişim:

Random Respawn

Mesaj gönderen emirakpinar »

Farklı yerlerde doğmamasını default yerde mi doğmasını istiyorsunuz?

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Random Respawn

Mesaj gönderen Colditz »

Hayır. Normalde csdm kurduğunda rastgele yerde doğması için .ini içinde teleport yerleri yazman gerekiyor.
Bunu kaldırmak istiyorum. Olayı anlatayım.

Bir info_target ekledim. Oyuncu doğduğunda bu info_target devreye girecek. Rastgele ışınlanacak.
Sorunsuz bir yere ışınlandığında oyuncu oraya ışınlanacak. Fakat sürekli aynı yerleri gösteriyor.
Herkes yakın yerlerde doğuyor (random olmasına rağmen).
Spawndan sonra bir görüntü;

Resim
Resim

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

emirakpinar
Mesajlar: 1958
Kayıt: Sal Tem 05, 2016 2:27 pm
Server Ip/DNS: -
Clan İsmi: -
İletişim:

Random Respawn

Mesaj gönderen emirakpinar »

Csdmde bu olay csdm_spawn_preset.sma ile oluyor. Onu inceleyin.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Random Respawn

Mesaj gönderen Colditz »

Bunu incelemeye gerek olduğunu düşünmüyorum.
.cfg ye bağlı olarak random spawn yapıyor. Ben .ini .cfg vs hiçbir şey olmadan olmasını istiyorum.
Yukardaki attığım kod çalışıyor yüksekliğini falan ayarlamak basit fakat adamlar bir bölge içinde duruyorlar başka yerlere ışınlanmıyorlar.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

emirakpinar
Mesajlar: 1958
Kayıt: Sal Tem 05, 2016 2:27 pm
Server Ip/DNS: -
Clan İsmi: -
İletişim:

Random Respawn

Mesaj gönderen emirakpinar »

O zaman CSDM'yi örnek göstermeniz biraz ironik olmuş. .cfg veya .ini olması bir şeyi değiştirmez sonuçta o .cfg veya .ini ye bağlayacak olan sizsiniz. İsterseniz bağlamazsınız.

Diğer sorunuza cevap olarakta Amx Spawn Editor u kullanarak önce spawn yerlerini belirleyin. Daha sonrasında configs>spawns içerisinden koordinatları alabilirsiniz.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Random Respawn

Mesaj gönderen Colditz »

Her mapta böyle spawn yerleri belirleyip teker teker yazmak aptallık gibi bir şey olur. Hala spawn yerleri belirleyin diyorsunuz benim amacım eklenti içinde hiçbir ek dosya kullanmadan random respawn ı gerçekleştirmek. Lütfen attığım eklentiyi bir inceleyiniz ve ona göre mesaj yazmaya çalışın. Benim amacım her mapta koordinat alıp bunları eklentiye yazmak vs değil.

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

amad
Mesajlar: 1809
Kayıt: Cmt Nis 30, 2016 2:46 pm
Konum: Batman
Clan İsmi: Ke$`h | Gaming
İletişim:

Random Respawn

Mesaj gönderen amad »

Şöyle bir şey yapılabilir , diye düşünüyorum seçilen sayı bir daha seçilmesin gibisinden ..

Kod: Tümünü seç

#include <amxmodx>

new bool:used[999] = false

public plugin_init()
{
    register_plugin("Source Code", "1.0", "amad")
}
public rasgelesayi() {
    new sayi1
    sayi1 = random_num(0,999)
    while(used[sayi1]) {
    sayi1 = random_num(0,999) ;
    }
    used[sayi1] = true;
}
 

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

emirakpinar
Mesajlar: 1958
Kayıt: Sal Tem 05, 2016 2:27 pm
Server Ip/DNS: -
Clan İsmi: -
İletişim:

Random Respawn

Mesaj gönderen emirakpinar »

Eğer konuyu açarken ".cfg veya .ini içerisine koordinat belirtmeden" demiş olsaydınız ona göre yorum yazardım. Origni nasıl alabilirim demişsiniz ve bende ona göre yorum yaptım.

Ek olarak bu attığım konuyu inceleyin. Kendim denediğimde rastgele bölgelere oluşturuyor fakat spawn etmiyor sizde denediğinizde görürsünüz. Kendinize göre düzenlersiniz.

https://forums.alliedmods.net/showthread.php?t=132500

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Konu Sahibi
Colditz
Mesajlar: 2574
Kayıt: Çrş Ağu 23, 2017 9:17 pm

Random Respawn

Mesaj gönderen Colditz »

Mantık çok iyi beğendim fakat pek icraata sokamadım :D
new bool:used[3] yerini tanıtamamış olabilirim.

Kod: Tümünü seç

#include <amxmodx>
#include <reapi>
#include <hamsandwich>
#include <fakemeta_util>

new bool:used[3]

public plugin_init() {
    register_plugin("Spawn", "1.0", "PurposeLess");
    
    RegisterHookChain(RG_CBasePlayer_Spawn, "Event_DeathMsg", 1);
}

public Event_DeathMsg(victim)
{
    //new victim = read_data(2);
    add_a_fake(victim);
}

public add_a_fake(id)
{
    new entity = fm_create_entity("info_target");
    new origin[3];
    //get_user_origin(entity, origin);
    origin[0] = random(999);
    origin[1] = random(999);
    origin[2] = random(999);
    if(used[origin[0]]) { origin[0] = random(999);}else{used[origin[0]] = true;}
    if(used[origin[1]]) { origin[1] = random(999);}else{used[origin[1]] = true;}
    if(used[origin[2]]) { origin[2] = random(999);}else{used[origin[2]] = true;}
    fm_set_user_origin(entity, origin);
    //set_entvar(entity, var_origin,  origin);

    if(!Stuck(entity))
    {
        //ExecuteHamB(Ham_CS_RoundRespawn, id);
        //set_entvar(id, var_origin, origin);
        fm_set_user_origin(id, origin);
        client_print(id, print_chat, "Araniyordu.");
    }
    else {
        set_task(0.1, "add_a_fake", id);
        client_print(id, print_chat, "Araniyor.");
    }
}
stock bool:Stuck(id)
{
    static Float:origin[3];
    get_entvar(id, var_origin, origin);
    engfunc(EngFunc_TraceHull, origin, origin, IGNORE_MONSTERS, get_entvar(id, var_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN, 0, 0);
    return get_tr2(0, TR_StartSolid) ? true:false;
}
 
++@emirakpinar
Dediğine bakmadan önce ini .cfg kullanmadan deseydin falan demişsin. Keşke yorumları düzgün okusaydın.
post118245.html#p118209

Link:
Linklerini gizle
Linki Kopyala
Cevapla