Помощ със задаване на цена на оръжие с reapi

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ със задаване на цена на оръжие с reapi

Мнение от YankoNL » 11 Апр 2021, 18:57

Здравейте,
опитах се сам да задам сума за оръжие, обаче нещо не ми се получи. :headbang: :mad:
Надявам се накой да знае как става и ако може и/или желае да сподели. :)
Благодаря предварително! :wub:
Ето го и кода:

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

#include <amxmodx>
#include <hamsandwich>
#include <reapi>

//Link to original: https://dev-cs.ru/threads/1983/

#define WEAPON_CMD "test" // Command
#define WEAPON_ID WEAPON_M4A1 // ID weapon
#define WEAPON_NAME "weapon_m4a1" // Weapon Name
#define WEAPON_PRICE 1
// #define ACCESS_FLAG ADMIN_LEVEL_H // Flag weapon access. Comment to be available to everyone
#define WEAPON_DAMAGE 1.5 // Damage multiplier. Comment to disable
#define WEAPON_CLIP 35 // Weapon Ammp
#define WEAPON_AMMO 120 // Backpack Ammo
// #define WEAPON_SPEED 300.0 // Running speed. Comment for default quantity
// #define WEAPON_GRAVITY 0.8 // Gravity (1.0 == sv_gravity). Comment for default quantity.
#define MODELS // Include weapon models. Comment to disable
#if defined MODELS
#define MODEL_V "models/digital_gaming/chrom_gold/v_m4a1.mdl" // (v_) View Weapon Model.
#define MODEL_P "models/digital_gaming/chrom_gold/p_m4a1.mdl" // (p_) Player Weapon Model.
//#define MODEL_W "models/custom/w_m4a1.mdl" // (w_) World Weapon Model.
#endif
// #define WEAPON_CAN_TOUCH_ONLY_OWNER // Only the owner can pick up teh weapon. Comment to disable

#define WEAPON_UID 1
#define GetWeponID(%1) WeaponIdType:get_member(%1, m_iId)
#define IsCustomWeapon(%1) bool:(get_entvar(%1, var_impulse) == WEAPON_UID)

#if defined MODELS
public plugin_precache() {
    precache_model(MODEL_V);
    precache_model(MODEL_P);

    #if defined MODEL_W
    precache_model(MODEL_W);
    #endif
}
#endif

#if defined WEAPON_PRICE
new g_iWeaponID, g_iWeaponCost;
#endif

public plugin_init(){
    register_clcmd(WEAPON_CMD, "CmdGive");

#if defined MODELS || defined WEAPON_GRAVITY
    RegisterHam(Ham_Item_Deploy, WEAPON_NAME, "Item_Deploy_Post", true);
#endif

#if defined WEAPON_GRAVITY
    RegisterHam(Ham_Item_Holster, WEAPON_NAME, "Item_Holster_Post", true);
#endif

#if defined MODEL_W
    RegisterHookChain(RG_CWeaponBox_SetModel, "CWeaponBox_SetModel_Pre", false);
#endif

#if defined WEAPON_CLIP
    RegisterHam(Ham_Weapon_Reload, WEAPON_NAME, "Weapon_Reload_Pre", false);
#endif

#if defined WEAPON_SPEED
    RegisterHam(Ham_CS_Item_GetMaxSpeed, WEAPON_NAME, "CS_Item_GetMaxSpeed_Pre", false);
#endif

#if defined WEAPON_CAN_TOUCH_ONLY_OWNER
    RegisterHam(Ham_Touch, "weaponbox", "Weaponbox_Touch_Pre", false);
#endif

#if defined WEAPON_PRICE
	RegisterHookChain(RG_BuyWeaponByWeaponID, "fw_BuyWeaponByWeaponID_Pre", false);
#endif
}

public CmdGive(id) {
#if defined ACCESS_FLAG
    if (~get_user_flags(id) & ACCESS_FLAG) {
        return PLUGIN_HANDLED;
    }
#endif

    new weapon = rg_give_custom_item(id, WEAPON_NAME, GT_REPLACE, WEAPON_UID);
    if (is_nullent(weapon)) {
        return PLUGIN_HANDLED;
    }

#if defined WEAPON_CLIP
    rg_set_iteminfo(weapon, ItemInfo_iMaxClip, WEAPON_CLIP);
    rg_set_user_ammo(id, WEAPON_ID, WEAPON_CLIP);
#endif

#if defined WEAPON_AMMO
    rg_set_user_bpammo(id, WEAPON_ID, WEAPON_AMMO);
#endif

#if defined WEAPON_DAMAGE
    set_member(weapon, m_Weapon_flBaseDamage, Float:get_member(weapon, m_Weapon_flBaseDamage) * WEAPON_DAMAGE);
    #if WEAPON_ID == WEAPON_M4A1
    set_member(weapon, m_M4A1_flBaseDamageSil, Float:get_member(weapon, m_M4A1_flBaseDamageSil) * WEAPON_DAMAGE);
    #elseif WEAPON_ID == WEAPON_USP
    set_member(weapon, m_USP_flBaseDamageSil, Float:get_member(weapon, m_USP_flBaseDamageSil) * WEAPON_DAMAGE);
    #elseif WEAPON_ID == WEAPON_FAMAS
    set_member(weapon, m_Famas_flBaseDamageBurst, Float:get_member(weapon, m_Famas_flBaseDamageBurst) * WEAPON_DAMAGE);
    #endif
#endif
    return PLUGIN_HANDLED;
}

