Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - DizzasTeR

#1
Description
When setting complete immunity (0x255) the player gets damage from fire weapons (molotov, flamethrower)

Reproducible
Always

What you were doing when the bug happened
Using fire weapons on a player having 0x255 immunity

What you think caused the bug
Immunity flags were fixed in one of the last few updates, however this issue went under the radar, don't recall this being a problem before I think (before headshot immunity was fixed)
#2
Community Plugins / Lua Plugin
Nov 05, 2020, 12:53 PM
Here's a Lua plugin for VCMP. It lets you script in Lua (No sh!t Sherlock :o) Also because python sucks kekw @Shad

https://github.com/DizzasTeR/VCMP-Lua

Downloads are available in the release section over at GitHub

Features:
  • Complete API coverage
  • Async features for database operations
  • Multiple utility libraries (Json, web requests, etc)
  • The power of Lua modules
  • Better API
  • Developer friendly

Blank Script (Lua Version): https://github.com/DizzasTeR/VCMP-Lua/wiki/Blank-Script

Important: You need OpenSSL (F**K MySQL and everything related to it): https://slproweb.com/products/Win32OpenSSL.html OR Just place the two DLLs available with plugin download and place them in server directory

If you are going to try this out, I've written a README on GitHub which you should totally check out. I've also written as much wiki on github as I could and its written enough to let anyone be able to do stuff.

Note: Please know that I may have missed some functions of VCMP, if someone is actually going to use this and you come across a functionality that doesn't exist, let me know I can try looking into it.

:edit: You CAN set up LuaRocks or LuaDist to use third-party pre-made lua libraries but I didn't really test them, so if you are really into Lua, you may try that.
#3
Easily send data from server to client(s) or from client to server. Without having to use a thousand "Stream Types" or using stupid concatenations of strings and splitting.

This can work for official plugin as well but you will have to do some necessary editing (which is a few lines, I might look into that and do it myself later perhaps)

Use it carefully, it COULD have issues, I did as much thorough testing as I could, but still.

Supports:
- Simple data types (integers, strings, bool, null)
- Static arrays (These are arrays made via local myVar = [];)
- Tables

— Server module
Attachment file: SqClient
Provides function: SendClientData( [Array of players to send it to, empty array = send to all], param1, param2, ... );

Load this file from sqmod.ini
Note: You need to have this function somewhere defined, from this you can extract data, and even setup custom signal calls
function onServerReceiveClientData(player, ...) {
local data = vargv;
SqLog.Inf("onServerReceiveClientData");
}

— Client module
Attachment file: DClientData.nut
Provides function: SendServerData( param1, param2, ... );

Load this file as first from every other client file (Thats how I did my testings) — include("DClientData.nut");

Note: Make sure you setup a stream type like this for the magic to happen:
function Server::ServerData( stream )
{
    // here you receive the data you send from server
    local streamType = stream.ReadInt();
    switch( streamType )
    {
        case 0x64697a7a:
        {
onClientDecodeData(stream);
        }
        break;
    }
}

Note: Make sure you have this function defined somewhere in client side:
function onClientReceiveData(...) {
}

— Usage

Server:
SqCore.On().PlayerSpawn.Connect(function(player, ...) {
local Table = {
DizzasTeR = "IQ 900",
IQ = 900,
Abuse = ["This is too much"]
};
local Array = [Table, "Client System", "Swag Level", 9000];
SendClientData([player], "Request", "Advanced", 100, Array);
});

function onServerReceiveClientData(player, ...) {
local data = vargv;
// Going through the data array and extracting data
}

Client
function onClientReceiveData(...) {
local param1 = vargv[0];
local ResponseTable = {
Message = "Sending data to server!",
MyCode = 1
}
if(param1 == "Request") {
SendServerData("Response", ResponseTable);
}
}

In Action



("Request" + "Advanced" + 100 + Array = 4 elements)


("Response" + ResponseTable = 2 elements)

P.S: That stream type number is not random :D
#4
A basic implementation of vanilla based spawn selection.

NOTE: THIS APPLIES TO ALL SERVERS. WHETHER THEY ARE USING OFFICIAL SERVER PLUGIN, SQMOD OR ANYTHING ELSE AS FAR AS I KNOW
Fixed in later server updates.

— Why?
People on our unofficial VCMP Discord figured out (specifically @aXXo) that by just staying at the skin/spawn selection screen for a few minutes, will make VCMP server start leaking memory, which will start lagging and eventually just crash the server.

— How to solve it?
The solution is to not let players stay at skin selection for too long. Some servers perform various things at Request class and Request spawn events, therefore its not a solution for them to just force spawn player all the time, one alternative is to make your own spawn selection.

You can place this code inside a spawnselector.nut file and just load it from sqmod.ini as Compile

[noae][noae][noae][noae][noae][noae]__SPAWN_SELECTOR_STATICS__ <- {
    SPAWN_SELECTION_ID = -1,
    CLASS_ID = 0,
    PLAYER_LAST_USED_CLASS = {}
};

class SpawnSelector {
    static PlayerRequestClass = SqCreateSignal("PlayerRequestClass");
    static PlayerRequestSpawn = SqCreateSignal("PlayerRequestSpawn");
    static PlayerSpawn        = SqCreateSignal("PlayerSpawn");

    static SPAWN_SELECTION_KEYS = {
        ARROW_LEFT  = SqKeybind.Create(true, 0x25, 0, 0),
        ARROW_RIGHT = SqKeybind.Create(true, 0x27, 0, 0),

        SELECTION_CTRL  = SqKeybind.Create(true, 0x11, 0, 0),
        SELECTION_NUM0  = SqKeybind.Create(true, 0x60, 0, 0),
        SELECTION_LMB   = SqKeybind.Create(true, 0x01, 0, 0)
    };

    ID      = null;
    Camera  = null;
    Classes = null;
    Players = null;

    constructor(cameraData = null) {
        ::__SPAWN_SELECTOR_STATICS__.SPAWN_SELECTION_ID++;
        ID = ::__SPAWN_SELECTOR_STATICS__.SPAWN_SELECTION_ID;

        Camera = {
            position        = ::Vector3(694.918, -652.151, 12.1429),
            lookAt          = ::Vector3(687.879, -652.088, 12.08),
            playerPosition  = ::Vector3(687.879, -652.088, 12.08)
        }

        Classes = [];
        Players = {};

        if(cameraData)
            SetCameraData(cameraData.position, cameraData.lookAt, cameraData.playerPosition);
    }

    /*** Camera ***/

    function SetCameraData(position, lookAt, playerPosition) {
        SetCameraPosition(position);
        SetCameraLookAt(lookAt);
        SetCameraPlayerPosition(playerPosition);
    }

    function SetCameraPosition(position) {
        Camera.position = position;
    }

