GithubHelp home page GithubHelp logo

endlessclient's People

Contributors

dandecrypted avatar ethanmoffat avatar miou-gh avatar septharoth avatar sorokya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

endlessclient's Issues

You gained 0 exp

Killing an NPC client tells me "You gained 0 exp" but clearly gained 7. Am sure it's something I'm overlooking, maybe Ethan will solve it easier than I.

Friends List Glitch #2

Currently you can add multiple friends with the same name. For example, you can add lets say "Jimmy" as many times as you like (1, 5, 10000000), but once you 'close/re open' the list, it only shows the first original addition. I wouldn't say this is an important thing to be fixed, but nonetheless less glitchy is better :P

Screenshot: http://puu.sh/huQT4/2b542fe21b.jpg

Chests and Chest Dialogs

Implement Chest interaction with map chests. Handle all packets and remove old code.

ToDo list for chests:

  1. Rewrite ListDialog (ScrollingListDialog?) to be more generic
    a. ListDialog should also support new XNAControls
  2. Rewrite ChestDialog to use new XNAControls. Change ChestDialog to derive from ListDialog
    a. Use of static Show method should be deprecated in favor of using build in ShowDialog/ShowDialogAsync methods from XNAControls
    b. Use of static Instance method should be deprecated in favor of using provider/repository interfaces for the dialog
  3. Chest packet handling from EOLib.Net.API.Chest should be moved into appropriate EOLib.Domain Actions and basic types
    a. Will also need to figure out properties for EOLib.Domain.Map.Chest
    b. EOLib.Domain.Map.Chest should be immutable (read-only properties and .With methods)

sound issue

Whenever i open the client i get
"There was an error initializing the sound manager"

Memory Leak in unmanaged code

There is currently a memory leak in unmanaged code that is visible once the game is loaded and the map is being rendered. I suspect it has to do with the map being rendered.

It is possible that PELoaderLib causes the leakage. More investigation is required.

Upgrade to C# 6

C# 6 has some nice language features that aren't present in the current source because it is limited to .Net 4.5 features.

  1. Lamba methods/properties, i.e. public int Property => 42;
  2. Get-only properties, i.e. public int Property { get; }
  3. String interpolation, i.e. $"I am a string with a {someInt} interpolated int!

Solution needs the following:

  1. Upgrade projects to latest Visual Studio (2017)
  2. Upgrade .Net target version for all projects to .Net 4.6
  3. Upgrade package dependencies as appropriate

Replace compile-time constants with global values

Code Feature

It would be nice to convert constants in code (such as font names and colors) into global constants in the 'Constants' class so that the code becomes more maintainable.

This is a high-effort, low-value, low-priority refactoring job. Need to investigate also whether or not ReSharper has a built-in function for this.

License

This project doesn't have one. Is this intended?

@Announcement chat, +Admin chat, possible NPC rendering crash?

