Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!

    1. GTANet.com

    2. GTANet 20th Anniversary

    1. GTA Online

      1. The Cayo Perico Heist
      2. Find Lobbies & Players
      3. Guides & Strategies
      4. Vehicles
      5. Content Creator
      6. Help & Support
    2. Red Dead Online

      1. Frontier Pursuits
      2. Find Lobbies & Outlaws
      3. Help & Support
    3. Crews

    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. Grand Theft Auto Series

      1. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
    6. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
    7. GTA III

      1. Guides & Strategies
      2. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

      1. Court House
    3. Suggestions

GTA: Underground - Compatible Modifications thread


Recommended Posts

19 hours ago, STAY AT HOME said:

Is first person mod,sa directX and timecyc work for gta underground

SA Direct actually works ! but timecyc is combined with LC,VC so i dont recommend using timecyc 

Link to post
Share on other sites

Hi I used "b1.0-SNAPSHOT3_3_10_Standalone_Installer" to install.
Since then my tool "Time Sync v 1.81" doesn't work anymore.

Is there a way to sync the game time back in real time?

 

Update: I find the answer byself in this thread: 

 

Edited by idefixhalle
Link to post
Share on other sites
  • 4 weeks later...

For some reason the Smooth camera mod doesn't work with Gta Underground,I've put every file into the CLEO folder but when i run the game and type in "SMCM" nothing happens,Is this cause of Gta Underground not supporting the Smooth Camera mod or is it something else?

Link to post
Share on other sites
  • 2 weeks later...
  • 4 weeks later...
  • 1 month later...
  • 2 weeks later...
On 9/22/2020 at 11:16 PM, GJGamingBro said:

We don't plan on making them compatible.

  

On 7/21/2020 at 6:41 PM, shabold said:

ImVehFt worked perfectly fine before it was patched. I hope it gets fixed soon.

This is known and we plan to fix this soon.

Edited by dkluin
Link to post
Share on other sites
  • 1 month later...
  • 1 month later...
TarRebririon

Mods that are compatible with UG(4.1.1):

 

https://www.gtaall.com/gta-san-andreas/mods/74933-vegetation-ultra-hd.html

(Can replace file)

 

https://www.gtainside.com/en/sanandreas/mods/104485-enbseries-for-low-pc/

(There is an error at startup, just ignore it)

 

https://www.gtainside.com/en/sanandreas/mods/69832-gta-v-tuning-parts/

(Compatible, you just need CFG Editor to edit the veh_mods.ide to avoid the white texture)

Link to post
Share on other sites
  • 2 weeks later...
  • 2 weeks later...

question does the custom_mods.img really works as a gta3.img? and if i wanted to use the gta_INT for installing the tuning mod? 

i mean do those files really need to be locked? people already know who made the mod is not like people wants to steal it, we just want to use some other mods in conjunction.

  • Like 2
Link to post
Share on other sites
6 hours ago, delroku said:

question does the custom_mods.img really works as a gta3.img? and if i wanted to use the gta_INT for installing the tuning mod? 

i mean do those files really need to be locked? people already know who made the mod is not like people wants to steal it, we just want to use some other mods in conjunction.

Yes, it can be used to replace pretty much anything.

  • Like 2
Link to post
Share on other sites
On 12/26/2020 at 11:53 PM, McFadden0 said:

Is UG-MP compatible with any ENB?

 

Actually yes. 

 

Good news for those who want to play with ENB Series on GTA: Underground - it appears the latest ASI version is supported! All you have to do is edit skygfx1.ini and change buildingPipe=PS2 to buildingPipe=.

Uncommenting the line out entirely also works. This has been added to our FAQ as well.

Link to post
Share on other sites
  • 1 month later...

 

Spoiler

#include <a_samp>
#include <djson>
#include <foreach>
#include <ZCMD>
#include <sscanf2>
#include <streamer>

#define DOORS_FILE              "Doors.ini"
#define MAX_DOORS               100
#define COLOR_WHITE             0xFFFFFFFF


forward LoadDoor(id);
forward DeleteDoor(id);
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);

enum dInfo
{
    Float:dExteriorX,
    Float:dExteriorY,
    Float:dExteriorZ,
    dExteriorInt,
    dExteriorVir,
    Float:dInteriorX,
    Float:dInteriorY,
    Float:dInteriorZ,
    dInteriorInt,
    dInteriorVir,
    dName[128],
    dPp
}
new DoorInfo[MAX_DOORS][dInfo];

new Iterator:Doors<MAX_DOORS>, dCount;

