Страница 27 от 44

OciXCrom's Custom Shop + API

Публикувано на: 16 Апр 2019, 22:26
от iv69
OciXCrom написа: 16 Апр 2019, 20:30

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

#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <amxmisc>
#include <customshop>

#define is_valid_player(%1) (1 <= %1 <= 32)
#define PLUGIN "Golden Deagle"
#define VERSION "1.0"
#define AUTHOR "alicx"


new DEAGLE_V_MODEL[64] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[64] = "models/p_golden_deagle.mdl"

/* Pcvars */
new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_cost, cvar_bullets, cvar_keepdeagle, cvar_zoom_type;

new bool:g_HasDeagle[33]

new g_hasZoom[ 33 ]
new g_ZoomDist[ 33 ] = 0
new bullets[ 33 ]
new g_iDeagleItem

// Sprite
new m_spriteTexture

const Wep_deagle = ((1<<CSW_DEAGLE))


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	// The Cvars //
	cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "5")
	cvar_custommodel = register_cvar("goldendeagle_custom_model", "1")
	cvar_goldbullets = register_cvar("goldendeagle_gold_bullets", "1")
	cvar_cost = register_cvar("goldendeagle_cost", "4000")
	cvar_bullets = register_cvar("goldendeagle_bullets", "200")
	cvar_keepdeagle = register_cvar("goldendeagle_keep", "1")
	cvar_zoom_type = register_cvar("goldendeagle_zoom_type", "4")


	// Register The Buy Cmd
	register_concmd("amx_goldendeagle", "CmdGiveDeagle", ADMIN_BAN, "<name>")

	//Death Msg
	register_event("DeathMsg", "Death", "a")

	// Weapon Pick Up
	register_event("WeapPickup","checkModel","b","1=19")

	// Current Weapon Event
	register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")

	// Ham TakeDamage
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_forward( FM_CmdStart, "fw_CmdStart")
	register_forward(FM_CmdStart, "fwCmdStart")
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}

public plugin_precache()
{
	precache_model(DEAGLE_V_MODEL)
	precache_model(DEAGLE_P_MODEL)
	m_spriteTexture = precache_model("sprites/dot.spr")
	precache_sound("weapons/zoom.wav")
	g_iDeagleItem = cshop_register_item("golden_deagle", "Golden Deagle", get_pcvar_num(cvar_cost))
}

public cshop_item_removed(id, iItem)
{
	if(iItem == g_iDeagleItem)
	{
		g_HasDeagle[id] = false
	}
}

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

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

public Death()
{
	g_HasDeagle[read_data(2)] = false
}

public fwHamPlayerSpawnPost(id)
{
    if( !is_user_alive( id ) )
        return;

    if( get_pcvar_num( cvar_keepdeagle ) )
    {
        if( user_has_weapon( id, CSW_DEAGLE ) )
        {
            g_HasDeagle[id] = true
        }
        else {
            g_HasDeagle[id] = false;
        }
    }
    else {
        g_HasDeagle[id] = false;
    }
}

public checkModel(id)
{
	if ( !g_HasDeagle[id] )
		return PLUGIN_HANDLED

	new szWeapID = read_data(2)

	if ( szWeapID == CSW_DEAGLE && g_HasDeagle[id] == true && get_pcvar_num(cvar_custommodel) )
	{
		set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
		set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
	}
	return PLUGIN_HANDLED
}


public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDeagle[attacker] )
	{
		SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
	}
}

public fw_CmdStart( id, uc_handle, seed )
{
    if( !is_user_alive( id ) )
        return PLUGIN_HANDLED

    if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
    {
        new szClip, szAmmo
        new szWeapID = get_user_weapon( id, szClip, szAmmo )

        if( szWeapID == CSW_DEAGLE && g_HasDeagle[id] && !g_hasZoom[ id ] )
        {
            golden_deagle_zoom( id, get_pcvar_num( cvar_zoom_type ) )
        }
        else if ( szWeapID == CSW_DEAGLE && g_HasDeagle[id] && g_hasZoom[id])
        {
            g_hasZoom[ id ] = false
            cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
        }
    }
    return PLUGIN_HANDLED
}

public make_tracer(id)
{
	if (get_pcvar_num(cvar_goldbullets))
	{
		new clip,ammo
		new wpnid = get_user_weapon(id,clip,ammo)
		new pteam[16]

		get_user_team(id, pteam, 15)

		if ((bullets[id] > clip) && (wpnid == CSW_DEAGLE) && g_HasDeagle[id])
		{
			new vec1[3], vec2[3]
			get_user_origin(id, vec1, 1) // origin; your camera point.
			get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)


			//BEAMENTPOINTS
			message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte (0)     //TE_BEAMENTPOINTS 0
			write_coord(vec1[0])
			write_coord(vec1[1])
			write_coord(vec1[2])
			write_coord(vec2[0])
			write_coord(vec2[1])
			write_coord(vec2[2])
			write_short( m_spriteTexture )
			write_byte(1) // framestart
			write_byte(5) // framerate
			write_byte(2) // life
			write_byte(10) // width
			write_byte(0) // noise
			write_byte( 255 )     // r, g, b
			write_byte( 215 )       // r, g, b
			write_byte( 0 )       // r, g, b
			write_byte(200) // brightness
			write_byte(150) // speed
			message_end()
		}

		bullets[id] = clip
	}

}

