[War3] Как да направите 3-ти слот за покупки от Shopmenu

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
BABAZORO
Извън линия
Потребител
Потребител
Мнения: 59
Регистриран на: 06 Окт 2016, 11:23
Се отблагодари: 1 път
Получена благодарност: 2 пъти
Обратна връзка:

[War3] Как да направите 3-ти слот за покупки от Shopmenu

Мнение от BABAZORO » 12 Окт 2016, 13:04

1. Отваряте "items.h"

2. Намирате

Код за потвърждение: Избери целия код

#define ITEM_SLOT_THREE 2 
3. След него добавяте

Код за потвърждение: Избери целия код

#define ITEM_SLOT_FULL 3
4. Отваряте "items.inl"

5. Намирате

Код за потвърждение: Избери целия код

for ( new i = ITEM_SLOT_ONE; i <= ITEM_SLOT_TWO; i++ )
6. Променяте го

Код за потвърждение: Избери целия код

for ( new i = ITEM_SLOT_ONE; i <= ITEM_SLOT_THREE; i++ )
7. Намирате

Код за потвърждение: Избери целия код

// Item Get Functions
ITEM_GetSlot( id )
{
	if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE && g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE )
		return ITEM_SLOT_FULL;

	else if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE )
		return ITEM_SLOT_TWO;

	return ITEM_SLOT_ONE;
}

ITEM_Has( id, iItem )
{
	if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] == iItem )
		return ITEM_SLOT_ONE;

	else if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] == iItem )
		return ITEM_SLOT_TWO;

	return ITEM_NONE;
}

// Item Death Function
ITEM_UserDied( id )
{
	// The user just died, remove all items
	if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE )
	{
		ITEM_Remove( id, ITEM_SLOT_ONE, false );
	}

	if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE )
	{
		ITEM_Remove( id, ITEM_SLOT_TWO, false );
	}
}
8. Променяте

Код за потвърждение: Избери целия код

// Item Get Functions 
 ITEM_GetSlot( id ) 
 { 
 if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE && g_iShopMenuItems[idU][ITEM_SLOT_TWO] > ITEM_NONE&& 
 g_iShopMenuItems[id][ITEM_SLOT_THREE] > ITEM_NONE ) 
 return ITEM_SLOT_FULL; 
 
 else if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE && g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE) 
 return ITEM_SLOT_THREE; 
 
 else if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE) 
 return ITEM_SLOT_TWO; 
 
 return ITEM_SLOT_ONE; 
 } 
 
 ITEM_Has( id, iItem ) 
 { 
 if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] == iItem ) 
 return ITEM_SLOT_ONE; 
 
 else if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] == iItem ) 
 return ITEM_SLOT_TWO; 
 
 else if ( g_iShopMenuItems[id][ITEM_SLOT_THREE] == iItem ) 
 return ITEM_SLOT_THREE; 
 
 return ITEM_NONE; 
 } 
 
 // Item Death Function 
 ITEM_UserDied( id ) 
 { 
 // The user just died, remove all items 
 if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_ONE ); 
 } 
 
 if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_TWO ); 
 } 
 
 if ( g_iShopMenuItems[id][ITEM_SLOT_THREE] > ITEM_NONE ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_THREE ); 
 } 
 }
9. Отваряте "menus.inl"

10. Намирате

Код за потвърждение: Избери целия код

public MENU_ReplaceItem( id )
{

	new szMenu[512] = "", pos = 0;
	new iKeys = (1<<9)|(1<<0)|(1<<1);

	// Add the menu header
	pos += format( szMenu[pos], 511-pos, "%L^n^n", id, "MENU_REPLACE_ITEM" );

	new szItemName[64], szItemName2[64];
	LANG_GetItemName( g_iShopMenuItems[id][ITEM_SLOT_ONE], id, szItemName, 63 );
	LANG_GetItemName( g_iShopMenuItems[id][ITEM_SLOT_TWO], id, szItemName2, 63 );

	// Add the items
	pos += format( szMenu[pos], 511-pos, "\w1. %s^n", szItemName );
	pos += format( szMenu[pos], 511-pos, "\w2. %s^n", szItemName2 );

	// Add the exit option
	pos += format( szMenu[pos], 511-pos, "^n\w0. %L", id, "WORD_EXIT" );

	// Show the menu
	show_menu( id, iKeys, szMenu, -1 );

	return;
}
11. Заменяте

Код за потвърждение: Избери целия код

