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

https://discord.gg/43gGDQe6tS

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Selamlar arkadaşlar,
Bir ricam var CSDM serverimiz için kullandığımız harita başlangıcın da seçtiğimiz Normal&HSMod seçimi pluginimiz var oyuncular bunu voteliyor. Buna ek olarak CSDM mod seçimi gelmesini istiyorum başta oyuncular DM veya FFA olarak kendileri modu secebilecek aslında çok basit diye düşünüyorum fakat bilgim yok

Sadece, mp_freeforall cvari dm yada FFA ya göre değişecek bunun dışında HSMod normal mod’un oylamanın dışında cvar a bağlanmasını istiyorum bazen oyuncular HSMod istemiyor tekrar haritayı baştan açıp oylama yaptırmak zorunda kalıyoruz

Lütfen yardım edicek bir gönüllü olursa çok sevinirim saygilar
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

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

bestcore
Mesajlar: 1625
Kayıt: Cmt Eyl 30, 2017 12:44 pm
Konum: Samsun

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen bestcore »

Bu eklenti, 2 oylama üzerine kurulmuş. İçerisine 2'den fazla mod oylaması eklemek uğraştırır. Siz nasıl bir oylama eklentisi istiyorsunuz ? Moda göre cvar ayarı mı belirlenecek ? Detayları verirseniz, birdahaki hafta boş zamanımda yapabilirim. Hafta sonu sınavım var.

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Hocam her zaman ki gibi umutluyum sizden bana çok yardımınız oldu öncelikle sağolun.

Bu pluginde yeni bir harita açıldıktan 5 10 saniye sonra normal veya hsmod oyun seçimi geliyor.

Biz istiyoruz ki önce oyuncular DM mi FFA mı onu o modu secsinler ondan sonra Normalmi HSMod mu onu secsinler.

Yani iki ayrı oylama olcak. Tahminimce oylama için seçim yapılan fonksiyon cogaltilip önce DM yada FFA sonra Normal yada HS seçilecek.


Bunun dışında normal ve HSMod herhangi bir cvar ile değiştirilemiyor ben normal moddan hs ye yada HS den normal moda oyun içerisinde geçmek istediğimde bunu yapamıyorum tekrar haritayı açıp oyunculardan istedikleri şeyi seçmesini istiyorum. Normal veya hsmod fonksiyonlarını bir cvar a da bağlarsak örnek dm_hsmod 1/0 yaptığımızda aç kapa olursa CSDM modülünde çok güzel bir Plugin ortaya çıkarmış oluruz umarım anlatabilmisimdir

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

bestcore
Mesajlar: 1625
Kayıt: Cmt Eyl 30, 2017 12:44 pm
Konum: Samsun

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen bestcore »

Buraya kadar basit fakat mod aktif olunca ne özellikleri olacak ? DM, FFA, Normal veya HS modu özellikleri neler, bir özellik ekleyecek miyim ?

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Mevcut plugin de normal seçildiğinde normal damage hs seçildiğinde hs damage sadece kafadan hit box işliyor. Bu hâli sorunsuz bir şekilde çalışıyor.

Özellik olarak Map başladıktan belirli bi süre sonra oylama geliyor bunu cvar a bağlayıp belli bir yetkiye sahip admin de tekrar bu oylamayı başlayabilmeli.

Ben denedim fakat becremedim plugin initdeki kodları başka bir fonksyona alıp saydan /modvote yapıldığında oylama başlangıç fonksiyonun çalsmasi mantıklı onun dışında hitbox yani Normalmi hs mi secimi cvar a bağlanmalı oylamadan sonra yönetici isterse bunu değiştirebilme

DM: seçilirse;
amx_cvar mp_freeforall 0
amx_cvar mp_autoteambalance 1

FFA: seçilirse;
amx_cvar mp_freeforall 1