public cshop_item_selected(id, iItem)
{
	if( iItem != g_iDeagleItem )
	{
		return BUY_ITEM
	}

	if ( !is_user_alive(id) )
	{
		client_print(id,print_chat, "[AMXX] To buy golden Deagle You need to be alive!")
		return DONT_BUY
	}

	if (get_pcvar_num(cvar_bullets))
	{
		give_item(id, "weapon_deagle")
		give_item(id, "ammo_50ae")
		cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(cvar_bullets))
		g_HasDeagle[id] = true
	}

	return BUY_ITEM
}

public CmdGiveDeagle(id,level,cid)
{
	if (!cmd_access(id,level,cid,2))
		return PLUGIN_HANDLED;
	new arg[32];
	read_argv(1,arg,31);

	new player = cmd_target(id,arg,7);
	if (!player)
		return PLUGIN_HANDLED;

	new name[32];
	get_user_name(player,name,31);

	give_item(player, "weapon_deagle")
	g_HasDeagle[player] = true

	return PLUGIN_HANDLED
}

stock drop_prim(id)
{
	new weapons[32], num
	get_user_weapons(id, weapons, num)
	for (new i = 0; i < num; i++) {
		if (Wep_deagle & (1<<weapons[i]))
		{
			static wname[32]
			get_weaponname(weapons[i], wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock golden_deagle_zoom( id, type )
{
    g_hasZoom[ id ] = true;
    switch( type )
    {
        case 0: cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
        case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
        case 2:
        {
            cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 )
            emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
        }
        case 3:
        {
            cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 )
            emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
        }
        case 4:
        {
            g_ZoomDist[ id ]++
            g_hasZoom[ id ] = false;
            switch( g_ZoomDist[ id ] )
            {
                case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
                case 2:
                {
                    cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 )
                    emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
                }
                case 3:
                {
                    cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 )
                    emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
                }
                case 4:
                {
                    g_ZoomDist[ id ] = 0;
                    cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
                }
            }
        }
    }
}
Благодаря !

Искам само да попитам , Кроме - дали дава точки на играчите и за убийство на ботове или това зависи на 100% от самите настройки в csdm.cfg - от това за даване на пари при убийство на бот... просто пари ми даваше добре и за кил на играч и бот , но по-ми хареса "точковата система" - но с нея не ми дава при всяко убийство на бот - точки някак си(нещо дава нещо не два :) ... ? Дава нещо там и аз не знам какво :) Имаш ли настройка и за ботове - да ги зачита или игнорира по желание и аз не съм я видял, или .... пък ако може когато имаш време ,би ли добавил ?
Пак благодаря за golden deagle-то :) .

Добавено преди 1 час 2 минути 32 секунди:
iv69 написа: 16 Апр 2019, 21:24
OciXCrom написа: 16 Апр 2019, 20:30

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

#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <amxmisc>
#include <customshop>

#define is_valid_player(%1) (1 <= %1 <= 32)
#define PLUGIN "Golden Deagle"
#define VERSION "1.0"
#define AUTHOR "alicx"


new DEAGLE_V_MODEL[64] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[64] = "models/p_golden_deagle.mdl"

/* Pcvars */
new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_cost, cvar_bullets, cvar_keepdeagle, cvar_zoom_type;

new bool:g_HasDeagle[33]

new g_hasZoom[ 33 ]
new g_ZoomDist[ 33 ] = 0
new bullets[ 33 ]
new g_iDeagleItem

// Sprite
new m_spriteTexture

const Wep_deagle = ((1<<CSW_DEAGLE))


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	// The Cvars //
	cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "5")
	cvar_custommodel = register_cvar("goldendeagle_custom_model", "1")
	cvar_goldbullets = register_cvar("goldendeagle_gold_bullets", "1")
	cvar_cost = register_cvar("goldendeagle_cost", "4000")
	cvar_bullets = register_cvar("goldendeagle_bullets", "200")
	cvar_keepdeagle = register_cvar("goldendeagle_keep", "1")
	cvar_zoom_type = register_cvar("goldendeagle_zoom_type", "4")


	// Register The Buy Cmd
	register_concmd("amx_goldendeagle", "CmdGiveDeagle", ADMIN_BAN, "<name>")

	//Death Msg
	register_event("DeathMsg", "Death", "a")

	// Weapon Pick Up
	register_event("WeapPickup","checkModel","b","1=19")

	// Current Weapon Event
	register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")

	// Ham TakeDamage
	RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
	register_forward( FM_CmdStart, "fw_CmdStart")
	register_forward(FM_CmdStart, "fwCmdStart")
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}

public plugin_precache()
{
	precache_model(DEAGLE_V_MODEL)
	precache_model(DEAGLE_P_MODEL)
	m_spriteTexture = precache_model("sprites/dot.spr")
	precache_sound("weapons/zoom.wav")
	g_iDeagleItem = cshop_register_item("golden_deagle", "Golden Deagle", get_pcvar_num(cvar_cost))
}

public cshop_item_removed(id, iItem)
{
	if(iItem == g_iDeagleItem)
	{
		g_HasDeagle[id] = false
	}
}

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

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

public Death()
{
	g_HasDeagle[read_data(2)] = false
}

public fwHamPlayerSpawnPost(id)
{
    if( !is_user_alive( id ) )
        return;

    if( get_pcvar_num( cvar_keepdeagle ) )
    {
        if( user_has_weapon( id, CSW_DEAGLE ) )
        {
            g_HasDeagle[id] = true
        }
        else {
            g_HasDeagle[id] = false;
        }
    }
    else {
        g_HasDeagle[id] = false;
    }
}