    function SetCameraLookAt(lookAt) {
        Camera.lookAt = lookAt;
    }

    function SetCameraPlayerPosition(position) {
        Camera.playerPosition = position;
    }

    /***
        Methods
    ***/

    /*** Player ***/

    function AddPlayer(player, forceSetClass = 0) {
        if(Classes.len() == 0)
            throw("Class selector has no classes");

        if(!IsActiveForPlayer(player)) {
            Players[player.ID] <- SpawnSelectorPlayer(player, Classes[forceSetClass]);
            player.SetOption(::getconsttable().SqPlayerOption.Controllable, false);
           
            player.World = player.UniqueWorld;
            player.Pos = Camera.playerPosition;
            player.CameraPosition(Camera.position.x, Camera.position.y, Camera.position.z, Camera.lookAt.x, Camera.lookAt.y, Camera.lookAt.z);
        }
    }

    function RemovePlayer(player) {
        if(IsActiveForPlayer(player)) {
            Players.rawget(player.ID).destroy();
            Players.rawdelete(player.ID);
            player.SetOption(::getconsttable().SqPlayerOption.Controllable, true);
            player.World = 1;
        }
    }

    function IsActiveForPlayer(player) {
        return Players.rawin(player.ID);
    }

    function RequestSpawn(player) {
        if(IsActiveForPlayer(player)) {
            if(!PlayerRequestSpawn.Consume(player, Players.rawget(player.ID)))
                return false;
            SpawnPlayer(player);
        }
    }

    function SpawnPlayer(player) {
        local classID = Players.rawget(player.ID).ClassID;
        Classes[classID].Apply(player);
        RemovePlayer(player);
        PlayerSpawn.Consume(player);
        ::__SPAWN_SELECTOR_STATICS__.PLAYER_LAST_USED_CLASS.rawset(player.ID, classID);
    }

    /*** Class ***/

    function AddClass(team, color, skin, pos, angle, wep1, ammo1, wep2, ammo2, wep3, ammo3) {
        Classes.push(::SpawnSelectorClass(team, color, skin, pos, angle, wep1, ammo1, wep2, ammo2, wep3, ammo3));
    }

    function DisplayNextClass(player) {
        if(Players.rawin(player.ID)) {
            local playerSelectorInstance = Players.rawget(player.ID);
            local nextClassID = playerSelectorInstance.ClassID + 1;
            if(nextClassID >= Classes.len())
                nextClassID = 0;

            playerSelectorInstance.DisplayClass(Classes[nextClassID]);
        }
    }

    function DisplayPreviousClass(player) {
         if(Players.rawin(player.ID)) {
            local playerSelectorInstance = Players.rawget(player.ID);
            local previousClassID = playerSelectorInstance.ClassID - 1;
            if(previousClassID < 0)
                previousClassID = Classes.len()-1;

            playerSelectorInstance.DisplayClass(Classes[previousClassID]);
        }
    }
}

class SpawnSelectorClass {
    ID      = null;
    Team    = null;
    Color   = null;
    Skin    = null;
    Pos     = null;
    Angle   = null;
    Wep1    = null;
    Wep2    = null;
    Wep3    = null;
    Ammo1   = null;
    Ammo2   = null;
    Ammo3   = null;

    constructor(team, color, skin, pos, angle, wep1, ammo1, wep2, ammo2, wep3, ammo3) {
        ID      = ::__SPAWN_SELECTOR_STATICS__.CLASS_ID;
        Team    = team;
        Color   = color;
        Skin    = skin;
        Pos     = pos;
        Angle   = angle;
        Wep1    = wep1;
        Wep2    = wep2;
        Wep3    = wep3;
        Ammo1   = ammo1;
        Ammo2   = ammo2;
        Ammo3   = ammo3;

        ::__SPAWN_SELECTOR_STATICS__.CLASS_ID++;
    }

    function Apply(player) {
        player.Skin     = Skin;
        player.Team     = Team;
        player.Color    = Color;

        player.StripWeapons();
        player.SetWeapon(Wep1, Ammo1);
        player.SetWeapon(Wep2, Ammo2);
        player.SetWeapon(Wep3, Ammo3);

        player.Pos = Pos;
        player.Angle = Angle;
       
        player.RestoreCamera();
    }
}

class SpawnSelectorPlayer {
    Player  = null;
    ClassID = null;

    constructor(playerInstance, classInstance = null) {
        Player = playerInstance;
        if(classInstance)
            DisplayClass(classInstance);       
    }

    function destroy() {
        Player  = null;
        ClassID = null;
    }

    function DisplayClass(classInstance) {
        ClassID = classInstance.ID;
       
        Player.Skin = classInstance.Skin;
        Player.Team = classInstance.Team;
        Player.Color = classInstance.Color;
        Player.StripWeapons();
        Player.SetWeapon(classInstance.Wep1, classInstance.Ammo1); // We just need to display the first weapon only for now

        ::SpawnSelector.PlayerRequestClass.Consume(Player, classInstance);
    }
}
[/noae][/noae][/noae][/noae][/noae]

— Usage:
[noae][noae][noae]SqCore.On().ScriptLoaded.Connect(this, function() {
    CustomSpawnSelection <- SpawnSelector();
    CustomSpawnSelection.AddClass(1, Color3( 100, 126, 255 ), 62, ::Vector3(0, 0, 10), 1, 20, 999, 9, 250, 18, 500);
    CustomSpawnSelection.AddClass(2, Color3( 255, 255, 0 ), 61, ::Vector3(0, 0, 10), 1, 20, 999, 9, 250, 18, 500);
});

SqCore.On().PlayerRequestClass.Connect(this, function(player, ...) {
    player.Spawn();
});

SqCore.On().PlayerSpawn.Connect(this, function(player) {
    local lastClassID = (__SPAWN_SELECTOR_STATICS__.PLAYER_LAST_USED_CLASS.rawin(player.ID) ? __SPAWN_SELECTOR_STATICS__.PLAYER_LAST_USED_CLASS.rawget(player.ID) : 0);
    CustomSpawnSelection.AddPlayer(player, lastClassID);
});

SqCore.On().PlayerKeyPress.Connect(this, function(player, key) {
    if(CustomSpawnSelection.IsActiveForPlayer(player)) {
        switch(key) {
            case SpawnSelector.SPAWN_SELECTION_KEYS.SELECTION_CTRL:
            case SpawnSelector.SPAWN_SELECTION_KEYS.SELECTION_LMB:
            case SpawnSelector.SPAWN_SELECTION_KEYS.SELECTION_NUM0:
                CustomSpawnSelection.RequestSpawn(player);
            break;

            case SpawnSelector.SPAWN_SELECTION_KEYS.ARROW_LEFT:
                CustomSpawnSelection.DisplayNextClass(player);
            break;

            case SpawnSelector.SPAWN_SELECTION_KEYS.ARROW_RIGHT:
                CustomSpawnSelection.DisplayPreviousClass(player);
            break;
        }
    }
});