Bunlara ek olarak her 5 dakika da bir say’dan oyunculara mod hakkında bilgilendirme geçerse mukkememmel bir hâl alır.
CSDMOD: şuan da FFA (Herkes Tek) Modu aktif ve Vuruşlar: Normal yada Şuan da DM (Karşılık Takım) modu aktif vuruşlar HS sadece Kafadan vurabilirsin şeklinde

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

bestcore
Mesajlar: 1625
Kayıt: Cmt Eyl 30, 2017 12:44 pm
Konum: Samsun

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen bestcore »

İstediğin gibi yaptım, dene bakalım. Satır 6'dan yonetici menüye girebilmek için gereken yetkiyi ayarlayabilirsin. Menü "say /modmenu" olarak açılır. Buyur;

Kod: Tümünü seç

#pragma semicolon 1

#include <amxmodx>
#include <reapi>

#define ADMIN_CSDM  ADMIN_RCON  // Oylama ayarlarını kullanabilmesi için gerekli yetki.

new const szUpperTag[]  = "\rforum.csd\d -";
new const szUnderTag[]  = "\yforum.csd\d -\w";
new const szChatTag[] = "^4forum.csd :";

enum (+= 1337)
{
	TASK_STARTCOUNTDOWN = 1337,
	TASK_VOTECOUNTDOWN,
	TASK_APPLYMODSETTINGS,
	TASK_TRYDISPLAY
}

new g_blVoteing[MAX_PLAYERS+1],
	g_iVotes[2],
	g_pointer[2],
	g_iCountDownTimer,
	g_iCountDownNum;

new bool:g_blMode[2],
	bool:g_blNextVote;

enum _:CvarsEnum
{
	cvCountDownTimer,
	cvCountDownNum
};
new g_cvars[CvarsEnum];

