new item

Unpaid Requests, Public Plugins
Post Reply
czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

new item

#1

Post by czirimbolo » 5 years ago

Can someone help me to convert this:

Code: Select all

#include <zombie_escape>
#include <xs>

#define ITEM_NAME "Pushing Armor" // Название айтема
#define ITEM_COST 15 // Стоимость айтема

#define ZP_BUY_ARMOR 100.0 // Сколько брони давать при покупке
#define ZP_MAX_ARMOR_VALUE 200.0 // Сколько максимально игрок может купить брони
#define ZP_MAX_BUY	2 // Сколько можно купить брони за один раунд

#define ZP_SOUND_BUY_ARMOR "xman2030/td_nuc_launch.wav" // Звук покупки брони

#define ZP_LIGHT_RED 0 // Красный цвет по RGB
#define ZP_LIGHT_GREEN 255 // Зеленый цвет по RGB
#define ZP_LIGHT_BLUE 0 // Синий цвет по RGB
#define ZP_LIGHT_DISTANCE 45.0 // Дистанция свечения

#define ZP_KNOCKBACK 30.0 // Сила отталкивания

new g_iItemId, bool: g_bUserArmor[33], g_NowBuy[33];

public plugin_precache() engfunc(EngFunc_PrecacheSound, ZP_SOUND_BUY_ARMOR);

public plugin_init()
{
	register_plugin("[AMXX | ZP] KnockBack Armor", "0.0.1", "1331");

	register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0");

	RegisterHam(Ham_TakeDamage, "player", "HamHook_TakeDamage_Post", 1);
	RegisterHam(Ham_Killed, "player", "HamHook_PlayerKilled_Post", 1);

	g_iItemId = ze_register_item("Push Armor", 100, 0);
}

public Event_RoundStart()
{
	for(new pPlayer = 1; pPlayer <= get_maxplayers(); pPlayer++)
	{
		if(!is_user_connected(pPlayer) || !g_bUserArmor[pPlayer])
			continue;

		g_bUserArmor[pPlayer] = false;
	}
}

public ze_select_item_pre(id, itemid)
{
    // Return Available and we will block it in Post, So it dosen't affect other plugins
    if (itemid != g_iItemId)
        return ZE_ITEM_AVAILABLE
   
    // Available for Humans only, So don't show it for zombies
    if (ze_is_user_zombie(id))
        return ZE_ITEM_DONT_SHOW
   
    return ZE_ITEM_AVAILABLE
}