public checkModel(id)
{
	if ( !g_HasDeagle[id] )
		return PLUGIN_HANDLED

	new szWeapID = read_data(2)

	if ( szWeapID == CSW_DEAGLE && g_HasDeagle[id] == true && get_pcvar_num(cvar_custommodel) )
	{
		set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
		set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
	}
	return PLUGIN_HANDLED
}


public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDeagle[attacker] )
	{
		SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
	}
}

public fw_CmdStart( id, uc_handle, seed )
{
    if( !is_user_alive( id ) )
        return PLUGIN_HANDLED

    if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
    {
        new szClip, szAmmo
        new szWeapID = get_user_weapon( id, szClip, szAmmo )

        if( szWeapID == CSW_DEAGLE && g_HasDeagle[id] && !g_hasZoom[ id ] )
        {
            golden_deagle_zoom( id, get_pcvar_num( cvar_zoom_type ) )
        }
        else if ( szWeapID == CSW_DEAGLE && g_HasDeagle[id] && g_hasZoom[id])
        {
            g_hasZoom[ id ] = false
            cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
        }
    }
    return PLUGIN_HANDLED
}

public make_tracer(id)
{
	if (get_pcvar_num(cvar_goldbullets))
	{
		new clip,ammo
		new wpnid = get_user_weapon(id,clip,ammo)
		new pteam[16]

		get_user_team(id, pteam, 15)

		if ((bullets[id] > clip) && (wpnid == CSW_DEAGLE) && g_HasDeagle[id])
		{
			new vec1[3], vec2[3]
			get_user_origin(id, vec1, 1) // origin; your camera point.
			get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)


			//BEAMENTPOINTS
			message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
			write_byte (0)     //TE_BEAMENTPOINTS 0
			write_coord(vec1[0])
			write_coord(vec1[1])
			write_coord(vec1[2])
			write_coord(vec2[0])
			write_coord(vec2[1])
			write_coord(vec2[2])
			write_short( m_spriteTexture )
			write_byte(1) // framestart
			write_byte(5) // framerate
			write_byte(2) // life
			write_byte(10) // width
			write_byte(0) // noise
			write_byte( 255 )     // r, g, b
			write_byte( 215 )       // r, g, b
			write_byte( 0 )       // r, g, b
			write_byte(200) // brightness
			write_byte(150) // speed
			message_end()
		}

		bullets[id] = clip
	}

}

public cshop_item_selected(id, iItem)
{
	if( iItem != g_iDeagleItem )
	{
		return BUY_ITEM
	}

	if ( !is_user_alive(id) )
	{
		client_print(id,print_chat, "[AMXX] To buy golden Deagle You need to be alive!")
		return DONT_BUY
	}

	if (get_pcvar_num(cvar_bullets))
	{
		give_item(id, "weapon_deagle")
		give_item(id, "ammo_50ae")
		cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(cvar_bullets))
		g_HasDeagle[id] = true
	}

	return BUY_ITEM
}

public CmdGiveDeagle(id,level,cid)
{
	if (!cmd_access(id,level,cid,2))
		return PLUGIN_HANDLED;
	new arg[32];
	read_argv(1,arg,31);

	new player = cmd_target(id,arg,7);
	if (!player)
		return PLUGIN_HANDLED;

	new name[32];
	get_user_name(player,name,31);

	give_item(player, "weapon_deagle")
	g_HasDeagle[player] = true

	return PLUGIN_HANDLED
}

stock drop_prim(id)
{
	new weapons[32], num
	get_user_weapons(id, weapons, num)
	for (new i = 0; i < num; i++) {
		if (Wep_deagle & (1<<weapons[i]))
		{
			static wname[32]
			get_weaponname(weapons[i], wname, sizeof wname - 1)
			engclient_cmd(id, "drop", wname)
		}
	}
}

stock golden_deagle_zoom( id, type )
{
    g_hasZoom[ id ] = true;
    switch( type )
    {
        case 0: cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
        case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
        case 2:
        {
            cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 )
            emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
        }
        case 3:
        {
            cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 )
            emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
        }
        case 4:
        {
            g_ZoomDist[ id ]++
            g_hasZoom[ id ] = false;
            switch( g_ZoomDist[ id ] )
            {
                case 1: cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 1 )
                case 2:
                {
                    cs_set_user_zoom( id, CS_SET_FIRST_ZOOM, 1 )
                    emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
                }
                case 3:
                {
                    cs_set_user_zoom( id, CS_SET_SECOND_ZOOM, 1 )
                    emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100 )
                }
                case 4:
                {
                    g_ZoomDist[ id ] = 0;
                    cs_set_user_zoom( id, CS_RESET_ZOOM, 1 )
                }
            }
        }
    }
}
Благодаря !

Искам само да попитам , Кроме - дали дава точки на играчите и за убийство на ботове или това зависи на 100% от самите настройки в csdm.cfg - от това за даване на пари при убийство на бот... просто пари ми даваше добре и за кил на играч и бот , но по-ми хареса "точковата система" - но с нея не ми дава при всяко убийство на бот - точки някак си(нещо дава нещо не два :) ... ? Дава нещо там и аз не знам какво :) Имаш ли настройка и за ботове - да ги зачита или игнорира по желание и аз не съм я видял, или .... пък ако може когато имаш време ,би ли добавил ?
Пак благодаря за golden deagle-то :) .