public plugin_init()
{
	register_plugin("CSDM Mod Voting", "0.1", "` BesTCore;");

	register_clcmd("say /modmenu", "clcmd_modmenu");

	set_task(5.0, "StartModVoting"); // Map açıldığında oylamanın başlama zamanı.
	set_task(40.0, "AdvartiseMod", .flags = "b"); // Mod reklami.

	RegisterHookChain(RG_CBasePlayer_TakeDamage, "RG_CBasePlayer_TakeDamage_Pre", .post = false);

	bind_pcvar_num(create_cvar("OylamaSuresi", "30", _, "Oylama Kac Saniye Surecek ?"), g_cvars[cvCountDownTimer]);
	bind_pcvar_num(create_cvar("OylamaBaslamaSuresi", "6", _, "Oylama Kac Saniye Icerisinde Basliyacak(Geri Sayim) ?"), g_cvars[cvCountDownNum]);

	g_pointer[0] = get_cvar_pointer("mp_freeforall");
	g_pointer[1] = get_cvar_pointer("mp_autoteambalance");
}
public AdvartiseMod()
{
	client_print_color(0, 0, "%s ^3Suanda^4 %s^3 modu aktif, vuruslar^4 %s.", szChatTag, g_blMode[0] ? "FFA":"DM", g_blMode[1] ? "Sadece Kafadan":"Normal");
	client_print_color(0, 0, "%s ^3Suanda^4 %s^3 modu aktif, vuruslar^4 %s.", szChatTag, g_blMode[0] ? "FFA":"DM", g_blMode[1] ? "Sadece Kafadan":"Normal");
}
// Mod authorized menu.
public clcmd_modmenu(const id)
{
	if(~get_user_flags(id) & ADMIN_CSDM)
	{
		client_print_color(id, id, "%s ^3Bu menuye girmeye yetkin yok.", szChatTag);
		return;
	}

	new bestm = menu_create(fmt("%s Yonetici Mod Menu", szUpperTag), "clcmd_modmenu_handler");

	menu_additem(bestm, fmt("%s Oylama Baslat^n", szUnderTag));
	menu_additem(bestm, fmt("%s 1. Modu Degistir \d[\r%s\d]", szUnderTag, g_blMode[0] ? "FFA Mod":"DM Mod"));
	menu_additem(bestm, fmt("%s 2. Modu Degistir \d[\r%s\d]", szUnderTag, g_blMode[1] ? "HS Mod":"Normal Mod"));

	menu_setprop(bestm, MPROP_EXITNAME, "\rCikis");
	menu_display(id, bestm);
}
public clcmd_modmenu_handler(const id, const iMenu, const iItem)
{
	switch(iItem)
	{
		case 0:
		{
			if(task_exists(TASK_STARTCOUNTDOWN) || task_exists(TASK_VOTECOUNTDOWN))
			{
				client_print_color(id, id, "%s ^3Suanda oylama devam ediyor, oylama baslatamazsiniz.", szChatTag);
				return PLUGIN_HANDLED;
			}
			set_task(1.0, "StartModVoting");
			client_print_color(0, 0, "%s ^1%n ^3adli admin^4 Mod Oylamasi^3 baslatti.", szChatTag, id);
		}
		case 1:
		{
			if(g_blMode[0])
			{
				g_blMode[0] = false;
				set_pcvar_num(g_pointer[0], 0);
				set_pcvar_num(g_pointer[1], 1);
				client_print_color(0, 0, "%s ^1%n ^3adli admin oyun modunu^4 DM Mod^3 olarak degistirdi.", szChatTag, id);
			}
			else
			{
				g_blMode[0] = true;
				set_pcvar_num(g_pointer[0], 1);
				client_print_color(0, 0, "%s ^1%n ^3adli admin oyun modunu^4 FFA Mod^3 olarak degistirdi.", szChatTag, id);
			}
			clcmd_modmenu(id);
		}
		case 2:
		{
			g_blMode[1] = g_blMode[1] ? false:true;
			client_print_color(0, 0, "%s ^1%n ^3adli admin 2.oyun modunu degistirdi.", szChatTag, id);
			clcmd_modmenu(id);
		}
	}
	menu_destroy(iMenu);
	return PLUGIN_HANDLED;
}
// Voting start meter.
public StartModVoting(Taskid)
{
	if(!(task_exists(TASK_STARTCOUNTDOWN)))
	{
		g_iCountDownNum = g_cvars[cvCountDownNum];
	}
	g_iCountDownNum--;

	if(g_iCountDownNum >= 0)
	{
		if(g_blNextVote)
		{
			client_print_color(0, 0, "%s^3 2. CSDM Mod oylamasinin baslamasina^4 %i Saniye^3 kaldi.", szChatTag, g_iCountDownNum);
		}
		else
		{
			client_print_color(0, 0, "%s ^3CSDM Mod oylamasinin baslamasina^4 %i Saniye^3 kaldi.", szChatTag, g_iCountDownNum);
		}
		set_task(1.0, "StartModVoting", TASK_STARTCOUNTDOWN, .flags = "b");
	}
	else
	{
		TaskControl(TASK_STARTCOUNTDOWN);
		g_iVotes[0] = g_iVotes[1] = 0;
		g_iCountDownTimer = g_cvars[cvCountDownTimer];
		set_task(1.0, "VoteCountDown", TASK_VOTECOUNTDOWN, .flags = "b");
		MenuDisplay();
	}
}
// Mod vote menu.
public MenuDisplay()
{
	new bestm = menu_create(fmt("%s CSDM Oylama Menusu^n\dOylama Bitmesine Kalan\r %i\d Saniye", szUpperTag, g_iCountDownTimer), "MenuDisplay_handler");

	if(g_blNextVote)
	{
		menu_additem(bestm, fmt("%s Normal Mod \d[\r%i \yOY\d]", szUnderTag, g_iVotes[0]));
		menu_additem(bestm, fmt("%s HS Mod \d[\r%i \yOY\d]^n^n\dGecerli Oy Sayisi:\r %i Oy", szUnderTag, g_iVotes[1], g_iVotes[0] + g_iVotes[1]));
	}
	else
	{
		menu_additem(bestm, fmt("%s DM Mod \d[\r%i \yOY\d]", szUnderTag, g_iVotes[0]));
		menu_additem(bestm, fmt("%s FFA Mod \d[\r%i \yOY\d]^n^n\dGecerli Oy Sayisi:\r %i Oy", szUnderTag, g_iVotes[1], g_iVotes[0] + g_iVotes[1]));
	}

	menu_setprop(bestm, MPROP_EXIT, MEXIT_NEVER);

	for(new i = 1; i <= MaxClients; i++)
	{
		if(!(is_user_connected(i)))
		{
			continue;
		}
		menu_display(i, bestm);
	}
	
	if(task_exists(TASK_VOTECOUNTDOWN))
	{
		set_task(0.5, "MenuDisplay", TASK_TRYDISPLAY); // Menuden cikarsa tekrar göstert.
	}
}
public MenuDisplay_handler(const id, const iMenu, const iItem)
{
	switch(iItem)
	{
		case 0:
		{
			if(g_blVoteing[id])
			{
				client_print_color(id, id, "%s ^3Sen zaten oy kullandin.", szChatTag);
				return;
			}
			if(g_blNextVote)
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 Normal Mod^3'a oy verdi.", szChatTag, id);
			}
			else
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 DM Mod^3'a oy verdi.", szChatTag, id);
			}
			g_iVotes[0]++;
			g_blVoteing[id] = true;
		}
		case 1:
		{
			if(g_blVoteing[id])
			{
				client_print_color(id, id, "%s ^3Sen zaten oy kullandin.", szChatTag);
				return;
			}
			
			if(g_blNextVote)
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 HS Mod^3'a oy verdi.", szChatTag, id);
			}
			else
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 FFA Mod^3'a oy verdi.", szChatTag, id);
			}
			g_iVotes[1]++;
			g_blVoteing[id] = true;
		}
	}
}
// Explain Decision.
public ExplainDecision()
{
	if(g_blNextVote)
	{
		if(g_iVotes[0] > g_iVotes[1]) ExplainDecisionText("Normal Mod"), g_blMode[1] = false;

		else if(g_iVotes[1] > g_iVotes[0]) ExplainDecisionText("HS Mod"), g_blMode[1] = true;

		else ExplainDecisionText("Normal Mod"), g_blMode[1] = false;

		client_print_color(0, 0, "%s ^3Oylama bitti, mod ayarlari uygulanip restart atiliyor.", szChatTag);
		set_pcvar_num(get_cvar_pointer("sv_restart"), 5);
		set_task(5.0, "ApplyModSettings", TASK_APPLYMODSETTINGS);
	}
	else
	{
		if(g_iVotes[0] > g_iVotes[1]) ExplainDecisionText("DM Mod"), g_blMode[0] = false;

		else if(g_iVotes[1] > g_iVotes[0]) ExplainDecisionText("FFA Mod"), g_blMode[0] = true;
		
		else ExplainDecisionText("DM Mod"), g_blMode[0] = false;

		g_blNextVote = true;
		set_task(3.0, "StartModVoting");
	}

	g_iVotes[0] = g_iVotes[1] = 0;

	for(new i = 1; i <= MaxClients; i++)
	{
		if(!(is_user_connected(i)))
		{
			continue;
		}
		g_blVoteing[i] = false;
		show_menu(i, 0, "");
	}
}
ExplainDecisionText(const szText[])
{
	client_print_color(0, 0, "%s ^3Oylamadan^4 %s^3 cikti.", szChatTag, szText);
	client_print_color(0, 0, "%s ^3Oylamadan^4 %s^3 cikti.", szChatTag, szText);
}
// Mod activated.
public ApplyModSettings(Taskid)
{
	if(g_blMode[0])
	{
		set_pcvar_num(g_pointer[0], 1);
	}
	else
	{
		set_pcvar_num(g_pointer[0], 0);
		set_pcvar_num(g_pointer[1], 1);
	}
	TaskControl(TASK_APPLYMODSETTINGS);
	g_blNextVote = false;
}
// Re hooks.
public RG_CBasePlayer_TakeDamage_Pre(const pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
{
	if(g_blMode[1] == false || !(is_user_alive(pevAttacker) || rg_is_player_can_takedamage(pevVictim, pevAttacker)) || pevVictim == pevAttacker)
	{
		return;
	}

	if(get_member(pevVictim, m_LastHitGroup) != HIT_HEAD)
	{
		SetHookChainArg(4, ATYPE_FLOAT, 0.0); // Kafadan vurmazsa hasarı 0.0'a çek.
	}
}
// Countdown time
public VoteCountDown(Taskid)
{
	if(g_iCountDownTimer > 0)
	{
		g_iCountDownTimer--;
	}
	else
	{
		TaskControl(TASK_VOTECOUNTDOWN);
		TaskControl(TASK_TRYDISPLAY);
		ExplainDecision();
	}
}
// Task control
TaskControl(const Taskid)
{
	if(task_exists(Taskid))
	{
		remove_task(Taskid);
	}
}
// Blocked
public client_putinserver(id)
{
	g_blVoteing[id] = false; // Bağlandığında ayarı sıfırla.
}

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Hocam yine harikalar yaratiyosunuz :D yeni gördüm hemen deneyip dönüyorum

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Hocam elinize sağlık on numara olmuş baştan yazmisiniz birde emeginize sağlık.

oylama eşit olduğunda defualt mod secimini FFA olarak değiştirdik.


Bu hâli bile bizim için yeterli fakat şu noktaları tamamlamak isterdik.

1. Oylama başlangıç saniyesi 5, Oylama süresi 10 saniye. Total de Max 30 sn

2.oylama için geri sayım yerine oylama 5 saniyede başlıyor yazsak bir kere yeterli.

3. Advanced fonksiyonunda ki hatırlatmayı iki kere yazdırıyor 60 saniye de bir yazması yeterli

4.hsmod seçildiğinde vücuttan hasar yemiyor fakat darbe yiyor oyuncunun yürüyüşünü bozuyor kitliyor bunu kaldirabilirsek çok iyi olur.


Çok teşekkürler değerli hocam

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

bestcore
Mesajlar: 1625
Kayıt: Cmt Eyl 30, 2017 12:44 pm
Konum: Samsun

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen bestcore »

Dediklerini yaptım fakat vücuttan darbe yemeyi kapatamadım, kodunu bilmiyorum araştırmak gerek. Şuan araştırmaya fırsatım olmadı, bulursam dönüş yaparım. Buyur,

Kod: Tümünü seç

#pragma semicolon 1

#include <amxmodx>
#include <reapi>

#define ADMIN_CSDM  ADMIN_RCON  // Oylama ayarlarını kullanabilmesi için gerekli yetki.

new const szUpperTag[]  = "\rforum.csd\d -";
new const szUnderTag[]  = "\yforum.csd\d -\w";
new const szChatTag[] = "^4forum.csd :";

enum (+= 1337)
{
	TASK_STARTVOTE = 1337,
	TASK_VOTECOUNTDOWN,
	TASK_APPLYMODSETTINGS,
	TASK_TRYDISPLAY
}

new g_blVoteing[MAX_PLAYERS+1],
	g_iVotes[2],
	g_pointer[2],
	g_iCountDownTimer;

new bool:g_blMode[2],
	bool:g_blNextVote;

enum _:CvarsEnum
{
	cvCountDownTimer
};
new g_cvars[CvarsEnum];

public plugin_init()
{
	register_plugin("CSDM Mod Voting", "0.1", "` BesTCore;");

	register_clcmd("say /modmenu", "clcmd_modmenu");

	set_task(5.0, "StartModVoting"); // Map açıldığında oylamanın başlama zamanı.
	set_task(60.0, "AdvartiseMod", .flags = "b"); // Mod reklami.

	RegisterHookChain(RG_CBasePlayer_TakeDamage, "RG_CBasePlayer_TakeDamage_Pre", .post = false);

	bind_pcvar_num(create_cvar("OylamaSuresi", "30", _, "Oylama Kac Saniye Surecek ?"), g_cvars[cvCountDownTimer]);

	g_pointer[0] = get_cvar_pointer("mp_freeforall");
	g_pointer[1] = get_cvar_pointer("mp_autoteambalance");
}
public AdvartiseMod()
{
	client_print_color(0, 0, "%s ^3Suanda^4 %s^3 modu aktif, vuruslar^4 %s.", szChatTag, g_blMode[0] ? "FFA":"DM", g_blMode[1] ? "Sadece Kafadan":"Normal");
	//client_print_color(0, 0, "%s ^3Suanda^4 %s^3 modu aktif, vuruslar^4 %s.", szChatTag, g_blMode[0] ? "FFA":"DM", g_blMode[1] ? "Sadece Kafadan":"Normal");
}
// Mod authorized menu.
public clcmd_modmenu(const id)
{
	if(~get_user_flags(id) & ADMIN_CSDM)
	{
		client_print_color(id, id, "%s ^3Bu menuye girmeye yetkin yok.", szChatTag);
		return;
	}

	new bestm = menu_create(fmt("%s Yonetici Mod Menu", szUpperTag), "clcmd_modmenu_handler");

	menu_additem(bestm, fmt("%s Oylama Baslat^n", szUnderTag));
	menu_additem(bestm, fmt("%s 1. Modu Degistir \d[\r%s\d]", szUnderTag, g_blMode[0] ? "FFA Mod":"DM Mod"));
	menu_additem(bestm, fmt("%s 2. Modu Degistir \d[\r%s\d]", szUnderTag, g_blMode[1] ? "HS Mod":"Normal Mod"));

	menu_setprop(bestm, MPROP_EXITNAME, "\rCikis");
	menu_display(id, bestm);
}
public clcmd_modmenu_handler(const id, const iMenu, const iItem)
{
	switch(iItem)
	{
		case 0:
		{
			if(task_exists(TASK_STARTVOTE) || task_exists(TASK_VOTECOUNTDOWN))
			{
				client_print_color(id, id, "%s ^3Suanda oylama devam ediyor, oylama baslatamazsiniz.", szChatTag);
				return PLUGIN_HANDLED;
			}
			set_task(1.0, "StartModVoting");
			client_print_color(0, 0, "%s ^1%n ^3adli admin^4 Mod Oylamasi^3 baslatti.", szChatTag, id);
		}
		case 1:
		{
			if(g_blMode[0])
			{
				g_blMode[0] = false;
				set_pcvar_num(g_pointer[0], 0);
				set_pcvar_num(g_pointer[1], 1);
				client_print_color(0, 0, "%s ^1%n ^3adli admin oyun modunu^4 DM Mod^3 olarak degistirdi.", szChatTag, id);
			}
			else
			{
				g_blMode[0] = true;
				set_pcvar_num(g_pointer[0], 1);
				client_print_color(0, 0, "%s ^1%n ^3adli admin oyun modunu^4 FFA Mod^3 olarak degistirdi.", szChatTag, id);
			}
			clcmd_modmenu(id);
		}
		case 2:
		{
			g_blMode[1] = g_blMode[1] ? false:true;
			client_print_color(0, 0, "%s ^1%n ^3adli admin 2.oyun modunu degistirdi.", szChatTag, id);
			clcmd_modmenu(id);
		}
	}
	menu_destroy(iMenu);
	return PLUGIN_HANDLED;
}
// Voting start meter.
public StartModVoting(Taskid)
{
	if(g_blNextVote)
	{
		client_print_color(0, 0, "%s^3 2. CSDM Mod oylamasi^4 5 Saniye^3 sonra baslayacak.", szChatTag);
	}
	else
	{
		client_print_color(0, 0, "%s ^3CSDM Mod oylamasi^4 5 Saniye^3 sonra baslayacak.", szChatTag);
	}

	TaskControl(TASK_STARTVOTE);
	set_task(5.0, "StartVote", TASK_STARTVOTE);
}
public StartVote(Taskid)
{
	g_iVotes[0] = g_iVotes[1] = 0;
	g_iCountDownTimer = g_cvars[cvCountDownTimer];
	set_task(1.0, "VoteCountDown", TASK_VOTECOUNTDOWN, .flags = "b");
	MenuDisplay();
}
// Mod vote menu.
public MenuDisplay()
{
	new bestm = menu_create(fmt("%s CSDM Oylama Menusu^n\dOylama Bitmesine Kalan\r %i\d Saniye", szUpperTag, g_iCountDownTimer), "MenuDisplay_handler");

	if(g_blNextVote)
	{
		menu_additem(bestm, fmt("%s Normal Mod \d[\r%i \yOY\d]", szUnderTag, g_iVotes[0]));
		menu_additem(bestm, fmt("%s HS Mod \d[\r%i \yOY\d]^n^n\dGecerli Oy Sayisi:\r %i Oy", szUnderTag, g_iVotes[1], g_iVotes[0] + g_iVotes[1]));
	}
	else
	{
		menu_additem(bestm, fmt("%s DM Mod \d[\r%i \yOY\d]", szUnderTag, g_iVotes[0]));
		menu_additem(bestm, fmt("%s FFA Mod \d[\r%i \yOY\d]^n^n\dGecerli Oy Sayisi:\r %i Oy", szUnderTag, g_iVotes[1], g_iVotes[0] + g_iVotes[1]));
	}

	menu_setprop(bestm, MPROP_EXIT, MEXIT_NEVER);

	for(new i = 1; i <= MaxClients; i++)
	{
		if(!(is_user_connected(i)))
		{
			continue;
		}
		menu_display(i, bestm);
	}
	
	if(task_exists(TASK_VOTECOUNTDOWN))
	{
		set_task(0.5, "MenuDisplay", TASK_TRYDISPLAY); // Menuden cikarsa tekrar göstert.
	}
}
public MenuDisplay_handler(const id, const iMenu, const iItem)
{
	switch(iItem)
	{
		case 0:
		{
			if(g_blVoteing[id])
			{
				client_print_color(id, id, "%s ^3Sen zaten oy kullandin.", szChatTag);
				return;
			}
			if(g_blNextVote)
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 Normal Mod^3'a oy verdi.", szChatTag, id);
			}
			else
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 DM Mod^3'a oy verdi.", szChatTag, id);
			}
			g_iVotes[0]++;
			g_blVoteing[id] = true;
		}
		case 1:
		{
			if(g_blVoteing[id])
			{
				client_print_color(id, id, "%s ^3Sen zaten oy kullandin.", szChatTag);
				return;
			}
			
			if(g_blNextVote)
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 HS Mod^3'a oy verdi.", szChatTag, id);
			}
			else
			{
				client_print_color(0, 0, "%s ^1%n ^3adli oyuncu^4 FFA Mod^3'a oy verdi.", szChatTag, id);
			}
			g_iVotes[1]++;
			g_blVoteing[id] = true;
		}
	}
}
// Explain Decision.
public ExplainDecision()
{
	if(g_blNextVote)
	{
		if(g_iVotes[0] > g_iVotes[1]) ExplainDecisionText("Normal Mod"), g_blMode[1] = false;

		else if(g_iVotes[1] > g_iVotes[0]) ExplainDecisionText("HS Mod"), g_blMode[1] = true;

		else ExplainDecisionText("Normal Mod"), g_blMode[1] = false;

		client_print_color(0, 0, "%s ^3Oylama bitti, mod ayarlari uygulanip restart atiliyor.", szChatTag);
		set_pcvar_num(get_cvar_pointer("sv_restart"), 5);
		set_task(5.0, "ApplyModSettings", TASK_APPLYMODSETTINGS);
	}
	else
	{
		if(g_iVotes[0] > g_iVotes[1]) ExplainDecisionText("DM Mod"), g_blMode[0] = false;

		else if(g_iVotes[1] > g_iVotes[0]) ExplainDecisionText("FFA Mod"), g_blMode[0] = true;
		
		else ExplainDecisionText("FFA Mod"), g_blMode[0] = true;

		g_blNextVote = true;
		set_task(3.0, "StartModVoting");
	}

	g_iVotes[0] = g_iVotes[1] = 0;

	for(new i = 1; i <= MaxClients; i++)
	{
		if(!(is_user_connected(i)))
		{
			continue;
		}
		g_blVoteing[i] = false;
		show_menu(i, 0, "");
	}
}
ExplainDecisionText(const szText[])
{
	client_print_color(0, 0, "%s ^3Oylamadan^4 %s^3 cikti.", szChatTag, szText);
	client_print_color(0, 0, "%s ^3Oylamadan^4 %s^3 cikti.", szChatTag, szText);
}
// Mod activated.
public ApplyModSettings(Taskid)
{
	if(g_blMode[0])
	{
		set_pcvar_num(g_pointer[0], 1);
	}
	else
	{
		set_pcvar_num(g_pointer[0], 0);
		set_pcvar_num(g_pointer[1], 1);
	}
	TaskControl(TASK_APPLYMODSETTINGS);
	g_blNextVote = false;
}
// Re hooks.
public RG_CBasePlayer_TakeDamage_Pre(const pevVictim, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType)
{
	if(g_blMode[1] == false || !(is_user_alive(pevAttacker) || rg_is_player_can_takedamage(pevVictim, pevAttacker)) || pevVictim == pevAttacker)
	{
		return;
	}

	if(get_member(pevVictim, m_LastHitGroup) != HIT_HEAD)
	{
		SetHookChainArg(4, ATYPE_FLOAT, 0.0); // Kafadan vurmazsa hasarı 0.0'a çek.
	}
}
// Countdown time
public VoteCountDown(Taskid)
{
	if(g_iCountDownTimer > 0)
	{
		g_iCountDownTimer--;
	}
	else
	{
		TaskControl(TASK_VOTECOUNTDOWN);
		TaskControl(TASK_TRYDISPLAY);
		ExplainDecision();
	}
}
// Task control
TaskControl(const Taskid)
{
	if(task_exists(Taskid))
	{
		remove_task(Taskid);
	}
}
// Blocked
public client_putinserver(id)
{
	g_blVoteing[id] = false; // Bağlandığında ayarı sıfırla.
}

