Code Monkey home page Code Monkey logo

tmwa's People

Contributors

4144 avatar asuratva avatar bjorn avatar fate-tmw avatar freeyorp avatar helianthella avatar helmutg avatar horak-fdf avatar jaxad0127 avatar jtoelke avatar kagejittai avatar ledmitz avatar madcamel avatar nashley avatar o11c avatar pazkero avatar pydsigner avatar rawng avatar rking avatar specing avatar stefanbeller avatar tezer123 avatar turmfalke2 avatar turupawn avatar vincent-petithory avatar waldreiter avatar wushin 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

Watchers

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

tmwa's Issues

Add a login event

OnPCLoginEvent is required to call clear/convert functions at login time

better db backend

the lighter the better as it's not storing an intense amount of data. It's more OLTP.

Mobs aren't properly syncing with client

as you walk into an area that hasn't had players in a while, the new mobs are in incorrect locations
to see it walk up to a stationary mob and try to attack it

Make npcs able to read chat messages

so they can react on some words ie:

L_Ask:
    npctalk "Sorfina", "What is your name?";
    grabchat @name$;
    goto L_Ask2;

L_Ask2:
    npctalk "Sorfina", "You are called " + @name$ + ". Is that right?";
    registerchatevent "yes", "Sorfina::OnNameOk";
    registerchatevent "no", "Sorfina::OnNameRetry";
    addtimer 10000, "Sorfina::OnNoReply";
    end;

OnNameOk:
    // do something

OnNameRetry:
    goto L_Ask;

OnNoReply:
    goto L_Ask2;

Shop NPCs

Shop NPCs are incredibly single-focused, which makes sense since they are "shop NPCs". However, this causes an issue where nothing special can be done without constructing an ugly menu shop. Things such as requiring a certain level to open the shop or having an introductory dialog are impossible.

Possible solution: remove the "shop" NPC type and add a shop command similar to menu. This would allow much more customization without bloating code.

Example:

shop
    "RedDye", -1,
    @seconditem$, @secondprice;

Add more array methods

  • sort (asc, desc) → not possible because of #157
  • shuffle → not possible because of #157
  • reverse → not possible because of #157
  • rotate → not possible because of #157
  • copy
  • search
  • implode or join

pvp channels

The default pvp channel just silently resets on death so it confuses players. Therefore:

  • The default channel (1) should NOT reset on death because one could just cast @pvp while being dead. The channel should automatically reset on login even if the player did not turn it off before logging out. (suggested behavior)

OR

  • The default channel (1) SHOULD be reset on death BUT should tell the player about it (PvP : Off). But this would not solve the problem of players finding it annoying to have to type @pvp every single time they die.

To solve a bug with the fight club, we need to:

  • If we choose to first solution for the bug described above then we should make any channel that is NOT 1 reset on death.

OR

  • If we choose the second one then we make any channel reset on death.

Send player hp when in a pvp channel

Send your hp to players in the same channel as you but do not send if you have a magical cloak. Manaplus has no packet for this so we need to make one

emote spam

Spamming emotes makes the server slow as hell (as demonstrated by LazyTree)

implement `set` shorthand for quickly updating variables

Allow to update a variable without writing it twice.


Normal: set @foo, @foo + 1;
Shorthand: set @foo, + 1; OR set @foo, ++;

Could be used for all kind of variables and not only for addition and subtraction:
Normal: set QL_HIDENSEEK, QL_HIDENSEEK | $@hideandseekNT_found5;
Shorthand: set QL_HIDENSEEK, | $@hideandseekNT_found5;

close builtins

The close builtin should not implicitly do end; but if we modify it it would cause incompatibility for other projects so I suggest:

  • Modify all existing scripts to use close2; followed by end; instead of close;
  • When all scripts are converted, make tmwa show a deprecation warning when it encounters close;
  • Once close; has been deprecated for a while, completely remove it

I also suggest some improvements for existing npcs:

  • For scripts that need to do things after sending close WITHOUT waiting for the user to click it we could make a close3; builtin that just sends the close packet but does not wait for the reply.
  • Some (well, most) npcs have a "never mind" or "good bye" option to close the dialog but choosing that option sends the close packet to the client so the player needs to not only choose good bye but also click close. We could remove that last useless step by sending the "force close" npc action with npcaction 5; and followed by end;.

