Русское сообщество по скриптингу

Как сделать проверку на валюту в магазин  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как сделать проверку на валюту в магазин  [Решено]

Сообщение ToxicHawk » 18 июн 2018, 10:25

Если плагин zpshop
#include amxmodx
#include cstrike
#include moneysys

new const allFuncForwards[] = {
    "zp_extra_item_selected",
    "zp_fw_items_select_pre",
    "zp_fw_items_select_post"
}
const sizeforward = sizeof allFuncForwards
/**************Нативы для регистрации Extra Item***************/
new const array_registrs[] = {
    "zp_register_extra_item",
    "zm_register_extra_item"
}
const sizeregistrs = sizeof array_registrs

new ZP_ItemForward[sizeforward]
public plugin_init()
{
    register_plugin("ZP EXTRA SHOP", "0.1", "pro100web")
    register_clcmd("say /zpshop", "ZP_extrashop")
    register_clcmd("say /money","get_money")
    register_clcmd("say zpshop", "ZP_extrashop")
    register_clcmd("say_team /zpshop", "ZP_extrashop")
    for(new i = 0; i < sizeforward; i++){
        ZP_ItemForward[i] = CreateMultiForward(allFuncForwards[i], ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL)
    }
}

public get_money(id){
 
    //получение числа из основного плагина    
    new ammo = dr_get_user_money(id)
    client_print(0,print_chat,"You ammo:%d",ammo)
     
}
 
public ZP_extrashop(id){
    new ZPMenu[96], szName[64], ZPKey[3]
    new zpextra_sz = ArraySize(ZP_ItemName)
    if(zpextra_sz<=0){
        ChatColor(id, "^3[^4Extra Items^3] ^1Магазин пуст");
        return 0
    }
    format(ZPMenu, charsmax(ZPMenu), "ZP Extra Items")
    new sz_ExtraMenu = menu_create(ZPMenu, "ZP_extrashop_func")
    for(new i = 0; i < zpextra_sz; i++){
        format(ZPKey, charsmax(ZPKey),"%i",i)
        ArrayGetString(ZP_ItemName, i, szName, charsmax(szName))
        formatex(ZPMenu, charsmax(ZPMenu), "%s \y[%i$]", szName, ArrayGetCell(ZP_ItemCost, i))
        menu_additem(sz_ExtraMenu, ZPMenu, ZPKey)
    }
    menu_setprop(sz_ExtraMenu, MPROP_NEXTNAME, "Дальше")
    menu_setprop(sz_ExtraMenu, MPROP_BACKNAME, "Назад")
    menu_setprop(sz_ExtraMenu, MPROP_EXITNAME, "Выход")
    menu_display(id, sz_ExtraMenu)
    return 1
}

public ZP_extrashop_func(id, ZPMenu, szItem)
{
    if(szItem == MENU_EXIT)
        return menu_destroy(ZPMenu)
    new szData[3]
    new szDummy
    new szCost, szMoney = dr_get_user_money(id)
    menu_item_getinfo(ZPMenu, szItem, szDummy, szData, charsmax(szData), _, _, szDummy)
    szItem = str_to_num(szData)
    szCost = ArrayGetCell(ZP_ItemCost, szItem)
    menu_destroy(ZPMenu)
    dr_set_user_money(id, szMoney - szCost)
    extrabuyitem(id, szItem)
    return 0
}

extrabuyitem(id, szItem, ignorecost = 0){ 
    for(new i = 0; i < sizeforward; i++){
        ExecuteForward(ZP_ItemForward[i], ZP_ItemResult, id, szItem, ignorecost)
        if(ZP_ItemResult>=1) break;
    }
}
public plugin_precache(){
    ZP_ItemName = ArrayCreate(64, 1)
    ZP_ItemCost = ArrayCreate(1, 1)
    ZP_ItemTeam = ArrayCreate(1, 1)
}

public plugin_natives(){
    for(new i = 0; i < sizeregistrs; i++) register_native(array_registrs[i], "nativezp_register_extra_item", 1);
    register_native("zp_get_user_zombie", "native_zp_get_user_zombie", 1);
    register_native("zp_get_user_survivor", "native_zp_get_user_survivor", 1);
    return 1;
}

public nativezp_register_extra_item(const Name[], const Cost, const Team){
    param_convert(1)
    ArrayPushString(ZP_ItemName, Name)
    ArrayPushCell(ZP_ItemCost, Cost)
    ArrayPushCell(ZP_ItemTeam, Team)
    return (ArraySize(ZP_ItemName) - 1)
}

public native_zp_get_user_zombie(id) return 0;

public native_zp_get_user_survivor(id) return 0;

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
   
    replace_all(msg, 190, "!g", "^4") // Green Color
    replace_all(msg, 190, "!y", "^1") // Default Color
    replace_all(msg, 190, "!team", "^3") // Team Color
    replace_all(msg, 190, "!team2", "^0") // Team2 Color
   
    if (id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}

Короче говоря там при покупке нет проверки на валюту и можно купить предмет имея 0 на баллансе,
но балланс тогда уйдет в минус.Хз или я тупой или что но я ответ так и не нашел.
:dntknw:

if(szCost > dr_get_user_money(id)){
extrabuyitem(id, szItem, ignorecost = 0){
for(new i = 0; i < sizeforward; i++){
ExecuteForward(ZP_ItemForward[i], ZP_ItemResult, id, szItem, ignorecost)
if(ZP_ItemResult>=1) break;
}
}
}

Выдает ошибку :error 010: invalid function or declaration
Аватара пользователя
ToxicHawk
 
Сообщения: 3
Зарегистрирован: 18 июн 2018, 05:25
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Как сделать проверку на валюту в магазин

Сообщение Ternopil62000 » 19 июн 2018, 16:06

if(dr_get_user_money(id)< %Твой квар на валюту%(%){
colored_print(id, "!tНедостаточно денег!)
return
«А сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все. Мало кто может это делать»

Виталий Кличко :-D
Аватара пользователя
Ternopil62000
 
Сообщения: 36
Зарегистрирован: 05 апр 2018, 23:25
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Опыт программирования: Меньше месяца


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13