ZP boxes и Nanosuit natives

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

ZP boxes и Nanosuit natives

Мнение от Dennis » 27 Дек 2018, 18:03

Здравейте, спречквам се с това, не да компилирам ZP boxes плъгина а това да дръпне natives от nanosuit.inc

Ето и малко код от ZP Boxes..

Код за потвърждение: Избери целия код

#include <nanosuit>

Код за потвърждение: Избери целия код

public fw_box_touch(ent, id)
{
	if(!pev_valid(ent) || !is_user_alive(id)
	|| zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return
	
	static classname[32], Float:armor
	entity_get_string(ent,EV_SZ_classname,classname,31)
	pev(id, pev_armorvalue, armor)
	
	// Bugfix
	if (equal(classname, BOX_CLASSNAME))
		return

	if (equal(classname, ITEMBOX_ANTIDOTE))
	{
		if(zp_get_user_zombie(id) && !zp_get_user_last_zombie(id))
		{	
			ChatColor(id, "!g[%s]!y You won an antidote!", PREFIX)
			zp_disinfect_user(id)
			remove_entity_item(ent, id)
		}
	}

	if (equal(classname, ITEMBOX_HEALTH))
	{
		if(!zp_get_user_zombie(id))
		{
			ChatColor(id, "!g[%s]!y +50 health!", PREFIX)
			set_user_health(id,get_user_health(id) + 50)
			remove_entity_item(ent, id)
		}
	}

	if (equal(classname, ITEMBOX_HGIBS))
	{
		if(zp_get_user_zombie(id))
		{
			ChatColor(id, "!g[%s]!y +1000 health!", PREFIX)
			set_user_health(id,get_user_health(id) + 1000)
			remove_entity_item(ent, id)
		}
	}

	if (equal(classname, ITEMBOX_ARMOR))
	{	
		if(!zp_get_user_zombie(id) && armor < 100)
		{
			ChatColor(id, "!g[%s]!y +50 Armor!", PREFIX)
			set_pev(id, pev_armorvalue, floatmax(0.0, armor + 50))
			remove_entity_item(ent, id)
		}
	}

	if (equal(classname, ITEMBOX_AMMO))
	{
		if(!zp_get_user_zombie(id) && !get_user_uc(id))
		{
			ChatColor(id, "!g[%s]!y Unlimited clip!", PREFIX)
			set_user_uc(id, true)
			remove_entity_item(ent, id)
		}
	}
	
	if (equal(classname, ITEMBOX_BATTERY))
	{
		if(!zp_get_user_zombie(id))
		{
			ChatColor(id, "!g[%s]!y +20 Energy!", PREFIX)
			set_user_energy(id, true)
			remove_entity_item(ent, id)
		}
	}
}
А ето и от Nanosuit..

Код за потвърждение: Избери целия код

public plugin_natives()
{
	register_native("set_user_nanosuit", "native_set_user_nanosuit", 1)
	register_native("set_user_energy", "native_set_user_energy", 1)
	register_native("get_user_nanosuit", "native_get_user_nanosuit", 1)
}

Код за потвърждение: Избери целия код

public native_set_user_nanosuit(id, set)
{
if(set)
{
cl_nn_has[id] = NANO_YES
nanosuit_reset(id, true)
cl_nn_mode[id] = NANO_ARMOR
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}
else
{
cl_nn_had[id] = cl_nn_has[id]
cl_nn_has[id] = NANO_NO
nanosuit_reset(id)
ExecuteHamB(Ham_Player_ResetMaxSpeed, id)
}

}



//Native (+20 energy)
public native_set_user_energy(id, set)
{
	if(set)
	{
		g_nn_energy[id] += 20
	}
}

//Native
public native_get_user_nanosuit(id)
{
	cl_nn_has[id] = NANO_YES
}
и накрая nanosuit.inc

Код за потвърждение: Избери целия код

//Nanosuit Remove/Restore
native set_user_nanosuit(id, set)

//Set +20 Energy
native set_user_energy(id, set)

// Get user nanosuit
native get_user_nanosuit(id)
Плъгина не load-ва и изписва това в конзолата

Код за потвърждение: Избери целия код

 [AMXX] Plugin "zp_boxes.amxx" failed to load: Plugin uses an unknown function (name "set_user_uc") - check your modules.ini.

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

ZP boxes и Nanosuit natives

Мнение от TheRedShoko » 27 Дек 2018, 18:37

А какъв е този натив set_user_uc?

Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

ZP boxes и Nanosuit natives

Мнение от Dennis » 27 Дек 2018, 19:44

Аз самият не го намирам никъде.

По-добре

Код за потвърждение: Избери целия код

// Max out clip ammo
			cs_set_weapon_ammo(fm_cs_get_current_weapon_ent(msg_entity), MAXCLIP[weapon])
		
			// HUD should show full clip all the time
			set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
Което ползва самият ZP plugin.
Но, как бих могъл да добавя най-добре екстра итем от zp v boxex. с

Код за потвърждение: Избери целия код

zp_get_extra_item_id
?

ПП. Намерих unlimited_clip.inc

Код за потвърждение: Избери целия код

/**
 * If the user has unlimited clip
 *
 * @param id		Player index.
 */
native get_user_uc(id)

/**
 * Set user unlimited clip
 *
 * @param id		Player index.
 * @param set		1: Unlimited clip | False: Remove unlimited clip
 */
native set_user_uc(id, set)
Добавих го в Boxes

Код за потвърждение: Избери целия код

#include <unlimited_clip>
,но все още не решава проблема в конзолата нито load-wa плъгина.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

ZP boxes и Nanosuit natives

Мнение от OciXCrom » 27 Дек 2018, 22:04

Трябва да добавиш и плъгина, който създава unlimited_clip библиотеката, понеже нативите няма как сами да се активират без присъствие на активиращия плъгин.

Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

ZP boxes и Nanosuit natives

Мнение от Dennis » 27 Дек 2018, 23:25

Неможах и такъв да намеря, какъв е най-добрият начин да oосъществя това ?
Това е от самият Zombie Plague плъгин, от там добра идея ли е да го дръпна?

Код за потвърждение: Избери целия код

// Native: zp_get_user_unlimited_clip
public native_get_user_unlimited_clip(id)
{
	if(!g_pluginenabled)
		return -1
		
	return g_unlimited_clip[id]
}

// Native: zp_set_user_unlimited_clip
public native_set_user_unlimited_clip(id, set)
{
	if(!g_pluginenabled)
		return
		
	if(set)
	{
		g_unlimited_clip[id] = true
	}
	else
	{
		g_unlimited_clip[id] = false
	}
}
Вторият въпрос беше свързан с Extra Item в Boxes.

Код за потвърждение: Избери целия код

public zp_extra_item_selected(player, itemid)
{
	if (itemid == MYITEM)
		give it
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

ZP boxes и Nanosuit natives

Мнение от OciXCrom » 28 Дек 2018, 15:45

Ако не знаеш от къде идва функцията, направо премахни я от кода щом не се ползва. Без активиращия плъгин тя няма как да работи, тъй че е излишна и целият плъгин няма да работи заради нея.

Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

ZP boxes и Nanosuit natives

Мнение от Dennis » 28 Дек 2018, 18:35

Ето и как го направих.

zombieplague.inc

Код за потвърждение: Избери целия код

/**
 * If the user has unlimited clip
 *
 * @param id		Player index.
 */
native zp_get_user_unlimited_clip(id)

/**
 * Set user unlimited clip
 *
 * @param id		Player index.
 * @param set		1: Unlimited clip | False: Remove unlimited clip
 */
native zp_set_user_unlimited_clip(id, set)
zombieplague.sma

Код за потвърждение: Избери целия код

register_native("zp_get_user_unlimited_clip", "native_get_user_unlimited_clip", 1)
	register_native("zp_set_user_unlimited_clip", "native_set_user_unlimited_clip", 1)

Код за потвърждение: Избери целия код

new g_unlimited_clip[33] // has unlimited_clip
Лека промяна

Код за потвърждение: Избери целия код

if ((g_survivor[msg_entity] && get_pcvar_num(cvar_survinfammo) > 1) || g_unlimited_clip[msg_entity] || get_pcvar_num(cvar_infammo) > 1)
	{
		// Get weapon's id
		static weapon
		weapon = get_msg_arg_int(2)
	
		// Unlimited Clip Ammo for this weapon?
		if (MAXBPAMMO[weapon] > 2)
		{
			// Max out clip ammo
			cs_set_weapon_ammo(fm_cs_get_current_weapon_ent(msg_entity), MAXCLIP[weapon])
		
			// HUD should show full clip all the time
			set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon])
		}
	}