Send mob movement when mob visible

The mob move packet should be sent to the player if a mob is moving while the player enters the map or the visibility range of a monster because currently they are just standing until next move

Debug atcommands

It'd be nice if devs could list and edit quest variables with @ commands instead of making and then using using debug NPCs.
It could be as simple as a few commands: @varlist <search>, @vartype variable, and @varedit variable value for example.

Attack speeds are broken

Problems:

  • Currently it is possible to specify a weapon's base delay by setting the View to certain values, which are actually supposed to describe the weapon's type. Thus the Setzer is a "two-handed sword" and the Short Sword is a "dagger." The delays attached to the various values seem pretty arbitrary and are, at any rate, in defiance of the specified meaning.
  • bonus bAspdRate, <n> can be used in equip scripts to modify the attack delay. However, it can only be used to increase the speed; n < 0 has no effect.

Possible solution:
Return View to its proper usage and add a Delay attribute to item_db.txt.

Unassailable Fire Goblins

Please look at this video: http://ubuntuone.com/7Mz3yVJAVaJqb7CgtvSPJM - as you can see I can't attack the second Fire Goblin, and after a while it disappears; but I can attack the first and the third Fire Goblin.
This is not the first time I notice that. If one go to the Sandstorm Desert to kill some Fire Goblins they can notice it, it happens very frequently.
The client I'm using is ManaPlus 1.3.7.7.

Casture the Ugly has anger problems

I've tried many combinations, but he always kills me when I try to turn in the bandana from the pirate cave. I have yet to actually kill a pirate (tried many times, died the sane number), so I hope that this isn't the cause, and if it is then the text should try to hit that is the reason he's so upset. I've even gone naked. I've never had another bandana other than the one from the chest in the bandit cave. I'm also suspecting the manaplus client since I built it from git.

spawn location after restart

upon server restart all chars are spawned at the starting point defined in tmwa-server-data (for the TMW server 042-2 26,26) regardless of where they were before.

Do not allow to escape a sub (or hop into without callsub)

I want to make these changes but I don't know how:

  • make menu only allow to use labels starting with S_ when within a sub and only L_ otherwise
  • make goto only allow to use labels starting with S_ when within a sub and only L_ otherwise (and never On since this should be with donpcevent)

don't crash when char-server is disconnected

There are places that don't check char_fd is valid before using it.

I noticed this because the server has been crashing claiming it was dead. Of course, it was not dead, so there's a problem elsewhere, but ... if the server really were dead, it would still be a bug.

need a way to check when the player is doing nothing

Take a look at parua.txt. To detect if you are idle it checks the position you have at the start of the round and compares it to the position you had at the start of the previous round. This is problematic because even if you are moving you can be detected as idle because you walked on the same tile.

To remedy to this we need builtin that checks if the player is idle. Hercules's checkidle builtin would probably be a good choice.

@wushin

Add hairstyle config to char server

The char server pukes when trying to register with a bald hairstyle because bald is 20 and the max is 19.

In char server the min and max hair style (and possibly other values) are hardcoded and should use a config like here: https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/conf/battle_athena.conf#L272


...also, instead of duplicating some config in all 3 servers, why not have a global-athena.conf that could be read by all servers? I know that the 3 servers can all be run in separate folders (not necessarily in ~/tmwAthena) so maybe we could add that conf file to PATH ?

Allow short npc head

syntax implied meaning
`function name`
`script name`
`map,x,y,dir script
`map,x,y,dir script

^ we could also make dir optional (and x and y while at it)

do something about sex

Currently, the way that account/character sex is handled is a mess.

I think the only reason is that, historically, you can't specify sex during character creation. Everything else seems to be untied though ...

the script function will not actually do the kick, because it changes it locally. Oh! I bet the kick does a second sync!

The GM command will force a kick. If I'm wrong about the second sync, this could lead to only the other characters changing sex.

Also, I think the only reason it wants to kick at all is that the server is too lazy to figure out how to update all the client state ...

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.