Преработка на Vengeance плъгин, за итем в шоп магазин

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Vengeance плъгин, за итем в шоп магазин

Мнение от Marinovv » 15 Мар 2018, 13:27

Привет! Днес исках да вкарам ето този итем.

Оригинален код:

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

/*				© Copyright by Tonev
			
				Name:		Vengeance
				Version:	1.0
				Author:		Tonev - Dark_Style
				Support:	http://amxmodxbg.org/
*/			

#include <amxmodx>
#include <cstrike>
#include <engine>

#define Sound "misc/teleport.wav"

new p_iCost, p_iHealth, p_fMsgShowTime, p_Sound, p_szPrefix

new g_szPrefix[32]

new bool: bHasItem[33]

public plugin_init()
{
	register_plugin("Vengeance", "1.0", "Tonev")
	
	register_event("Health", "Event_Health", "be")
	
	register_clcmd("say /vengeance", "Clcmd_Vengeance")
	register_clcmd("say_team /vengeance", "Clcmd_Vengeance")
	
	p_iCost		= register_cvar("vengeance_cost", "3500")
	p_iHealth	= register_cvar("vengeance_health", "50")
	p_fMsgShowTime	= register_cvar("vengeance_msg_show_time", "120.0")
	p_Sound		= register_cvar("vengeance_sound", "1")
	p_szPrefix	= register_cvar("vengeance_prefix", "[Vengeance]")
	
	new iEnt		= create_entity("info_target")
	entity_set_string(iEnt, EV_SZ_classname, "show_infomsg_entity")
		
	register_think("show_infomsg_entity", "InfoMsg")
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + get_pcvar_float(p_fMsgShowTime))
}

public plugin_precache()
{
	precache_sound(Sound)
}

public client_connect(id)
{
	bHasItem[id] = false
}

public client_disconnect(id)
{
	bHasItem[id] = false
}

public InfoMsg(iEnt)
{
	get_pcvar_string(p_szPrefix, g_szPrefix, charsmax(g_szPrefix))
	
	client_print(0, print_chat, "%s Type /vengeance to buy item which teleports you in your base when you are at low health!", g_szPrefix)
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + get_pcvar_float(p_fMsgShowTime))
}

public Clcmd_Vengeance(id)
{
	new iMoney = cs_get_user_money(id) - get_pcvar_num(p_iCost)
	get_pcvar_string(p_szPrefix, g_szPrefix, charsmax(g_szPrefix))
	
	if(bHasItem[id])
	{
		client_print(id, print_chat, "%s You already have this item!", g_szPrefix)
	}
	else if(iMoney < 0)
	{
		client_print(id, print_chat, "%s You don't have enough money to buy this item!", g_szPrefix)
	}
	else if(!is_user_alive(id))
	{
		client_print(id, print_chat, "%s You must be alive to buy this item!", g_szPrefix)
	}
	else
	{
		cs_set_user_money(id, iMoney)
		client_print(id, print_chat, "%s At low health you'll be teleported in your base", g_szPrefix)
		bHasItem[id] = true
	}
}

public Event_Health(id)
{
	new iHealth = read_data(1)
	
	if(iHealth <= get_pcvar_num(p_iHealth) && bHasItem[id])
	{
		Teleport(id)
	}
}

public Teleport(id)
{
	if(is_user_alive(id))
	{
		new iPoint
	
		switch(cs_get_user_team(id))
		{
			case 1:iPoint = find_ent_by_class(-1, "info_player_deathmatch")
			case 2:iPoint = find_ent_by_class(-1, "info_player_start")
		}
	
		if(iPoint)
		{
			new Float: iOrigin[3]
		
			entity_get_vector(iPoint, EV_VEC_origin, iOrigin)
			entity_set_origin(id, iOrigin)
			
			if(get_pcvar_num(p_Sound) == 1)
				client_cmd(id, "spk %s", Sound)
			
			bHasItem[id] = false
		}
	}
}
Преработен код от мен, за шоп магазина на OcixCrom:

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

/*				© Copyright by Tonev
			
				Name:		Vengeance
				Version:	1.0
				Author:		Tonev - Dark_Style
				Support:	http://amxmodxbg.org/
*/			

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <customshop>

#define Sound "misc/teleport.wav"

#define PLUGIN_VERSION "4.x"

additem ITEM_VENGEANCE

new p_iHealth, p_fMsgShowTime, p_Sound, p_szPrefix

new g_szPrefix[32]

new bool: bHasItem[33]

public plugin_init()
{
	register_plugin("CSHOP: Vengeance", PLUGIN_VERSION, "OciXCrom")
	
	register_event("Health", "Event_Health", "be")
	
	
	p_iHealth	= register_cvar("vengeance_health", "50")
	p_Sound		= register_cvar("vengeance_sound", "1")
	
	new iEnt		= create_entity("info_target")
	entity_set_string(iEnt, EV_SZ_classname, "show_infomsg_entity")
		
	register_think("show_infomsg_entity", "InfoMsg")
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + get_pcvar_float(p_fMsgShowTime))
}

public plugin_precache()
{
	precache_sound(Sound)
	ITEM_VENGEANCE = cshop_register_item("vengeance", "TeleportBase -Health", 3000, 0)
}

public cshop_item_selected(id, iItem)
{
	if(iItem == ITEM_VENGEANCE)
		bHasItem[id] = true
}

public cshop_item_removed(id, iItem)
{
	if(iItem == ITEM_VENGEANCE)
		bHasItem[id] = false
}

