Git Product home page Git Product logo

edelstein's People

Contributors

bia10 avatar kaioru avatar matthieutran avatar razfriman 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  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  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  avatar  avatar  avatar  avatar

Watchers

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

edelstein's Issues

Double look-up in dictionaries

 public ITemplate Get(int id)
        {
            return !Templates.ContainsKey(id) ? null : Templates[id];
        }

This is a double look-up. Use "Dicitonary.TryGetValue" instead.

Crash on login with new char

Hello, i have just compiled Edelstein on Win7 64x setup the path for nx/scripts and then tried to login via v95localhost i found on ragezone. Compilation went ok, however the client crashes on login. Theres no exception being thrown in VS. Heres the screen:
crash

btw why is the console formatted so messy o.o?

What client files to connect?

Hello,

I got this compiled and running on my Raspberry Pi 4 and realized all the links for a v95 localhost are dead...

Just wondering if someone could point me in the right direction on connecting to this. I'm super out of the loop on MS private server stuff, just trying to test this out for fun.

Thanks!

Standing on air?

It seems something is missing from scene or is this intended?

air

Are you using a localhost for testing?

I released a localhost sometime ago in ragezone, but it has a bug with the user login / password.

So I would like to suggest one of the following options:

  • Fix the current localhost.
  • Create a 'localhost' dll where client fixes could be applied(windows 10 fix, make client load faster, encode byte specifying if damage was critical or not, etc.).

In my view, having a DLL that can be used to extend the client would be killer.

Best,

[Plugin] Rue progress overview (WIP)

This issue tracks the progress on state of various undeveloped features/enhancements or present bugs as I slowly review the entire plugin.

My main perspective on the requirements presented is based on idea that Rue should provide 2 main points:

  1. Easy of use for E2E testing, as currently were still lack proper fully automated means of E2E testing yet, Rue should be able to offer partial solution for some aspects of that and offer easy way to attain any configuration of client states easily. Give a way to emulate/simulate/bypass certain events as to test them without having to go thru everything manually ingame which may be even impossible for lets say GM events or complex party quests.

  2. Show what is already doable with the current state of affairs of neatly written codebase @Kaioru provided us with which was written and rewritten many times to take things like ease of extendibility and modifiability into account. As such offers a platform to test out protocol or game/login server code without actually having to modify the original code at all. What I personally consider an attractive aspect of modularity/isolability being part of the design.

Generic issues

  • Lack of more descriptive logging of init and mainly start of plugins, I would expect something like:
    [PluginRue] RueLogin loaded with LoginContext into server nameof(server) registering into pipelines following custom plugs:
    [0] AutoRegisterPlug with priority High
    [1] AutoLoginPlug with priority High

  • Add to CommandManager some kind of memory which would make a history of commands and would allow to move backwards/forwards in processing that history to undo/redo n command "steps".

  • Implement ConversationTextFormatter should generalize and unify approaches for generating text for conversation speakers. This implies using the client text formatting syntax to achieve things like positioning(left, right, middle, top, bottom), whitespace management(toBlock, toParagraph, insertEmptyLine(int count)), character formatting(coloring, italics, bold), hyperlinking(items, skills, characterName, mobs, quests), lists formatting(create, remove, fromText, reorder), progress reporting, pagination(offer ability to make book of pages... determine text length on each page, split into pages)

  • Implement better textual search handling currently its either slow or lacking in effort put into working with the input, often returns nothing even when given half of the skill name. So we have lack of input processing, lack of search for closeness or relatedness, lack of suggestions of possible matches.

  • Generalize Stats, Skill, Equip commands to handle entire recordSnapshot(s), something like base IRecordSnapshot -> IStatRecordSnapshot, ISkillRecordSnapshot, IEquipRecordSnapshot and implement on these SetTo(IRecordSnapshot snapshot) this gets you to wrappers/extensions like SetToJob(), SetToDefault(), SetToQuestState(), ultimately combining the snapshot interfaces into a ICharacterBuildSnapshot

Login

  • Implement FlippedUserName handling done in #80
  • Implement AutoRegister feature done in #80
  • Implement AutoLogin feature done in #80
  • Implement AutoWorldSelect feature
  • Implement AutoCharacterCreate feature
  • Implement AutoCharacterDelete feature
  • Implement AutoCharacterSelect feature
  • Implement AutoIngame feature, the culmination of previous work -> get ingame as efficiently and smoothly as possible

Game

Help Command

  • Displayed commands only describe themselves, there is no reference to existence of args and their use at all.
  • Add feature to call Help only on 1 or n commands.
  • Additional information on the command, display its call syntax (the order of args, their possible values or ranges), display example use case(s)

Skill Command

  • Add feature to remove skill(s).
  • ResetAll() method merely sets all skill records to level 0, this doesn't imply the meaning of resetting to a default or previous state. This should be called SetAllToZero() as its common for an alt of a main chair to inherit some of skill levels in various blessings, for such char the default is not all records at 0 at all.

Stat Command

  • The args are entirely unchecked will process any input as such can create char states which wont even pass character selection.
  • Adding of sp actually doesn't discriminate between different categories of skill record collections so it gives sp to every job level progression.
  • Implement pet related stat handling.

Debug Command

  • Implement other missing records.
  • Find way to format the text printed into chat window.
  • ToChat args should also implement selection menu and answer in chat window.
  • Debug other field entities.
  • Allow for monitoring of objects of interest. Something along side observables of objects publishing events on trigger.
  • The bold and blue formatting are not properly escaped and cause records to be also bold/blue which I find useful thus I consider this a feature until this behavior becomes issue.

