1. sayfa (Toplam 1 sayfa)

İSTEK Takım Değiştirme

Gönderilme zamanı: Pzr May 16, 2021 9:43 pm
gönderen sinancalisci
Merhaba DM bir mapta 20 dakika oynandıktan sonra otomatik olarak takımlar yer değiştirsin istiyorum ve değişiklik olduktan sonra fragları sıfırlamaması gerek eklentiyi düzenleyebilirmisiniz?

İSTEK Takım Değiştirme

Gönderilme zamanı: Pzr May 16, 2021 9:47 pm
gönderen afan1990
round süresini 20 dk yaparsan 2.round başladığında takımlar değişecektir ben böyle bişey düşündüm başkası istediğin gibi bişey yapabilir bilemiyorum

Kod: Tümünü seç

#include <amxmodx>
#include <cstrike>

#define DEGISECEKROUND 2

new saydir=0;
new degisti=0;

public plugin_init() {
    register_plugin("Takim Degistirme", "1.0", "marKeL");

    register_event("TextMsg", "res", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    register_event("SendAudio", "tewin", "a", "2&%!MRAD_terwin");
    register_event("SendAudio", "ctwin", "a", "2&%!MRAD_ctwin");
    register_event("SendAudio", "berabere", "a", "2&%!MRAD_rounddraw");
}

public res()
{
    saydir=0;
    set_task(1.0,"sorgula");
}

public tewin()
{
    saydir++;
    set_task(1.0,"sorgula");
}

public ctwin()
{
    saydir++;
    set_task(1.0,"sorgula");
}

public berabere()
{
    saydir++;
    set_task(1.0,"sorgula");
}

publi

İSTEK Takım Değiştirme

Gönderilme zamanı: Pzr May 16, 2021 10:28 pm
gönderen afan1990
ilkini tam atmamışım kb buyur :D

Kod: Tümünü seç

#include <amxmodx>
#include <cstrike>

#define DEGISECEKROUND 2

new saydir=0;
new degisti=0;

public plugin_init() {
    register_plugin("Round Takim Degistirme", "1.1", "marKeL");

    register_event("TextMsg", "res", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
    register_event("SendAudio", "tewin", "a", "2&%!MRAD_terwin");
    register_event("SendAudio", "ctwin", "a", "2&%!MRAD_ctwin");
    register_event("SendAudio", "berabere", "a", "2&%!MRAD_rounddraw");
}

public res()
{
    saydir=0;
    set_task(1.0,"sorgula");
}

public tewin()
{
    saydir++;
    set_task(1.0,"sorgula");
}

public ctwin()
{
    saydir++;
    set_task(1.0,"sorgula");
}

public berabere()
{
    saydir++;
    set_task(1.0,"sorgula");
}

public sorgula(){
    if(saydir >= DEGISECEKROUND && degisti==0){
        set_hudmessage(0,255,0,-1.0,0.0,0,12.0,5.0);
        show_hudmessage(0,"Takimlar Yer Degistiriyor.");
        new players[32], inum, id;
        get_players(players, inum);
        for(new i;i<inum;i++){
            id = players[i]
            if(get_user_team(id) == 2){
                cs_set_user_team(id, CS_TEAM_T );
            }
            else if(get_user_team(id) == 1){
                cs_set_user_team(id, CS_TEAM_CT );
            }
        }
        server_cmd("sv_restart 1");
        degisti = 1;
    }
}

İSTEK Takım Değiştirme

Gönderilme zamanı: Pzr May 16, 2021 10:45 pm
gönderen bestcore
afan1990 yazdı: Pzr May 16, 2021 10:28 pm ilkini tam atmamışım kb buyur :D
Cstrike değilde bu olayı reapi kütüphanesiyle kolaylıkla yapabilirsiniz. Demek istediğim 4 tane register oluşturacağına "RG_RoundEnd" ile tek registerde bitirebilirsiniz.
Örneklerini aşşağıya bırakıyorum;

Kod: Tümünü seç

#include <reapi> // Reapi kütüphanesi kurulu olmalıdır.

RegisterHookChain(RG_RoundEnd, "RG_RoundEnd_Post", .post = true); // Post true olmalıdır.

public RG_RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
	switch(status)
	{
		case WINSTATUS_CTS:
		{
			// Roundu ct kazandiysa.
		}
		case WINSTATUS_TERRORIST:
		{
			// Roundu te kazandiysa.
		}
		case WINSTATUS_DRAW:
		{
			// Round berabere bittiyse.
		}
	}
}
* Ekstra olarak sunucuda bulunan bir cvar için "set_pcvar_num" kullanmanız daha sağlıklı olur.

Kod: Tümünü seç

set_pcvar_num(get_cvar_pointer("sv_restart"), 1);

İSTEK Takım Değiştirme

Gönderilme zamanı: Pzr May 16, 2021 11:04 pm
gönderen afan1990
bestcore yazdı: Pzr May 16, 2021 10:45 pm
afan1990 yazdı: Pzr May 16, 2021 10:28 pm ilkini tam atmamışım kb buyur :D
Cstrike değilde bu olayı reapi kütüphanesiyle kolaylıkla yapabilirsiniz. Demek istediğim 4 tane register oluşturacağına "RG_RoundEnd" ile tek registerde bitirebilirsiniz.
Örneklerini aşşağıya bırakıyorum;

Kod: Tümünü seç

#include <reapi> // Reapi kütüphanesi kurulu olmalıdır.

RegisterHookChain(RG_RoundEnd, "RG_RoundEnd_Post", .post = true); // Post true olmalıdır.

public RG_RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
	switch(status)
	{
		case WINSTATUS_CTS:
		{
			// Roundu ct kazandiysa.
		}
		case WINSTATUS_TERRORIST:
		{
			// Roundu te kazandiysa.
		}
		case WINSTATUS_DRAW:
		{
			// Round berabere bittiyse.
		}
	}
}
* Ekstra olarak sunucuda bulunan bir cvar için "set_pcvar_num" kullanmanız daha sağlıklı olur.

Kod: Tümünü seç

set_pcvar_num(get_cvar_pointer("sv_restart"), 1);
önerilerin için teşekkürler,yeni başladığım için önerilerini dikkate alacağım :D