function SpawnSelector_DiscardPlayer(...) {
    if(CustomSpawnSelection.IsActiveForPlayer(vargv[0])) {
        CustomSpawnSelection.RemovePlayer(vargv[0]);
    }

   if(vargv.len() == 3) { // PlayerDestroyed
        __SPAWN_SELECTOR_STATICS__.PLAYER_LAST_USED_CLASS.rawdelete(vargv[0].ID);
    }
}

SqCore.On().PlayerKilled.Connect(SpawnSelector_DiscardPlayer);
SqCore.On().PlayerWasted.Connect(SpawnSelector_DiscardPlayer);
SqCore.On().PlayerDestroyed.Connect(SpawnSelector_DiscardPlayer);
[/noae][/noae][/noae]

— Methods:
  • SpawnSelector::Constructor(optional: Camera Data); — Camera Data is a table: {position = Vector3(...), lookAt = Vector3(...), playerPosition = Vector3(...)}
  • SpawnSelector::SetCameraPosition(Vector3 position)
  • SpawnSelector::SetCameraLookAt(Vector3 lookAt)
  • SpawnSelector::SetCameraPlayerPosition(Vector3 playerPosition)
  • SpawnSelector::AddClass(...); — Follows the same parameters as the SqMod default

These are the custom signals that you can use with this
[noae][noae][noae][noae][noae]/***
    Signals
***/

SqSignal("PlayerRequestClass").Connect(function(player, classInstance) {
    printf("PlayerRequestClass: %d", classInstance.ID);
});

SqSignal("PlayerRequestSpawn").Connect(function(player, classInstance) {
    /***
        return true — Stop the handler execution here, Don't execute any later connected handlers to this signal
        return false — Returns false to the .Consume(...) method, treat it similar to return 0 in official plugin
    ***/

    print("PlayerRequestSpawn");
    return true;
});

SqSignal("PlayerSpawn").Connect(function(player) {
    print("PlayerSpawn");
});
[/noae][/noae][/noae][/noae][/noae][/noae]

Forgive me if the code is ugly :P I just did it for a friend of mine cuz he was busy.
#5
Community Plugins / Discord
Mar 05, 2019, 05:39 AM
This is a discord plugin that I've made just to practice myself over C++ and ofcourse since IRC is a dead meme at this point as well it was cool to have a nice VCMP server-discord communication system.

There is a Read Me file that has instructions and explains the config settings. I'll put the Read Me here as well for quick look:
IMPORTANT NOTE: Its significantly better to load the Discord plugin first in the plugin list, even before squirrel plugin

* Place DDiscord.dll inside your plugins folder
* Place all DLLs in the dll zip file next to server.exe
* Place settings.json next to server.exe and configure as needed
* Enlist DDiscord in your server.cfg

-----------------------------------------------------------------------------------------------------------------------

* Plugin provided events:
- SQ_onDiscordConnect
- SQ_onDiscordServer
- SQ_onDiscordChannelMessage
- SQ_onDiscordQuit
- SQ_onDiscordDisconnect

* Plugin provided functions:
- Discord_SendMessage("Message")
- Discord_SendMesageToChannel(channel_id, "Message")
- Discord_SendMesageToChannelName("Channel-Name", "Message")
- Discord_SetStatus("New Status")

-----------------------------------------------------------------------------------------------------------------------

* Configure settings.json according to your needs, following is explanation for each setting:

- prefix :: The prefix to use for commands, ! means commands start with ! for example: !bot
- token :: This is your bot token
- status :: Sets the status of the bot. Which is the "Currently playing ..." message.

- specialNicks :: If a user has special symbols which VCMP does not support ingame on chat, should these users be allowed to send messages ingame?
- specialMessages :: If a user's message has symbols that VCMP chat does not support, should they be blocked?

- defaultMode :: Toggles defaultMessages, defaultCommands and whether squirrel events are triggered or not.

- defaultMessages :: This plugin has the following events handled inside:
 -> onPlayerJoin
 -> onPlayerPart
 -> onPlayerDeath
 -> onPlayerKill
 -> onPlayerChat

if you want to manually handle these events with your own messages, you can set defaultMode to false and do it inside squirrel events.

- defaultCommands :: The plugin comes with a few built-in commands if defaultMode is ON:
 -> !say - Sends a message from discord to server
 -> !players - Displays the list of players ingame

- channels :: This is an array of channel IDs the plugin will load and send messages to when global messages are sent.

"channels" : [channel_id]

-> channel_id is the id of the channel to load, you can enable Developer Mode on discord, and then right click on channels to get their ID and palce them here.

- Multiple channels can be simply listed by a comma separation:
"channels" : [channel_1_id, channel_2_id]

# Note :: Its fair to just use 1 main channel to send messages to instead of multiple channels at multiple servers to avoid request flood.

This plugin is not the best! I made this personally for myself for very basic tasks like just simply logging out basic player join/quits, chats and kill logs. It was never meant to be very advanced. However I will prefer this any day over the current methods people are using (mysql queries to simulate server messages back and forth, ew!)

This plugin can be as easy as just download, place, config json and you have most of the simple stuff already done and handled, but if you want, you can disable the in-built ones and just do them all yourself squirrel side, both ways can serve.


  • Sample script:
- Functions:
Discord_SendMessage("message"); // Sends a message to all the channels listed in settings.json
Discord_SendMessageToChannel(channel_id, "message"); // Send message to the specific channel
Discord_SendMessageToChannelName("my-channel", "my message"); // Send message to all channels matching this name
Discord_SetStatus("Status"); // Set Bot's game status

- Events:
SQ_onDiscordConnect(string jsonFormattedData)
SQ_onDiscordServer(string jsonFormattedData)
SQ_onDiscordChannelMessage(int serverID, int channelID, int userID, string userName, string message)
SQ_onMemberEdit(string jsonFormattedData, string emptyStringForCompatibility)
SQ_onDiscordQuit()
SQ_onDiscordDisconnect()

- A sample script that implements a custom SQ_onDiscordCommand function/event
function SQ_onDiscordChannelMessage(serverID, channelID, userID, userName, message) {
if(message.slice(0, 1) == "!") {
local noprefixMessage = message.slice(1, message.len());
local str = split(noprefixMessage, " ");
local command = str[0];
local msg = null;
if(str.len() > 1) {
msg = "";
for(local i = 1; i < str.len(); i++) {
msg += str[i];
if(i < str.len()-1)
msg += " ";
}
}
SQ_onDiscordCommand(serverID, channelID, userID, userName, command, msg);
}
}

