Dedicated-Server.RU  


Ответ
 
Опции темы Опции просмотра
Старый 19.06.2016, 15:43   #31
с доступом к форуму безопасности
 
Регистрация: 23.02.2014
Адрес: Томск-7
Сообщений: 295
Сказал спасибо: 98
Поблагодарили 952 раз(а) в 166 сообщениях
По умолчанию

Цитата:
Сообщение от souvikdas95 Посмотреть сообщение
How can I convert the following code into reapi form?

Нажмите здесь чтобы увидеть полный текст

Код:
new const m_rgpPlayerItems_CBasePlayer[6] = { 367 , 368 , ... };
new const m_rgpPlayerItems_CWeaponBox[6] = { 34 , 35 , ... };
#define XO_CWEAPONBOX		4
#define XO_CBASEPLAYERITEM	4
public GetWeaponBoxType ( ent )
{
	static weapon;
	for ( new i=1; i<=5; i++ )
	{
		weapon = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox[i], XO_CWEAPONBOX );
		if( weapon > 0 )
			return cs_get_weapon_id ( weapon );
	}
	return 0;
}
[свернуть]
Код:
stock WeaponIdType:GetWeaponBoxType(const ent)
{
	for (new i = 1; i < MAX_ITEM_TYPES; ++i) {
		new pPackEntity = get_member(ent, m_WeaponBox_rgpPlayerItems, i);
		if (pPackEntity != -1) {
			return WeaponIdType:get_member(pPackEntity, m_iId);
		}
	}

	return WEAPON_NONE;
}
or use native rg_get_weaponbox_id
s1lent вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 19.06.2016, 16:50   #32
Не проверенный
 
Регистрация: 05.12.2015
Адрес: Manipal
Сообщений: 30
Сказал спасибо: 15
Поблагодарили 3 раз(а) в 2 сообщениях
По умолчанию

Цитата:
Сообщение от s1lent Посмотреть сообщение
Код:
stock WeaponIdType:GetWeaponBoxType(const ent)
{
	for (new i = 1; i < MAX_ITEM_TYPES; ++i) {
		new pPackEntity = get_member(ent, m_WeaponBox_rgpPlayerItems, i);
		if (pPackEntity != -1) {
			return WeaponIdType:get_member(pPackEntity, m_iId);
		}
	}

	return WEAPON_NONE;
}
or use native rg_get_weaponbox_id
Thanks a lot. I imagined that there would be a need for it and you fulfilled it so quickly! Btw, I am a big fan of yours and I have been following your modules for some time, though using Google Translate :P
I read the comments at https://github.com/s1lentq/reapi/issues/9 I am trying to remake my plugins with this API. Trying to replace modules: engine, fakemeta, ham, orpheu and cstrike.

Добавлено: How do I implement the following using the API?
Код:
register_touch ( "weaponbox", "player", "C4_Touch" );
I tried the following but it didn't produce any response:
Код:
RegisterHookChain ( RG_CSGameRules_CanHavePlayerItem, "CSGameRules_CanHavePlayerItem" );
Добавлено: @s1lent : Can you insert a new members table for "CArmoury" ? Using CBasePlayerItem, I am able to detect weaponbox entities which were atleast once equipped by a player. But, in maps like aa_dima2, there are weapons / shells already lying on the ground. I am using Ham_Touch to determine entity Armoury Entity when used with m_iId return 0 or WEAPON_NONE as weapon id.

Код:
static cell AMX_NATIVE_CALL cs_get_armoury_type(AMX *amx, cell *params)
{
	GET_OFFSET("CArmoury", m_iItem);

	int index = params[1];

	CHECK_NONPLAYER(index);
	edict_t *pArmoury = INDEXENT(index);

	if (strcmp(STRING(pArmoury->v.classname), "armoury_entity"))
	{
		MF_LogError(amx, AMX_ERR_NATIVE, "Not an armoury_entity! (%d)", index);
		return 0;
	}

	int weapontype = get_pdata<int>(pArmoury, m_iItem);;
	int weapontype_out = 0;

	..
	..
	..

	return weapontype_out;
}
My Code:
Код:
enum _:W_TYPE
{
	W_ARMOURY,
	W_WEAPONBOX,
	W_SHIELD
}