public Clcmd_Vengeance(id)
{
	new iMoney = cshop_get_item_data(ITEM_VENGEANCE, CSHOP_DATA_PRICE);
	get_pcvar_string(p_szPrefix, g_szPrefix, charsmax(g_szPrefix))
	
	if(bHasItem[id])
	{
		client_print(id, print_chat, "%s You already have this item!", g_szPrefix)
	}
	else if(iMoney < 0)
	{
		client_print(id, print_chat, "%s You don't have enough money to buy this item!", g_szPrefix)
	}
	else if(!is_user_alive(id))
	{
		client_print(id, print_chat, "%s You must be alive to buy this item!", g_szPrefix)
	}
	else
	{
		cs_set_user_money(id, iMoney)
		client_print(id, print_chat, "%s At low health you'll be teleported in your base", g_szPrefix)
		bHasItem[id] = true
	}
}

public client_connect(id)
{
	bHasItem[id] = false
}

public client_disconnect(id)
{
	bHasItem[id] = false
}

public Event_Health(id)
{
	new iHealth = read_data(1)
	
	if(iHealth <= get_pcvar_num(p_iHealth) && bHasItem[id])
	{
		Teleport(id)
	}
}

public Teleport(id)
{
	if(is_user_alive(id))
	{
		new iPoint
	
		switch(cs_get_user_team(id))
		{
			case 1:iPoint = find_ent_by_class(-1, "info_player_deathmatch")
			case 2:iPoint = find_ent_by_class(-1, "info_player_start")
		}
	
		if(iPoint)
		{
			new Float: iOrigin[3]
		
			entity_get_vector(iPoint, EV_VEC_origin, iOrigin)
			entity_set_origin(id, iOrigin)
			
			if(get_pcvar_num(p_Sound) == 1)
				client_cmd(id, "spk %s", Sound)
			
			bHasItem[id] = false
		}
	}
}
Въпроса е, че уж работи, но не е същото. Примерно в оригиналния код, когато купиш веднъж итемът той не може да се купи втори път докато не се Respawn-еш- в базата. Искам и в шопа да е така, но нещо не баца. Замених някой неща и нещо се оплете..

Моля, преработете го. :)
Последно промяна от Marinovv на 15 Мар 2018, 14:37, променено общо 1 път.
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

Аватар
Punch*
Извън линия
Потребител
Потребител
Мнения: 143
Регистриран на: 15 Фев 2018, 20:12
Получена благодарност: 1 път
Обратна връзка:

Преработка на итем в шоп магазин

Мнение от Punch* » 15 Мар 2018, 14:26

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от OciXCrom на 15 Мар 2018, 16:33, променено общо 1 път.
Причина: Ти кога стана модератор?! Прочети правилата на форума!!!

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

Преработка на Vengeance плъгин, за итем в шоп магазин

Мнение от OciXCrom » 15 Мар 2018, 16:44

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

ITEM_VENGEANCE = cshop_register_item("vengeance", "TeleportBase -Health", 3000, 0)
Последното число означава колко пъти предметът може да се купува в едно прераждане. 0 означава неограничено. Трябваше да го направиш 1. Сега трябва да го промениш в CustomShopItems.ini. Търсиш итема във файла и му задаваш Limit: 1. Можеш да го направиш и с командата cshop_edit.

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Vengeance плъгин, за итем в шоп магазин

Мнение от Marinovv » 15 Мар 2018, 17:01

Знам това, но проблема е друг. В оригиналния плъгин, когато го купиш веднъж не може да го купиш отново докато не се respawn-еш в базата си. Т.е. този плъгин е нещо като плъгина Outsider, където когато те убият отиваш в базата на враговете си.

Аз искам да го направя същото. Когато купя от шопа този итем да не мога да го купя отново докато не ме respaw-не в базата ми. За да уточня по ясно този плъгин, когатоо останеш на 50 Health те връща в базата ти, но не те убива.

Проблема е, че ако го направя на 1 да се купува 1 на рунд ще го ползвам само веднъж докато не умра. Възможно ли е да го ползвам веднъж докато не ме respawn-не , а не докато умра?
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

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

Преработка на Vengeance плъгин, за итем в шоп магазин

Мнение от OciXCrom » 16 Мар 2018, 15:47

Лимитът се рестартира при прераждане, обаче този плъгин просто те телепортира в spawna, а не те пререажда и затова лимитът не се рестартира. Задай лимита на 0 (неограничено) и направи предметът да не може да се купува ако bHasItem е true:

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

public cshop_item_selected(id, iItem)
{
	if(iItem == ITEM_VENGEANCE)
	{
		if(bHasItem[id])
		{
			client_print(id, print_chat, "%s You already have this item.", g_szPrefix)
			return DONT_BUY
		}
		else
			bHasItem[id] = true
	}
	
	return BUY_ITEM
}

Аватар
Marinovv
Извън линия
Потребител
Потребител
Мнения: 511
Регистриран на: 19 Сеп 2017, 10:01
Местоположение: България
Се отблагодари: 530 пъти
Получена благодарност: 13 пъти
Обратна връзка:

Преработка на Vengeance плъгин, за итем в шоп магазин

Мнение от Marinovv » 17 Мар 2018, 00:05

Е брат много ти благодаря. Жив и здрав и много щастие! :)

За напред, ако имам подобни такива плъгини, за магазинчето ще гледам да се ориентирам по този плъгин. Уникален си. Лок. :)
Иван Маринов,

лицензиран оператор и пилот на професионални дронове клас C1 за всички държави в EU.

DJI Mavic 3 Classic | DJI Mavic 3 PRO - погледни света от различна перспектива.

Последвайте ме във Facebook

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

Обратно към “Заявки за плъгини”

Кой е на линия

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