Setup Documentation

Why is not in the README;

How to setup "postgresql"
How to configure "servers"
How to configure the "databases"

Furthermore, why are the migration binaries stripped of their ".exe." extension?
Afterward, what localhosts work with the server, what is the point of running, if no clients can detect it

Better handling of ungraceful termination.

There are many possibilities why Stop method wont run this open possibility of stage registration continually failing due to stages already being registered on a "dead instance".

So either cover possibilities of ungraceful termination

or

Ensure there are no leftovers from previous instance.

Scripts

Are the lua scripts in another repo?

Some setup issues

  1. WorldTemplateRepository.cs (Edelstein-dev\src\common\Edelstein.Common.Gameplay.Stages.Login\Templates) has Continent.img mistakenly named as World.img in line 23

Nuget also needs to be called manually to restore LiteDB but that's not really an issue, just for documentation purposes

Few bugs i noticed

image

After loging in with new account and re-loging the account username is scrambled with random characters / duplicates.

  • Any localhost with source?
  • MySQL will be great!
  • Exp not working?

List of non-working skills

[fpWizards] : (mpEater) - doesn't work
[fpWizards] : (slow) - does't apply mob status change
[fpWizards] : (poisonBreath) - does't apply mob status change
[fpMage] : (poisonMist) - doesn't spawn mist entity
[fpMage] : (teleportMastery) - doesn't apply buff
[ilWizards] : (mpEater) - doesn't work
[ilMage] : (teleportMastery) - doesn't apply buff
[cleric] : (mpEater) - doesn't work
[cleric] : (heal) - doesn't heal
[priest] : (holySymbol) - doesn't increase exp gain
[priest] : (door) - doesn't spawn door entity
[priest] : (doom) - doesn't apply status change
[hunter] : (arrowBomb) - does't apply mob status change, if dmg kills mob, death anim. gets messed
[hunter] : (powerKnock-Back) - does't apply mob status change, if dmg kills mob, death anim. gets messed
[ranger] : (puppet) - entity is not summoned
[ranger] : (silverHawk) - entity is not summoned
[ranger] : (inferno) - skill cannot be leveled up
[rogue] : (disorder) - doesn't apply mob effect
[assasin] : (drain) - doesn't heal caster
[hermit] : (alchemist) - bonus is not applied
[hermit] : (mesoUp) - bonus is not applied
[hermit] : (shadowWeb) - doesn't work
[hermit] : (darkFlare) - doesn't work
[hermit] : (shadowMeso) - does't consume meso, bonus dmg not applied
[bandit] : (steal) - doesn't steal items
[chiefBandit] : (pickpocket) - bonus is not applied
[chiefBandit] : (mesoExplosion) - works very weirdly first no dmg applied then insta kill
[chiefBandit] : (darkFlare) - doesn't work
[chiefBandit] : (charka) - health/mana doesn't change
[chiefBandit] : (mesoGuard) - doesn't work
[pirate] : (dash) - doesn't apply its buff
[outlaw] : (rollOfTheDice) - doesn't apply buff
[marauder] : (rollOfTheDice) - doesn't apply buff
[marauder] : (energyCharge) - doesn't work

the list continues on, however generally speaking:
case 1: mob status not applied
case 2: skill doesn't heal user/allies
case 3: no summoned entity
case 4: no transformation skill applied
case 5: no buff or bonus applied

Mob movement generates exceptions

Map: 102010000 // South Rocky Mountain : Perion Southern Ridge
Mobs: 100005 // Stump, 3230300 // Jr. Boogie, 3230301 // Jr. Boogie

exceptions being thrown:

mobs dont spawn

Missing script functionality

currently these are missing functions for scipts:
disableUI() - hides UI
lockUI() - prevent players actions
directionmode()
setStandAloneMode()
PortalSE()
IncreaseSlotLimit()

[Question] Lua scripting.

Your project is incredible, it's rare to see emulation projects for C# lovingly developed! :)

There isn't a discord group or anything like that, so I would like to ask about an issue regarding lua.

It's not necessarily about MS, but rather your implementation of Lua, I saw that some of your scripts wait for a response from the user, such as ask_menu, could you explain to me how you manage this?

Sample:

if target.field == mapFields.getID("NLCSubwayStation") then
    selection = self.ask_menu("Hello. Would you like to buy a ticket for the subway?", {
        [0] = "Kerning City of Victoria Island"
    })

    if selection == 0 then
		ticket = charInventory.selectTicketToVictoriaFromNLC()
		cost = charInventory.getPriceOfTicket(ticket)

        if self.ask_yes_no("The ride to Kerning City of Victoria Island takes off every " .. target.as_continent().term .. " minutes, beginning on the hour, and it'll cost you #b" .. cost .. " mesos#k. Are you sure you want to purchase #b#t" .. ticket .. "##k?") then	         
			charInventory.buyTicket(ticket, cost)
        else
            self.say("You must have some business to take care of here, right?")
        end
    end

When ask_menu is called, you call AskMenu (in C#), but in the Lua background, it waits for the return at the exact point where it stopped executing? Do you make any kind of use of threads/coroutines?

requested commands for dbg

!dbg quests - print info about characters quests

should print ids, name, status and then values of specific records for each quest

!dbg npcs - prints info about npcs on field

should print ids, name, position(X,Y), foothold, ids quests given

!dbg mobs - prints info about mobs on field

should print ids, name, positionn(X,Y), foothold, lvl, hp, mp

!dbg reactors - print info about reactors on field

should print ids, name, positionn(X,Y), foothold, hp

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.