public Ham_Touch_armoury_entity ( iEnt, iPlayer ) 
	return CheckWeaponEntity ( iEnt, iPlayer, W_ARMOURY );

public Ham_Touch_weaponbox ( iEnt, iPlayer ) 
	return CheckWeaponEntity ( iEnt, iPlayer, W_WEAPONBOX );

public Ham_Touch_weapon_shield ( iEnt, iPlayer ) 
	return CheckWeaponEntity ( iEnt, iPlayer, W_SHIELD );

CheckWeaponEntity ( iEnt, iPlayer, {W_TYPE,_}: W_MODE )
{
	if ( W_MODE == W_TYPE: W_ARMOURY )
		iwID = get_member ( iEnt, m_iId );
	else if ( W_MODE == W_TYPE: W_WEAPONBOX )
		iwID = rg_get_weaponbox_id ( iEnt );
	..
	..
	..

	return HAM_IGNORED
}
Добавлено: Here's the source from ReGameDLL

Код:
enum ArmouryItemPack
{
	ARMOURY_MP5NAVY,
	ARMOURY_TMP,
	ARMOURY_P90,
	ARMOURY_MAC10,
	ARMOURY_AK47,
	ARMOURY_SG552,
	ARMOURY_M4A1,
	ARMOURY_AUG,
	ARMOURY_SCOUT,
	ARMOURY_G3SG1,
	ARMOURY_AWP,
	ARMOURY_M3,
	ARMOURY_XM1014,
	ARMOURY_M249,
	ARMOURY_FLASHBANG,
	ARMOURY_HEGRENADE,
	ARMOURY_KEVLAR,
	ARMOURY_ASSAULT,
	ARMOURY_SMOKEGRENADE,
	ARMOURY_END
};

class CArmoury: public CBaseEntity
{
	..
	..
	..

	public:
		int m_iItem; // m_Armoury_iItem
		int m_iCount; // m_Armoury_iCount
		int m_iInitialCount; // m_Armoury_iInitialCount
		bool m_bAlreadyCounted; // m_Armoury_bAlreadyCounted
};
Here's the expected include enum

Код:
// CArmoury
enum CArmoury_Members
{
	/*
	* Description:		-
	* Member type:		int
	* Get params:		get_member(index, member);
	* Set params:		set_member(index, member, value);
	*/
	m_Armoury_iItem,

	/*
	* Description:		-
	* Member type:		int
	* Get params:		get_member(index, member);
	* Set params:		set_member(index, member, value);
	*/
	m_Armoury_iCount,

	/*
	* Description:		-
	* Member type:		int
	* Get params:		get_member(index, member);
	* Set params:		set_member(index, member, value);
	*/
	m_Armoury_iInitialCount,

	/*
	* Description:		-
	* Member type:		bool
	* Get params:		get_member(index, member);
	* Set params:		set_member(index, member, value);
	*/
	m_bAlreadyCounted,
};

Последний раз редактировалось souvikdas95; 20.06.2016 в 08:02.
souvikdas95 вне форума   Ответить с цитированием
Старый 20.06.2016, 21:09   #33
Не проверенный
 
Регистрация: 05.12.2015
Адрес: Manipal
Сообщений: 30
Сказал спасибо: 15
Поблагодарили 3 раз(а) в 2 сообщениях
По умолчанию

Thanks for the latest Commit ;)

Can you also add rg_remove_entity function?

Extracted from engine.cpp from module engine_amxx
Код:
static cell AMX_NATIVE_CALL remove_entity(AMX *amx, cell *params)
{
	int id = params[1];
	if (id <= gpGlobals->maxClients || id > gpGlobals->maxEntities)
	{
		MF_LogError(amx, AMX_ERR_NATIVE, "Entity %d can not be removed", id);
		return 0;
	}

	edict_t *pEnt = TypeConversion.id_to_edict(id);

	if (FNullEnt(pEnt))
	{
		return 0;
	}

	REMOVE_ENTITY(pEnt);

	return 1;
}
Please also include: find_sphere_class, copy_keyvalue and all of find_ent_by_* natives from engine. the module is incomplete without these important natives.
Thanks.
souvikdas95 вне форума   Ответить с цитированием
Старый 21.06.2016, 08:03   #34
Не проверенный
 