#if defined MODELS || defined WEAPON_GRAVITY
public Item_Deploy_Post(weapon) {
    if (!IsCustomWeapon(weapon)) {
        return HAM_IGNORED;
    }

    new id = get_member(weapon, m_pPlayer);

    #if defined MODELS
    set_entvar(id, var_viewmodel, MODEL_V);
    set_entvar(id, var_weaponmodel, MODEL_P);
    #endif

    #if defined WEAPON_GRAVITY
    set_entvar(id, var_gravity, WEAPON_GRAVITY);
    #endif

    return HAM_IGNORED;
}
#endif

#if defined WEAPON_GRAVITY
public Item_Holster_Post(weapon) {
    if (IsCustomWeapon(weapon)) {
        new id = get_member(weapon, m_pPlayer);
        set_entvar(id, var_gravity, 1.0);
    }
}
#endif

#if defined MODEL_W
public CWeaponBox_SetModel_Pre(const weaponbox, const model[]) {
    new weapon = getWeaponBoxWeapon(weaponbox);
    if (weapon != NULLENT && IsCustomWeapon(weapon)) {
        SetHookChainArg(2, ATYPE_STRING, MODEL_W);
    }
}
#endif

#if defined WEAPON_CLIP
public Weapon_Reload_Pre(weapon) {
    if (!IsCustomWeapon(weapon) || get_member(weapon, m_Weapon_iClip) < WEAPON_CLIP) {
        return HAM_IGNORED;
    }

    new id = get_member(weapon, m_pPlayer);
    #if WEAPON_ID == WEAPON_M4A1
    sendWeaponAmimation(id, get_member(weapon, m_Weapon_iWeaponState) & WPNSTATE_M4A1_SILENCED ? 0 : 7);
    #elseif WEAPON_ID == WEAPON_USP
    sendWeaponAmimation(id, get_member(weapon, m_Weapon_iWeaponState) & WPNSTATE_USP_SILENCED ? 0 : 8);
    #else
    sendWeaponAmimation(id, 0);
    #endif

    return HAM_SUPERCEDE;
}
#endif

#if defined WEAPON_SPEED
public CS_Item_GetMaxSpeed_Pre(const weapon) {
    if (IsCustomWeapon(weapon)) {
        SetHamReturnFloat(WEAPON_SPEED);
        return HAM_SUPERCEDE;
    }

    return HAM_IGNORED;
}
#endif

#if defined WEAPON_PRICE
public fw_BuyWeaponByWeaponID_Pre(const iIndex, const WeaponIdType:iId)
{
    if(iId != WeaponIdType:g_iWeaponID && !IsCustomWeapon(iId))
        return HC_CONTINUE;

    new iPlMoney = get_member(iIndex, m_iAccount);

    if(iPlMoney >= g_iWeaponCost)
    {      
        rg_drop_item(iIndex, WEAPON_NAME);            
    } else {
        client_print(iIndex, print_center, "Недостаточно средств для покупки данного предмета!");
        SetHookChainReturn(ATYPE_INTEGER, 0);

        return HC_SUPERCEDE;
    }

    return HC_CONTINUE;
}
#endif

#if defined WEAPON_CAN_TOUCH_ONLY_OWNER
public Weaponbox_Touch_Pre(const weaponbox, const id) {
    new weapon = getWeaponBoxWeapon(weaponbox);
    if (weapon == NULLENT || GetWeponID(weapon) != WEAPON_ID || !IsCustomWeapon(weapon) {
        return HAM_IGNORED;
    }

    return get_entvar(weaponbox, var_owner) == id ? HAM_IGNORED : HAM_SUPERCEDE;
}
#endif

stock getWeaponBoxWeapon(const weaponbox) {
    for (new i = 0, weapon; i < MAX_ITEM_TYPES; i++) {
        weapon = get_member(weaponbox, m_WeaponBox_rgpPlayerItems, i);
        if (!is_nullent(weapon)) {
            return weapon;
        }
    }
    return NULLENT;
}

stock sendWeaponAmimation(const id, const animation) {
    set_entvar(id, var_weaponanim, animation);

    message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = id);
    write_byte(animation);
    write_byte(0);
    message_end();
}

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Помощ със задаване на цена на оръжие с reapi

Мнение от hackera457 » 11 Апр 2021, 22:32

Я пак, обясни по точно че не мога да те разбера
Моите плъгини

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

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Goddness
Извън линия
Потребител
Потребител
Мнения: 1812
Регистриран на: 20 Май 2017, 11:47
Местоположение: Някъде по света
Се отблагодари: 141 пъти
Получена благодарност: 187 пъти
Обратна връзка:

Помощ със задаване на цена на оръжие с reapi

Мнение от Goddness » 11 Апр 2021, 23:14

hackera457 написа: 11 Апр 2021, 22:32 Я пак, обясни по точно че не мога да те разбера
Значи както го разбирам аз - човекът е решил да зададе сума на оръжието, т.е е решил например да направи M4A1 12,000$, но не е успял и иска някой да му помогне.
Пак казвам, така го разбирам, ако не съм прав, нека автора на темата да ме поправи.

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ със задаване на цена на оръжие с reapi

Мнение от YankoNL » 12 Апр 2021, 08:57

Както виждате с този плъгин можете да създавате custom оръжия и да задавате различни стойности за различни неща, обаче няма не знам как да направя самото оръжие да струва пари. Примерно в момента искам златно м4а1 и пиша /goldm4 и ми я дава безплатно. Аз искам да струва 1000$ и примерно ако нямаш пари да ти изписва в чата "нямате достатъчно пари", а ако вече имате го имате това оръжие да излиза съобщение че вече го имате. Ако може съобщенията да са с cromchat. :D
Благодаря!

Edit:
Да уточня че всички работи с цената

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

#define WEAPON_PRICE
и

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

#if defined WEAPON_PRICE
аз съм ги добавял и не знам колко са верни.

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

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

Кой е на линия

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