Код за потвърждение: Избери целия код

// Native: zp_get_user_unlimited_clip
public native_get_user_unlimited_clip(id)
{
	if(!g_pluginenabled)
		return -1
		
	return g_unlimited_clip[id]
}

// Native: zp_set_user_unlimited_clip
public native_set_user_unlimited_clip(id, set)
{
	if(!g_pluginenabled)
		return
		
	if(set)
	{
		g_unlimited_clip[id] = true
	}
	else
	{
		g_unlimited_clip[id] = false
	}
}
И накрая boxes.

Код за потвърждение: Избери целия код

if (equal(classname, ITEMBOX_AMMO))
	{
		if(!zp_get_user_zombie(id) && !zp_get_user_unlimited_clip(id))
		{
			ChatColor(id, "!g[%s]!y Unlimited clip!", PREFIX)
			zp_set_user_unlimited_clip(id, true)
			remove_entity_item(ent, id)
		}
	}
Само не разбрах кой е най-добрият начин да добавя extra item.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

ZP boxes и Nanosuit natives

Мнение от OciXCrom » 28 Дек 2018, 20:56

Регистрираш предмета в plugin_init ползвайки функцията zp_register_extra_item, след това във forward-a zp_extra_item_selected проверяваш дали id-то на предмета е това което си получил с zp_register_extra_item и в проверката слагаш кода който ще се изпълни при покупка на предмета.

Опитай да го направиш и ако имаш затруднения предостави това, което си направил до момента.

Аватар
Dennis
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 177
Регистриран на: 25 Дек 2018, 04:14
Се отблагодари: 4 пъти
Получена благодарност: 10 пъти

ZP boxes и Nanosuit natives

Мнение от Dennis » 29 Дек 2018, 15:57

OciXCrom написа: 28 Дек 2018, 20:56 Регистрираш предмета в plugin_init ползвайки функцията zp_register_extra_item, след това във forward-a zp_extra_item_selected проверяваш дали id-то на предмета е това което си получил с zp_register_extra_item и в проверката слагаш кода който ще се изпълни при покупка на предмета.

Опитай да го направиш и ако имаш затруднения предостави това, което си направил до момента.
Става въпрос за extra item който вече съществува в отделен плъгин.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

ZP boxes и Nanosuit natives

Мнение от OciXCrom » 29 Дек 2018, 17:14

Смисъл? Какво точно искаш да направиш с въпросния extra item? Имаш предвид, че имаш даден плъгин и искаш да го превърнеш като extra item или искаш да намериш id-то на предмета?

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 14 госта