public OnFilterScriptInit()
{
    djson_GameModeInit();
    djAutocommit(true);
    djStyled(true);
    if(!fexist(DOORS_FILE))
    {
        print("CANNOT FIND 'Doors.ini' file. Creating new one.");
        fcreate(DOORS_FILE);
        return 1;
    }
    for(new d=0;d<MAX_DOORS;d++)
    {
        new string[128];
         format(string, sizeof(string),"Door_%d",d);
        if(djIsSet(DOORS_FILE, string)) LoadDoor(d);
    }
    return 1;
}

public OnFilterScriptExit()
{
    djson_GameModeExit();
    return 1;
}

 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    new inter = GetPlayerInterior(playerid);
    new vir = GetPlayerVirtualWorld(playerid);
    foreach(Doors, i)
    {
        if((newkeys & KEY_SPRINT) && !(oldkeys & KEY_SPRINT))
        {
            if(PlayerToPoint(2.0, playerid, DoorInfo[i][dExteriorX], DoorInfo[i][dExteriorY], DoorInfo[i][dExteriorZ]) && inter == DoorInfo[i][dExteriorInt] && vir == DoorInfo[i][dExteriorVir])
             {
                SetPlayerPos(playerid, DoorInfo[i][dInteriorX], DoorInfo[i][dInteriorY], DoorInfo[i][dInteriorZ]);
                   SetPlayerInterior(playerid, DoorInfo[i][dInteriorInt]);
                SetPlayerVirtualWorld(playerid, DoorInfo[i][dInteriorVir]);
                  return 1;
            }
        }
        if((newkeys & KEY_SPRINT) && !(oldkeys & KEY_SPRINT))
        {
            if(PlayerToPoint(2.0, playerid, DoorInfo[i][dInteriorX], DoorInfo[i][dInteriorY], DoorInfo[i][dInteriorZ]) && inter == DoorInfo[i][dInteriorInt] && vir == DoorInfo[i][dInteriorVir])
            {
                SetPlayerPos(playerid, DoorInfo[i][dExteriorX], DoorInfo[i][dExteriorY], DoorInfo[i][dExteriorZ]);
                SetPlayerInterior(playerid, DoorInfo[i][dExteriorInt]);
                SetPlayerVirtualWorld(playerid, DoorInfo[i][dExteriorVir]);
                return 1;
            }
        }
    }
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    new inter = GetPlayerInterior(playerid);
    new vir = GetPlayerVirtualWorld(playerid);
    foreach(Doors, d)
    if(PlayerToPoint(2.0, playerid, DoorInfo[d][dExteriorX], DoorInfo[d][dExteriorY], DoorInfo[d][dExteriorZ]) && inter == DoorInfo[d][dExteriorInt] && vir == DoorInfo[d][dExteriorVir])
    {
        new string[128];
        format(string, sizeof(string), "%s %d", DoorInfo[d][dName], d);
        GameTextForPlayer(playerid, string, 5000, 3);
    }
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}
COMMAND:aentrance(playerid, params[])
{
    new cmd[128], file[128], string2[128];
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params, "s[128]", cmd) != 0)
        {
               return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /aentrance [create | interior | name | delete]");
        }
         if(strcmp("create", cmd, true, 6) == 0)
         {
             new name[128];
             if(!sscanf(params, "s[128]s[128]", cmd, name))
             {
                new Float:x, Float:y, Float:z, interior, vir;
                GetPlayerPos(playerid, x, y, z);
                interior = GetPlayerInterior(playerid);
                vir = GetPlayerVirtualWorld(playerid);
                AddDoor(x, y, z, interior, vir, name);
                SendClientMessage(playerid, COLOR_WHITE, "You've created a new door.");
                return 1;
            }
            else SendClientMessage(playerid, COLOR_WHITE, "USAGE: /aentrance create [name]");
        }
        if(strcmp("interior", cmd, true, 😎 == 0)
         {
             new id;
             if(!sscanf(params, "s[128]id", cmd, id))
             {
                 format(file, sizeof(file), "Door_%d", id);
                 if(djIsSet(DOORS_FILE, file))
                {
                    new Float:x, Float:y, Float:z, interior;
                    GetPlayerPos(playerid, x, y, z);
                    interior = GetPlayerInterior(playerid);
                    format(string2, sizeof(string2), "Door_%d/InteriorX", id); djSetFloat(DOORS_FILE, string2, x);
                    format(string2, sizeof(string2), "Door_%d/InteriorY", id); djSetFloat(DOORS_FILE, string2, y);
                    format(string2, sizeof(string2), "Door_%d/InteriorZ", id); djSetFloat(DOORS_FILE, string2, z);
                    format(string2, sizeof(string2), "Door_%d/InteriorInt", id); djSetInt(DOORS_FILE, string2, interior);
                    SendClientMessage(playerid, COLOR_WHITE, "You've changed door's interior.");
                    LoadDoor(id);
                    return 1;
                }
                else SendClientMessage(playerid, COLOR_WHITE, "ERROR: There's no entrance with that ID.");
            }
            else SendClientMessage(playerid, COLOR_WHITE, "USAGE: /aentrance interior [id]");
        }
        if(strcmp("name", cmd, true, 4) == 0)
         {
             new id, name[128];
             if(!sscanf(params, "s[128]ds[128]", cmd, id, name))
             {
                 format(file, sizeof(file), "Door_%d", id);
                 if(djIsSet(DOORS_FILE, file))
                {
                    format(string2, sizeof(string2), "Door_%d/Name", id); djSet(DOORS_FILE, string2, name);
                    LoadDoor(id);
                    SendClientMessage(playerid, COLOR_WHITE, "You've changed entrance's name.");
                    return 1;
                }
                else SendClientMessage(playerid, COLOR_WHITE, "ERROR: There's no entrance with that ID.");
            }
            else SendClientMessage(playerid, COLOR_WHITE, "USAGE: /aentrance name [id] [new name]");
        }
        if(strcmp("delete", cmd, true, 6) == 0)
        {
            new id;
            if(!sscanf(params, "s[128]d", cmd, id))
            {
                   format(file, sizeof(file), "Door_%d", id);
                 if(djIsSet(DOORS_FILE, file))
                {
                    DeleteDoor(id);
                    SendClientMessage(playerid, COLOR_WHITE, "You've deleted an entrance.");
                    return 1;
                }
                else SendClientMessage(playerid, COLOR_WHITE, "ERROR: There's no entrance with that ID.");
            }
            else SendClientMessage(playerid, COLOR_WHITE, "USAGE: /aentrance usun [id]");
        }
    }
    else SendClientMessage(playerid, COLOR_WHITE, "ERROR: You aren't allowed to use this command!");
    return 1;
}
public LoadDoor(id)
{
    new string2[128], name[128];
    DestroyDynamicPickup(DoorInfo[id][dPp]);
    format(string2, sizeof(string2),"Door_%d/ExteriorX", id); DoorInfo[id][dExteriorX] = djFloat(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/ExteriorY", id); DoorInfo[id][dExteriorY] = djFloat(DOORS_FILE, string2);
      format(string2, sizeof(string2),"Door_%d/ExteriorZ", id); DoorInfo[id][dExteriorZ] = djFloat(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/ExteriorInt", id); DoorInfo[id][dExteriorInt] = djInt(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/ExteriorVir", id); DoorInfo[id][dExteriorVir] = djInt(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/InteriorX", id); DoorInfo[id][dInteriorX] = djFloat(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/InteriorY", id); DoorInfo[id][dInteriorY] = djFloat(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/InteriorZ", id); DoorInfo[id][dInteriorZ] = djFloat(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/InteriorInt", id); DoorInfo[id][dInteriorInt] = djInt(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/InteriorVir", id); DoorInfo[id][dInteriorVir] = djInt(DOORS_FILE, string2);
     format(string2, sizeof(string2),"Door_%d/Name", id); format(name, sizeof(name), "%s", dj(DOORS_FILE, string2)); DoorInfo[id][dName] = name;
     Itter_Add(Doors, Iter_Count(Doors) + 1);
     DoorInfo[id][dPp] = CreateDynamicPickup(1239, 2, DoorInfo[id][dExteriorX], DoorInfo[id][dExteriorY], DoorInfo[id][dExteriorZ], DoorInfo[id][dExteriorVir], DoorInfo[id][dExteriorInt], -1, 50.0);
    return 1;
}
public DeleteDoor(id)
{
    new string2[128], name[128];
    DoorInfo[id][dExteriorX] = 0;
    DoorInfo[id][dExteriorY] = 0;
    DoorInfo[id][dExteriorZ] =  0;
    DoorInfo[id][dExteriorInt] = 0;
    DoorInfo[id][dExteriorVir] = 0;
    DoorInfo[id][dInteriorX] = 0;
    DoorInfo[id][dInteriorY] =  0;
    DoorInfo[id][dInteriorZ] = 0;
    DoorInfo[id][dInteriorInt] = 0;
    DoorInfo[id][dInteriorVir] = 0;
    format(name, sizeof(name), "Brak"); DoorInfo[id][dName] = name;
    format(string2, sizeof(string2), "Door_%d", id); djUnset(DOORS_FILE, string2);
    DestroyDynamicPickup(DoorInfo[id][dPp]);
    Iter_Remove(Doors, id);
    return 1;
}
stock AddDoor(Float:x, Float:y, Float:z, interior, vir, name[])
{
    new string2[128], namestring[128];
    Iter_Add(Doors, Iter_Count(Doors)+1);
    dCount = Iter_Count(Doors);
    format(string2, sizeof(string2), "Door_%d/ExteriorX", dCount); djSetFloat(DOORS_FILE, string2, x);
    format(string2, sizeof(string2), "Door_%d/ExteriorY", dCount); djSetFloat(DOORS_FILE, string2, y);
    format(string2, sizeof(string2), "Door_%d/ExteriorZ", dCount); djSetFloat(DOORS_FILE, string2, z);
    format(string2, sizeof(string2), "Door_%d/ExteriorInt", dCount); djSetInt(DOORS_FILE, string2, interior);
    format(string2, sizeof(string2), "Door_%d/ExteriorVir", dCount); djSetInt(DOORS_FILE, string2, vir);
    format(string2, sizeof(string2), "Door_%d/InteriorX", dCount); djSetFloat(DOORS_FILE, string2, 0);
    format(string2, sizeof(string2), "Door_%d/InteriorY", dCount); djSetFloat(DOORS_FILE, string2, 0);
    format(string2, sizeof(string2), "Door_%d/InteriorZ", dCount); djSetFloat(DOORS_FILE, string2, 0);
    format(string2, sizeof(string2), "Door_%d/InteriorInt", dCount); djSetInt(DOORS_FILE, string2, 0);
    format(string2, sizeof(string2), "Door_%d/InteriorVir", dCount); djSetInt(DOORS_FILE, string2, dCount);
    format(string2, sizeof(string2), "Door_%d/Name", dCount); djSet(DOORS_FILE, string2, name);
    DoorInfo[dCount][dExteriorX] = x;
    DoorInfo[dCount][dExteriorY] = y;
    DoorInfo[dCount][dExteriorZ] =  z;
    DoorInfo[dCount][dExteriorInt] = interior;
    DoorInfo[dCount][dExteriorVir] = vir;
    DoorInfo[dCount][dInteriorX] = 0;
    DoorInfo[dCount][dInteriorY] =  0;
    DoorInfo[dCount][dInteriorZ] = 0;
    DoorInfo[dCount][dInteriorInt] = 0;
    DoorInfo[dCount][dInteriorVir] = dCount;
    format(namestring, sizeof(namestring), "%s", name);
    DoorInfo[dCount][dName] = namestring;
    DoorInfo[dCount][dPp] = CreateDynamicPickup(1239, 2, DoorInfo[dCount][dExteriorX], DoorInfo[dCount][dExteriorY], DoorInfo[dCount][dExteriorZ], DoorInfo[dCount][dExteriorVir], DoorInfo[dCount][dExteriorInt], -1, 50.0);
    return 1;
}
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    tempposx = (oldposx -x);
    tempposy = (oldposy -y);
    tempposz = (oldposz -z);
    //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
        return 1;
    }
    return 0;
}
stock fcreate(filename[]) {
    if (fexist(filename)) return false;
    new File:fhnd;
    fhnd=fopen(filename,io_write);
    if (fhnd) {
        fclose(fhnd);
        return true;
    }
    return false;
}

In the spoiler is the .pwn code.

Hello, This probably isn't the place for this, but I used a filterscript called Dynamic Entrances that made all doors work like in the base game. You'd just walk into the yellow arrow and then the door animation played. Then you were inside and could exit the same way with no stopping and typing required. It made the server awesome, because no-one had to stop and type at all. (This would make every server better) But anyway, When I used this script (copied my already working compiled one from my SAMP server) in UGMP it just removed the ability to enter doors at all.

I didn't make this script. I found it a long time ago and now can't seem to find it anywhere online. I guess I'm just hoping one of you guys can do a simple fix to the code or point out what was done wrong since (I assume) you are geniuses with this stuff.

Thanks for reading and for your time.

Edited by cwcfix
Misplaced Words
Link to post
Share on other sites
  • 4 weeks later...
nogueira2222

hi, who can i add new cars in gta underground (the ggmm doesn't work  and the IMG tools to) 

Link to post
Share on other sites
lockout18yt

Is VehFuncs compatible? My game crashes everytime I install it, but I don't know if it's just me and some other mod I have, or UG

Link to post
Share on other sites
nogueira2222
21 hours ago, DoomReaper said:

Via custom_mods.img

access violation at address 00460026 in module imgtool.exe

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.