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 - Inferno

#1
Description:-
Whenever you set a weapon's ammo to 0 using player.SetWeapon(wep,0); or player.RemoveWeapon(), the weapon gets removed but the ammo are still there at the slot.
This bug is related to the bug reported by Xmair previously, and was supposedly fixed by Adtec here.
https://forum.vc-mp.org/?topic=8223.0
So its either the ammos are not getting reset or GetAmmoAtSlot still returning false values when weps are removed.
Note: GetAmmoAtSlot returns correct values when you have died/killed.
So, i think the issue persists with player.SetWeapon / player.RemoveWeapon functions.


Reproducible-:
Always.

What you were doing when the bug happened
I was testing the weapon drop system which would drop your weapons as pickups using a cmd. I found out that each time i dropped a weapon, after picking it up, it was giving me double of the ammos i had dropped. Also to note that i am not using Pickup.Quantity to store ammos but a class tor ammo. So its not a pickup related bug. This bug showed up with both SetWeapon(wep,0) as well as RemoveWeapon. The values only reset when you die/get killed.

What you think caused the bug
Its either related to second last update or it has been an unnoticed bug from previous versions.
#2


Vice Freemode Server (aka VFS) is a VC:MP server which was initially started by Gito and Inferno around May 2020 with name of Vice Freeroam Server, having simple deathmatching gamemode. Over the passage of time, it was updated and made a deathmatching and roleplay server.
Later on, Anish joined in the scripting panel. Followed by a few other scripters, invited by Gito, who were later on, kicked due to security reasons.
Afterwards, the server conducted a total of 4 events namely, M4 Masters which became a good success and increased player count and other fairly satisfactory major events, Tournament of Death (Team DM), Crazy Racing Tournament (Race) and Hunt the Treasure (Roleplay).

A brief information regarding the gamemode.
VFS has been rescripted with the aim of a multimode server, featuring 6 different gamemodes.
Categorised into - DM and Roleplay, 3 gamemodes each.
Upon joining, you are spawned at the lobby where you can enter a checkpoint to choose a gamemode. All the gamemodes have unique skins, commands and class selection locations.The server is currently moderated and being developed peridiocally with weekly updates.


GAMEMODES

Deathmatching:
The gamemode provides you with a pure experience of death matching whether in 1vs1 , all vs all or between a team. All the necessary Death matching functions and commands are present along with preventions. This gamemode is complete and updates are made periodically to make it better. Currently, no vehicles are available in this gamemode as to avoid any FPS drop for the players, Jitter system helps ensure a smooth gameplay. Teleportation commands can help you teleport anywhere you want to.
Most commands are free of cost but there is unlockable requirement on some features to make the gamemode competitive. 
Stats system is separate from other gamemodes.

Team DM:
The gamemode provides a competitive gamemode between 2 teams (Grey and White). Both teams have unique custom skins. There are many unlockables available to discover new stuff in this gamemode. This gamemode is primarily based on objective system as well as on Brawls. One team plays as a defending side while other as an attacking side which will have to complete the objectives in order to win. This gamemode is currently under-construction and will be available to play in updates.

Racing:
The gamemode provides you with a non-deathmatching semi-roleplay competitive gameplay, where you can have race with other players and win rewards and unlock many achievements which are beneficial in the gameplay. This gamemode is currently under construction and will be available in updates.

Freeroam:
The gamemode provides you with a roleplaying gamemode where you can freely roam as in singleplayer GTA VC, do stunts, find hidden packages to win rewards and complete short missions and side missions. Cheat codes are also added which are used based on script. You can use them to fun around and to shortcut game tasks. This gamemode has recently been released.

Battle Royale:
The gamemode provides you with a small portion of Deathmatching events known as Battle Royale Gameplay. Its a Last Man Standing gamemode where you will have to kill everyone in round and survive till last to win the round. There are no respawns. You will spawn unarmed and have to find and pick weapons to attack. The faster you do , the more you will survive. This gamemode is almost complete and will be published soon.

Roleplay:
This is the major roleplay gamemode having the wide variety of features. Currently there are 11 Jobs which can help you earn, meanless deathmatching is not allowed here.
Each job has different unlockables and rewards alongwith rank system. Vehicles and Properties can be purchased. You can make a good collection for yourself to show off.


