Это не мое произведение и не моя переделка,но для кого-то может быть полезным. Описание Warcraft Item Bot (WIB) - wib.amxx (WIB.amxx) Этот плагин только для мода War3FT или Uwc3NG. Вообразите: Вы - игрок на War3FT или сервере Uwc3NG. Вы покупаете каждый раунд то же самое один или два пункта. Этот небольшой простой плагин только дает игроку выбор, чтобы установить один или два пункта, это, пункты должны быть куплены Лично Пункта на каждом roundstart. Я надеюсь, что этот плагин заменит подлинники Itembuy.
Нужные моды для установки: AMX Mod X v1.8.0 or higher Warcraft 3 Frozen Throne by Geesu Ultimate Warcraft 3 Next Generation by DA
Установка 1. Скопируйте WIB.amxx в папку плагины и пропишите в файле plugins.ini. 2. Сконфигурируйте WIB.sma и поместите в папку плагинов. Тогда только добавьте "WIB.amxx" в конце своего plugins.ini. Перезапустите сервер или смените карту.
new const ShopmenuLong_Names[MAX_SHOPMENU_ITEMS][] = { "Ankh of Reincarnation", "Boots of Speed", "Claws of Attack", "Cloak of Shadows", "Mask of Death", "Necklace of Immunity", "Orb of Frost", "Periapt of Health", "Tome of Experience", "Scroll of Respawning", "Mole Protectant", "Helm of Excellence", "Amulet of the Cat", "Sock of the Feater", "Flaming Gloves of Warmth", "Ring of Regeneration +1", "Chameleon", "Mole" }
public plugin_init() { register_plugin ( PLUGIN, VERSION, AUTHOR );
// New round started, set up the items public on_FreezeTimeComplete() { static players[32], numofplayers; get_players( players, numofplayers );
// Loop through all player's and set up their items for ( new i = 0; i < numofplayers; ++i ) { // the player should have a team if ( get_user_team( players[i] ) ) { if ( p_data[players[i]][PDATA_ITEM1] > -1 ) { ITEM_Buy( players[i], p_data[players[i]][PDATA_ITEM1] ); }
// player went in, should something do public client_putinserver( id ) { // Reset the data from the old player p_data[id][PDATA_ITEM1] = -1; p_data[id][PDATA_ITEM2] = -1;
return PLUGIN_CONTINUE; }
// Open the Bot menu MENU_ItemBot( id ) { // wth, the player isn't on the server if ( !is_user_connected( id ) ) { return; }
static MenuText[512], KEYS;
// Add the header copy( MenuText, charsmax( MenuText ), "\yWarcraft Item Bot: Main Menu^n^n" );
// Save the side p_data[id][PDATA_ITEMSIDE] = page;
// Calculate the right page page *= MAX_PAGE_ITEMS;
// Loop through all items for ( new i = page; i < MAX_SHOPMENU_ITEMS; ++i ) { // Add every item to the menutext formatex( MenuText, charsmax( MenuText ), "%s\w%d. %s^n", MenuText, ( i+1 - page ), ShopmenuLong_Names[i] );
// Add every keypoint KEYS |= (1<<(i-page));
// We're at the maximum. Go out of the loop if ( ( i + 1) == MAX_PAGE_ITEMS ) { break; } }
// tell him some shit ;P client_print( id, print_chat, "You will recieve in the next round the item %s.", ShopmenuLong_Names[MenuEntry] );
return; }
// Okay, we have to buy an item ITEM_Buy( id, iItem ) { // Call the function from wc3ft if ( callfunc_begin ( "ITEM_Buy", "war3ft.amxx" ) == 1 ) { callfunc_push_int( id ); callfunc_push_int( iItem ); callfunc_end(); }
// or uwc3ng else if ( callfunc_begin ( "ITEM_Buy", "uwc3ng.amxx" ) == 1 ) { callfunc_push_int( id ); callfunc_push_int( iItem ); callfunc_end(); }
// wth, found no mod else { log_amx( "ERROR: Can't find uwc3ng.amxx or/and war3ft.amxx" ); }
return; }
// Check if the player said one of the keywords to open the bot menu public HandleSay( id ) { // Get the complete text from the chat static szArg[32]; read_args( szArg, charsmax( szArg ) );
// Convert the szArg to lowercase and without quotes strtolower( szArg ); remove_quotes( szArg );
// The player said waritembot, wib, warcraftitembot, itembot if ( equal( szArg, "waritembot" ) || equal( szArg, "wib" ) || equal( szArg, "warcraftitembot" ) || equal( szArg, "itembot" ) ) { MENU_ItemBot( id ); }
Эти две команды вроде отвечают за вызов меню,но они не дописаны как бы.Наверное автор дал возможность,самим придумать команду для вызова. К примеру Code register_clcmd ( "say /itemshop", "HandleSay", -1 ); register_clcmd ( "say_team /itemshop", "HandleSay", -1 );
Если что-то не так то поправьте меня.
Вот команды вызывающие меню // The player said waritembot, wib, warcraftitembot, itembot if ( equal( szArg, "waritembot" ) || equal( szArg, "wib" ) || equal( szArg, "warcraftitembot" ) || equal( szArg, "itembot" ) )
а вот появился у меня вопрос как изменить скрипт чтобы можно было закупать сразу две вещи с одного шопа ???
Сообщение отредактировал affatar - Среда, 18.01.2012, 21:01
У меня че то не работает((( Менюшка открывается и я там выбираю предмет.Но на след раунд он не покупается Что делать? Может я модуль какой то не активировал?