Ufak bir kod bloğu isteği
Moderatör: Moderatörler
-
Konu Sahibi - 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
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 |
Ufak bir kod bloğu isteği
bir özelliği tüm silahlara verirsen buga sokabilirsin(model vermek, hasar vermek vb.) ve detayıyla ilgilenmen gerekir.
örnek basit anlatımda bulundum,
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
ö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.
**/
}
}
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 |
-
- Mesajlar: 2574
- Kayıt: Çrş Ağu 23, 2017 9:17 pm
Ufak bir kod bloğu isteği
Bu şekilde silahlara değişik özellik verebilirsiniz. Bunu Spawn yerine AddPlayerItem komutunda da uygulayabilirsiniz.
Birçok silah komutu var. TakeDamage kullanmadan silahın damagesini bu şekilde bile ayarlayabiliyorsunuz.
gibi. İsteğin özel bir şey olursa buradan yazabilirsin, yardımcı olacağım.
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);
}
Kod: Tümünü seç
set_member(weapon, m_Weapon_flBaseDamage, Float:get_member(weapon, m_Weapon_flBaseDamage) * 2.0);
Link: | |
Linklerini gizle |
-
Konu Sahibi - 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
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
nasıl yapsam daha iyi olur
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
}
Link: | |
Linklerini gizle |
-
- Mesajlar: 2574
- Kayıt: Çrş Ağu 23, 2017 9:17 pm
Ufak bir kod bloğu isteği
Bu arada @Aconyonn,
Verdiğin komut bloğu yeterli değil. Açıklamasını aşağıda yaptım.
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 |
-
- Mesajlar: 2574
- Kayıt: Çrş Ağu 23, 2017 9:17 pm
-
Konu Sahibi - 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
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 |
-
Konu Sahibi - 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
Hazır eliniz değmişken REAPI çekebilirseniz daha iyi olur.
Link: | |
Linklerini gizle |
-
- Mesajlar: 1625
- Kayıt: Cmt Eyl 30, 2017 12:44 pm
- Konum: Samsun
Ufak bir kod bloğu isteği
Bu pragmalar ne işe yarıyor ve hepsini özellikleriyle gösteren birer var mı? Pragma semicolonu biliyorum da bunları bilmiyorum.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); } } }
Link: | |
Linklerini gizle |
-
- Mesajlar: 2574
- Kayıt: Çrş Ağu 23, 2017 9:17 pm
Ufak bir kod bloğu isteği
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.
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 |