function SQ_onDiscordCommand(serverID, channelID, userID, username, cmd, msg) {
if(cmd == "t")
Discord_SendMessageToChannel(channelID, "test works");
}


  • Binaries
https://github.com/DizzasTeR/sleepy-discord-vcmp-client/releases

* Do read the release notes to be aware of any important changes to the plugin!

Install OpenSSL for Linux
sudo apt-get install libssl-dev

  • Thanks to
- @Kirollos - I learned how to handle squirrel vm and stacks from his RCON plugin
- @. (SLC) - Ofcourse this bad boy has to be everywhere, no surprise at all
- @Luckshya - Helped me in some API issues and used his CMake files to easily generate binaries for Linux
#6
Off-Topic General / VCMP v6.9 - Evolution!
Feb 16, 2018, 11:12 AM
Top leak 101 image totally valid proof from VCMP devs and pro peeps in response to psycho gypsies like http://forum.vc-mp.org/?topic=5557.msg36400



Honor to all the members who came and witnessed this evolutionary happening! List includes but is not limited to!:

- @Doom_Kill3R
- @maxorator
- @Shadow
- @SLC (@.)
- @Stormeus
- @KAKAN
- @Xmair
- @KP (@karan20000000000)

[spoiler=Copyright]No seriously, just stop bullshitting all around the forum, its dead but not completely dead for some people so maybe not do your shit while there's no mod/dev around[/spoiler]
#7
Some people and friends were having troubles coding one so I decided to take 3 mins challenge and test this out. Some conditions and logical stuff might be missing from commands but ofcourse its just a basic template to give an idea. It still works and it is tested ;)

g_Ignores <- {};

function onPlayerJoin( player ) {
g_Ignores.rawset( player.ID, {} );
}

function onPlayerPart( player, reason ) {
if( g_Ignores.rawin( player.ID ) ) {
g_Ignores.rawdelete( player.ID );
}
}

function onPlayerCommand( player, cmd, text ) {
if( cmd == "ignore" ) {
if( !text ) return MessagePlayer( "/ignore [ID/Name]", player );
local plr = ( !IsNum( text ) ? FindPlayer( text ) : FindPlayer( text.tointeger() ) );
if( !plr ) return MessagePlayer( "Invalid player", player );
else if( g_Ignores.rawget( player.ID ).rawin( plr.ID ) ) return MessagePlayer( format( "You are already ignoring %s", plr.Name ), player );
g_Ignores.rawget( player.ID ).rawset( plr.ID, true );
MessagePlayer( format( "You are not ignoring %s", plr.Name ), player );
}

else if( cmd == "unignore" ) {
if( !text ) return MessagePlayer( "/unignore [ID/Name]", player );
local plr = ( !IsNum( text ) ? FindPlayer( text ) : FindPlayer( text.tointeger() ) );
if( !plr ) return MessagePlayer( "Invalid player", player );
else if( !g_Ignores.rawget( player.ID ).rawin( plr.ID ) ) return MessagePlayer( format( "You are not ignoring %s", plr.Name ), player );
g_Ignores.rawget( player.ID ).rawdelete( plr.ID );
MessagePlayer( format( "You are no longer ignoring %s", plr.Name ), player );
}
}

function onPlayerChat( player, text ) {
local playerIgnores = g_Ignores.rawget( player.ID );
local MaxPlayers = GetMaxPlayers();
for( local i = 0; i <= MaxPlayers; i++ ) {
local plr = FindPlayer( i );
if( !plr ) continue;
local plrIgnores = g_Ignores.rawget( plr.ID );

if( playerIgnores.rawin( plr.ID ) ) continue;
else if( plrIgnores.rawin( player.ID ) ) continue;
MessagePlayer( format( "%s: %s", player.Name, text ), plr );
}
return 0; //You must halt the event itself to avoid double chats
}
#8
Hey, I created a discord server dedicated only to VCMP scripters, if you are willing, then feel free to jump in.

What's the purpose? The main purpose is to have professional VCMP scripters together, do discussions, help each other and do general talks and get to know each other in this small community.

Every scripter, new, average or expert is invited, whether he's good in VCMP's squirrel, web or programming in general. Please know that any person joining the channel who has nothing to do with VCMP programming and is not recognized as a proper scripter or atleast an average/starter will be kicked out and is not welcomed. In other words, those who are not scripters are not invited.

Join link: https://discord.gg/JMcXBa3
#9
[Insert immature bullshit from 2017 here]
#10
Bugs and Crashes / [CRASH] 00655835
May 31, 2017, 09:23 AM
Subject: [CRASH] 00655835

Reproducible: Not sure

What you were doing at the time of the crash: Driving around the map

What you think caused the crash: Custom stuff maybe? The first crash happened when I went from Downtown to Prawn Island and the loading screen appeared.

Are you using the Steam version? No