Регистрация: 03.12.2014
Адрес: Ростов
Сообщений: 96
Сказал спасибо: 44
Поблагодарили 6 раз(а) в 6 сообщениях
По умолчанию

Нажмите здесь чтобы увидеть полный текст

OrpheuRegisterHook( OrpheuGetFunction( "PM_PlayStepSound" ), "PM_PlayStepSound" );
[свернуть]


Очень хотелось бы видеть какой то уналог этого, что бы иметь возмонжость определенным игрокам отключать не только звуки шагов, а и прыжка и приземления.
VkriterT вне форума   Ответить с цитированием
Старый 21.06.2016, 10:54   #35
с доступом к форуму безопасности
 
Регистрация: 23.02.2014
Адрес: Томск-7
Сообщений: 295
Сказал спасибо: 98
Поблагодарили 952 раз(а) в 166 сообщениях
По умолчанию

Цитата:
Сообщение от VkriterT Посмотреть сообщение

Нажмите здесь чтобы увидеть полный текст

OrpheuRegisterHook( OrpheuGetFunction( "PM_PlayStepSound" ), "PM_PlayStepSound" );
[свернуть]


Очень хотелось бы видеть какой то уналог этого, что бы иметь возмонжость определенным игрокам отключать не только звуки шагов, а и прыжка и приземления.
Код:
#include <amxmodx>
#include <reapi>

public plugin_init()
{
	RegisterHookChain(RH_SV_StartSound, "SV_StartSound");
}

public SV_StartSound(const recipients, const entity, const channel, const sample[], const volume, Float:attenuation, const fFlags, const pitch)
{
	// check sample player/pl_XXXX.wav
	if (sample[0] != 'p' || sample[1] != 'l'
		|| sample[7] != 'p' || sample[8] != 'l') {
		return HC_CONTINUE
	}

	if (entity == 2/*the specified player*/ && recipients == 1) {
		return HC_SUPERCEDE;
	}

	return HC_CONTINUE;
}
s1lent вне форума   Ответить с цитированием
2 пользователей сказали cпасибо:
Старый 21.06.2016, 19:49   #36
Не проверенный
 
Регистрация: 05.12.2015
Адрес: Manipal
Сообщений: 30
Сказал спасибо: 15
Поблагодарили 3 раз(а) в 2 сообщениях
По умолчанию

What does this do exactly? I read the comments you made in the sources at git but it's still not clear to me. Can you please explain @s1lent?


ITEM_TYPE_EQUIPPED,
ITEM_ASSAULT, ( Is this the same as VESTHELM? )
ITEM_LONGJUMP,
ITEM_SODACAN,
ITEM_HEALTHKIT,
ITEM_ANTIDOTE,
ITEM_SECURITY,
ITEM_BATTERY,
ITEM_SUIT
souvikdas95 вне форума   Ответить с цитированием
Старый 21.06.2016, 21:02   #37
с доступом к форуму безопасности
 
Регистрация: 23.02.2014
Адрес: Томск-7
Сообщений: 295
Сказал спасибо: 98
Поблагодарили 952 раз(а) в 166 сообщениях
По умолчанию

souvikdas95,

most of items have inherited from Half-Life and some are fairly useless for CS 1.6

item_assault (you are right this is vesthelm)
item_longjump
item_sodacan (this soda bottle that gives 1 hp)
item_healthkit
item_antidote
item_security
item_battery
item_suit
s1lent вне форума   Ответить с цитированием
2 пользователей сказали cпасибо:
Старый 21.06.2016, 22:14   #38
Не проверенный
 
Регистрация: 05.12.2015
Адрес: Manipal
Сообщений: 30
Сказал спасибо: 15
Поблагодарили 3 раз(а) в 2 сообщениях
По умолчанию

Thanks :)
What is the difference b/w ITEM_GLOCK and ITEM_GLOCK18 ?
souvikdas95 вне форума   Ответить с цитированием
Старый 21.06.2016, 22:20   #39
с доступом к форуму безопасности
 
Регистрация: 23.02.2014
Адрес: Томск-7
Сообщений: 295
Сказал спасибо: 98
Поблагодарили 952 раз(а) в 166 сообщениях
По умолчанию