Кром-е , плъгина с golden deagle не върви ? Компилира се добре, описах го в plugins-cshop.ini , когато го търся е shop-менюто не ми се появява... Иначе го има в amxx list , като активен... Не се е добавил изобщо в CustomShopItems.ini. Правил си по подобие на ак47 и съблъгин за m4a1 -там си ми го има и върви... Но за golden deagle , нещо май липсва ...

OciXCrom's Custom Shop + API

Публикувано на: 16 Апр 2019, 22:45
от OciXCrom
Увери се, че е добавен под custom_shop.amxx.
Не съм слагал забрана за получаване точки при убийство на бот.

OciXCrom's Custom Shop + API

Публикувано на: 16 Апр 2019, 23:44
от iv69
OciXCrom написа: 16 Апр 2019, 22:45 Увери се, че е добавен под custom_shop.amxx.
Не съм слагал забрана за получаване точки при убийство на бот.
Аз го описах в plugins-cshop.ini като останалите твои съб-плъгини? Трябва ли да е в plygins.ini за да е под custom_shop.amxx ?

OciXCrom's Custom Shop + API

Публикувано на: 17 Апр 2019, 19:46
от OciXCrom
Зависи къде си сложил другия. Сървърът първо чете plugins.ini, а след това plugins-cshop.ini и останалите. Важното е съб-плъгинът да се прочете СЛЕД главния плъгин.

OciXCrom's Custom Shop + API

Публикувано на: 12 Май 2019, 21:24
от iv69
Искам да попитам, може ли да се съкрати малко изгледа на /shop-менюто, т.е. като някой ползва командата /shop - да вижда само "предметите" и тяхната цена, и да бъде премахната третата графа за "Limit:"/колко от колко възможни/. Функцията да си остава и да се настройва през CustomShopItems.ini, но да не просъства в менюто ? Дали това може да се направи с промяна в CustomShopItems.ini или CustomShop.ini или трябва да се променя sma-файла ?

OciXCrom's Custom Shop + API

Публикувано на: 12 Май 2019, 22:09
от OciXCrom
iv69 написа: 12 Май 2019, 21:24 Искам да попитам, може ли да се съкрати малко изгледа на /shop-менюто, т.е. като някой ползва командата /shop - да вижда само "предметите" и тяхната цена, и да бъде премахната третата графа за "Limit:"/колко от колко възможни/. Функцията да си остава и да се настройва през CustomShopItems.ini, но да не просъства в менюто ? Дали това може да се направи с промяна в CustomShopItems.ini или CustomShop.ini или трябва да се променя sma-файла ?
Защо точно искаш да направиш това? Все пак това е полезна информация за хората и не прави нищо лошо. Може да се промени като редактираш .sma файла, понеже не съм добавил подобна настройка. Като цяло не виждам какво получаваш от въпросната промяна.

OciXCrom's Custom Shop + API

Публикувано на: 13 Май 2019, 10:33
от iv69
OciXCrom написа: 12 Май 2019, 22:09
iv69 написа: 12 Май 2019, 21:24 Искам да попитам, може ли да се съкрати малко изгледа на /shop-менюто, т.е. като някой ползва командата /shop - да вижда само "предметите" и тяхната цена, и да бъде премахната третата графа за "Limit:"/колко от колко възможни/. Функцията да си остава и да се настройва през CustomShopItems.ini, но да не просъства в менюто ? Дали това може да се направи с промяна в CustomShopItems.ini или CustomShop.ini или трябва да се променя sma-файла ?
Защо точно искаш да направиш това? Все пак това е полезна информация за хората и не прави нищо лошо. Може да се промени като редактираш .sma файла, понеже не съм добавил подобна настройка. Като цяло не виждам какво получаваш от въпросната промяна.
Благодаря за отговора. Ще се опитам да дам аргументирам отговор: малцина от играчите са ония които разбират за какво е тази "графа"(ако искаш ми вярвай ако искаш -не), а пък се питам колко ли от разбиращите за какво е тази графа, ги интересува тя? Ще си купуват докато могат,свърши ли, няма да купуват! Просто е. Сървъра е CSDM,всеки влиза и веднага започва да стреля :gamer1: , и от 10 или 20 един дори знае за шоп-а, а пък измежду тези 10или 5% са малцината - не повече от 5% - които четат или се интересуват.........,т.е. 5% от 5%... 1/400 :) , би ли бил така добър когато имаш малко време , да ми дадеш редактирани редовете за тази промяна от sma-кода. Благодаря !

Иначе- с една дума на въпроса какво получавам: "прегледност"- зареждаш си шоп-менюто и отпръв поглед всичко ти е ясно и няма нужда погледа да шари , да чете да мисли човек, че на много тази дейност им е мисия невъзможна....

p.s. Сега ми хрумна, (сега като започнах да се правя на разбирач), че може би много повече хора биха ползвали шоп-менюто, ако имаше излизащ системно през 60сек например, някакъв понагласен цветен надпис за самия шоп-магазин>? Това , както и идеите за добавяне на опцията за duration, на всички предмети според мен биха направили още по-популярен плъгина(с възможност който иска да ползва опциите или да ги спира...) ???

OciXCrom's Custom Shop + API