public ze_select_item_post(iPlayer, iItemId)
{
	if(iItemId != g_iItemId)
		return PLUGIN_HANDLED;
	
	if(g_NowBuy[iPlayer] < ZP_MAX_BUY)
	{

		new Float: flArmor; pev(iPlayer, pev_armorvalue, flArmor);

		if(flArmor >= ZP_MAX_ARMOR_VALUE)
		{
			client_print(iPlayer, print_center, "You bought push armor");
			return ZP_PLUGIN_HANDLED;
		}

		// Thanks Mercylezz
		set_pev(iPlayer, pev_armorvalue, floatmin(flArmor + ZP_BUY_ARMOR, ZP_MAX_ARMOR_VALUE));
		emit_sound(iPlayer, CHAN_BODY, ZP_SOUND_BUY_ARMOR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

		g_bUserArmor[iPlayer] = true;
		g_NowBuy[iPlayer] ++
		return PLUGIN_CONTINUE;
	}
	else
	{
		zp_set_user_ammo_packs(iPlayer, zp_get_user_ammo_packs(iPlayer) + ITEM_COST)
		client_print(iPlayer, print_center, "Вы купили максимум брони в этом раунде");
	}

	return PLUGIN_CONTINUE;
}

public HamHook_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
{
	if(!is_user_alive(iVictim) || !is_user_alive(iAttacker) || iVictim == iAttacker)
		return;

	if(!ze_is_user_zombie(iAttacker) || ze_is_user_zombie(iVictim))
		return;

	if(!g_bUserArmor[iVictim] || pev(iVictim, pev_armorvalue) == 0.0)
		return;

	new Float: vecOrigin[3], Float: vecVelocity[3];
	pev(iVictim, pev_origin, vecOrigin);
	pev(iAttacker, pev_velocity, vecVelocity);

	UTIL_LightPlayer(vecOrigin, floatround(ZP_LIGHT_DISTANCE), ZP_LIGHT_RED, ZP_LIGHT_GREEN, ZP_LIGHT_BLUE, 5, 3);

	UTIL_CreateVelocity(iVictim, iAttacker, vecVelocity);
	set_pev(iAttacker, pev_velocity, vecVelocity);
}

public HamHook_PlayerKilled_Post(iVictim, iKiller)
{
	if(!is_user_alive(iVictim) || !is_user_alive(iKiller) || iVictim == iKiller)
		return;

	if(!g_bUserArmor[iVictim])
		return;

	g_bUserArmor[iVictim] = false;
}

// Other
public client_putinserver(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;
public zp_user_infected_pre(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;
public zp_user_humanized_pre(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;

stock UTIL_CreateVelocity(iVictim, iAttacker, Float: vecVelocity[3])
{
	new Float: vecVictimOrigin[3], Float: vecAttackerOrigin[3], Float: vecVictimVelocty[3];

	pev(iVictim, pev_velocity, vecVictimVelocty);
	pev(iVictim, pev_origin, vecVictimOrigin);
	pev(iAttacker, pev_origin, vecAttackerOrigin);

	new Float: vecOrigin[3]
	vecOrigin[0] = vecVictimOrigin[0] - vecAttackerOrigin[0];
	vecOrigin[1] = vecVictimOrigin[1] - vecAttackerOrigin[1];

	new Float: flLargestNum = 0.0;

	if(0 <= floatcmp(floatabs(vecOrigin[0]), floatabs(vecOrigin[1])) <= 1)
	{
		if(floatabs(vecOrigin[0]) > 0) 
			flLargestNum = floatabs(vecOrigin[0])
	}
	else
	{
		if(floatabs(vecOrigin[1]) > 0) 
			flLargestNum = floatabs(vecOrigin[1])
	}

	vecOrigin[0] /= flLargestNum;
	vecOrigin[1] /= flLargestNum;

	vecVelocity[0] = (vecOrigin[0] * (ZP_KNOCKBACK * 3000)) / get_distance_f(vecVictimOrigin, vecAttackerOrigin);
	vecVelocity[1] = (vecOrigin[1] * (ZP_KNOCKBACK * 3000)) / get_distance_f(vecVictimOrigin, vecAttackerOrigin);

	vecOrigin[0] += vecVictimVelocty[0];
	vecOrigin[1] += vecVictimVelocty[1];

	if(vecVelocity[0] <= 20.0 || vecVelocity[1] <= 20.0)
	vecVelocity[2] = random_float(180.0 , 220.0);

	return 1;
}

stock UTIL_LightPlayer(Float: vecOrigin[3], iRadius, iRed, iGreen, iBlue, iLife, iDecayRate)
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0)
	write_byte(TE_DLIGHT) // TE id
	engfunc(EngFunc_WriteCoord, vecOrigin[0]) // x
	engfunc(EngFunc_WriteCoord, vecOrigin[1]) // y
	engfunc(EngFunc_WriteCoord, vecOrigin[2]) // z
	write_byte(iRadius) // radius
	write_byte(iRed) // r
	write_byte(iGreen) // g
	write_byte(iBlue) // b
	write_byte(iLife) // life
	write_byte(iDecayRate) // decay rate
	message_end()
}
Errors:
//// push_armor.sma
//
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(73) : error 017: undefined symbol "ZP_PLUGIN_HANDLED"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(86) : error 017: undefined symbol "zp_set_user_ammo_packs"
//
// 2 Errors.
// Could not locate output file compiled\push_armor.amx (compile failed).
//
// Compilation Time: 1 sec
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#2

Post by Raheem » 5 years ago

  1. #include <zombie_escape>
  2. #include <xs>
  3.  
  4. #define ITEM_NAME "Pushing Armor" // Название айтема
  5. #define ITEM_COST 15 // Стоимость айтема
  6.  
  7. #define ZP_BUY_ARMOR 100.0 // Сколько брони давать при покупке
  8. #define ZP_MAX_ARMOR_VALUE 200.0 // Сколько максимально игрок может купить брони
  9. #define ZP_MAX_BUY  2 // Сколько можно купить брони за один раунд
  10.  
  11. #define ZP_SOUND_BUY_ARMOR "xman2030/td_nuc_launch.wav" // Звук покупки брони
  12.  
  13. #define ZP_LIGHT_RED 0 // Красный цвет по RGB
  14. #define ZP_LIGHT_GREEN 255 // Зеленый цвет по RGB
  15. #define ZP_LIGHT_BLUE 0 // Синий цвет по RGB
  16. #define ZP_LIGHT_DISTANCE 45.0 // Дистанция свечения
  17.  
  18. #define ZP_KNOCKBACK 30.0 // Сила отталкивания
  19.  
  20. new g_iItemId, bool: g_bUserArmor[33], g_NowBuy[33];
  21.  
  22. public plugin_precache() engfunc(EngFunc_PrecacheSound, ZP_SOUND_BUY_ARMOR);
  23.  
  24. public plugin_init()
  25. {
  26.     register_plugin("[AMXX | ZP] KnockBack Armor", "0.0.1", "1331");
  27.  
  28.     register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0");
  29.  
  30.     RegisterHam(Ham_TakeDamage, "player", "HamHook_TakeDamage_Post", 1);
  31.     RegisterHam(Ham_Killed, "player", "HamHook_PlayerKilled_Post", 1);
  32.  
  33.     g_iItemId = ze_register_item("Push Armor", 100, 0);
  34. }
  35.  
  36. public Event_RoundStart()
  37. {
  38.     for(new pPlayer = 1; pPlayer <= get_maxplayers(); pPlayer++)
  39.     {
  40.         if(!is_user_connected(pPlayer) || !g_bUserArmor[pPlayer])
  41.             continue;
  42.  
  43.         g_bUserArmor[pPlayer] = false;
  44.     }
  45. }
  46.  
  47. public ze_select_item_pre(id, itemid)
  48. {
  49.     // Return Available and we will block it in Post, So it dosen't affect other plugins
  50.     if (itemid != g_iItemId)
  51.         return ZE_ITEM_AVAILABLE
  52.    
  53.     // Available for Humans only, So don't show it for zombies
  54.     if (ze_is_user_zombie(id))
  55.         return ZE_ITEM_DONT_SHOW
  56.    
  57.     return ZE_ITEM_AVAILABLE
  58. }
  59.  
  60. public ze_select_item_post(iPlayer, iItemId)
  61. {
  62.     if(iItemId != g_iItemId)
  63.         return PLUGIN_HANDLED;
  64.    
  65.     if(g_NowBuy[iPlayer] < ZP_MAX_BUY)
  66.     {
  67.  
  68.         new Float: flArmor; pev(iPlayer, pev_armorvalue, flArmor);
  69.  
  70.         if(flArmor >= ZP_MAX_ARMOR_VALUE)
  71.         {
  72.             client_print(iPlayer, print_center, "You bought push armor");
  73.             return PLUGIN_HANDLED;
  74.         }
  75.  
  76.         // Thanks Mercylezz
  77.         set_pev(iPlayer, pev_armorvalue, floatmin(flArmor + ZP_BUY_ARMOR, ZP_MAX_ARMOR_VALUE));
  78.         emit_sound(iPlayer, CHAN_BODY, ZP_SOUND_BUY_ARMOR, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
  79.  
  80.         g_bUserArmor[iPlayer] = true;
  81.         g_NowBuy[iPlayer] ++
  82.         return PLUGIN_CONTINUE;
  83.     }
  84.     else
  85.     {
  86.         ze_set_escape_coins(iPlayer, ze_get_escape_coins(iPlayer) + ITEM_COST)
  87.         client_print(iPlayer, print_center, "Вы купили максимум брони в этом раунде");
  88.     }
  89.  
  90.     return PLUGIN_CONTINUE;
  91. }
  92.  
  93. public HamHook_TakeDamage_Post(iVictim, iInflictor, iAttacker, Float:fDamage, iBitDamage)
  94. {
  95.     if(!is_user_alive(iVictim) || !is_user_alive(iAttacker) || iVictim == iAttacker)
  96.         return;
  97.  
  98.     if(!ze_is_user_zombie(iAttacker) || ze_is_user_zombie(iVictim))
  99.         return;
  100.  
  101.     if(!g_bUserArmor[iVictim] || pev(iVictim, pev_armorvalue) == 0.0)
  102.         return;
  103.  
  104.     new Float: vecOrigin[3], Float: vecVelocity[3];
  105.     pev(iVictim, pev_origin, vecOrigin);
  106.     pev(iAttacker, pev_velocity, vecVelocity);
  107.  
  108.     UTIL_LightPlayer(vecOrigin, floatround(ZP_LIGHT_DISTANCE), ZP_LIGHT_RED, ZP_LIGHT_GREEN, ZP_LIGHT_BLUE, 5, 3);
  109.  
  110.     UTIL_CreateVelocity(iVictim, iAttacker, vecVelocity);
  111.     set_pev(iAttacker, pev_velocity, vecVelocity);
  112. }
  113.  
  114. public HamHook_PlayerKilled_Post(iVictim, iKiller)
  115. {
  116.     if(!is_user_alive(iVictim) || !is_user_alive(iKiller) || iVictim == iKiller)
  117.         return;
  118.  
  119.     if(!g_bUserArmor[iVictim])
  120.         return;
  121.  
  122.     g_bUserArmor[iVictim] = false;
  123. }
  124.  
  125. // Other
  126. public client_putinserver(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;
  127. public zp_user_infected_pre(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;
  128. public zp_user_humanized_pre(iPlayer) if(g_bUserArmor[iPlayer]) g_bUserArmor[iPlayer] = false;
  129.  
  130. stock UTIL_CreateVelocity(iVictim, iAttacker, Float: vecVelocity[3])
  131. {
  132.     new Float: vecVictimOrigin[3], Float: vecAttackerOrigin[3], Float: vecVictimVelocty[3];
  133.  
  134.     pev(iVictim, pev_velocity, vecVictimVelocty);
  135.     pev(iVictim, pev_origin, vecVictimOrigin);
  136.     pev(iAttacker, pev_origin, vecAttackerOrigin);
  137.  
  138.     new Float: vecOrigin[3]
  139.     vecOrigin[0] = vecVictimOrigin[0] - vecAttackerOrigin[0];
  140.     vecOrigin[1] = vecVictimOrigin[1] - vecAttackerOrigin[1];
  141.  
  142.     new Float: flLargestNum = 0.0;
  143.  
  144.     if(0 <= floatcmp(floatabs(vecOrigin[0]), floatabs(vecOrigin[1])) <= 1)
  145.     {
  146.         if(floatabs(vecOrigin[0]) > 0)
  147.             flLargestNum = floatabs(vecOrigin[0])
  148.     }
  149.     else
  150.     {
  151.         if(floatabs(vecOrigin[1]) > 0)
  152.             flLargestNum = floatabs(vecOrigin[1])
  153.     }
  154.  
  155.     vecOrigin[0] /= flLargestNum;
  156.     vecOrigin[1] /= flLargestNum;
  157.  
  158.     vecVelocity[0] = (vecOrigin[0] * (ZP_KNOCKBACK * 3000)) / get_distance_f(vecVictimOrigin, vecAttackerOrigin);
  159.     vecVelocity[1] = (vecOrigin[1] * (ZP_KNOCKBACK * 3000)) / get_distance_f(vecVictimOrigin, vecAttackerOrigin);
  160.  
  161.     vecOrigin[0] += vecVictimVelocty[0];
  162.     vecOrigin[1] += vecVictimVelocty[1];
  163.  
  164.     if(vecVelocity[0] <= 20.0 || vecVelocity[1] <= 20.0)
  165.     vecVelocity[2] = random_float(180.0 , 220.0);
  166.  
  167.     return 1;
  168. }
  169.  
  170. stock UTIL_LightPlayer(Float: vecOrigin[3], iRadius, iRed, iGreen, iBlue, iLife, iDecayRate)
  171. {
  172.     engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0)
  173.     write_byte(TE_DLIGHT) // TE id
  174.     engfunc(EngFunc_WriteCoord, vecOrigin[0]) // x
  175.     engfunc(EngFunc_WriteCoord, vecOrigin[1]) // y
  176.     engfunc(EngFunc_WriteCoord, vecOrigin[2]) // z
  177.     write_byte(iRadius) // radius
  178.     write_byte(iRed) // r
  179.     write_byte(iGreen) // g
  180.     write_byte(iBlue) // b
  181.     write_byte(iLife) // life
  182.     write_byte(iDecayRate) // decay rate
  183.     message_end()
  184. }
He who fails to plan is planning to fail

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#3

Post by czirimbolo » 5 years ago

//// push_armor.sma
//
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(1) : error 010: invalid function or declaration
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(22) : error 017: undefined symbol "engfunc"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(22) : error 010: invalid function or declaration
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(26) : error 017: undefined symbol "register_plugin"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(28) : error 017: undefined symbol "register_event"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : error 017: undefined symbol "RegisterHam"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : warning 215: expression has no effect
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : error 001: expected token: ";", but found ")"
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : error 029: invalid expression, assumed zero
// C:\Users\macie\Desktop\Compiler v1.8.3\scripting\push_armor.sma(30) : fatal error 107: too many error messages on one line
//
// Compilation aborted.
// 9 Errors.
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#4

Post by Raheem » 5 years ago

Compiling fine for me, make sure you save file in UTF-8.
He who fails to plan is planning to fail

czirimbolo
Veteran Member
Veteran Member
Poland
Posts: 598
Joined: 7 years ago
Contact:

#5

Post by czirimbolo » 5 years ago

can you send me amxx file? I use notepad++ and have UTF-8 format but still errors
Image

User avatar
Raheem
Mod Developer
Mod Developer
Posts: 2214
Joined: 7 years ago
Contact:

#6

Post by Raheem » 5 years ago

pushing_armor.amxx
(6.48 KiB) Downloaded 262 times
pushing_armor.amxx
(6.48 KiB) Downloaded 262 times
He who fails to plan is planning to fail

Post Reply

Create an account or sign in to join the discussion

You need to be a member in order to post a reply

Create an account

Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute

Register

Sign in

Who is online

Users browsing this forum: No registered users and 11 guests