OVERVIEW

Server Name : [0.4] Vice Freemode Server - Deathmatch/Roleplay/Freeroam
Server IP : 51.178.65.136:8113
Server Location : London
Max Players : 100
Base : Squirrel
Website: https://vfs.vcmp.net/
Forum : https://vfs.vcmp.net/forum/
Panel : https://vfs.vcmp.net/panel/
Discord : https://vfs.vcmp.net/discord/
Credits :
Inferno (Scripting, Mapping, Modeling),
Anish (Scripting, Client-side and Custom Content Creation, Coordination, Hosting, Website and Discord),
Spiller and Umar (Client-side Support, Coordination),
Shy and Sebastian (Snippets),
OneVice (Hosting),
Luckshya (Constant help with Discord Module)


#3
Why need of this when you have Pickup.Timer?

Here's why : https://forum.vc-mp.org/?topic=8306

Snippets

Alternative #1 ( Aligned Timer : Use only if your server's time rate is 1000ms ( 1 second ) as OnTimeChange depends on Time Rate )

OnScriptLoad
SetToRespawn<- array( 5000, null);
 RespawnCD <- 0;


OnTimeChange
function onTimeChange( lastHour, lastMinute, hour, minute )
{
    for(local pi = 0; pi < 2000; pi++)
    {
        local pickup = FindPickup(pi);
       if(pickup)
        {
if(RespawnCD < 16) {
RespawnCD ++; // increase respawn cd till it doesnt reach 16 seconds
}
if(SetToRespawn[pickup.ID] == true && RespawnCD > 14) { // checks if pickup is set to respawn && respawning countdown is greater than 14 seconds
RespawnCD = 0; // resets respawn cd
SetToRespawn[pickup.ID] = false; // disables respawn again without execution
pickup.World = 1; // default world
}
}
}
}

Anywhere in main script
function onPickupPickedUp( player, pickup )
{
SetPickupToRespawn(pickup); // sets pickup to respawn upon picking up
}

function SetPickupToRespawn(pickup)  // sets pickup into respawning
{
SetToRespawn[pickup.ID] = true;
pickup.World = 5555;
}

function iCreatePickup( model, pos ) // custom function so it can set class
{
local pick = CreatePickup( model, 1, 1, pos, 255, true );
SetToRespawn[pick.ID] = false;
}


Usage
Quote* Paste them correctly
* Create pickups using iCreatePickup(mode,pos) so class gets set i.e SetToRespawn[pickup.ID]
* This is used for example & sample only, the pickup which has been set to respawn can respawn even after 1s or 15s as its dependant on RespawnCD , so u will need to modify it.

Alternative #2 & #3


// onscriptload

SetToRespawn <- array(5000,null);

// ontimechange wont be used here

// onpickuppickedup

function onPickupPickedUp( player, pickup )
{
SetPickupToRespawn(pickup);
}

// function

function SetPickupToRespawn(pickup)
{
SetToRespawn[pickup.ID] = true;
 NewTimer("RespawnPickup", 15000, 1, pickup.ID); // unrecommended, Use Extended Timer here instead ( alternative #3 )
pickup.World = 5555;
}

// timer callback to use
function RespawnPickup(pick)
{
local pickup = FindPickup(pick);
if(pickup && SetToRespawn[pickup.ID] == true) {
SetToRespawn[pickup.ID] = false;
pickup.World = 1;
}
}
#4
Been Using Pickup.Timer = time in milliseconds?
Here are some observations and assumptions regarding it.
- Having 7-8 Pickups in range of 50m which are set to respawn by pickup.Respawn, usually cause certain memory leaks which either lags the server or specific players near these pickups and rarely even both. This phenomenon may be same for more or less pickups.
- I had first observed this in VCCnR at mall, where majority of people ( with average or bad internet and some with good even ) would lag in mall, as robber or as cop. The mall had 9 respawning pickups. It might be because more than 3 4 pickups are being set to respawn by default function which is causing memory leak or sending players in range of 50m to pickups, some packets ( an assumption ).
- Why do i think its related to Pickup.Respawn? Well i tested non-respawning pickups in range of 25m , and placed 12 pickups without respawn ability. There was no memory leak or lag even when each pickup had one player standing on it. This certain gives an impression about pickup.Timer causing that lag.
- When you are getting such lag by this, setting your world to some other world than these pickups, the lag fades away rapidly ( only if it is not your internet being bad but script lag )
- Since, pickup.Respawn has inbuilt timer, my assumption is that, it was much ignored in development and this is an unnoticed memory leak/lag leak.  ( assumption )
- I have tested it elsewhere than VCCNR as well. Added 10 respawning wep pickups at loc BF and asked some players to pick some of them, and after a few moments, everyone in that area started having high jitre but players away from that area were fine and had no lag. ( Observation )
- These are some observations and assumptions regarding this function. Calculations of pickups to reproduce the bug might be wrong, but these memory leaks still exist. Couldnt gather the videos showing that since my laptop is running vcmp at 20-40 fps least and wont handle recorder.



