Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  
Tematika

Помогите найти мод

Нужен мод трейдера чтобы открывалось окно трейда по кнопке. 

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts




  • 0

 

2 часа назад, _PIONER сказал:

так есть такое)

 

Так подскажи пожалуйста)

Share this post


Link to post
Share on other sites
  • 0
12.11.2023 в 04:16, Tematika сказал:

 

Так подскажи пожалуйста)

В конфиге самого трейдера разве такого нет? 

Share this post


Link to post
Share on other sites
  • 0

@Tematika чтобы открывалось окно трейда по кнопке. Может ясней опишешь или скрин приложишь что именно нужно тебе ?
Как я понимаю по твоим вопросом, есть мод Trader и TraderPlus. Для Trader есть моды WSP-TraderLayout, LayoutTrader, TraderMenu и т.д

Share this post


Link to post
Share on other sites
  • 0

@Irkutsk86  Он имеет ввиду что при нажатии определенной кнопки игроком появляется меню трейдера (не находясь при этом перед трейдером). Зачем ты ему Layyout (Модифицированные меню) перечисляешь не совсем понятно.

Share this post


Link to post
Share on other sites
  • 0

@Tematika  Такого мода не существует, если только сам сделаешь
Вот пример стандартного вызова меню через Action у Trader от Jonesa
 

Скрытый текст

class ActionTrade: ActionInteractBase
{
	void ActionTrade()
	{
		m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_INTERACTONCE;
		m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
		m_HUDCursorIcon = CursorIcons.CloseHood;
	}

    override void CreateConditionComponents()  
	{
		m_ConditionTarget = new CCTObject(10);//CCTMan(10);
		m_ConditionItem = new CCINone;
	}

	override string GetText()
	{
		return "Trade";
	}

	override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
    {
        if ( GetGame().IsServer() )
            return true;

		if ( player.m_Trader_RecievedAllData == false )
        {            
            player.MessageStatus("[Trader] MISSING TRADER DATA FROM SERVER!");                
            return false;
        }
        
        bool isTraderNPCCharacter = false;

        PlayerBase ntarget = PlayerBase.Cast( target.GetObject() );
        
        if ( ntarget )
            isTraderNPCCharacter = ntarget.m_Trader_IsTrader;

        bool isTraderNPCObject = false;
        for ( int i = 0; i < player.m_Trader_NPCDummyClasses.Count(); i++ )
        {
            if ( target.GetObject().GetType() == player.m_Trader_NPCDummyClasses.Get(i) )
                isTraderNPCObject = true;
        }

        if ( !isTraderNPCCharacter && !isTraderNPCObject )
            return false;

        vector playerPosition = player.GetPosition();

        // only call these after we made sure the client has all trader data loaded!
        int traderUID = getNearbyTraderUID(playerPosition);
        bool canOpenTraderMenu = getCanOpenTraderMenu( playerPosition, traderUID );

        if ( !canOpenTraderMenu )
            return false;

        return true;
    }
    
    override void OnStartClient(ActionData action_data)
    {
        handleTraderMenuOpenRequest();
    }

    void handleTraderMenuOpenRequest()
	{
		PlayerBase player = GetGame().GetPlayer();
		vector playerPosition = player.GetPosition();

		if (player.m_Trader_RecievedAllData == false)
		{			
			player.MessageStatus("[Trader] MISSING TRADER DATA FROM SERVER!");				
			return;
		}

		// only call these after we made sure the client has all trader data loaded!
		int traderUID = getNearbyTraderUID(playerPosition);
		bool canOpenTraderMenu = getCanOpenTraderMenu(playerPosition, traderUID);

		if (!canOpenTraderMenu)
			return;

		openTraderMenu(traderUID);
	}

    bool getCanOpenTraderMenu(vector position, int traderUID)
	{		
		PlayerBase player = GetGame().GetPlayer();
		bool playerIsInSafezoneRange = getIsInSafezoneRange(position);
		
		if (traderUID == -1 && playerIsInSafezoneRange)
		{
			//TraderMessage.PlayerWhite("#tm_no_trader_nearby", player, 5);
			return false;
		}

		if (!playerIsInSafezoneRange)
			return false;	

		return true;
	}

    int getNearbyTraderUID(vector position)
	{
		PlayerBase player = GetGame().GetPlayer();

		for ( int traderUID = 0; traderUID < player.m_Trader_TraderPositions.Count(); traderUID++ )
		{
			if (getIsTraderNearby(position, traderUID))
				return traderUID;
		}

		return -1;
	}

    bool getIsInSafezoneRange(vector position)
	{
		PlayerBase player = GetGame().GetPlayer();

		for ( int traderUID = 0; traderUID < player.m_Trader_TraderPositions.Count(); traderUID++ )
		{
			if (getDistanceToTrader(position, traderUID) <= player.m_Trader_TraderSafezones.Get(traderUID) || getIsTraderNearby(position, traderUID))
				return true;
		}

		return false;
	}

    int getTraderID(int traderUID)
	{
		PlayerBase player = GetGame().GetPlayer();

		return player.m_Trader_TraderIDs.Get(traderUID);
	}

    float getDistanceToTrader(vector position, int traderUID)
	{
		PlayerBase player = GetGame().GetPlayer();

		return vector.Distance(position, player.m_Trader_TraderPositions.Get(traderUID));
	}

    bool getIsTraderNearby(vector position, int traderUID)
	{
		return getDistanceToTrader(position, traderUID) <= 1.7;
	}

    vector getTraderVehicleSpawnPosition(int traderUID)
	{
		PlayerBase player = GetGame().GetPlayer();

		return player.m_Trader_TraderVehicleSpawns.Get(traderUID);
	}

	vector getTraderVehicleSpawnOrientation(int traderUID)
	{
		PlayerBase player = GetGame().GetPlayer();

		return player.m_Trader_TraderVehicleSpawnsOrientation.Get(traderUID);
	}

	void initializeTraderMenu(int traderUID)
	{
		PlayerBase player = GetGame().GetPlayer();

		player.m_TraderMenu = new TraderMenu;
		player.m_TraderMenu.m_TraderID = getTraderID(traderUID);
		player.m_TraderMenu.m_TraderUID = traderUID;
		player.m_TraderMenu.m_TraderVehicleSpawn = getTraderVehicleSpawnPosition(traderUID);
		player.m_TraderMenu.m_TraderVehicleSpawnOrientation = getTraderVehicleSpawnOrientation(traderUID);
		player.m_TraderMenu.m_buySellTime = player.m_Trader_BuySellTimer;
		player.m_TraderMenu.Init();
	}

	void openTraderMenu(int traderUID)
	{
        PlayerBase player = GetGame().GetPlayer();

		if ( g_Game.GetUIManager().GetMenu() == NULL )
		{					
			initializeTraderMenu(traderUID);

			GetGame().GetUIManager().ShowScriptedMenu( player.m_TraderMenu, NULL );
		}
	}
}

 


Советую обратить внимание на void openTraderMenu(int traderUID)
И уже через него завязывать на какую то кнопку вызов этой функции

Edited by alex_good_kaban (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.