souvikdas95,
glock is also inherited with HalfLife and is not used in cs 1.6 (not to be confused with glock18)
s1lent вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 22.06.2016, 09:25   #40
Не проверенный
 
Регистрация: 05.12.2015
Адрес: Manipal
Сообщений: 30
Сказал спасибо: 15
Поблагодарили 3 раз(а) в 2 сообщениях
По умолчанию

There seems to be a small typo:

natives_misc.cpp

Код:
..
..
..
/*
* Find the item by name in the player's inventory.
*
* @param index			Client index
* @param item			Item name
*
* @return			Entity-index of item, 0 otherwise
*
* native rg_find_bpack_item_by_name(const index, const item[]);
*/
cell AMX_NATIVE_CALL rg_find_item_bpack_by_name(AMX *amx, cell *params)
..
..
..
AMX_NATIVE_INFO Misc_Natives_RG[] =
{
..
..
..	
	{ "rg_find_item_bpack_by_name", rg_find_item_bpack_by_name },
..
..
..
Also, can you tell me what's wrong in this snippet? I am trying to strip a player of all the weapons that are restricted and which already exists in his inventory but "rg_remove_item" native seems to cause a "Runtime Error" causing crash.

Код:
new const g_szItemClassname[NUM_ITEMS][] =
{
	"weapon_shield",
	"weapon_p228",
	"weapon_glock",
	"weapon_scout",
	"weapon_hegrenade",
	"weapon_xm1014",
	"weapon_c4",
	"weapon_mac10",
	"weapon_aug",
	"weapon_smokegrenade",
	"weapon_elite",
	"weapon_fiveseven",
	"weapon_ump45",
	"weapon_sg550",
	"weapon_galil",
	"weapon_famas",
	"weapon_usp",
	"weapon_glock18",
	"weapon_awp",
	"weapon_mp5navy",
	"weapon_m249",
	"weapon_m3",
	"weapon_m4a1",
	"weapon_tmp",
	"weapon_g3sg1",
	"weapon_flashbang",
	"weapon_deagle",
	"weapon_sg552",
	"weapon_ak47",
	"weapon_knife",
	"weapon_p90",
	"noclass_nvgs",
	"item_thighpack",
	"item_kevlar",
	"item_assaultsuit",
	"item_longjump",
	"item_sodacan",
	"item_healthkit",
	"item_antidote",
	"item_security",
	"item_battery",
	"item_suit",
	"noclass_primammo",
	"noclass_secammo"
}

StripItem (ItemID: item)
{
	static players[32], count, id; 
	get_players(players, count, "a");	// only alive players
	if (g_szItemClassname[item][0] == 'n')	// "noclass_nvgs" (Note: "noclass_primammo" and "noclass_secammo" case not needed)
	{
		for (new i = 0; i < count; ++i )
		{
			id = players[i];
			if ( get_member ( id, m_bHasNightVision ) )
			{
				message_begin ( MSG_ONE, g_msgid_NVGToggle, _, id );
				write_byte ( 0 );
				message_end ( );
				set_member ( id, m_bHasNightVision, false );
				client_print(id, print_center, "* This item is restricted *");
			}
		}
	}
	else
	{
		for (new i = 0; i < count; ++i )
		{
			id = players[i];
			if (rg_find_item_bpack_by_name(id, g_szItemClassname[item])) 
			{
				rg_remove_item(id, g_szItemClassname[item]);
				client_print(id, print_center, "* This item is restricted *");
			}
		}
	}
}
Also, the forward "RG_CBasePlayer_HasRestrictItem" doesn't seem to work. The callback function is not responding to any RestrictType

Код:
RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "CBasePlayer_HasRestrictItem_Pre");

public CBasePlayer_HasRestrictItem_Pre(id, ItemID:item, ItemRestType:type)
{
	/*
		enum ItemRestType
		{
			ITEM_TYPE_BUYING,	// when a player buying items
			ITEM_TYPE_TOUCHED,	// when the player touches with a weaponbox or armoury_entity
			ITEM_TYPE_EQUIPPED	// when a entity game_player_equip to player gives item
		};
	*/
	server_print("---> I AM HERE!");	// Never Getting Printed!
	return HC_CONTINUE;
}
souvikdas95 вне форума   Ответить с цитированием
Старый 22.06.2016, 17:59   #41
с доступом к форуму безопасности
 