Temporary Solution:
https://forum.vc-mp.org/?topic=8307 ( custom pickup timer )

#5

Intro
QuoteThis custom snippet, will count the number of checkpoints created in the Server. You can also set its type to make it execute something based on its type instead of its ID


Functions
function iCreateCheckpoint( player, world, isSphere, pos, argb, radius ) // create a cp, its same as default one, just add an 'i' in start
{
CreateCheckpoint(player, world, isSphere, pos, argb, radius);
CheckpointCount++;
cpType[CheckpointCount] =  null;
print("Checkpoint Created, Count: "+CheckpointCount+"");
}

function iDeleteCheckpoint( checkpoint ) // delete a cp
{
cpType[checkpoint.ID] = null;
checkpoint.Remove();
CheckpointCount--;
print(" Checkpoint Removed, Count : "+CheckpointCount+" ");
}

function SetCheckpointType( checkpoint, type ) { // sets cp type
local cp = FindCheckpoint(checkpoint);
if(cp) {
cpType[cp.ID] = type;
print("Checkpoint ID :"+cp.ID+" type set to "+type+" ");
}
}


OnScriptLoad
CheckpointCount <- -1;
 cpType <- array(2000,null);




Example

// OnScriptLoad
iCreateCheckpoint( null, 0, true, Vector(90.697, 278.878, 21.7719), ARGB(255, 255, 255, 255), 2.2); // golf cp
iCreateCheckpoint( null, 0, true, Vector(87.4472, -1453.78, 10.5655), ARGB(255, 255, 255, 255), 2.2); // pole cp
SetCheckpointType( 0, "golf" ); //  sets type
SetCheckpointType( 1, "pole" ); // same

// OnCheckpointEntered

function onCheckpointEntered( player, checkpoint )
{
if (cpType[checkpoint.ID] == "golf") {
Message("[#ffffff] Golf Club ");
}
else if(cpType[checkpoint.ID] == "pole") {
Message("[#ffff11] Pole Club ");
}   
}



Note
Quote~ There is another alternative to count the checkpoints as well, but i lost that snippet.
~ The checkpoint count will only increase or decrease upon using these custom functions and not for default ones, same goes for the checkpoint type thing
~ You can add more classes to execute checkpoint functions based on other things than ID, i.e pos, color etc


#6
Features

Quote• Shows random messages after every 60 seconds without using a timer.
• Will show different message every minute.
• Message #1 will be repeated once it reaches last recorded message i.e Message #10. And so on.
• This snippet doesn't require Random(min,max) function.









OnScriptLoad
MSGTick <- 0;
tCount <- 0;


