Commit graph

42 commits

Author SHA1 Message Date
David Cernat
ad61d88cb1 [General] Fix typos and use consistent style for recent additions 2017-12-08 18:02:23 +02:00
Koncord
392e645fe5 [Server] Add isMarkedForDeleteion function 2017-12-08 20:37:22 +08:00
Koncord
aa183e6844 [General] Introduce chat channels 2017-12-08 07:43:29 +08:00
Koncord
4ebfcc4a21 [Server] Limit handshake attempts 2017-11-26 00:18:19 +08:00
David Cernat
010a80ceca [Server] Place getters and setters in consistent order 2017-11-19 11:34:03 +02:00
David Cernat
947b3f76be [Server] Replace Player's isMale() and setIsMale() with gender property
For simplicity and clarity.
2017-11-19 11:06:35 +02:00
David Cernat
80be664139 [Server] Fix skill-related script functions
Add getSkillIncrease() and setSkillIncrease() script functions to get and set the attribute bonuses received at the next level up as a result of skill increases.

Previously, getSkill() and setSkill() attempted to return and set the attribute bonuses, respectively. However, they mistakenly used a skill ID as a parameter for the attribute bonuses, when in fact npcStats.mSkillIncrease is an integer array of size 8 where the key stands for an attribute's ID. As a result, setSkill() had the unexpected side effect of messing up a player's major and minor skills because of the invalid values it was setting for npcStats.mSkillIncreases.
2017-11-18 10:02:52 +02:00
David Cernat
926106cf8c [General] Rework CharGen slightly for clarity purposes
Previously, charGenStage.end was doing double duty as both the variable indicating the number of CharGen stages and – when set to 0 – the variable indicating that CharGen was over. The latter role is now filled by a new boolean.
2017-11-13 05:33:27 +02:00
Koncord
dffd3bfa7d [Server] Add customData to Player
example:
counter = 0

Event.register(Events.ON_PLAYER_CONNECT, function(player)
    player.customData.counter = counter
    counter = counter + 1
    return true
end)