Регистрация: 01.07.2012
Адрес: г. Пермь, Ленинский р-н
Сообщений: 996
Сказал спасибо: 342
Поблагодарили 390 раз(а) в 210 сообщениях
По умолчанию

s1lent, не подскажете, что я делаю неверно?

PHP код:
#include <amxmodx>
#include <reapi>

#pragma semicolon 1

public plugin_init() {
    
register_plugin("[Reapi] Test""0.1""Subb98");
    
register_clcmd("say /test""CmdTest");
}

public 
CmdTest(const id) {
    
client_print(idprint_chat"buy_clip = %d, gun_clip = %d"rg_get_weapon_info("weapon_glock18"WI_BUY_CLIP_SIZE), rg_get_weapon_info("weapon_glock18"WI_GUN_CLIP_SIZE));
    return 
PLUGIN_HANDLED;

результат:

PHP код:
L 06/22/2016 19:50:40Start of error session.
L 06/22/2016 19:50:40Info (map "cs_assault") (file "addons/amxmodx/logs/error_20160622.log")
L 06/22/2016 19:50:40: [ReAPIrg_get_weapon_infoinvalid weapon id 848
L 06
/22/2016 19:50:40: [AMXXDisplaying debug trace (plugin "test.amxx")
L 06/22/2016 19:50:40: [AMXXRun time error 10native error (native "rg_get_weapon_info")
L 06/22/2016 19:50:40: [AMXX]    [0test.sma::CmdTest (line 12
При таком коде:

PHP код:
rg_get_weapon_info(WEAPON_GLOCKWI_BUY_CLIP_SIZE), rg_get_weapon_info(WEAPON_GLOCKWI_GUN_CLIP_SIZE
weapon id иной:

PHP код:
L 06/22/2016 11:09:55: [ReAPIrg_get_weapon_infoinvalid weapon id 792 
invalid weapon id при этом не меняется в зависимости от первого аргумента, то есть, остаётся либо 792, либо 848. Описание натив-функции:

PHP код:
/*
* Returns some information about a weapon.
*
* @param weapon name or id    Weapon id, see WEAPON_* constants WeaponIdType or weapon_* name
* @param WpnInfo:type        Info type, see WI_* constants
*
* @return            Weapon information value
* @error            If weapon_id and type are out of bound, an error will be thrown.
*
*/
native any:rg_get_weapon_info(any:...); 
Мб, я что-то неверно понимаю тогда?
Subb98 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 22.06.2016, 18:08   #42
Администратор
 
Регистрация: 20.10.2010
Адрес: Москва
Сообщений: 2,662
Сказал спасибо: 419
Поблагодарили 2,109 раз(а) в 684 сообщениях
По умолчанию

Там натив недоработан.
Asmodai вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 22.06.2016, 18:10   #43
с доступом к форуму безопасности
 
Регистрация: 01.07.2012
Адрес: г. Пермь, Ленинский р-н
Сообщений: 996
Сказал спасибо: 342
Поблагодарили 390 раз(а) в 210 сообщениях
По умолчанию

Asmodai, то есть, это не моя ошибка и пока лучше это не использовать, как я понял? Спасибо, ждём обновлений.
Subb98 вне форума   Ответить с цитированием
Старый 22.06.2016, 18:11   #44
Не проверенный
 
Регистрация: 11.11.2013
Адрес: Иваново
Сообщений: 496
Сказал спасибо: 12
Поблагодарили 189 раз(а) в 128 сообщениях
По умолчанию

@Subb98, по коду там пока что можно только числом.
PRoSToTeM@ вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 22.06.2016, 18:15   #45
с доступом к форуму безопасности
 
Регистрация: 01.07.2012
Адрес: г. Пермь, Ленинский р-н
Сообщений: 996
Сказал спасибо: 342
Поблагодарили 390 раз(а) в 210 сообщениях
По умолчанию

PRoSToTeM@, то есть, вместо константы можно подставить число и натив вернёт результат?
Subb98 вне форума   Ответить с цитированием
Ответ

Метки
amxx module, regamedll, rehlds, reunion, vtc


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:06. Часовой пояс GMT +3.


Лицензия принадлежит Dedicated-Server.Ru