OnTimeChange
if(MSGTick < 61) { //check to increase
MSGTick++; // INCREASES EVERY SECOND
}
else if(MSGTick > 59) {  // checks when 1min passes
MSGTick = 0;
tCount ++;
local m1 = "[#ffff00]Add the server to favourites", m2 = "please read /rules",  m3 = "[#FFFFFF]Server made by : YOURNAME";  // You can edit these and add even more messages here make sure to tCount = 0; on last msg.
if(tCount == 1) {
 Message(" "+m1+" ");
}
else if(tCount == 2) {
 Message(" "+m2+" ");
}
else if(tCount == 3) { // 3rd and last msg
 Message(" "+m3+" ");
tCount = 1; // to return to message #1


}
#7
Snippet Showroom / Basic Quote System.
Oct 27, 2020, 02:17 AM
 

Features
Quote-You can Add Quotes
-You can read quotes using their IDs
-You can check quotes made by yourself
-You can view a random quote


OnScriptLoad
qCount <- 0;

dbQuotes <- ConnectSQL("Databases/quotes.db");
QuerySQL( dbQuotes, "CREATE TABLE IF NOT EXISTS Quotes ( ID NUMERIC, Quote TEXT, Creator TEXT )" );

LoadQuotes();

Anywhere in main.nut

function LoadQuotes()
{
local q = QuerySQL( dbQuotes, "SELECT * FROM Quotes" ), i = 0;
while( GetSQLColumnData( q, 0 ) )
{
GetSQLNextRow( q );
i++;
}
print("Quotes Count ("+i+")");
qCount = i;
     FreeSQLQuery(q);
}

function random( min, max ) // incase you don't have the random(a,b) function
{
        if ( min < max )
                return rand() % (max - min + 1) + min.tointeger();
        else if ( min > max )
                return rand() % (min - max + 1) + max.tointeger();
        else if ( min == max )
                return min.tointeger();
}

 

OnPlayerCommand
else if(cmd == "randomquote") {
if(qCount == 0) return MessagePlayer(""+RED+" There are no quotes in the database ",player);
else if(text) return 0;
else {
local rr = random(1,qCount);
 local gg = QuerySQL(dbQuotes, "SELECT * FROM Quotes WHERE ID='" + rr + "'");
local tq = GetSQLColumnData( gg, 1 );
local tc = GetSQLColumnData( gg, 2 );

Message("[#ffff00]"+player.Name+" [#ffffff]has viewed a random quote ID :[#ffff00]["+rr+"],[#ffffff] Quote:[#ffff00] [ "+tq+" ], [#ffffff]Creator:[#ffff00][ "+tc+" ] ");
}
return 0;
}

else if ( cmd == "myquotes" )
{
 local q = QuerySQL(dbQuotes, "SELECT * FROM Quotes WHERE Creator='" + player.Name + "'"), i = 0;
if(q) {
MessagePlayer("[#ffffff]Your "+ORANGE+"[Quotes]: ", player);
while (GetSQLColumnData(q, 2) == player.Name) {
MessagePlayer(""+ORANGE+"ID:[#ffffff]["+GetSQLColumnData( q , 0)+"], "+ORANGE+"Quote:[#ffffff]["+GetSQLColumnData( q, 1 )+"] ",player);       
GetSQLNextRow(q);
i++;
}
}
else if(!q) {

MessagePlayer("[#ffffff][Your] "+ORANGE+"[Quotes]:[#ffffff] None ", player);

}



     FreeSQLQuery(q);
return 0;
}

  else if (cmd == "addquote")
{
if(!text) return MessagePlayer(""+RED+"/addquote [message]",player);
else {
qCount++;
QuerySQL( dbQuotes, "INSERT INTO Quotes ( ID, Quote, Creator ) VALUES ( '" + qCount + "', '"+text+"', '"+player.Name+"' )" );
MessagePlayer("[#ffff00]You have added a quote ID : "+qCount+" ",player);

}
return 0;
}

  else if (cmd == "quote")
{
if(!text) return MessagePlayer(""+RED+"/quote [id]",player);
else if(!IsNum(text)) return MessagePlayer(""+RED+"Use numbers for IDs",player);
else {
 local ak = QuerySQL(dbQuotes, "SELECT * FROM Quotes WHERE ID='" + text.tointeger() + "'");
if(!ak) return MessagePlayer(""+RED+" Invalid Quote ID ",player);
local aqw = GetSQLColumnData( ak, 1 );
local ao = GetSQLColumnData( ak, 2 );

Message("[#ffffff] "+player.Name+" "+RED+"has viewed a quote ID:[#ffffff]["+text.tointeger()+"], "+RED+"Creator:[#ffffff][ "+ao+" ] , "+RED+"Context:[#ffffff][ "+aqw+" ] ");
}
return 0;
}

else if(cmd == "quotecmds") {
MessagePlayer("[#ffff00] ~ Quote Commands ~ ",player);
MessagePlayer("[#ffff00] ~ /randomquote, /quote, /addquote, /myquotes ~ ",player);
return 0;
}




Commands

/addquote
(to add a quote)
/quote [id](to check a quote)
/randomquote(to view a random quote)
/myquotes(to view the quotes written by yourself)

Update: Added a fix suggested by Mashreq



#8

Intro

QuoteCooldown functions have become a must in any server nowadays in order to prevent any spam/abuse by any player. So, here i would like to post a cooldown function I made for my server and is effective for me.

Requirement:
QuoteRequires S.L.C Extended Timers : https://forum.vc-mp.org/?topic=1487.msg10339#msg10339

OnScriptLoad

// timer callback
DecreaseCooldown <- _Timer.Create(this, DecreaseCooldown, 1000, 0);

// db to be created
dbCooldown <- ConnectSQL("Databases/Cooldown.db");
QuerySQL( dbCooldown, "CREATE TABLE IF NOT EXISTS Cooldown ( Cmd TEXT, Name TEXT, Time NUMERIC )" );




Any where in main.nut
  // Timer
 function DecreaseCooldown()
    {
        QuerySQL( dbCooldown, "UPDATE Cooldown SET Time= (Time - 1) WHERE Time > 0" );
        local q = QuerySQL( dbCooldown, "SELECT Cmd FROM Cooldown WHERE Time='0'" );
        local cmd = GetSQLColumnData( q , 0);
        local name = GetSQLColumnData( q , 1);
        if( q && cmd && name )
        {
        QuerySQL( dbCooldown, "DELETE FROM Cooldown WHERE Cmd='" + cmd + "' AND Name='"+name+"' " );
       }
    }
// checks if cooldown for a cmd for a player is set or not
function CheckCooldown( command, player )
 {
local q = QuerySQL( dbCooldown, "SELECT* FROM Cooldown WHERE Cmd='"+command+"' AND Name='"+player.Name+"' AND Time > 0" );
local atime = GetSQLColumnData( q , 2);
local name = GetSQLColumnData( q, 1 );
local cmda = GetSQLColumnData( q, 0 );
    if ( name && atime && cmda ) return 1;
    else return 0;
  }
// adds cooldown
function AddCooldown( cmd, player, time ) {
if(player) {
QuerySQL( dbCooldown, "INSERT INTO Cooldown ( Cmd, Name, Time) VALUES ( '" + cmd + "', '" + player.Name + "', '"+time+"'  )" );
}

// checks time remaining for cooldown
function CooldownTime( cmd, player ) {
local q = QuerySQL( dbCooldown, "SELECT* FROM Cooldown WHERE Cmd='"+cmd+"' AND Name='"+player.Name+"' AND Time > 0" );
local atime = GetSQLColumnData( q , 2);
local name = GetSQLColumnData( q, 1 );
local cmda = GetSQLColumnData( q, 0 );
    if ( name && atime && cmda ) return atime;
    else return 0;
}




Functions to use in commands/any other event
// add in command to return if cooldown is set
else if(CheckCooldown(cmd,player)) return MessagePlayer(""+RED+"[Cooldown] You can use this command again after "+CooldownTime(cmd,player)+" seconds ",player);

// add when command can be executed after all checks
AddCooldown( cmd, player, 5 ); // this will add cmd, player and 5 seconds cooldown, these parameters can be edited


Examples
Example 1
// Used in Keybind
function OnKeyDown(player, key) {


if(key == HKEY && player.Vehicle)
{
// by pressing H, it will flip a vehicle and add a cooldown of 2 seconds
if(CheckCooldown(key,player)) return MessagePlayer("[#ffff00][Cooldown] You can use this command again after "+CooldownTime(key,player)+" seconds ",player);
AddCooldown( key, player, 2 );
player.Vehicle.Rotation = Quaternion(0.0, 0.0, player.Vehicle.Rotation.z, player.Vehicle.Rotation.w);
ClientMessage("Flipped.", player, 176, 176, 176);
}

return 1;
}

Example 2

OnPlayerCommand(player, cmd) {


// this cmd will flip the car and add a 2s cooldown
 if ( cmd == "flip" )
{
if ( !player.Vehicle ) MessagePlayer( "[#ff1111]Error: [#FF7092]You need to be in a Vehicle to use this command." , player )
else if(CheckCooldown(cmd,player)) return MessagePlayer("[#ffff00][Cooldown] You can use this command again after "+CooldownTime(cmd,player)+" seconds ",player);
else
{
AddCooldown( cmd, player, 2 );
player.Vehicle.Rotation = Quaternion(0.0, 0.0, player.Vehicle.Rotation.z, player.Vehicle.Rotation.w);
ClientMessage("Flipped.", player, 176, 176, 176);
}
return 0;
}

// Command to set manually Cooldown to any value for a player when its existing. Added for Testing Purpose

  else if (cmd == "setcool")
{
// add your admin function here
if(!text) return MessagePlayer("[#ffff00]/setcool [player] [cmd/arg] [cooldown]",player);
else {
local plr = GetTok(text, " ", 1);
local acmd = GetTok(text, " ", 2);
local acd = GetTok(text, " ", 3);
local q = QuerySQL( dbCooldown, "SELECT* FROM Cooldown WHERE Cmd='"+acmd+"' AND Name='"+plr+"' AND Time > 0" );
if(!q) return MessagePlayer(""+RED+" That argument is not set to cooldown for that player ",player);
else if(!plr) return MessagePlayer(""+RED+" Please specify a player name ",player);
else if(!acmd) return MessagePlayer(""+RED+" Please specify a command for cd ",player);
else if(!acd) return MessagePlayer(""+RED+" Please specify a cd ",player);
else if(!IsNum(acd)) return MessagePlayer(" "+RED+" CD Values must be in numbers ",player);
else {
QuerySQL(dbCooldown, "UPDATE Cooldown SET Time = '"+acd.tointeger()+"' WHERE Name = '" + plr + "' AND Cmd='"+acmd+"'");
MessagePlayer("[#ffff00] You have set "+acd+" seconds cooldown for "+acmd+" command for player "+plr+" ",player);
}
}
return 0;


return 1;
}


Functions

QuoteThis snippet can be used for any event which require Cooldown as explained in Examples

Credits
QuoteInferno , S.L.C ( for extended timers ), Xmair ( flip command used in Examples )

#9

Credits : Inferno

File Introduction
QuoteI have tried my best to fix out some of known collision bugs i know or found during gameplay.
No custom objects were used.

The mod includes many collision fixes details of which are as below

North Point Mall 4 Walls
https://ibb.co/LZgQTwx
https://ibb.co/HV9hxfC
https://ibb.co/f84Mw5c
https://ibb.co/2KVgTz4

QuoteYou might have come across the mall walls collision bug where players are able to shoot through it whether wall glitch is enabled or disabled, this mod fixes those 4 walls and hence prevents players from shooting through it.

Government Office Fixes
https://ibb.co/KcZpLLF
https://ibb.co/hHv1MtT
https://ibb.co/rkdf7pR
QuoteThere is a very unknown glitch at government office downtown which allows players to enter the glitched reflected office aren in downtown. This mod adds a collision to that area to prevent players from accessing it. Moreover, it adds a collision to the one of 4 pillars at the office with missing collision.

Bank Fixes
https://ibb.co/xGQVxsr
https://ibb.co/ZHxVgRw
https://ibb.co/h9yHPb5
https://ibb.co/xHJx0MX
QuoteThere are 2 glitched windows inside bank which allow players to see through underground, so this mod adds 2 proper windows to prevent that. Moreover, there is an abandoned balcony area above the door of bank which can be accessed but has no stairs so this mod adds stairs and a complete balcony to that area


Prawn Mansion Fixes + Objects
https://ibb.co/hYySR0y
https://ibb.co/r5cQ3RM
https://ibb.co/4t1bJrF
https://ibb.co/N3bSctC
https://ibb.co/nfhD6Lf
https://ibb.co/P4sZ191
https://ibb.co/jWR9fTh
QuoteThis mod adds a proper collision to roof of prawn mansion , hence prevents players from shooting through it to a player on roof, its a very well known bug/glitch, this mod completely fixes that glitch/bug and prevents players from doing so. There is a another file (optional) using which you can have rest of collision fixes without prawn mansion objects, added so people who might feel the prawn mansion objects ugly can use the collision fixes without them. This also fixes the 2 Walls missing Collision outside 3rd Prawn Mansion

Prawn Bridge Missing Collision
https://ibb.co/FqqMbGk
https://ibb.co/DLSVM3q
QuoteThis mod adds the missing collision to prawn bridge side to prevent players from falling into it.

Prawn Studio Roof Collision Fix
https://ibb.co/8b7RpmT
QuoteIt is one of very less noticed collision bugs, where players can hide in the collisionless roof of prawn studios, this mod fixes the collision and adds proper one to prevent players from entering it

Abandoned Wooden Location on Water
https://ibb.co/K9dqvr0
https://ibb.co/nkQtqML
QuoteThis mod not only fixes the broken mechanism of that location but improves it and add a complete square of it with double boat parking locations


Installation
QuotePut the infix2.xml inside your server directory / store / maps

Note
QuoteThere are 2 Mod packs in it with details, so if you dont want to use the prawn mansion objects, use the other folder file included

Download Link
http://www.mediafire.com/file/wrh1gn063c73e1e/mod.rar/file
http://www.mediafire.com/file/s9aovqe90xt09mm/policea.xml/file ( Police Station Fix )

Code ( for Mall Wall Fix )
// Mall Wall Fix
CreateObject( 381, 1, Vector( 372.96, 1093.82, 20.2486), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.55841), 0);

CreateObject( 381, 1, Vector( 378.66, 1093.82, 20.2486), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.55841), 0);

CreateObject( 381, 1, Vector( 383.16, 1094.12, 20.2486), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 1.55841), 0);