Link:
Linklerini gizle
Linki Kopyala

Konu Sahibi
thek4x
Mesajlar: 41
Kayıt: Cmt Mar 20, 2021 1:40 pm

CSDM Mod Seçimi Çok Basit Plugin Edit İstiyorum

Mesaj gönderen thek4x »

Hocam CSDM modu için ortaya çok iyi bir plugin çıkardık elinize sağlık size inancım her zaman tamdı.
HSMOD için örnek bir kod buldum hasarsız darbe olayı için aynı zamanda HSMOD da bıçak hasarı kapalı bu kodda muhtemelen onun kontrolü de var. Umarım işe yarar. Bunuda yapabilirsek şayet müsade ederseniz eklentiler bölümünde bunu güzel bir başlıkla Türkçe İngilizce yayinlaym

Kod: Tümünü seç

cvar_blockknife_dmg = register_cvar( "dm_block_knife_dmg", "0" )

public fw_TraceAttack( victim, attacker, Float:damage, Float:direction[3], trace, damageBits ) {
	if( !is_user_connected(victim) ) return HAM_IGNORED			

	if( get_user_weapon( attacker ) == CSW_KNIFE ) {
		if( get_pcvar_num( cvar_blockknife_dmg ) )
			return HAM_SUPERCEDE
	}
	else if( victim != attacker && ( 1 <= attacker <= g_iMaxPlayers ) && get_tr2( trace, TR_iHitgroup ) != HIT_HEAD ) {
		set_tr2( trace, TR_flFraction, 1.0 )	// didn't hit anything
		return HAM_SUPERCEDE
	}

	return HAM_IGNORED
}

Link:
Linklerini gizle
Linki Kopyala
Cevapla