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

https://discord.gg/43gGDQe6tS

Ufak bir kod bloğu isteği

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler

Kullanıcı avatarı

Konu Sahibi
OPC Line
Mesajlar: 1635
Kayıt: Pzt Tem 22, 2019 3:13 am
Server Ip/DNS: 213.238.173.xx
Clan İsmi: *YouKnowMyName*

Ufak bir kod bloğu isteği

Mesaj gönderen OPC Line »

Merhaba arkadaşlar bir pluginle yakından ilgileniyorum. Ama şunu çözemedim. Mesela bir özelliği tüm silahlara vermeyi nasıl yapailirim. Örnek bir eklentide olabilir veya ufak bir kesitte olabilir paylaşabilir misiniz ?

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

Aconyonn
Mesajlar: 393
Kayıt: Cum Eyl 15, 2017 3:52 pm
İletişim:

Ufak bir kod bloğu isteği

Mesaj gönderen Aconyonn »

bir özelliği tüm silahlara verirsen buga sokabilirsin(model vermek, hasar vermek vb.) ve detayıyla ilgilenmen gerekir.
örnek basit anlatımda bulundum,

Kod: Tümünü seç

#pragma semicolon 1

#include <amxmodx>
#include <reapi>

public plugin_init(){
	RegisterHookChain(RG_CBasePlayer_TakeDamage,"@rTakeDamage",.post=true);
}
@rTakeDamage(const this, pevInflictor, const  pevAttacker, Float:flDamage, bitsDamageType){
	#pragma unused pevInflictor,bitsDamageType

	if(!is_user_connected(this) || !is_user_alive(this)){
		return;
	}

	new wid=get_user_weapon(pevAttacker);
	/**
		Silahi kontrol ettirmek icin suanki silah nedir fonksiyonunu tanitiyoruz
	**/

	if(wid==CSW_M4A1){
		SetHookChainArg(4,ATYPE_FLOAT,flDamage*2.0);
		/**
			if döngüsüyle "eğer silahımız m4a1'e eşitse" işlem yaptır diyoruz.
			ve
			M4a1 silahinin verdigi default hasari 2.0 ile carptirdik.

		**/
	}
}
lazım olabilecek tanımlamalar ve fonksiyonlar,
https://dev-cs.ru/amxx/amxmodx/get_user_weapon/view
https://dev-cs.ru/amxx/cstrike_const/inc
CSW ID'leri: https://dev-cs.ru/amxx/cstrike_const/inc
https://dev-cs.ru/amxx/reapi/SetHookChainArg/view
https://dev-cs.ru/amxx/reapi/inc#413

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

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

Ufak bir kod bloğu isteği

Mesaj gönderen Colditz »

Bu şekilde silahlara değişik özellik verebilirsiniz. Bunu Spawn yerine AddPlayerItem komutunda da uygulayabilirsiniz.

Kod: Tümünü seç

#include <amxmodx>
#include <reapi>

public plugin_init() {
	RegisterHookChain(RG_CBasePlayer_Spawn, "@CBasePlayer_Spawn", .post = true);
}

@CBasePlayer_Spawn_Post(const pPlayer) {
	if(!is_user_alive(pPlayer)) {
		return;
	}

/* ÖRNEK 1 ----- DEAGLE MERMİSİNİ 1 E SABİTLER ---- HER SIKTIĞINDA RELOAD ATAR */
	new pWeapon = rg_give_custom_item(pPlayer, "weapon_deagle");
	rg_set_iteminfo(pWeapon, ItemInfo_iMaxClip, 1);
	set_member(pWeapon, m_Weapon_iClip, 1);

/* ÖRNEK 2 ----- M4A1 Susturucu Takip/Cikarmasini Engeller. Sadece Susturuculu oynatır*/	
	new pWeapon = rg_give_custom_item(pPlayer, "weapon_m4a1");
	set_member(pWeapon, m_Weapon_flNextSecondaryAttack, 9999.0);
	set_member(pWeapon, m_Weapon_bSecondarySilencerOn, true);
}
Birçok silah komutu var. TakeDamage kullanmadan silahın damagesini bu şekilde bile ayarlayabiliyorsunuz.

Kod: Tümünü seç

set_member(weapon, m_Weapon_flBaseDamage, Float:get_member(weapon, m_Weapon_flBaseDamage) * 2.0);
gibi. İsteğin özel bir şey olursa buradan yazabilirsin, yardımcı olacağım.

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

Konu Sahibi
OPC Line
Mesajlar: 1635
Kayıt: Pzt Tem 22, 2019 3:13 am
Server Ip/DNS: 213.238.173.xx
Clan İsmi: *YouKnowMyName*

Ufak bir kod bloğu isteği

Mesaj gönderen OPC Line »

Aslında şöyle söyleyim. Bir plugin var. Bir özellik var bunu sadece awp ve scoutta yapıyor ama ben tüm silahlarda yapmasını istiyorum. İlgili kod