CommandController.registerCommand("test", function(player, args)
    player:message(player.customData.counter, false)
    return true
end, "")
2017-10-18 22:32:03 +08:00
Koncord
2d0840cb3a [General] Modernize Script API
This commit changes the style of tes3mp serverside scripting mods. Short list of changes:
* Break compatibility with old server mods
* OOP style lua API
* Basic dependency checker, allowing the installation of multiple server mods without changing configs
* Remove support for C++ plugins
* Change outdated LuaBridge to [sol2](https://github.com/ThePhD/sol2);
* Support GCC, Clang and MSVC compilers
* New environment variables: "TES3MP_SERVER_DIR" and "TES3MP_SERVER_USERDIR";
* New entity "Command controller" for registering new chat commands;
* New Event system
* Simplified Timer API
* All Lua mods now run in their own environments
* Add global namespace - Data that can be used for communicating between mods
* Player and Actor inherit base class NetActor
2017-08-28 00:15:56 +08:00
David Cernat
6dde0ca9c9 [Server] Rework script functons by removing unnecessary vector buffers
Add new initialization script functions to allow clearing all player changes vectors in a manner consistent with Actor and World functions

Add toOthers boolean to all methods that send packets with player changes vectors
2017-07-07 09:25:48 +03:00
David Cernat
71313c5aa6 [General] Implement PlayerMap packet, part 1 2017-07-03 09:28:27 +03:00
David Cernat
813a3c89c4 [General] Implement PlayerBook packet to track skill books read 2017-06-27 08:27:14 +03:00
David Cernat
70d9374a6a [General] Implement PlayerKillCount packets 2017-06-10 14:04:19 +03:00
David Cernat
dbdb11b5f0 [Server] Add script functions for dialogue 2017-05-24 23:22:43 +03:00
David Cernat
a2e2ca7cab [Server] Add script functions for factions 2017-05-18 20:56:50 +03:00
David Cernat
4d81455020 [General] Rework and simplify death reasons so they work with NPCs 2017-05-05 22:16:31 +03:00
David Cernat
234510a87f [Server] Split off Cell and CellController into two different files 2017-04-29 23:05:12 +03:00
David Cernat
0baada0aa2 [Server] Add GetLastPlayerId() script function in Miscellaneous category 2017-02-26 23:00:51 +02:00
Koncord
ec4d016100 [Server] Don't crash server every time a player disconnects. Again. 2017-02-20 20:44:01 +08:00
Koncord
f2ce46ffed [Server] Rename doForNearest to forEachLoaded 2017-02-19 21:32:25 +08:00
Koncord
ca68831395 [Server] Rename sendToNearest to sendToLoaded 2017-02-19 20:37:26 +08:00
Koncord
033472d939 [Server] Add doForNearest function 2017-02-19 17:42:39 +08:00
Koncord
b760015071 [Server] Send some packets only to nearest players 2017-02-19 16:46:42 +08:00
Koncord
8887a267c7 [Server] Add Cell and CellController 2017-02-19 13:27:10 +08:00
David Cernat
35e453dec3 [General] Sketch out most of functionality for journal saving/loading 2017-01-24 19:32:25 +02:00
David Cernat
d308897f95 Rename PacketItems, PacketSpells into InventoryChanges, SpellbookChanges 2017-01-20 12:43:05 +02:00
David Cernat
e7675d94d4 Make server script functions for spells consistent with those from items 2017-01-20 06:00:14 +02:00
David Cernat
33e85c54de Rename BasePlayer Inventory & Spellbook into PacketItems & PacketSpells
This avoids confusion when either of those is used to store and send a single item, and no longer requires coming up with confusing variable names like realSpellbook or realInventory for actual full spellbooks and inventories.
2017-01-19 18:06:59 +02:00
Koncord
7595b33461 Implement spellbook 2016-12-29 21:19:57 +08:00
David Cernat
c81b58e1be Add spell script functions to tes3mp server 2016-11-21 20:37:04 +02:00
Koncord
902e968fd9 Use RakNetGUID instead uint64_t in TPlayers 2016-11-17 13:12:06 +08:00
David Cernat
25dc2b19e7 Use lowerCamelCase in tes3mp server networking function names 2016-11-16 02:05:14 +02:00
David Cernat
eebe1f156a Change logic for death reasons so it makes sense 2016-10-30 13:19:48 +02:00
David Cernat
c91e240664 Simplify the type of map that player objects are stored in 2016-10-26 21:36:58 +03:00
David Cernat
a9f6ea4d8d Use the name "guid" for RakNet IDs so as to not confuse with int IDs 2016-10-26 15:55:34 +03:00
Koncord
c27351c19e Implement inventory functions
AddItem, RemoveItem, GetItemName, GetItemCount, GetItemHealth, GetInventorySize SendInventory
Example:
```lua
tes3mp.AddItem(pid, "glass dagger", 1, 50)
tes3mp.AddItem(pid, "glass dagger", 1, -1)
tes3mp.SendInventory(pid)
tes3mp.RemoveItem(pid, "glass dagger", 1)
tes3mp.SendInventory(pid)
local invSize = tes3mp.GetInventorySize(pid) - 1
for i = 0, invSize do
    print(("%s %d %d"):format(tes3mp.GetItemName(pid, i), tes3mp.GetItemCount(pid, i), tes3mp.GetItemHealth(pid, i)))
end
```
2016-10-23 02:57:49 +08:00
Koncord
79532cf797 Detecting reason of death 2016-10-08 15:15:43 +08:00
Koncord
24617589e4 Fix packet spam 2016-09-18 15:52:26 +08:00
Koncord
fe10821528 Add loaded/isLoaded to server player 2016-09-18 11:55:51 +08:00
David Cernat
cba01af683 Log player initialization on server 2016-08-19 01:32:39 +03:00
Koncord
1b259e2d33 Syncing inventory, animations, position, 8 key attributes
Created Package system
2016-07-07 23:50:48 +08:00