Публикувано на: 14 Май 2019, 00:23
от OciXCrom
Надали някой няма да разбере какво означава 0/3, а на разбиращите надали ще им пречи - напротив, ще им даде информация още колко пъти могат да купуват въпросния предмет и по този начин да планират играта си. Ако я няма тази графа, по-скоро ще им пречи, примерно някой е събирал пари за да купи предмета и когато цъкне бутона, чак тогава ще разбере, че е достигнал лимита. Ама както и да е, все пак ти си решаваш.

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

Duration може да добавиш на всички предмети за които има смисъл да се добавя, по-точно на 12 от 17 предмети може да се добави. Примерно за кръвта не виждам смисъл да може да се добавя времетраене, понеже може да убие играча.

OciXCrom's Custom Shop + API

Публикувано на: 17 Сеп 2019, 17:22
от Fatall
Дали може на тия два плъгина да им се сложи Glow

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

#define GLOW_R 255
#define GLOW_G 215
#define GLOW_B 0
set_user_rendering(id, kRenderFxGlowShell, GLOW_AK_R, GLOW_AK_G, GLOW_AK_B, kRenderNormal, 10)
И как мога да направя вместо да се пише /shop да се отваря с буквата "N" ( Дали ще стане така "CSHOP_COMMANDS = nightvision")

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

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define PLUGIN_VERSION "4.x"

additem ITEM_GOLDENAK
#define GOLDENAK_ID "goldenak"
#define GOLDENAK_NAME "Golden AK47"
#define GOLDENAK_PRICE 16000
#define GOLDENAK_LIMIT 1
#define GOLDENAK_SOUND "weapons/gauss2.wav"
#define GOLDENAK_VMODEL "models/custom_shop/v_goldenak.mdl"
#define GOLDENAK_PMODEL "models/custom_shop/p_goldenak.mdl"
#define GOLDENAK_WEAPON_STR "weapon_ak47"
#define GOLDENAK_WEAPON_CSW CSW_AK47
#define GOLDENAK_DAMAGE 5
#define GOLDENAK_AMMO 500
new bool:g_blGoldenAK[33]

// Comment this line to disable the bullets.
#define USE_BULLETS

#if defined USE_BULLETS
	// You can add a shoot sound in this line, after you remove the comment.
	//#define BULLET_SOUND "weapons/ak47-1.wav"
	
	#define BULLET_MODEL "sprites/dot.spr"
	#define BULLET_STARTFRAME 1
	#define BULLET_FRAMERATE 5
	#define BULLET_LIFE 2
	#define BULLET_WIDTH 10
	#define BULLET_NOISE 0
	#define BULLET_COLOR_RED 255
	#define BULLET_COLOR_GREEN 215
	#define BULLET_COLOR_BLUE 0
	#define BULLET_BRIGHTNESS 200
	#define BULLET_SPEED 150
	new g_iGoldenBullet
#endif

#define DEFAULT_VMODEL "models/v_ak47.mdl"
#define DEFAULT_PMODEL "models/p_ak47.mdl"

public plugin_init()
{
	register_plugin("Custom Shop: Golden AK47", PLUGIN_VERSION, "OciXCrom")
	RegisterHam(Ham_TakeDamage, "player", "eventTakeDamage")
	register_event("CurWeapon", "goldenModel", "be", "1=1")
	
	#if defined USE_BULLETS
		RegisterHam(Ham_Weapon_PrimaryAttack, GOLDENAK_WEAPON_STR, "eventPrimaryAttack", 1)
	#endif
}

public plugin_precache()
{
	ITEM_GOLDENAK = cshopRegisterItem(GOLDENAK_ID, GOLDENAK_NAME, GOLDENAK_PRICE, GOLDENAK_LIMIT)
	precache_model(GOLDENAK_VMODEL)
	precache_model(GOLDENAK_PMODEL)
	
	#if defined USE_BULLETS
		g_iGoldenBullet = precache_model(BULLET_MODEL)
	#endif
	
	#if defined BULLET_SOUND
		precache_sound(BULLET_SOUND)
	#endif
}

public cshopItemBought(id, iItem)
	if(iItem == ITEM_GOLDENAK) 			{ g_blGoldenAK[id] = true; give_item(id, GOLDENAK_WEAPON_STR); cs_set_user_bpammo(id, GOLDENAK_WEAPON_CSW, GOLDENAK_AMMO); goldenModel(id); }
	
public cshopItemRemoved(id, iItem)
	if(iItem == ITEM_GOLDENAK) 			{ g_blGoldenAK[id] = false; set_default_model(id); }
	
public eventTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
	if(is_user_alive(iAttacker) && iAttacker != iVictim)
		if(g_blGoldenAK[iAttacker] && get_user_weapon(iAttacker) == GOLDENAK_WEAPON_CSW && iAttacker == iInflictor)
			SetHamParamFloat(4, flDamage * GOLDENAK_DAMAGE)
			
#if defined USE_BULLETS			
	public eventPrimaryAttack(iWeapon)
	{
		new id = pev(iWeapon, pev_owner)
		
		if(!g_blGoldenAK[id])
			return
			
		new iClip, iAmmo
		new iWeapon = get_user_weapon(id, iClip, iAmmo)
		
		if(!iClip || iWeapon != GOLDENAK_WEAPON_CSW)
			return
		
		#if defined BULLET_SOUND
			player_emitsound(id, BULLET_SOUND)
		#endif
		
		new iVec1[3], iVec2[3]
		get_user_origin(id, iVec1, 1)
		get_user_origin(id, iVec2, 3)
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_BEAMPOINTS)
		write_coord(iVec1[0])
		write_coord(iVec1[1])
		write_coord(iVec1[2])
		write_coord(iVec2[0])
		write_coord(iVec2[1])
		write_coord(iVec2[2])
		write_short(g_iGoldenBullet)
		write_byte(BULLET_STARTFRAME)
		write_byte(BULLET_FRAMERATE)
		write_byte(BULLET_LIFE)
		write_byte(BULLET_WIDTH)
		write_byte(BULLET_NOISE)
		write_byte(BULLET_COLOR_RED)
		write_byte(BULLET_COLOR_GREEN)
		write_byte(BULLET_COLOR_BLUE)
		write_byte(BULLET_BRIGHTNESS)
		write_byte(BULLET_SPEED)
		message_end()
	}
