Recent posts

#1
Client Updates / Browser Update Released (2026-...
Last post by AdTec_224 - Sep 05, 2026, 07:26 PM
  • Fixed missing player info for servers with more than 75 players
  • Re-added 'Map Name' column
  • Removed UFT file system in favour of json (this will clear history and favourites)
  • Few other fixes I may have forgotten about :-X

Download:
Browser
#2
Server & Plugin Updates / Server Update Released (2026-0...
Last post by AdTec_224 - Sep 05, 2026, 07:16 PM
  • Fixed more potential crashes in 3rd party library

Server downloads:
Windows Server (x64)
Linux Server (x64)
#3
Script Showroom / Re: [SERVER SIDE] Basic Speedo...
Last post by MaZeNZoNA - Aug 29, 2026, 07:11 PM
Nice
#4
Servers / [VCHNS] Vice City Hide N' Seek...
Last post by [TDA]Sicario - Aug 22, 2026, 11:15 AM
IP Address: 51.38.205.167:12670
Version: VCHNS's BETA (006)
Script Authors: ScoTT.915 , Zer0neX , Tormentor
Player Slots: 100
Discord Link: https://discord.gg/XsjVw8Ur4q
Forum: None
#5
Object Showroom / [Objects] Dragonlord's Arena
Last post by Sparrow - Aug 20, 2026, 07:33 AM
Content Type: Object(s).
Original Author: Original Arena made by FromSoftware in ELDEN RING.
Source Link: Ripped from ELDEN RING.
Modifications: Converted to .dff, .txd, .col
Modified By: Me. (Sparrow)
Authorized By Original Author?: Couldn't get in touch with him.
Content Screenshots: https://imgchest.com/p/o24ae5noe7l

Additional Info
Size: 4.64 MB for low textures and 13.87 MB for high textures

Links
Low Texture: https://www.mediafire.com/file/az03k1txr0jfx1t/DragonlordArenaL_unp.7z/file
High Texture: https://www.mediafire.com/file/ep35uth4ldg9rsu/DragonlordArenaHI_unp.7z/file


Server-side Info

objects.xml:
<object id="0">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_Center.col" />
<model path="PA_Center.dff" distance="2000" />
</object>
<object id="1">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_FirstCircle.col" />
<model path="PA_FirstCircle.dff" distance="2000" />
</object>
<object id="2">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_SmallPillar.col" />
<model path="PA_SmallPillar.dff" distance="2000" />
</object>
<object id="3">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_SecondCircle.col" />
<model path="PA_SecondCircle.dff" distance="2000" />
</object>
<object id="4">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_ThirdCircle.col" />
<model path="PA_ThirdCircle.dff" distance="2000" />
</object>
<object id="5">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_FourthCircle.col" />
<model path="PA_FourthCircle.dff" distance="2000" />
</object>
<object id="6">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision type="none" />
<model path="PA_FourthCircleSK.dff" distance="2000" />
</object>
<object id="7">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_FifthCircle.col" />
<model path="PA_FifthCircle.dff" distance="2000" />
</object>
<object id="8">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_Wall.col" />
<model path="PA_Wall.dff" distance="2000" />
</object>
<object id="9">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision type="none" />
<model path="PA_WallSK.dff" distance="2000" />
</object>
<object id="10">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_MidPillar.col" />
<model path="PA_MidPillar.dff" distance="2000" />
</object>
<object id="11">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_BigPillarPt1.col" />
<model path="PA_BigPillarPt1.dff" distance="2000" />
</object>
<object id="12">
<flags value="0" />
<texture path="PlacidusaxArena.txd" />
<collision path="PA_BigPillarPt2.col" />
<model path="PA_BigPillarPt2.dff" distance="2000" />
</object>
<object id="13">
<flags value="0" />
<texture path="Skybox.txd" />
<collision path="Skybox.col" />
<model path="Skybox.dff" distance="4000" />
</object>


Function to create the Arena:
function DragonlordArena()
{
local Arena_pos = Vector(-460.45, 1056.87, 500);

/* Rotation Angle Function */
function RotationAngle(Angle)
{
try
{
return 3.1415926535897932384626433832795*Angle/180;
}
catch (e)
return null;
}

/* Center */
CreateObject(6000, 1, Arena_pos, 255);
/* First Circle: Rotate by 30 degrees. */
for (local i = 1; i <= 360/30; i++)
{
CreateObject(6001, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(30)*i), 0);
}
/* Small Pillar, 2nd, 3rd, 4th, 5th Circles/SK: Rotate by 15 degrees. */
for (local i = 1; i <= 360/15; i++)
{
CreateObject(6002, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
CreateObject(6003, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
CreateObject(6004, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
CreateObject(6005, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
CreateObject(6006, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
CreateObject(6007, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(15)*i), 0);
}
/* Wall, WallSK, BigPillar Pt1/Pt2: Rotate by 18 degrees. */
for (local i = 1; i <= 360/18; i++)
{
CreateObject(6008, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6009, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6011, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6012, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6012, 1, Vector(Arena_pos.x, Arena_pos.y, Arena_pos.z +16.08), 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6012, 1, Vector(Arena_pos.x, Arena_pos.y, Arena_pos.z +32.16), 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
CreateObject(6012, 1, Vector(Arena_pos.x, Arena_pos.y, Arena_pos.z +48.24), 255).RotateToEuler(Vector(0, 0, RotationAngle(18)*i), 0);
}
/* Mid Pillar: Rotate by 6 degrees. */
for (local i = 1; i <= 360/6; i++)
{
CreateObject(6010, 1, Arena_pos, 255).RotateToEuler(Vector(0, 0, RotationAngle(6)*i), 0);
}
/* Skybox */
CreateObject(6013, 1, Arena_pos, 255);
}

Notes:
- Function is needed since each object/dff is only a part of the whole arena. DragonlordArena() iterates those objects to form a full circle. Think of it as a pizza slice before the function and a whole pizza after the function.
- To change the arena's location, change the coordinates in this line: local Arena_pos = Vector(-460.45, 1056.87, 500);
#6
Clans and Families / Kingdom OF Combat & Chaos [Kc3...
Last post by Hezekiah - Aug 19, 2026, 05:54 PM
Clan: Kingdom of Combat & Chaos
Clan Admin: [Kc3]Kronexus , =Kc3=ZoNAxGaMeR
Forum: only discord
IRC/Discord: https://discord.gg/7EqT5rc6QS
Tags: [Kc3] =Kc3= Kc3.
Members: =Kc3=Torqu1Ment , =Kc3=FReeZe , =Kc3=SilentHex , [Kc3]Tuiop , [Kc3]Auxo^ , [Kc3]Hima , =Kc3=MandoreX , [Kc3]ScoTT.915 , =Kc3=Blood , =Kc3=Turbo , [Kc3]KazZ
#7
Support / VERIFY US
Last post by [TDA]Sicario - Aug 19, 2026, 11:23 AM
VERIFY US IN DISCORD WTF
#8
Support / Re: Showing Speedometer
Last post by Gulk - Aug 11, 2026, 12:14 PM
Take a look in vcmp install location debuglog.txt for errors.
#9
General Discussion / Re: Request for an option to e...
Last post by Gulk - Aug 11, 2026, 12:06 PM
@lamkotien if you want this sync, use rel006 server.
#10
Support / Showing Speedometer
Last post by LamFloGaming - Aug 09, 2026, 08:35 AM
Hello! It me again.
Today, I found this store on 1 public server Store folder of Rockstar Experience Sprite and this script in script folder:
local g_LocalVehicle = null;
local g_SpeedTableLerpTime = 0.2;
local g_ZeroVector = VectorScreen(0, 0);
local g_FullColour = Colour(255, 255, 255, 255);

local g_StatsLabel = null;
local g_StatsLabelShadow = null; 
local g_StatsBg = null;
local g_DefaultColour = Colour(255, 255, 255, 255);
local g_SpeedHint = null;
sX <- GUI.GetScreenSize().X;
sY <- GUI.GetScreenSize().Y;

local sprite_logo, label_name;

function CenterStatsLabels() {
    if (g_StatsLabel) {
        local pos = VectorScreen(10, sY - 30);
        g_StatsLabel.Pos = pos;
        if (g_StatsLabelShadow) {
            g_StatsLabelShadow.Pos = VectorScreen(10 + 1, sY - 30 + 1);
        }
    }
}

function Script::ScriptLoad() {
    g_StatsLabelShadow = GUILabel(VectorScreen(11, 11), Colour(0, 0, 0, 255), "Loading stats...");
    g_StatsLabelShadow.FontSize = 14;
    g_StatsLabelShadow.FontFlags = GUI_FFLAG_BOLD;
    g_StatsLabel = GUILabel(VectorScreen(10, 10), g_DefaultColour, "Loading stats...");
    g_StatsLabel.FontSize = 14;                       
    g_StatsLabel.FontFlags = GUI_FFLAG_BOLD;         
    g_StatsLabel.TextColour = Colour(224,255,255);

    CenterStatsLabels();
}

function Script::ScriptProcess() { 
    CheckAndUpdateVehicleTableProc();
}

function GUI::GameResize(width, height) {
    sX = width;
    sY = height;
    CheckAndUpdateVehicleTableUI();
    CenterStatsLabels();
}

function Server::ServerData(stream) {
    local cmd = stream.ReadString();

    switch (cmd) {
        case "stats":
            local kills = stream.ReadInt();
            local deaths = stream.ReadInt();
            local gwWins = stream.ReadInt();
            local headshots = stream.ReadInt();
            local duelWins = stream.ReadInt();
            if (g_StatsLabel) {
                local newText = format(
                    "Kills: %d   Deaths: %d   Gangwar Wins: %d   Headshots: %d   Duel Wins: %d",
                    kills, deaths, gwWins, headshots, duelWins
                );
                g_StatsLabel.Text = newText;
                if (g_StatsLabelShadow) g_StatsLabelShadow.Text = newText;
                CenterStatsLabels();
            }
            break;

        case "onPlayerEnterVehicle":
            g_LocalVehicle = World.FindVehicle(stream.ReadInt());
            CreateSpeedTableElements();
            break;

        case "onPlayerExitVehicle":
            g_LocalVehicle = null;
            RemoveSpeedTableElements();
            break;
    }
}

SpeedTableElement <- {
    Ring = null
    Needle = null
}

function CreateSpeedTableElements(posX = 25, posY = 25) {
    SpeedTableElement.Ring = GUISprite("Ring.png", g_ZeroVector, g_FullColour);
    SpeedTableElement.Needle = GUISprite("Needle.png", VectorScreen(posX, posY), g_FullColour);
    SpeedTableElement.Ring.AddChild(SpeedTableElement.Needle);
    SpeedTableElement.Needle.Pos = g_ZeroVector;
    local tempScale = SpeedTableElement.Ring.Size;
    SpeedTableElement.Needle.RotationCentre = VectorScreen(tempScale.X / 2, tempScale.Y / 2);
    g_SpeedHint = GUILabel(VectorScreen(0,0), Colour(255,255,255,255), "Booster: G \n Stop: H");
    g_SpeedHint.FontSize = 13.5;
    g_SpeedHint.TextAlignment = GUI_ALIGN_CENTER;
    CheckAndUpdateVehicleTableUI();
}

function RemoveSpeedTableElements() {
    SpeedTableElement.Ring = null;
    SpeedTableElement.Needle = null;
    if (g_SpeedHint) g_SpeedHint = null;
}

function CheckAndUpdateVehicleTableProc() {
    if (g_LocalVehicle) {
        local speedMagnitude = sqrt(
            g_LocalVehicle.Speed.X * g_LocalVehicle.Speed.X +
            g_LocalVehicle.Speed.Y * g_LocalVehicle.Speed.Y +
            g_LocalVehicle.Speed.Z * g_LocalVehicle.Speed.Z
        );
        if (SpeedTableElement.Ring) {
            SpeedTableElement.Needle.Rotation = Lerp(SpeedTableElement.Needle.Rotation,
                                                     speedMagnitude * 100,
                                                     g_SpeedTableLerpTime);
        }
    }
}

function CheckAndUpdateVehicleTableUI() {
    if (!SpeedTableElement.Ring) return;

    local tempScale = SpeedTableElement.Ring.Size;
    local width = GUI.GetScreenSize().X;
    local height = GUI.GetScreenSize().Y;
    SpeedTableElement.Ring.Pos = VectorScreen((width - tempScale.X) - 25, (height - tempScale.Y) - 25);

    if (g_SpeedHint) {
        local ringPos = SpeedTableElement.Ring.Pos;
        local hintWidth = g_SpeedHint.Size.X;
        local hintHeight = g_SpeedHint.Size.Y;
        local hintX = ringPos.X + (tempScale.X / 2) - (hintWidth / 2);
        local hintY = ringPos.Y - hintHeight - 5;
        g_SpeedHint.Pos = VectorScreen(hintX, hintY);
    }
}

function Lerp(a, b, t) {
    return a + (b - a) * t;
}
And I want to bring the speedometer from this to my server (no need speed hint and stat text). But, I try copy and paste, editing the code but not bring me a answer (doesnt work).
I wish everyone help me!!!
My code:
main.nut in server side:
function onPlayerEnterVehicle( player, vehicle, door )
{
local stream = Stream();
    stream.WriteInt(1);
    stream.WriteString(vehicle.ID.tostring());
    stream.SendStream(player);

local vehID = vehicle.ID;
local vehName = GetVehicleNameFromModel( vehicle.Model );
local vehHealth = vehicle.Health;
ClientMessage("Phuong tien dang lai co ten: " + vehName + " [ID: " + vehID + "] Hien tai xe nay dang co: " + vehHealth + " mau", player, 255, 255, 255);
}

function onPlayerExitVehicle( player, vehicle )
{
local stream = Stream();
    stream.WriteInt(2);
    stream.SendStream(player);

}
and the begin the file:
function SendDataToClient( player, ... )
{
    if( vargv.len() > 0 && vargv[0] )
    {
        local byte = vargv[0],
              len  = vargv.len();

        if( 1 > len ) Message( "ToClient <" + byte + "> No params specified." );
        else
        {
            Stream.StartWrite();
            Stream.WriteByte( byte );

            for( local i = 1; i < len; i++ )
            {
                switch( typeof( vargv[i] ) )
                {
                    case "integer": Stream.WriteInt( vargv[i] ); break;
                    case "string":  Stream.WriteString( vargv[i] ); break;
                    case "float":   Stream.WriteFloat( vargv[i] ); break;
                    case "bool":    Stream.WriteBool( vargv[i] ); break;
                }
            }

            if( player == null ) Stream.SendStream( null );
            else if( typeof( player ) == "instance" ) Stream.SendStream( player );
            else Message( "ToClient <" + byte + "> Player is not online." );
        }
    }
}

// B?ng Byte đ?nh danh
enum StreamType {
    Speedo = 0x01
}

main.nut in client side:
local g_LocalVehicle = null;
local g_SpeedTableLerpTime = 0.2;
local g_ZeroVector = VectorScreen(0, 0);
local g_FullColour = Colour(255, 255, 255, 255);
local g_SpeedHint = null;

sX <- GUI.GetScreenSize().X;
sY <- GUI.GetScreenSize().Y;

function Script::ScriptLoad() {
    Console.Print("[CLIENT] Loaded ClientSide Successfully!!!");
}

function Script::ScriptProcess() { 
    CheckAndUpdateVehicleTableProc();
}

function GUI::GameResize(width, height) {
    sX = width;
    sY = height;
    CheckAndUpdateVehicleTableUI(); // Đã xóa CenterStatsLabels() bị lỗi!
}

function Server::ServerData(stream) {
    local packetID = stream.ReadInt();

    switch (packetID) {
        case 1: // Lên xe
            local vehID_str = stream.ReadString();
            local vehID = vehID_str.tointeger();
           
            g_LocalVehicle <- World.FindVehicle(vehID);
            CreateSpeedTableElements();
            break;

        case 2: // Xuống xe
            g_LocalVehicle = null;
            RemoveSpeedTableElements();
            break;
    }
}

SpeedTableElement <- {
    Ring = null,
    Needle = null
}

function CreateSpeedTableElements(posX = 25, posY = 25) {
    try {
        SpeedTableElement.Ring = GUISprite("sprites/Ring.png", g_ZeroVector, g_FullColour);
        SpeedTableElement.Needle = GUISprite("sprites/Needle.png", VectorScreen(posX, posY), g_FullColour);
       
        SpeedTableElement.Ring.AddChild(SpeedTableElement.Needle);
        SpeedTableElement.Needle.Pos = g_ZeroVector;
       
        local tempScale = SpeedTableElement.Ring.Size;
        SpeedTableElement.Needle.RotationCentre = VectorScreen(tempScale.X / 2, tempScale.Y / 2);
       
        g_SpeedHint = GUILabel(VectorScreen(0,0), Colour(255,255,255,255), "Booster: G \n Stop: H");
        g_SpeedHint.FontSize = 13.5;
        g_SpeedHint.TextAlignment = GUI_ALIGN_CENTER;
       
        CheckAndUpdateVehicleTableUI();
        Console.Print("[SPEEDO] Dong ho Speedometer da load thanh cong!");
    }
    catch(err) {
        Console.Print("[SPEEDO ERROR] -> " + err);
    }
}

function RemoveSpeedTableElements() {
    SpeedTableElement.Ring = null;
    SpeedTableElement.Needle = null;
    if (g_SpeedHint) g_SpeedHint = null;
}

function CheckAndUpdateVehicleTableProc() {
    if (g_LocalVehicle) {
        local speedMagnitude = sqrt(
            g_LocalVehicle.Speed.X * g_LocalVehicle.Speed.X +
            g_LocalVehicle.Speed.Y * g_LocalVehicle.Speed.Y +
            g_LocalVehicle.Speed.Z * g_LocalVehicle.Speed.Z
        );
        if (SpeedTableElement.Ring && SpeedTableElement.Needle) {
            SpeedTableElement.Needle.Rotation = Lerp(SpeedTableElement.Needle.Rotation,
                                                     speedMagnitude * 100,
                                                     g_SpeedTableLerpTime);
        }
    }
}

function CheckAndUpdateVehicleTableUI() {
    if (!SpeedTableElement.Ring) return;

    local tempScale = SpeedTableElement.Ring.Size;
    local width = GUI.GetScreenSize().X;
    local height = GUI.GetScreenSize().Y;
    SpeedTableElement.Ring.Pos = VectorScreen((width - tempScale.X) - 25, (height - tempScale.Y) - 25);

    if (g_SpeedHint) {
        local ringPos = SpeedTableElement.Ring.Pos;
        local hintWidth = g_SpeedHint.Size.X;
        local hintHeight = g_SpeedHint.Size.Y;
        local hintX = ringPos.X + (tempScale.X / 2) - (hintWidth / 2);
        local hintY = ringPos.Y - hintHeight - 5;
        g_SpeedHint.Pos = VectorScreen(hintX, hintY);
    }
}

function Lerp(a, b, t) {
    return a + (b - a) * t;
}

my sprites folder have: Needle.png and Ring.png