Kod: Tümünü seç

	if(!theKiller) return PLUGIN_CONTINUE

	if(lastweap[theKiller] == CSW_AWP && get_cvar_num("cvar"))
	{

	}
	else if(lastweap[theKiller] == CSW_SCOUT && get_cvar_num("cvar"))
	{

	}
	else
	{
		return PLUGIN_CONTINUE
	}
nasıl yapsam daha iyi olur

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

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

Ufak bir kod bloğu isteği

Mesaj gönderen Colditz »

Bu arada @Aconyonn,
Verdiğin komut bloğu yeterli değil. Açıklamasını aşağıda yaptım.

Kod: Tümünü seç

public plugin_init(){
	// eğer hook çekip bir şey değiştireceksen false kullanman gerek.
	//RegisterHookChain(RG_CBasePlayer_TakeDamage,"@rTakeDamage",.post=true);
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "@rTakeDamage", .post=false);
}

@rTakeDamage(const this, pevInflictor, const  pevAttacker, Float:flDamage, bitsDamageType){
	//Buna gerek yok
	//#pragma unused pevInflictor,bitsDamageType

	//!is_user_alive komutu zaten oyuncunun oyunda olmadığında false oluyor gereksiz komut.
	//Ayrıca bunu kontrol etmeye gerek yok. Bunu attacker için kontrol etmen lazım. Çünkü hasarı sadece attacker vermiyor.
	//if(!is_user_connected(this) || !is_user_alive(this)){
	if(!is_user_alive(pevAttacker)) {
		return;
	}

	//Madem reapi kullanıyoruz bunu düzgün yapmamız gerek.
	//Yine get_user_weapon da sıkıntı değil. Bu sadece tavsiye.
	//new wid=get_user_weapon(pevAttacker);
	new pWeapon = get_member(pevAttacker, m_pActiveItem);

	switch(pWeapon) {
		case WEAPON_M4A1: {
			SetHookChainArg(4, ATYPE_FLOAT, flDamage * 2.0);
		}
	}
}

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

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

Ufak bir kod bloğu isteği

Mesaj gönderen Colditz »

Kodun tamamını atsan da yardımcı olsak?

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

Konu Sahibi
OPC Line
Mesajlar: 1635
Kayıt: Pzt Tem 22, 2019 3:13 am
Server Ip/DNS: 213.238.173.xx
Clan İsmi: *YouKnowMyName*

Ufak bir kod bloğu isteği

Mesaj gönderen OPC Line »

Ana eklenti bu. Eklenti awp ve scout silahı ile hs atarsanız maxpayne gibi merminin gidişatını izliyor. Ama ben her silahta olsun istiyorum. Aslında yaptım ama eklenti çalışmamaya başladı. Bende ana eklentiyi paylaştım.
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

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

Konu Sahibi
OPC Line
Mesajlar: 1635
Kayıt: Pzt Tem 22, 2019 3:13 am
Server Ip/DNS: 213.238.173.xx
Clan İsmi: *YouKnowMyName*

Ufak bir kod bloğu isteği

Mesaj gönderen OPC Line »

Hazır eliniz değmişken REAPI çekebilirseniz daha iyi olur.

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

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

Ufak bir kod bloğu isteği

Mesaj gönderen bestcore »

Colditz yazdı: Sal Ara 29, 2020 11:11 pm Bu arada @Aconyonn,
Verdiğin komut bloğu yeterli değil. Açıklamasını aşağıda yaptım.

Kod: Tümünü seç

public plugin_init(){
	// eğer hook çekip bir şey değiştireceksen false kullanman gerek.
	//RegisterHookChain(RG_CBasePlayer_TakeDamage,"@rTakeDamage",.post=true);
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "@rTakeDamage", .post=false);
}

@rTakeDamage(const this, pevInflictor, const  pevAttacker, Float:flDamage, bitsDamageType){
	//Buna gerek yok
	//#pragma unused pevInflictor,bitsDamageType

	//!is_user_alive komutu zaten oyuncunun oyunda olmadığında false oluyor gereksiz komut.
	//Ayrıca bunu kontrol etmeye gerek yok. Bunu attacker için kontrol etmen lazım. Çünkü hasarı sadece attacker vermiyor.
	//if(!is_user_connected(this) || !is_user_alive(this)){
	if(!is_user_alive(pevAttacker)) {
		return;
	}

	//Madem reapi kullanıyoruz bunu düzgün yapmamız gerek.
	//Yine get_user_weapon da sıkıntı değil. Bu sadece tavsiye.
	//new wid=get_user_weapon(pevAttacker);
	new pWeapon = get_member(pevAttacker, m_pActiveItem);

	switch(pWeapon) {
		case WEAPON_M4A1: {
			SetHookChainArg(4, ATYPE_FLOAT, flDamage * 2.0);
		}
	}
}
Bu pragmalar ne işe yarıyor ve hepsini özellikleriyle gösteren birer var mı? Pragma semicolonu biliyorum da bunları bilmiyorum.

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

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

Ufak bir kod bloğu isteği

Mesaj gönderen Colditz »

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

Pek kullanmaya gerek olmadığı için fazla konu yok. Semicolon dışında kullanmanızı tavsiye etmem.

Link:
Linklerini gizle
Linki Kopyala
Cevapla