public MENU_ReplaceItem( id ) 
 { 
 
 new szMenu[512] = "", pos = 0; 
 new iKeys = (1<<9)|(1<<0)|(1<<1)|(1<<2); 
 
 // Add the menu header 
 pos += format( szMenu[pos], charsmax(szMenu)-pos, "%L^n^n", LANG_PLAYER, "MENU_REPLACE_ITEM" ); 
 
 new szItemName[64], szItemName2[64], szItemName3[64]; 
 LANG_GetItemName( g_iShopMenuItems[id][ITEM_SLOT_ONE], id, szItemName, charsmax(szItemName) ); 
 LANG_GetItemName( g_iShopMenuItems[id][ITEM_SLOT_TWO], id, szItemName2, charsmax(szItemName2) ); 
 LANG_GetItemName( g_iShopMenuItems[id][ITEM_SLOT_THREE], id, szItemName3, charsmax(szItemName3) ); 
 // Add the items 
 pos += format( szMenu[pos], charsmax(szMenu)-pos, "\r1. %s^n", szItemName ); 
 pos += format( szMenu[pos], charsmax(szMenu)-pos, "\y2. %s^n", szItemName2 ); 
 pos += format( szMenu[pos], charsmax(szMenu)-pos, "\w3. %s^n", szItemName3 ); 
 // Add the exit option 
 pos += format( szMenu[pos], charsmax(szMenu)-pos, "^n\d0. %L", LANG_PLAYER, "WORD_EXIT" ); 
 
 // Show the menu 
 show_menu( id, iKeys, szMenu, -1 ); 
 
 return; 
 }
12. Намирате

Код за потвърждение: Избери целия код

public _menu_ReplaceItem( id, iKey )
{
	if ( !WC3_Check() || iKey == 9 )
	{
		return PLUGIN_HANDLED;
	}

	// Remove item from item slot one
	if ( iKey == 0 )
	{
		ITEM_Remove( id, ITEM_SLOT_ONE )
	}

	// Remove item from itemslot two
	else if ( iKey == 1 )
	{
		ITEM_Remove( id, ITEM_SLOT_TWO )
	}

	// Then the user typed "rings"
	if ( g_iFutureItem[id] == -3 )
	{
		ITEM_BuyRings( id );
	}
	else
	{
		ITEM_Buy( id, g_iFutureItem[id] );
	}

	return PLUGIN_HANDLED;
}
13. Заменяте

Код за потвърждение: Избери целия код

public _menu_ReplaceItem( id, iKey ) 
 { 
 if ( !WC3_Check() || iKey == 9 ) 
 { 
 return PLUGIN_HANDLED; 
 } 
 
 // Remove item from item slot one 
 if ( iKey == 0 ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_ONE ) 
 } 
 
 // Remove item from itemslot two 
 else if ( iKey == 1 ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_TWO ) 
 } 
 else if ( iKey == 2 ) 
 { 
 ITEM_Remove( id, ITEM_SLOT_THREE ); 
 } 
 
 // Then the user typed "rings" 
 if ( g_iFutureItem[id] == -3 ) 
 { 
 ITEM_BuyRings( id ); 
 } 
 else
 { 
 ITEM_Buy( id, g_iFutureItem[id] ); 
 } 
 
 return PLUGIN_HANDLED; 
 }
14. Намирате

Код за потвърждение: Избери целия код