CreateObject( 381, 1, Vector( 400.153, 1111.65, 20.1276), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, -1.16159), 0);

CreateObject( 381, 1, Vector( 388.019, 1095.93, 20.2486), 255 ).RotateByEuler( Vector( -3.14159, -3.14159, 0.778414), 0);

CreateObject( 381, 1, Vector( 391.909, 1099.83, 20.2486), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, 0.778414), 0);

CreateObject( 381, 1, Vector( 396.008, 1103.83, 20.2486), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, 0.778414), 0);

CreateObject( 381, 1, Vector( 399.608, 1107.43, 20.2486), 255 ).RotateByEuler( Vector( 3.14159, -3.14159, 0.778414), 0);

CreateObject( 381, 1, Vector( 454.926, 1154.06, 20.0644), 255 ).RotateByEuler( Vector( 0, 0, -1.54), 0);

CreateObject( 381, 1, Vector( 449.626, 1154.06, 20.0644), 255 ).RotateByEuler( Vector( 0, 0, -1.54001), 0);

CreateObject( 381, 1, Vector( 444.526, 1154.06, 20.0644), 255 ).RotateByEuler( Vector( 0, 0, -1.54001), 0);

CreateObject( 381, 1, Vector( 427.586, 1136.64, 19.6441), 255 ).RotateByEuler( Vector( 0, 0, 1.13), 0);

