Добро пожаловать на форум, Гость, это ваша панель
Страница 1 из 11
Форум Perfect Soft » Моды и AMX Скриптинг CS 1.6 » CSSB War3FT MOD » Как создать крафт меню?
Как создать крафт меню?
KinD
Дата: Понедельник, 05.01.2015, 12:35 | Сообщение # 1
офлайн

  • Сообщения: 1148
  • Награды: 22
  • Замечания:
 
ВНИМАНИЕ!В данном дополнении используется мод в котором 3 магазина!Если у вас стандартный мод,то значения будут меньше.
1)Вам необходимо зайти в .sma файл
2)Вам необходимо добавить
Код
#include "war3ft/craft.h"

и
Код
#include "war3ft/craft.inl"

3)Опустится ниже и зарег. команду

Код
//craftshop
register_clcmd( "craftshop"         , "CMD_Handler"      , -1 );


4)Создать в папке war3ft 2 файла.(либо скачать прикрепленные файлы)
Код
craft.h
craft.inl

5)зайти в items.h и увеличить MAX_SHOPMENU_ITEMS(на +3).У меня получилось вот так #define MAX_SHOPMENU_ITEMS  30
6)идем в client_commands.inl > ищем >CMD_Handle
Идем чуть-чуть ниже и добавляем

Код
else if ( CMD_Equal( idUser,  szCmd, "craftshop" ) )
{
     WC3_CraftMenu(idUser)
}


7)Идем в craft.h и добавляем

Код
//Для добавления крафт предмета вам необходимо увеличить MAX_SHOPMENU_ITEMS(items.h)
#define CRAFT_ITEM_1         27
#define CRAFT_ITEM_2          28
#define CRAFT_ITEM_3          29
#define MAX_CRAFT_ITEM          3       //Макс.кол-во крафт итемов
#define DEFAULT_CONVERT_COST    1000   //Цена за преобразование
new g_Craft_LANG[MAX_CRAFT_ITEM][20] =   
{
     "ITEM_27",              
     "ITEM_28",
     "ITEM_29"
};
//Первые вещи необходимые для крафта(1 слот)
new const p_craft_item1[MAX_CRAFT_ITEM] = {
1,
2,
3
};//
//Вторые вещи необходимые для крафта(2 слот)
new const p_craft_item2[MAX_CRAFT_ITEM] = {
17,
25,
21
};//Пример:p_craft_item1[1CRAFT_ITEM] + p_craft_item2[1CRAFT_ITEM](если у вас есть данные предметы,то соотв. сможете преобразовать)
new const p_craft_item_id[MAX_CRAFT_ITEM] = {
27,
28,
29
};//ID итемов(крафт итемов)


8)Добавляем в craft.inl

Код
public WC3_CraftMenu(idUser)
{
     if(!is_user_connected(idUser)) return PLUGIN_HANDLED;
     new msg[250];
      formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFTMENU_TITLE",DEFAULT_CONVERT_COST)
     new menu = menu_create(msg,"Wc3_craftshop_handler")   
     new item[10]
     for(new i;i<MAX_CRAFT_ITEM;i++)   
     {
        new need_item[60],LANG_ITEM1[10],LANG_ITEM2[10],txt_msg[60];
        formatex(LANG_ITEM1,9,"ITEM_%d",p_craft_item1[i])
        formatex(LANG_ITEM2,9,"ITEM_%d",p_craft_item2[i])
        if ( ITEM_Has( idUser, p_craft_item1 [i]) > ITEM_NONE)
        {
           format(need_item,59,"\d%L,",LANG_PLAYER,LANG_ITEM1)
           add(txt_msg,59,need_item)
        }     
        else
        {
           format(need_item,59,"\r%L,",LANG_PLAYER,LANG_ITEM1)
           add(txt_msg,59,need_item)
        }     
        if ( ITEM_Has( idUser, p_craft_item2 [i]) > ITEM_NONE)
        {
           format(need_item,59,"\d%L",LANG_PLAYER,LANG_ITEM2)
           add(txt_msg,59,need_item)
        }     
        else   
        {
           format(need_item,59,"\r%L",LANG_PLAYER,LANG_ITEM2)
           add(txt_msg,59,need_item)
        }     
             
        formatex(msg, 249, "\r%L^n\y%L:%s",LANG_PLAYER,g_Craft_LANG[i],LANG_PLAYER,"WC3_CRAFTITEM_NEED",txt_msg)
        num_to_str(i+1,item,9)
        menu_additem(menu, msg, item)
          
     }
     formatex(msg,charsmax(msg),"%L",LANG_PLAYER,"WC3_MENU_EXIT")
     menu_setprop(menu, MPROP_EXITNAME, msg)
     menu_display(idUser, menu)
     return PLUGIN_HANDLED     
}
public Wc3_craftshop_handler( id, menu, item )   
{      
     if( item == MENU_EXIT )   
      {   
          menu_destroy( menu );   
          return PLUGIN_HANDLED;   
      }   
      new data[6], iName[64];   
      new access, callback;   
         
      menu_item_getinfo( menu, item, access, data,5, iName, 63, callback );   
      new key = str_to_num( data );   
     if(cs_get_user_money(id) < DEFAULT_CONVERT_COST)
     {
        client_print( id, print_center, "%L", LANG_PLAYER, "INSUFFICIENT_FUNDS" );
        client_cmd(id, "speak %s", g_szSounds[SOUND_NO_GOLD] );
          return PLUGIN_HANDLED;   
     }     
     if ( ITEM_Has( id, p_craft_item1[key-1] ) == ITEM_NONE ||ITEM_Has( id, p_craft_item2[key-1] ) == ITEM_NONE)
     {
        client_print( id, print_center, "%L", LANG_PLAYER, "WC3_NO_CRAFT_NEED_ITEM" );
        return PLUGIN_HANDLED;   
     }     
     cs_set_user_money(id,cs_get_user_money(id) - DEFAULT_CONVERT_COST)
     ITEM_RemoveID( id, p_craft_item1[key-1] )
     ITEM_RemoveID( id, p_craft_item2[key-1] )
     ITEM_GiveItem( id, p_craft_item_id[key-1] );
     new szMessage[100],Lang_msg[10];
     format(Lang_msg,9,"ITEM_I_%d",p_craft_item_id[key-1])
     format(szMessage, sizeof(szMessage) - 1, "^x01%L^x03%L^x01%L ^x04%L",
        LANG_PLAYER,"WC3_BRACKET_LEFT",LANG_PLAYER,"WC3_MODCLIENT",LANG_PLAYER,"WC3_BRACKET_RIGHT",
        LANG_PLAYER,Lang_msg);
     cssbColoredPrint(id, szMessage);     
          
     return PLUGIN_HANDLED
}


