Skip to content
View in the app

A better way to browse. Learn more.

LCPDFR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CREATE_MISSION_TRAIN

Featured Replies

Vehicle CREATE_MISSION_TRAIN(int variation, float x, float y, float z, BOOL direction) // 

Has this ever worked for anyone? i even tried an exact copy of the decompiled scripts:

52252: l_910 = VEHICLE::CREATE_MISSION_TRAIN(0, -498.4123f, 4304.3f, 88.40305f, 1);

All it does is crash GTA entirely (not only lspdfr)

  • Replies 52
  • Views 5k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • alexguirre
    alexguirre

    This worked for me: new Model("freight").LoadAndWait(); new Model("freightcar").LoadAndWait(); new Model("freightgrain").LoadAndWait();

  • This thread escalated faster than i thought :)

  • Your weekend??? What about my night, I should have never brought it up :p

Posted Images

Oooh. If you can get a train working that would be awesome... I have a few ideas for callouts involving trains but haven't yet tried to actually make the train work. 

[REL] Coastal Callouts: An action-packed mod with new vehicles, maps, capabilities, and callouts in and around the waters of Los Santos

[REL] Police Tape: Make your scenes more realistic while stopping peds and traffic

[REL] Better EMS: Realistic and dynamic EMS response

Join the Parks Benefactor Program to support my work and get early beta access!

  • Author

Well so do I that's why I'm asking :) But for some reason even copying the calls from the decompiled scripts exactly as they are crashes the game.

Which decompiled script has the train mission stuff you're looking at? I can think of a few train-related missions from singleplayer. Do they all do it the same way? 

[REL] Coastal Callouts: An action-packed mod with new vehicles, maps, capabilities, and callouts in and around the waters of Los Santos

[REL] Police Tape: Make your scenes more realistic while stopping peds and traffic

[REL] Better EMS: Realistic and dynamic EMS response

Join the Parks Benefactor Program to support my work and get early beta access!

  • Author

gtadev.png

Spoiler

Windows Grep Search Results
'CREATE_MISSION_TRAIN' in *.txt: 34 matches in 26 files. 693 files searched. 0 files skipped.

Plain | File contents ü | File names ü | Line numbers ü | Whole line ü | Word wrap | Fixed Font | Match window: +/- 0ü | 1 | 2 | 3 | 4 | 5 lines
 
E:\_GTADEV\decompiled\bj.txt 
01149: num1027 = VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1);
  
E:\_GTADEV\decompiled\exile3.txt 
44582: l_909 = VEHICLE::CREATE_MISSION_TRAIN(17, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 0);
52252: l_910 = VEHICLE::CREATE_MISSION_TRAIN(0, -498.4123f, 4304.3f, 88.40305f, 1);
  
E:\_GTADEV\decompiled\family4.txt 
43714: setElem(VEHICLE::CREATE_MISSION_TRAIN(18, 534.5f, -946.8f, 26.5f, 0), 1, &l_4044, 4);
43718: setElem(VEHICLE::CREATE_MISSION_TRAIN(18, 517.6304f, -1060.372f, 26.7011f, 0), 2, &l_4044, 4);
  
E:\_GTADEV\decompiled\fbi3.txt 
54391: l_2877 = VEHICLE::CREATE_MISSION_TRAIN(15, 217.616f, -2215.75f, 11.6666f, 1);
  
E:\_GTADEV\decompiled\finaleb.txt 
31542: setElem(VEHICLE::CREATE_MISSION_TRAIN(19, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1), 2, &l_45, 8);
31556: setElem(VEHICLE::CREATE_MISSION_TRAIN(19, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1), 2, &l_45, 8);
37797: setElem(VEHICLE::CREATE_MISSION_TRAIN(19, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1), 2, &l_45, 8);
  
E:\_GTADEV\decompiled\finale_heist2a.txt 
54928: l_2656 = VEHICLE::CREATE_MISSION_TRAIN(24, 181.1f, -1198.8f, 37.6f, 1);
  
E:\_GTADEV\decompiled\finale_heist2b.txt 
35215: l_948 = VEHICLE::CREATE_MISSION_TRAIN(0, 2324.3f, 2670.7f, 44.45f, 1);
  
