dracc / modular-vc-mp-server Goto Github PK
View Code? Open in Web Editor NEWA couple of scripts for a modular VC-MP (Vice City Multiplayer) server
A couple of scripts for a modular VC-MP (Vice City Multiplayer) server
Each module should probably present its own information using /commands
or /help
(maybe both?).
The messages must be fixed, they are currently broken.
The base scripts should also mention their own functions, such as /rules
.
We could have a king-of-the-hill script, with a moving hill (hill moving along roads, or even racetracks / uneven terrain where certain vehicles are beneficial).
The hill could move at driving speeds OR at walking speeds. This would force players to use different strategies (ram people out of zone OR attack people by shooting).
It would also avoid that players only camp near starfish island or downtown.
The path-nodes of the hill could also be used to respawn players nearby, to avoid long driving. As we'd need cars anyway, we could also spawn players next to those.
The car spawns could also be influenced by players spawn class (influence spawning of helicopter, bikes, offroad vehicles, secured vehicles or good weapons).
I have not seen this in VC-MP yet, and I think it could work pretty nicely.
Somehow it only has 220 alpha. This is a bug. It should be fully opaque.
(Maybe we can show player ramps as opaque, but other players ramps as transparent?)
Mall-Madness was a mode on littlewhiteys server in the VC-MP 0.1 days, and I remember playing it with the VC-MP developers / testers.
The concept is simple: a couple of spawn points in North-Point-Mall. Everyone has shotgun, uzi and molotov; - M60 and chainsaw can be obtained in the middle but only spawn rarely.
(.. or similar - it's not an exact science).
The Mall doors locked - no vehicles.
So this is a very fast paced and chaotic deathmatch mode. It avoids the problem of long travel and getting shot in seconds. Also you don't need ~20 people on a server for it to feel crowded.
In Mall-Madness there's people running all over the place even with as little as 4 players.
Dropping weapons is important for game balance + so you can see when a player is dead - in modern VC-MP you only know it for certain after a while.
As VC-MP 0.4 doesn't drop weapons anymore (unless I'm missing something) - we'll have to manually re-implement this probably. We can probably use the existing VC-MP pickup system as used here.
Even the kill message in chat only appears when the player is laying on ground - not when they are shot. So ideally we'll also have our own kill messages (and in the future we could move them to another chat-like window)
So we'll need:
(Possibly slightly more)
We should create the advertisement for bloodring / hotring / dirtring on the billboards near the stadium.
Even if these objects are not there, there'll be an invisible collision object.
Caused by the throw
:
The throw
was added because I didn't have my own error-printer (the existing lines were a concept for it, but I didn't feel like spending time to polish it).
Ideally we'd just make our own printer better, so we can avoid the throw. Then the event would continue even after a script couldn't handle it.
I think it would be cool to have a module to drop money for a deathmatch mode - possible even for Mall Madness (#13).
If we always dropped X % of the players cash around their body, and only added a small bit of cash on spawn, then we could force people to not use long-range weapons or cars when killing others.
Killing the better players would also be more rewarding as you can quickly get some money from them.
(The money would just be used for scoring purposes, not for buying things)
We should dofile
helper functions in the respective scripts or global context, so that the scripts are really re-usable (even without the loader).
This might be somewhat tricky for class functions like function CVehicle::GetRadiansAngle()
as all scripts use a shared context there.
Interiours should be banned, and so should the region above them. This will probably have to be done manually :(
We should give people the choice to play with modded cars.
We should probably check for the main-cars but also allow others in a separate scoreboard.
I assume this could be done using GetHandlingData
and manually checking the taxi-flag
We should have a way of logging the record and preserving it.
I often wonder how high other people got.
Until we have is-on-ground detection we can't do this because we'd just see a lot of log spam with many records.
It would be cool to have /last_height <username/id>
to see how high people got recently. Or maybe /best_height <username/id>
to see their personal best (which could also be printed).
We could also consider a /show_height <username/id>
which always displays the current height of a player somewhere in the HUD (as client script ideally).
In on of the scripts (I don't remember which one) we enable god-mode. We should also set Player.Immunity to 0x7F so that players are protected as good as possible.
It's not really an issue, but I believe I'v seen peoples health flicker in the past (as god-mode runs server-side).
I played on some racing sever and it had collisions between players disabled, so it must be possible somehow.
That could be helpful for our stunting scripts / freeroam.
Ideally, this would be a player command, where a player can choose to have collision or not (but I'm not sure if this is possible).
We should add a "/me" message. It's annoying that it's just getting dropped.
This should possibly go into a chat.nut, so we can extend it with other typical chat commands in the future. Alternative is to make it super modular and call it me.nut or something.
I assume that if someone is in a taxis passenger seat, then they can still do a taxi height record - this is stupid.
We should make sure that they are in VehicleSlot == 0
, so only the driver can get a record.
Can alternatively be solved by #15 and listing all existing bindings
(Also affects ramp.nut probably)
The script is really horrible. We should probably ditch it or rework it a lot.
For stunting it would be cool to be able to temporarily say: /spectate <id>
(or using the hotkey) if you want to see where someone currently is, while you are also spawned.
Ideally we'd also fix that the spectator is lagging behind when watching cars, but I'm not sure if this is possible.
I don't think there's any major benefit to how the script currently works (which is a half-assed spectator mode for non-spawned players), at least not if those lag-bugs in vehicles exist and if we primarily support freeroam / stunting. The spectator script currently also doesn't work with the auto_class.nut script.
emotes broke in #1; SetAnim
should take 2 arguments. SetAnim.acall(...)
would work, but we should manually unpack like SetAnim(a[0], a[1])
.
I'm not sure if this might be a feature of VC-MP already, but we should consider a key-binding script.
So /bind P v 191
would bind /v 191
to the P key.
This should be trivial to implement if we extend the script-loader so that scripts can inject their own commands.
We could then create default bindings by also manually injecting bind commands, which would make the overall system cleaner, as all keybinds would be located in one central script (although it might make context-sensitive key-reuse a lot harder).
For the official scoreboard we should probably add a rule that touching a custom object before the jump is not allowed.
This would allow to check for legit jumps that are also possible in single-player (with minor exceptions).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.