This isn't a bug, as it looks as if you just haven't added it quite yet. (Unless you've added it in a more recent commit that I missed)

But, @Announcements don't come up when used. Also +Admin chat isn't implemented yet I suppose? I'll be compiling your next commit and finding as many bugs as I can.

Also, when around NPCs, it seems the game crashes. I've AFK'd for hours in the first map, as soon as I walked out the room it crashed. Although, it could have something to do with the size of the map? I'm completely unsure of the cause, but it seems as if it's NPCs causing said crash.

Inventory item bug

If you drag an item outside of the inventory box to the right, the inventory box will show the box of the item inside. (can't describe well, sorry.)

image

Copyrighted Content

Do not publish a release with GFX, etc.
Those are copyrighted files.
Also, try putting a new Icon for the modified client.

Starting Release Version

When starting the release version of the .exe. the program spits and error

stating: "Error setting up dependencies for the game"

EDIT
after addng the folders, the game "stopped working" after trying to log in

Major Refactoring

It's been a while since I've worked on this, so I think it might be a good chance to refactor the code before beginning more feature addition. Here's a working todo list of some pretty general big changes that should occur.

  1. Remove singleton instances from use; maintain references and pass them to objects
  2. Investigate changes to packet handling - Inheritance hierarchy for handler methods, possible base interface definition AND Replacing static methods with instance methods
    3. Go through ReSharper suggestions in all source files
    4. Investigate use of c# Tasks instead of manually creating threads (for example, the connecting dialog creates a new thread in the Update method so update doesn't block while it loads stuff)

ReadMe is out of date

The project ReadMe could use some updating, since development of new code is well under way.

It should be paralleled with the introduction of a Wiki explaining some of the design concepts and API usages of more complicated areas.

Map Rendering

Just AFK on a map with NPCs (and left-over item drops.. not sure if this could also be an issue) you're likely to crash.

I actually can't even login on my character when I log out on this one map on my server! (Has 16 Biters, and random golds, small potions left on the ground from players training here)

EOChatBubble needs redesign

Currently, a new chat bubble is created every time one should be displayed. However, it would be a lot better if each 'actor' on the map had their own chat bubble that was enabled appropriately when the 'actor' speaks.

Also getting a lot of bugs related to chat bubbles, in that they are generating a lot of NullReference/ObjectDisposed exceptions. What is happening is Dispose() is being called while the bubble is in a call to "Draw", which makes no sense and might be related to the way it is designed.

Walls switching graphics?

I started encountering sprites/textures that seem to be cycling like animations, and the glitch I had encountered before on the same maps(Map 12, and the castle interior).

At first I thought it could have been some of the changes I've made to the code(experimenting with features I've always been curious about having in EO, which DID include modifying the way certain things are rendered). But after trying the unmodified code I experienced the same issue. After a few tries the map loaded without throwing any exceptions, and that's where things got trippy.

screenshot1
screenshot2

But on a side note, after spending a few days getting a feel for it, this is absolutely amazing. The code is smooth and consistent, easy to manage and expand. You have talent.

Hat/Hair Rendering

Hat + hair render incorrectly for many hats. When this rendering behavior was first implemented, tested with very few cases, and it worked for those. More testing revealed this is still buggy.. Need to research into the behavior for different hats as I suspect that the rendering behavior was hard-coded in the original client.

An additional bonus would be to find a better way to mask the hair when needed using a method other than GetData/SetData.

Font issue?

I don't know if it's related to a change I did to remove HiDef to avoid this issue:
issue_0
But I'm living on this font bug:
issue

Character attack animation is really bad

Two problems:

  1. Animation is slow to start up, there is a noticeable delay between pressing CTRL and the animation starting
  2. Animation sequence fully completes and restarts if the CTRL key is held down. It should go from frame 0-1-2-1-2-1-2... when held, instead of frame 0-1-2-0-1-2-0-1-2...

MonoGame

Any chance to use MonoGame (http://www.monogame.net/ [XNA port in Mono]) instead of native XNA?
It will make possible the client to run on Linux/Mac using Mono, and also, mobile devices.

HUD Status bars

Implement HP, TP, SP, and TNL status bars in UI. Remove old code.

ToDo list for Status Bars:

  1. Convert old status bars to new XNAControls (see EndlessClient.Hud.StatusBars directory)
  2. Create status bar controls in HudControlsFactory.CreateHud(). Add them to the return collection with their associated HudControlIdentifier
    a. A factory may be necessary if the dependency list for the status bars becomes too long

Some controls render with invalid coordinates on minimize+restore

The coordinates for the HUD's panels are set to (0,0) when the game window is restored after being minimized. The primary chat text box has a similar issue. Switching windows does not have the same effect.

image

The items rendered for the map are WIP and unrelated to this issue.

Item Inventory Support

Support item inventory management. Remove old code and item handling.

This is going to be a larger project since the old code for items touches a lot of different areas. Potential ToDo list for items:

  1. Convert old EOLib.Net.API.Item code (and PacketAPICallbackManager) to new controller/action paradigm across EOLib and EndlessClient
  2. Create new Inventory Panel (EOLib.HUD.Panels.InventoryPanel) based on old code (see Old directory in Panels)
    a. This will involve creating inventory items, item management control, handling drop/junk, etc.
    b. Do not need to support equipping or using items in this section
  3. New panel should automatically be hooked up since it is already used in HudPanelFactory

Chat bug when ignored dialog open

When a dialog is set to 'Ignored' (such is the case for EOPaperdollDialog and EOChestDialog) and is the top-most dialog, typing text in the main chat text box works ok. However, hitting enter or backspace does not work as expected (nothing happens). Suspect this is because these keypresses are being absorbed by the dialog and not passed to the text box, which is updated after the enter keypress is absorbed.

Need to find a way to pass the enter keypress event back to windows if it isn't handled by the dialog. This may be entirely within XNAControls and not require changes in EndlessClient.

Friends List [Glitch?]

Hello,

I noticed that when you try to spam (right click) remove friends, it will then glitch out the friends list. It seems that it fixes itself, but maybe add a check to prevent removing multiple friends quickly? I haven't peeked at the code much because I'm installing VS atm. I figured I would let you know anyways. I'll post more as I find issues.

Screenshot: http://puu.sh/huQrP/adaae83b4e.jpg

Disconnect mechanics are buggy

Currently, the mechanics for disconnecting from the game rarely work when not initiated by the player. If the game throws an error and requires a disconnect, usually this results in a crash. Sometimes two dialog boxes display at the same time as well.

IndexOutOfRangeException, EOMapRenderer.cs, Line 344, MapRef.WarpLookup[destY, destX];

This just started as of late, I decided to retry adding my music engine and bam! I can login onto any map just fine(most of the time), but no matter what server I use(including my own test server, using the normal EO maps)- It always throws this exception after I try moving to another map.

I figured it would be best to let you know instead of just ignore it and hope for the best haha.

It might also help to know that, this was not an issue I experienced when compiling a version of the code from about a week ago.

mapref warplookup 9 10 2015
screenshot23

Crash upon connecting to game.eoserv.net

System.NullReferenceException: Object reference not set to an instance of an object.
at EndlessClient.World.ApplyWelcomeMessage(WelcomeMessageData data)
at EndlessClient.EOGame.<>c__DisplayClass33.b__2b(Object dlgS, CloseDialogEventArgs dlgE)
at XNAControls.XNADialog.Close(XNAButton whichButton, XNADialogResult result)
at EndlessClient.EOConnectingDialog.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c__DisplayClass2.b__3(Object state)

Map changes need thread synchronization

The map changes due to a warp. Currently, this is done by calling EOMapRenderer::SetActiveMap. However, if the active map is in the process of drawing, there is a chance of generating an out of range exception when looking up tile specs with the array subscript operator.

This exception has only been generated in one case; however, it would be best to standardize and possibly rewrite the way that map switching is done, to make sure that the current map stops drawing, the map changes, and THEN the map starts drawing again. Providing proper synchronization for map renderer members throughout that whole process would be the enhancement.

Map Item Interaction

Implement map item interaction with items that are visible on a map.

This is potentially large since mouse cursor hasn't been (re-)implemented yet. Potential ToDo list:

  1. Create mouse cursor and mouse input handling
    a. Display of mouse cursor over grid tile where mouse is hovering
    b. Input handling for left/right click of item under cursor
  2. Send/handle appropriate packets for item pickup and item drop
    a. This should be done after #53 is completed

Item display is already being handled. Once the inventory is in place and the mouse cursor is working, this should be a relatively easy feature to implement.

Remove XNA dependencies and use only MonoGame

Maintaining two separate project branches is getting annoying. Also, being restricted to .Net 4.0 is causing some issues.

Would like to remove dependencies on Microsoft XNA implementation to reduce maintenance effort for adding new files and to allow use of newer language features (such as async/await).

Different platforms could then use alternate project configurations instead of maintaining separate projects.

Speech Bubble Woes

Speech bubbles do not draw in the correct order.

For instance, if someone talks and is near the edge of the screen the bubble will overlay over the hud. Or, if a dialog is open, the speech bubble will display over it.

This was reported and fix before but has since become a problem again.

SP counter does not work

When attacking, the SP counter never drops much below the max amount.

When casting a spell, the SP counter is never lowered by the cost of the spell.

IndexOutOfRangeException, ArrowKeyListener.cs, World.Instance.ActiveMapRenderer.MapRef.TileLookup[destY, destX];

Started happening after commits a353519-b0ac380, haven't been able to isolate much of the issue aside from that(for me) it happens when using the warp at map 5- x86y47, just leaving Aeven to the Malone Outlet (map 7).

Standing beside the warp for a few seconds to get across maps seems to work, and I tried using a Try-Catch statement to simply skip the issue, but it just crashes the client without an exception.

screenshot5

More of an idea for you

PMs are great, but why only two tabs?

We should incorporate multiple PM tabs above 2, they'll shrink at 3 pms, and any more there will be an arrow to move the pm bar left or right to other PM tabs.

@ two
[ Testuser (x)] [ Testuser (x)] [ Scr ] [ Glb ] [ Grp ] [ Sys ]

@ Three
[ Te.. (x) ] [ Te.. (x) ] [Te.. (x) ] [ Scr ] [ Glb ] [ Grp ] [ Sys ]

@ More than three
[ Te.. (x)][ Te.. (x)][Te.. (x)]<> [ Scr ] [ Glb ] [ Grp ] [ Sys ]

Ive been messing with the code myself lately, only been able to do some minor things & easily added stuff that I can look at other code to reference, but I'm still figuring out how you put this together so I can work some myself.

Client Performance degradation on large maps

CPU usage spikes when rendering large outdoor maps (compared with small indoor rooms). This can definitely be improved.

CPU usage (AMD Phenom II X2 560) on map 192 (small 10x10ish room) vs map 5 (large 90x90ish outdoor map). Note the usage spike to ~35% when the map changes, gets as high as 45-50% when walking, depending on NPCs in the area. Hovers around 10% on static map even during walking. GPU usage does not exceed 6-7% (Radeon HD 6770).

Weird Tiles on Map Edges

A number of maps show this red pad thingy as the ground tile when it is a map edge (notice in the corners of indoor room maps especially). Need to investigate changing it so that any tile spec that is "Map Edge" does not render a ground tile beneath it at all.

Utility Projects need to be adapted to new code

Since the Utility projects were developed, the code has changed a lot. The following projects use an older coding style and have not been maintained to high standards. Most (if not all?) of them are no longer functional.

  • BatchPub
  • BatchMap
  • EOBot
  • PacketDecoder

EOCLI also has not been maintained since the C++/CLI DLL was deprecated in favor of pure C# support. This project should be deleted - originally it was left around for historical purposes but there is no reason to keep it any more since it isn't referenced by the solution.

HUD Glitch

Hi,

  1. Currently chat bubbles will overlay the HUD, etc. I don't think I need to provide a screenshot for this glitch, it's very apparent in game.
  2. If you have two items next to each other, the item you're hovering will not show the name properly, as it will be stuck under the other item. (Screenshot: http://puu.sh/huRaO/27ca35eb9f.png)

Map Signs are not easy to click

In order to open a sign on a map, you must click on the lower-left square on the sign.

Preferably, a user would be able to click on any area of the sign graphic (right now it is only based on that one tile spec)

File Transfer Woes

File transfer success is inconsistent in debug builds. It eventually will work, but certain times the client has to be launched and logged in upwards of 4 or 5 times before the files all load correctly (sometimes the downloaded files even need to be deleted).

Not sure if release builds have this same issue since the timing is slightly different.

Handle File Download

Summary

File transfer is done by the original client after a character is selected, and occurs immediately before showing the in-game screen. The client diffs the map and pubs and loads them if there is a change. Pub files need to be implemented prior to login because they are now used to decide how to render hair.

Requirements

  1. Implement the file download handler after an account receives the OK to login, but before transitioning to the GameLoginStates.LoggedIn state.
  2. Only download the eif file, other files can be downloaded at the normal time.
  3. Showing a dialog during download is optional, but might be helpful for users with slower connections or for large pub files.

Rid is not updated when files are saved

Saving data files does not update the rid (revision ID). This value is a 4 byte array containing the bytes of a CRC32 on the file's data. The value of rid used when computing the CRC32 should be 0x00 for all 4 bytes (with all other data unchanged). After the CRC32 is computed, rid is updated with the result and the file is saved.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.