Crash Reports
Address: 00655835 error C0000005
EAX C47A0000 EBX 0000000E ECX 00001463 EDX 00000000
EBP 0C930DC0 ESP 0018FC68 ESI C47A0000 EDI 1DB63D48
Stack:
00000007
0066D9D1
C47A0000
0C930DA0
00717FF0
0068658C
00000000
0064D057
0C930DC0
25401668
00640F81
0C930DA0
0068658C
23183C88
0056F731
25401668
00008E1C
00698004
0000071B
0040D71A
00717FF0
0501D490
08F483C0
0040DD95
0000071B
000003E0
0018FCE4
08FC2B20
00746E98
00018380
08FC2B20
0040D996
000042A8
0070FA54
00000001
00000002
08F30040
0040E12A
00000002
00000000
FFFFFFFF
FFFFFF9C
00000003
C34E67E7
4486AE43
00000001
C34E67E7
00000000
0000001A
00000001
00000922
0040EEBD
00000000
00000000
00000000
00000000
000000FF
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
770A88CD
00000001
0000000C
0000000C
0018FD94
004D0E0C
0018FD88
ADCE90FB
00000002
00000000
00000922
004A44A1
006DE5AC
00000001
004A5DA5
00000000
000000E6
000000C8
00000003
3F3340CD
7EFDB800
3F3340CD
0018FDF0
006DE5AC
0000001A
00000001
00000001
004A5BE5
00000001
00813D20
00000064
0000000A
00602EF1
0000001A
00000001
00C56BF8
00813D20
006004A7
0000001A
00000001
0018FE20
45122000
00009837
00000000
0066A12D
00000000
00000113
00007C96
21112B30
004B13B0
00000550
0000028F
44200000
43960000
0000000A
00000008
00000102
00000008
00000100
00000000
00000000
00000500
00000258
0000002C
00000000
00000001
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
00000096
00000096
000005A6
00000328
01010101
00000001
00000000
00000000
00002000
006010B0
00000000
00000000
00400000
00120319
00010003
00000000
00000000
006D5A00
FFFFFFF8
FFFFFFE2
00000288
000001C8
0018FF88
00000000
00000000
00BD2CE3
00667CBE
00400000
00000000
00BD2CE3
0000000A
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
0018FFC4
00677E40
FFFFFFFF
FFFFFFFF
0018FF88
00000000
00000044
00C11BF8
00C13218
00C13768
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
FFFFFFFF
FFFFFFFF
FFFFFFFF
7EFDE000
Net version 67000, build version 592E70C7.
00400000 S 00628000 N D:\GTA Vice City\gta-vc.exe
05E30000 S 0004D000 N D:\Vice City Multiplayer\04rel004\bass.dll
21100000 S 0005C000 N D:\GTA Vice City\mss32.dll
22100000 S 00014000 N D:\GTA Vice City\mss\Mssa3d.m3d
22200000 S 00015000 N D:\GTA Vice City\mss\Mssa3d2.m3d
22300000 S 00011000 N D:\GTA Vice City\mss\Mssds3ds.m3d
22400000 S 00014000 N D:\GTA Vice City\mss\Mssds3dh.m3d
22500000 S 00014000 N D:\GTA Vice City\mss\Msseax.m3d
22600000 S 00016000 N D:\GTA Vice City\mss\Mssfast.m3d
22D00000 S 00062000 N D:\GTA Vice City\mss\Mssrsx.m3d
22E00000 S 00019000 N D:\GTA Vice City\mss\msseax3.m3d
24600000 S 00011000 N D:\GTA Vice City\mss\Reverb3.flt
26F00000 S 0002A000 N D:\GTA Vice City\mss\Mp3dec.asi
6AFD0000 S 00072000 N C:\Windows\system32\DSOUND.DLL
6B050000 S 00421000 N D:\Vice City Multiplayer\04rel004\vcmp-game.dll
6B480000 S 00218000 N C:\Windows\AppPatch\AcGenral.DLL
6B6A0000 S 000E7000 N C:\Windows\system32\ddraw.dll
6C080000 S 00025000 N C:\Windows\system32\POWRPROF.dll
6D650000 S 00045000 N D:\Vice City Multiplayer\04rel004\libpng15.dll
6D710000 S 00009000 N C:\Windows\system32\HID.DLL
6D720000 S 0000D000 N C:\Windows\system32\sfc_os.DLL
6D730000 S 00003000 N C:\Windows\system32\sfc.dll
6D740000 S 0000F000 N C:\Windows\system32\samcli.dll
6ECD0000 S 00105000 N C:\Windows\system32\d3d8.dll
6EDE0000 S 00030000 N C:\Windows\system32\dinput8.dll
6EE10000 S 00006000 N C:\Windows\system32\DCIMAN32.dll
71610000 S 00014000 N C:\Windows\system32\MSACM32.dll
71630000 S 00036000 N C:\Windows\system32\AUDIOSES.DLL
71760000 S 00039000 N C:\Windows\System32\MMDevApi.dll
717D0000 S 000F5000 N C:\Windows\System32\PROPSYS.dll
71920000 S 00007000 N C:\Windows\system32\avrt.dll
71DC0000 S 0004C000 N C:\Windows\system32\apphelp.dll
71F00000 S 009F1000 N C:\Windows\system32\igdumdim32.dll
729F0000 S 00038000 N C:\Windows\System32\fwpuclnt.dll
72A80000 S 00013000 N C:\Windows\system32\dwmapi.dll
72BF0000 S 00080000 N C:\Windows\system32\UxTheme.dll
73290000 S 00005000 N C:\Windows\System32\wshtcpip.dll
732A0000 S 00008000 N C:\Windows\System32\winrnr.dll
732B0000 S 0003C000 N C:\Windows\System32\mswsock.dll
732F0000 S 00012000 N C:\Windows\system32\pnrpnsp.dll
73310000 S 00010000 N C:\Windows\system32\napinsp.dll
73320000 S 00006000 N C:\Windows\system32\rasadhlp.dll
73380000 S 00044000 N C:\Windows\system32\DNSAPI.dll
73490000 S 00032000 N C:\Windows\system32\winmm.dll
734D0000 S 00012000 N C:\Windows\system32\MPR.dll
73720000 S 00374000 N C:\Windows\system32\igdusc32.dll
73E10000 S 00006000 N C:\Windows\system32\d3d8thk.dll
74130000 S 00009000 N C:\Windows\system32\VERSION.dll
74140000 S 0000B000 N C:\Windows\system32\profapi.dll
74150000 S 00017000 N C:\Windows\system32\USERENV.dll
74300000 S 00010000 N C:\Windows\system32\NLAapi.dll
74310000 S 00007000 N C:\Windows\system32\WINNSI.DLL
74320000 S 0001C000 N C:\Windows\system32\IPHLPAPI.DLL
74BC0000 S 0000C000 N C:\Windows\syswow64\CRYPTBASE.dll
74BD0000 S 00060000 N C:\Windows\syswow64\SspiCli.dll
74C30000 S 000A0000 N C:\Windows\syswow64\advapi32.dll
74CD0000 S 0015C000 N C:\Windows\syswow64\ole32.dll
74E90000 S 00136000 N C:\Windows\syswow64\urlmon.dll
74FD0000 S 00110000 N C:\Windows\syswow64\kernel32.dll
750E0000 S 0019D000 N C:\Windows\syswow64\SETUPAPI.dll
75280000 S 0000C000 N C:\Windows\syswow64\MSASN1.dll
75290000 S 0000A000 N C:\Windows\syswow64\LPK.dll
752A0000 S 0011D000 N C:\Windows\syswow64\CRYPT32.dll
75410000 S 00100000 N C:\Windows\syswow64\USER32.dll
75520000 S 00019000 N C:\Windows\SysWOW64\sechost.dll
75540000 S 0009D000 N C:\Windows\syswow64\USP10.dll
755E0000 S 00035000 N C:\Windows\syswow64\WS2_32.dll
75620000 S 0008F000 N C:\Windows\syswow64\OLEAUT32.dll
756B0000 S 00046000 N C:\Windows\syswow64\KERNELBASE.dll
75700000 S 00057000 N C:\Windows\syswow64\SHLWAPI.dll
75760000 S 00005000 N C:\Windows\syswow64\PSAPI.DLL
75770000 S 001FB000 N C:\Windows\syswow64\iertutil.dll
75970000 S 000CC000 N C:\Windows\syswow64\MSCTF.dll
75A40000 S 00C4A000 N C:\Windows\syswow64\SHELL32.dll
76690000 S 00060000 N C:\Windows\system32\IMM32.DLL
766F0000 S 0002D000 N C:\Windows\syswow64\WINTRUST.dll
76720000 S 00083000 N C:\Windows\syswow64\CLBCatQ.DLL
767B0000 S 000F0000 N C:\Windows\syswow64\RPCRT4.dll
769E0000 S 00012000 N C:\Windows\syswow64\DEVOBJ.dll
76A00000 S 000F5000 N C:\Windows\syswow64\WININET.dll
76B00000 S 00027000 N C:\Windows\syswow64\CFGMGR32.dll
76B30000 S 000AC000 N C:\Windows\syswow64\msvcrt.dll
76BE0000 S 00090000 N C:\Windows\syswow64\GDI32.dll
77040000 S 00006000 N C:\Windows\syswow64\NSI.dll
77070000 S 00180000 N C:\Windows\SysWOW64\ntdll.dll