CreateObject( 381, 1, Vector( 439.632, 1152.26, 19.8419), 255 ).RotateByEuler( Vector( 0, 0, -0.79), 0);

CreateObject( 381, 1, Vector( 435.432, 1148.06, 19.8419), 255 ).RotateByEuler( Vector( 0, 0, -0.79), 0);

CreateObject( 381, 1, Vector( 431.532, 1144.16, 19.8419), 255 ).RotateByEuler( Vector( 0, 0, -0.79), 0);

CreateObject( 381, 1, Vector( 427.632, 1140.26, 19.8419), 255 ).RotateByEuler( Vector( 0, 0, -0.79), 0);

CreateObject( 381, 1, Vector( 455.372, 1092.5, 19.72), 255 ).RotateByEuler( Vector( 0, 0, 1.55999), 0);

CreateObject( 381, 1, Vector( 449.533, 1092.5, 19.72), 255 ).RotateByEuler( Vector( 0, 0, 1.55999), 0);

CreateObject( 381, 1, Vector( 444.613, 1092.53, 19.72), 255 ).RotateByEuler( Vector( 0, 0, 1.55999), 0);

CreateObject( 381, 1, Vector( 427.486, 1110.33, 19.5685), 255 ).RotateByEuler( Vector( 0, 0, -1.16), 0);