E:\_GTADEV\decompiled\finale_heist_prepd.txt 
13678: l_44 = VEHICLE::CREATE_MISSION_TRAIN(7, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 0);
37975: l_44 = VEHICLE::CREATE_MISSION_TRAIN(7, 2928.826f, 3572.775f, 54.0699f, 1);
  
E:\_GTADEV\decompiled\franklin0.txt 
31524: setElem(VEHICLE::CREATE_MISSION_TRAIN(num3, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), num7), A_0, &l_1387, 4);
  
E:\_GTADEV\decompiled\franklin1.txt 
12210: wPtr(VEHICLE::CREATE_MISSION_TRAIN(rPtr((A_0) + 4), rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), A_2), A_0);
  
E:\_GTADEV\decompiled\jewelry_heist.txt 
44757: l_1530 = VEHICLE::CREATE_MISSION_TRAIN(2, 542.7376f, -1536.972f, 21.3978f, 1);
  
E:\_GTADEV\decompiled\martin1.txt 
51540: l_3954 = VEHICLE::CREATE_MISSION_TRAIN(22, 1800.49f, 3504.19f, 37.9f, 1);
  
E:\_GTADEV\decompiled\michael1.txt 
31403: wPtr(VEHICLE::CREATE_MISSION_TRAIN(rPtr((A_0) + 8), rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), A_2), A_0);
  
E:\_GTADEV\decompiled\nigel3.txt 
28964: l_541 = VEHICLE::CREATE_MISSION_TRAIN(10, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1);
  
E:\_GTADEV\decompiled\player_scene_ft_franklin1.txt 
02032: setElem(VEHICLE::CREATE_MISSION_TRAIN(0, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), 1), num3, &l_276, 4);
  
E:\_GTADEV\decompiled\re_abandonedcar.txt 
00369: l_248 = VEHICLE::CREATE_MISSION_TRAIN(0, 1063.595f, 3227.571f, 39.3899f, 1);
  
E:\_GTADEV\decompiled\rural_bank_heist.txt 
24768: l_1555 = VEHICLE::CREATE_MISSION_TRAIN(2, 2057.99f, 3651.983f, 37.5503f, 1);
29621: l_1555 = VEHICLE::CREATE_MISSION_TRAIN(17, -167.2592f, 6115.083f, 31.4414f, 1);
37193: l_1555 = VEHICLE::CREATE_MISSION_TRAIN(2, -133.0217f, 6149.557f, 30.5636f, 1);
37214: l_1556 = VEHICLE::CREATE_MISSION_TRAIN(2, -157.9383f, 6124.463f, 30.5448f, 1);
  
E:\_GTADEV\decompiled\tonya1.txt 
36962: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2640, &l_686, 92) + 20)), getElemPtr(0, &l_2771, 80) + 28);
  
E:\_GTADEV\decompiled\tonya2.txt 
36881: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2640, &l_686, 92) + 20)), getElemPtr(0, &l_2771, 80) + 28);
  
E:\_GTADEV\decompiled\tonya3.txt 
36869: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2640, &l_686, 92) + 20)), getElemPtr(0, &l_2771, 80) + 28);
  
E:\_GTADEV\decompiled\tonya4.txt 
36865: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2640, &l_686, 92) + 20)), getElemPtr(0, &l_2771, 80) + 28);
  
E:\_GTADEV\decompiled\tonya5.txt 
36873: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2640, &l_686, 92) + 20)), getElemPtr(0, &l_2771, 80) + 28);
  
E:\_GTADEV\decompiled\towing.txt 
06191: wPtr(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), rPtr(getElemPtr(l_2597, &l_643, 92) + 20)), getElemPtr(0, &l_2710, 80) + 28);
  
E:\_GTADEV\decompiled\traffick_air.txt 
12019: setElem(VEHICLE::CREATE_MISSION_TRAIN(6, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), getElem(0, (A_0) + 116, 4)), 0, (A_1) + 1248, 4);
  
E:\_GTADEV\decompiled\train_create_widget.txt 
00058: l_0 = VEHICLE::CREATE_MISSION_TRAIN(l_4, rPtrOfs(_s, 0), rPtrOfs(_s, 4), rPtrOfs(_s, 8), l_6);
  
E:\_GTADEV\decompiled\trevor2.txt 
34035: l_5179 = VEHICLE::CREATE_MISSION_TRAIN(6, -534.3039f, 4574.407f, 89.3176f, 0);
  

 

 

Edited by khorio

Here's an excerpt from bj.c4, I modified it a little bit to improve readability:

if ((!ENTITY::DOES_ENTITY_EXIST(vTrain)) &&
    (GAMEPLAY::GET_DISTANCE_BETWEEN_COORDS(
      ENTITY::GET_ENTITY_COORDS(PLAYER::PLAYER_PED_ID(), 1),
      GetTrainSpawnPos(&v_12, 0), 0) <= 200.0))
{
    vTrain = VEHICLE::CREATE_MISSION_TRAIN(6, GetTrainSpawnPos(&v_12, 0), 1);
  
    if (!ENTITY::IS_ENTITY_DEAD(vTrain))
    {
        VEHICLE::SET_TRAIN_CRUISE_SPEED(vTrain, 7.5);
    }
}

...so it checks if a player is close to the spawn location before it spawns a train. I'd 1) mark the location with a blip 2) locate myself in the immediate vicinity 3) try to spawn the train.

Edited by LtFlash

  • Author
18 minutes ago, LtFlash said:

 

CRASH! nope doesn't work :) game crashes

used this one:

E:\_GTADEV\decompiled\fbi3.txt 
54391: l_2877 = VEHICLE::CREATE_MISSION_TRAIN(15, 217.616f, -2215.75f, 11.6666f, 1);
  

Which is a train track in the harbor, i was positioned in mirror park, doesn't seem to work.

RPH log:

Spoiler

[03/06/2016 21:08:09.936] LSPD First Response: 
[03/06/2016 21:08:09.936] LSPD First Response: ==============================
[03/06/2016 21:08:09.936] LSPD First Response: UNHANDLED EXCEPTION DURING GAME FIBER TICK
[03/06/2016 21:08:09.937] LSPD First Response: ------------------------------
[03/06/2016 21:08:09.937] LSPD First Response: Origin: Game fiber "<UNNAMED THREAD>".
[03/06/2016 21:08:09.937] LSPD First Response: ------------------------------
[03/06/2016 21:08:09.937] LSPD First Response: Exception type: System.AccessViolationException
[03/06/2016 21:08:09.938] LSPD First Response: Exception message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
[03/06/2016 21:08:09.938] LSPD First Response: ------------------------------
[03/06/2016 21:08:09.938] LSPD First Response: Inner exceptions:
[03/06/2016 21:08:09.938] LSPD First Response: ------------------------------
[03/06/2016 21:08:09.938] LSPD First Response: Stack trace:
[03/06/2016 21:08:09.939] LSPD First Response: at CNativeInvocationInfoV.PushArgument<__int64>(CNativeInvocationInfoV* , Int64 )
[03/06/2016 21:08:09.939] at Rage.Native.NativeFunction.CallByAddress(IntPtr address, Type returnType, NativeArgument[] arguments)
[03/06/2016 21:08:09.939] at Rage.Native.DynamicNativeFunction.TryInvokeMember(InvokeMemberBinder binder, Object[] args, Object& result)
[03/06/2016 21:08:09.939] at CallSite.Target(Closure , CallSite , Object , Int32 , Single , Single , Single , Int32 )
[03/06/2016 21:08:09.940] at System.Dynamic.UpdateDelegates.UpdateAndExecute6[T0,T1,T2,T3,T4,T5,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5)
[03/06/2016 21:08:09.940] at LSPDFR_Khallouts.Callouts.Special_Ops_Security.<runthings>b__15_0() in E:\_GTADEV\LSPDFR Khallouts\LSPDFR Khallouts\Callouts\Special_Ops_Security.cs:line 100
[03/06/2016 21:08:09.940] at Rage.GameFiber.Main()

 

 

Edited by khorio

Yea, I checked it now and it crashes my game too, throws "AccessViolation" before that. No idea why.

I added "SET_MISSION_FLAG", true before calling CREATE_ so the RAGE shows it's red msg of an exception first and the CTD occurs after 2-3 seconds. I wonder if the train model doesn't need to be loaded first but that's only my guess. We'd also need to make more research in native scripts.

  • Author
bool flag8 = flag7 & STREAMING::HAS_MODEL_LOADED(0x3D6AAA9B);

from fbi3

freight = 0x3D6AAA9B,1030400667,1030400667 (Freight Train)

Spoiler

Search "0x3D6AAA9B" (10 hits in 5 files)
  E:\_GTADEV\decompiled\bj.txt (3 hits)
	Line 14880:     if ((num2 != 0x3D6AAA9B) && (num2 != 0x33C9E158))
	Line 17325:         sub_196E1(A_2, 0x3D6AAA9B);
	Line 19733:             sub_1DED0(A_0, 0x3D6AAA9B);
  E:\_GTADEV\decompiled\exile3.txt (1 hit)
	Line 32090:             return 0x3D6AAA9B;
  E:\_GTADEV\decompiled\fbi3.txt (3 hits)
	Line 54076:             sub_29339(&l_705, 0x3D6AAA9B);
	Line 54384:                 bool flag8 = flag7 & STREAMING::HAS_MODEL_LOADED(0x3D6AAA9B);
	Line 54392:                     sub_3373(&l_705, 0x3D6AAA9B);
  E:\_GTADEV\decompiled\train_create_widget.txt (2 hits)
	Line 27:     STREAMING::REQUEST_MODEL(0x3D6AAA9B);
	Line 35:     flag1 = STREAMING::HAS_MODEL_LOADED(0x3D6AAA9B) == 0;
  E:\_GTADEV\vehicles.txt (1 hit)
	Line 112: freight = 0x3D6AAA9B,1030400667,1030400667 (Freight Train)

 

 

Edited by khorio

Bingo! Theoretically that must be it, look at this (from train_create_widget):

Spoiler

STREAMING::REQUEST_MODEL(${freight});
    STREAMING::REQUEST_MODEL(${freightcar});
    STREAMING::REQUEST_MODEL(${freightgrain});
    STREAMING::REQUEST_MODEL(${freightcont1});
    STREAMING::REQUEST_MODEL(${freightcont2});
    STREAMING::REQUEST_MODEL(${tankercar});
    STREAMING::REQUEST_MODEL(${metrotrain});
    while (((((((!STREAMING::HAS_MODEL_LOADED(${freight})) || (!STREAMING::HAS_MODEL_LOADED(${freightcar}))) || (!STREAMING::HAS_MODEL_LOADED(${freightgrain}))) || (!STREAMING::HAS_MODEL_LOADED(${freightcont1}))) || (!STREAMING::HAS_MODEL_LOADED(${freightcont2}))) || (!STREAMING::HAS_MODEL_LOADED(${tankercar}))) || (!STREAMING::HAS_MODEL_LOADED(${metrotrain}))) {
        SYSTEM::WAIT(0);
    }
    while (1) {
        SYSTEM::WAIT(0);
        if (!PED::IS_PED_INJURED(PLAYER::PLAYER_PED_ID())) {
            if (l_7) {
                if (ENTITY::DOES_ENTITY_EXIST(l_0)) {
                    VEHICLE::DELETE_MISSION_TRAIN(&l_0);
                }
                l_0 = VEHICLE::CREATE_MISSION_TRAIN(l_4, l_1, l_6);
                l_7 = 0;
            }
            if (l_9) {
                l_1/*{3}*/ = CAM::_GET_GAMEPLAY_CAM_COORDS();
                l_9 = 0;
            }
            if (VEHICLE::IS_VEHICLE_DRIVEABLE(l_0, 0) && (!ENTITY::IS_ENTITY_DEAD(l_0))) {
                VEHICLE::SET_TRAIN_SPEED(l_0, l_5);
                VEHICLE::SET_TRAIN_CRUISE_SPEED(l_0, l_5);
            }
            if (l_8) {
                sub_1a4();
            }
        }

 

I can test this later today, now got some other work to do. You can try it yourself khorio. I'd be more than happy to see it working.

  • Author

this is gonna be a long night...testing now :p

                    if (Game.IsKeyDown(Keys.Y))
                    {
                        NativeFunction.Natives.REQUEST_MODEL(0x3D6AAA9B);

                        while (!NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x3D6AAA9B))
                        {
                            GameFiber.Yield();
                        }
                        if (NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x3D6AAA9B))
                        {
                            Train = NativeFunction.Natives.CREATE_MISSION_TRAIN(15, 217.616f, -2215.75f, 11.6666f, 1);
                        }
                    }

Crash again, but maybe my programming isn't that good :)

I think the first int param (variation) corresponds with models which needs to be loaded = we'd need the hashes or string names of all of models called:

STREAMING::REQUEST_MODEL(${freight});
    STREAMING::REQUEST_MODEL(${freightcar});
    STREAMING::REQUEST_MODEL(${freightgrain});
    STREAMING::REQUEST_MODEL(${freightcont1});
    STREAMING::REQUEST_MODEL(${freightcont2});

so we could load them all and check again.

here are hashes; http://www.se7ensins.com/forums/threads/gta-v-vehicle-hashes-list.988584/

Edited by LtFlash

  • Author
freight = 0x3D6AAA9B,1030400667,1030400667 (Freight Train)
freightcar = 0x0AFD22A6,184361638,184361638 (Train Well Car)
freightcont1 = 0x36DCFF98,920453016,920453016 (Train Container)
freightcont2 = 0x0E512E79,240201337,240201337 (Train Container Livery)
freightgrain = 0x264D9262,642617954,642617954(Train Boxcar)
freighttrailer = 0xD1ABB666,3517691494,-777275802 (Freight Train Flatbed)

Like this?

That's it, alot of coding. Maybe load and check all in a loop and use bools to ensure all of them are in memory? BS, you don't even need bools, just use for loop and an array of hashes, it'll stay in the loop till the last model is not loaded.

Edited by LtFlash

  • Author

Well i could load them all and wait until hasmodelloaded on all is true

Spoiler

                        NativeFunction.Natives.REQUEST_MODEL(0x3D6AAA9B);
                        NativeFunction.Natives.REQUEST_MODEL(0xAFD22A6);
                        NativeFunction.Natives.REQUEST_MODEL(0x264D9262);
                        NativeFunction.Natives.REQUEST_MODEL(0x36DCFF98);
                        NativeFunction.Natives.REQUEST_MODEL(0xE512E79);
                        NativeFunction.Natives.REQUEST_MODEL(0x22EDDC30);
                        NativeFunction.Natives.REQUEST_MODEL(0x33C9E158);

                        while (!NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x3D6AAA9B) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0xAFD22A6) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x264D9262) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x36DCFF98) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0xE512E79) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x22EDDC30) ||
                                !NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x33C9E158)) 
                        {
                            GameFiber.Yield();
                        }
                        if (NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x3D6AAA9B) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0xAFD22A6) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x264D9262) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x36DCFF98) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0xE512E79) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x22EDDC30) &&
                            NativeFunction.CallByName<bool>("HAS_MODEL_LOADED", 0x33C9E158))
                        {
                            Train = NativeFunction.Natives.CREATE_MISSION_TRAIN(15, 217.616f, -2215.75f, 11.6666f, 1);
                        }
                    }

 

Should work then?

Edited by khorio

This worked for me:

                    new Model("freight").LoadAndWait();
                    new Model("freightcar").LoadAndWait();
                    new Model("freightgrain").LoadAndWait();
                    new Model("freightcont1").LoadAndWait();
                    new Model("freightcont2").LoadAndWait();
                    new Model("freighttrailer").LoadAndWait();

                    uint handle = NativeFunction.CallByName<uint>("CREATE_MISSION_TRAIN", 15, 217.616f, -2215.75f, 11.6666f, 1);
                    NativeFunction.CallByName<uint>("SET_TRAIN_SPEED", handle, 15.0f);
                    NativeFunction.CallByName<uint>("SET_TRAIN_CRUISE_SPEED", handle, 15.0f);

 

You might also want to use DELETE_ALL_TRAINS() and SET_RANDOM_TRAINS(false) to prevent the game spawning another train in the same location, this is what happens when you don't do that, at least it doesn't crash :)
 

Spoiler

dhgfgh.png

 

And when you don't want the train anymore, remember to use SET_MISSION_TRAIN_AS_NO_LONGER_NEEDED.

Edited by alexguirre

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.