#endif

public goldenModel(id)
{
	if(get_user_weapon(id) == GOLDENAK_WEAPON_CSW && g_blGoldenAK[id])
	{
		set_pev(id, pev_viewmodel2, GOLDENAK_VMODEL)
		set_pev(id, pev_weaponmodel2, GOLDENAK_PMODEL)
	}
}

set_default_model(id)
{
	if(get_user_weapon(id) == GOLDENAK_WEAPON_CSW)
	{
		set_pev(id, pev_viewmodel2, DEFAULT_VMODEL)
		set_pev(id, pev_weaponmodel2, DEFAULT_PMODEL)
	}
}

#if defined BULLET_SOUND
	player_emitsound(id, szSound[])
		emit_sound(id, CHAN_WEAPON, szSound, 1.0, ATTN_NORM, 0, PITCH_HIGH)
#endif

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

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#if !defined m_pPlayer
	#define m_pPlayer 41
#endif


#define PLUGIN_VERSION "1.0.3"
#define V_MODEL "models/custom_shop/v_golden_awp.mdl"
#define P_MODEL "models/custom_shop/p_golden_awp.mdl"

additem ITEM_GOLDEN_AWP
new g_bHasItem[33], g_szDamage[16], g_iBPAmmo

public plugin_init()
{
	register_plugin("CSHOP: Golden AWP", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXSHOPGoldenAWP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	RegisterHam(Ham_Item_Deploy, "weapon_awp", "OnSelectAWP", 1)
	RegisterHam(Ham_TakeDamage, "player", "PreTakeDamage", 0)
	cshop_get_string(ITEM_GOLDEN_AWP, "Damage", g_szDamage, charsmax(g_szDamage))
	g_iBPAmmo = cshop_get_int(ITEM_GOLDEN_AWP, "Backpack Ammo")
}

public plugin_precache()
{
	ITEM_GOLDEN_AWP = cshop_register_item("goldenawp", "Golden AWP", 9500)
	cshop_set_string(ITEM_GOLDEN_AWP, "Damage", "+100%")
	cshop_set_int(ITEM_GOLDEN_AWP, "Backpack Ammo", 30)

	#if defined V_MODEL
	precache_model(V_MODEL)
	#endif

	#if defined P_MODEL
	precache_model(P_MODEL)
	#endif
}

public cshop_item_selected(id, iItem)
{
	if(iItem == ITEM_GOLDEN_AWP)
	{
		g_bHasItem[id] = true

		if(get_user_weapon(id) == CSW_AWP)
			RefreshAWPModel(id)
		else if(!user_has_weapon(id, CSW_AWP))
			give_item(id, "weapon_awp")

		cs_set_user_bpammo(id, CSW_AWP, g_iBPAmmo)
	}
}

public cshop_item_removed(id, iItem)
{
	if(iItem == ITEM_GOLDEN_AWP)
		g_bHasItem[id] = false
}

public client_putinserver(id)
	g_bHasItem[id] = false

public OnSelectAWP(iEnt)
{
	new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
	
	if(g_bHasItem[id] && is_user_connected(id))
		RefreshAWPModel(id)
}

public PreTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(is_user_alive(iAttacker) && iAttacker != iVictim && g_bHasItem[iAttacker])
		SetHamParamFloat(4, math_add_f(fDamage, g_szDamage))
}

RefreshAWPModel(const id)
{
	#if defined V_MODEL
	set_pev(id, pev_viewmodel2, V_MODEL)
	#endif

	#if defined P_MODEL
	set_pev(id, pev_weaponmodel2, P_MODEL)
	#endif
}

Float:math_add_f(Float:fNum, const szMath[])
{
	static szNewMath[16], Float:fMath, bool:bPercent, cOperator
   
	copy(szNewMath, charsmax(szNewMath), szMath)
	bPercent = szNewMath[strlen(szNewMath) - 1] == '%'
	cOperator = szNewMath[0]
   
	if(!isdigit(szNewMath[0]))
		szNewMath[0] = ' '
   
	if(bPercent)
		replace(szNewMath, charsmax(szNewMath), "%", "")
	   
	trim(szNewMath)
	fMath = str_to_float(szNewMath)
   
	if(bPercent)
		fMath *= fNum / 100
	   
	switch(cOperator)
	{
		case '+': fNum += fMath
		case '-': fNum -= fMath
		case '/': fNum /= fMath
		case '*': fNum *= fMath
		default: fNum = fMath
	}
   
	return fNum
}

OciXCrom's Custom Shop + API

Публикувано на: 17 Сеп 2019, 20:32
от mi0
За командата тествай и ще разбереш, Glow-а е лесно да си го добавиш, щом дори си дал редовете. Ето ти ги готови(тествай).

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

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define PLUGIN_VERSION "4.x"