It was spamming harder than any 12 year old in VCMP:

http://prntscr.com/fe5o5b
#11
Client Scripting / [Release] Speed-o-Meter
Mar 04, 2017, 07:38 AM
I mean why do you even send streams from server to client when it can be simply achieved on client-side.

Paste the following code in their appropriate functions.

- SERVER SIDE-
function onPlayerEnterVehicle(player, vehicle, door) {
    local Stream = Stream();
Stream.WriteInt( 50 );
Stream.WriteInt( vehicle.ID );
Stream.WriteString( "true" );
Stream.SendStream( player );
}

function onPlayerExitVehicle(player, vehicle) {
    local Stream = Stream();
Stream.WriteInt( 50 );
Stream.WriteInt( 0 );
Stream.WriteString( "false" );
Stream.SendStream( player );
}

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

Speedometer <- {
GUI = { SpeedLabel = null },
Time = null,
PVehicle = null
}

function Script::ScriptLoad() {
Speedometer.GUI.SpeedLabel <- GUILabel( VectorScreen( sX * 0.06, sY * 0.65 ), Colour( 255, 255, 255, 255 ), "Speed: N/A" );
Speedometer.GUI.SpeedLabel.FontSize = 15;
Speedometer.GUI.SpeedLabel.FontFlags = GUI_FLAG_TEXT_TAGS | GUI_FFLAG_BOLD | GUI_ALIGN_CENTER;
}

function Script::ScriptProcess() {
if( !Speedometer.PVehicle ) {
Speedometer.GUI.SpeedLabel.Text = "Speed: N/A";
return true;
}

if( Speedometer.PVehicle.Type == OBJ_VEHICLE ) {
local speed = Speed( Speedometer.PVehicle );
Speedometer.GUI.SpeedLabel.Text = "Speed: " + speed + " m/s";
}
}

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

    switch(type) {
        case 50:
        local vehicleID = stream.ReadInt();
        local Toggle = stream.ReadString();

        if( Toggle == "true" ) {
            Speedometer.PVehicle = World.FindVehicle( vehicleID );
        }
        else {
            Speedometer.PVehicle = null;
        }
        break;
    }
}

function Speed(vehicle)
{
local sX = ::pow( vehicle.Speed.X, 2 )
local sY = ::pow( vehicle.Speed.Y, 2 )
local sZ = ::pow( vehicle.Speed.Z, 2 )

local SumSpeed = ( sX + sY + sZ );

local avgSpeed = ::sqrt( SumSpeed ) * 50 * 3.6;
return round( avgSpeed, 0 );
}

function round(value, precision) {
    local factor = ::pow(10.0, precision);
    return ::floor(value * factor + 0.5) / factor;
}

- PREVIEW -


Credits: round function taken from kennedyarz's post.
#12
So apparently I'm getting this on the console:

Failed to read announce response from master.vc-mp.org (11)
when the server is up for a few hours and then it is unreachable by players i.e no more on masterlist. Anyone knows why this is happening because I didn't have this problem before.

Here's the machine:

uname -a
Linux vps 2.6.32-042stab116.2 #1 SMP Fri Jun 24 15:33:57 MSK 2016 x86_64 GNU/Linux

Restarting the server gets it on masterlist but again after few hours of uptime that shows up on console and server is no longer reachable.
#13
Client Scripting / [snippet] Fps Label
Aug 13, 2016, 03:08 PM
Just wanted to code something D:
/* Things you don't have to deal with */
sW <- GUI.GetScreenSize().X;
sH <- GUI.GetScreenSize().Y;
FPSLimit <- 37;
FPSMax <- 1;
FPSCalc <- 0;
FPSTime <- 0;
_Gui_FPS <- null;
/**************************************/
// -- \\
/* Things you can deal with */
FPS_Scale <- sH / 51;
FPS_Alpha <- 255;
FPS_Font <- "Tahoma"; /* Tohama, Lucida Console, Verdana */
FPS_TextColor <- Colour( 255, 255, 255 );
/**************************************/

function Script::ScriptLoad() {
if( !_Gui_FPS ) {
::FPSLimit = 255 / ::FPSLimit;
::_Gui_FPS = GUILabel( VectorScreen( ( sW * 0.95 ) - ( FPS_Scale ), sH * 0.95 ), Colour( 255, 255, 255, 255 ), "FPS: 0" );
::_Gui_FPS.FontSize = ::FPS_Scale;
::_Gui_FPS.FontName = ::FPS_Font;
::FPSCalc = 0;
::FPSTime = Script.GetTicks() + 1000;
}
}

function Script::ScriptProcess() {
if( ::_Gui_FPS ) {
if ( Script.GetTicks() < ::FPSTime ) {
::FPSCalc = FPSCalc + 1
}
else {
if ( ::FPSCalc > ::FPSMax ) {
::FPSLimit = 255 / ::FPSCalc;
::FPSMax = FPSCalc;
}

::_Gui_FPS.Text = "FPS: " + ::FPSCalc;
::_Gui_FPS.FontSize = ::FPS_Scale;
::_Gui_FPS.Alpha = ::FPS_Alpha;
::_Gui_FPS.TextColor = ::FPS_TextColor;
::FPSCalc = 0
::FPSTime = Script.GetTicks() + 1000
}
}
}

[Spoiler=Screenshot]
-> At the lower right
[/Spoiler]

:edit: Just wanted to mention that the position is totally relative along with relative font size, which means its gonna fit exactly the same on all resolutions and exactly the same sized on all resolution. The base resolution used was 1280x1024, it will work on lowest to highest
#15


IP: 116.202.238.62:8192

Empire Gaming are proud to unveil their brand new state of the art Attack and Defense server. Showcasing numerous unique features, EG easily brings you the best A/D experience you'll find.  With two sets of gamemodes the server gives you the entire package plus more! Features include but are not limited to:
  • Specialised Clanwar mode
  • Fully functional Autoplay mode
  • Dynamic base voting system
  • Advanced Set Menu
  • Advanced base capturing system
  • Custom skins, sounds, and more!

Following video showcases the server and its features.

