Jump to content

NewWars

Inactive Member
  • Posts

    44
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by NewWars

  1. At this point things are getting serious, as you can see the evidence in this topic is even broken and it's not even possible to counter argument that people are getting cancelled here so we don't know the actual truth

     

    #BanAsikoo
    And bring the real shady back to this

     

    315125IMG-20200831-184934.jpg

     

    • Lmao 1
  2. M2 Download Center

    This is the hidden content, please
    ( Internal )

    This is the hidden content, please
    ( GitHub )

    [Do not use this tool, it is not functioning and its considered obsolete]
    [However, a completely reboot of it is coming up

    This is the hidden content, please
    , check out for news]

    Hi Devs

    I came here today to make memes for us, wait no... nevermind.

     

    I came here to share a tool i've done a while ago but postponed its completion until now(2/3 months after i think),

    i consider that its ready for public use even tho, testing is needed to pop up secrets of the unknown and of course, improvements

     

    Spoiler

    08055768747470733a2f2f6963796265722e6d65

     

    This is the hidden content, please

     

    What does it do?

    The tools has many functionalities as:

    Managing the server, set it Online/Offline, convert TXT data automatically before boot,

    Spoiler

    080557E2B.png

     

    Quest management such as add/remove/reload quests with a simple multiple choice menu

    Spoiler

    080557E2N.png

     

    Configure the tool/server settings completely, since its based on Settings profile you can have multiple settings for your server,

    it completely automatically generates channels/cores  and its configurations based on some minor info you provide

    Spoiler

    080557E2o.png

     

    Debug choice with your favorite debugger(we all know LLDB is the best, but go ahead and pick your poison), although this one i didn't complete, yet

    Backup management is still in development as well, check the repository for news

     

    Update functionality, if there is a new version of the tool, simply click this option and voila, its updated!

     

    How was this done and why?

    I made this tool to learn more about Bash and since there was always bad management scripts for server-side stuff, i decided to make it.

    Another reason was i was trying to port the server to windows so i got more interested to build something that was multi-platform,

    and fun fact, i coded this initially for Msys, later on i started to port to FreeBSD/Debian for testing, so yeah must work in

    majorly any Linux distributions if you have Bash and some packages, nothing that biggie.

     

    How can i use it?

    Check the Git Repository(link is above) and the Readme page/section does what to do, quite simple.

     

    Can i contribute to it?

    Of course, just Fork the repository and do your stuff, request a revision via GitHub and i'll check it out.

    Any issues, suggestions, etc should be done in GitHub

     

     

    Best Regards.

    • Metin2 Dev 11
    • Good 7
    • Love 1
    • Love 13
  3. 1 hour ago, Jodie said:

    Do you know reverse engineering? Post the old executable file (metin2client.bin) if you don't. You can try to reverse engine to the executable file to find the right things for move rotation if you do. The last chance is you have to try which one looks good for you by yourself.

    - Jodie

    I dont believe that would help in reality.

     

    The best thing you can do is do some checkpoints and track everything movement related, animation assignment, update, etc, that can be relevant.

    I took a look but i could not find anything tho, i also interested in this tho, but i can't really spend time on it unfortunately.

    I may do a extense research on this later, if i do and find it meanwhile, ill post it.

     

    Regards

  4. Check the packet about position and rotation and see if there is any reference.

    I bet its on the move packet, a quick look at its receiving and parsing:

    bool CPythonNetworkStream::RecvCharacterMovePacket()

    Therefore, i noted this on the rotation:

    kNetMoveActorData.m_fRot=kMovePacket.bRot*5.0f;

     

    Why would it be needed to multiply it by 5?

    An if im not wrong, the way the character in the print, he always rotates to left(maybe its positive, im not sure about it, i dont know much about how rotation values work tho).

    Tomorrow ill have a look at the code to see if i find anything and test that one.

     

    Regards

    • Love 1
  5. He could release the source of it by making a repo where the comunity could improve the program.

    I also have many ideas and changes to make, but in the WE without major bugfixes i wont do it because its just giving work away tho.

     

    When can we expect updates?

     

    Regards.

  6. I also searched for int16 and ushorts, debugged model and icon path to see if they get correctly loaded and its all fine, but the limitation is no where to be found.

    Im sure it is on the client binary tho, but already analised alot of logic functions and i dont see any failure.

    Regards

  7. Make a for loop from 0 to 3, create ALL the textlines in it, give the properties to the textlines, give the proper spacings, check if the bonus type and value arent null and assign them to the control list.

    Spoiler

    ...

    metinImage.SetPosition(10, self.toolTipHeight)
                
    ## Affect
    baseHeightInterval = 16

    for i in xrange(0, 3):
        baseHeight = self.toolTipHeight + (baseHeightInterval * (i + 1)) + 2
        
        affectTextLine = ui.TextLine()
        affectTextLine.SetParent(self)
        affectTextLine.SetFontName(self.defFontName)
        affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR)
        affectTextLine.SetPosition(50, baseHeight)
        affectTextLine.SetOutline()
        affectTextLine.SetFeather()
        affectTextLine.Show()
        
        if itemIndex!=constInfo.ERROR_METIN_STONE:
            affectType, affectValue = item.GetAffect(i)
            affectTextLine.SetText(self.__GetAffectString(affectType, affectValue))
        else:
            affectTextLine.SetText(localeInfo.TOOLTIP_APPLY_NOAFFECT)
        
        if custumAffectString:
            affectTextLine.SetText(custumAffectString)
            self.childrenList.append(affectTextLine)
            break
        else:
            self.toolTipHeight += 12
            self.childrenList.append(affectTextLine)

    ...

    It could be better, but i think its fine, although i dont know if i need to create a different signed component tho

    I didnt test, but i dont see why it shouldnt work.

    Regards.

  8. Hello all,

    i am trying to change the max limit speed for movement and attack on server-side but one thing occurs

    i changed GetLimitPoint() for 500/1000/2000/3000(and some other numbers between), i checked ALL related with movement and atack speed, even speedhack and etc

    And the speed becomes strange.

    When it reaches 256, it becomes 0, so imagine if you set 256, it becomes 0, if you set 512 it becomes 0, if you set 768 it becomes 0, and so on.

    I debuged ALL outputs on movement and attack functions, but nothing outputs the problem, very wierd.

    Also checked in the client, but the problem is clearly not from there.

  9. 32 minutes ago, Frozen said:

    I think what pc.select does is to only select the person infos, not interact with the person.

    Actually i did it other way, and pc.select really selects a PC, but when you do set_quest_state on other PC, "when enter" doesnt rly work.

    I have pc.selected the person and then i warped them to the same place, and it worked.

    Thanks for the help anyway.

  10. 2 hours ago, Ken said:

     

    
    quest co_mission begin
    	state start begin
    		function StartCoOp()
    			for i = 1, table.getn(registeredList), 1 do
    				pc.select(find_pc_by_name(registeredList[i])) -- It's an array.
    				set_quest_state("co_mission", "run")
    			end
    		end
    		when NPC_ID.chat."Register for CO-Op" begin
    			say_title("Co-Op:")
    			say("")
    			--"1234567890"
    			say("Do you wanna register for Co-op?")
    			if (select(locale.yes, locale.no) == 2) then return end
    			table.insert(registeredList, pc.get_name())
    			if (table.getn(registeredList) == 2) then
    				co_mission.StartCoOp()
    			end
    		end
    	end
    	
    	state run begin
    		notice_in_map(string.format("The player %s entered Co-Op mission", pc.name))
    	end
    end
    
    You're creating a table in the questlib.lua and you're using for-loop to call the names and select them. If you don't add that just like that, your quest is only call the first member or the last number. (I never test that) Whatever, your quest should be just like that.
    

    Kind Regards ~ Ken

     

    You are right but, i putted this to debug on StartCoOp() after pc.select(): chat(""..registeredList.."is entering Co-Op: Index"..i)

    But it gives me 2 times on the last registering like this:

    MPPBydp.jpg

    And just the last character, in this case Slot2, goes to "run" state.

    It sould show on each character, and not on the last entering person right?

    I presume is set_quest_state problem.

  11. Hello m2dev.

    Well, i have this situation right here:

    questlib.lua:

    Spoiler

    registeredList = {}

    co_mission.quest:

    Spoiler

    quest co_mission begin
        state start begin
            when NPC_ID.chat."Register For Co-Op" begin
                say_title("Co-Op:")
                say("Wanna register for Co-Op?")
            
                local yn = select("Yes", "No")
                if yn = 1 then
                    table.insert(registeredList, pc.get_name())
                    if table.getn(registeredList) >= 2 then
                        co_mission.StartCoOp()
                    end
                end
            end
                
            function StartCoOp()
                local originalPC = pc.get_vid()
                for i = 1, table.getn(registeredList) do
                    local findPC = find_pc_by_name(registeredList)
                    if findPC ~= 0 then
                        pc.select(findPC)
                        set_quest_state("co_mission", "run")
                    end
                end
                pc.select(originalPC)
            end
        end
        
        state run begin
            notice_in_map("The player "..pc.get_name().." entered Co-Op Mission!")
        end
    end

    Imagine the table "registeredList" has 2 vid, and players are ONLINE

    When calling this StartAllRegistered() function, it should go to quest state "run" on "co_mission", but it only goes on the last registered player, why?

     

    Thanks in advance.

  12. 9 hours ago, AlexxD said:

    There is no  LOCALE_OK variabile. I have just UI_OK, UI_CONTINUE and UI_CANCEL in locale, and these are the variables that need to be there, not LOCALE_OK. I replaced locale.lua from server, still the same, I've checked questlib.lua, nothing special. 
    If you have skype, send me a pm, maybe we can fix it on skype.

    Yeah i didnt know the name soo i just throwed some random logic name.
    Well, it was working before? If yes, when, and what you did after.

    It can be also on .py window builder, but you can only detect that looking at code.

×
×
  • 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.