WC3_ShowBar( id )
{
	
	// User is not connected
	if ( !p_data_b[id][PB_ISCONNECTED] )
	{
		return;
	}

	new szString[256], pos = 0, szXPInfo[32];
	new szItemInfo[256], szRaceInfo[256];
	new szRaceName[64], szShortRaceName[32], szItemName[32];

	// Get the race names
	lang_GetRaceName( p_data[id][P_RACE], id, szRaceName, 63 );
	lang_GetRaceName( p_data[id][P_RACE], id, szShortRaceName, 31, true );
	
	// This information is displayed differently for CS/CZ
	if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
	{
		// No race selected
		if ( !p_data[id][P_RACE] )
		{
			pos += formatex( szRaceInfo[pos], 255, "%s ", szRaceName );
		}

		// User has a race
		else
		{

			// User is level 0
			if ( p_data[id][P_LEVEL] == 0 )
			{
				pos += formatex( szRaceInfo[pos], 255, "%s  XP: %d/%d ", szRaceName, p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
				formatex( szXPInfo, 31, "XP: %d/%d", p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
			}

			// User is under level 10
			else if ( p_data[id][P_LEVEL] < 10 )
			{
				pos += formatex( szRaceInfo[pos], 255, "%s %L: %d   XP: %d/%d ", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
				formatex( szXPInfo, 31, "%L: %d   XP: %d/%d", id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
			}			
				
			// User is level 10
			else
			{
				pos += formatex( szRaceInfo[pos], 255, "%s %L: %d   XP: %d ", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP] );
				formatex( szXPInfo, 31, "%L: %d   XP: %d", id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP] );
			}
		}
	}

	else if ( g_MOD == GAME_DOD )
	{
		// No race selected
		if ( !p_data[id][P_RACE] )
		{
			pos += formatex( szRaceInfo[pos], 255, "%s ", szRaceName );
		}

		// User has a race
		else
		{

			// User is level 0
			if ( p_data[id][P_LEVEL] == 0 )
			{
				pos += formatex( szRaceInfo[pos], 255, "%s^nXP: %d/%d^n", szRaceName, p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
			}

			// User is under level 10
			else if ( p_data[id][P_LEVEL] < 10 )
			{
				pos += formatex( szRaceInfo[pos], 255, "%s %L: %d^nXP: %d/%d^n", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
			
			}			
				
			// User is level 10
			else
			{
				pos += formatex( szRaceInfo[pos], 255, "%s %L: %d^nXP: %d^n", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP] );
			}
		}
	}
	
	// Reset our position since we're using a new array
	pos = 0;

	// User has one item
	if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE )
	{
		ITEM_Format( id, g_iShopMenuItems[id][ITEM_SLOT_ONE], szItemName, 31 )

		pos += formatex( szItemInfo[pos], 256-pos, "%s", szItemName );
	}

	// User has another item
	if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE )
	{
		ITEM_Format( id, g_iShopMenuItems[id][ITEM_SLOT_TWO], szItemName, 31 )

		// Then the string isn't empty and we have information in it (so we have a first item)
		if ( szItemInfo[0] )
		{
			pos += formatex( szItemInfo[pos], 256-pos, " %L %s", id, "WORD_AND", szItemName );
		}

		// We don't need the word "and"
		else
		{
			pos += formatex( szItemInfo[pos], 256-pos, "%s", szItemName );
		}
	}

	// Put the final string together
	formatex( szString, 255, "%s%s", szRaceInfo, szItemInfo );
	
	if ( SHARED_IsOnTeam( id ) )
	{
		// Display the item + race info with a hudmessage
		if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO )
		{

			if ( is_user_alive( id ) )
			{
				Create_StatusText( id, 0, szString );
			}

			else
			{
				set_hudmessage( 160, 160, 160, 0.012, 0.90, HUDMESSAGE_FX_FADEIN, 10.0, 0.0, 2.0, 3.0, HUD_XP );
				
				show_hudmessage( id, "%s", szXPInfo );
			}
		}

		// Display the item + race info with a hudtext
		else if ( g_MOD == GAME_DOD )
		{
			Create_HudText( id, szString, 1 );
		}
	}

	return;
}


15. Заменяте

Код за потвърждение: Избери целия код