9)Компилируем и идем в lang файл(.txt)
добавляем

Код
WC3_CRAFTMENU_TITLE = Меню преобразования предметов ^nЦена :\r%d \y$
WC3_CRAFTITEM_NEED = Необходимо
ITEM_27 = крафт итем 1           
ITEM_28 = крафт итем 2
ITEM_29 = крафт итем 3
ITEM_I_27 = инфо о предмете(1)
ITEM_I_28 = инфо о предмете(2)
ITEM_I_29 = инфо о предмете(3)
ITEM_S_27 = крафт 1
ITEM_S_28 = крафт 2
ITEM_S_29 = крафт
WC3_NO_CRAFT_NEED_ITEM = У вас не хватает необходимых предметов!


Скрины:



покупка предмета:


P.S Вам необходимо просто посмотреть пример "работы предмета" items.inl > ITEM_Offensive(если вы новичок)

Как добавить предмет?
Для начала увеличить
Код
#define MAX_SHOPMENU_ITEMS

1)Увеличить MAX_CRAFT_ITEM
2)Добавить в g_Craft_LANG к примеру ITEM_500(в ланге соотв. ITEM_500 = крафт итем 500)
3)Добавить предметы,который необходимы для крафта.
Код
1 предмет - p_craft_item1
2 предмет - p_craft_item2

Т.е к примеру вам нужно чтобы предмет создавался из ankh(id предмета 0) и boots(id предмета 1)
вам нужно в p_craft_item1 прописать 0,а в p_craft_item2 1
4)Теперь вам необходимо добавить ID предмета,который вам выдадут.
p_craft_item_id
Предположим при крафте вы заходите выдать к примеру стандартный предмет(Mask of death)
то выглядеть это будет так

Код
new const p_craft_item_id[MAX_CRAFT_ITEM] = {
27,
28,
29,
4 //ID маски смерти
};//ID итемов(крафт итемов)
Прикрепления: craft.h(1Kb) · craft.inl(3Kb) · 6872565.jpg(339Kb) · 8122425.jpg(382Kb) · 0319112.jpg(382Kb) · 1123244.jpg(388Kb)


Skype:daywerok

Сообщение отредактировал KinD - Понедельник, 05.01.2015, 12:39
 
BABAZORO4450
Дата: Пятница, 16.01.2015, 23:36 | Сообщение # 2
офлайн

  • Сообщения: 40
  • Награды: 0
  • Замечания:
 
спс
 
BABAZORO
Дата: Понедельник, 29.06.2015, 18:46 | Сообщение # 3
офлайн

  • Сообщения: 32
  • Награды: 0
  • Замечания:
 

Код
//AMXXPC compile.exe
// by the AMX Mod X Dev Team

//// war3ft.sma

// C:\Documents and Settings\asd\Desktop\cstrike\addons\amxmodx\scripting\war3ft

/items.h(1) : error 010: invalid function or declaration

// C:\Documents and Settings\asd\Desktop\cstrike\addons\amxmodx\scripting\war3ft

/craft.h(1) : error 010: invalid function or declaration

//

// 2 Errors.

// Could not locate output file C:\Documents and Settings\asd\Desktop\cstrike\ad

dons\amxmodx\scripting\compiled\war3ft.amx (compile failed).

//

// Compilation Time: 4,34 sec

// ----------------------------------------

Press enter to exit ...




Я не понимаю, почему это происходит,
Учитывая, что первый заказ и в файле нет кода / текст
 
NaSok
Дата: Вторник, 30.06.2015, 14:09 | Сообщение # 4
офлайн

  • Сообщения: 80
  • Награды: 1
  • Замечания:
 
BABAZORO, установи файлу кодировку UTF-8 без BOM

 
BABAZORO
Дата: Вторник, 30.06.2015, 21:17 | Сообщение # 5
офлайн

  • Сообщения: 32
  • Награды: 0
  • Замечания:
 
Я установил его вчера, что не только в UTF-8 кодировке ANSI и имеют как файл в том числе war3ft.txt (языковой файл)
 
Форум Perfect Soft » Моды и AMX Скриптинг CS 1.6 » CSSB War3FT MOD » Как создать крафт меню?
Страница 1 из 11
Поиск: