Jump to content

VegaS

Banned
  • Posts

    363
  • Joined

  • Last visited

  • Days Won

    40
  • Feedback

    0%

Posts posted by VegaS

  1. Please do not kill lua.

    • pc.set_level(amount) already you have this in source

    Not tested, only write fast, but need to work this fucking shit.

    --[[
    ###########################
    # Quest: Login set level  #
    ###########################
    ]]
    quest start_login_ begin
        state start begin
    --[[@vegasfunctest286
    		function test_set_level_(exp)
    			while pc.get_level() ~= test[i] do
    				pc.give_exp2(pc.get_next_exp2() / exp[i]) end	end
      ]]
    		when login with pc.getqf("used_quest") < 1 and pc.get_level() == 1 begin
    			local pLevel = 105 -- Level what you want to start
    			
    			pc.set_level(pLevel)
    			pc.setqf("used_quest", 1)
    			syschat(string.format("<Debug> Succes set level: %d", pLevel))	
    		end
    	end
    end

     

    • Love 1
  2. On 01.09.2016 at 6:00 PM, JeeX said:

    2nd thing -> if you open a NPC-shop you can warp immediately,
    normally you have to wait; so it is the 10sec time missing you have to wait.

    	if (!ch->CanWarp()) // or ch->CanWarp() == false
    	{
    		ch->ChatPacket(CHAT_TYPE_NOTICE, "Please wait 10 seconds.");
    		return;	
    	}

     

  3. M2 Download Center

    This is the hidden content, please
    ( Internal )

    Hello world last night at around 5 am bored me and I created a short teleport order in minutes. What is this order? Order can be used for teleporting a player. By accessing the / teleport <number> you have to choose one of the numbers that are in the map settings.

    • Each map has a configuration proposed for the minimum and maximum level.
    • You can teleport a map if you do not have the required minimum.
    • You can teleport a map if you level higher than the configuration map.
    • List of papers default starts from 1 to 13.
    • You can not enter a number less than 1.
    • You can not enter a number greater than 13.
    • You can not enter characters than numbers.
    • When you tried to use the command without arguments will show the list as the number of error information, as well as where you enter a character or use / teleport show_list.
    • You can add as many maps you want.
    • Everything is configurable.
    • Must have knowledge of C++ 0.1% to add more maps.

     

    Spoiler

    .png

     

    Download:

    • Metin2 Dev 15
    • Angry 1
    • Good 5
    • muscle 1
    • Love 2
    • Love 26
  4. 13 hours ago, tierrilopes said:

    Just an info to shorten the code:

    IsGM() == true          equals to:    IsGM()

    Also

    IsGM() == false   equals to:   !IsGM()

    Is it really necessary to repeat again what I wrote above?

     

    23 hours ago, VegaS said:

    CHARACTER::IsGM()

    
    	if (m_pointsInstant.gm_level != GM_PLAYER)
    		return true;

    He have check if is not player return function with true and else with false so:

    IsGM() or IsGM() == true ------->>  = true, you are are GameMaster.

    !IsGM() or IsGM() == false ------->> = false, you are not a GameMaster.

    And if you want only to check if is GM, that means, all grade more as a player, you can check only with IsGM().

     

  5. @charparodar Him is a simple player and play p-server, he say about opening a private server to play, he is looking for it.

    All servers in the country to which it belongs are shitty owner who know nothing about programming or whatever or 0.5%, just use serverfiles sites and systems / parts purchased or stolen from all sides, they barely know how to change a few things minor which was done a few years ago.
    In your country you'll never find a good and professional server, only administrators shit shit infected with a corrupt world.

    However these details too much of people know already, if you want a p-server search Private Servers category, but do not think you'll find too fantastic things.

    I'm sorry that I disappointed the country last year and a few years ago, but I for one have left this area of managing a server, and whilst I leave and category Metin2 definitive hopefully stay in this area Maximum few months and I then sponge with metin2 my past.

    But maybe who knows when I'll be bored of what I do where I work, I'll probably do that in 2017.

     

    Good luck in the search.

    • Love 1
  6. This is function good xD, in that tutorial I made a little mistake. now is fixed :ph34r:

    #ifdef ENABLE_PROTECT_BUFF_GM
    //testcodevegas_Function134
    	int pTableSkill[] = {94, 95, 96, 109, 110, 111};
        
    	for (int skill = 0; skill < _countof(pTableSkill); skill++)
    	{
    		if (pTableSkill[skill] == dwVnum && IsGM() && !pkVictim->IsGM())
    		{
    			ChatPacket(CHAT_TYPE_NOTICE, "<<Debug>> You try to give buff for player [%s], and this is player, you can't make that, the buff was returned to you.", pkVictim->GetName());
    			pkVictim = this;
    		} 
    	}
    #endif

     

    And IsGM is same with GetGMLevel, only what is different:

    CHARACTER::IsGM()

    	if (m_pointsInstant.gm_level != GM_PLAYER)
    		return true;

    He have check if is not player return function with true and else with false so:

    IsGM() or IsGM() == true ------->>  = true, you are are GameMaster.

    !IsGM() or IsGM() == false ------->> = false, you are not a GameMaster.

    CHARACTER::GetGMLevel()

    He give you chance to check grade, like implementator, low_wizard etc etc

    	return m_pointsInstant.gm_level;

    He return your grade actual from character and you if you want to check if you are gm need to check like this:

    GetGMLevel() > GM_PLAYER

     

    So it depends on cases in which you want to use if you want to do a special check of a degree such as:

    • - IMPLEMENTOR
    • - HIGH_WIZARD
    • - GOD
    • - LOW_WIZARD

    You can use GetGMLevel()

    And if you want only to check if is GM, that means, all grade more as a player, you can check only with IsGM()

    • Love 5
  7. Try that, without remove pos.

    Command for use:

    	def BINARY_Open_Safebox(self):
    		net.SendChatPacket("/safebox_open") 

    [File: game/cmd.cpp]

    ACMD(do_safebox_open);
    { "safebox_open",	do_safebox_open,		0,			POS_DEAD,	GM_PLAYER	},

    [File: game/cmd_general.cpp]

    ACMD(do_safebox_open)
    {
    	if (ch->IsOpenSafebox()) {
    		ch->ChatPacket(CHAT_TYPE_INFO, "I am not gay, already you have safebox open :(");
    		return; }
    		
    	ch->SetSafeboxOpenPosition();
    	ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowMeSafeboxPassword");
    }

     

  8. You'll never find it, or something.

    Because all people what selling a serverfiles not have knowledge about programming or anything, they just add quests systems etc etc all of which are already free.

    Again, you'll never find a serverfiles selling like a serious man.
    All are just some kids who do that.

    So I think this topic is useless, and we do not want here to show people that sell such things already free and stolen at the same time.
    At the same time there than other versions petsystem luzzo's version and that of ken, so that if you type in that package will include that of serverfiles basically because he is a scammer gives you the labor of others.

     

    Sorry for my english.

    • Love 2
  9. On 05.07.2016 at 10:15 PM, Asdator said:

    Maybe "automatic use" function on this slots?

     

    Player can active slot to "auto use" example once on 5 sec?

    This looks like shit for server's pvm.

    On 09.07.2016 at 10:10 PM, Jodie said:

    It seems like Knight Online. I think this method is often using by Webzen. (For example; Expanded Inventory) but I liked the idea. Keep going! :)

    - Jodie

    Thanks ^^

     

    Still waiting opinions.

  10. M2 Download Center

    This is the hidden content, please
    ( Internal )

    I made this little tutorial with function at his request @Mind Rapist

     

    Link download:

     

     

    Here is method for check xD (example for game.py)

    		if app.ENABLE_CHECK_IF_SAFEBOX_OPEN:
    			onPressKeyDict[app.DIK_F5]	= lambda : self.BINARY_Check_Safebox()
    			
    	if app.ENABLE_CHECK_IF_SAFEBOX_OPEN:
    		def BINARY_Check_Safebox(self):
    			import safebox
    			if safebox.isOpen():
    				chat.AppendChat(chat.CHAT_TYPE_INFO, "<<Debug from VegaS>> Safebox is open!")
    			else:
    				chat.AppendChat(chat.CHAT_TYPE_INFO, "<<Debug from VegaS>> Safebox is not open!")	

     

    Have fun  :wub: 

    • Metin2 Dev 17
    • Eyes 1
    • Good 4
    • Love 1
    • Love 13
  11. That would need to block all bullshit.

    quest item_gold_piece begin
    	state start begin
    		when 80008.use begin
    			if not pc.can_warp() or pc.countitem(item.get_vnum()) == 0 then
    				syschat("<Debug> There was a problem, wait 10 seconds or perhaps you did not item to inventory!")  
    				return 
    			elseif get_time() < pc.getqf("use_goldbar") then
    				syschat("<Debug> The last time you did this recently, waiting a few seconds for can make that again!")  
    				return
    			elseif pc.get_money() <= 1900000000 then
    				pc.remove_item(item.get_vnum(), 1)
    				pc.give_gold(100000000)		
    				pc.setqf("use_goldbar", get_time() +5)
    				syschat(string.format("<Debug> Succes gold added: + %d", 100000000))	
    			else
    				syschat("<Debug> I cannot sell it because you have too much money on account.")
    			end
    		end
    			
    		when kill or enter or login with pc.get_gold() > 100000000 and pc.can_warp() == true begin
    			pc.change_gold(-100000000)
    			pc.give_item2(80008, 1)
    			syschat(string.format("<Debug> Succes gold withdrawn: - %d", 100000000))	
    		end
    	end
    end

     

  12. I have not read what you wrote but I read the title, but if you will not help this idea can give others. xD

    Some protection may be next:

    			if false == pc.can_warp() then	syschat("<Info> Wait 10 seconds before taking this quest!")	return	end

    Make checks can_warp function such as:

    • - Private shop window && npc
    • - Your store window
    • - Window deposit
    • - Window refinery

    If they were open 10 seconds behind them you will not be able to run quest.
    As much praise, can fraud merchant window and bug at SS and other prizes etc.

    			if pc.getqf("value_qf") > 0 then	syschat("<Info> You have already done this!")	return	end

    And another check return in case your quest is finished to be unable to use because there are many quests that can operate in server and reopen.

    			if pc.countitem(itemVnum) < 1 then	syschat("<Info> You do not have this item!")	return	end				

    If you can not find any item in your inventory will have a function return, this is for quests with rewards if you receive items collected x x item.

                if pc.count_item(item.get_vnum()) >= 1 then	syschat(string.format("<Info> Succes arg %d)", itemVnum))	pc.give_item2(itemVnum, value)	item.remove()	end

    A check correct to initiate an item and get a reward of item.

    		local szForbidden = {110, 111, 112, 113}
    		if table_is_in(szForbidden, pc.get_map_index()) then
    			syschat("<Info> You can not do that in these maps!")
    			return
    		end

    Running some quests in certain maps to be banned because some quests is mandatory that.

    If you want to protect it much easier to check if you can do in a dungeon or on a map that is in game99.

    		if table_is_in(szForbidden, pc.get_map_index()) or pc.in_dungeon() or pc.get_channel_id() == 99 then

    [...................................................]

    There are plenty of checks made for proper security for all quests, if you ever need anything please give me a pm.

  13. [File: src/Client/UserInterface/PythonTextTail.cpp]

    pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition);

    Check function to look like this:

    		if (pMarkInstance && pGuildNameInstance)
    		{
    			int iWidth, iHeight;
    			int iImageHalfSize = pMarkInstance->GetWidth()/2 + c_fxMarkPosition;
    			pGuildNameInstance->GetTextSize(&iWidth, &iHeight);
    
    			pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition);
    			pGuildNameInstance->SetPosition(pTextTail->x + iImageHalfSize, pTextTail->y - c_fyGuildNamePosition, pTextTail->z);
    			pGuildNameInstance->Update();
    		}

    If he still look like this, you can change pos from here:

    pMarkInstance->SetPosition(pTextTail->x - iWidth/2 - iImageHalfSize, pTextTail->y - c_fyMarkPosition - 5); // -5

     

×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / 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.