https://www.youtube.com/watch?v=yMRHxcPDW1Y&feature=youtu.be
~ Discord
~ Forum
~ IRC: #EG @LUnet
~ Coded totally in @SLC's Squirrel plugin
~ Regards, DizzasTeR

#16
Reproducible:
- Yes

What were you doing:
- Killing each other with Rocket Launcher, Grenades and Molotov Cocktails.

What you think caused the bug:
- No idea

Explanation / Notes:
- It's a pretty straight-forward problem. Killing with Rocket Launcher and Grenades  give you the kill reason of "Explosion" if we do GetWeaponID on the reason which is called in onPlayerKill callback. This is I guess wrong, it leads to improper knowledge whether that was Grenade kill or Rocket Launcher kill so I suppose it should show correctly.

Same goes for Molotov that if you kill someone with Molotov it will either not trigger the onPlayerKill event and killer won't be declared, instead the player dies from the reason 'Burned'. If the kill actually gets recognized then the kill reason gets to be "Flamthrower" and not "Molotov", yet again this needs to be fixed.

Special thanks to @BABA1 for testing this out.
#17
Bugs and Crashes / [CRASH] 00551E0D
Apr 30, 2016, 10:23 AM
Reproducible:
- In a way, yes.

What were you doing at the time of crash:
- Testing my gamemode.

What you think caused the crash:
- No clear idea.

Are you using the steam version?
- No

Extra notes:
- This isn't a complete game crash, it just gives a game freeze for like a second and then I see a message in chat console that a crashlog has been created and that it crashed with that address.

Crash Report:
Address: 00551E0D error C0000005
EAX 00001977 EBX 00000000 ECX 00000000 EDX FFD3005A
EBP 00000000 ESP 0018FD04 ESI 007094A8 EDI 0000005A
Stack:
40800000
C543B700
00005641
0000005A
00000000
00000001
006D00B3
000000FE
00000020
00550255
004A64FD
00000000
0055ED4B
0000000B
00000006
0000001D
007E4E00
007E4E05
00FF007F
00000000
00000000
006D00B3
0471E30C
0055D83D
0471E30C
00000000
05001D32
00000002
00000000
009B69AC
05001D32
0000005A
0046BE14
0471E30C
00000032
0000001D
00000000
00000005
00000002
0000005A
004A6093
00000000
000000C8
000000FE
76867D4F
3F3340CD
00C56890
3F3340CD
0000000A
006DE5AC
0000001A
00000001
00000001
004A5BE5
00000001
00813D20
00000064
0000000A
00602EF1
0000001A
00000001
00C56890
00813D20
006004A7
0000001A
00000001
0000BF68
450D0000
00016B2E
00000000
00000001
00000000
00000113
00007F27
21112B30
00416078
000004A4
000003A7
44200000
44000000
0000000A
00000008
00000102
00000008
00000100
00000000
00000000
00000500
00000400
0000002C
00000000
00000001
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
00000000
00000000
00000500
00000400
01010101
00000001
00000000
00000000
00002000
006010B0
00000000
00000000
00400000
06940433
00010003
00000000
00000000
006D5A00
FFFFFFF8
FFFFFFE2
00000288
000001C8
0018FF88
00000000
00000000
00BD2BBB
00667CBE
00400000
00000000
00BD2BBB
0000000A
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
0018FFC4
00677E40
FFFFFFFF
FFFFFFFF
0018FF88
00000000
00000044
00C11B38
00C12D18
00C130C0
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
FFFFFFFF
FFFFFFFF
FFFFFFFF
7EFDE000
0018FF94
76AA3677
7EFDE000
0018FFD4
77809D72
7EFDE000
77B8C02E
00000000
00000000
7EFDE000
C0000005
76AC9775
76AC9775
0018FFA0
0018F8CC
FFFFFFFF
7784041D
00DFFC2A
00000000
0018FFEC
77809D45
00667BF0
7EFDE000
00000000
00000000
00000000
00000000
00667BF0
7EFDE000
00000000
78746341
00000020
00000001
0000330C
000000DC
00000000
00000020
00000000
00000014
Net version 67000, build version 57211F3E.
00400000 S 00628000 N D:\GTA Vice City\gta-vc.exe
10000000 S 00007000 N C:\Program Files (x86)\Internet Download Manager\idmmkb.dll
21100000 S 0005C000 N D:\GTA Vice City\mss32.dll
22100000 S 00014000 N D:\GTA Vice City\mss\Mssa3d.m3d
22200000 S 00015000 N D:\GTA Vice City\mss\Mssa3d2.m3d
22300000 S 00011000 N D:\GTA Vice City\mss\Mssds3ds.m3d
22400000 S 00014000 N D:\GTA Vice City\mss\Mssds3dh.m3d
22500000 S 00014000 N D:\GTA Vice City\mss\Msseax.m3d
22600000 S 00016000 N D:\GTA Vice City\mss\Mssfast.m3d
22D00000 S 00062000 N D:\GTA Vice City\mss\Mssrsx.m3d
22E00000 S 00019000 N D:\GTA Vice City\mss\msseax3.m3d
24600000 S 00011000 N D:\GTA Vice City\mss\Reverb3.flt
26F00000 S 0002A000 N D:\GTA Vice City\mss\Mp3dec.asi
64EF0000 S 0042D000 N D:\Vice City Multiplayer\04rel004\vcmp-game.dll
65320000 S 00218000 N C:\Windows\AppPatch\AcGenral.DLL
65A00000 S 00072000 N C:\Windows\system32\DSOUND.DLL
65A80000 S 00105000 N C:\Windows\system32\d3d8.dll
65B90000 S 000E7000 N C:\Windows\system32\ddraw.dll
65D90000 S 00045000 N D:\Vice City Multiplayer\04rel004\libpng15.dll
67E10000 S 00012000 N C:\Windows\system32\MPR.dll
69390000 S 00036000 N C:\Windows\system32\AUDIOSES.DLL
6A820000 S 00684000 N C:\Windows\system32\atiumdva.dll
6C230000 S 000F5000 N C:\Windows\System32\PROPSYS.dll
6C690000 S 00009000 N C:\Windows\system32\HID.DLL
6C6A0000 S 00030000 N C:\Windows\system32\dinput8.dll
6C6D0000 S 00006000 N C:\Windows\system32\DCIMAN32.dll
6FF90000 S 00679000 N C:\Windows\system32\atiumdag.dll
70780000 S 00032000 N C:\Windows\system32\winmm.dll
70910000 S 0000F000 N C:\Windows\system32\samcli.dll
70A80000 S 0000D000 N C:\Windows\system32\sfc_os.DLL
70A90000 S 00003000 N C:\Windows\system32\sfc.dll
70BE0000 S 00013000 N C:\Windows\system32\dwmapi.dll
70C20000 S 00006000 N C:\Windows\system32\d3d8thk.dll
71200000 S 00038000 N C:\Windows\System32\fwpuclnt.dll
71C60000 S 00080000 N C:\Windows\system32\UxTheme.dll
71DA0000 S 0004B000 N C:\Windows\system32\apphelp.dll
71F10000 S 00005000 N C:\Windows\System32\wshtcpip.dll
71F20000 S 00012000 N C:\Windows\system32\pnrpnsp.dll
71F40000 S 00010000 N C:\Windows\system32\napinsp.dll
71F50000 S 00008000 N C:\Windows\System32\winrnr.dll
71F60000 S 00006000 N C:\Windows\system32\rasadhlp.dll
71F70000 S 0003C000 N C:\Windows\System32\mswsock.dll
720F0000 S 00010000 N C:\Windows\system32\NLAapi.dll
728A0000 S 00025000 N C:\Windows\system32\POWRPROF.dll
72C50000 S 0000E000 N C:\Windows\system32\RpcRtRemote.dll
73000000 S 00017000 N C:\Windows\system32\USERENV.dll
73590000 S 0003B000 N C:\Windows\system32\rsaenh.dll
735D0000 S 00016000 N C:\Windows\system32\CRYPTSP.dll
73940000 S 0000B000 N C:\Windows\system32\profapi.dll
73950000 S 00009000 N C:\Windows\system32\VERSION.dll
73980000 S 00007000 N C:\Windows\system32\WINNSI.DLL
73990000 S 0001C000 N C:\Windows\system32\IPHLPAPI.DLL
739D0000 S 00044000 N C:\Windows\system32\DNSAPI.dll
73FF0000 S 00113000 N C:\Windows\system32\aticfx32.dll
74170000 S 0001B000 N C:\Windows\system32\atiu9pag.dll
74340000 S 00039000 N C:\Windows\System32\MMDevApi.dll
750B0000 S 00007000 N C:\Windows\system32\avrt.dll
750C0000 S 00014000 N C:\Windows\system32\MSACM32.dll
75330000 S 0000C000 N C:\Windows\syswow64\CRYPTBASE.dll
75340000 S 00060000 N C:\Windows\syswow64\SspiCli.dll
753A0000 S 001F9000 N C:\Windows\syswow64\iertutil.dll
755F0000 S 0000A000 N C:\Windows\syswow64\LPK.dll
75600000 S 000AC000 N C:\Windows\syswow64\msvcrt.dll
756B0000 S 000A0000 N C:\Windows\syswow64\advapi32.dll
75750000 S 00083000 N C:\Windows\syswow64\CLBCatQ.DLL
757E0000 S 00019000 N C:\Windows\SysWOW64\sechost.dll
75880000 S 00046000 N C:\Windows\syswow64\KERNELBASE.dll
75930000 S 000CC000 N C:\Windows\syswow64\MSCTF.dll
75A00000 S 00C49000 N C:\Windows\syswow64\SHELL32.dll
76650000 S 00005000 N C:\Windows\syswow64\PSAPI.DLL
76660000 S 00135000 N C:\Windows\syswow64\urlmon.dll
767A0000 S 0009D000 N C:\Windows\syswow64\USP10.dll
76840000 S 0000C000 N C:\Windows\syswow64\MSASN1.dll
76850000 S 00100000 N C:\Windows\syswow64\USER32.dll
76A50000 S 0002D000 N C:\Windows\syswow64\WINTRUST.dll
76A90000 S 00100000 N C:\Windows\syswow64\kernel32.dll
76B90000 S 00035000 N C:\Windows\syswow64\WS2_32.dll
76BD0000 S 0019D000 N C:\Windows\syswow64\SETUPAPI.dll
76DA0000 S 00090000 N C:\Windows\syswow64\GDI32.dll
76E30000 S 00057000 N C:\Windows\syswow64\SHLWAPI.dll
76E90000 S 00060000 N C:\Windows\system32\IMM32.DLL
76EF0000 S 0015C000 N C:\Windows\syswow64\ole32.dll
77050000 S 00012000 N C:\Windows\syswow64\DEVOBJ.dll
77070000 S 00027000 N C:\Windows\syswow64\CFGMGR32.dll
77130000 S 0008F000 N C:\Windows\syswow64\OLEAUT32.dll
771C0000 S 0011C000 N C:\Windows\syswow64\CRYPT32.dll
772E0000 S 000F0000 N C:\Windows\syswow64\RPCRT4.dll
777A0000 S 00006000 N C:\Windows\syswow64\NSI.dll
777D0000 S 00180000 N C:\Windows\SysWOW64\ntdll.dll
#18
Since GUIs are absolute and we have the ability to get client's resolution, we can manually calculate relative positions so that the GUIs are always correctly positioned and sized in every resolution.