CreateObject( 381, 1, Vector( 426.918, 1107.27, 19.3316), 255 ).RotateByEuler( Vector( 0, 0, 0.78), 0);

CreateObject( 381, 1, Vector( 430.748, 1103.73, 19.3316), 255 ).RotateByEuler( Vector( 0, 0, 0.78), 0);

CreateObject( 381, 1, Vector( 435.848, 1098.63, 19.3316), 255 ).RotateByEuler( Vector( 0, 0, 0.78), 0);

CreateObject( 381, 1, Vector( 439.448, 1095.03, 19.3316), 255 ).RotateByEuler( Vector( 0, 0, 0.78), 0);

CreateObject( 381, 1, Vector( 372.895, 1155.5, 20.4569), 255 ).RotateByEuler( Vector( 0, 0, -1.55999), 0);

CreateObject( 381, 1, Vector( 378.394, 1155.2, 20.4569), 255 ).RotateByEuler( Vector( 0, 0, -1.55999), 0);

CreateObject( 381, 1, Vector( 383.494, 1155.2, 20.4569), 255 ).RotateByEuler( Vector( 0, 0, -1.55999), 0);

CreateObject( 381, 1, Vector( 400.179, 1137.82, 20.1515), 255 ).RotateByEuler( Vector( 3.14159, 3.14159, 1.16159), 0);

CreateObject( 381, 1, Vector( 400.659, 1141.02, 20.0364), 255 ).RotateByEuler( Vector( -3.11009, -3.09942, -0.781121), 0);

CreateObject( 381, 1, Vector( 396.369, 1145.04, 20.0364), 255 ).RotateByEuler( Vector( -3.11009, -3.09942, -0.781121), 0);

CreateObject( 381, 1, Vector( 392.169, 1149.24, 20.0364), 255 ).RotateByEuler( Vector( -3.11009, -3.09942, -0.781121), 0);

CreateObject( 381, 1, Vector( 387.669, 1153.74, 20.0364), 255 ).RotateByEuler( Vector( -3.11009, -3.09942, -0.781121), 0);

CreateObject( 381, 1, Vector( 363.32, 1074.59, 22.0306), 255 ).RotateByEuler( Vector( 1.56, 0, 0), 0);
 // mall wall end
QuoteCurrently , the objects making mall walls collision are in world 1, you can set their world by modifying manually, place the code in OnScriptLoad

Edit
QuoteUpdate : Added missing Collision to doors of VCPD at Washington Beach
Mall Wall Fix in xml might not work since objects being added in mall interior are getting disappeared for an unknown bug, so you will have to use the object creation code instead and set the world you want to add the object in manually.

#10

File Introduction
QuoteThis file includes a fix pack and some other added stuff, details are as below


Raxor International Building Downtown
QuoteThis file will fix the missing/broken rooftop collision of Raxor International Building at Downtown




Pay and Spray Garage Doors Washington Beach & Vice Point
QuoteThis file fixes the pay and spray garage door glitch which allowed players to enter garage by its door sides



Yellow Tower Building Near NPM, Vice Point
QuoteThis file adds a roof to the missing collision of Yellow Tower building near NPM, Vice Point



VicePoint-Golf Walk Bridges
QuoteThis file adds 2 walk bridges near Dacum Inn to access golf Club



Installation:
QuotePlace either the file infix.xml in your server/store/maps folder or copy the store folder and paste in your server folder

Note
QuoteNo custom objects were used, only ingame existing objects were used for this mod

Download Link :  http://www.mediafire.com/file/izp79ixxwfi1u48/Minor_Fix.rar/file   



#11



Clan Title ; Re-Assassinatives 2x
Founder ; Spider/Inferno
Forum : http://unavailable%20currently
Discord :   https://discord.gg/XMjBy9T  //http://
Founded ; June, 2013
Clan Ranks ;
( Trial )
(Rookie)
  (Professional)
(Full Member)
(professional assasin)
Clan Tags; (R2x), [R2x], =R2x=,
R2x_ , |R2x|


Clan has been officially closed on 1st September 2020.