Code Monkey home page Code Monkey logo

corescripts's Introduction

TES3MP

Copyright (c) 2008-2015, OpenMW Team
Copyright (c) 2016-2022, David Cernat & Stanislav Zhukov

TES3MP is a project adding multiplayer functionality to OpenMW, an open-source game engine that supports playing "The Elder Scrolls III: Morrowind" by Bethesda Softworks.

  • TES3MP version: 0.8.1
  • OpenMW version: 0.47.0
  • License: GPLv3 with additional allowed terms (see LICENSE for more information)

Font Licenses:

Project status

Version changelog

As of version 0.8.1, TES3MP is fully playable, providing very extensive player, NPC, world and quest synchronization, as well as state saving and loading, all of which are highly customizable via serverside Lua scripts.

Remaining gameplay problems mostly relate to AI and the fact that clientside script variables need to be placed on a synchronization whitelist to avoid packet spam.

TES3MP now also has a VR branch that combines its code with that of Mads Buvik Sandvei's OpenMW VR.

Donations

You can benefit the project by donating on Patreon to our two developers, David Cernat and Koncord, as well as by supporting OpenMW.

Contributing

Helping us with documentation, bug hunting and video showcases is always greatly appreciated.

For code contributions, it's best to start out with modestly sized fixes and features and work your way up. There are so many different possible implementations of more major features โ€“ many of which would cause undesirable code or vision conflicts with OpenMW โ€“ that those should be talked over in advance with the existing developers before effort is spent on them.

Feel free to contact the team members for any questions you might have.

Getting started

corescripts's People

Contributors

1338 avatar atkana avatar boyos999 avatar dagothgares avatar davidcernat avatar grimkriegor avatar jakewestrip avatar jakobch avatar koncord avatar learwolf avatar malseph avatar nalal avatar nkfree avatar nuri-g avatar perfectcolors avatar pop000100 avatar rickoff avatar shigbeard avatar testman42 avatar treeofself avatar uramer avatar volkmilit avatar yvancywan 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

Watchers

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

corescripts's Issues

Add teleport commands relative to other players

Add teleport commands to teleport the player to another player or vice versa.

This is a very common feature in multiplayer games and it is extremely useful, especially in times of bug hunting.

PS: These commands should be limited to Moderators and Admins.

/tp all

I think it would be better than a monkey's work (tp 1, tp 2, tp 3)

Iterate through players in a way that makes sense

This line, used in so many places, doesn't really work at all:

for i = 0, #Players do

Imagine you have a server that players 0, 1, 2 and 3 have joined. That means #Players is 4 and the loop will go up to 4.

Now imagine players 1 and 2 leave. Suddenly, #Players has a value of 2. That means the loop only goes up to 2, and it's as if player 3 doesn't even exist.

For that reason, something like printing the list of players like this is very wrong:

    for i=0,#Players do
        if i == #Players then
            divider = ""
        else
            divider = "\n"
        end
        if Players[i] ~= nil and Players[i]:IsLoggedIn() then
            list = list .. tostring(Players[i].name)
            list = list .. " (ID: " .. tostring(Players[i].pid)
            list = list .. ", Ping: " .. tostring(tes3mp.GetAvgPing(Players[i].pid)) .. ")"
            list = list .. divider
        end
    end

In the above-mentioned scenario, it will only be able to find player 0.

Here's a screenshot as proof:

http://i.imgur.com/GY7FolQ.png

tes3mp.SetPos() doesn't work when called from the Lua scripts

I have tried calling tes3mp.SetPos() from the lua scripts without any noticeable effects, there is no debug information in either the openmw or the openmw-mp server console output.

Example of a call:
tes3mp.SetPos(0, 4092, 4092, 1000), should put player pid0 at Z1000 above the spawn point but nothing happens.

Custom script installation

Hi, I'm working on a mod manager for OpenMW called Portmod, and want to include support for installing tes3mp scripts.

At the moment there doesn't seem to be an easy way of including custom scripts without touching the tes3mp installation, which a user program such as Portmod may not have permission to modify, depending on how tes3mp was installed. There is a way of specifying the location of CoreScripts in tes3mp-server.cfg, however making use of that on a system where the original CoreScripts has been installed without user write permissions would require copying or cloning an entirely new CoreScripts directory. This may not be what the user expects and could be confusing, in addition to being a largely unnecessary copy as we only actually need to modify scripts/customScripts.lua.

Would it be possible to support including custom scripts (or more particularly, the customScripts.lua file) in a location specified in tes3mp-server.cfg, or in some fixed directory in ~/.local/share?

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.