WC3_ShowBar( id ) 
 { 
 
 // User is not connected 
 if ( !p_data_b[id][PB_ISCONNECTED] ) 
 { 
 return; 
 } 
 
 new szString[256], pos = 0, szXPInfo[32],szCurrentItems[32]; 
 new szItemInfo[256], szRaceInfo[256]; 
 new szRaceName[64], szShortRaceName[32], szItemName[32]; 
 
 // Get the race names 
 lang_GetRaceName( p_data[id[P_RACE], id, szRaceName, 63 ); 
 lang_GetRaceName( p_data[id][P_RACE], id, szShortRaceName, 31, true ); 
 
 // This information is displayed differently for CS/CZ 
 if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO ) 
 { 
 // No race selected 
 if ( !p_data[id][P_RACE] ) 
 { 
 pos += formatex( szRaceInfo[pos], 255, "%s ", szRaceName ); 
 } 
 
 // User has a race 
 else
 { 
 
 // User is level 0 
 if ( p_data[id][P_LEVEL] == 0 ) 
 { 
 pos += formatex( szRaceInfo[pos], 255, "%s XP: %d/%d ", szRaceName, p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) ); 
 formatex( szXPInfo, 31, "XP: %d/%d", p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) ); 
 } 
 
 //
 // User is under level MAX_LEVELS 
 else if ( p_data[id][P_LEVEL] < MAX_LEVELS ) 
 { 
 pos += formatex( szRaceInfo[pos], 255, "%s %L: %d XP: %d/%d ", szShortRaceName, LANG_PLAYER, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) ); 
 formatex( szXPInfo, 31, "%L: %d XP: %d/%d", LANG_PLAYER, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) ); 
 } 
 
 // User is level MAX_LEVELS 
 else
 { 
 pos += formatex( szRaceInfo[pos], 255, "%s %L: %d XP: %d ", szShortRaceName, LANG_PLAYER, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP] ); 
 formatex( szXPInfo, 31, "%L: %d XP: %d", LANG_PLAYER, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP] ); 
 } 
 } 
 } 
 
 // Reset our position since we're using a new array 
 pos = 0; 
 
 // User has one item 
 if ( g_iShopMenuItems[id][ITEM_SLOT_ONE] > ITEM_NONE ) 
 { 
 ITEM_Format( id, g_iShopMenuItems[id][ITEM_SLOT_ONE], szItemName, 31 ) 
 
 formatex(szCurrentItems, 31, "%L:",LANG_PLAYER,"WC3_CURRENT_ITEM"); 
 pos += formatex( szItemInfo[pos], 256-pos, "%s", szItemName ); 
 } 
 
 // User has another item 
 if ( g_iShopMenuItems[id][ITEM_SLOT_TWO] > ITEM_NONE ) 
 { 
 ITEM_Format( id, g_iShopMenuItems[id][ITEM_SLOT_TWO], szItemName, 31 ) 
 
 // Then the string isn't empty and we have information in it (so we have a first item) 
 if ( szItemInfo[0] ) 
 { 
 formatex(szCurrentItems, 31, "%L:",LANG_PLAYER,"WC3_CURRENT_ITEMS" ); 
 pos += formatex( szItemInfo[pos], 256-pos, " %L %s", LANG_PLAYER, "WORD_AND", szItemName ); 
 } 
 
 // We don't need the word "and" 
 else
 { 
 pos += formatex( szItemInfo[pos], 256-pos, "%s", szItemName ); 
 } 
 } 
 if ( g_iShopMenuItems[id][ITEM_SLOT_THREE] > ITEM_NONE ) 
 { 
 ITEM_Format( id, g_iShopMenuItems[id][ITEM_SLOT_THREE], szItemName, 31 ) 
 
 // Then the string isn't empty and we have information in it (so we have a first and a second item) 
 if ( szItemInfo[0] ) 
 { 
 formatex(szCurrentItems, 31, "%L:",LANG_PLAYER,"WC3_CURRENT_ITEMS" ); 
 pos += formatex( szItemInfo[pos], 256-pos, " %L %s", LANG_PLAYER, "WORD_AND", szItemName ); 
 } 
 
 // We don't need the word "and" 
 else
 { 
 pos += formatex( szItemInfo[pos], 256-pos, "%s", szItemName ); 
 } 
 } 
 
 new szRaceItemInfo[256]; 
 //CSSB 
 // Put the final string together 
 formatex( szString, 255, "%s%s", szRaceInfo, szItemInfo ); 
 formatex( szRaceItemInfo, 255, "%s^n%s %s", szRaceInfo,szCurrentItems, szItemInfo); 
 
 if ( SHARED_IsOnTeam( id ) ) 
 { 
 // Display the item + race info with a hudmessage 
 if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO ) 
 { 
 
 if ( is_user_alive( id ) ) 
 { 
 set_hudmessage( 0, 255, 0, 0.012, 0.92, HUDMESSAGE_FX_FADEIN, 10.0, 540.0, 2.0, 3.0, HUD_XP ); 
 show_hudmessage(id, szRaceItemInfo); 
 
 // set_dhudmessage( 0, 255, 0, 0.012, 0.82, HUDMESSAGE_FX_FADEIN, 10.0, 540.0, 2.0, 3.0, HUD_XP ); 
 // show_dhudmessage(id,"%s", szRaceItemInfo); 
 /* 
 new szNameLang[28]; 
 if (vaultdata_exists("server_language")) 
 { 
 get_vaultdata("server_language", szNameLang, 27); 
 } 
 else 
 { 
 copy(szNameLang, 27, "en") 
 //set_vaultdata("server_language", szNameLang); 
 } 
 
 if( equali(szNameLang,"ru") ) 
 { 
 set_hudmessage( 0, 255, 0, 0.012, 0.92, HUDMESSAGE_FX_FADEIN, 10.0, 540.0, 2.0, 3.0, HUD_XP ); 
 show_hudmessage(id, szRaceItemInfo); 
 } 
 else 
 { 
 Create_StatusText( id, 0, szString ); 
 } 
 */
 } 
 
 else
 { 
 set_hudmessage( 160, 160, 160, 0.012, 0.90, HUDMESSAGE_FX_FADEIN, 10.0, 0.0, 2.0, 3.0, HUD_XP ); 
 show_hudmessage( id, "%s", szXPInfo ); 
 } 
 } 
 
 } 
 
 return; 
 }
16. Отваряте "items.h"

17. Намирате

Код за потвърждение: Избери целия код

#define MAX_PLAYER_ITEMS    2
18 .Променяте го

Код за потвърждение: Избери целия код

#define MAX_PLAYER_ITEMS    3
19. Отваряте "shared.inl"

20. Намирате

Код за потвърждение: Избери целия код

g_iShopMenuItems[id][ITEM_SLOT_TWO] = ITEM_NONE;
21. Под-него добавяте

Код за потвърждение: Избери целия код

g_iShopMenuItems[id][ITEM_SLOT_THREE] = ITEM_NONE;
Всичко е тествано и работи.
Ако на теб ти е ГОТ,и на мен ми е ГОТ

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Полезни кодове/уроци”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта