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

Магазин (ZP)  [Решено]

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

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

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

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

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

Магазин (ZP)

Сообщение snebars » 02 май 2021, 21:25

Всем привет! Хотел сделать магазин с опред. ценой на предметы, с последующим увеличением цены после покупки предмета(Для каждого игрока индивидуально! То есть, игрок A купил сферу за 25, потом цена поднялась до 50 и игрок A уже покупает сферу за 50, НО! у игрока B цена все еще 25, тк он ничего не покупал). И вот собственно проблемка. Пробовал через глобальные переменные сделать, то есть создал массив, потом присвоил предмету первонач. цену, и вроде все ок, но после покупки предмета цена не увеличивается, тк снова идет присваивание предмету первонач. цены. Через static делал, первонач. цена и увеличение работают, но для всех игроков.
Подскажите пожалуйста, заранее спасибо!
Код: Выделить всё
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <zombieplague>
#include <cromchat>
#include <zp_level_system>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#define SFERA 25 //цена гранаты купол
native get_user_coins(id)
native set_user_coins(id, iNum)
native zp_give_user_sfera(id)
new sfera_l[33]
public plugin_init() {
       register_clcmd("blood_shop", "cmdMenu", ADMIN_ALL);
       register_plugin(PLUGIN, VERSION, AUTHOR);
}

public cmdMenu(id) {
    if(!is_user_connected(id)) 
        return PLUGIN_HANDLED
        new menuh
[512]
        formatex(menuh,512,"\rМагазин \rКрови^n[ZP] Кристаллов \rкрови: \r%d", get_user_coins(id))
      new i_Menu = menu_create(menuh ,"menu_handler")
        formatex(menuh,512,"Граната Купол 20 сек. \r%i \rкрови", sfera_l[id]) // Показ цены
       menu_additem(i_Menu, menuh, "1", 0);
       menu_additem(i_Menu, "100 кристаллов крови на 10 кристаллов", "2", 0);
       menu_additem(i_Menu, "Предмет", "3", 0);
       menu_additem(i_Menu, "Предмет", "4", 0);
       menu_additem(i_Menu, "Предмет", "5", 0);
       menu_additem(i_Menu, "Предмет", "6", 0);
       menu_additem(i_Menu, "Предмет", "7", 0);
       menu_additem(i_Menu, "Предмет", "8", 0);
       menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
       menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
       menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");

       menu_display(id, i_Menu, 0)
       return PLUGIN_HANDLED;
}

public menu_handler(id, menu, item) {
       if( item < 0 ) return PLUGIN_CONTINUE;
       new cmd[3], access, callback;
       menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
       new Choise = str_to_num(cmd)
       switch (Choise) {
       case 1: {
        zp_give_user_sfera(id)
        sfera_l[id] = sfera_l[id] * 2 // Увеличение цены
       }
       case 2: {
       if(get_user_coins(id)>= 100) {
       set_user_coins(id, get_user_coins(id) - 100)
       zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 10)
       } else CC_SendMessage(id,  "&x07[&x04ZP&x07]&x04 &x04Не хвататет &x07кристаллов крови.") 
       
       
}
       case 3: {
        set_user_coins(id, get_user_coins(id) + 100)
       }
       }
       return PLUGIN_HANDLED;
}

 
Аватара пользователя
snebars
 
Сообщения: 23
Зарегистрирован: 27 мар 2021, 22:29
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Немного pawn, js, css, html

Re: Магазин (ZP)  [Решено]

Сообщение HolyDorus » 02 май 2021, 21:39

Код: Выделить всё
const default_sphere_cost = 25 // стандартная цена сферы
const sphere_cost_multiplier = 2 // множитель цены за каждую покупку

new personal_sphere_cost[33] // массив, в котором хранятся цены для каждого из игроков

public client_putinserver(id) {
    personal_sphere_cost[id] = default_sphere_cost // установка стандартной цены игроку при подключении к серверу
}

public buy_sphere(id) {
    // ...

    if(get_user_coins(id) < personal_sphere_cost[id]) {
        CC_SendMessage(id, "&x07[&x04ZP&x07]&x04 &x04Не хвататет &x07кристаллов крови")
        return
    
}

    zp_give_user_sfera(id)
    set_user_coins(id, get_user_coins(id) - personal_sphere_cost[id])
    personal_sphere_cost[id] *= sphere_cost_multiplier

    
// ...
}
Группа плагинов: vk.com/remake_dorus
Аватара пользователя
HolyDorus
 
Сообщения: 19
Зарегистрирован: 30 апр 2021, 21:04
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.
Опыт программирования: Больше трех лет
Языки программирования: Python
PAWN
C++
JavaScript


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 11

cron