function getRelative( X, Y )
{
    local x = floor( X*sX/1920 );
    local y = floor( Y*sY/1080 );
local cords = { X = x, Y = y }
return cords;
}

- Parameters:
    X: integer for the X screen position or width.
    Y: integer for the Y screen position or height.

- Return:
    Table: Returns a table with relative values X and Y.

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

function getRelative( X, Y )
{
    local x = floor( X*sX/1920 );
    local y = floor( Y*sY/1080 );
local cords = { X = x, Y = y }
return cords;
}

function Script::ScriptLoad()
{
    local posCanvas = getRelative( (sX/2)-50, (sY/2)-50 );
    local sizeCanvas = getRelative( 150, 100 );

    myCanvas <- GUICanvas();
    myCanvas.Position = VectorScreen( posCanvas.X, posCanvas.Y );
    myCanvas.Size = VectorScreen( sizeCanvas.X, sizeCanvas.Y );
}

There may be a better calculation to do this, but this is how I do it.

Regards,
Doom_Kill3R
#19
Quote from: Doom_Kill3R on May 31, 2015, 05:49 AMDescription: The events do not respond and/or miss to catch when a player go through

Information:

  • When we go through the CheckPoints in a vehicle, the events hardly get called, by that I mean sometimes the event's doesn't catch a player went through them, It sometimes doesn't catch at all, Sometimes only catches Entered and sometimes only catches Exited, Mostly it doesn't catch at all in Vehicle
  • When running on-foot into checkpoints seems to work fantastic! Reliable output but! When you are holding a partial direction running keys ( I mean for example arrow up & left ) and run into checkpoint, It can fail to track the event.

Even though this has been marked solved, while testing race gamemode in my server, almost 60 - 75% of times the checkpoint events do not respond if the players are going fast, usually we have to go into it for a couple of times to trigger onCheckpointEntered ( Exitted might have the same thing ). I hope developers will look into it.
#20
Issue: Unable to connect to IRC Bouncer server.
Encountered: Today
Description: When I connect to the BNC server I get the following message:-
* Connecting to vcmp.co.uk (6667)
-
* Unable to connect to server (Connection refused)