KinD | Дата: Понедельник, 24.12.2012, 22:55 | Сообщение # 1 |
- Сообщения: 1148
- Награды: 22
- Замечания:
|
1)Зайти в исходник .sma Добавить Код register_clcmd( "craftshop" , "CMD_Handler" , -1 ); register_clcmd( "craftinfo" , "CMD_Handler" , -1 ); 2)Зайти в .txt(ланг файл) Добавить Код WC3_CRAFT_SHOP_TITLE = Меню крафта WC3_CRAFT_SHOP_TITLE_HELP = Меню помощи по крафту WC3_CRAFT_ITEM1 = \rМаска Бога ^n\yТребуется[Ботинки + Полет] WC3_CRAFT_ITEM2 = \rОжерелье Вампира ^n\yТребуется[Когти + Маска Смерти] WC3_CRAFT_ITEM1_INFO = Ваш Текст WC3_CRAFT_ITEM2_INFO = Ваш Текст WC3_CRAFT_NO_ITEMS = Вы не можете скрафтить вещь,т.к у вас нету нужных предметов WC3_CRAFT_ALREADY_BUY = Ты не можеь купить этот предмет,т.к у тебя есть крафт предмет 3)Зайти в clientcommands.inl Добавить в CMD_Handle( idUser, szCmd[], bool:bThroughSay ) Код else if ( CMD_Equal( idUser, szCmd, "craftshop" ) ) { craftshops(idUser) } else if ( CMD_Equal( idUser, szCmd, "craftinfo" ) ) { craftinfos(idUser) }
4)Зайти в menus.inl Добавить Код public craftshops(idUser) { if(is_user_alive(idUser)) { new msg[500] formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_SHOP_TITLE") new menu = menu_create(msg,"craft_handler") formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_ITEM1") menu_additem(menu, msg, "1") formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_ITEM2") menu_additem(menu, msg, "2")
menu_setprop(menu, MPROP_NEXTNAME, "Next") menu_setprop(menu, MPROP_BACKNAME, "Back") menu_setprop(menu, MPROP_EXITNAME, "Exit") menu_display(idUser,menu, 0) } } public craftinfos(idUser) { if(is_user_alive(idUser)) { new msg[500] formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_SHOP_TITLE_HELP") new menu = menu_create(msg,"craftinfo_handler") formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_ITEM1") menu_additem(menu, msg, "1") formatex(msg, charsmax(msg), "%L",LANG_PLAYER,"WC3_CRAFT_ITEM2") menu_additem(menu, msg, "2") menu_setprop(menu, MPROP_NEXTNAME, "Next") menu_setprop(menu, MPROP_BACKNAME, "Back") menu_setprop(menu, MPROP_EXITNAME, "Exit") menu_display(idUser,menu, 0) } } public craftinfo_handler( id, menu, item ) { if( item == MENU_EXIT ) { menu_destroy( menu ); return PLUGIN_HANDLED; } new idUser = id 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 ); switch( key ) { case 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,"WC3_CRAFT_ITEM1_INFO"); cssbColoredPrint(idUser, szMessage); } case 2: { 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,"WC3_CRAFT_ITEM2_INFO"); cssbColoredPrint(idUser, szMessage); } } return PLUGIN_HANDLED }
public craft_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 ); switch( key ) { case 1: { if(is_user_item(id,ITEM_BOOTS,ITEM_SOCK)==1) { show_cssb_message(id,"WC3_CRAFT_ITEM1_INFO") items_slot_remove(id,ITEM_BOOTS,ITEM_SOCK) ITEM_GiveItem(id,CRAFT_ITEM1) } else { show_cssb_message(id,"WC3_CRAFT_NO_ITEMS") } } case 2: { if(is_user_item(id,ITEM_CLAWS,ITEM_MASK)==1) { show_cssb_message(id,"WC3_CRAFT_ITEM2_INFO") items_slot_remove(id,ITEM_CLAWS,ITEM_MASK) ITEM_GiveItem(id,CRAFT_ITEM2) } else { show_cssb_message(id,"WC3_CRAFT_NO_ITEMS") } } } return PLUGIN_HANDLED }
5)зайти в stocks.inl Добавить Код //Есть ли у игрока два нужных предмета stock is_user_item(idUser,Item1,Item2) { new item = 0 if(g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item1 || g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item1 || g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item1) { if(g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item2 || g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item2 || g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item2) { item = 1 } } return item; } //Удаляет предметы из слота(необходимые для крафта) stock items_slot_remove(idUser,Item1,Item2) { if(g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item1 && g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item2 || g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item2 && g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item1) { g_iShopMenuItems[idUser][ITEM_SLOT_ONE] = -1 g_iShopMenuItems[idUser][ITEM_SLOT_TWO] = -1 } else if(g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item1 && g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item2 || g_iShopMenuItems[idUser][ITEM_SLOT_ONE] ==Item2 && g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item1) { g_iShopMenuItems[idUser][ITEM_SLOT_ONE] = -1 g_iShopMenuItems[idUser][ITEM_SLOT_THREE] = -1 } else if(g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item1 && g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item2 || g_iShopMenuItems[idUser][ITEM_SLOT_TWO] ==Item2 && g_iShopMenuItems[idUser][ITEM_SLOT_THREE] ==Item1) { g_iShopMenuItems[idUser][ITEM_SLOT_TWO] = -1 g_iShopMenuItems[idUser][ITEM_SLOT_THREE] = -1 } WC3_ShowBar( idUser ); } //Ланг сообщение stock show_cssb_message(idUser,LANG[]) { 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); cssbColoredPrint(idUser, szMessage); }
6)Зайти в items.inl Найти ITEM_CanBuy( idUser, iItem ) Добавить Код else if ( ( iItem == ITEM_BOOTS && ITEM_Has( idUser, CRAFT_ITEM1 ) > ITEM_NONE ) || ( iItem == ITEM_SOCK && ITEM_Has( idUser, CRAFT_ITEM1 ) > ITEM_NONE ) ) { show_cssb_message(idUser,"WC3_CRAFT_ALREADY_BUY")
return false; } else if ( ( iItem == ITEM_CLAWS && ITEM_Has( idUser, CRAFT_ITEM2 ) > ITEM_NONE ) || ( iItem == ITEM_MASK && ITEM_Has( idUser, CRAFT_ITEM2 ) > ITEM_NONE ) ) { show_cssb_message(idUser,"WC3_CRAFT_ALREADY_BUY")
return false; }
7)Зайти в items.h Изменить Код #define MAX_SHOPMENU_ITEMS Ваше число + 2 #define CRAFT_ITEM1 18,19 etc... #define CRAFT_ITEM2 18,19 etc...
8)Дописать функции для CRAFT вещей.
P.S Все упростил,чтобы было легче добавлять новые комбо вещи(крафт вещи)
Примеры: Код is_user_item(id,ITEM_BOOTS,ITEM_SOCK) , проверяет наличие предметов : BOOTS и SOCK. Если возвращает 1,то предметы есть у игрока,если 0,то у него нету этих предметов
items_slot_remove(id,ITEM_BOOTS,ITEM_SOCK), удаляет из слотов нужные предметы для крафта(те,которые не нужны для крафта оставляет)
Skype:daywerok
Сообщение отредактировал KinD - Понедельник, 24.12.2012, 23:02 |
|
| |