additem ITEM_GOLDENAK
#define GOLDENAK_ID "goldenak"
#define GOLDENAK_NAME "Golden AK47"
#define GOLDENAK_PRICE 16000
#define GOLDENAK_LIMIT 1
#define GOLDENAK_SOUND "weapons/gauss2.wav"
#define GOLDENAK_VMODEL "models/custom_shop/v_goldenak.mdl"
#define GOLDENAK_PMODEL "models/custom_shop/p_goldenak.mdl"
#define GOLDENAK_WEAPON_STR "weapon_ak47"
#define GOLDENAK_WEAPON_CSW CSW_AK47
#define GOLDENAK_DAMAGE 5
#define GOLDENAK_AMMO 500
new bool:g_blGoldenAK[33]

// Comment this line to disable the bullets.
#define USE_BULLETS
// Comment this line to disable the glow.
#define USE_GLOW

#if defined USE_BULLETS
	// You can add a shoot sound in this line, after you remove the comment.
	//#define BULLET_SOUND "weapons/ak47-1.wav"
	
	#define BULLET_MODEL "sprites/dot.spr"
	#define BULLET_STARTFRAME 1
	#define BULLET_FRAMERATE 5
	#define BULLET_LIFE 2
	#define BULLET_WIDTH 10
	#define BULLET_NOISE 0
	#define BULLET_COLOR_RED 255
	#define BULLET_COLOR_GREEN 215
	#define BULLET_COLOR_BLUE 0
	#define BULLET_BRIGHTNESS 200
	#define BULLET_SPEED 150
	new g_iGoldenBullet
#endif

#if defined USE_GLOW
	#define GLOW_R 255
	#define GLOW_G 215
	#define GLOW_B 0
#endif

#define DEFAULT_VMODEL "models/v_ak47.mdl"
#define DEFAULT_PMODEL "models/p_ak47.mdl"

public plugin_init()
{
	register_plugin("Custom Shop: Golden AK47", PLUGIN_VERSION, "OciXCrom")
	RegisterHam(Ham_TakeDamage, "player", "eventTakeDamage")
	register_event("CurWeapon", "goldenModel", "be", "1=1")
	
	#if defined USE_BULLETS
		RegisterHam(Ham_Weapon_PrimaryAttack, GOLDENAK_WEAPON_STR, "eventPrimaryAttack", 1)
	#endif
}

public plugin_precache()
{
	ITEM_GOLDENAK = cshopRegisterItem(GOLDENAK_ID, GOLDENAK_NAME, GOLDENAK_PRICE, GOLDENAK_LIMIT)
	precache_model(GOLDENAK_VMODEL)
	precache_model(GOLDENAK_PMODEL)
	
	#if defined USE_BULLETS
		g_iGoldenBullet = precache_model(BULLET_MODEL)
	#endif
	
	#if defined BULLET_SOUND
		precache_sound(BULLET_SOUND)
	#endif
}

public cshopItemBought(id, iItem)
{
	if(iItem == ITEM_GOLDENAK)
	{
		g_blGoldenAK[id] = true
		give_item(id, GOLDENAK_WEAPON_STR)
		cs_set_user_bpammo(id, GOLDENAK_WEAPON_CSW, GOLDENAK_AMMO)
		goldenModel(id)
		#if defined USE_GLOW
			set_user_rendering(id, kRenderFxGlowShell, GLOW_R, GLOW_G, GLOW_B, kRenderNormal, 10)
		#endif
	}
}
	
public cshopItemRemoved(id, iItem)
	if(iItem == ITEM_GOLDENAK)
	{
		g_blGoldenAK[id] = false
		set_default_model(id)
		#if defined USE_GLOW
			set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
		#endif
	}
	
public eventTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits)
	if(is_user_alive(iAttacker) && iAttacker != iVictim)
	{
		if(g_blGoldenAK[iAttacker] && get_user_weapon(iAttacker) == GOLDENAK_WEAPON_CSW && iAttacker == iInflictor)
		{
			SetHamParamFloat(4, flDamage * GOLDENAK_DAMAGE)
		}
	}
			
#if defined USE_BULLETS			
	public eventPrimaryAttack(iWeapon)
	{
		new id = pev(iWeapon, pev_owner)
		
		if(!g_blGoldenAK[id])
			return
			
		new iClip, iAmmo
		new iWeapon = get_user_weapon(id, iClip, iAmmo)
		
		if(!iClip || iWeapon != GOLDENAK_WEAPON_CSW)
			return
		
		#if defined BULLET_SOUND
			player_emitsound(id, BULLET_SOUND)
		#endif
		
		new iVec1[3], iVec2[3]
		get_user_origin(id, iVec1, 1)
		get_user_origin(id, iVec2, 3)
		message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
		write_byte(TE_BEAMPOINTS)
		write_coord(iVec1[0])
		write_coord(iVec1[1])
		write_coord(iVec1[2])
		write_coord(iVec2[0])
		write_coord(iVec2[1])
		write_coord(iVec2[2])
		write_short(g_iGoldenBullet)
		write_byte(BULLET_STARTFRAME)
		write_byte(BULLET_FRAMERATE)
		write_byte(BULLET_LIFE)
		write_byte(BULLET_WIDTH)
		write_byte(BULLET_NOISE)
		write_byte(BULLET_COLOR_RED)
		write_byte(BULLET_COLOR_GREEN)
		write_byte(BULLET_COLOR_BLUE)
		write_byte(BULLET_BRIGHTNESS)
		write_byte(BULLET_SPEED)
		message_end()
	}
#endif

public goldenModel(id)
{
	if(get_user_weapon(id) == GOLDENAK_WEAPON_CSW && g_blGoldenAK[id])
	{
		set_pev(id, pev_viewmodel2, GOLDENAK_VMODEL)
		set_pev(id, pev_weaponmodel2, GOLDENAK_PMODEL)
	}
}

set_default_model(id)
{
	if(get_user_weapon(id) == GOLDENAK_WEAPON_CSW)
	{
		set_pev(id, pev_viewmodel2, DEFAULT_VMODEL)
		set_pev(id, pev_weaponmodel2, DEFAULT_PMODEL)
	}
}

#if defined BULLET_SOUND
	player_emitsound(id, szSound[])
	{
		emit_sound(id, CHAN_WEAPON, szSound, 1.0, ATTN_NORM, 0, PITCH_HIGH)
	}
#endif

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

#include <amxmodx>
#include <cstrike>
#include <customshop>
#include <fakemeta>
#include <fun>
#include <hamsandwich>

#define PLUGIN_VERSION "1.0.4"
#define V_MODEL "models/custom_shop/v_golden_awp.mdl"
#define P_MODEL "models/custom_shop/p_golden_awp.mdl"
// Comment this line to disable the glow.
#define USE_GLOW

#if defined USE_GLOW
	#define GLOW_R 255
	#define GLOW_G 215
	#define GLOW_B 0
#endif

#if !defined m_pPlayer
	#define m_pPlayer 41
#endif

additem ITEM_GOLDEN_AWP
new g_bHasItem[33], g_szDamage[16], g_iBPAmmo

public plugin_init()
{
	register_plugin("CSHOP: Golden AWP", PLUGIN_VERSION, "OciXCrom")
	register_cvar("CRXSHOPGoldenAWP", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	RegisterHam(Ham_Item_Deploy, "weapon_awp", "OnSelectAWP", 1)
	RegisterHam(Ham_TakeDamage, "player", "PreTakeDamage", 0)
	cshop_get_string(ITEM_GOLDEN_AWP, "Damage", g_szDamage, charsmax(g_szDamage))
	g_iBPAmmo = cshop_get_int(ITEM_GOLDEN_AWP, "Backpack Ammo")
}

public plugin_precache()
{
	ITEM_GOLDEN_AWP = cshop_register_item("goldenawp", "Golden AWP", 9500)
	cshop_set_string(ITEM_GOLDEN_AWP, "Damage", "+100%")
	cshop_set_int(ITEM_GOLDEN_AWP, "Backpack Ammo", 30)

	#if defined V_MODEL
		precache_model(V_MODEL)
	#endif

	#if defined P_MODEL
		precache_model(P_MODEL)
	#endif
}

public cshop_item_selected(id, iItem)
{
	if(iItem == ITEM_GOLDEN_AWP)
	{
		g_bHasItem[id] = true

		if(get_user_weapon(id) == CSW_AWP)
		{
			RefreshAWPModel(id)
		}
		else if(!user_has_weapon(id, CSW_AWP))
		{
			give_item(id, "weapon_awp")
		}
		cs_set_user_bpammo(id, CSW_AWP, g_iBPAmmo)

		#if defined USE_GLOW
			set_user_rendering(id, kRenderFxGlowShell, GLOW_R, GLOW_G, GLOW_B, kRenderNormal, 10)
		#endif
	}
}

public cshop_item_removed(id, iItem)
{
	if(iItem == ITEM_GOLDEN_AWP)
	{
		g_bHasItem[id] = false
		#if defined USE_GLOW
			set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
		#endif
	}
}

public client_putinserver(id)
{
	g_bHasItem[id] = false
}

public OnSelectAWP(iEnt)
{
	new id = get_pdata_cbase(iEnt, m_pPlayer, 4)
	
	if(g_bHasItem[id] && is_user_connected(id))
	{
		RefreshAWPModel(id)
	}
}

public PreTakeDamage(iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits)
{
	if(is_user_alive(iAttacker) && iAttacker != iVictim && g_bHasItem[iAttacker])
	{
		SetHamParamFloat(4, math_add_f(fDamage, g_szDamage))
	}
}

RefreshAWPModel(const id)
{
	#if defined V_MODEL
		set_pev(id, pev_viewmodel2, V_MODEL)
	#endif

	#if defined P_MODEL
		set_pev(id, pev_weaponmodel2, P_MODEL)
	#endif
}

Float:math_add_f(Float:fNum, const szMath[])
{
	static szNewMath[16], Float:fMath, bool:bPercent, cOperator
   
	copy(szNewMath, charsmax(szNewMath), szMath)
	bPercent = szNewMath[strlen(szNewMath) - 1] == '%'
	cOperator = szNewMath[0]
   
	if(!isdigit(szNewMath[0]))
	{
		szNewMath[0] = ' '
	}
   
	if(bPercent)
	{
		replace(szNewMath, charsmax(szNewMath), "%", "")
	}
	   
	trim(szNewMath)
	fMath = str_to_float(szNewMath)
   
	if(bPercent)
	{
		fMath *= fNum / 100
	}
	   
	switch(cOperator)
	{
		case '+': fNum += fMath
		case '-': fNum -= fMath
		case '/': fNum /= fMath
		case '*': fNum *= fMath
		default: fNum = fMath
	}
   
	return fNum
}