Skip to content

Instantly share code, notes, and snippets.

@draobrehtom
Created March 6, 2026 13:40
Show Gist options
  • Select an option

  • Save draobrehtom/a97d73f433ecb17000563b3e0625aae8 to your computer and use it in GitHub Desktop.

Select an option

Save draobrehtom/a97d73f433ecb17000563b3e0625aae8 to your computer and use it in GitHub Desktop.
Messages from CFX discord #redm-research channel dated by 6th of March, 2026
[
{
"id": "643437994904125442",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "omg frist!!",
"timestamp": "2019-11-11T14:12:52.485+01:00"
},
{
"id": "643438046875746354",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nimoa",
"author_id": "195396636783017984",
"content": "u're so fristy",
"timestamp": "2019-11-11T14:13:04.876+01:00"
},
{
"id": "643438069135179806",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mmdsniper",
"author_id": "388082406189432835",
"content": "good",
"timestamp": "2019-11-11T14:13:10.183+01:00"
},
{
"id": "643438069369929729",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "Wew",
"timestamp": "2019-11-11T14:13:10.239+01:00"
},
{
"id": "643438082061893632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mmdsniper",
"author_id": "388082406189432835",
"content": "wow",
"timestamp": "2019-11-11T14:13:13.265+01:00"
},
{
"id": "643438149795708936",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nimoa",
"author_id": "195396636783017984",
"content": "🕵",
"timestamp": "2019-11-11T14:13:29.414+01:00"
},
{
"id": "643438171102904332",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "wew'",
"timestamp": "2019-11-11T14:13:34.494+01:00"
},
{
"id": "643438342465257482",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "synthesthea",
"author_id": "144530384347070464",
"content": "👀",
"timestamp": "2019-11-11T14:14:15.35+01:00"
},
{
"id": "643438352288186398",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mmdsniper",
"author_id": "388082406189432835",
"content": ":hipster:",
"timestamp": "2019-11-11T14:14:17.692+01:00"
},
{
"id": "643446061070811146",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "Hello cowboy",
"timestamp": "2019-11-11T14:44:55.609+01:00"
},
{
"id": "643460573014654997",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "simonedambrosio__",
"author_id": "220921916414885889",
"content": "Hello",
"timestamp": "2019-11-11T15:42:35.526+01:00"
},
{
"id": "643460980747141150",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "@Simone D'Ambrosio Hello fro",
"timestamp": "2019-11-11T15:44:12.737+01:00"
},
{
"id": "643462807593025536",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "simonedambrosio__",
"author_id": "220921916414885889",
"content": "Minchia che fro",
"timestamp": "2019-11-11T15:51:28.291+01:00"
},
{
"id": "643463084958023681",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "%strike 220921916414885889 English only, offtopic.",
"timestamp": "2019-11-11T15:52:34.42+01:00"
},
{
"id": "643463088598810634",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "KingRich, you have received a strike (Reason: `English only, offtopic.`). Total 3 strikes (1 in the past 30 days).",
"timestamp": "2019-11-11T15:52:35.288+01:00"
},
{
"id": "643665630834458634",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "woodenknives",
"author_id": "200784861399613440",
"content": "😮",
"timestamp": "2019-11-12T05:17:25.12+01:00"
},
{
"id": "643670722786492417",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "first but not first",
"timestamp": "2019-11-12T05:37:39.136+01:00"
},
{
"id": "643671286328852481",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mouseymonster",
"author_id": "212397311580438530",
"content": "last",
"timestamp": "2019-11-12T05:39:53.495+01:00"
},
{
"id": "643671669902278656",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "If your not first your last-RICKY BOBBY",
"timestamp": "2019-11-12T05:41:24.946+01:00"
},
{
"id": "643673286152290330",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "brucemalis",
"author_id": "189066543211085824",
"content": "true",
"timestamp": "2019-11-12T05:47:50.29+01:00"
},
{
"id": "643692603824668672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "Keep this channel on topic.",
"timestamp": "2019-11-12T07:04:35.982+01:00"
},
{
"id": "644290640095739944",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "clarjon1",
"author_id": "162279935740870656",
"content": "Could I get clarification on what this channel is for? It's a bit vague to me I'm afraid.",
"timestamp": "2019-11-13T22:40:58.94+01:00"
},
{
"id": "644290763613667348",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Investigating game stuff I assume",
"timestamp": "2019-11-13T22:41:28.389+01:00"
},
{
"id": "644290783876481034",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "likely similar to #deleted-channel, but for RedM",
"timestamp": "2019-11-13T22:41:33.22+01:00"
},
{
"id": "644290850611920926",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "clarjon1",
"author_id": "162279935740870656",
"content": "Ahh, ty. Seems a bit obvious in hindsight.",
"timestamp": "2019-11-13T22:41:49.131+01:00"
},
{
"id": "644296106884464652",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "destroydrm",
"author_id": "140378625726742528",
"content": "So @xin found the native to change a ped's inner core value. \n`N_0xc6258f41d86676e0` with args: ped, core (0, 1 or 2 for health/stamina/deadeye respectively), status (0.0-1.0)",
"timestamp": "2019-11-13T23:02:42.324+01:00"
},
{
"id": "644299095137320980",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "%strike @pup channel misuse",
"timestamp": "2019-11-13T23:14:34.779+01:00"
},
{
"id": "644299098807205888",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "HÜMAN, you have received a strike (Reason: `channel misuse`). Total 1 strikes (1 in the past 30 days).",
"timestamp": "2019-11-13T23:14:35.654+01:00"
},
{
"id": "644299159985192961",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andromeda6609",
"author_id": "480791426553085966",
"content": "thought it was a mute?",
"timestamp": "2019-11-13T23:14:50.24+01:00"
},
{
"id": "644299203002236952",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andromeda6609",
"author_id": "480791426553085966",
"content": "eh fuck it",
"timestamp": "2019-11-13T23:15:00.496+01:00"
},
{
"id": "644299218563104774",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "oh, forgot you were a moderator",
"timestamp": "2019-11-13T23:15:04.206+01:00"
},
{
"id": "644308301923876874",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xinerki",
"author_id": "190057412282023937",
"content": "@Jaymo well actually jedijosh did i just forwarded it to here",
"timestamp": "2019-11-13T23:51:09.848+01:00"
},
{
"id": "644391546904510468",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "snowthisway",
"author_id": "251712469934931969",
"content": "0x203BEFFDBE12E96A is another set entity coords native that also sets heading",
"timestamp": "2019-11-14T05:21:56.998+01:00"
},
{
"id": "644391563887116298",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "snowthisway",
"author_id": "251712469934931969",
"content": "```0x203BEFFDBE12E96A(entity, coords.x, coords.y, coords.z, heading, true, true)```",
"timestamp": "2019-11-14T05:22:01.047+01:00"
},
{
"id": "644402210666446859",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "SetEnableHandcuffs is work? :p",
"timestamp": "2019-11-14T06:04:19.437+01:00"
},
{
"id": "644403877885771776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "https://vespura.com/doc/natives/#_0x77FF8D35EEC6BBC4\nhttps://cdn.discordapp.com/attachments/554300011400265738/643578501265621013/2019-11-11_17-30-26.mp4\nI forgot to share this - It is not component it only set predefined outfits",
"timestamp": "2019-11-14T06:10:56.933+01:00"
},
{
"id": "644403995393130496",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "PITPOT you monster.",
"timestamp": "2019-11-14T06:11:24.949+01:00"
},
{
"id": "644404121599868932",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "so is it only preset outfits atm? (still facking dope) edit* i read full text.",
"timestamp": "2019-11-14T06:11:55.039+01:00"
},
{
"id": "644405636984995840",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "It seems R* used that native only few times to actually *set* the outfit. In 99% of calls they're using 0, 0 as arguments.",
"timestamp": "2019-11-14T06:17:56.335+01:00"
},
{
"id": "644405818007224320",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Probably that's because we're not having rdo scripts 🤔",
"timestamp": "2019-11-14T06:18:39.494+01:00"
},
{
"id": "644410993723572224",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Red Dead just had an update and I think it has caused RedM to stop working?",
"timestamp": "2019-11-14T06:39:13.481+01:00"
},
{
"id": "644411262150901810",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "no?",
"timestamp": "2019-11-14T06:40:17.479+01:00"
},
{
"id": "644411470364278794",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Ill check my log",
"timestamp": "2019-11-14T06:41:07.121+01:00"
},
{
"id": "644411515277148161",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "mines launching",
"timestamp": "2019-11-14T06:41:17.829+01:00"
},
{
"id": "644412735924207616",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hoborific",
"author_id": "227848208095641600",
"content": "yeah new update",
"timestamp": "2019-11-14T06:46:08.854+01:00"
},
{
"id": "644414451759448095",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "since the update I cant launch my RedM and I cant connect to Read Dead Online 😂 Bedtime I think",
"timestamp": "2019-11-14T06:52:57.941+01:00"
},
{
"id": "644414581770420235",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Mine has launched fine. is it maybe your script bro",
"timestamp": "2019-11-14T06:53:28.938+01:00"
},
{
"id": "644414756375232532",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Its when launching RedM, I dont even get as far as the game. Just the RedM initializing screen",
"timestamp": "2019-11-14T06:54:10.567+01:00"
},
{
"id": "644414783738871817",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "So script wouldnt affect it",
"timestamp": "2019-11-14T06:54:17.091+01:00"
},
{
"id": "644415189344845830",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Out of 5 of us trying to connect to Red Dead Online, only 2 can connect. Ahh well",
"timestamp": "2019-11-14T06:55:53.795+01:00"
},
{
"id": "644415207652851712",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Ope wait, same boat. Have a good night im off to zzzz.",
"timestamp": "2019-11-14T06:55:58.16+01:00"
},
{
"id": "644415253639200789",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "https://twitter.com/RockstarSupport/status/1194846182176149504?s=20 update is 3gb info",
"timestamp": "2019-11-14T06:56:09.124+01:00"
},
{
"id": "644415412154662922",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Yeah I saw the update info earlier, but its only just gone live and causing us more issues 😂",
"timestamp": "2019-11-14T06:56:46.917+01:00"
},
{
"id": "644416017661165568",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Looks like its all performance and vfx related. which is a positive i suppose,",
"timestamp": "2019-11-14T06:59:11.281+01:00"
},
{
"id": "644416363539988488",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "https://github.com/citizenfx/fivem/commit/256f4f742f907eec821e99ba140174a72256cac1",
"timestamp": "2019-11-14T07:00:33.745+01:00"
},
{
"id": "644416429524910100",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "What needs changing?\nhttps://gyazo.com/3ca9573e88b6975864f0f7c6a68e4458",
"timestamp": "2019-11-14T07:00:49.477+01:00"
},
{
"id": "644416655069413376",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Wait is it updated to latest version?",
"timestamp": "2019-11-14T07:01:43.251+01:00"
},
{
"id": "644417744347070475",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hippomade",
"author_id": "362918025655222272",
"content": "those new cache hashes are for .60 files, probably want to back them up before updating the game",
"timestamp": "2019-11-14T07:06:02.955+01:00"
},
{
"id": "644417910391046165",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "fml",
"timestamp": "2019-11-14T07:06:42.543+01:00"
},
{
"id": "644417936299130890",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "😂",
"timestamp": "2019-11-14T07:06:48.72+01:00"
},
{
"id": "644419047529775114",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Good thing i zipped them on my desktop. Cuz otherwise id be fooked",
"timestamp": "2019-11-14T07:11:13.658+01:00"
},
{
"id": "644422635001741333",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nimoa",
"author_id": "195396636783017984",
"content": "shaders_x64.rpf & appdata0_update.rpf were also updated, you need to put them in game cache too",
"timestamp": "2019-11-14T07:25:28.978+01:00"
},
{
"id": "644426654843928585",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "wyste",
"author_id": "117433201047240713",
"content": "so you guys can compare against <https://github.com/citizenfx/fivem/blob/portability-rdr3/code/client/launcher/GameCache.cpp> ... these are all the different game update Hashes vs what RedM expects:\n~~\n`RDR2.exe`:\n.58 version hash (SHA1: `E029FB412CFBEFF6AEABB3AA87F174153A5DF33C`) *RedM wants this one*\n.60 version hash (SHA1: `49B0AA80815144649FAFA29028E22F19A78E2B20`)\n.69 (released today by R*) hash: (SHA1: `E3548977700A80DE6EB3F241CC091810CDFC04EA`)\n\n`shaders_x64.rpf`\n.58 + .60 RDR.exe version hash (SHA1: `95EA5BDA57E48FCA8B2B69DC214D2D35FE130B36`) *RedM wants either of these version*\n.69 (released today by R*) (SHA1: `CC018F7A7316BCC33107C3BBC8640D55AFA84A80`)\n\n`update.rpf` : \n.58 RDR.exe version hash (SHA1: `D04BC9B7A7AE2614574DF0AC52440897094CFD9C`)\n.60 RDR.exe version hash (SHA1: `9A7CFD3D124E4937C7AF1689A875BE7FE0579ECD`) *RedM wants this one*\n.69 (released today by R*) (SHA1: `86A19A74DE8A37E8F926968D27B35F0F9889BD54`)\n\n`appdata0_update.rpf`:\n.58 + .60 RDR.exe version hash (SHA1: `AED2266229F915387921D524704A87F6BABAD329`) *RedM wants this one*\n.69 (released today by R*) (SHA1: `E312B3D8B213A46FBBBF138FE7ED3B7BAC20DCA6`)\n~~\nnote: when I say \"RDR2.exe version ; i'm talking the major updates that R* has pushed out via their launcher when the EXE file changes, so other files change too.\n\n(Also - as the elements / mods have said, this is not for beginners. I'm just trying to put out some facts...)\n\n**EDIT: This is out of date as of 1:30pm ET on 11/14/2019 with recent RedM updates. \n\nYou now want all the .69 RDR2.exe version of the above files!!!! **",
"timestamp": "2019-11-14T07:41:27.383+01:00"
},
{
"id": "644429274815660033",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": ":LoveSnail:",
"timestamp": "2019-11-14T07:51:52.033+01:00"
},
{
"id": "644439559450394625",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "when is rel the new update",
"timestamp": "2019-11-14T08:32:44.081+01:00"
},
{
"id": "644442461737058315",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "What do you mean, @Deleted User?",
"timestamp": "2019-11-14T08:44:16.04+01:00"
},
{
"id": "644442580217626644",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "redm not work is the r* update",
"timestamp": "2019-11-14T08:44:44.288+01:00"
},
{
"id": "644442709561704448",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "yes you need the above",
"timestamp": "2019-11-14T08:45:15.126+01:00"
},
{
"id": "644442753505427456",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "as he stated which files you need",
"timestamp": "2019-11-14T08:45:25.603+01:00"
},
{
"id": "644442773931425812",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "from 60 and 58.",
"timestamp": "2019-11-14T08:45:30.473+01:00"
},
{
"id": "644442936486133760",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "I wish mine hadn't updated to 69, just missing 60's, have 58 exe",
"timestamp": "2019-11-14T08:46:09.229+01:00"
},
{
"id": "644443049015115776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "same lol",
"timestamp": "2019-11-14T08:46:36.058+01:00"
},
{
"id": "644443705725550632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "game works fine, maybe backup game files",
"timestamp": "2019-11-14T08:49:12.63+01:00"
},
{
"id": "644443834104807424",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "yeah i did, then hit pause and went shit, oops haha.",
"timestamp": "2019-11-14T08:49:43.238+01:00"
},
{
"id": "644444195926310922",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "Hi, firstly, a thousand times thanks for getting the opportunity to participate in testing this incredible experience. I am currently attempting to test the in-game effects of different file modding text edits i made earlier this year using the ps4 file dump, only now using the PC Common files instead. For these tests i am using the Population resource(thank you Astatine), but since my file edits cover several other areas than ambient/scenario ped spawning systems, i would be VERY grateful for getting my hands on ANY resource, enabling more of the in-game AI systems.",
"timestamp": "2019-11-14T08:51:09.503+01:00"
},
{
"id": "644487805082271747",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Has anyone figured out the money natives?",
"timestamp": "2019-11-14T11:44:26.736+01:00"
},
{
"id": "644487841384235030",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Might have to try digging for that later",
"timestamp": "2019-11-14T11:44:35.391+01:00"
},
{
"id": "644488293995511828",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I haven't even looked at that",
"timestamp": "2019-11-14T11:46:23.302+01:00"
},
{
"id": "644488330716774400",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I'm sure it's very similar to V",
"timestamp": "2019-11-14T11:46:32.057+01:00"
},
{
"id": "644488360672493568",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "there are 3 things you could use now",
"timestamp": "2019-11-14T11:46:39.199+01:00"
},
{
"id": "644488387301998602",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Cash, Gold and the blue token things",
"timestamp": "2019-11-14T11:46:45.548+01:00"
},
{
"id": "644488567443161099",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Yeah but there are cents now for cash too",
"timestamp": "2019-11-14T11:47:28.497+01:00"
},
{
"id": "644488596845363200",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "kind of good",
"timestamp": "2019-11-14T11:47:35.507+01:00"
},
{
"id": "644488613916180480",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "I'm assuming money is just cents",
"timestamp": "2019-11-14T11:47:39.577+01:00"
},
{
"id": "644488648414330910",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "And the display is just calculated from amount of cents you own",
"timestamp": "2019-11-14T11:47:47.802+01:00"
},
{
"id": "644488692668301312",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "everything is a cent yeah i thought that also",
"timestamp": "2019-11-14T11:47:58.353+01:00"
},
{
"id": "644488734363877377",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Seems the most logical",
"timestamp": "2019-11-14T11:48:08.294+01:00"
},
{
"id": "644488770225438720",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "ex. add/remove cents and display updates",
"timestamp": "2019-11-14T11:48:16.844+01:00"
},
{
"id": "644488789972221953",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Just have to find the \"cent\" native now",
"timestamp": "2019-11-14T11:48:21.552+01:00"
},
{
"id": "644488836977786891",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I mean",
"timestamp": "2019-11-14T11:48:32.759+01:00"
},
{
"id": "644488867851927552",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "could just be dollars that's a float",
"timestamp": "2019-11-14T11:48:40.12+01:00"
},
{
"id": "644488884822081556",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "rather than an int",
"timestamp": "2019-11-14T11:48:44.166+01:00"
},
{
"id": "644488932138024960",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "I think that'd be more difficult to make for them",
"timestamp": "2019-11-14T11:48:55.447+01:00"
},
{
"id": "644488935132626945",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I could see Rockstar doing that",
"timestamp": "2019-11-14T11:48:56.161+01:00"
},
{
"id": "644488974207025152",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Yeah but we know they like to overcomplicated shit",
"timestamp": "2019-11-14T11:49:05.477+01:00"
},
{
"id": "644488987381071872",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Would make more sense to just use cents, but since when is r* logical",
"timestamp": "2019-11-14T11:49:08.618+01:00"
},
{
"id": "644489039248097282",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Look at their naming scheme xd",
"timestamp": "2019-11-14T11:49:20.984+01:00"
},
{
"id": "644490871294656512",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I'll have a look now",
"timestamp": "2019-11-14T11:56:37.778+01:00"
},
{
"id": "644491221204729856",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "jv7662",
"author_id": "399759596778029057",
"content": "First thing they taught us at uni was that never ever use floats for currency. Always integers. idk if that applies to games though.",
"timestamp": "2019-11-14T11:58:01.203+01:00"
},
{
"id": "644491412632633354",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "lol yeah that shit doesn't apply to Rockstar",
"timestamp": "2019-11-14T11:58:46.843+01:00"
},
{
"id": "644491476591443969",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "jv7662",
"author_id": "399759596778029057",
"content": "lol tru",
"timestamp": "2019-11-14T11:59:02.092+01:00"
},
{
"id": "644501836761661459",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "So anyone using text draws will already be using (CreateVarString)\n```lua\nlocal str = Citizen.InvokeNative(0xFA925AC00EB830B9, 10, \"LITERAL_STRING\", text, Citizen.ResultAsLong())\n```\nTurns out if you change some values in it, like so\n```lua\nlocal str = Citizen.InvokeNative(0xFA925AC00EB830B9, 2, \"CASH_STRING\", amountInCents, Citizen.ResultAsLong())\n```\nIt'll format your string nicely in cents and in the right format https://smallo.wtf/i/MqkVN5W.png\nNow I wonder if it changes the money icon to match locale",
"timestamp": "2019-11-14T12:40:12.149+01:00"
},
{
"id": "644502544529227776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "interesting",
"timestamp": "2019-11-14T12:43:00.894+01:00"
},
{
"id": "644502583247110144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "doing gods work son.",
"timestamp": "2019-11-14T12:43:10.125+01:00"
},
{
"id": "644503927060168705",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "@Kane \n```\n// 0x466BC8769CF26A7A\nvoid _REMOVE_MONEY(int amount);\n\n//0xBC3422DC91667621\nvoid _ADD_MONEY(int amount);\n```",
"timestamp": "2019-11-14T12:48:30.515+01:00"
},
{
"id": "644504016558096394",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "```\n0xC02DABFA3B98176\n```",
"timestamp": "2019-11-14T12:48:51.853+01:00"
},
{
"id": "644504044722716673",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "that one is GetPlayerMoney or something",
"timestamp": "2019-11-14T12:48:58.568+01:00"
},
{
"id": "644504056017977357",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "all unnamed for now",
"timestamp": "2019-11-14T12:49:01.261+01:00"
},
{
"id": "644504061038821386",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "but yeah",
"timestamp": "2019-11-14T12:49:02.458+01:00"
},
{
"id": "644504079422193691",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Not sure about gold yet",
"timestamp": "2019-11-14T12:49:06.841+01:00"
},
{
"id": "644504106823712799",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "So I was right, about cents",
"timestamp": "2019-11-14T12:49:13.374+01:00"
},
{
"id": "644504174284898324",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "I'm assuming it starts at 0 cents on boot",
"timestamp": "2019-11-14T12:49:29.458+01:00"
},
{
"id": "644504270934245396",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "yeah be careful because Lua thinks 0 is false so it'll fuck up when using the getter",
"timestamp": "2019-11-14T12:49:52.501+01:00"
},
{
"id": "644504361560702986",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Just format to number or so",
"timestamp": "2019-11-14T12:50:14.108+01:00"
},
{
"id": "644504746023190528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Just on connect just _ADD_MONEY(money) <- database loaded stuff",
"timestamp": "2019-11-14T12:51:45.771+01:00"
},
{
"id": "644505032682897409",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "yeah but we will have trouble finding the gold ones since we don't have MP scripts",
"timestamp": "2019-11-14T12:52:54.116+01:00"
},
{
"id": "644505066086203416",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "yet!",
"timestamp": "2019-11-14T12:53:02.08+01:00"
},
{
"id": "644505080808079379",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Also those natives might be useless since RedM will be using MP stuff and that might only be a SP native",
"timestamp": "2019-11-14T12:53:05.59+01:00"
},
{
"id": "644505150853218304",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Doing it on a fxserver does activate mp mode iirc",
"timestamp": "2019-11-14T12:53:22.29+01:00"
},
{
"id": "644505176572559370",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "So should test",
"timestamp": "2019-11-14T12:53:28.422+01:00"
},
{
"id": "644505215336316929",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "but that CreateVarString thing is good for notifications and menus and such",
"timestamp": "2019-11-14T12:53:37.664+01:00"
},
{
"id": "644505742568718348",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Did you test using fxserver or just sp?",
"timestamp": "2019-11-14T12:55:43.366+01:00"
},
{
"id": "644506008021893130",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "sp",
"timestamp": "2019-11-14T12:56:46.655+01:00"
},
{
"id": "644506029744324629",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "couldnt be bothered to do the rest xD",
"timestamp": "2019-11-14T12:56:51.834+01:00"
},
{
"id": "644508043404509184",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "I’ll try mp later today",
"timestamp": "2019-11-14T13:04:51.928+01:00"
},
{
"id": "644548859472642058",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Just to clarify my lack of knowledge, a float would replace? and an integer would add?",
"timestamp": "2019-11-14T15:47:03.237+01:00"
},
{
"id": "644550837963849738",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "An integer is a whole number, no decimals. A float(ing-point) number can have decimals (fractional parts). In case that makes it clearer.",
"timestamp": "2019-11-14T15:54:54.946+01:00"
},
{
"id": "644554380091195392",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "btw smallo, 0 is true in lua",
"timestamp": "2019-11-14T16:08:59.455+01:00"
},
{
"id": "644555101742039060",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "andreas thank you, im trying to figure out how to pull a value and add to it, not replace.",
"timestamp": "2019-11-14T16:11:51.51+01:00"
},
{
"id": "644555288816386048",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "`var = var + amount`, or `var += amount` (doesnt exist in lua 😦 )",
"timestamp": "2019-11-14T16:12:36.112+01:00"
},
{
"id": "644555788160860199",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "becaue im going to look at making a \"horse coach\" at stables to give your gallop some more oomph.",
"timestamp": "2019-11-14T16:14:35.165+01:00"
},
{
"id": "644556607090589706",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Because as far as i can see, Rdr2 uses Setvehicle same as gtav, so id be looking at using somethign like ```SetVehicleHandlingFloat(veh, \"CHandlingData\", \"fsteerbias\", data.bias*1.0)```",
"timestamp": "2019-11-14T16:17:50.413+01:00"
},
{
"id": "644556749894058006",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "But that replaces...im trying to just add so it works different per horse.",
"timestamp": "2019-11-14T16:18:24.46+01:00"
},
{
"id": "644556802733637632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "clatanii5199",
"author_id": "263773417767960576",
"content": "@99kr I’m pretty sure 0 is false in lua and 1 is true",
"timestamp": "2019-11-14T16:18:37.058+01:00"
},
{
"id": "644556819993329664",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "handling data natives arent implemented currently anyway",
"timestamp": "2019-11-14T16:18:41.173+01:00"
},
{
"id": "644556964340170763",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Thanks asta, just trying to get a jump on it.",
"timestamp": "2019-11-14T16:19:15.588+01:00"
},
{
"id": "644560769031340050",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "@Clatanii no 0 is true",
"timestamp": "2019-11-14T16:34:22.697+01:00"
},
{
"id": "644561168018440222",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "clatanii5199",
"author_id": "263773417767960576",
"content": "Oh okay, Your probably right then something new to me haha",
"timestamp": "2019-11-14T16:35:57.823+01:00"
},
{
"id": "644561421778026507",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "https://gyazo.com/30dae1c7e09a0c25825fd9247834d573",
"timestamp": "2019-11-14T16:36:58.324+01:00"
},
{
"id": "644563435098603533",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fragaverage",
"author_id": "340866416460824577",
"content": "wouldn't anything with a value will return true?\n\nunless explicitly set to false or nil i believe?",
"timestamp": "2019-11-14T16:44:58.337+01:00"
},
{
"id": "644563765119156245",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "yeah",
"timestamp": "2019-11-14T16:46:17.02+01:00"
},
{
"id": "644565851156250646",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Yeah, if you set the var to 1 it would still print",
"timestamp": "2019-11-14T16:54:34.37+01:00"
},
{
"id": "644566910171611206",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fragaverage",
"author_id": "340866416460824577",
"content": "",
"timestamp": "2019-11-14T16:58:46.859+01:00"
},
{
"id": "644567002584842250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fragaverage",
"author_id": "340866416460824577",
"content": "anyways this isn't RedM related. So whos found what today?!",
"timestamp": "2019-11-14T16:59:08.892+01:00"
},
{
"id": "644567981241794570",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "'if randomVar then` just checks if it is nil or not.",
"timestamp": "2019-11-14T17:03:02.222+01:00"
},
{
"id": "644568146111496212",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Do we know if `pasta-rugby-nuts` on launch is just caused by the wrong files or if its a crash that needs attention?",
"timestamp": "2019-11-14T17:03:41.53+01:00"
},
{
"id": "644569309024354314",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "it checks if its a false value",
"timestamp": "2019-11-14T17:08:18.79+01:00"
},
{
"id": "644569470953848838",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthatguyhere",
"author_id": "220403096637931520",
"content": "No it does not. It would only be false if it's explicitly a false bool or nil.",
"timestamp": "2019-11-14T17:08:57.397+01:00"
},
{
"id": "644569633625473054",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "https://pastebin.com/MA1HNyC8 all (found) train configs with their wagons",
"timestamp": "2019-11-14T17:09:36.181+01:00"
},
{
"id": "644570064309190656",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "What he said ^",
"timestamp": "2019-11-14T17:11:18.864+01:00"
},
{
"id": "644570111986106379",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "https://gyazo.com/f1dbe3c00a6f5c6f9e22a4b970a5c2ce",
"timestamp": "2019-11-14T17:11:30.231+01:00"
},
{
"id": "644570265413615637",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "the only \"falsey\" values in lua is `false` and `nil`",
"timestamp": "2019-11-14T17:12:06.811+01:00"
},
{
"id": "644570292512882767",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "^^",
"timestamp": "2019-11-14T17:12:13.272+01:00"
},
{
"id": "644570302252187657",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "everything else is \"truthy\"",
"timestamp": "2019-11-14T17:12:15.594+01:00"
},
{
"id": "644570611334774835",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "99kr",
"author_id": "239042383273000960",
"content": "yeah",
"timestamp": "2019-11-14T17:13:29.285+01:00"
},
{
"id": "644576821798633472",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "Sharing a horse between two players works perfectly fine",
"timestamp": "2019-11-14T17:38:09.975+01:00"
},
{
"id": "644577390609170432",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "explooosion",
"author_id": "303607556406771713",
"content": "Anyone want to help me to even start redM? I dont get what should i get",
"timestamp": "2019-11-14T17:40:25.59+01:00"
},
{
"id": "644577653982232576",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "@Explooosion@ #redm-info",
"timestamp": "2019-11-14T17:41:28.383+01:00"
},
{
"id": "644577748349878293",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "explooosion",
"author_id": "303607556406771713",
"content": "Yeah, but i dont know where do i get these cache files",
"timestamp": "2019-11-14T17:41:50.882+01:00"
},
{
"id": "644577781229027338",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "Your local filesystem?",
"timestamp": "2019-11-14T17:41:58.721+01:00"
},
{
"id": "644578303981649941",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "explooosion",
"author_id": "303607556406771713",
"content": "I dont get it :/",
"timestamp": "2019-11-14T17:44:03.355+01:00"
},
{
"id": "644578327532666900",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "explooosion",
"author_id": "303607556406771713",
"content": "🤷‍♂️",
"timestamp": "2019-11-14T17:44:08.97+01:00"
},
{
"id": "644581468693069824",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Do we know what causes `pasta-rugby-nuts`?\n`RedM\\citizen\\clr2\\lib\\mono\\4.5 MsgPack.dll is not a platform image (even though the dir matches).`",
"timestamp": "2019-11-14T17:56:37.881+01:00"
},
{
"id": "644581688327929856",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "Without info 🤔",
"timestamp": "2019-11-14T17:57:30.246+01:00"
},
{
"id": "644582622449631264",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "People were getting it last night but don't anymore so I thought there would be some info on it.\n\nMany people got it yesterday after the update, it happens instantly on launch of the game after the initial RedM window.\nI can provide the dump if needed.",
"timestamp": "2019-11-14T18:01:12.958+01:00"
},
{
"id": "644671135417368587",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Guys this channel is for code investigation, not this shit. Get out.",
"timestamp": "2019-11-14T23:52:56.094+01:00"
},
{
"id": "644671455400820737",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "GET OUT",
"timestamp": "2019-11-14T23:54:12.384+01:00"
},
{
"id": "644697291273273354",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "So all these natives that are being found, is there a program that is being used to \"decrypt\" them?",
"timestamp": "2019-11-15T01:36:52.136+01:00"
},
{
"id": "644702644320862219",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "+1 would like too 😄 Is there a way to see the game scripts? so can try finding how to do notifications etc 😄",
"timestamp": "2019-11-15T01:58:08.402+01:00"
},
{
"id": "644725343789514763",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hippomade",
"author_id": "362918025655222272",
"content": "smart people know how to decompile scripts from the game, and they did that from the ps4 build even, but not publicly available right now afaik. hopefully soon",
"timestamp": "2019-11-15T03:28:20.377+01:00"
},
{
"id": "644737748573618177",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "You can easily find the scripts around the internet",
"timestamp": "2019-11-15T04:17:37.908+01:00"
},
{
"id": "644744333886750728",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "%strike 198563265930985472 misuse of channel.",
"timestamp": "2019-11-15T04:43:47.969+01:00"
},
{
"id": "644744336826957836",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "Bodie, you have received a strike (Reason: `misuse of channel.`). Total 1 strikes (1 in the past 30 days).",
"timestamp": "2019-11-15T04:43:48.67+01:00"
},
{
"id": "644895739347992586",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "any idea about why all the rpfs inside of the animscenes(folder) are markedly different than all the other anim(main folder) rpfs. The rule normally is that every animation dictionary contains the word \"clip\", which is always used in front of the individual animations's name. It was like that in GTA V, and it's like that in RDR2, except for in the abovementioned folder.Any ideas ?",
"timestamp": "2019-11-15T14:45:25.844+01:00"
},
{
"id": "644900516664573952",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "you are able to open rpfs?",
"timestamp": "2019-11-15T15:04:24.845+01:00"
},
{
"id": "644901196938870784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "PS4 🙄",
"timestamp": "2019-11-15T15:07:07.035+01:00"
},
{
"id": "644901485619970059",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "well, i have a couple of pc folders",
"timestamp": "2019-11-15T15:08:15.862+01:00"
},
{
"id": "644901512945860616",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "common rpf",
"timestamp": "2019-11-15T15:08:22.377+01:00"
},
{
"id": "644901555966836775",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "but the anims are ps4",
"timestamp": "2019-11-15T15:08:32.634+01:00"
},
{
"id": "644901673235644439",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "which makes no difference in this case since it has always been .clip",
"timestamp": "2019-11-15T15:09:00.593+01:00"
},
{
"id": "644901728373702667",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "xbox360,ps4,pc whatever",
"timestamp": "2019-11-15T15:09:13.739+01:00"
},
{
"id": "644901736708046853",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": ".clip",
"timestamp": "2019-11-15T15:09:15.726+01:00"
},
{
"id": "644903817363718155",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "another smaller issue",
"timestamp": "2019-11-15T15:17:31.793+01:00"
},
{
"id": "644903863417176064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "i cant get vehiclelayouts.meta to work",
"timestamp": "2019-11-15T15:17:42.773+01:00"
},
{
"id": "644903986201362471",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "can anyone confirm this is the correct file path",
"timestamp": "2019-11-15T15:18:12.047+01:00"
},
{
"id": "644904352376684544",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "common.packs.base.data.ai.vehiclelayouts",
"timestamp": "2019-11-15T15:19:39.35+01:00"
},
{
"id": "644904601518342144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "according to the the DataFileMgr. it is the right path",
"timestamp": "2019-11-15T15:20:38.75+01:00"
},
{
"id": "644904663359029296",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "```xml\n<Item>\n <filename>commoncrc:/packs/base/data/ai/vehiclelayouts.meta</filename>\n <disabled value=\"true\" />\n <persistent value=\"true\" />\n <fileType>VEHICLE_LAYOUTS_FILE</fileType>\n </Item>```",
"timestamp": "2019-11-15T15:20:53.494+01:00"
},
{
"id": "644904683164401675",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "ah you're looking through ps4 files 😛",
"timestamp": "2019-11-15T15:20:58.216+01:00"
},
{
"id": "644904771001516042",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "well no",
"timestamp": "2019-11-15T15:21:19.158+01:00"
},
{
"id": "644904846608171028",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "some elements messed with vehicle handling, they might know more",
"timestamp": "2019-11-15T15:21:37.184+01:00"
},
{
"id": "644904865826603038",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "this question is only about the pc files",
"timestamp": "2019-11-15T15:21:41.766+01:00"
},
{
"id": "644905201991548948",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "@d0p3t so are you saying that there might be no point in editing that file, since the underlying systems the file calls on are not implemented into redm yet ?",
"timestamp": "2019-11-15T15:23:01.914+01:00"
},
{
"id": "644909050399686677",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "oh, elements is a person ?",
"timestamp": "2019-11-15T15:38:19.446+01:00"
},
{
"id": "644909221170642954",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "is they called elements in here",
"timestamp": "2019-11-15T15:39:00.161+01:00"
},
{
"id": "644909573383258122",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "Elements aka Fivem devs",
"timestamp": "2019-11-15T15:40:24.135+01:00"
},
{
"id": "644909652273790986",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "elements is a group, not a person",
"timestamp": "2019-11-15T15:40:42.944+01:00"
},
{
"id": "644909670456360974",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "thank you",
"timestamp": "2019-11-15T15:40:47.279+01:00"
},
{
"id": "644909720351670282",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "i am just a file modder visiting",
"timestamp": "2019-11-15T15:40:59.175+01:00"
},
{
"id": "644909723480621076",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "hehe",
"timestamp": "2019-11-15T15:40:59.921+01:00"
},
{
"id": "644909739318312980",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "but thank you",
"timestamp": "2019-11-15T15:41:03.697+01:00"
},
{
"id": "644909781294907394",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "np",
"timestamp": "2019-11-15T15:41:13.705+01:00"
},
{
"id": "644910867984547840",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "sorry, should have explained it 😛 you can recognize them with their green names in here",
"timestamp": "2019-11-15T15:45:32.792+01:00"
},
{
"id": "644913300269826068",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "oh",
"timestamp": "2019-11-15T15:55:12.694+01:00"
},
{
"id": "644913319253377044",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "fucking doh",
"timestamp": "2019-11-15T15:55:17.22+01:00"
},
{
"id": "644913354200317963",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "Calcium",
"timestamp": "2019-11-15T15:55:25.552+01:00"
},
{
"id": "644913388224249858",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "periodic table elements",
"timestamp": "2019-11-15T15:55:33.664+01:00"
},
{
"id": "644913463243702295",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "i should have known that",
"timestamp": "2019-11-15T15:55:51.55+01:00"
},
{
"id": "644917778003787781",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "@Smallo \n\n`0xBC3422DC91667621` _ADD_MONEY\n\nSeems to have 2 parameters",
"timestamp": "2019-11-15T16:13:00.269+01:00"
},
{
"id": "644917795842162708",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Do you know what the second one does?",
"timestamp": "2019-11-15T16:13:04.522+01:00"
},
{
"id": "644917864586805258",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "nope",
"timestamp": "2019-11-15T16:13:20.912+01:00"
},
{
"id": "644917964461572106",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Guess I'll try it out",
"timestamp": "2019-11-15T16:13:44.724+01:00"
},
{
"id": "644920746203938839",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "@Kane try ped, amount",
"timestamp": "2019-11-15T16:24:47.943+01:00"
},
{
"id": "644922191019769898",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "😮",
"timestamp": "2019-11-15T16:30:32.414+01:00"
},
{
"id": "644924456212365334",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "🤔 Neither work when joining a server",
"timestamp": "2019-11-15T16:39:32.478+01:00"
},
{
"id": "644924478509285396",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Guess they're SP only then",
"timestamp": "2019-11-15T16:39:37.794+01:00"
},
{
"id": "644924556242321434",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Wait isn't SP also \"MP\" or?",
"timestamp": "2019-11-15T16:39:56.327+01:00"
},
{
"id": "644924586202497034",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "(in Redm)",
"timestamp": "2019-11-15T16:40:03.47+01:00"
},
{
"id": "644924820571684864",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "yes",
"timestamp": "2019-11-15T16:40:59.348+01:00"
},
{
"id": "644928612507713546",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Where did you find the text string types",
"timestamp": "2019-11-15T16:56:03.416+01:00"
},
{
"id": "644929058160902155",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "scripts",
"timestamp": "2019-11-15T16:57:49.668+01:00"
},
{
"id": "644945029982584852",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "@Kane Nah, this native is using only 1 param. Also, yeah, in disassembly there's a check for network (so yeah, sp only) and check for argument > 0",
"timestamp": "2019-11-15T18:01:17.647+01:00"
},
{
"id": "644945152917372928",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "So sad 😦",
"timestamp": "2019-11-15T18:01:46.957+01:00"
},
{
"id": "644945533647060993",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Thanks for the help though, Disquse",
"timestamp": "2019-11-15T18:03:17.73+01:00"
},
{
"id": "645133905854332964",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sauccybenzo",
"author_id": "514888115178176520",
"content": "Hey pigs",
"timestamp": "2019-11-16T06:31:49.164+01:00"
},
{
"id": "645196380326985741",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "%strike 514888115178176520 offtopic in #redm-research",
"timestamp": "2019-11-16T10:40:04.239+01:00"
},
{
"id": "645196384181420032",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "benzosilas18, you have received a strike (Reason: `offtopic in #redm-research`). Total 1 strikes (1 in the past 30 days).",
"timestamp": "2019-11-16T10:40:05.158+01:00"
},
{
"id": "645339209556557827",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "Alexander blade releasing SDK soon. Should be noice",
"timestamp": "2019-11-16T20:07:37.381+01:00"
},
{
"id": "645339271787708434",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "And native db",
"timestamp": "2019-11-16T20:07:52.218+01:00"
},
{
"id": "645357065052880936",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "There is a native db already 🤔",
"timestamp": "2019-11-16T21:18:34.463+01:00"
},
{
"id": "645358228099563563",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "two infact.",
"timestamp": "2019-11-16T21:23:11.755+01:00"
},
{
"id": "645358282961322005",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "milq5133",
"author_id": "342977955443507201",
"content": "😉",
"timestamp": "2019-11-16T21:23:24.835+01:00"
},
{
"id": "645412943760064513",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "dogepuppy9680",
"author_id": "500280239847505932",
"content": "Eh",
"timestamp": "2019-11-17T01:00:36.985+01:00"
},
{
"id": "645755775427543048",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "shiroyo",
"author_id": "225289655728340992",
"content": "Does anyone already found a native which checks if player is covered in snow or is standing in the zone with blizzard? That would be amazing for illness system.",
"timestamp": "2019-11-17T23:42:54.424+01:00"
},
{
"id": "645755981371801610",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "I remember someone finding a temperature native",
"timestamp": "2019-11-17T23:43:43.525+01:00"
},
{
"id": "645756169289465866",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "shiroyo",
"author_id": "225289655728340992",
"content": "That's even better 😮",
"timestamp": "2019-11-17T23:44:28.328+01:00"
},
{
"id": "645756177120231470",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "> 0xFF4AAF3275BAAB4F gets the current \"temperature\" setting, 0 for fahrenheit and 1 for celcius\ncredits @Sploshfried",
"timestamp": "2019-11-17T23:44:30.195+01:00"
},
{
"id": "645756204009783321",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "not sure if it works",
"timestamp": "2019-11-17T23:44:36.606+01:00"
},
{
"id": "645756205884506113",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "shiroyo",
"author_id": "225289655728340992",
"content": "Wow, thank you very much.",
"timestamp": "2019-11-17T23:44:37.053+01:00"
},
{
"id": "645756275455426584",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "thats just for the game setting",
"timestamp": "2019-11-17T23:44:53.64+01:00"
},
{
"id": "645756330656792599",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "gimme a sec and ill check what happens around its check",
"timestamp": "2019-11-17T23:45:06.801+01:00"
},
{
"id": "645756425620029450",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "fuck",
"timestamp": "2019-11-17T23:45:29.442+01:00"
},
{
"id": "645756441915031582",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "i need to learn how to read",
"timestamp": "2019-11-17T23:45:33.327+01:00"
},
{
"id": "645756493206913064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "I don't think they use it to convert what the native returns",
"timestamp": "2019-11-17T23:45:45.556+01:00"
},
{
"id": "645756635352137729",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "nvm they do",
"timestamp": "2019-11-17T23:46:19.446+01:00"
},
{
"id": "645756666586857493",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "yeah so",
"timestamp": "2019-11-17T23:46:26.893+01:00"
},
{
"id": "645756683309809677",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "`unk_0xB98B78C3768AF6E0`",
"timestamp": "2019-11-17T23:46:30.88+01:00"
},
{
"id": "645756718638301184",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "seems to return some temperature reading in C",
"timestamp": "2019-11-17T23:46:39.303+01:00"
},
{
"id": "645756723092521000",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "yeah",
"timestamp": "2019-11-17T23:46:40.365+01:00"
},
{
"id": "645756804805951528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "from the position you give nice :o",
"timestamp": "2019-11-17T23:46:59.847+01:00"
},
{
"id": "645756838280822784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": ":O",
"timestamp": "2019-11-17T23:47:07.828+01:00"
},
{
"id": "645756840700805127",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "GET_CURRENT_TEMPERATE_AT_COORDS",
"timestamp": "2019-11-17T23:47:08.405+01:00"
},
{
"id": "645756890080477184",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "oh, neat!",
"timestamp": "2019-11-17T23:47:20.178+01:00"
},
{
"id": "645756926306811917",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "figured since it was a \"global\" being passed it mightve been some zone shit",
"timestamp": "2019-11-17T23:47:28.815+01:00"
},
{
"id": "645756974088060940",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "it is a vector",
"timestamp": "2019-11-17T23:47:40.207+01:00"
},
{
"id": "645757000659238912",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "nice",
"timestamp": "2019-11-17T23:47:46.542+01:00"
},
{
"id": "645757013514649603",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "nice find bois!",
"timestamp": "2019-11-17T23:47:49.607+01:00"
},
{
"id": "645757080153620490",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "wonder what happens if you pass a region which is not loaded",
"timestamp": "2019-11-17T23:48:05.495+01:00"
},
{
"id": "645757389181681665",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "you found the cool thing :p",
"timestamp": "2019-11-17T23:49:19.173+01:00"
},
{
"id": "645757644346228747",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "shiroyo",
"author_id": "225289655728340992",
"content": "Glad you figured it out 😄 I have another thing in my mind. Does anyone know how beard growth work in single player? Is it strictly associated with main protagonist model or is it possible to make it work for online models?",
"timestamp": "2019-11-17T23:50:20.009+01:00"
},
{
"id": "645757693809786880",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "we also don't know yet",
"timestamp": "2019-11-17T23:50:31.802+01:00"
},
{
"id": "645757726017978423",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "and I don't think it is possible in MP since it is done",
"timestamp": "2019-11-17T23:50:39.481+01:00"
},
{
"id": "645757771442159644",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "How do we contribute to the NativesDB btw?",
"timestamp": "2019-11-17T23:50:50.311+01:00"
},
{
"id": "645757914241433601",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "shiroyo",
"author_id": "225289655728340992",
"content": "Maybe there is a native for beard growth or something. In MP I think they didn't want that because people would get annoyed with it. At least some of them I think.",
"timestamp": "2019-11-17T23:51:24.357+01:00"
},
{
"id": "645758578879234077",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "I can confirm that `0xB98B78C3768AF6E0, float x, float y, float z` works and returns the temp",
"timestamp": "2019-11-17T23:54:02.819+01:00"
},
{
"id": "645758629198168114",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "neat",
"timestamp": "2019-11-17T23:54:14.816+01:00"
},
{
"id": "645758825609166849",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "CONFIRMED",
"timestamp": "2019-11-17T23:55:01.644+01:00"
},
{
"id": "645758844676341760",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Is there a way I can push that to https://vespura.com/doc/natives/#_0xB98B78C3768AF6E0?",
"timestamp": "2019-11-17T23:55:06.19+01:00"
},
{
"id": "645758897692606529",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "https://github.com/UnknownModder/rdr3-nativedb-data",
"timestamp": "2019-11-17T23:55:18.83+01:00"
},
{
"id": "645758898841845800",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "or is this db not public?",
"timestamp": "2019-11-17T23:55:19.104+01:00"
},
{
"id": "645758909620944906",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "ty",
"timestamp": "2019-11-17T23:55:21.674+01:00"
},
{
"id": "645760557470842880",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "@Sploshfried I believe we looked into the same script\n0xFA925AC00EB830B9/0xD05590C1AB38F068 might be the big notification indicating the time / temperature of the zone :o",
"timestamp": "2019-11-18T00:01:54.552+01:00"
},
{
"id": "645762935334895616",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "yeah",
"timestamp": "2019-11-18T00:11:21.479+01:00"
},
{
"id": "645762956310741002",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "but look at the input arguments",
"timestamp": "2019-11-18T00:11:26.48+01:00"
},
{
"id": "645763306581393429",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "actually seems like this is common code used in all scripts",
"timestamp": "2019-11-18T00:12:49.991+01:00"
},
{
"id": "645763442803867669",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "0xD05590C1AB38F068 takes some mad structs as inputs",
"timestamp": "2019-11-18T00:13:22.469+01:00"
},
{
"id": "645765072584572941",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "0xFA925AC00EB830B9 is just CreateVarString",
"timestamp": "2019-11-18T00:19:51.039+01:00"
},
{
"id": "645947182247313408",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Get the fuck out of here",
"timestamp": "2019-11-18T12:23:29.366+01:00"
},
{
"id": "645947203948380180",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "what part of no support do you not understand",
"timestamp": "2019-11-18T12:23:34.54+01:00"
},
{
"id": "645947240057143316",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "%strike 254889816926322688 no support... misuse of channel",
"timestamp": "2019-11-18T12:23:43.149+01:00"
},
{
"id": "645947243454660608",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "xMrSiret, you have received a strike (Reason: `no support... misuse of channel`). Total 1 strikes (1 in the past 30 days).",
"timestamp": "2019-11-18T12:23:43.959+01:00"
},
{
"id": "645947255030808606",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xmrsiret5135",
"author_id": "254889816926322688",
"content": "ok dude relax",
"timestamp": "2019-11-18T12:23:46.719+01:00"
},
{
"id": "645947322202587136",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "not2ndaccount",
"author_id": "117280061236707332",
"content": "The reaosn your getting that MrSiret is because RedM isn't fully released to public yet",
"timestamp": "2019-11-18T12:24:02.734+01:00"
},
{
"id": "645947328804683776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xmrsiret5135",
"author_id": "254889816926322688",
"content": "i dont know that",
"timestamp": "2019-11-18T12:24:04.308+01:00"
},
{
"id": "645947415555473408",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "not2ndaccount",
"author_id": "117280061236707332",
"content": "Now back ot what I was doing -_-",
"timestamp": "2019-11-18T12:24:24.991+01:00"
},
{
"id": "645947512812863488",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "indom1nus",
"author_id": "117791089582145545",
"content": "This isn't a support channel, it's clear from the name. If you were to check #redm-support-deprecated you'd see it says `no support (for now)`",
"timestamp": "2019-11-18T12:24:48.179+01:00"
},
{
"id": "645947647236243488",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xmrsiret5135",
"author_id": "254889816926322688",
"content": "ok tnx for information",
"timestamp": "2019-11-18T12:25:20.228+01:00"
},
{
"id": "645960249270075402",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "footsie",
"author_id": "144720062358618112",
"content": "```-- 0xBDBACB52A03CC760 \n-- _UPDATE_ENTITY_SHIT_OR_SOMETHING```",
"timestamp": "2019-11-18T13:15:24.787+01:00"
},
{
"id": "645960257226539008",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "footsie",
"author_id": "144720062358618112",
"content": "nice",
"timestamp": "2019-11-18T13:15:26.684+01:00"
},
{
"id": "645960480535478302",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "not2ndaccount",
"author_id": "117280061236707332",
"content": "lol",
"timestamp": "2019-11-18T13:16:19.925+01:00"
},
{
"id": "645968216967086080",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ereshkigalfr",
"author_id": "624578355802538024",
"content": "Wtf",
"timestamp": "2019-11-18T13:47:04.434+01:00"
},
{
"id": "646025455320694804",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Sounds like how I name my functions on first draft",
"timestamp": "2019-11-18T17:34:31.121+01:00"
},
{
"id": "646031213886308352",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "😂",
"timestamp": "2019-11-18T17:57:24.07+01:00"
},
{
"id": "646033202137268224",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "anyone found the native to reveal the map yet?",
"timestamp": "2019-11-18T18:05:18.106+01:00"
},
{
"id": "646033536163512370",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "```SetMinimapRevealed(1)```",
"timestamp": "2019-11-18T18:06:37.744+01:00"
},
{
"id": "646033554467192898",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "seems to work for me",
"timestamp": "2019-11-18T18:06:42.108+01:00"
},
{
"id": "646033859271458817",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "isn't that opening the map?",
"timestamp": "2019-11-18T18:07:54.779+01:00"
},
{
"id": "646034136003510314",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "Like forcing it to open? I haven't had any fog of war or anything and I just have that triggering when a player spawns in.",
"timestamp": "2019-11-18T18:09:00.757+01:00"
},
{
"id": "646034623045959710",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "thats not what i mean, i am talking about the Big map. To unlock every \"city\" and bee able to see every place",
"timestamp": "2019-11-18T18:10:56.877+01:00"
},
{
"id": "646034918484344856",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "https://vespura.com/doc/natives/#_0x4B8F743A4A6D2FF8\npretty sure that native effects radar and big map. All I can confirm is my big map is fully revealed",
"timestamp": "2019-11-18T18:12:07.315+01:00"
},
{
"id": "646035047274643466",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "Thanks, ima give it a go",
"timestamp": "2019-11-18T18:12:38.021+01:00"
},
{
"id": "646035985137926145",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "worked! thanks",
"timestamp": "2019-11-18T18:16:21.625+01:00"
},
{
"id": "646036075181244436",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "👍",
"timestamp": "2019-11-18T18:16:43.093+01:00"
},
{
"id": "646042070170992656",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "@CountAcey sorry for the ping bud, one problem i have though",
"timestamp": "2019-11-18T18:40:32.41+01:00"
},
{
"id": "646042186353475629",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "when i have opened it once, closing it and then go for opening it once agian, i crash",
"timestamp": "2019-11-18T18:41:00.11+01:00"
},
{
"id": "646043984665509945",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "wat?",
"timestamp": "2019-11-18T18:48:08.861+01:00"
},
{
"id": "646044037811273768",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "@Breze you're trying to do something in your script while the map is open",
"timestamp": "2019-11-18T18:48:21.532+01:00"
},
{
"id": "646044051594018828",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "and it's breaking the script handler",
"timestamp": "2019-11-18T18:48:24.818+01:00"
},
{
"id": "646044203931140116",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "i fixed it",
"timestamp": "2019-11-18T18:49:01.138+01:00"
},
{
"id": "646088653273038887",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "golden1221",
"author_id": "470297899344068609",
"content": "L",
"timestamp": "2019-11-18T21:45:38.687+01:00"
},
{
"id": "646088746223271936",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "synthesthea",
"author_id": "144530384347070464",
"content": "@Golden ;) Why do you keep sending random letters?",
"timestamp": "2019-11-18T21:46:00.848+01:00"
},
{
"id": "646089297518264330",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "%strike @Golden ;) L",
"timestamp": "2019-11-18T21:48:12.287+01:00"
},
{
"id": "646089301540470835",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "! A [M.R]GOLDEN SHKL7, you have received a strike (Reason: `L`). Total 1 strikes (1 in the past 30 days).",
"timestamp": "2019-11-18T21:48:13.246+01:00"
},
{
"id": "646090120692236288",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "Citizen.InvokeNative(0x1CE875505D45338A, PlayerPedId(), 0, 0) \nit's killing my ped",
"timestamp": "2019-11-18T21:51:28.547+01:00"
},
{
"id": "646093598751981583",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Yeah 0x1CE875505D45338A params are entity, 0, 0",
"timestamp": "2019-11-18T22:05:17.781+01:00"
},
{
"id": "646093637549031458",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "At least that's how it is in the decomp",
"timestamp": "2019-11-18T22:05:27.031+01:00"
},
{
"id": "646116296500707328",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "Citizen.InvokeNative(0x25ACFC650B65C538, PlayerPedId(), 0) Make me transparent and fall weirdly",
"timestamp": "2019-11-18T23:35:29.346+01:00"
},
{
"id": "646179745012383745",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "How much do we know about prompts, specifically hold for time prompts",
"timestamp": "2019-11-19T03:47:36.65+01:00"
},
{
"id": "646179830274195457",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "You can specify the time",
"timestamp": "2019-11-19T03:47:56.978+01:00"
},
{
"id": "646179917507067914",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "`PromptSetHoldMode(prompt, time)`",
"timestamp": "2019-11-19T03:48:17.776+01:00"
},
{
"id": "646180007101726752",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I think",
"timestamp": "2019-11-19T03:48:39.137+01:00"
},
{
"id": "646180064295256084",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I'll try it out cheers",
"timestamp": "2019-11-19T03:48:52.773+01:00"
},
{
"id": "646180261037342720",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Yep, that works thanks. Time in msec",
"timestamp": "2019-11-19T03:49:39.68+01:00"
},
{
"id": "646180420131749889",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Would be good for heaps in an RP sense",
"timestamp": "2019-11-19T03:50:17.611+01:00"
},
{
"id": "646180476641345537",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "No more having to make NUI dialogues and shit",
"timestamp": "2019-11-19T03:50:31.084+01:00"
},
{
"id": "646180498204262400",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "good for basically everything haha. clean UI",
"timestamp": "2019-11-19T03:50:36.225+01:00"
},
{
"id": "646180507616542721",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "yeah exactly",
"timestamp": "2019-11-19T03:50:38.469+01:00"
},
{
"id": "646180577455898624",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "making a \"library\" for it just to make it a bit easier",
"timestamp": "2019-11-19T03:50:55.12+01:00"
},
{
"id": "646180607717801986",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Heaps?",
"timestamp": "2019-11-19T03:51:02.335+01:00"
},
{
"id": "646180657780752422",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Well you can just create them all and then set them enabled and visible when needed",
"timestamp": "2019-11-19T03:51:14.271+01:00"
},
{
"id": "646180733299326976",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "ya, but would be nice to do that with a builder function",
"timestamp": "2019-11-19T03:51:32.276+01:00"
},
{
"id": "646180834570928148",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I just did this\n```lua\nprompts = {\n selectPrompt = {key = 0x43DBF61F, text = \"Select\"},\n closePrompt = {key = 0x308588E6, text = \"Back\"}\n}\n\nfor k, v in pairs(prompts) do\n local str = CreateVarString(10, \"LITERAL_STRING\", v.text)\n v.variable = CreatePrompt(v.key, str, 6, 1, 1, -1)\n\n PromptSetEnabled(v.variable, false)\n PromptSetVisible(v.variable, false)\nend\n```",
"timestamp": "2019-11-19T03:51:56.421+01:00"
},
{
"id": "646180855466688513",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "obviously that's only for basic prompts",
"timestamp": "2019-11-19T03:52:01.403+01:00"
},
{
"id": "646180934928039936",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "for example\n\n```lua\nprompt = Prompt(\"Text\", \"control\")\n\nprompt.setVisible(true)\n\nprompt.setHoldLength(1000)```",
"timestamp": "2019-11-19T03:52:20.348+01:00"
},
{
"id": "646181148036431894",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "and then an onResourceStop which deletes them so they don't get stuck",
"timestamp": "2019-11-19T03:53:11.157+01:00"
},
{
"id": "646181527826464783",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Prompt group links sound maybe helpful too",
"timestamp": "2019-11-19T03:54:41.706+01:00"
},
{
"id": "646193828801413142",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "https://pastebin.com/0dEdkE6P that's what I know on prompts",
"timestamp": "2019-11-19T04:43:34.487+01:00"
},
{
"id": "646194967466999824",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Wait what are prompts?",
"timestamp": "2019-11-19T04:48:05.966+01:00"
},
{
"id": "646197259867914240",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "The little things in the bottom right that show up with text and a key to press",
"timestamp": "2019-11-19T04:57:12.517+01:00"
},
{
"id": "646198149026807830",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Ahh thats what I thought they were but I was confused by \"mash\" and \"resistance\"",
"timestamp": "2019-11-19T05:00:44.509+01:00"
},
{
"id": "646198352723050496",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Mash is the ones where you press X times",
"timestamp": "2019-11-19T05:01:33.074+01:00"
},
{
"id": "646198395983364096",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "and resistance makes it so it slowly undoes the progress you make",
"timestamp": "2019-11-19T05:01:43.388+01:00"
},
{
"id": "646198417873436672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "x x x x x x x x x x x x x x x x x",
"timestamp": "2019-11-19T05:01:48.607+01:00"
},
{
"id": "646198536211398667",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Also I had DMs on for literally 5 hours in this discord and already had a pepega try to get a cache from me",
"timestamp": "2019-11-19T05:02:16.821+01:00"
},
{
"id": "646198810640384032",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Wait so when I made my fishing script way back, I could of used mash and resistance... but instead I wrote it all myself from scratch 😂",
"timestamp": "2019-11-19T05:03:22.25+01:00"
},
{
"id": "646198882472296458",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "The natives weren't discovered then",
"timestamp": "2019-11-19T05:03:39.376+01:00"
},
{
"id": "646198889673785346",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "no?",
"timestamp": "2019-11-19T05:03:41.093+01:00"
},
{
"id": "646198905402294273",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "\"way back\"",
"timestamp": "2019-11-19T05:03:44.843+01:00"
},
{
"id": "646198925430095872",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "This is RedM dude",
"timestamp": "2019-11-19T05:03:49.618+01:00"
},
{
"id": "646199005654810664",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "These weren't in V",
"timestamp": "2019-11-19T05:04:08.745+01:00"
},
{
"id": "646199020259115018",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "^",
"timestamp": "2019-11-19T05:04:12.227+01:00"
},
{
"id": "646199132884566035",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "and you don't need to make a fishing script in RedM, it's native.",
"timestamp": "2019-11-19T05:04:39.079+01:00"
},
{
"id": "646199538410979328",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imrblurr",
"author_id": "211938243535568896",
"content": "Wait I forgot that red dead uses different prompts for a second",
"timestamp": "2019-11-19T05:06:15.764+01:00"
},
{
"id": "646284949766537228",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I feel like researching to find natives",
"timestamp": "2019-11-19T10:45:39.418+01:00"
},
{
"id": "646284989197058049",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Anyone need certain non MP natives found?",
"timestamp": "2019-11-19T10:45:48.819+01:00"
},
{
"id": "646285613145784350",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "All of them?",
"timestamp": "2019-11-19T10:48:17.58+01:00"
},
{
"id": "646285616048504832",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "😛",
"timestamp": "2019-11-19T10:48:18.272+01:00"
},
{
"id": "646287639405920279",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I've been out of the loop and don't know what has been done and shit yeah!?!",
"timestamp": "2019-11-19T10:56:20.678+01:00"
},
{
"id": "646288245734375424",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "is PvP a thing or do we need natives for that?",
"timestamp": "2019-11-19T10:58:45.238+01:00"
},
{
"id": "646289081986318336",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Same as V",
"timestamp": "2019-11-19T11:02:04.616+01:00"
},
{
"id": "646292796000436225",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Ah yeah, doesn't seem to enable the close quarter combat thouygh?",
"timestamp": "2019-11-19T11:16:50.106+01:00"
},
{
"id": "646292824031232000",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Like the tackling with F etc",
"timestamp": "2019-11-19T11:16:56.789+01:00"
},
{
"id": "646296831055364117",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "@kn0pee what's been found is pretty much here: https://vespura.com/doc/natives\nand in #global-van-🚛",
"timestamp": "2019-11-19T11:32:52.138+01:00"
},
{
"id": "646296955252637726",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Ah thanks. I was looking through #global-van-🚛",
"timestamp": "2019-11-19T11:33:21.749+01:00"
},
{
"id": "646296992557039626",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Might try and hunt down those cores natives",
"timestamp": "2019-11-19T11:33:30.643+01:00"
},
{
"id": "646344886781476904",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nick78111",
"author_id": "85701625133412352",
"content": "These set a sort of walking style https://pastebin.com/uUWmmhAK\nSome of em I didn't see any difference 🤷‍♂️",
"timestamp": "2019-11-19T14:43:49.516+01:00"
},
{
"id": "646349398481174573",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Someone found the core natives iirc",
"timestamp": "2019-11-19T15:01:45.189+01:00"
},
{
"id": "646355869700718622",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "this is a bit worrying to me. after the confirmation that procedural.meta might as well be a blank file, I am now seriously close to concluding that popcycle.dat is not doing anything either. My only hope is that just like in gta V, rockstar has now made Update.update.common versions of a number of files.",
"timestamp": "2019-11-19T15:27:28.048+01:00"
},
{
"id": "646355926034415626",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "any information regarding this would be VERY welcome",
"timestamp": "2019-11-19T15:27:41.479+01:00"
},
{
"id": "646360136960442373",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "that is correct. a lot of things are used from update.rpf as opposed to base game files",
"timestamp": "2019-11-19T15:44:25.442+01:00"
},
{
"id": "646364176868048927",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "phew",
"timestamp": "2019-11-19T16:00:28.631+01:00"
},
{
"id": "646364204453986315",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "at least a little phew",
"timestamp": "2019-11-19T16:00:35.208+01:00"
},
{
"id": "646364361778003979",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "so if i choose citizen.update.common it should work ?",
"timestamp": "2019-11-19T16:01:12.717+01:00"
},
{
"id": "646368739314630659",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "no",
"timestamp": "2019-11-19T16:18:36.403+01:00"
},
{
"id": "646372667624128559",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "so the citizen folder can not override update files",
"timestamp": "2019-11-19T16:34:12.985+01:00"
},
{
"id": "646372742173556736",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "than you for your answer",
"timestamp": "2019-11-19T16:34:30.759+01:00"
},
{
"id": "646372927553667092",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "the citizen folder always loads last.",
"timestamp": "2019-11-19T16:35:14.957+01:00"
},
{
"id": "646373229870710804",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Anyone figure out what 0xD1F6B912785BFD35 does yet? If it's true then it fires off 0x908D4B72854C8F62. It does this in every instance. I'm spending some time to try and figure out fishing.",
"timestamp": "2019-11-19T16:36:27.035+01:00"
},
{
"id": "646374820778475521",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "citizen always loads first",
"timestamp": "2019-11-19T16:42:46.337+01:00"
},
{
"id": "646374832795025418",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "even before update",
"timestamp": "2019-11-19T16:42:49.202+01:00"
},
{
"id": "646374842261831684",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "tf?",
"timestamp": "2019-11-19T16:42:51.459+01:00"
},
{
"id": "646376767971655701",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "so, Anyone got some Weapon names and Weapon model names",
"timestamp": "2019-11-19T16:50:30.584+01:00"
},
{
"id": "646377127565852672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "@Breze https://www.mod-rdr.com/wiki/ There's a weapon model subsection there",
"timestamp": "2019-11-19T16:51:56.318+01:00"
},
{
"id": "646377316250943499",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "thanks!",
"timestamp": "2019-11-19T16:52:41.304+01:00"
},
{
"id": "646379499851612170",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "worked perfectly! @CountAcey just that weapons does not appear in the weapon wheel for some reason",
"timestamp": "2019-11-19T17:01:21.915+01:00"
},
{
"id": "646379724347539466",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "Yep, just have to give yourself what you need for now until that functionality is restored",
"timestamp": "2019-11-19T17:02:15.439+01:00"
},
{
"id": "646379827460571136",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "yup",
"timestamp": "2019-11-19T17:02:40.023+01:00"
},
{
"id": "646381763291119635",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "Yeah for debugging I recommend a way to delete all weps and to spawn a wep",
"timestamp": "2019-11-19T17:10:21.561+01:00"
},
{
"id": "646381779233538048",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mart.fyi",
"author_id": "108698087769260032",
"content": "since the wheel is scuffed",
"timestamp": "2019-11-19T17:10:25.362+01:00"
},
{
"id": "646393541127307269",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "@nta (2) as in stuff from citizen is what ends up being used",
"timestamp": "2019-11-19T17:57:09.616+01:00"
},
{
"id": "646393637919391754",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "but that's first in search order 😄",
"timestamp": "2019-11-19T17:57:32.693+01:00"
},
{
"id": "646393801480470528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "usually what people think is 'oh update got loaded after common so files from it got used'",
"timestamp": "2019-11-19T17:58:11.689+01:00"
},
{
"id": "646395328274235392",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "ah in that sense of interpretation",
"timestamp": "2019-11-19T18:04:15.705+01:00"
},
{
"id": "646404242998951945",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "```lua\nPromptSetPosition(prompt, 72.5, 28.7, 101.0)\nN_0x0c718001b77ca468(prompt, 3.0)\n```\nSets a prompt at a world location and it only appears when within the set range (3.0 in this example)",
"timestamp": "2019-11-19T18:39:41.141+01:00"
},
{
"id": "646404463736913950",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": ":LoveSnail:",
"timestamp": "2019-11-19T18:40:33.769+01:00"
},
{
"id": "646405165536247848",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "still looking for how to add interactions to entities / peds",
"timestamp": "2019-11-19T18:43:21.091+01:00"
},
{
"id": "646406911390122014",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "Any luck finding a native for removing them? like removing the default \"loot\" \"rob\" etc? Or does on that you set take priority?",
"timestamp": "2019-11-19T18:50:17.335+01:00"
},
{
"id": "646408812009357372",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "well meant to say pray but eh it works at least",
"timestamp": "2019-11-19T18:57:50.478+01:00"
},
{
"id": "646409032323825694",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "👀",
"timestamp": "2019-11-19T18:58:43.005+01:00"
},
{
"id": "646409212770910239",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "```lua\nlocal horse = 365571 -- GetMount(PlayerPedId())\nlocal group = Citizen.InvokeNative(0xB796970BD125FCE8, horse, Citizen.ResultAsLong()) -- PromptGetGroupIdForTargetEntity\nPromptSetGroup(prompt, group, 0)\nSetPedPromptName(horse, \"Horse Jesus\")\n```",
"timestamp": "2019-11-19T18:59:26.027+01:00"
},
{
"id": "646409637377343549",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "I assume if you had multiple entities in a group, that prompt would appear for all of them?",
"timestamp": "2019-11-19T19:01:07.261+01:00"
},
{
"id": "646409748576731138",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "I think each entity has their own group",
"timestamp": "2019-11-19T19:01:33.773+01:00"
},
{
"id": "646409768596013086",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "that contains prompts",
"timestamp": "2019-11-19T19:01:38.546+01:00"
},
{
"id": "646409812443398164",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "not entirely sure if you can have multiple entities with the same group",
"timestamp": "2019-11-19T19:01:49+01:00"
},
{
"id": "646409841170055191",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "Interesting",
"timestamp": "2019-11-19T19:01:55.849+01:00"
},
{
"id": "646409902620803083",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "also seems like you can use the range to control how close you need to be",
"timestamp": "2019-11-19T19:02:10.5+01:00"
},
{
"id": "646409993741926400",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "I'll try and test that tonight. I've been spawning peds and adding them to the players group, should be kind of easy for me to test it out",
"timestamp": "2019-11-19T19:02:32.225+01:00"
},
{
"id": "646412153636519951",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "But how can you add a prompt to a closer ped? For robbing, for ex.",
"timestamp": "2019-11-19T19:11:07.184+01:00"
},
{
"id": "646412532227244052",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "I failed to get the closest ped in my tests",
"timestamp": "2019-11-19T19:12:37.447+01:00"
},
{
"id": "646412890374406144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "glitchdetector",
"author_id": "71676578244857856",
"content": "your issue is clearly not the prompt, but getting the ped, also not the channel for this",
"timestamp": "2019-11-19T19:14:02.836+01:00"
},
{
"id": "646428051324010520",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "I can swear I saw someone post the native for switching tracks earlier, or was I dreamin",
"timestamp": "2019-11-19T20:14:17.488+01:00"
},
{
"id": "646428991112085509",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "That would be neat",
"timestamp": "2019-11-19T20:18:01.551+01:00"
},
{
"id": "646437895514882096",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ryan_ga",
"author_id": "308309435447771147",
"content": "indeed",
"timestamp": "2019-11-19T20:53:24.526+01:00"
},
{
"id": "646550660187422760",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "```\nTASK_FOLLOW_TO_OFFSET_OF_ENTITY(Ped follower, Ped target, float offsetX, float offsetY, float offsetZ, float var1, float var2, float minDist, BOOL b1, BOOL b2, BOOL walkOnly, BOOL b3, BOOL b4)\n\nfollower - The ped you want to follow somebody\ntarget - The ped you want the follow to follow\noffsetX,Y,Z - Offset from target the follower will stand\nminDist - Minimum distance the follower can be from the target (-1 for auto, 50f is max)\nwalkOnly - if true the follower can only walk\n\nvar1: found in scripts (-1, 1f, 1.2f, 2f, 2.5f )\nvar2: found in scripts (-1, 1.0)\nUnsure what they both do, I cannot seem to find any difference when raising and lowering them. Maybe you need to have one of the Booleans active for them to take effect?\n```",
"timestamp": "2019-11-20T04:21:29.719+01:00"
},
{
"id": "646551288078925824",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "Hope this is the right place for this 🙂",
"timestamp": "2019-11-20T04:23:59.42+01:00"
},
{
"id": "646589258970169344",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Not sure if I am just lucky with my test cases, but it seems the weather is synced across all sessions",
"timestamp": "2019-11-20T06:54:52.386+01:00"
},
{
"id": "646589288624160790",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "when in an MP session",
"timestamp": "2019-11-20T06:54:59.456+01:00"
},
{
"id": "646589549023330312",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "My local server is exactly in line with the RDRO servers, down to seconds",
"timestamp": "2019-11-20T06:56:01.54+01:00"
},
{
"id": "646597557388050432",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hippomade",
"author_id": "362918025655222272",
"content": "Seems like they designed it so it works without any server sync. When in net sessions, time and weather seem to flow on their own and the single player natives to change them are ignored",
"timestamp": "2019-11-20T07:27:50.883+01:00"
},
{
"id": "646599897230868481",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Yeah, multiple RedM servers and online server all have the exact same weather and time at the same time",
"timestamp": "2019-11-20T07:37:08.745+01:00"
},
{
"id": "646599927983505409",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Yeah, when you connect to a RedM server, you see, how weather is changed. I thought it was synced by RedM already, but turns out, it's doing on its own.",
"timestamp": "2019-11-20T07:37:16.077+01:00"
},
{
"id": "646600263875952641",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "It's good news, I guess. Anywho, we could rewrite it, if we want, but if it's working out of the box - why not.",
"timestamp": "2019-11-20T07:38:36.16+01:00"
},
{
"id": "646600679833468939",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hippomade",
"author_id": "362918025655222272",
"content": "Yeah wouldn't be surprised to see servers stick to the standard time/weather flow, why not. Saves some sync work and it works predictably everywhere",
"timestamp": "2019-11-20T07:40:15.332+01:00"
},
{
"id": "646600773232492555",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hippomade",
"author_id": "362918025655222272",
"content": "Either way there's already a native out there to override network clock time, and I'm sure the weather ones will be found sooner or later too if you do want particular control",
"timestamp": "2019-11-20T07:40:37.6+01:00"
},
{
"id": "646649908526317568",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "@Maniac test with very eccentric values (like 10 or so) for var1 and var2, one is probably speed (similarly to other task\\_ped\\_* natives)",
"timestamp": "2019-11-20T10:55:52.367+01:00"
},
{
"id": "646653106821791754",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "Will do! Gonna play around with that one again. Have been researching a lot trying to find component related natives for now 🙂",
"timestamp": "2019-11-20T11:08:34.9+01:00"
},
{
"id": "646907476331200513",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "```c\n// 0xC6258F41D86676E0\nvoid SET_PED_CORE_LEVEL(Ped ped, int coreType, int coreAmount)\n/*\n coreType = 0 (health), 1 (stamina), 2 (deadeye)\n coreAmount = range between 0 (empty) and 100 (full)\n*/```\nExample:\n``Citizen.InvokeNative(0xC6258F41D86676E0, PlayerPedId(), coreType, coreAmount)``\n``Citizen.InvokeNative(0xC6258F41D86676E0, PlayerPedId(), 0, 50) // Sets health to half``",
"timestamp": "2019-11-21T03:59:21.317+01:00"
},
{
"id": "646907574792486943",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "no idea if the name is correct or whatnot, but the native works",
"timestamp": "2019-11-21T03:59:44.792+01:00"
},
{
"id": "646914268159016971",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "I just prey these natives would work when NET comes back. TThanks for all discoveries!",
"timestamp": "2019-11-21T04:26:20.615+01:00"
},
{
"id": "646922936908906526",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "Why wouldn't they? Also yes they do",
"timestamp": "2019-11-21T05:00:47.406+01:00"
},
{
"id": "646923007184470017",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "I'm currently in the process of porting over clrcore. I got a good portion of it done. I plan on making the repository public soon.",
"timestamp": "2019-11-21T05:01:04.161+01:00"
},
{
"id": "646923406440136704",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "Also the \"ped core\" setter hash was first found by @xin. I found the getter last week, but I'm unsure if I ever published it in this channel, so here it is.\n```cs\n// 0x36731AC041289BB1\nint GetCoreValue(int pedHandle, int coreIndex);\n```\nthe return value is a range of 0-100. The coreIndex is Health=0, Stamina=1, DeadEye=2.",
"timestamp": "2019-11-21T05:02:39.351+01:00"
},
{
"id": "646923691439161394",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Oh, I couldn't find anyone post that hash?",
"timestamp": "2019-11-21T05:03:47.3+01:00"
},
{
"id": "646923855285321750",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "It's scattered about in the random channels. I've been meaning to publish all of my findings to Unknownmodder's native DB. I'll probably get around to that on friday.",
"timestamp": "2019-11-21T05:04:26.364+01:00"
},
{
"id": "646923974361612301",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "Probably also release the clrcore shit on friday or saturday as well, along with my DevTools resource.",
"timestamp": "2019-11-21T05:04:54.754+01:00"
},
{
"id": "646923979264884776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "kk. I just found that when looking for something else and couldn't find any other refs to ``0x36731AC041289BB1``",
"timestamp": "2019-11-21T05:04:55.923+01:00"
},
{
"id": "646924069379375116",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "yeah discord search is shit.",
"timestamp": "2019-11-21T05:05:17.408+01:00"
},
{
"id": "646924098894692352",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "haha true",
"timestamp": "2019-11-21T05:05:24.445+01:00"
},
{
"id": "646924232349057043",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Have you seen anyone post the XP natives (for like health level etc) before I continue wasting my time 😛",
"timestamp": "2019-11-21T05:05:56.263+01:00"
},
{
"id": "646924295683047435",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "no I don't even think anyone's found those yet :SurpriseSnail:",
"timestamp": "2019-11-21T05:06:11.363+01:00"
},
{
"id": "646924324430675970",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "I went looking a couple days ago and couldn't find shit.",
"timestamp": "2019-11-21T05:06:18.217+01:00"
},
{
"id": "646924391204126738",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I'm on the search 🔍",
"timestamp": "2019-11-21T05:06:34.137+01:00"
},
{
"id": "646925560110645249",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "Also here, have some other shit I published but never posted in here.\n\nhttps://pastebin.com/n72eW6zd\nhttps://pastebin.com/78xTzGsU\nhttps://pastebin.com/91JDZsjV\nhttps://pastebin.com/xRTRYkeZ\nhttps://pastebin.com/WA2mfvA0",
"timestamp": "2019-11-21T05:11:12.826+01:00"
},
{
"id": "646935716927897630",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Lots of good stuff!\nDoes TaskStartScenarioInPlace work in RedM, by the way? Didn't test it yet.",
"timestamp": "2019-11-21T05:51:34.4+01:00"
},
{
"id": "646942031226339328",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "yes, different parameters though iirc.",
"timestamp": "2019-11-21T06:16:39.846+01:00"
},
{
"id": "646958123201855508",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "Amazing!",
"timestamp": "2019-11-21T07:20:36.472+01:00"
},
{
"id": "646973643397660682",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_hicham",
"author_id": "304377455991455744",
"content": "what are scenarios for ? @MJRamon are they the animations ?",
"timestamp": "2019-11-21T08:22:16.775+01:00"
},
{
"id": "646978138882179072",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "No, scenarios is scenarios",
"timestamp": "2019-11-21T08:40:08.582+01:00"
},
{
"id": "646978153427894290",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "Npc tasks",
"timestamp": "2019-11-21T08:40:12.05+01:00"
},
{
"id": "646978211070345217",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "Or well its almost animations",
"timestamp": "2019-11-21T08:40:25.793+01:00"
},
{
"id": "646980927762858004",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "```Citizen.InvokeNative(0x45f13b7e0a15c880, int type?, float x, float y, float z, float r)```",
"timestamp": "2019-11-21T08:51:13.503+01:00"
},
{
"id": "646981139239534598",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Draws a map blip at specified coordinates, with a radius (zone blip?)\n\nHashes for type are currently\n```\nZone Only (No Marker)\nRed = 693035517\nWhite = 1673015813\n\nZone with Solid Colour Marker\nYellow = -1282792512\n\nZone with Cross Marker\nYellow = 408396114 ```",
"timestamp": "2019-11-21T08:52:03.923+01:00"
},
{
"id": "646981303639474186",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "",
"timestamp": "2019-11-21T08:52:43.119+01:00"
},
{
"id": "646982540304973837",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I believe glitchdetector already documented most blip stuff",
"timestamp": "2019-11-21T08:57:37.963+01:00"
},
{
"id": "646982572634800148",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "damnit!",
"timestamp": "2019-11-21T08:57:45.671+01:00"
},
{
"id": "646982617496944650",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I looked for like an hour to find it, discord search 😡",
"timestamp": "2019-11-21T08:57:56.367+01:00"
},
{
"id": "646982640657891339",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "any idea where?",
"timestamp": "2019-11-21T08:58:01.889+01:00"
},
{
"id": "646982688376619008",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "🍌 or 🤷‍♀️",
"timestamp": "2019-11-21T08:58:13.266+01:00"
},
{
"id": "646983171350593537",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "sigh, yep found them....",
"timestamp": "2019-11-21T09:00:08.416+01:00"
},
{
"id": "646983422623088660",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "And normal blip??",
"timestamp": "2019-11-21T09:01:08.324+01:00"
},
{
"id": "646983511412310019",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "And are they updating the natives blips with names???",
"timestamp": "2019-11-21T09:01:29.493+01:00"
},
{
"id": "646983624024915968",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "```Citizen.InvokeNative(0x554d9d53f696d002, blipType, x, y, z)```",
"timestamp": "2019-11-21T09:01:56.342+01:00"
},
{
"id": "646983725367689217",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "This is the normal blips??",
"timestamp": "2019-11-21T09:02:20.504+01:00"
},
{
"id": "646983733710422034",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "that's a blip w/o radius",
"timestamp": "2019-11-21T09:02:22.493+01:00"
},
{
"id": "646984478576738356",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "what are the blips types ??",
"timestamp": "2019-11-21T09:05:20.083+01:00"
},
{
"id": "646984682743005184",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "That's what I am collecting at the moment 😛",
"timestamp": "2019-11-21T09:06:08.76+01:00"
},
{
"id": "646985129864200192",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "they are simple int i suppose no?",
"timestamp": "2019-11-21T09:07:55.362+01:00"
},
{
"id": "646985176492277770",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "No, they are hashes",
"timestamp": "2019-11-21T09:08:06.479+01:00"
},
{
"id": "646985192119992357",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "so yes an int",
"timestamp": "2019-11-21T09:08:10.205+01:00"
},
{
"id": "646985221656412161",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "but not just 0, 1, 2",
"timestamp": "2019-11-21T09:08:17.247+01:00"
},
{
"id": "646985372571664406",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avililla",
"author_id": "432184096496549888",
"content": "ahh how can i help you to find them",
"timestamp": "2019-11-21T09:08:53.228+01:00"
},
{
"id": "646993777881382925",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "glitchdetector already found them. https://discordapp.com/channels/192358910387159041/643437814104457217/644659181240188938",
"timestamp": "2019-11-21T09:42:17.21+01:00"
},
{
"id": "647026272182075392",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "can anyone confirm whether these files are just \"supporting\" the .yscs or if the scripts themselves are ymts ?",
"timestamp": "2019-11-21T11:51:24.455+01:00"
},
{
"id": "647026298966769674",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "```levels/rdr3/streaming/script@cme@Guarma2_CME_06_CHAINED_SHOT_srl.ymt\nlevels/rdr3/streaming/script@cme@Guarma2_CME_07_CHAINED_SHOT_srl.ymt\nlevels/rdr3/streaming/script@cme@Guarma2_CME_08_JUNGLE_CAMP1_SHOT_srl.ymt\nlevels/rdr3/streaming/script@cme@Guarma2_CME_09_LEAVING_RUINS_SHOT_srl.ymt\nlevels/rdr3/streaming/script@cme@Guarma2_CME_11__INTO_JUNGLE_SHOT_srl.ymt\nlevels/rdr3/streaming/script@cme@Guarma2_CME_20_JUNGLE_TALK_SHOT_srl.ymt```",
"timestamp": "2019-11-21T11:51:30.841+01:00"
},
{
"id": "647026665028976640",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "okay",
"timestamp": "2019-11-21T11:52:58.117+01:00"
},
{
"id": "647026697568387073",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "this points to there not being a ysv",
"timestamp": "2019-11-21T11:53:05.875+01:00"
},
{
"id": "647026703889203208",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "ysc",
"timestamp": "2019-11-21T11:53:07.382+01:00"
},
{
"id": "647026976401391637",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "we have an entry in a file naming the script it uses :",
"timestamp": "2019-11-21T11:54:12.354+01:00"
},
{
"id": "647027050657611786",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "```xml\n<Item>\n <position x=\"-1335.422000\" y=\"2932.378000\" z=\"397.864000\" />\n <tags>FT_TAG_COST_LOW FT_TAG_OPTIONAL_PLAYER</tags>\n <name>script@fast_travel@loc@fast_travel_loc_h07a</name>\n <waypointrecording>script@fast_travel@loc@fast_travel_loc_h07a</waypointrecording>\n <srl>platform:/levels/rdr3/streaming/script@fast_travel@loc@fast_travel_loc_h07a_srl</srl>\n </Item>```",
"timestamp": "2019-11-21T11:54:30.058+01:00"
},
{
"id": "647027128642174977",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "and then we have the script file itself, which is not a ysc",
"timestamp": "2019-11-21T11:54:48.651+01:00"
},
{
"id": "647027203183476746",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "```levels/rdr3/streaming/script@fast_travel@loc@fast_travel_loc_h07a_srl.ymt\n```",
"timestamp": "2019-11-21T11:55:06.423+01:00"
},
{
"id": "647029112619139092",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "all of the extensions are same as gtav",
"timestamp": "2019-11-21T12:02:41.668+01:00"
},
{
"id": "647029132118458378",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "as the extensions aren't based on game",
"timestamp": "2019-11-21T12:02:46.317+01:00"
},
{
"id": "647029156780965908",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "they're based on _platform_",
"timestamp": "2019-11-21T12:02:52.197+01:00"
},
{
"id": "647029309881712640",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "y is windows\nx is xbox\nidk for ps3/4 but 'p' is for ps5",
"timestamp": "2019-11-21T12:03:28.699+01:00"
},
{
"id": "647029398066692096",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moscovium_cfx",
"author_id": "478866906468843524",
"content": "oh, I think older playstations had 'o' for orbis",
"timestamp": "2019-11-21T12:03:49.724+01:00"
},
{
"id": "647030211182854144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "a = android\nc = cell (ps3)\nd = durango (xb1, xbox scarlett too?)\ni = independent\nn = nx64 (switch)\no = orbis (ps4)\np = prospero (ps5)\ns = io**s**\nv = vita (psp2)\nw = windows (32-bit)\nx = xenon (x360)\ny = x64",
"timestamp": "2019-11-21T12:07:03.586+01:00"
},
{
"id": "647030307664691201",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "also they're not scripts but _srls_",
"timestamp": "2019-11-21T12:07:26.589+01:00"
},
{
"id": "647030316992561152",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "V also had SRLs",
"timestamp": "2019-11-21T12:07:28.813+01:00"
},
{
"id": "647036792339562496",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "i was to quick on the draw there. i know, streaming request lists. i was not uncertain of the Y, but of the sc(ysc) versus the mt(ymt)",
"timestamp": "2019-11-21T12:33:12.656+01:00"
},
{
"id": "647450447971614752",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nick78111",
"author_id": "85701625133412352",
"content": "Don't know if there is a list of these yet, this native will attach luggage to vehicles. Things like chests/lanterns/apples etc. I believe there are some for trains as well\nhttps://pastebin.com/F8dPWbwN",
"timestamp": "2019-11-22T15:56:55.844+01:00"
},
{
"id": "647496897296334868",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "Nice",
"timestamp": "2019-11-22T19:01:30.226+01:00"
},
{
"id": "647635290243989515",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Is that strictly vehicles, or all entities?",
"timestamp": "2019-11-23T04:11:25.676+01:00"
},
{
"id": "647635325761486858",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "example: horse lanterns / saddles",
"timestamp": "2019-11-23T04:11:34.144+01:00"
},
{
"id": "647635716469161997",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Aren't saddles ped components?",
"timestamp": "2019-11-23T04:13:07.296+01:00"
},
{
"id": "647636007071645697",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Thought I saw someone mention not, but possibly wrong",
"timestamp": "2019-11-23T04:14:16.581+01:00"
},
{
"id": "647636016005513236",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "I'll try it",
"timestamp": "2019-11-23T04:14:18.711+01:00"
},
{
"id": "647636176416669698",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "I honestly don't know myself. Just making assumptions 😛",
"timestamp": "2019-11-23T04:14:56.956+01:00"
},
{
"id": "647638484999209001",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "I know you can put lanterns on horses in MP, so I might just double check that native and see if it works on horses",
"timestamp": "2019-11-23T04:24:07.365+01:00"
},
{
"id": "647641177163825162",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetestgame",
"author_id": "182695231584468992",
"content": "The saddles on the horses use the same clothing component as the regular pedestrians",
"timestamp": "2019-11-23T04:34:49.227+01:00"
},
{
"id": "647641212731260979",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetestgame",
"author_id": "182695231584468992",
"content": "It only works on some horses though",
"timestamp": "2019-11-23T04:34:57.707+01:00"
},
{
"id": "647643135832358943",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "Ah! that would explain why my testing with the component natives didn't work, thanks fella",
"timestamp": "2019-11-23T04:42:36.21+01:00"
},
{
"id": "647779784755249192",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nick78111",
"author_id": "85701625133412352",
"content": "These force camera positions\n```\nCitizen.InvokeNative(0x90DA5BA5C2635416) -- first person\nCitizen.InvokeNative(0x8370D34BD2E60B73) -- second furthest 3rd person\nCitizen.InvokeNative(0x1CFB749AD4317BDE) -- furthest 3rd person\n```",
"timestamp": "2019-11-23T13:45:35.852+01:00"
},
{
"id": "647808782268760068",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "😁 👌 \n**(SP only)**\n```N_0x316cdb5b6e8f4110(horse,veh) -- attach horse to vehicle (SP)```",
"timestamp": "2019-11-23T15:40:49.398+01:00"
},
{
"id": "647809048535760926",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "does this work for boats",
"timestamp": "2019-11-23T15:41:52.881+01:00"
},
{
"id": "647809053950607415",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "i hope not",
"timestamp": "2019-11-23T15:41:54.172+01:00"
},
{
"id": "647810726827786261",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "fortunately no 😄",
"timestamp": "2019-11-23T15:48:33.017+01:00"
},
{
"id": "647811004360818709",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "```N_0xbae08f00021bffb2(horse) -- agitates the horse```",
"timestamp": "2019-11-23T15:49:39.186+01:00"
},
{
"id": "647817266599297044",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "What? Agitates? How? :)",
"timestamp": "2019-11-23T16:14:32.22+01:00"
},
{
"id": "647817467430830122",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Basically just the \"flee\" thing",
"timestamp": "2019-11-23T16:15:20.102+01:00"
},
{
"id": "647822491187937319",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "With this native ( N_0x316cdb5b6e8f4110(horse,veh) ) the vehicle does not attack the horse but spawn the horse over the vehicle. it's normal?",
"timestamp": "2019-11-23T16:35:17.859+01:00"
},
{
"id": "647823128659230730",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "I guess not all vehicles can be attached? Try different. Or maybe not all horses",
"timestamp": "2019-11-23T16:37:49.844+01:00"
},
{
"id": "647823400496136192",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "```N_0x69d65e89ffd72313(true) -- black bars top and bottom```",
"timestamp": "2019-11-23T16:38:54.655+01:00"
},
{
"id": "647823510592290837",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "idk @Deleted User i used \"A_C_Horse_AmericanPaint_Greyovero\" and \"cart01\"",
"timestamp": "2019-11-23T16:39:20.904+01:00"
},
{
"id": "647827644175482880",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "@Anthony https://pastebin.com/G1gy9B9A This is my script. It continues to spawn the horse over the vehicle",
"timestamp": "2019-11-23T16:55:46.427+01:00"
},
{
"id": "647841815264886804",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "@Deleted User \n1. You forgot to return the value\n2. Just find out works only in SP",
"timestamp": "2019-11-23T17:52:05.078+01:00"
},
{
"id": "647841924128047135",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "Ok, thanks",
"timestamp": "2019-11-23T17:52:31.033+01:00"
},
{
"id": "647847145633742899",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "```\nDetach wheels from vehicle\n\nN_0xd4f5efb55769d272(veh,0) -- left wheel\nN_0xd4f5efb55769d272(veh,1) -- right wheel\n```",
"timestamp": "2019-11-23T18:13:15.937+01:00"
},
{
"id": "647847383287463947",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Damn, too much damage - lose your wheel and call for help. Nice!",
"timestamp": "2019-11-23T18:14:12.598+01:00"
},
{
"id": "647851353279954974",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "if you want to use the native to attach a horse in to a vehicle in MP\n```N_0x316cdb5b6e8f4110(horse,veh)```\nthen when you create the ped(horse) put false in p6 (i think is \"isNetwork\")\n```CreatePed(pedHash, x, y, z, 0.0, false, true, true, true)```",
"timestamp": "2019-11-23T18:29:59.118+01:00"
},
{
"id": "647902544244244494",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Third parameter in\n```Citizen.InvokeNative(0x316cdb5b6e8f4110, horse, wagon, position)```\n(position) is an int starting from 0, where you can choose, at what position the horse should be standing, if there are two and more horses can be attached.",
"timestamp": "2019-11-23T21:53:23.995+01:00"
},
{
"id": "647929293237911562",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "vdojunk",
"author_id": "277138600854814730",
"content": "``` //Explosions\n //2-glassy bottle explode\n //5-massive explosion\n //6- flare explode?\n //8- hissing steam jet\n //12-small fireworky explosion\n //25- another basic explosion\n //26- lots of sparks and debris\n //27 -explosion\n //28 - explosion (alternate audio)\n //29 - tiny explode\n //31 - explode\n //32 -spark flare\n //33- white firework sparks\n //34- glass break\n\n int expType = 5;\n float explosionScale = 0.1f; //0.1 - 1 seem to be the best scales\n bool isAudible = true;\n bool isInvisible = false;\n var exp = Function.Call<int>((Hash)0x7D6F58F69DA92530, fireCoords.X + 10, fireCoords.Y, fireCoords.Z + 1.5f, expType, explosionScale, isAudible, isInvisible); ```",
"timestamp": "2019-11-23T23:39:41.452+01:00"
},
{
"id": "647938535537639428",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "stonah420",
"author_id": "566670621040181258",
"content": "```mdd\nTASK_FOLLOW_TO_OFFSET_OF_ENTITY(Ped follower, Ped target, float offsetX, float offsetY, float offsetZ, float var1, float var2, float minDist, BOOL b1, BOOL b2, BOOL walkOnly, BOOL b3, BOOL b4)\n\nfollower - The ped you want to follow somebody\ntarget - The ped you want the follow to follow\noffsetX,Y,Z - Offset from target the follower will stand\nminDist - Minimum distance the follower can be from the target (-1 for auto, 50f is max)\nwalkOnly - if true the follower can only walk\n\nvar1: found in scripts (-1, 1f, 1.2f, 2f, 2.5f )\nvar2: found in scripts (-1, 1.0)\nUnsure what they both do, I cannot seem to find any difference when raising and lowering them. Maybe you need to have one of the Booleans active for them to take effect?\n```",
"timestamp": "2019-11-24T00:16:24.988+01:00"
},
{
"id": "647943559693205514",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "Word for word copy of what @Maniac posted, @𝖘𝖙𝖔𝖓𝖆𝖍 \nAnd even no credits.",
"timestamp": "2019-11-24T00:36:22.84+01:00"
},
{
"id": "647970458599424064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "aedds",
"author_id": "380696234270392321",
"content": "Playing with weird native 0xA5BAE410B03E7371, found out that it can be \"stacked\", changing mp ped face and body type. For example:\n\n Citizen.InvokeNative(0x283978A15512B2FE, PlayerPedId(), true) -- reset model \n Citizen.InvokeNative(0xA5BAE410B03E7371 ,PlayerPedId(),param,0,0,0) -- param - add body shape for mp_male from 124 to 128 (110 - 115 for mp_female)\n Citizen.InvokeNative(0xA5BAE410B03E7371 ,PlayerPedId(),param,0,0,0) -- param - add face shape for mp_male from 110 to 123 (96 - 109 for mp_female)\n Citizen.InvokeNative(0xA5BAE410B03E7371 ,PlayerPedId(),param,0,0,0) -- param - add cloth type for mp_male from 0 to 109 (0-95 for mp_female). -- not all work",
"timestamp": "2019-11-24T02:23:16.039+01:00"
},
{
"id": "648012092892512286",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "Good find!",
"timestamp": "2019-11-24T05:08:42.428+01:00"
},
{
"id": "648039388621701140",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "@aeds good job my friend",
"timestamp": "2019-11-24T06:57:10.237+01:00"
},
{
"id": "648042198184755210",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "ah, that's explains a lot, nice find\nonce I accidentally messed some outfits with each other and didn't understand why that happened, lol",
"timestamp": "2019-11-24T07:08:20.089+01:00"
},
{
"id": "648063754029891585",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "```c\n// 0x92DB0739813C5186\nTASK_MOUNT_ANIMAL(Ped ped, Ped mount, int timer, int position, float ped_speed, int mount_style, float unk1, float unk2)\n\nmount_styles enum {\n normal = 1,\n backfirst = 8,\n warptohorse = 16,\n }\n\n// timer: Timer in ms, if it reaches 0 it will auto warp the ped to the horse\n// position: -1: main seat on horse, 0: back of horse\n// ped_speed: How fast the ped will go\n// mount_style: changes the way the ped gets on the horse (1, 8, 131072, 73, 1025, 16, 64, 513) \n\n// Tried lots of variables for unk1 & unk2, nothing changed. All instances of this Method ended with 0, 0 from what I saw.\n```",
"timestamp": "2019-11-24T08:33:59.403+01:00"
},
{
"id": "648064132033150999",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "heh, interesting. I had just documented the unmounting task.",
"timestamp": "2019-11-24T08:35:29.526+01:00"
},
{
"id": "648064377475432460",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "here have some 🔍 📰 while it's still a PR.\n<https://github.com/UnknownModder/rdr3-nativedb-data/pull/4>",
"timestamp": "2019-11-24T08:36:28.044+01:00"
},
{
"id": "648064546392506379",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "yaboimaniac",
"author_id": "194766154877632512",
"content": "That's awesome! Thankyou",
"timestamp": "2019-11-24T08:37:08.317+01:00"
},
{
"id": "648187003476770816",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "gerarryjowling",
"author_id": "93453680191217664",
"content": "How do people open the game scripts?",
"timestamp": "2019-11-24T16:43:44.361+01:00"
},
{
"id": "648187701291646990",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cherrytopper4747",
"author_id": "309847621546278914",
"content": "T_T #redm-info ```No docs yet, try using loadlevel rdr3 or localGame resName with a resource from usermaps:/resources/. (and localRestart to restart your resource)``` Does no one read the other channels?",
"timestamp": "2019-11-24T16:46:30.733+01:00"
},
{
"id": "648189444028891149",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "breze.",
"author_id": "634979120010362905",
"content": "i almost wish the latest build didn't came out , here is the beginning of all stupid questions",
"timestamp": "2019-11-24T16:53:26.234+01:00"
},
{
"id": "648200177730977841",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "profex99",
"author_id": "508431111802585109",
"content": "quote",
"timestamp": "2019-11-24T17:36:05.348+01:00"
},
{
"id": "648224444094873640",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "duderocktv",
"author_id": "227925153852555264",
"content": "investigations...",
"timestamp": "2019-11-24T19:12:30.9+01:00"
},
{
"id": "648304463064334347",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "How can i start it?",
"timestamp": "2019-11-25T00:30:28.909+01:00"
},
{
"id": "648304592672653328",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "i starting RedM or RedM SP and still im getting error with different location of game",
"timestamp": "2019-11-25T00:30:59.81+01:00"
},
{
"id": "648309623559946240",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": ".hallux",
"author_id": "227985978164248576",
"content": "%punish @Deleted User 1h Failure to read #redm-info and the stickied message even after being directed to do so.",
"timestamp": "2019-11-25T00:50:59.267+01:00"
},
{
"id": "648309624885215255",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Snaily- 🐌",
"author_id": "471064997070635009",
"content": "Applied the Actually muted role to @Deleted User. I will remove it in 1 hour.",
"timestamp": "2019-11-25T00:50:59.583+01:00"
},
{
"id": "648335074202222604",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sanhje",
"author_id": "130072488381120512",
"content": "Anyone know if SET_PED_COMPONENT_VARIATION has been found yet?",
"timestamp": "2019-11-25T02:32:07.173+01:00"
},
{
"id": "648335356579545088",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "lyud8614",
"author_id": "251770718549835779",
"content": "i believe so, and it also serves for attaching saddles to horses",
"timestamp": "2019-11-25T02:33:14.497+01:00"
},
{
"id": "648335497768468500",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sanhje",
"author_id": "130072488381120512",
"content": "That is awesome. I've been searching for it but with no luck :S",
"timestamp": "2019-11-25T02:33:48.159+01:00"
},
{
"id": "648335822411792387",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "It's in this channel",
"timestamp": "2019-11-25T02:35:05.56+01:00"
},
{
"id": "648335832117411841",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "search up",
"timestamp": "2019-11-25T02:35:07.874+01:00"
},
{
"id": "648336944664805376",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sanhje",
"author_id": "130072488381120512",
"content": "found it cheers!",
"timestamp": "2019-11-25T02:39:33.126+01:00"
},
{
"id": "648525734159187998",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "Just found that the last argument of `Hash.CREATE_PED` spawns the ped with a weapon if set to false and none to true, maybe its the weapon hash idk which type is it.",
"timestamp": "2019-11-25T15:09:44.049+01:00"
},
{
"id": "648525771455070238",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "i tested with `S_M_M_UNITRAINGUARDS_01`",
"timestamp": "2019-11-25T15:09:52.941+01:00"
},
{
"id": "648573458619301928",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "```Citizen.InvokeNative(0x30a768c30d385ec5,ped) -- make the ped bleed and die after 2 seconds ¯\\_(ツ)_/¯ ```",
"timestamp": "2019-11-25T18:19:22.447+01:00"
},
{
"id": "648580883095355412",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "oof, Thats interresting 😂",
"timestamp": "2019-11-25T18:48:52.58+01:00"
},
{
"id": "648582367925239811",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "countacey",
"author_id": "88300964217393152",
"content": "For those critical hits that don't immediately kill (like a shot thru the neck)",
"timestamp": "2019-11-25T18:54:46.591+01:00"
},
{
"id": "648586901686714369",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mjramon",
"author_id": "106711858643230720",
"content": "This is how bans should be visualized",
"timestamp": "2019-11-25T19:12:47.524+01:00"
},
{
"id": "648588369114169364",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "moon_0704",
"author_id": "307293810193465348",
"content": "Oh I like the critical hits it’s a animation that is very slept on",
"timestamp": "2019-11-25T19:18:37.386+01:00"
},
{
"id": "648607554406055946",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "The animators working for R* are pretty fucking top notch.",
"timestamp": "2019-11-25T20:34:51.516+01:00"
},
{
"id": "648644646532284421",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "modifiver_and_son",
"author_id": "314789948366520321",
"content": "@Anthony just a heads-up, this is consistently referred to as Bleedout in the game.",
"timestamp": "2019-11-25T23:02:14.968+01:00"
},
{
"id": "648664447648399360",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Hey, uh, not sure if this is an investigation per se - but I noticed GetPlayerServerId returns 0 for both client. Not yet implemented / works as designed / i am a dumb fuck?",
"timestamp": "2019-11-26T00:20:55.922+01:00"
},
{
"id": "648666774946185229",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "correct, not implemented at this time.",
"timestamp": "2019-11-26T00:30:10.793+01:00"
},
{
"id": "648688775962165250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hackuracy",
"author_id": "219606875644231680",
"content": "```js\nCitizen.InvokeNative(0xD3A7B003ED343FD9, PlayerPedId(), 0xF5D31879, true,false,true)\nCitizen.InvokeNative(0xD3A7B003ED343FD9, PlayerPedId(), 0x37A566F6, true,false,true)\n```\nGives MP_MALE hair and facial hair",
"timestamp": "2019-11-26T01:57:36.244+01:00"
},
{
"id": "648739796419608589",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Hey Maniac - did you ever get anywhere with your quest to figure out saddles?",
"timestamp": "2019-11-26T05:20:20.469+01:00"
},
{
"id": "648741309112385555",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "he doesn't have gated and can't respond, but I'll ask him",
"timestamp": "2019-11-26T05:26:21.123+01:00"
},
{
"id": "648741370047234078",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Oh! Alright, thanks kn0pee",
"timestamp": "2019-11-26T05:26:35.651+01:00"
},
{
"id": "648741567770787845",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "IIRC someone found out heaps of stuff yesterday in a gated chat, I'll let them release it when they want 🙂",
"timestamp": "2019-11-26T05:27:22.792+01:00"
},
{
"id": "648741623601299457",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Fair enough, thanks again.",
"timestamp": "2019-11-26T05:27:36.103+01:00"
},
{
"id": "648823411484786688",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "```c\n// 0x772A1969F649E902\nBOOL IS_MODEL_A_HORSE(int hash)```",
"timestamp": "2019-11-26T10:52:35.854+01:00"
},
{
"id": "648823424608632832",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "from @Maniac",
"timestamp": "2019-11-26T10:52:38.983+01:00"
},
{
"id": "648823470850965544",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthaku",
"author_id": "296274538256269312",
"content": "thx",
"timestamp": "2019-11-26T10:52:50.008+01:00"
},
{
"id": "648823536575840268",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "name might be wrongish since it is in the ped category, but it def takes a model hash input",
"timestamp": "2019-11-26T10:53:05.678+01:00"
},
{
"id": "648831448740265987",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "```c\n//0x3CC4A718C258BDD0\nINT GET_MODEL_RELATIONSHIP_GROUP_HASH(int hash)\n```\nfrom @Maniac",
"timestamp": "2019-11-26T11:24:32.085+01:00"
},
{
"id": "648831540410712064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "https://cdn.discordapp.com/attachments/474132909377191936/648831187120422937/unknown.png",
"timestamp": "2019-11-26T11:24:53.941+01:00"
},
{
"id": "648831620283105283",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kn0pee",
"author_id": "178398237550444545",
"content": "Apologies if they have already been documented, but that is the context. A little more confusing",
"timestamp": "2019-11-26T11:25:12.984+01:00"
},
{
"id": "648940229507416074",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "We shouldn't need to set the relationship group manually though, right?\n\nHmm, or maybe changing the relationship group is part of the taming process.",
"timestamp": "2019-11-26T18:36:47.441+01:00"
},
{
"id": "648996904247754753",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "anyone figure out N_0xc239dbd9a57d2a71 yet? is this like createped but for vehicles or trains?",
"timestamp": "2019-11-26T22:21:59.752+01:00"
},
{
"id": "649002941923065897",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "It's for trains",
"timestamp": "2019-11-26T22:45:59.246+01:00"
},
{
"id": "649003055664201728",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Will automatically spawn a train on the closest tracks to the coords specified.\n```lua\nN_0xc239dbd9a57d2a71(trainHash, GetEntityCoords(PlayerPedId()), 0, 0, 1, 1)\n```",
"timestamp": "2019-11-26T22:46:26.364+01:00"
},
{
"id": "649004414593531954",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "ah ok, so basically createtrain if you will, do you know if handcarts on train tracks are considered trains, vehicles, or peds?",
"timestamp": "2019-11-26T22:51:50.358+01:00"
},
{
"id": "649004589877690370",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "definitely not peds",
"timestamp": "2019-11-26T22:52:32.149+01:00"
},
{
"id": "649004869117673478",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Trains",
"timestamp": "2019-11-26T22:53:38.725+01:00"
},
{
"id": "649004893494968340",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "there are 19 trains",
"timestamp": "2019-11-26T22:53:44.537+01:00"
},
{
"id": "649004958557011969",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "```lua\nlocal TRAIN_HASHES = {\n -1464742217,\n -577630801,\n -1901305252,\n -1719006020,\n 519580241,\n 1495948496,\n 1365127661,\n -1083616881,\n 1030903581,\n -2006657222,\n 1285344034,\n -156591884,\n 987516329,\n -1740474560,\n -651487570,\n -593637311,\n 1094934838,\n 1054492269,\n 1216031719,\n}\n```",
"timestamp": "2019-11-26T22:54:00.049+01:00"
},
{
"id": "649005001859006475",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "by the way thanks to @Sploshfried for all of this 😛",
"timestamp": "2019-11-26T22:54:10.373+01:00"
},
{
"id": "649005102258192400",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "well, i assumed not a ped 😉 haha",
"timestamp": "2019-11-26T22:54:34.31+01:00"
},
{
"id": "649005140891664419",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "dunno why i put it there",
"timestamp": "2019-11-26T22:54:43.521+01:00"
},
{
"id": "649008415540117512",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "train names as their models or *.dat files?",
"timestamp": "2019-11-26T23:07:44.258+01:00"
},
{
"id": "649008714170368010",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Dunno to be honest, but you also need to request the models of the carriages of the train",
"timestamp": "2019-11-26T23:08:55.457+01:00"
},
{
"id": "649008807157956618",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "```lua\nfunction SpawnTrain(n)\n if DoesEntityExist(CURRENT_TRAIN) then\n DeleteEntity(CURRENT_TRAIN)\n end\n local trainHash = TRAIN_HASHES[n]\n local trainWagons = N_0x635423d55ca84fc8(trainHash)\n for wagonIndex = 0, trainWagons - 1 do\n local trainWagonModel = N_0x8df5f6a19f99f0d5(trainHash, wagonIndex)\n LoadMyModel(trainWagonModel)\n end\n local train = N_0xc239dbd9a57d2a71(trainHash, GetEntityCoords(PlayerPedId()), 0, 0, 1, 1)\n SetTrainSpeed(train, 0.0)\n TaskWarpPedIntoVehicle(PlayerPedId(), train, -1)\nend\n```",
"timestamp": "2019-11-26T23:09:17.627+01:00"
},
{
"id": "649009088558137349",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "hm, train*.dat file names are very similar to V ones + it has some custom names missions related",
"timestamp": "2019-11-26T23:10:24.718+01:00"
},
{
"id": "649009168908419082",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Well since I don't have files, I have no idea.",
"timestamp": "2019-11-26T23:10:43.875+01:00"
},
{
"id": "649010514579554306",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "```\ndata/levels/rdr3/trolley_intersection2.dat\r\ndata/levels/rdr3/trolley_intersection3.dat\r\ndata/levels/rdr3/trolley_intersection5.dat\r\ndata/levels/rdr3/trains_nb1.dat\r\ndata/levels/rdr3/trains_nb2.dat\r\ndata/levels/rdr3/trains_nb3.dat\r\ndata/levels/rdr3/trains_intersection1_3.dat\r\ndata/levels/rdr3/trains_intersection2_3.dat\r\ndata/levels/rdr3/trains_intersection1_ann.dat\r\ndata/levels/rdr3/trains_intersection2_ann.dat\r\ndata/levels/rdr3/trains_intersection3_cor.dat\r\ndata/levels/rdr3/trains_intersection1_app.dat\r\ndata/levels/rdr3/trains_rob3.dat\r\ndata/levels/rdr3/trains_old_west03.dat\r\ndata/levels/rdr3/trains_old_west02.dat\r\ndata/levels/rdr3/trains_old_west01.dat\r\ndata/levels/rdr3/trains_old_west_intersection02.dat\r\ndata/levels/rdr3/trains_old_west_intersection01.dat\r\ndata/levels/rdr3/freight_nb1_inter.dat\r\ndata/levels/rdr3/sd_trolley_cable01.dat\r\ndata/levels/rdr3/sd_trolley_cable02.dat\r\ndata/levels/rdr3/sd_trolley_cable03.dat\r\ndata/levels/rdr3/sd_trolley_cable04.dat\r\ndata/levels/rdr3/sd_trolley_cable05.dat\r\ndata/levels/rdr3/sd_trolley_cable06.dat\r\ndata/levels/rdr3/sd_trolley_cable07.dat\r\ndata/levels/rdr3/sd_trolley_cable08.dat\r\n```\na bit more than 19 🤔",
"timestamp": "2019-11-26T23:16:04.708+01:00"
},
{
"id": "649010644082884610",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Some of them might be dupes though",
"timestamp": "2019-11-26T23:16:35.584+01:00"
},
{
"id": "649010682137935894",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "as in the exact same style",
"timestamp": "2019-11-26T23:16:44.657+01:00"
},
{
"id": "649010718183522387",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "smallo",
"author_id": "243968099831775233",
"content": "Especially the trolley ones",
"timestamp": "2019-11-26T23:16:53.251+01:00"
},
{
"id": "649022784407732233",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Found this hash -- this will return an int with the number of horses a wagon can have. Pass in the hashkey of the vehicle you want to check. \n```\nFunction.Call<int>((Hash)0x5b1a26bb18e7d451, wagonHash);\n```",
"timestamp": "2019-11-27T00:04:50.063+01:00"
},
{
"id": "649022946777497612",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "Oh thats interresting! 😉",
"timestamp": "2019-11-27T00:05:28.775+01:00"
},
{
"id": "649026597810077696",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "Something to mess with 😉",
"timestamp": "2019-11-27T00:19:59.249+01:00"
},
{
"id": "649029346174042132",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "SetTrainSpeed(train, 0.0) - does this actually work? I've tried it but to no success. I suspect that the ped driving the train fucks it up",
"timestamp": "2019-11-27T00:30:54.51+01:00"
},
{
"id": "649029914233929760",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "SetTrainCruiseSpeed",
"timestamp": "2019-11-27T00:33:09.946+01:00"
},
{
"id": "649030093934559274",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Thank you!",
"timestamp": "2019-11-27T00:33:52.79+01:00"
},
{
"id": "649031211142086677",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "Do you guys have the list of the train wagons?",
"timestamp": "2019-11-27T00:38:19.153+01:00"
},
{
"id": "649036627389186049",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "https://pastebin.com/McGMCJYJ psst search ;)",
"timestamp": "2019-11-27T00:59:50.487+01:00"
},
{
"id": "649037247512838144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "oof",
"timestamp": "2019-11-27T01:02:18.336+01:00"
},
{
"id": "649037261207240722",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "i apologize",
"timestamp": "2019-11-27T01:02:21.601+01:00"
},
{
"id": "649037264609083395",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "D:",
"timestamp": "2019-11-27T01:02:22.412+01:00"
},
{
"id": "649037406766366740",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "Thanks though",
"timestamp": "2019-11-27T01:02:56.305+01:00"
},
{
"id": "649272164176101417",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "Anyone have best practices when testing natives? Is there a pattern typically based on number of properties or are we feeling around in the dark on what the properties accept?",
"timestamp": "2019-11-27T16:35:46.833+01:00"
},
{
"id": "649276394274291712",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "What I did yesterday was that I pulled all the unknown natives for vehicles, and basically just called em one by one and looked at the result",
"timestamp": "2019-11-27T16:52:35.367+01:00"
},
{
"id": "649276578194259972",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "e.g. the count of horses a vehicle can have, I know that some can have 2, some 4. So I just went through the entire list and checked the output until I found the winner, more or less. But I figure that one was easy.",
"timestamp": "2019-11-27T16:53:19.217+01:00"
},
{
"id": "649278255844818954",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Besides that, I guess looking at the PS3 scripts would be good too",
"timestamp": "2019-11-27T16:59:59.2+01:00"
},
{
"id": "649280408990515201",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "but im just a newbie so take it with a grain of salt 😄",
"timestamp": "2019-11-27T17:08:32.55+01:00"
},
{
"id": "649281038358544437",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "_deep breath_ _nikez talked to me_",
"timestamp": "2019-11-27T17:11:02.603+01:00"
},
{
"id": "649281047984603139",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "xD",
"timestamp": "2019-11-27T17:11:04.898+01:00"
},
{
"id": "649281113755222037",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "Awesome, that's a great start for me. Thanks buddy!",
"timestamp": "2019-11-27T17:11:20.579+01:00"
},
{
"id": "649281925558698025",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "Have you been digging through the namespaces that are unnamed at all?",
"timestamp": "2019-11-27T17:14:34.128+01:00"
},
{
"id": "649282203036942336",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Nope, not really",
"timestamp": "2019-11-27T17:15:40.284+01:00"
},
{
"id": "649282254295662613",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "Cool cool.",
"timestamp": "2019-11-27T17:15:52.505+01:00"
},
{
"id": "649679766223585291",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "dammitdave9226",
"author_id": "196337724020490243",
"content": "I have a list of all the controls and their hashes, but not what key/button they are, does anyone have a list of those or is there a way to figure that out",
"timestamp": "2019-11-28T19:35:26.734+01:00"
},
{
"id": "649681452996231177",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mikex5342",
"author_id": "176412210069897217",
"content": "Check the simple-trainer github",
"timestamp": "2019-11-28T19:42:08.892+01:00"
},
{
"id": "649694272521633843",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xinerki",
"author_id": "190057412282023937",
"content": "```lua\nSetRelationshipBetweenGroups(5, `PLAYER`, `PLAYER`)\n```\nto make player executions and such work",
"timestamp": "2019-11-28T20:33:05.305+01:00"
},
{
"id": "649716864519241738",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "dammitdave9226",
"author_id": "196337724020490243",
"content": "I looked at the simple-trainer and I didnt really see what I was looking for, so I made this, not sure if its any help but it prints the control name in chat and in console for all inputs \nhttps://pastebin.com/MZLC5hHM",
"timestamp": "2019-11-28T22:02:51.657+01:00"
},
{
"id": "649717136222191626",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "oof, there is a btn in the simpletrainer which is \"Debug controls\" and if you enable it, pressing any key will tell you what it is.",
"timestamp": "2019-11-28T22:03:56.436+01:00"
},
{
"id": "649717348810358826",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "dammitdave9226",
"author_id": "196337724020490243",
"content": "OH... I just looked though the source code, well heres a stand alone lua version I guess",
"timestamp": "2019-11-28T22:04:47.121+01:00"
},
{
"id": "649741394025512961",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_m4cnch33s3",
"author_id": "203902107906998273",
"content": "Also could have done this using the list as a source in a single statement 🤔",
"timestamp": "2019-11-28T23:40:19.947+01:00"
},
{
"id": "650452665649725442",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "Found this \n```\nCitizen.InvokeNative(0x59174F1AFE095B5A,v.hash,true,false,true,true,false)\n```\nValues are boolean not sure what they mean still trying to figure out but this is the only way i have been able to change the weather. \nIt seems to be something like SetWeather(), only way i made it work was to directly giving the hash to the first value.\nGetting the value from a list or even \n```\nlocal hash = 0x27EA2814 \nWich would be blizzard.\n```\nDidnt work.\nDidnt see this native documented anywhere so maybe you guys can find something to do with it ❤️",
"timestamp": "2019-11-30T22:46:40.317+01:00"
},
{
"id": "650645508926472192",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "SetWeatherTypeTransition is what everyone uses to change weather atm",
"timestamp": "2019-12-01T11:32:57.737+01:00"
},
{
"id": "650645618485887001",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "That definitely does work. Set a low enough transition period and its practically instant. 0.5f or so",
"timestamp": "2019-12-01T11:33:23.858+01:00"
},
{
"id": "650695544301289481",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "I'll check it out thanks!",
"timestamp": "2019-12-01T14:51:47.1+01:00"
},
{
"id": "651219713698824212",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "can someone confirm if guarma is here by \"default\" ?\n```\nVector3(1296.21, -6816.04, 60.82)\n```",
"timestamp": "2019-12-03T01:34:38.823+01:00"
},
{
"id": "651224656950460416",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "some finds related to guarma",
"timestamp": "2019-12-03T01:54:17.386+01:00"
},
{
"id": "651224661232975872",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```c \n// 0xA657EC9DBC6CC900\nvoid SET_MINIMAP_ZONE(int zoneHash)\n/*\n-1868977180 : World\n1935063277: Guarma\n*/\n```\n \n```lua\n-- 0x74E2261D2A66849A\n-- 0x63E7279D04160477\n\nCitizen.InvokeNative(0x74E2261D2A66849A, not guarma)\nCitizen.InvokeNative(0x63E7279D04160477, guarma)\n\n-- This snippet sets the world in guarma / world mode (only lights/skybox?)\n```\n```c \n// 0x189739A7631C1867\nint _GET_WORLD_WATER_TYPE()\n\n// 0xE8770EE02AEE45C2\nvoid _SET_WORLD_WATER_TYPE(int waterType)\n/*\n0 is world\n1 is guarma\n*/\n```",
"timestamp": "2019-12-03T01:54:18.407+01:00"
},
{
"id": "651340574204362762",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "@hotm pic That's why we need our own DB 😦 \nhttps://i.imgur.com/63O7JTE.png",
"timestamp": "2019-12-03T09:34:54.213+01:00"
},
{
"id": "651400287906430986",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "🙁",
"timestamp": "2019-12-03T13:32:11.069+01:00"
},
{
"id": "651701893789384704",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nkjellman",
"author_id": "218223139354574858",
"content": "Man you don't know how much I wish those natives were in V.",
"timestamp": "2019-12-04T09:30:39.515+01:00"
},
{
"id": "651702171582070784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nkjellman",
"author_id": "218223139354574858",
"content": "Water swapping without having to make the game think it is in a loading screen to avoid a potential crash.",
"timestamp": "2019-12-04T09:31:45.746+01:00"
},
{
"id": "651952076489752607",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "profex99",
"author_id": "508431111802585109",
"content": "don't want any support., but l'd like to share with you this error (never seen before) after updating redM to the latest patch. I solved by rebooting the pc... what could have caused it? 🤔",
"timestamp": "2019-12-05T02:04:47.719+01:00"
},
{
"id": "651954575133245440",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "antiviruses, don't try to run the game/mtl with admin rights",
"timestamp": "2019-12-05T02:14:43.442+01:00"
},
{
"id": "651958507825922049",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "It happens when the rockstargame launcher is in admin mode. Principally after an update",
"timestamp": "2019-12-05T02:30:21.069+01:00"
},
{
"id": "651980475723808772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "profex99",
"author_id": "508431111802585109",
"content": "Uhh now everything makes sense, thank you!",
"timestamp": "2019-12-05T03:57:38.624+01:00"
},
{
"id": "652000664188092426",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "Yeah, just restart that bitch, and you're good",
"timestamp": "2019-12-05T05:17:51.929+01:00"
},
{
"id": "652555190573989888",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Hmm, has anyone looked at the pattern for `getPlayerFromNetGame` ? I can't seem to find it, so any pointers would be terrific 🙂",
"timestamp": "2019-12-06T18:01:21.322+01:00"
},
{
"id": "652555688530280498",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "why do you need it :mascot:",
"timestamp": "2019-12-06T18:03:20.044+01:00"
},
{
"id": "652556482235334677",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "nvm",
"timestamp": "2019-12-06T18:06:29.278+01:00"
},
{
"id": "652565046605381633",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "I don't know if this has been shared before as i'll show it.\n\nUse this to get the category of a ped component.\nif your player is **mp_male** replace \"VALUE\" with false, and if its **mp_female** replace it with true.\n```cs\nint category = Function.Call<int>((Hash)0x5FF9A878C3D115B8, hash, VALUE, true);```\n\nThen is to set a ped component :\n```cs\nFunction.Call((Hash)0xD3A7B003ED343FD9, PlayerPedId(), componentHash, bool updatePed, bool isMpComponent, false);```\n\nBut according to my tests, components \"MAY\" need to be requested first like a model. However can't find how to do it. As \"SOMETIMES\" the native above works 1 time of 2 and once you loaded the hash 1 time it works everytime.",
"timestamp": "2019-12-06T18:40:31.183+01:00"
},
{
"id": "652565249483997217",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "This set some components on the ped, just replace value with a number.\n```cs\nFunction.Call((Hash)0xA5BAE410B03E7371, PlayerPedId(), VALUE, 0, 0);```",
"timestamp": "2019-12-06T18:41:19.553+01:00"
},
{
"id": "652565506590638140",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "oldtek",
"author_id": "172660665029230593",
"content": "And this sets the default component.\n```cs\nFunction.Call((Hash)0x283978A15512B2FE, PlayerPedId(), true);```\n\nA lot of these natives have been found by Disquse iirc.",
"timestamp": "2019-12-06T18:42:20.852+01:00"
},
{
"id": "652565617085513768",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "When you say it does not load\nIs it right after the \"reset ped component\"?",
"timestamp": "2019-12-06T18:42:47.196+01:00"
},
{
"id": "652565741677051918",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "a8",
"timestamp": "2019-12-06T18:43:16.901+01:00"
},
{
"id": "652623464624291901",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "some things from closed-source jedijosh's menu\nhttps://gfycat.com/saneimprobablekoi\n```lua\nRegisterCommand(\"resetComponent\", function()\n Citizen.InvokeNative(0xD710A5007C2AC539, PlayerPedId(), -1725579161, 0) -- Set target category, here the hash is for hats\n Citizen.InvokeNative(0xCC8CA3E88256E58F, PlayerPedId(), 0, 1, 1, 1, 0) -- Actually remove the component\nend)\n```",
"timestamp": "2019-12-06T22:32:39.124+01:00"
},
{
"id": "652623609264603136",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "snap! that's cool af, good work!",
"timestamp": "2019-12-06T22:33:13.609+01:00"
},
{
"id": "652625933286637598",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fluidsc",
"author_id": "308288539798536192",
"content": "ooh hats, i want the stovepipe hat. been waiting for someone to figure that out 😄",
"timestamp": "2019-12-06T22:42:27.699+01:00"
},
{
"id": "652626170608615425",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "flawws",
"author_id": "147834181819432960",
"content": "very nice",
"timestamp": "2019-12-06T22:43:24.281+01:00"
},
{
"id": "652639298473951233",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthaku",
"author_id": "296274538256269312",
"content": "@hotm pic thx pichot ❤️",
"timestamp": "2019-12-06T23:35:34.208+01:00"
},
{
"id": "652661868753715200",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```lua\nRegisterCommand(\"subtitle\", function()\n local msg = \"indra is gay\"\n local str = Citizen.InvokeNative(0xFA925AC00EB830B9, 10, \"LITERAL_STRING\", msg, Citizen.ResultAsLong())\n Citizen.InvokeNative(0xFA233F8FE190514C, str)\n Citizen.InvokeNative(0xE9990552DEC71600)\n local a = Citizen.InvokeNative(0xDFF0D417277B41F8, Citizen.ResultAsInteger())\nend)\n```\n\nhttps://cdn.discordapp.com/attachments/554300011400265738/652666609999282176/unknown.png",
"timestamp": "2019-12-07T01:05:15.382+01:00"
},
{
"id": "652661942661546007",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Haha, thats dope though.",
"timestamp": "2019-12-07T01:05:33.003+01:00"
},
{
"id": "652662132390887436",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "theindra",
"author_id": "241225897389064192",
"content": "rude",
"timestamp": "2019-12-07T01:06:18.238+01:00"
},
{
"id": "652662601876111378",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hen_ri",
"author_id": "576041221232001034",
"content": "Tf lol, look like Micheal",
"timestamp": "2019-12-07T01:08:10.172+01:00"
},
{
"id": "652663525952454687",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "poppeii",
"author_id": "298489838402011136",
"content": "Awesome. @fluid has been wanting that hat",
"timestamp": "2019-12-07T01:11:50.489+01:00"
},
{
"id": "652905275719811093",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthaku",
"author_id": "296274538256269312",
"content": "@hotm pic thx my men",
"timestamp": "2019-12-07T17:12:28.125+01:00"
},
{
"id": "654806973329571877",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "https://github.com/MoosheTV/redm-external\n\nThis could serve as a good resource for getting started, however do keep in mind that the official API will be subject to change, and should primarily be used for educational purposes.",
"timestamp": "2019-12-12T23:09:08.167+01:00"
},
{
"id": "654857600973930516",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "Is SetCanAttackFriendly not descovery yet?",
"timestamp": "2019-12-13T02:30:18.738+01:00"
},
{
"id": "654924266428563457",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "it's not really a thing that does anything though",
"timestamp": "2019-12-13T06:55:13.021+01:00"
},
{
"id": "654924290860253215",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "did you mean to use relationscript groups?",
"timestamp": "2019-12-13T06:55:18.846+01:00"
},
{
"id": "655013763623419944",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "@nta (2) i wanna enable pvp, so now i need to use relationscript groups?",
"timestamp": "2019-12-13T12:50:50.815+01:00"
},
{
"id": "655014894814494741",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "*relationship, seemingly typo'd",
"timestamp": "2019-12-13T12:55:20.512+01:00"
},
{
"id": "655020288706215937",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "yeah, so i need to create a relationship group, put players and set SetEntityCanBeDamagedByRelationshipGroup?",
"timestamp": "2019-12-13T13:16:46.516+01:00"
},
{
"id": "655020331521540097",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "easy way:\n```lua\nSetRelationshipBetweenGroups(5, `PLAYER`, `PLAYER`)\n```",
"timestamp": "2019-12-13T13:16:56.724+01:00"
},
{
"id": "655020395799248926",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "if you want all default players to be able to kill/etc. all default players",
"timestamp": "2019-12-13T13:17:12.049+01:00"
},
{
"id": "655020450174468109",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "cool!, thank you!",
"timestamp": "2019-12-13T13:17:25.013+01:00"
},
{
"id": "655254136169693225",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "```\n166523388 - Smells bad\n354512356 - Cheering\n-653113914 - Nope\n-822629770 - Yes?\n-339257980 - Waving\n425751659 - Thumbs up\n-2106738342 - Spit\n-1639456476 - Draw\n```\nHere are some emotes.",
"timestamp": "2019-12-14T04:46:00.096+01:00"
},
{
"id": "655259359013502986",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "```0x595478B3BBC3076D returns an int of the closest fish```",
"timestamp": "2019-12-14T05:06:45.319+01:00"
},
{
"id": "655358934554640414",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kanersps",
"author_id": "138264665187811328",
"content": "Closest.... fish?",
"timestamp": "2019-12-14T11:42:25.978+01:00"
},
{
"id": "655387030695575552",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Yeah. Used for fishing.",
"timestamp": "2019-12-14T13:34:04.62+01:00"
},
{
"id": "655391893009465355",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "🎣",
"timestamp": "2019-12-14T13:53:23.886+01:00"
},
{
"id": "655392340910932028",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Where does cfx want the natives that are discovered by the way? Just dumped in here?",
"timestamp": "2019-12-14T13:55:10.674+01:00"
},
{
"id": "655394074509049867",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "i think it's safe to PR them here https://github.com/gottfriedleibniz/rdr3-nativedb-codegen",
"timestamp": "2019-12-14T14:02:03.996+01:00"
},
{
"id": "655394213244174337",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "d0p3t4590",
"author_id": "97399748843024384",
"content": "no (official) cfx docs exist for rdr3 natives, but i think they'll take that as reference",
"timestamp": "2019-12-14T14:02:37.073+01:00"
},
{
"id": "655394570305011735",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Yeah that's what I figured. Either Gottfried's or the other guy unknown.. but since Gottfried is MVP I'll do it there",
"timestamp": "2019-12-14T14:04:02.203+01:00"
},
{
"id": "655396081424662538",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "unknown-oc8or is pretty particular about his PRs. Generally, they should be as close as possible to real name (that means using a dictionary ordering of a native dump), and my repo is auto generated from his.",
"timestamp": "2019-12-14T14:10:02.482+01:00"
},
{
"id": "655396227789357067",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "I'm not sure why somebody in this Discord, who has been doing native research, hasn't maintained* their own temporary repo to either submit to Unknown (and understand what he wants) or to wait until the elements release their own repo.",
"timestamp": "2019-12-14T14:10:37.378+01:00"
},
{
"id": "656168445213278209",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```c\n// 0xF66090013DE648D5\nvoid _REQUEST_MISSION_LABEL(char* mission)\n// 0xAA03F130A637D923\nvoid _REMOVE_MISSION_LABEL(char* mission)\n// 0x2C729F2B94CEA911\nBOOL _HAS_MISSION_LABEL_LOADED(char* mission)\n```",
"timestamp": "2019-12-16T17:19:08.359+01:00"
},
{
"id": "656201900554977308",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "insanehk",
"author_id": "299954165516599299",
"content": "The colors shortcuts have changed since GTA5, i've listed the new shortcuts you can use.\nHere is also a link to the complete list of colors https://pastebin.com/MG5DT4dv.\n\n```\nColors: \n~e~Red \n~o~Yellow \n~d~Orange \n~m~Grey \n~q~White \n~t~Light Grey \n~v~Black \n~u~Pink\n~pa~Blue \n~t1~Purple \n~t2~Orange \n~t3~Light Blue \n~t4~Yellow \n~t5~Light Pink \n~t6~Green \n~t7~Dark Blue \n~t8~Light RedIsh\n```",
"timestamp": "2019-12-16T19:32:04.734+01:00"
},
{
"id": "656558147606937659",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "I know some people already looked into the UI prompts/instructional buttons in rdr, but does anyone know how to clear the buttons if the resource that created them is restarted while they are still on the screen? They get stuck if that happens and I've not been able to get the prompts to disappear. Also trying to figure out how to allow the player to still sprint while these prompts are active, if anyone figured that out yet please let me know",
"timestamp": "2019-12-17T19:07:40.65+01:00"
},
{
"id": "656559506310037528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "I use `_UIPROMPT_DELETE` onResourceStop\nbut maybe there is something to delete all prompts",
"timestamp": "2019-12-17T19:13:04.59+01:00"
},
{
"id": "656559608109989889",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "i tried that but that doesn't even work for me",
"timestamp": "2019-12-17T19:13:28.861+01:00"
},
{
"id": "656559635398000685",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "it does for me",
"timestamp": "2019-12-17T19:13:35.367+01:00"
},
{
"id": "656560102890799121",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "maybe i was using the wrong event",
"timestamp": "2019-12-17T19:15:26.826+01:00"
},
{
"id": "656560149598699541",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "I was using this one https://docs.fivem.net/scripting-reference/events/list/onClientResourceStop/",
"timestamp": "2019-12-17T19:15:37.962+01:00"
},
{
"id": "656560203126538302",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "guess it should be just `onResourceStop` maybe",
"timestamp": "2019-12-17T19:15:50.724+01:00"
},
{
"id": "656561305599344640",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "yeah that was the issue indeed",
"timestamp": "2019-12-17T19:20:13.574+01:00"
},
{
"id": "656570453577564190",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "using `0xF1622CE88A1946FB` in a loop hide active prompts\nThe HUD is still there *probably* hide prompts this frame ....",
"timestamp": "2019-12-17T19:56:34.622+01:00"
},
{
"id": "656592027114536961",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "`0x50C803A4CD5932C5` = `_ALWAYS_SHOW_PLAYER_CORES`\n\nhttps://github.com/gottfriedleibniz/rdr3-nativedb-codegen/blob/1d9996efc9e663b13cbe846a24ed35af55502f84/HUD/AlwaysShowPlayerCores.md",
"timestamp": "2019-12-17T21:22:18.154+01:00"
},
{
"id": "656603142296961025",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "and `0xD4EE21B7CC7FD350` = `_ALWAYS_SHOW_HORSE_CORES`",
"timestamp": "2019-12-17T22:06:28.22+01:00"
},
{
"id": "656715330244182017",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "rhapidfyre",
"author_id": "220690021513035786",
"content": "Are we aware that doing \"Ability Assign\" causes the mouse to get stuck open? Spacebar in the weapon wheel (Q). Easy fix; I can write my own weapon selection menu. Just not sure if this is a thing or just me, discovered or not discovered.",
"timestamp": "2019-12-18T05:32:15.911+01:00"
},
{
"id": "656917185138262027",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "I believe is because is a Nui and its not present in RedM. Probably its call SetNuiFocus stuck the game because its not imlemented",
"timestamp": "2019-12-18T18:54:21.868+01:00"
},
{
"id": "656917204138328064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "@Starfyre",
"timestamp": "2019-12-18T18:54:26.398+01:00"
},
{
"id": "656917678031634432",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "it is not a redm bug\njust don't use this menu",
"timestamp": "2019-12-18T18:56:19.383+01:00"
},
{
"id": "656917732595335183",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "indeed the menu is not enabled, so you can't use it",
"timestamp": "2019-12-18T18:56:32.392+01:00"
},
{
"id": "656985493392850959",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "`0x4CC5F2FC1332577F` takes an int as an argument, e.g. 959420967. This *hides* the crosshair.\n`0x8BC7C1F929D07BF3` takes an int as an argument, e.g. 959420967. This *enables* the crosshair.",
"timestamp": "2019-12-18T23:25:47.825+01:00"
},
{
"id": "656986350356135956",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "fucking hell bot.",
"timestamp": "2019-12-18T23:29:12.141+01:00"
},
{
"id": "656986562890039297",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "yep we documented that somewhere :)",
"timestamp": "2019-12-18T23:30:02.813+01:00"
},
{
"id": "656986567738523678",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```c\n// 0x8BC7C1F929D07BF3\nvoid _DISPLAY_HUD_COMPONENT(Hash component);\n\n// 0x4CC5F2FC1332577F\nvoid _HIDE_HUD_COMPONENT(Hash component);\n```",
"timestamp": "2019-12-18T23:30:03.969+01:00"
},
{
"id": "656986587070201876",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "and",
"timestamp": "2019-12-18T23:30:08.578+01:00"
},
{
"id": "656986596050206721",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "disquse did this",
"timestamp": "2019-12-18T23:30:10.719+01:00"
},
{
"id": "656986629205917709",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Oh fuck me 😦",
"timestamp": "2019-12-18T23:30:18.624+01:00"
},
{
"id": "656986631114457098",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```c\nenum HudComponent {\n everything = -1679307491,\n minimapHonorAndCards = 724769646,\n minimap = 474191950,\n forceHonor = 121713391,\n onlyActionWheel = 2011163970,\n actionWheelWeapons = -1249243147,\n skillCards = 1058184710,\n onlyMoney = 1920936087,\n actionWheelFishing = 100665617,\n onlyFishingBait = -859384195,\n unkSpMoney = -950624750,\n unkSpMoneyReplace = 1670279562,\n mpMoney = -66088566,\n unkInfoBox = 36547242,\n campTraderInfo = -782493871,\n honorMoneyCards = -2124237476,\n forceSkillCards = 1533515944,\n actionWheelItems = -2106452847\n}\n```",
"timestamp": "2019-12-18T23:30:19.079+01:00"
},
{
"id": "656986660893884448",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Darn it. Thanks!",
"timestamp": "2019-12-18T23:30:26.179+01:00"
},
{
"id": "656986760261402634",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "nice find tho for the crosshair",
"timestamp": "2019-12-18T23:30:49.87+01:00"
},
{
"id": "656986909515579402",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "it was a PITA to find. I stupidly assumed it'b 1-2 digits like in fivem.",
"timestamp": "2019-12-18T23:31:25.455+01:00"
},
{
"id": "656987009243676722",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "also to note, it doesnt need to be fired every frame like the old hide hud per frame thingy",
"timestamp": "2019-12-18T23:31:49.232+01:00"
},
{
"id": "656987334696501257",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "btw, unkSpMoney/unkSpMoneyReplace (the latest one is replacing original money display) is actually camp bank and how much money you're investigated to your camp in SP. I didn't knew it when did this enum",
"timestamp": "2019-12-18T23:33:06.826+01:00"
},
{
"id": "656987578137968679",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "This is how it looks\nhttps://i.imgur.com/oLxFEfz.png",
"timestamp": "2019-12-18T23:34:04.867+01:00"
},
{
"id": "656992292506173461",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "Actually, just noticed that it also yoinks the minimap :/ (The crosshair one)",
"timestamp": "2019-12-18T23:52:48.86+01:00"
},
{
"id": "656992690629640192",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "I hope we can hide it\nbecause I don't think R* hides the crosshair *ever* (in the scripts)",
"timestamp": "2019-12-18T23:54:23.78+01:00"
},
{
"id": "657002369061617684",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "@hotm pic Disables crosshair and doesn't affecting minimap - 0xBB47198C",
"timestamp": "2019-12-19T00:32:51.298+01:00"
},
{
"id": "657002482966462467",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Also, your list isn't full. I fetched all hud components hashes from my dump using IDA. Have fun researching, boyz",
"timestamp": "2019-12-19T00:33:18.455+01:00"
},
{
"id": "657002746725007390",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "yeah I've only used the scripts\nnice",
"timestamp": "2019-12-19T00:34:21.34+01:00"
},
{
"id": "657003460797005903",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "lol\nhttps://i.imgur.com/fPEOWxd.png",
"timestamp": "2019-12-19T00:37:11.588+01:00"
},
{
"id": "657003502870200320",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "wtf",
"timestamp": "2019-12-19T00:37:21.619+01:00"
},
{
"id": "657003730172117003",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "That's 0x53B01660 component doing something weird",
"timestamp": "2019-12-19T00:38:15.812+01:00"
},
{
"id": "657194318141980672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x3039BE60B3749716\nint _GET_INTERIOR_MINIMAP_HASH(int interiorId);\n/*\n Returns interior minimap hash aka CInteriorProxy+244, in V offset was +228.\n*/\n\n// 0x2C9746D0CA15BE1C\nVector3 _GET_INTERIOR_POSITION(int interiorId);\n/*\n Returns interior position aka CInteriorProxy+96\n*/\n\n// 0xBC8A281FF125C655\nint _GET_INTERIOR_FROM_GAMEPLAY_CAM();\n/*\n Does the same like 0xE7D267EC6CA966C3 in V.\n*/\n\n// 0xD56FF170710FC826\nBOOL _DOES_INTERIOR_ENTITY_SET_EXISTS(int interiorId, char* entitySetName);\n/*\n Returns is interior has entity set with certain name.\n*/\n```",
"timestamp": "2019-12-19T13:15:35.525+01:00"
},
{
"id": "657672910206664725",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Any leads on anything like GET_CONTROL_INSTRUCTIONAL_BUTTON ?",
"timestamp": "2019-12-20T20:57:20.765+01:00"
},
{
"id": "657672964652662784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "I've been trying to dig, but ... yaknow, clueless.",
"timestamp": "2019-12-20T20:57:33.746+01:00"
},
{
"id": "657673360364404776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "why do you need this?\nwas not only useful for scaleforms?",
"timestamp": "2019-12-20T20:59:08.091+01:00"
},
{
"id": "657673766930874370",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "No, it's very useful for a lot of things.",
"timestamp": "2019-12-20T21:00:45.024+01:00"
},
{
"id": "657673901404323860",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "From FiveM; Hovering text that says \"Press E to Do The Thing\" only matches if control 38 was actually bound to E",
"timestamp": "2019-12-20T21:01:17.085+01:00"
},
{
"id": "657674065611456517",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "So I wrote a thingmabob to get the instructional button and use that instead, so that if control 38 was bound to R it would say \"Press R to DO The Thing\"",
"timestamp": "2019-12-20T21:01:56.235+01:00"
},
{
"id": "657674375616528424",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "now control are hashes, so basically control 38 would already be INPUT_SOMETHING",
"timestamp": "2019-12-20T21:03:10.146+01:00"
},
{
"id": "657674379882397717",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "I've been searching for a `char GET_CONTROL_INSTRUCTIONAL_BUTTON(hash controlHash)` or similar.",
"timestamp": "2019-12-20T21:03:11.163+01:00"
},
{
"id": "657674485645967417",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Yes, but `INPUT_HOP_AROUND_LIKE_A_TOAD` is still *bound to a key*, right?",
"timestamp": "2019-12-20T21:03:36.379+01:00"
},
{
"id": "657674646132359209",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "yeah like V\nbut given id were not keys just id given in order",
"timestamp": "2019-12-20T21:04:14.642+01:00"
},
{
"id": "657674754723151874",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "I mean, it would be better to rebuild your thing using input names instead of ids",
"timestamp": "2019-12-20T21:04:40.532+01:00"
},
{
"id": "657674783517048853",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "as I believe R* removed this native",
"timestamp": "2019-12-20T21:04:47.397+01:00"
},
{
"id": "657681760724844555",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Right right, but I'd like to be able to tell the reverse so I can tell the users the correct key from NUI and text prompts.",
"timestamp": "2019-12-20T21:32:30.893+01:00"
},
{
"id": "657681818883063808",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Unless everything supports ~INPUT_WHATEVER~ now?",
"timestamp": "2019-12-20T21:32:44.759+01:00"
},
{
"id": "657683966706581514",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "a prompt use INPUT's hash and from NUI you can't really as controls are different for every users",
"timestamp": "2019-12-20T21:41:16.84+01:00"
},
{
"id": "657703440394485820",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Yes, and that's the point of `GET_CONTROL_INSTRUCTIONAL_BUTTON` in GTAV - to resolve to whatever the current client has that control bount to this frame.",
"timestamp": "2019-12-20T22:58:39.729+01:00"
},
{
"id": "657703546531086349",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "I've already solved passing that to NUI in a help text for FiveM",
"timestamp": "2019-12-20T22:59:05.034+01:00"
},
{
"id": "657703728127803422",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "It's in the context of porting <https://github.com/DemmyDemon/omghalp> to RedM that I seek to discover an equivalent RDR3 native 🙂",
"timestamp": "2019-12-20T22:59:48.33+01:00"
},
{
"id": "657704067904307220",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "I might be thinking about this the wrong way, but as I understand it, for this information to be available to scaleform UI, it *has to be* a native.",
"timestamp": "2019-12-20T23:01:09.339+01:00"
},
{
"id": "657915131837022237",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "```\n// 0x103C2F885ABEB00B\nBOOL _IS_ATTRIBUTE_OVERPOWERED(int ped, int coreIndex);\n\nCore index:\n* 0 = Health\n* 1 = Stamina\n* 2 = Dead Eye\nUse `0xf6a7c08df2e28b28` (`_SET_ATTRIBUTE_OVERPOWER_AMOUNT`) with these parameters `int ped, int coreIndex, float value, BOOL makeSound` to make the outer core overpowered. Value is between `0.0` and more than `5000.0`, the higher the number, the longer it takes for the core to drain the overpowered status.\n```",
"timestamp": "2019-12-21T12:59:50.902+01:00"
},
{
"id": "657915258899398667",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "```\n// 0xF6A7C08DF2E28B28\nvoid _SET_ATTRIBUTE_OVERPOWER_AMOUNT(int ped, int coreIndex, float value, BOOL makeSound);\n\nUse this native to make the outer core overpowered. Value is between `0.0` and more than `5000.0`, the higher the number, the longer it takes for the core to drain the overpowered status.\nExample for the Dead Eye core (index `2`) set to `5000.0`:\n![](https://i.imgur.com/otm6HiP.png)\n```",
"timestamp": "2019-12-21T13:00:21.196+01:00"
},
{
"id": "657915354344849418",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "so far these both only seem to work with `localGame`, does not appear to be working in \"online\" mode.",
"timestamp": "2019-12-21T13:00:43.952+01:00"
},
{
"id": "657957473788887040",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```c\nConfig flag:\n11 - KO\n```",
"timestamp": "2019-12-21T15:48:06.01+01:00"
},
{
"id": "658058378538647582",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "RDR3 weapon components, have fun researching weapon component natives.",
"timestamp": "2019-12-21T22:29:03.577+01:00"
},
{
"id": "658183328478003222",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "I posted some info about IPLs (aka IMAPs) on the forum:\nhttps://forum.fivem.net/t/ipl-add/913503/19?u=disquse",
"timestamp": "2019-12-22T06:45:33.964+01:00"
},
{
"id": "658687515904966657",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tomgrobbe",
"author_id": "223799456162775043",
"content": "```\n0xa4d3a1c008f250df\n```\nShows icons on cores:\n0-3: Nothing that i could see (might be for horse cores)\n4: https://i.imgur.com/mYBSXdj.png (horse health core)\n5: https://i.imgur.com/F7LgUiJ.png (health core)\n6: https://i.imgur.com/oBg0RhB.png (health core)\n7: https://i.imgur.com/QiQV1RS.png (stamina core)\n8: https://i.imgur.com/K9vq05M.png (dead eye core)\n9: https://i.imgur.com/FM5UFcy.png (dead eye core)\n10: https://i.imgur.com/S2cSDUc.png (dead eye core)\n11: https://i.imgur.com/UN3rX1K.png (health core)\n12: https://i.imgur.com/DQXq9Yy.png (health core)\n13: https://i.imgur.com/VRU26uG.png (all cores)\n14: (same as 13)\n15: https://i.imgur.com/zvwzCTp.png (health + stamina cores)",
"timestamp": "2019-12-23T16:09:01.614+01:00"
},
{
"id": "660135858581536778",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Has any work been done on the inventory/item system? I think I'm going to put in some work there, but if someone has already started, then it'd be nice to have something to work from.",
"timestamp": "2019-12-27T16:04:13.417+01:00"
},
{
"id": "660139024211771447",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "*struct args*",
"timestamp": "2019-12-27T16:16:48.162+01:00"
},
{
"id": "660159455303827466",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "My guess is that with numerous flavours of supported programming languages and a handful of frontend libs, there'll be many different implementations, @Demonen",
"timestamp": "2019-12-27T17:37:59.314+01:00"
},
{
"id": "660173639286521879",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "Well, obviously, but if someone has already figured it out it's silly for me to put in the work of figuring it out *a second time*",
"timestamp": "2019-12-27T18:34:21.039+01:00"
},
{
"id": "660173934439956481",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "As for struct args, that's why the gods handed down JavaScript.",
"timestamp": "2019-12-27T18:35:31.409+01:00"
},
{
"id": "660571007639355438",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "andreasb_",
"author_id": "105862146876829696",
"content": "Haven't seen anything related to inventories, @Demonen, unless you want to base the implementation on some fivem project I guess",
"timestamp": "2019-12-28T20:53:21.037+01:00"
},
{
"id": "660571144050704395",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "demonen",
"author_id": "182928202174300169",
"content": "No, I'm hoping to use the inventory system already in RDR3",
"timestamp": "2019-12-28T20:53:53.56+01:00"
},
{
"id": "661336089801261057",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "If we use \nSetRelationshipBetweenGroups(5, `PLAYER`, `PLAYER`)\nPlayers can't warp into same vehicle\nif we use \nSetRelationshipBetweenGroups(0, `PLAYER`, `PLAYER`)\nPlayers can't fight",
"timestamp": "2019-12-30T23:33:30.839+01:00"
},
{
"id": "661357326816509955",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "try 6",
"timestamp": "2019-12-31T00:57:54.138+01:00"
},
{
"id": "661542899518930964",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "hope you guys won't abuse markers.. again\nthe native should be added to the db already, btw\nhttps://i.imgur.com/TFLpeR4.png",
"timestamp": "2019-12-31T13:15:18.118+01:00"
},
{
"id": "661554211091382329",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthaku",
"author_id": "296274538256269312",
"content": "thx men",
"timestamp": "2019-12-31T14:00:15.007+01:00"
},
{
"id": "661632188755869709",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "imthaku",
"author_id": "296274538256269312",
"content": "All horse component with differents category etc... Happy new year to all RedM community",
"timestamp": "2019-12-31T19:10:06.331+01:00"
},
{
"id": "662071334645530642",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x627520389E288A73\nfloat _GET_ENTITY_ANIM_CURRENT_TIME(Entity entity, char* animDict, char* animName);\n\n// 0xEAA885BA3CEA4E4A\nvoid _SET_ENTITY_ANIM_SPEED(Entity entity, char* animDict, char* animName, float speedMultiplier);\n\n// 0x11CDABDC7783B2BC\nvoid _SET_ENTITY_ANIM_CURRENT_TIME(Entity entity, char* animDict, char* animName, float time);```\n\nPrefixed with `_` since we can't be sure they *not* changed an actual native names.",
"timestamp": "2020-01-02T00:15:06.87+01:00"
},
{
"id": "662071482620575746",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "https://gfycat.com/AmazingMiserlyAmericanquarterhorse",
"timestamp": "2020-01-02T00:15:42.15+01:00"
},
{
"id": "662800140590907454",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "`0xED00D72F81CF7278` takes 3 parameters, p1 is an hash for the carried entity (when carrying a pelt), p2 is a bool, p3 is a bool, unsure what the bools do. This instantly drops the carried pelt.",
"timestamp": "2020-01-04T00:31:07.748+01:00"
},
{
"id": "662802399638847519",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nikez",
"author_id": "112675915145691136",
"content": "I have no idea if it's being used to drop whatever else you're carrying, but I guess y'all can find that pretty easily",
"timestamp": "2020-01-04T00:40:06.347+01:00"
},
{
"id": "663877558839803906",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "Guys,\n\nThe native to check if i holding a item and get this item hash or name is found?",
"timestamp": "2020-01-06T23:52:24.276+01:00"
},
{
"id": "663877623172038706",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "drkz",
"author_id": "293545709620297729",
"content": "",
"timestamp": "2020-01-06T23:52:39.614+01:00"
},
{
"id": "664203383082844170",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "0xD806CD2A4F2C2996",
"timestamp": "2020-01-07T21:27:06.829+01:00"
},
{
"id": "667030819470180393",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "Unsure if this has been shared before, but i've built a lookup enum for the zone names and hashes of them that can be used in conjunction with GetMapZoneAtCoords (0x43AD8FC02B429D33) to figure out zone names\nhttps://pastebin.com/2tVVq47m",
"timestamp": "2020-01-15T16:42:20.195+01:00"
},
{
"id": "673318516425752596",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Guess what we're found with @sicario and @hotm pic for you all guys?\n\n```cpp\n// 0x5653AB26C82938CF\nvoid _SET_PED_FACE_FEATURE(Ped ped, int index, float value);\n/*\n Note: you have to reset ped's customization after calling, for example use \"0xCC8CA3E88256E58F\"\n Safe values are from -1.0 to 1.0.\n This native is also allowing you to change horse's gender.\n*/\n```\nKnown indexes:\nhttps://pastebin.com/9jb88FXW\n\nUsage example:\n```ts\n const ped = PlayerPedId();\n const faceFeatures = [ /* indexes */ ];\n\n for (const index of faceFeatures) {\n // Here comes your value\n const value = (Math.random() * 4) - 2;\n\n // Calling _SET_PED_FACE_FEATURE\n Citizen.invokeNative(\"0x5653AB26C82938CF\", ped, index, value);\n }\n\n // Reseting ped's customization.\n Citizen.invokeNative(\"0xCC8CA3E88256E58F\", ped, false, true, true, true, false);\n```\nhttps://gfycat.com/redfinedartfrog",
"timestamp": "2020-02-02T01:07:23.969+01:00"
},
{
"id": "673325357763395596",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "Nice work Modquse and sicario!",
"timestamp": "2020-02-02T01:34:35.071+01:00"
},
{
"id": "673582726552616972",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "By @Deleted User \n```cpp\n// 0xFD1BA1EEF7985BB8\nfloat _GET_PED_FACE_FEATURE(Ped ped, int index);```",
"timestamp": "2020-02-02T18:37:16.572+01:00"
},
{
"id": "675390092566593571",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x9C77964B0E07B633\nBOOL _GET_IMAP_POSITION_AND_HEADING(Hash imapHash, Vector3* position, float* heading);\n/*\n This one can be extremely useful for imap researching.\n*/\n```\nUsage example:\n```lua\nlocal isValid, position, heading = Citizen.InvokeNative(0x9C77964B0E07B633, 2040843256, Citizen.PointerValueVector(), Citizen.PointerValueFloat(), Citizen.ResultAsInteger(), Citizen.ReturnResultAnyway())\nif isValid then\n local ped = PlayerPedId()\n SetEntityCoords(ped, position)\n SetEntityHeading(ped, heading)\nend\n```",
"timestamp": "2020-02-07T18:19:06.209+01:00"
},
{
"id": "676036080968925203",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x6EC2A67962296F49\nvoid _SET_ENTITY_LIGHTING_COLOUR(Entity entity, int r, int g, int b);\n```\nhttps://gfycat.com/MeagerFairEyra 🌈",
"timestamp": "2020-02-09T13:06:01.846+01:00"
},
{
"id": "676834272560283650",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Vehicle component hashes from @Tr1ckyR3x \nhttps://pastebin.com/v7TtqTgE",
"timestamp": "2020-02-11T17:57:45.551+01:00"
},
{
"id": "678145661358833694",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Body waist and body type (size) changing. Thanks to @aeds \nhttps://pastebin.com/mA5zgZhq\nhttps://gfycat.com/MerryBarrenJaeger",
"timestamp": "2020-02-15T08:48:45.005+01:00"
},
{
"id": "678618686788993046",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Bone names by @aeds \n\nhttps://github.com/femga/rdr3_discoveries",
"timestamp": "2020-02-16T16:08:23.056+01:00"
},
{
"id": "679704853768830978",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "By @aeds \n```cpp\n// 0x314C5465195F3B30\nvoid _SET_PED_WEARINESS(Ped ped, float weariness);\n/*\n make reddish eyes, weariness from 0.0 to 1.0.\n*/```",
"timestamp": "2020-02-19T16:04:25.444+01:00"
},
{
"id": "684140875995152470",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "By @aeds \n```cpp\n// 0xFFD54D9FE71B966A\nvoid _SET_PED_WOUND_EFFECT(Ped ped, int boneId, float moveWoundForwardBackward, float moveWoundLeftRight, float bloodFountainPressure, float yaw, float bloodFountainDirection, float bloodFountainPulse);\n/*\n Make blood fountain from wound.\n bloodFountainPressure: visible effect from 0.0 till 20.0\n yaw: visible effect from -3.0 till 3.0\n bloodFountainDirection: 1.0 left side, -1.0 right side\n bloodFountainPulse: from 0.1 (low) till 1.0 (fast)\n*/```\n```cpp\n// 0x66B1CB778D911F49\nvoid _REMOVE_PED_WOUND_EFFECT(Ped ped, float unk);\n```\n\nUsage example:\n```lua\n-- For example, make blood fountain from your stomach:\nCitizen.InvokeNative(0xFFD54D9FE71B966A, PlayerPedId(), 2, 14411, 0.0, 0.1, 0.0, 0.0, 3.0, -1.0, 1.0);```",
"timestamp": "2020-03-02T21:51:35.56+01:00"
},
{
"id": "684141215993561107",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Also if we're talked about blood. This is what I found few month ago:\n```cpp\n// 0xFA2ECC78A6014D4F\nvoid _CREATE_BLOOD_DECAL_AT_POSITION(float x, float y, float z, BOOL unk);```\nhttps://i.imgur.com/ULQU9US.jpg",
"timestamp": "2020-03-02T21:52:56.622+01:00"
},
{
"id": "684141294141964377",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0xF708298675ABDC6A\nvoid _CREATE_BLOOD_DECAL_POINT(float posX, float posY, float posZ, float unk1, float size, BOOL permanent, int unk2, BOOL unk3);```\nhttps://i.imgur.com/rPITUCV.jpg",
"timestamp": "2020-03-02T21:53:15.254+01:00"
},
{
"id": "684141444180738094",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0xC349EE1E6EFA494B\nvoid _CREATE_BLOOD_DECALS_FROM_PED(Ped ped, float sizeX, float sizeY, float sizeZ);\n/*\n Creates blood decals from ped in some interval for few seconds.\n Float args are guessed, not sure what they really do (but decal size really changes).\n*/```\nhttps://i.imgur.com/BKXL0T0.jpg",
"timestamp": "2020-03-02T21:53:51.026+01:00"
},
{
"id": "684141507720118337",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Names are really messed. Sorry.",
"timestamp": "2020-03-02T21:54:06.175+01:00"
},
{
"id": "684484104300920879",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "objects list from @aeds \nhttps://github.com/femga/rdr3_discoveries/tree/master/objects",
"timestamp": "2020-03-03T20:35:27.565+01:00"
},
{
"id": "690513536505610250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x73B40D97D7BAAD77\nBOOL _IS_POSITION_INSIDE_IMAP_STREAMING_EXTENTS(Hash imapHash, float x, float y, float z);```\n\n```cpp\n// 0x1E5B70E53DB661E5\nvoid _SHOW_LOADING_SCREEN(Hash unk1, Hash unk2, Hash unk3, char* gamemodeName, char* title, char* subtitle);\n/*\n Can be disabled using SHUTDOWN_LOADING_SCREEN.\n Text can be updated by calling this native again.\n\n Usage example:\n Citizen.invokeNative(\"0x1E5B70E53DB661E5\", 1122662550, 347053089, 0, \":o\", \"Hello\", \"boyz\")\n\n unk1s:\n 1122662550, 506919947, 55577806, -2093919847, -1567074128, -1277009905, 1730145250, -773971986, 1914027275, 1088509777, -1482087471, 478789200, -1863716933, -679566803, 1315254565, 1468907451, -240997098, -938054684, -1684650239, 1744089234, 1646695636, 1288350710, -274237802\n\n unk2s:\n 347053089, 267476864, 263267728, 1618086939, -1263403805, 1269272475, 932383945, -31655829, -2122032152, 307231279, -53621227, 1597260708, 1586694926, -913897922, -1544168383, 1168382952, -1964987130, -480997254, -1177563305, 868825114, 419480024, 2031571671, 103021030\n*/```\nhttps://gfycat.com/ObeseRevolvingBlackpanther",
"timestamp": "2020-03-20T11:54:16.224+01:00"
},
{
"id": "700434431072272514",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Feel free to document other `_NAMESPACE71` natives.\n```ts\nconst showTooltip = (text: string, duration: number): void => {\n const str = Citizen.invokeNative<any>(\"0xFA925AC00EB830B9\", 10, \"LITERAL_STRING\", text, (Citizen as any).resultAsLong());\n\n const struct1 = new DataView(new ArrayBuffer(4 * 4));\n struct1.setUint32(0, duration, true);\n\n const struct2 = new DataView(new ArrayBuffer(8 + 8));\n struct2.setBigUint64(8, BigInt(str), true);\n\n Citizen.invokeNative(\"0x049D5C615BD38BAD\", struct1, struct2, 1);\n};```\nhttps://i.imgur.com/YL5p0Fo.png",
"timestamp": "2020-04-16T21:56:21.81+02:00"
},
{
"id": "700636010148528190",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "By @Deleted User \n\"Most of the hashes for HUD::_0x4CC5F2FC1332577F and HUD::_0x8BC7C1F929D07BF3. Sorry for the length.\nShould be useful for figuring out what exactly they all do instead of guessing them in some enum floating around. 😛\"\nhttps://pastebin.com/xba01Sfs",
"timestamp": "2020-04-17T11:17:22.007+02:00"
},
{
"id": "700652826833191002",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "All location available : https://pastebin.com/SYVPBsu9\n```JS\nfunction DisplayLocationNotification(text, location, duration) {\n const struct1 = new DataView(new ArrayBuffer(4 * 4));\n struct1.setInt32(0, duration, true);\n\n const string1 = CreateVarString(10, \"LITERAL_STRING\", location);\n const string2 = CreateVarString(10, \"LITERAL_STRING\", text);\n\n const struct2 = new DataView(new ArrayBuffer(24));\n struct2.setBigInt64(8, BigInt(string1), true);\n struct2.setBigInt64(16, BigInt(string2), true);\n\n Citizen.invokeNative(\"0xD05590C1AB38F068\", struct1, struct2, 1, 1);\n}\n```\nhttps://imgur.com/wUXwvp3\n```JS\nfunction DisplayLeftNotification(title, subTitle, iconDict, icon, duration) {\n const struct1 = new DataView(new ArrayBuffer(4 * 4));\n struct1.setInt32(0, duration, true);\n \n const string1 = CreateVarString(10, \"LITERAL_STRING\", title);\n const string2 = CreateVarString(10, \"LITERAL_STRING\", subTitle);\n \n const struct2 = new DataView(new ArrayBuffer(48));\n struct2.setBigInt64(8, BigInt(string1), true);\n struct2.setBigInt64(16, BigInt(string2), true);\n struct2.setBigInt64(32, BigInt(GetHashKey(iconDict)), true);\n struct2.setBigInt64(40, BigInt(GetHashKey(icon)), true);\n\n Citizen.invokeNative(\"0x26E87218390E6729\", struct1, struct2, 1, 1);\n}\nDisplayLeftNotification(\n 'French bagette', \n 'Hi from France :)', \n 'HUD_TOASTS',\n 'toast_player_deadeye',\n 10000\n)\n```\nhttps://cdn.discordapp.com/attachments/643437814104457217/700683312468852786/unknown.png",
"timestamp": "2020-04-17T12:24:11.417+02:00"
},
{
"id": "703549624027447356",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "@aeds published a script example of editing rdr3 overlays:\nhttps://github.com/femga/rdr3_discoveries/tree/master/clothes\nHere's also a my unfinished docs if someone want to dig more:\nhttps://gist.github.com/Disquse/1d0aa00ce20ef99213d3f9af65e95092",
"timestamp": "2020-04-25T12:15:01.688+02:00"
},
{
"id": "703549700967497801",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "https://i.imgur.com/INGYjfI.png",
"timestamp": "2020-04-25T12:15:20.032+02:00"
},
{
"id": "704333681942200360",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "From @kee-value \n```cpp\n// 0x79443D56C8DF45EE\nPed _GET_CARRIER(Entity entity)\n\n// 0xA911EE21EDF69DAF\nBOOL _IS_PED_CARRYING(Ped ped)\n\n// 0x7528720101A807A5\nvoid _SET_PED_CARCASS_QUALITY(Ped Ped, int quality)\n\n// 0x88EFFED5FE8B0B4A\nint _GET_PED_CARCASS_QUALITY(Ped ped)\n0 - 2, 2 is PERFECT\n\n// Carcass/Meat quality related\n// GETTER 0x6CFC373008A1EDAF SETTER 0xDACE03C65C6666DB\n// GETTER 0x7BCC6087D130312A SETTER 0xCE6B874286D640BB```",
"timestamp": "2020-04-27T16:10:35.662+02:00"
},
{
"id": "704341217386954812",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "From @kee-value \n```C\n// 0x0FD25587BB306C86\nHash _GET_CARRIABLE_CARRY_CONFIG(Entity carriable)\n@info returns false if entity isnt a carriable\n\n// 0xF0B4F759F35CC7F5\nEntity _TASK_CARRIABLE(Entity target, Hash carryConfig, Entity carrier, int unk, int flag)\nunk 0 - 7, mostly 0\n\n/* some carryConfigs:\n 'CARRIABLE_FISH_BAG', target_EntityModel: 'p_cs_fishbag01x'\n 'MP_MONEYBAG', target_EntityModel: 'S_MP_MONEYBAG02X'\n 'USABLE_CARRIABLE_INVENTORY_ITEM': pockets the object\n 'GENERIC_DEAD_CARRIABLE_SMALL_ANIMAL'\n 'INJURED_CARRIABLE_HUMAN' : target_EntityModel: eg. 'mp_male'\n 'GENERIC_DEAD_CARRIABLE_ANIMAL' : target_EntityModel: eg. 'A_C_DEER_01'\ncarryConfig at common_0 > data > ai > carryconfigdata.meta*/\n```",
"timestamp": "2020-04-27T16:40:32.252+02:00"
},
{
"id": "704986677101199431",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x07C0F87AAC57F2E4\nvoid _SET_LIGHTS_INTENSITY_FOR_ENTITY(Entity entity, float value);\n```\nhttps://i.imgur.com/Fk8sR7p.png",
"timestamp": "2020-04-29T11:25:21.84+02:00"
},
{
"id": "704989960566079528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0xAB72C67163DC4DB4\nvoid _SET_LIGHTS_TYPE_FOR_ENTITY(Entity emtity, int index);\n```\nhttps://gfycat.com/MisguidedPinkLangur",
"timestamp": "2020-04-29T11:38:24.679+02:00"
},
{
"id": "705991120135389214",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Obviously the scenarios for cigar and cigarette smoking have been found, but scenarios tend to be all encompasing and dont allow you to switch between anims inside the animdict.\n\nHas anyone located the animdict and anims for smoking yet? Ive yet to come across them in OpenIV searches.",
"timestamp": "2020-05-02T05:56:39.721+02:00"
},
{
"id": "706043741605068821",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "@Hicks_206 check this file https://www89.zippyshare.com/v/OSJetyEu/file.html",
"timestamp": "2020-05-02T09:25:45.657+02:00"
},
{
"id": "706075607519199303",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "hicks_206",
"author_id": "101214320058171392",
"content": "Rgr thx",
"timestamp": "2020-05-02T11:32:23.083+02:00"
},
{
"id": "706362652607250472",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "has anyone found the Imap hash for the missing support beams in Valentine?",
"timestamp": "2020-05-03T06:32:59.965+02:00"
},
{
"id": "706400694298607658",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "0x081974C6",
"timestamp": "2020-05-03T09:04:09.811+02:00"
},
{
"id": "706431726536359996",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "I plan on releasing a public resource which will load in the missing imaps, so if you come across any, let me know :mascot:",
"timestamp": "2020-05-03T11:07:28.473+02:00"
},
{
"id": "706483755992481813",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "@CP Thanks",
"timestamp": "2020-05-03T14:34:13.262+02:00"
},
{
"id": "706715815453524009",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "From @kee-value \n```cpp\n// 0xF533D68FF970D190\nScenario _GET_CLOSEST_SCENARIO_OF_TYPE(number x, number y, number z, Hash scenarioType, float distance, unk p5, BOOL p6)\n\n// 0x841475AC96E794D1\nBOOL _DOES_SCENARIO_EXIST(Scenario scenario)\n\n// 0x7467165EE97D3C68\nEntity _GET_ENTITY_SCENARIO_IS_ATTACHED_TO(Scenario scenario)\n```\nYou can combine them to attach loot on chests,cabinets, etc.\nSome containers bones: https://pastebin.com/KaKHbcuZ\nSome scenario types (ransack) for containers: https://pastebin.com/8vCd5UDf",
"timestamp": "2020-05-04T05:56:20.549+02:00"
},
{
"id": "706716137420881942",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "From @kee-value \n```cpp\n// 0x2797C633DCDBBAC5\nvoid _SET_OBJECT_AFTERBURN_LEVEL(Object object, float level, BOOL affectAsh)\n0.0 - 1.0\n\n/*\nSeems to mostly have effect on wood-made objects\nhttps://imgur.com/a/32oQvOn \nclean af \n*/```",
"timestamp": "2020-05-04T05:57:37.312+02:00"
},
{
"id": "708622665371484242",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "From @spAnser \n```CPP\n// 0x6BCF5F3D8FFE988D\nvoid _SET_IS_LOOTED(Entity, BOOL)\n\n// 0x8DE41E9902E85756\nBOOL _GET_IS_LOOTED(Entity)\n\n// 0xC346A546612C49A9\nBOOL _IS_BIRD(Entity)\n\n// 0x37B01666BAE8F7EF\nBOOL _GET_IS_BURNED(Entity)\n\n// 0x61914209C36EFDDB\nINT _GET_ENTITY_STATUS(Entity)\n/*\n0: Alive?\n1: \n2: Being Hogtied\n3: On Ground\n4: Being Picked Up\n5: Being Carried\n6: Being Dropped\n7: On Horse\n8: Being Placed on Horse\n9: Being Removed from Horse\n10: Being cut free form hogtied\n*/\n```",
"timestamp": "2020-05-09T12:13:28.997+02:00"
},
{
"id": "709374662496223253",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "From @Pinecone \n```cpp\n// 0x775A1CA7893AA8B5\nfloat _GET_PED_STAMINA(Ped ped);\n```\nFrom @kee-value \n```cpp\n// 0xC3D4B754C0E86B9E\nvoid _SET_PED_STAMINA(Ped ped, float value)\n/*\n -1000.0 - 1000.0\n*/```",
"timestamp": "2020-05-11T14:01:39.083+02:00"
},
{
"id": "712373773399097434",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "not2ndaccount",
"author_id": "117280061236707332",
"content": "has anyone found the HUD elements?",
"timestamp": "2020-05-19T20:39:02.843+02:00"
},
{
"id": "712382971667152937",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "use the search bar in this channel and just look up \"HUD\"",
"timestamp": "2020-05-19T21:15:35.881+02:00"
},
{
"id": "712392780621545472",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "not2ndaccount",
"author_id": "117280061236707332",
"content": "RIP wish me luck attempting to remove crosshair",
"timestamp": "2020-05-19T21:54:34.518+02:00"
},
{
"id": "712416805548982293",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "frankiefraser",
"author_id": "300620838435291137",
"content": "https://discordapp.com/channels/192358910387159041/643437867044962304/656985493392850959",
"timestamp": "2020-05-19T23:30:02.507+02:00"
},
{
"id": "712416864038551552",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "frankiefraser",
"author_id": "300620838435291137",
"content": "@Dot ^",
"timestamp": "2020-05-19T23:30:16.452+02:00"
},
{
"id": "712726422258712646",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "elfreddie",
"author_id": "495901098926669825",
"content": "Messages in #deleted-channel official?",
"timestamp": "2020-05-20T20:00:20.883+02:00"
},
{
"id": "712726486032973904",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "no",
"timestamp": "2020-05-20T20:00:36.088+02:00"
},
{
"id": "712726499169534032",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "elfreddie",
"author_id": "495901098926669825",
"content": "k",
"timestamp": "2020-05-20T20:00:39.22+02:00"
},
{
"id": "712726566500565052",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "elfreddie",
"author_id": "495901098926669825",
"content": "What's going on?!",
"timestamp": "2020-05-20T20:00:55.273+02:00"
},
{
"id": "712726585936969789",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "zeemah",
"author_id": "264662751404621825",
"content": "get out this channel also, doesn't grant reason to go off topic",
"timestamp": "2020-05-20T20:00:59.907+02:00"
},
{
"id": "712726641893310545",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "elfreddie",
"author_id": "495901098926669825",
"content": "okay",
"timestamp": "2020-05-20T20:01:13.248+02:00"
},
{
"id": "712730804492566529",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "makdoon",
"author_id": "244385294676262914",
"content": "@Webhook subnormal",
"timestamp": "2020-05-20T20:17:45.689+02:00"
},
{
"id": "713111902758371329",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "boomer_money",
"author_id": "118464319309611016",
"content": "Has anyone had any luck with setting blip scale? I've tried testing with this:\n```lua\nlocal test = {\n { name = 'Test1', sprite = -1289383059, x=-145.05, y=377.01, z=118.7, scale = 0.05 },\n { name = 'Test2', sprite = -1289383059, x=-114.05, y=265.01, z=118.7, scale = 0.005 },\n { name = 'Test3', sprite = -1289383059, x=-89.61, y=139.01, z=118.7, scale = 1.0 },\n { name = 'Test4', sprite = -1289383059, x=-66.41, y=16.23, z=118.7, scale = 2.0 },\n { name = 'Test5', sprite = -1289383059, x=-38.36, y=-541.23, z=118.7, scale = 5.0 },\n}\n\nCitizen.CreateThread(function()\n for _, info in pairs(test) do\n local blip = N_0x554d9d53f696d002(1664425300, info.x, info.y, info.z)\n SetBlipSprite(blip, info.sprite, 1)\n Citizen.InvokeNative(0xD38744167B2FA257, blip, info.scale)\n --SetBlipScale(blip, info.scale)\n Citizen.InvokeNative(0x9CB1A1623062F402, blip, info.name)\n end \nend)\n```\nBut all blips appear as the same size regardless if I invoke the native or use the alias.",
"timestamp": "2020-05-21T21:32:06.596+02:00"
},
{
"id": "713112065530920970",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "boomer_money",
"author_id": "118464319309611016",
"content": "",
"timestamp": "2020-05-21T21:32:45.404+02:00"
},
{
"id": "713116604694790215",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x05CE6AF4DF071D23\n_SET_PED_LADDER_MOVEMENT_SPEED_MODIFIER(Ped ped, float value);\n\n// 0x801917E7D7BCE418\n_RESET_PED_LADDER_MOVEMENT_SPEED_MODIFIER(Ped ped);\n```\nPed config flag 305 somehow related.\nhttps://gfycat.com/PotableGlamorousBeetle",
"timestamp": "2020-05-21T21:50:47.625+02:00"
},
{
"id": "713912411333197859",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "Posting it cause @spAnser is lazy.. He said it himself.\nCalling:\nCitizen.InvokeNative(0x704C908E9C405136, PlayerPedId())\nBefore:\nUpdatePedVariation()\n\nShould allow you to not have a Wait(500) between every part of your clothe during \"Loading\" \nBasicly it makes to ped instantly get his new Variation, do maybe it like RefreshPedVariation ?",
"timestamp": "2020-05-24T02:33:02.713+02:00"
},
{
"id": "713913347384410253",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "It dosent seem to work ont all the variation and it looks like you need to actual component name.",
"timestamp": "2020-05-24T02:36:45.885+02:00"
},
{
"id": "713913496773066826",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "plouffelul",
"author_id": "333662170007207937",
"content": "(Not sure if i should have posted it here or in scripting but i cant type in scripting so yea.)",
"timestamp": "2020-05-24T02:37:21.502+02:00"
},
{
"id": "717472854421012570",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "From @kee-value:\n```cpp\n// 0x964000D355219FC0\nHash _GET_ENTITY_NAME(Entity entity)\n\n/*\nCombine this and GetLabelTextByHash if you want\nto display localized entity names\n*/\n ```",
"timestamp": "2020-06-02T22:20:58.495+02:00"
},
{
"id": "717705762788343880",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "```C\n// 0x34D6AC1157C8226C\nBOOL IS_PED_USING_SCENARIO(Ped ped, Hash scenario)\n```",
"timestamp": "2020-06-03T13:46:28.177+02:00"
},
{
"id": "717756357306089533",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "🤷‍♂️ \n```cpp\n// 0x705BE297EEBDB95D\nBOOL _IS_WEAPON_*(Hash weapon)\n/*\nIS_WEAPON_AMMO_LIMITED?\nIS_WEAPON_ASSAULT?\n*/\n\n// 0xC853230E76A152DF\nBOOL _IS_WEAPON_BINOCULARS\n\n// 0xC4DEC3CA8C365A5D\nBOOL IS_WEAPON_BOW(Hash weapon)\n\n// 0x792E3EF76C911959\nBOOL _IS_WEAPON_KNIFE(Hash weapon)\n\n// 0x79407D33328286C6\nBOOL _IS_WEAPON_LANTERN(Hash weapon)\n\n// 0x6E4E1A82081EABED\nBOOL _IS_WEAPON_LASSO(Hash weapon)\n\n// 0x959383DCD42040DA\nBOOL _IS_WEAPON_MELEE(Hash weapon)\n\n// 0x6ABAD7B0A854F8FB\nBOOL _IS_WEAPON_*(Hash weapon)\n/*\nTrue for lasso,camera and binoculars\nidk the relation \n*/\n\n// 0x49E40483948AF062\nBOOL _IS_WEAPON_*(Hash weapon)\n/*\nTrue for fishingrod,lasso,camera and binoculars\nidk the relation\n*/\n\n// 0xD955FEE4B87AFA07\nBOOL _IS_WEAPON_ONE_HANDED(Hash weapon)\n\n// 0xDDC64F5E31EEDAB6\nBOOL _IS_WEAPON_PISTOL(Hash weapon)\n\n// 0xDDB2578E95EF7138\nBOOL _IS_WEAPON_REPEATER(Hash weapon)\n\n// 0xC212F1D05A8232BB\nBOOL _IS_WEAPON_REVOLVER(Hash weapon)\n\n// 0x0A82317B7EBFC420\nBOOL _iS_WEAPON_RIFLE(Hash weapon)\n\n// 0xC75386174ECE95D5\nBOOL _IS_WEAPON_SHOTGUN(Hash weapon)\n\n// 0x6AD66548840472E5\nBOOL _IS_WEAPON_SNIPER(Hash weapon)\n\n// 0x30E7C16B12DA8211\nBOOL _IS_WEAPON_THROWABLE(Hash weapon)\n\n// 0x506F1DE1BFC75304\nBOOL _IS_WEAPON_TORCH(Hash weapon)\n\n// 0x0556E9D2ECF39D01\nBOOL _IS_WEAPON_TWO_HANDED(Hash weapon)\n\n// 0x1F7977C9101F807F\nBOOL _IS_AMMO_VALID(Hash ammo)\n```",
"timestamp": "2020-06-03T17:07:30.85+02:00"
},
{
"id": "717757855524192367",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Why is it under **caution** list on gottfried's hashs order?\n```cpp\n// 0x5C2EA6C44F515F34\nHash _GET_AMMO_TYPE_FOR_WEAPON(Hash weapon)\n```",
"timestamp": "2020-06-03T17:13:28.053+02:00"
},
{
"id": "717761140666662962",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "In that instance, an alias: two natives in the registration table referencing the same function. I would check ``0x6E4E1A82081EABED``, to ensure those natives aren't prefixed ``IS_WEAPON_A_`` similar to V's ``IS_THIS_MODEL_A_...``",
"timestamp": "2020-06-03T17:26:31.292+02:00"
},
{
"id": "717763113771991070",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Will do, thanks for the info",
"timestamp": "2020-06-03T17:34:21.717+02:00"
},
{
"id": "717771352794464306",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Updated it",
"timestamp": "2020-06-03T18:07:06.053+02:00"
},
{
"id": "717771428455514143",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n0xD955FEE4B87AFA07\nBOOL _IS_WEAPON_ONE_HANDED\n```\nLeads me to think that theyre named without the `_A_`",
"timestamp": "2020-06-03T18:07:24.092+02:00"
},
{
"id": "717776250311278604",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "their names without `_A_` seems off af tho",
"timestamp": "2020-06-03T18:26:33.712+02:00"
},
{
"id": "718008866826354789",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "```LUA\n-- All types for _DRAW_MARKER\nlocal markerTypes = { 0x94FDAE17, 0x6EB7D3BB, 0x50638AB9, 0xEC032ADD, 0x6903B113, 0x7DCE236, 0xD6445746, 0x29FE305A, 0xE3C923F1, 0xD57F875E, 0x40675D1C, 0x4E94F977, 0x234BA2E5, 0xF9B24FB3, 0x75FEB0E, 0xDD839756, 0xE9F6303B }\n```",
"timestamp": "2020-06-04T09:50:53.811+02:00"
},
{
"id": "718169084709175398",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "youkneekin",
"author_id": "257715715723755520",
"content": "go to #redm-info",
"timestamp": "2020-06-04T20:27:32.731+02:00"
},
{
"id": "718267291967684658",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "chieftron",
"author_id": "157292674230124544",
"content": "Thank you",
"timestamp": "2020-06-05T02:57:47.166+02:00"
},
{
"id": "719012203478384641",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// I'm sleepy, named that with my ass\n// 0x9963681A8BC69BF3\nvoid _SET_WHISTLE_CONFIG_FOR_PED(Ped ped, char* whistleConfig, float value)\n/*\nPed.WhistlePitch 0.0 - 1.0\nPed.WhistleClarity 0.0 - 1.0\nPed.WhistleShape 0.0 - 10.0 ?\n*/\n```",
"timestamp": "2020-06-07T04:17:47.91+02:00"
},
{
"id": "719308009154805860",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Is there a RDR native address list somewhere?",
"timestamp": "2020-06-07T23:53:13.479+02:00"
},
{
"id": "719312035422404644",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "It's joaat native I think, but they are unknown on RDR3",
"timestamp": "2020-06-08T00:09:13.416+02:00"
},
{
"id": "719315892059635763",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "thats not it, but i might've found it already",
"timestamp": "2020-06-08T00:24:32.91+02:00"
},
{
"id": "719694065762828410",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Some natives i couldnt name, so if you have a suggestion, let me know!\n```cpp\n// 0xA63FCAD3A6FEC6D2\nvoid _ENABLE_EAGLEEYE(Player player, BOOL enable)\n\n// 0x95EE1DEE1DCD9070, \nvoid _ENABLE_DEADEYE(Player player, BOOL enable)\n\n// 0x2C41D93F550D5E37\nvoid _*(Player player, BOOL p1, Any p2)\n/*\nfalse, 0 -> default eagleeye color\ntrue, ? -> green eagleeye color\nso probably a debug/color changing native\n*/\n\n// 0x28A13BF6B05C3D83\nvoid _*(Player player, BOOL infinite)\n/*\nSets if the DeadEye and EagleEye is infinite or not\n*/\n\n// 0x1710BC33CFB83634, \nvoid _SET_ACTIVE_EAGLEEYE(Player player)\n/*\nActivates EagleEye\n*/\n\n// 0x64FF4BF9AF59E139\nvoid _SET_DEACTIVATE_EAGLEEYE(Player player, BOOL transition)\n/*\nDeactivates EagleEye\n*/\n```",
"timestamp": "2020-06-09T01:27:16.547+02:00"
},
{
"id": "719694421658042418",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Some more...\n```cpp\n// 0xB427911EA6DFFEF3\nvoid _*(Player player, float p1)\n/*\nDecreases the damage the player receives while on horseback\n*/\n\n// 0xE0D6C2A146A5C993\nvoid _EAGLEEYE_SET_DEPLETION_MULTIPLIER(Player player, float multiplier)\n/*\nEagle Eye duration is increased by x seconds\n*/\n\n// 0x11A7FF918EF6BC66\nvoid _SET_WEAPON_DEGRADATION_MULTIPLIER(Player player, float multiplier)\n\n// 0xFE7C9CF376D23342\nvoid _*(Player player, float p1)\n/*\ndecreases Stamina bar drain speed by % when drawing a bow.\n*/\n```",
"timestamp": "2020-06-09T01:28:41.399+02:00"
},
{
"id": "719694769005133885",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Fishing stuff...\n```cpp\n// 0x1A52076D26E09004\nvoid _PED_FISHINGROD_HOOK_ENTITY(Ped ped, Entity entity)\n\n// 0x9B0C7FA063E67629\nvoid _SET_FISHINGROD_BAIT(Ped ped, char* bait, BOOL withoutBuoy, BOOL ?updateRightAway?)\n```",
"timestamp": "2020-06-09T01:30:04.213+02:00"
},
{
"id": "719963378012913664",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "from @aeds \n```c\n// 0xA0BC8FAED8CFEB3C\nBOOL _HAS_PED_COMPONENT_LOADED(Ped ped)\n\n// 0x31DC8D3F216D8509\nBOOL _HAS_PED_TEXTURE_LOADED(int pedTextureId)\n```",
"timestamp": "2020-06-09T19:17:25.591+02:00"
},
{
"id": "720050874646528110",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x1B83C0DEEBCBB214\nvoid _REMOVE_ALL_PED_AMMO(Ped ped)\n```",
"timestamp": "2020-06-10T01:05:06.414+02:00"
},
{
"id": "721635878283247617",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "00971.",
"author_id": "247789291072126976",
"content": "where i can find redm dev or scripts",
"timestamp": "2020-06-14T10:03:20.729+02:00"
},
{
"id": "721642255219294240",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "not in this channel im sure",
"timestamp": "2020-06-14T10:28:41.109+02:00"
},
{
"id": "721694564582424607",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "00971.",
"author_id": "247789291072126976",
"content": "@kee-value sadly i just can type here =/",
"timestamp": "2020-06-14T13:56:32.633+02:00"
},
{
"id": "721754139054440448",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "Read #redm-info start with the beginning, lazy people ....",
"timestamp": "2020-06-14T17:53:16.294+02:00"
},
{
"id": "722492204274417695",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "For Herbs, Plants and eggs\n```cpp\n// 0x5B4BBE80AD5972DC\nint _CREATE_COMPOSITE(Hash compositeHash, float posX, float posY, float posZ, float heading, int p5, Any* p6, int p7)\n/*\np5: 0 -> Composite automatically snaps to the ground\n 2 -> Composite doesnt snap to the ground\n*/\n\n// 0x5758B1EE0C3FD4AC\nvoid _DELETE_SCENARIO_COMPOSITE(int composite, BOOL p1)\n\n// 0x96C6ED22FB742C3E\nint _GET_COMPOSITE_ENTITIES(int composite, Any* outEntities)\n/*\nFlowers, Stalks or whatever the composite has\n*/\n\n// 0x73F0D0327BFA0812\nBOOL _REQUEST_SCENARIO_COMPOSITE(Hash compositeHash)\n\n// 0x5E5D96BE25E9DF68\nBOOL _*(Hash compositeHash)\n/*\nReturns true when the composite you requested is loaded?\n/*\n```",
"timestamp": "2020-06-16T18:46:04.755+02:00"
},
{
"id": "722492306455789589",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\nSome composites\n\nCOMPOSITE_LOOTABLE_VULTURE_EGG_DEF\nCOMPOSITE_LOOTABLE_WILD_CARROT_DEF\nCOMPOSITE_LOOTABLE_WILD_FEVERFEW_DEF\nCOMPOSITE_LOOTABLE_WILD_MINT_DEF\nCOMPOSITE_LOOTABLE_WILD_RHUBARB_DEF\nCOMPOSITE_LOOTABLE_WILD_RHUBARB_INTERACTABLE_DEF\nCOMPOSITE_LOOTABLE_WINTERGREEN_BERRY_DEF\nCOMPOSITE_LOOTABLE_WISTERIA_DEF\nCOMPOSITE_LOOTABLE_YARROW_DEF\n...\n```",
"timestamp": "2020-06-16T18:46:29.117+02:00"
},
{
"id": "722493046070968420",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "If you guys ever list every herb spawnpoint, feel free to share it with me 😛",
"timestamp": "2020-06-16T18:49:25.455+02:00"
},
{
"id": "724022817204731926",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "I made a list of vehicle propsets (names + hashes) in addition to the native found by six65nine for activating them:\nhttps://pastebin.com/1CsnvGLu\n\nMost of these propsets are for wagons, however there are also a couple for trains.",
"timestamp": "2020-06-21T00:08:11.315+02:00"
},
{
"id": "724023170390294648",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "(there's a couple results which show up on his list as well however this one has the names + excluded the propsets not for vehicles)",
"timestamp": "2020-06-21T00:09:35.521+02:00"
},
{
"id": "730164095331991562",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "*SetPedConfigFlag*\n```\nFlags:\n136: _DISABLE_MOUNT\n169: GRAPPLE_IMMUNITY_FROM_PLAYERS\n170: GRAPPLE_IMMUNITY_FROM_AI\n263: HEADSHOT_IMMUNITY\n265: DISABLE_DROWNING\n297: _ENABLE_HORSE_LEADIN\n336: _ANIMATE_WHEN_INJURED\n339: _FATAL_MELEE_IMMUNITY * used together with 340\n340: _FATAL_MELEE_IMMUNITY * used together with 339\n547: CANNOT_LOCK_ON_PLAYERS\n556: FULL_LOCKON_IMMUNITY\n```",
"timestamp": "2020-07-07T22:51:26.12+02:00"
},
{
"id": "730164644966039730",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x7146CF430965927C\nvoid _SET_*(int index, BOOL toggle)\n/*\n1: HAT_BLOCKS_HEADSHOT\n26: NO_CRITICAL_DAMAGE_AGAINST_PLAYERS\n*/\n```",
"timestamp": "2020-07-07T22:53:37.163+02:00"
},
{
"id": "730166017170473011",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x5240864E847C691C\nvoid _SET_PED_CAN_BE_INCAPACITATED(Ped ped, BOOL can)\n/*\nWhen set on a player ped, its just like when you die in RDO\n*/\n\n// 0xD67B6F3BCF81BA47\nvoid _SET_PED_INCAPACITATED_FLAG(Ped ped, int flag)\n```",
"timestamp": "2020-07-07T22:59:04.322+02:00"
},
{
"id": "730166643518603306",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xF97C34C33487D569\nint _REQUEST_METAPED_PED(Hash model, Any p1)\n\n// 0x43E4DA469541A9C9\nBOOL _IS_METAPED_PED_REQUEST_VALID(int metapedRequestHandle)\n\n// 0xC0940AC858C1E126\nBOOL _HAS_METAPED_PED_REQUEST_LOADED(int metapedRequestHandle)\n\n// 0x0BCD4091C8EABA42\nPed _CREATE_METAPED_PED(int metapedRequestHandle, float posX, float posY, float posZ, float heading, Any p5, Any p6, Any p7, Any p8, Any p9)\n\n// 0x3972F78A78B5D9DF\nvoid _RELEASE_METAPED_PED_REQUEST(int metapedRequestHandle)\n```",
"timestamp": "2020-07-07T23:01:33.655+02:00"
},
{
"id": "731609546371366983",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n\n// 0xADF1D53F3B1FE0A7\nvoid _GET_ANIM_SCENE_ORIGIN(int sceneHandle, Vector3* position, Vector3* rotation, int order);\n\n// 0x49F1D143ADE32656\nint _GET_ANIM_SCENE_DURATION(int sceneHandle);\n\n// 0x43C21623E42B821B\nint _GET_ANIM_SCENE_RATE(int sceneHandle);\n\n// 0x3FBC3F51BF12DFBF\nfloat _GET_ANIM_SCENE_PROGRESS(int sceneHandle);\n\n// 0xCDC5512A407CF08D\nBOOL _IS_ANIM_SCENE_ACTIVE(int sceneHandle);\n\n// 0xD8254CB2C586412B\nBOOL _IS_ANIM_SCENE_FINISHED(int sceneHandle);\n\n// 0x4B4038796F0D6566\nBOOL _IS_ANIM_SCENE_PAUSED(int sceneHandle);\n\n// 0x25557E324489393C\nBOOL _DOES_ANIM_SCENE_EXIST(int sceneHandle);\n\n// 0x477122B8D05E7968\nBOOL _IS_ANIM_SCENE_LOADED(int sceneHandle);\n\n// 0x59606519FF9D3EC2\nBOOL _IS_ANIM_SCENE_LOADING(int sceneHandle);\n\n// 0x95531A4A20CCE7BC\nBOOL _IS_ANIM_SCENE_METADATA_LOADED(int sceneHandle);\n\n// 0xCBFC7725DE6CE2E0\nBOOL _IS_ANIM_SCENE_STARTED(int sceneHandle);\n\n// 0x1F0E401031E20146\nBOOL _IS_ANIM_SCENE_PLAYBACK_LIST_PHASE_ACTIVE(int sceneHandle, char* phaseName);\n\n// 0xDF7B5144E25CD3FE\nvoid _REQUEST_ANIM_SCENE_PLAYBACK_LIST_PHASE(int sceneHandle, char* phaseName);\n\n// 0xAE6ADA8FE7E84ACC\nvoid _RELEASE_ANIM_SCENE_PLAYBACK_LIST_PHASE(int sceneHandle, char* phaseName);\n\n// 0x23E33CB9F4A3F547\nBOOL _IS_ANIM_SCENE_PLAYBACK_LIST_PHASE_LOADED(int sceneHandle, char* phaseName);\n\n// 0x0DF57F86FE71DBE5\nBOOL _IS_ANIM_SCENE_PLAYBACK_LIST_PHASE_LOADING(int sceneHandle, char* phaseName);\n\n// 0x15598CFB25F3DC7E _SET_ANIM_SCENE_PLAYBACK_LIST_BOOL\nvoid _SET_ANIM_SCENE_PLAYBACK_LIST_PHASE(int sceneHandle, char* phaseName);\n/*\n Not sure if \"phase\" is a right word, but still better than \"bool\".\n*/\n```",
"timestamp": "2020-07-11T22:35:08.503+02:00"
},
{
"id": "731609576742322208",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x7F5D88333EE8A86F\nvoid _CLEAR_PED_BLOOD_DAMAGE_FACIAL(Ped ped, BOOL unk);\n/*\n Basically just removed blood damage from ped's face.\n*/\n\n// 0x0918E3565C20F03C\nvoid _SET_ENTITY_COORDS_AND_HEADING_NO_OFFSET(Entity entity, float posX, float posY, float posZ, float heading, BOOL unk1, BOOL unk2);\n\n// 0x96C638784DB4C815\nfloat _GET_ENTITY_HEALTH_FLOAT(Entity entity);\n/*\n Returns (CUR_HEALTH / MAX_HEALTH)\n*/\n\n// 0xA6E210FB4283B767\nvoid _GET_ROWING_OARS(Vehicle vehicle, Entity* left, Entity *right);\n/*\n Returns handles of boat paddles entities.\n*/\n\n// 0x7DE9692C6F64CFE8\nvoid _SET_PED_CROUCH_MOVEMENT(Ped ped, BOOL state, int unk, BOOL immediately);\n\n// 0xD5FE956C70FF370B\nBOOL _GET_PED_CROUCH_MOVEMENT(Ped ped);\n```",
"timestamp": "2020-07-11T22:35:15.744+02:00"
},
{
"id": "731684126767448114",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "`_GET_BOAT_PADDLE_ENTITIES` -> `_GET_ROWING_OARS` ?",
"timestamp": "2020-07-12T03:31:29.855+02:00"
},
{
"id": "732483945052242022",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "```c++\n// 0x662D364ABF16DE2F \nvoid _SET_BLIP_MODIFIER(Hash blipHash, Hash modHash);\n```\nhttps://pastebin.com/GY4NywDr",
"timestamp": "2020-07-14T08:29:41.394+02:00"
},
{
"id": "733323444762181652",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n\n// 0x4CC5F2FC1332577F _HIDE_HUD_COMPONENT\nvoid _ENABLE_HUD_CONTEXT(Hash context);\n\n// 0x8BC7C1F929D07BF3 _DISABLE_HUD_COMPONENT\nvoid _DISABLE_HUD_CONTEXT(Hash context);\n\n// 0xC9CAEAEEC1256E54\nvoid _ENABLE_HUD_CONTEXT_THIS_FRAME(Hash context);```",
"timestamp": "2020-07-16T16:05:33.722+02:00"
},
{
"id": "734212604938944582",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Increase a player's max health, core and deadeye (you can add them three times max)\n```js\nconst b1 = new ArrayBuffer(8 * 12);\nconst a2 = new DataView(b1);\n\nconst b2 = new ArrayBuffer(8 * 12);\nconst a3 = new DataView(b2);\n// a3.setInt32(8 * 0, 2147483648, true);\n// a3.setInt32(8 * 4, 1901291885, true);\n// a3.setInt32(8 * 6, 4150375216, true);\n// a3.setInt32(8 * 8, 4264807152, true);\n// a3.setInt32(8 * 10, 2147483648, true);\n\nlet wasTheItemAdded = Citizen.invokeNative(\"0xCB5D11F9508A928D\", 1, a2, a3, GetHashKey(\"UPGRADE_STAMINA_TANK_1\"), 1084182731, 1, 752097756);\n/*\nUPGRADE_HEALTH_TANK_1\nUPGRADE_STAMINA_TANK_1\nUPGRADE_DEADEYE_TANK_1\n*/\n```",
"timestamp": "2020-07-19T02:58:46.028+02:00"
},
{
"id": "734213041729699840",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "You can add a lot of items with it, tonics, kits, etc. Just gotta figure the rest out 😛",
"timestamp": "2020-07-19T03:00:30.167+02:00"
},
{
"id": "734422318066958386",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "warxander",
"author_id": "215039726107754496",
"content": "when all these native names are going to be added in codegen?",
"timestamp": "2020-07-19T16:52:05.534+02:00"
},
{
"id": "734446860890013716",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Possibly all inventory item slot hashes. (5th argument for `0xCB5D11F9508A928D`)\nhttps://pastebin.com/P6fyr3vr",
"timestamp": "2020-07-19T18:29:36.999+02:00"
},
{
"id": "734522069202763877",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x780C5B9AE2819807 \nBOOL _INVENTORY_*(Hash item, Hash slotId)\n/*\nReturn true if the item fits this slot\n*/\n```",
"timestamp": "2020-07-19T23:28:28.058+02:00"
},
{
"id": "734536481074446356",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "So, if you add the `HORSE_REVIVER` item (or whatever its called) and youre using `SetPedAsSaddleHorseForPlayer` (or similar natives) to set your own horse, you should be able to use the in-game revive mechanic",
"timestamp": "2020-07-20T00:25:44.116+02:00"
},
{
"id": "734536593163157596",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "pretty cool",
"timestamp": "2020-07-20T00:26:10.84+02:00"
},
{
"id": "735092143026077717",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "From @Profex \n```cpp\n// 0xFCCC886EDE3C63EC\nvoid _HIDE_PED_WEAPONS(Ped ped, int p0, BOOL immediately);\n/*\n Unequip current weapon and set current weapon to WEAPON_UNARMED.\np0 usually 2 in R* scripts. Doesn't seem to have any effect if changed....\nimmediately: if true it will instantly switch to unarmed\n*/\n\n\n// 0x865F36299079FB75\nHash _GET_WEAPON_UNLOCK(Hash weaponHash);\n\n// 0x9888652B8BA77F73 \nObject _CREATE_WEAPON_OBJECT(Hash weaponHash, int ammoCount, float x, float y, float z, BOOL showWorldModel, float scale);\n//Was already documented, but last param it's not heading but scale (or size)\n\n\n// 0x22084CA699219624\nfloat _GET_WEAPON_SCALE(Object weaponObject)\n/*\nOld Name: _GET_WEAPON_OBJECT_SIZE\nExample: local size = Citizen.InvokeNative(0x22084CA699219624, weaponObj, Citizen.ResultAsFloat())\n*/\n\n// 0xC3544AD0522E69B4\nvoid _SET_WEAPON_SCALE(Object weaponObject, float scale)\n```",
"timestamp": "2020-07-21T13:13:44.249+02:00"
},
{
"id": "735657953499283617",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "vacadeluna",
"author_id": "161658713457950722",
"content": "I reacted on the redm-hello and I still cannot write on main, support, or scripting. Any ideas?",
"timestamp": "2020-07-23T02:42:03.978+02:00"
},
{
"id": "735985366430908426",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x0317C947D062854E\nfloat _GET_PLAYER_HEALTH(Player player)\n\n// 0x0FF421E467373FCF\nfloat _GET_PLAYER_STAMINA(Player player)\n```\nWhy is there so many health/stamina natives",
"timestamp": "2020-07-24T00:23:05.304+02:00"
},
{
"id": "735988198819233854",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x01B21B81865E2A1F\nvoid _SET_PED_SCENT(Ped ped, float scent)\n/* \n0.0 - 1.0\nModify the \"scent line\" on the ped's body when using eagleeye\n*/\n```",
"timestamp": "2020-07-24T00:34:20.598+02:00"
},
{
"id": "736556705458159658",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x48E4D50F87A96AA5\nint N_0x48E4D50F87A96AA5(Ped ped, BOOL p1, BOOL p2, Hash lootTableKey, Any* out, Any p5)\n/*\nUsed to get a Item and a Amount based on a pre-defined LootTable\nlootTableKey can be entity models too\n\nout:\n f_2: ItemHash\n f_13: ItemAmount\n\nLootTables at: common_0.rpf\\data\\loot_tables\n*/\n```",
"timestamp": "2020-07-25T14:13:23.143+02:00"
},
{
"id": "737607692230852618",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Voice proximity range natives from @Artzalez \n```cs\n Function.Call((Hash)0x08797A8C03868CB8, 5.0f);\n Function.Call((Hash)0xEC8703E4536A9952);\n Function.Call((Hash)0x58125B691F6827D5, 5.0f);```",
"timestamp": "2020-07-28T11:49:37.916+02:00"
},
{
"id": "738104580218552331",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Fishing research, might be missing some stuff\nhttps://pastebin.com/NmK5ZLVs",
"timestamp": "2020-07-29T20:44:05.244+02:00"
},
{
"id": "738106253406109706",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "There's an option (``--shift=``) in the decompiler that prevents the shuffling of field indicies, so instead of it being 1,2,3,4,...,N. You can actually use the memory/array offset. That should help prevent issues with unused fields being pruned out",
"timestamp": "2020-07-29T20:50:44.163+02:00"
},
{
"id": "738106735818178600",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Mhm, didn't know that, i'll look it up",
"timestamp": "2020-07-29T20:52:39.179+02:00"
},
{
"id": "738106917150261329",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "Deleted User",
"author_id": "456226577798135808",
"content": "Should probably be disabled by default, but that was a decision made by the original author.",
"timestamp": "2020-07-29T20:53:22.412+02:00"
},
{
"id": "738521052145123358",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "seems f_11 and f_12 are mixed up on that pastebin; f_11 = hook, f_12 = bobber.",
"timestamp": "2020-07-31T00:18:59.889+02:00"
},
{
"id": "738522897768775801",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Fixed, thanks",
"timestamp": "2020-07-31T00:26:19.92+02:00"
},
{
"id": "738916718675755018",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "antooh.",
"author_id": "486525403947597824",
"content": "0xD955FEE4B87AFA07\nBOOL _IS_WEAPON_ONE_HANDED",
"timestamp": "2020-08-01T02:31:14.141+02:00"
},
{
"id": "738919075098394685",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "https://discordapp.com/channels/192358910387159041/643437867044962304/717756357306089533",
"timestamp": "2020-08-01T02:40:35.956+02:00"
},
{
"id": "742889775257878589",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "I believe these are all the emote actions passed through the first param of `_TASK_EMOTE`: https://pastebin.com/CbBcLnX4",
"timestamp": "2020-08-12T01:38:44.646+02:00"
},
{
"id": "746856174430978058",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xD56E5F336C675EFA \nfloat _GET_WEAPON_PERMANENT_DEGRADATION(Entity weaponEntity)\n```\nFrom @se \n```cpp\n// 0xC6A6789BB405D11C\nEntity _GET_WEAPON_OBJECT_FROM_PED(Ped ped, boolean p1)\n/*\nDetachs the weapon from the ped and actually removes the ped's weapon\n*Edit: apparently theres a gtav native that does the same, so i assume its the same native/name?\n*/\n```",
"timestamp": "2020-08-23T00:19:47.901+02:00"
},
{
"id": "751409085034922035",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x6D3AC61694A791C5\nchar* _GET_WEAPON_NAME_2(Hash weaponHash);\n/*\n Does the same as 0x89CF5FF3D363311E (_GET_WEAPON_NAME)\n */\n\n// 0xD42514C182121C23\nHash _GET_PED_DEFAULT_WEAPON_COLLECTION(Hash modelHash);\n/*\n Returns a collection hash of weapon list for specific ped model.\n For example \"RE_POLICECHASE_MALES_01\" has Carbine Repeater and a knife.\n*/\n\n// 0x899A04AFCC725D04\nvoid _GIVE_WEAPON_COLLECTION_TO_PED(Ped ped, Hash collection);\n/*\n Gives weapon collection to ped. Collection examples: \"LO_AGRO_PED\".\n*/```",
"timestamp": "2020-09-04T13:51:26.378+02:00"
},
{
"id": "751773340011724820",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "```cpp\n// 0xA622E66EEE92A08D\n int _GET_NUM_COMPONENT_CATEGORIES_IN_PED(Ped ped)\n/*\n Works the same as 0x90403E8107B60E81 (_GET_NUM_COMPONENTS_IN_PED) but used to get catgeory hashes\n*/\n\n// 0xCCB97B51893C662F\nHash _GET_PED_COMPONENT_CATEGORY_BY_INDEX(Ped ped, int index)\n/*\n Returns the category hash that each component ped has\n For example \"HEADS\" OR \"HATS\".\n*/\n```",
"timestamp": "2020-09-05T13:58:51.532+02:00"
},
{
"id": "753733479187087370",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n\n// 0xEAA8242C8479C27D\nvoid _REQUEST_PED_STAND_UP_ANIM(Ped ped, char* standType);\n/*\n Known types: \"REAR\", \"FRONT\"\n*/\n\n// 0x91FE941F9FCFB702\nint _REQUEST_METAPED_ASSET(Hash assetHash, int unk);\n/*\n \"assetHash\" doesn't seems to be related to component hashes.\n*/\n\n// 0x9641A9A20310F6B8\nint _CREATE_METAPED_ASSET(Hash assetHash, float posX, float posY, float posZ, float rotX, float rotY, float rotZ, bool unk1, bool unk2, bool unk3);\n/*\n Creates a pickup-able metaped component.\n \"assetHash\" doesn't seems to be related to component hashes.\n Hash example: 0xD20354AB (https://i.imgur.com/dzHkcDb.png)\n*/\n\n// 0xEAF682A14F8E5F53\nint _CREATE_METAPED_OUTFIT_PED(int requestId, float posX, float posY, float posZ, bool unk1, bool unk2, bool unk3, int unk4, int unk5);\n/*\n Creates a metaped from ped outfit request handle.\n See _REQUEST_METAPED_OUTFIT.\n*/\n\n// 0x610438375E5D1801\nBOOL _HAS_METAPED_OUTFIT_LOADED(int requestId);```",
"timestamp": "2020-09-10T23:47:45.129+02:00"
},
{
"id": "756232645977047090",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nimoa",
"author_id": "195396636783017984",
"content": "@Disquse Sorry Disquse, I have to delete this as this user seems to be some random cheat developers.",
"timestamp": "2020-09-17T21:18:32.924+02:00"
},
{
"id": "761330935358554134",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cradz",
"author_id": "389556839601405954",
"content": "Corsets https://pastebin.com/mb9vY98m same clothing category as vests. 🙂",
"timestamp": "2020-10-01T22:57:19.834+02:00"
},
{
"id": "766002308760338462",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Hey folks, as you might see, **RedM now support streaming** 🎉 \nThere's also a zip archive with few examples.\n\nIt includes:\n- replacement of `val_01_.ytd` texture with :rdrmascot: .\n- streamed object ported from V, named as `gta5_map_wow` (you can spawn it with `CreateObject`).\n- scripted ymap (imap/ipl) named `gta5_ymap_wow` (don't forget to request it using `RequestImap`).\n- random flying interior `test_interior_wow`.\n\nAll `.ymap`, `.ymf`, `.ytyp` files are **plain XMLs** feel free to open and edit it in any editor. \nAssets was ported using RedM's formats convert tool (`@citicon formats:convert` in cmd), hope there will be a tutorial very soon.\n\nFew notes:\n- Don't use `PERMANENT_ITYP_REQUEST`.\n- Don't add `UNK_MEMBER_*hash*` fields from OpenIV to your meta, it wont work. Here's list of hash collisions: https://pastebin.com/t09F4bHA, use it instead.\n- `redm_loves_you_*numbers*` is a temp replacement (hash collision) for unknown field names.\n- Use canary (for now) and server artifact >=3059.\n\nHave fun :rdrmascot: \nhttps://i.imgur.com/TJcH3Pb.png\nhttps://i.imgur.com/GZOpV9S.png\n\nLink to a message with assets (since I can't attach it in this channel):\nhttps://ptb.discordapp.com/channels/192358910387159041/643437916445605889/766002489677053972",
"timestamp": "2020-10-14T20:19:42.043+02:00"
},
{
"id": "767101126336053270",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "grizy_qc",
"author_id": "634774527221694494",
"content": "```cpp\n // 0x1B83C0DEEBCBB214\n void _REMOVE_ALL_PED_AMMO(Ped ped)\n```",
"timestamp": "2020-10-17T21:06:00.568+02:00"
},
{
"id": "770783736198332439",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_kono_",
"author_id": "163467282603966466",
"content": "```csharp\n// 0xCAB4DD2D5B2B7246\nvoid ANIMPOSTFX_SET_STRENGTH(char* effectName, float strength)\n\nThis must be called after ANIMPOSTFX_PLAY\nStrength is between 0 and 1\n\n```",
"timestamp": "2020-10-27T23:59:23.179+01:00"
},
{
"id": "770827056920395828",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x3BCF32FF37EA9F1D\nvoid _REMOVE_VEHICLE_PROPSETS(Vehicle vehicle)\n```\nfrom @Mr. Vance's Dance",
"timestamp": "2020-10-28T02:51:31.644+01:00"
},
{
"id": "771928048135438376",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xA88E215CEB0435C0\nN_0xA88E215CEB0435C0(Entity horse, Any* struct, Hash p2, int flag, int p4, int p5);\nNo ideia what it does (LOL), but its related to horse and items?!\n\nstruct\nf_0: num_items?\nf_1: struct_items {hash, hash, hash, ...}\n...\nf_12: struct_items_amounts {amount, amount, amount, ...}\n\nExample:\n\nconst struct = new DataView(new ArrayBuffer(176));\nstruct.setInt32 (8 * 0, 3, true);\nstruct.setBigInt64(8 * 1 , BigInt(1463786584), true);\n// Cigarettes\nstruct.setBigInt64(8 * 1 + 8 , BigInt(1627068364), true);\n// Horse Reviver\nstruct.setBigInt64(8 * 1 + 16 , BigInt(131817050) , true);\n// Bread Chunk\nstruct.setInt32 (8 * 12 , 2 , true);\nstruct.setInt32 (8 * 12 + 8 , 1 , true);\nstruct.setInt32 (8 * 12 + 16, 1 , true);\n\nCitizen.invokeNative(\"0xA88E215CEB0435C0\", horse, struct, 205298116, 128, 2, 0);\n```",
"timestamp": "2020-10-31T03:46:28.405+01:00"
},
{
"id": "771929611448877076",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x06D26A96CA1BCA75\nvoid _SET_PED_MOOD_TOWARDS_PED(Ped ped, int moodIndex?, float value, Ped target)\n\nindices: (0 - 10)\n 3: mood_?\n\nwhen target is ´0´, the ped's mood affects everyone\n\n// 0x42688E94E96FD9B4\nfloat _GET_PED_MOOD_TOWARDS_PED(Ped ped, int moodIndex?, Ped target)\n\n// 0xA1EB5D029E0191D3\nvoid _SET_PED_MOOD_*(Ped ped, int moodIndex?, float multiplier):\n\nthe higher the multiplier, the slower the mood's value will decrease.\n\n// 0x23BDE06596A22CEC\n// 0x2EB75FB86C41F026\nN_0x2EB75FB86C41F026(Ped ped, int moodIndex?, BOOL p3)\n\nRelated, no idea what it does.\n```",
"timestamp": "2020-10-31T03:52:41.128+01:00"
},
{
"id": "771930106603765781",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "hopefully horses will now stop kicking you while you take your cig break",
"timestamp": "2020-10-31T03:54:39.182+01:00"
},
{
"id": "778620340992999465",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "From @Mr. Vance's Dance \n```C\n// 0xEDD964B7984AC291\nvoid _BLIP_SET_MODIFIER_2(Blip blip, Hash modifierHash)\n\n/*\n Does the same as 0x662D364ABF16DE2F (_BLIP_SET_MODIFIER)\n*/\n```",
"timestamp": "2020-11-18T14:59:15.359+01:00"
},
{
"id": "779298894529429504",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "From @Mr. Vance's Dance \n```cpp\n// 0x3E592D0486DEC0F6\nBOOL _IS_PED_FALLING_2(Ped ped)\n\n// 0x8268B098F6FCA4E2\nvoid _SET_VEHICLE_TINT(Vehicle vehicle, int style)\n\n// 0xA44D65E6C624526F \nint _GET_VEHICLE_TINT(Vehicle vehicle)\n```\nhttps://gfycat.com/wetcontentdutchsmoushond",
"timestamp": "2020-11-20T11:55:35.129+01:00"
},
{
"id": "779319004128870421",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cp2137",
"author_id": "326727667191775233",
"content": "isn't it a changing color native?",
"timestamp": "2020-11-20T13:15:29.631+01:00"
},
{
"id": "779418441127034891",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "From @Mr. Vance's Dance\n```c\n// 0x4F806A6CFED89468\nvoid _SET_PED_ALL_WEAPONS_VISIBILITY(Ped ped, bool visible)\n/*\n Changes ped weapons visiblity (bow on the back, gun in holster ...) \n*/\n\n// 0x5AABB09F6FBD1F87\nvoid _SET_VEHICLE_WETNESS(Vehicle vehicle, float wetLevel)\n/*\n wetLevel is between 0.0 and 1.0\n*/\n\n// 0x31167ED4324B758D\nfloat _GET_PED_ID_RANGE(Ped ped)\n```",
"timestamp": "2020-11-20T19:50:37.259+01:00"
},
{
"id": "781797569419411456",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x5E214112806591EA\nVector3 _GET_WORLD_ROTATION_OF_ENTITY_BONE(Entity entity, int boneIndex)\n\n// 0xF3FDA9A617A15145\nvoid _GET_ENTITY_WORLD_POSITION_OF_DIMENSIONS(Entity entity, Vector3* minimum, Vector3* maximum)\n\n// 0x0D0DB2B6AF19A987\nvoid _DELETE_CARRIABLE(Entity* entity)\n\n// 0x18013392501CE5DC\nObject _GET_OBJECT_FROM_INDEXED_ITEM(SrcHandle indexedItem)\n\n// 0xE578C8AE173719B3\nVehicle _GET_VEHICLE_FROM_INDEXED_ITEM(SrcHandle indexedItem)\n\n// 0x3FFB15534067DCD4\nPed _GET_PED_FROM_INDEXED_ITEM(SrcHandle indexedItem)\n\n// 0x20A4BF0E09BEE146\nvoid _CLEAR_ITEMSET(int itemset)\n\n// 0x857ACB0AB4BD0D55\nBOOL _IS_ENTITY_ON_TRAIN_TRACK(Entity entity)\n\n// 0x6DE03BCC15E81710\nVector3 _GET_NEAREST_TRAIN_TRACK_POSITION(float x, float y, float z)\n\n// 0x4E76CB57222A00E5\nint _GET_SEAT_PED_IS_IN(Ped ped)\n\n// 0xF256A75210C5C0EB\nBOOL _IS_POSITION_INSIDE_VOLUME(int volumeHandle, float x, float y, float z)\n```",
"timestamp": "2020-11-27T09:24:25.646+01:00"
},
{
"id": "781808064599818252",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x6b89faa36fc909a3\nBOOL N_0x6b89faa36fc909a3(Any[10]* out, Ped ped, int p2, int p3)\n\n/*\nNo clue tf that native does(will leave just because why not)\nseems related to dead animals items/loots, stuff like that\nand doesnt work for some reason /shrug\nIDA tells me that *(unkGlobal + 16) != 1 so idk\n/*\n```",
"timestamp": "2020-11-27T10:06:07.892+01:00"
},
{
"id": "781808941940080680",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```lua\n-- If you for some reason need to know if an animal is MANGY\nlocal isMangy = IsMetapedUsingComponent(ped, -234257069)\n```",
"timestamp": "2020-11-27T10:09:37.066+01:00"
},
{
"id": "781859258928201749",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x78C56B8A7B1D000C\nint _GET_CURRENT_NUMBER_OF_LOCAL_PHOTOS()\n\n// 0x8E587FCD30E05592\nint _GET_CAMERA_ROLL_CAPACITY()\n\n// 0x98F4154989B81EC6\nfloat _GET_PHOTO_MODE_CONTRAST()\n\n// 0x06C0D8BB6B04A709\nfloat _GET_PHOTO_MODE_EXPOSURE()\n\n// 0x4653A741D17F2CD0\nfloat _GET_PHOTO_MODE_DOF()\n\n// 0x2533BAFFBE737E54\nfloat _GET_PHOTO_MODE_FOCAL_LENGTH()\n\n// 0x18FC740FFDCD7454\nfloat _GET_PHOTO_MODE_FOCUS_DISTANCE();\n```",
"timestamp": "2020-11-27T13:29:33.571+01:00"
},
{
"id": "781875645218553866",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x72E30372E7CC4415\nvoid _SET_PEARLESCENT_FX_ENABLED(Entity entity, bool enabled)\n/*\nEnables/disables a kind of 'shiny' effect on metals\ncan be seem by toggling it on and off on a knife in FPP\n*/\n```",
"timestamp": "2020-11-27T14:34:40.367+01:00"
},
{
"id": "781903185643831327",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n/*\nNames might be absolute BS because i know jack shit about light physics\n*/\n\n// 0xF49574E2332A8F06\nvoid _SET_LIGHT_EMITTER_OBJECT_EMISSION_STRENGHT(Object object, float value)\n\n// 0x04D1D4E411CE52D0\nvoid _SET_LIGHT_EMITTER_OBJECT_DISABLE_DIFFUSION(Object object, bool disable)\n\n// 0x63E39F09310F481F\nvoid _SET_LIGHT_EMITTER_OBJECT_TRANSLUCENCY(Object object, float value)\n// 0.0 - 586.67 (?)\n\n// 0xFA3B61EC249B4674\nfloat _GET_LIGHT_EMITTER_OBJECT_EMISSION_STRENGHT(Object object)\n```",
"timestamp": "2020-11-27T16:24:06.516+01:00"
},
{
"id": "781917149412458498",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x5D1C5D8E62E8EE1C\nint _GET_PROXY_INTERIOR_INDEX(int interiorId)\n\n// 0x113857D66A9CABE6\nBOOL _IS_PROXY_INTERIOR_INDEX_ARTIFICIAL_LIGHTS_ENABLED(int proxyIntIndex)\n\n// 0xBFCB17895BB99E4E\nvoid _SET_PROXY_INTERIOR_INDEX_ARTIFICIAL_LIGHTS_STATE(int proxyIntIndex, bool toggle)\n```",
"timestamp": "2020-11-27T17:19:35.738+01:00"
},
{
"id": "782213983208996924",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x5102307CE88798EB\nBOOL _IS_PED_VISIBILITY_TRACKED(Ped ped)\n\n// 0x164CECC59E70DF86\nBOOL _IS_TRACKED_PED_VISIBILITY_PERCENTAGE_NOT_LESS_THAN(Ped ped, float value)\n\n// 0x511F1A683387C7E2\nint _GET_PED_TRACKED_VISIBILITY(Ped ped)\n\n// 0x3088634CF8C819CF\nvoid _RELEASE_PED_VISIBILITY_TRACKING(Ped ped)\n\n// 0xE525878A35B9EEBD\nBOOL _NETWORK_IS_TRACKED_PLAYER_VISIBLE(Player player, Player trackedPlayer)\n\n// 0xC8CCDB712FBCBA92\nBOOL _IS_TRACKED_ENTITY_VISIBLE(Entity entity)\n/*\nOnly does actual visibility check on Peds;\n*/\n```",
"timestamp": "2020-11-28T12:59:06.43+01:00"
},
{
"id": "783110388899512361",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x497A6539BB0E8787\nvoid _SET_PLAYER_DEFENSE_MODIFIER(Player player, float weaponDefenseMod, float meleeDefenseMod)\n\n// 0x9B6808EC46BE849B\nvoid _SET_DEFENSE_MODIFIER_FOR_PED(Ped ped, float modifier)\n```",
"timestamp": "2020-12-01T00:21:06.201+01:00"
},
{
"id": "783695533071663124",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "From some old notes:\n```cpp\n// 0xbf4f34a85ca2970d\nvoid _HIDE_HUD_THIS_FRAME()\n```",
"timestamp": "2020-12-02T15:06:15.443+01:00"
},
{
"id": "783696058407845908",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "Set a ped and/or metaped voice\n```cpp\n// 0x2703EFB583F0949A\nvoid N_0x2703efb583f0949a(Ped ped, Hash voice)\n/*\nVoices hashes:\n1504650006\n1872645876\n-183628418:\n876959807\n-57143180:\n-1809185548\n1897855360:\n-1036263145\n1457308924:\n-521462159\n*/\n```",
"timestamp": "2020-12-02T15:08:20.693+01:00"
},
{
"id": "783696574467276800",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```cpp\n// 0x7C709C01D43D94CD\nvoid N_0x7c709c01d43d94cd()\n/* Freeze the gane like the photo mode */\n```\n```cpp\n// 0x41AFA5F228B0B6B0\nvoid N_0x41afa5f228b0b6b0()\n/* Unfreeze photo mode */\n```",
"timestamp": "2020-12-02T15:10:23.731+01:00"
},
{
"id": "783697032724217887",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```cpp\n// 0xE296208C273BD7F0\nvoid N_0x41afa5f228b0b6b0();\n/*\nExample: N_0xe296208c273bd7f0(10, 3000, 0, 17, 1, 0)\nCinema black bars\n*/\n```",
"timestamp": "2020-12-02T15:12:12.988+01:00"
},
{
"id": "783697274223591458",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```cpp\n// 0x41AFA5F228B0B6B0\nvoid N_0x41afa5f228b0b6b0(float x, float y, BOOL unk)\n/*\nExample: _0xB8C984C0D47F4F07(0.189f, 0.745f, 1);\nControl clouds scale?\n*/\n```",
"timestamp": "2020-12-02T15:13:10.566+01:00"
},
{
"id": "783697655078584361",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```cpp\n// 0xFE7966DF01452F32\nvoid N_0xFE7966DF01452F32(float x, float y, float z);\n\n// 0x10C1767B93257480\nvoid N_0x10C1767B93257480(float x, float y, float z);\n\n// N_0xfe7966df01452f32(558.533, -572.252, -3581.283)\n// N_0x10c1767b93257480(-233.258, 1804.29, -1075.736)\n// Control cloud position\n```",
"timestamp": "2020-12-02T15:14:41.369+01:00"
},
{
"id": "783698320144597032",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pichotm",
"author_id": "236589051078115328",
"content": "```cpp\n// 0x56CB3B4305A4F7CE\nvoid N_0x56CB3B4305A4F7CE(Ped ped, int unk, float unk1, float unk2);\n/*\nUnsure about the params but controls the movement of a vehicle weapons\nWEAPON::_0x56CB3B4305A4F7CE(&(iLocal_9434[0]), -1, -135f, 135f); \n*/\n```",
"timestamp": "2020-12-02T15:17:19.933+01:00"
},
{
"id": "783733372731654164",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "from @Mr. Vance's Dance \n```cpp\n// 0x083D497D57B7400F\nBOOL _IS_ENTITY_FROZEN(Entity entity)\n/*\ngetter for FREEZE_ENTITY_POSITION\n*/\n\n// 0xDF631E4BCE1B1FC4\nvoid _SET_PED_COMPONENT_DISABLED_2(Ped ped, Hash componentCategory, int unk1, bool unk2)\n/*\nProbably _REMOVE_SHOP_BODY_ITEM_BY_CATEGORY_HASH(_FOR_PED?)\n*/\n\n// 0xCE2ACD6F602803E5\nint _GET_VEHICLE_PROPSET(Vehicle vehicle)\n\n// 0x53784CEA0159439B\nBOOL _DOES_VEHICLE_HAVE_ANY_PROPSET(Vehicle vehicle)\n\n// 0xC0F0417A90402742\nvoid _ADD_LIGHT_PROPSET_TO_VEHICLE(Vehicle vehicle, Hash lightPropset)\n/*\n Some light hashes: 1475377277, 280720199\n*/\n\n// 0x75F90E4051CC084C\nvoid _ACTIVATE_PROPSET_ON_VEHICLE_2(Vehicle vehicle, Hash propset)\n\n// 0xE31C0CB1C3186D40\nvoid _REMOVE_VEHICLE_LIGHT_PROPSETS(Vehicle vehicle)\n```\n```cpp\n// 0xC9B4B3A36F81FD75\nBOOL _DOES_VEHICLE_HAVE_ANY_LIGHT_PROPSET(Vehicle vehicle)\n```",
"timestamp": "2020-12-02T17:36:37.121+01:00"
},
{
"id": "783860907042013204",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\nint _ADD_TEXTURE_LAYER(int textureId, Hash albedo, Hash normal, Hash material, int blendType, float texAlpha, int sheetGridIndex)\n/*\nOld name: _ADD_PED_OVERLAY \n*/\n\nvoid _SET_TEXTURE_LAYER_ALPHA(int textureId, int layerId, float texAlpha)\n/*\nOld name: _SET_PED_OVERLAY_OPACITY\n*/\n\n// 0xF2EA041F1146D75B\nvoid _SET_TEXTURE_LAYER_MOD(int textureId, int layerId, Hash modTexture, float modAlpha, int modChannel)\n\nvoid _SET_TEXTURE_LAYER_PALLETE(int textureId, int layerId, Hash pallete)\n/*\nOld name: _SET_PED_OVERLAY_PALETTE\n*/\n\n// 0x057C4F092E2298BE\nvoid _SET_TEXTURE_LAYER_ROUGHNESS(int textureId, int layerId, float texRough)\n\nvoid _SET_TEXTURE_LAYER_SHEET_GRID_INDEX(int textureId, int layerId, int sheetGridIndex)\n/*\nOld name: _SEP_PED_OVERLAY_VARIATION \n*/\n\nvoid _SET_TEXTURE_LAYER_TEXTURE_MAP(int textureId, int layerId, Hash albedo, Hash normal, Hash material)\n/*\nOld name: _SET_PED_OVERLAY_TEXTURES\n*/\n\nvoid _SET_TEXTURE_LAYER_TINT(int textureId, int layerId, int tint0, int tint1, int tint2)\n/*\nOld name: _SET_PED_OVERLAY_COLOUR \n*/\n```",
"timestamp": "2020-12-03T02:03:23.67+01:00"
},
{
"id": "784083163956641842",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x1F714E7A9DADFC42\nint _GET_PED_LAST_HAT(Ped ped)\n\n// 0x6E5CBCB3941D7D08\nBOOL _IS_TARGET(Ped ped, Ped target)\n\n// 0x4707E9C23D8CA3FE\nvoid _REMOVE_TARGET(Ped ped, Ped target)\n```",
"timestamp": "2020-12-03T16:46:33.848+01:00"
},
{
"id": "786698813117169664",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "from @Mr. Vance's Dance \n```cpp\n// 0x3FA7D7D1E0EA809E\nvoid _SET_VEHICLE_LOD_LEVEl(Vehicle vehicle, int lodLevel)\n/*\nRanges from -1 to ? (int8)\n*/\n\n// 0x6F73EFAB11651D7F\nvoid _SET_VEHICLE_SNOW_LEVEL(Vehicle vehicle, float snowLevel)\n/*\nRanges from 0.0 to 1.0\n*/\n```",
"timestamp": "2020-12-10T22:00:13.204+01:00"
},
{
"id": "787390722859859988",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x9C113883487FD53C\nvoid _SET_RADAR_CONFIG_TYPE(Hash configHash, Hash unk)\n\n/*\n This native changes the radar zoom\n Known zoom hashes (from least to most zoomed) : -1943724816, 347777538, -117986897, -789269373, -547506804\n\n unk: usually 898171178 or 0 in R* scripts (doesn't seems to have any effect)\n*/\n\n// 0xDE4A9B35D028979F\nBOOL _IS_APP_RUNNING_BY_NAME(char* appName)\n\n// 0xA22712E8471AA08E\nvoid _SET_OBJECT_TARGETTABLE_*(Object object, bool unk1, bool unk2)\n\n/*\n When unk1 and unk2 are true you can focus the object (like when you focus a ped)\n*/\n\n// 0x1A51BFE60708E482\nBOOL _IS_PLAYER_FREE_FOCUSING(Player player)\n\n/*\n Checks if the player is focused on any entity\n*/\n```",
"timestamp": "2020-12-12T19:49:37.342+01:00"
},
{
"id": "787416562801311784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x0F2A2175734926D8\nvoid _STOP_SOUND_WITH_NAME(char* audioName, char* audioRef)\n```",
"timestamp": "2020-12-12T21:32:18.064+01:00"
},
{
"id": "787452674345926666",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x3660BCAB3A6BB734\nvoid _SET_TRAIN_*(Vehicle train)\n\n/*\n Stops the train\n*/\n\n// 0x787E43477746876F\nvoid _SET_TRAIN_*(Vehicle train)\n\n/*\n Restarts the train\n*/\n```",
"timestamp": "2020-12-12T23:55:47.727+01:00"
},
{
"id": "787625028811227137",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x9D096A5BD02F953E\nvoid _SET_PROPSET_VISIBLE(PropSet propSet, BOOL toggle)\n\n// 0x0CE8AAFE9E433A23\nBOOL _IS_PROPSET_VISIBLE(PropSet propSet)\n\n// 0xA6A9712955F53D9C\nHash _GET_PROPSET_MODEL(PropSet propSet)\n```",
"timestamp": "2020-12-13T11:20:40.234+01:00"
},
{
"id": "787746675619921922",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0xC695870B8A149B96\nBOOL _START_PARTICLE_FX_NON_LOOPED_ON_PED_BONE_2(char* effectName, Ped ped, float offsetX, float offsetY, float offsetZ, float rotX, float rotY, float rotZ, int boneIndex, float scale, BOOL axisX, BOOL axisY, BOOL axisZ)\n\n// 0x849BD6C6314793D0\nEntity _GET_PED_VEHICLE_CARRIAGE(Ped ped)\n```",
"timestamp": "2020-12-13T19:24:03.093+01:00"
},
{
"id": "789600088166367292",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x2963B5C1637E8A27\nPed _GET_CURRENT_VEHICLE_DRIVER(Vehicle vehicle)\n```",
"timestamp": "2020-12-18T22:08:51.079+01:00"
},
{
"id": "792589083704688651",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "```cpp\n// 0x7F9B9791D4CB71F6\nBOOL N_0x7f9b9791d4cb71f6(Ped ped, Ped ped2, BOOL p2, int p3)\n\n/*its used in R* scripts to check if ped is in view of player ped */\n\n// 0x06087579E7AA85A9\nBOOL N_0x06087579e7aa85a9(Ped ped, Ped ped2, float p2, float p3, float p4, float p5)\n/*maybe _IS_PED_FOCUSED_ON_PED?? is seems to return true if ped is focused and looking at the player ped. Also used inline with native above and HAS_ENTITY_CLEAR_LOS_TO_ENTITY. all params were -1f in example i found.*/\n```",
"timestamp": "2020-12-27T04:06:03.148+01:00"
},
{
"id": "792752802408562698",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "`0x7F9B9791D4CB71F6` -> `_CAN_PED_SEE_PED` ?",
"timestamp": "2020-12-27T14:56:36.729+01:00"
},
{
"id": "792985558812065812",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "All I found is that it’s used inline with witness stuff so it might be related to that that’s why I hesitated to give it a name",
"timestamp": "2020-12-28T06:21:30.18+01:00"
},
{
"id": "796214050765275148",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n_GIVE_WEAPON_TO_PED \n\nstruct inData {\n f_0 Unk0;\n f_1 Unk1;\n f_2 Unk2;\n f_3 Unk3;\n f_4 hWeapon;\n f_5 iAmmoCount;\n f_6 iAttachPoint;\n f_7 hReason;\n f_8 fCondition?;\n f_9 fDirt;\n f_10 fDamage/Rust;\n f_11 bEquipNow;\n f_12 bAttachToHandPrimaryAttachPoint;\n f_13 bUnk4;\n f_14 bIncrementIfHasAmmo;\n f_15 bUnk6;\n}\n\nstruct outWeaponItemGuidStuff {\n f_0 Unk0\n f_1 Unk1\n f_2 Unk2 // weaponItem + 48\n f_3 Unk3\n f_4 hWeapon // weaponItem + 74\n f_5 Unk4 // weaponItem + 80\n}\n```",
"timestamp": "2021-01-06T04:10:22.644+01:00"
},
{
"id": "796219997676240956",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x12FB95FE3D579238\nvoid _SET_CURRENT_PED_WEAPON_FROM_ITEM_GUID(Ped ped, Any* dataWeaponItem, bool forced, int attachPoint, bool p4, bool quickDraw)\n/*\nEquips a weapon from a weaponItem, like the example from _GIVE_WEAPON_TO_PED\n*/\n```",
"timestamp": "2021-01-06T04:34:00.498+01:00"
},
{
"id": "796241801970450444",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x9700E8EFC4AB9089\nbool N_0x9700E8EFC4AB9089(int inventoryIndex, Any* inData, Any* outData, bool unused)\n/*\nFills unkDataOut if dataOut has a valid inventoryItemGuid\nand if a item was found with that Guid\n\nI'll leave it here because will probably never find a use for that myself.\nDecompiled scripts mostly used that to check if a inventoryItem\nexists with the same Guid inside `inData`.\n*/\ni = unkInventoryItem\n\nstruct filledOutData {\n f_0 = HIDWORD(i + 48) // unkGuid0 start?\n f_1 = LODWORD(i + 48),\n f_2 = HIDWORD(i + 56)\n f_3 = LODWORD(i + 56) // unkGuid0 end? \n f_4 = i + 64 // Mostly a weaponHash\n f_5 = HIDWORD(i + 120) // unkGuid1 start?\n f_6 = LODWORD(i + 120)\n f_7 = HIDWORD(i + 128) \n f_8 = LODWORD(i + 128) // unkGuid1 end? \n f_9 = i + 80\n f_10 = (i + 88) & 1\n f_11 = i + 40\n f_12 = i + 16\n}\n```",
"timestamp": "2021-01-06T06:00:39.047+01:00"
},
{
"id": "797320135072415785",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x80D78BDC9D88EF07\nint INVENTORY_CREATE_ITEM_COLLECTION(int inventoryIndex, char* collectionName, Hash p2, int* outCollectionSize)\n/*\n p2 is almost always -1591664384\n\n Collections\n \"ALL\"\n \"ALL WEAPONS\"\n \"ALL HORSES\"\n \"ALL COACHES\"\n ...\n*/\n\n// 0x82FA24C3D3FCD9B7\nbool INVENTORY_GET_ITEM_DATA_BY_COLLECTION_INDEX(int collectionId, int collectionIndex, Any* outInventoryItem)\n/*\n collectionIndex is < outCollectionSize\n*/\nstruct outInventoryItem {\n f_0: iGUID_1\n f_1: iGUID_2\n f_2: iGUID_3\n f_3: iGUID_4\n f_4: itemHash\n f_5: unkIGUID_1\n f_6: unkIGUID_2\n f_7: unkIGUID_3\n f_8: unkIGUID_4\n f_9: itemSlotId\n f_8: itemDatabaseKey\n f_11: itemAmount\n f_14: hUnkModel\n}\n\n// 0x42A2F33A1942E865\nvoid INVENTORY_RELEASE_COLLECTION(int collectionId)\n/*\n Max num of collections is 5, so release your unused ones.\n*/\n\n// 0x640F890C3E5A3FFD\nint INVENTORY_CREATE_ITEM_COLLECTION_WITH_FILTER(int inventoryIndex, Any* filter, Any* numInCollection)\nstruct inDataParameters {\n f_0 Item;\n f_1 eSlot;\n f_2 eFitsSlot;\n f_3 eHasSlot;\n f_4 eCategory;\n f_5 eItemTag;\n f_8 eItemGroup; // weapon, ammo, horse, etc. (Hashed)\n f_9 parentGUID;\n}\n```",
"timestamp": "2021-01-09T05:25:33.693+01:00"
},
{
"id": "799640564324106250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xA6EF0C54A3443E70 \nint _BLIP_ADD_FOR_VOLUME(Hash blipHash, Volume volume)\n```",
"timestamp": "2021-01-15T15:06:07.138+01:00"
},
{
"id": "801130581307031633",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "A bit more hash collisions for various meta files\nhttps://pastebin.com/2g9cqMDM",
"timestamp": "2021-01-19T17:46:54.87+01:00"
},
{
"id": "803025668597481512",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0xCFC0BD09BB1B73FF\nPropSet _GET_TRAIN_CARRIAGE_PROPSET(Entity trainCarriage)\n```",
"timestamp": "2021-01-24T23:17:18.889+01:00"
},
{
"id": "803025822973558805",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "Example before/after deleting a train carriage's propset : https://imgur.com/a/qRNrIrK",
"timestamp": "2021-01-24T23:17:55.695+01:00"
},
{
"id": "803325352611938336",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x155B2FBE72D7D1D0\nBOOL _IS_VEHICLE_PROPSET_VALID(Vehicle vehicle)\n\n// 0x0790473EEE1977D3\nBOOL _IS_VEHICLE_LIGHT_PROPSET_VALID(Vehicle vehicle)\n```",
"timestamp": "2021-01-25T19:08:09.126+01:00"
},
{
"id": "807143393452752896",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// _RESET_PED_TEXTURE (0x8472A1789478F82F)\nvoid _CLEAR_TEXTURE\n/* Removes every layer but the base layer */\n\n// _RESET_PED_TEXTURE_2 (0xB63B9178D0F58D82)\nvoid _CLEAR_TEXTURE_LAYERS\n/* Removes every layer */\n\n// _REMOVE_PED_OVERLAY (0x96C349DE04C49011)\nvoid _REMOVE_TEXTURE_LAYER\n\n//_UPDATE_PED_TEXTURE (0x92DAABA2C1C10B0E)\nvoid _RELOAD_TEXTURE\n```",
"timestamp": "2021-02-05T07:59:40.998+01:00"
},
{
"id": "807984781210943508",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xAD03B03737CE6810\nPlayer _GET_PLAYER_THAT_OWNS_MOUNT(Ped mount)\n\n// 0x7C803BDC8343228D\nPlayer _GET_PLAYER_THAT_OWNS_VEHICLE(Vehicle vehicle)\n\n// 0xF49F14462F0AE27C\nPed _GET_MOUNT_OWNED_BY_PLAYER(Player player)\n\n// 0xE6D4E435B56D5BD0\nvoid _SET_PLAYER_OWNS_MOUNT(Player player, Ped mount)\n/* Already posted this one but didn't name it. */\n\n// 0x5CA6BBD4A7D8145E\nVehicle _GET_PLAYER_HUNTING_WAGON(Player player)\n\n// 0x6A4404BDFA62CE2C\nvoid _SET_PLAYER_HUNTING_WAGON(Player player, Vehicle wagon)\n/* Tf does it change? */\n```",
"timestamp": "2021-02-07T15:43:03.472+01:00"
},
{
"id": "808120682818174996",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x3bdfcf25b58b0415\nbool _GET_PED_IS_GRAPPLED(Ped ped)\n\n// 0xd0b7aeb56229d317\nPed _GET_PED_GRAPPLER(Ped ped)\n\n// 0x0e99e3bf11bb6367\nbool _GET_PED_IS_GRAPPLING(Ped ped)\n\n// 0x630e7b01f091a197\nvoid _SET_PED_GRAPPLE_TYPE(Ped ped, Hash type)\n\n// 0x789dabd18e9024db\nvoid _SET_PED_GRAPPLE_FLAG_ENABLED(Ped ped, int flag, bool enabled)\n\n// 0xF3C873ED0C595109\nint _GET_PED_GRAPPLE_FLAG(Ped ped)\n\n// 0x753B15AD0FD6F3E3\nHash _GET_PED_GRAPPLE_TYPE(Ped ped)\n\n// 0x2311F15D971AA680\nint _GET_PED_GRAPPLE_STAGE(Ped ped)\n// Not sure about this one, needs confirming.\n\n// 0x604190F0CF0DF158\n\n// 0xEAE3B5B019C8D23\nvoid _CLEAR_PED_GRAPPLE_FLAG(Ped ped, int flag)\n\n// 0x99a6e246c315bf60\nvoid _SET_PED_GRAPPLE_*_MULTIPLIER(Ped ped, float multiplier)\n// Not confirmed.\n```",
"timestamp": "2021-02-08T00:43:04.94+01:00"
},
{
"id": "817455212154323015",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "`script_mp_rel_tty` - scripts with debug prints, released by R* with the latest 1355 update. Very useful for researching stuff, have fun.",
"timestamp": "2021-03-05T18:55:10.161+01:00"
},
{
"id": "817455451301085214",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "List of discovered ped config flags: https://pastebin.com/DvB6GRbu",
"timestamp": "2021-03-05T18:56:07.178+01:00"
},
{
"id": "817457212309897287",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "`eLootFlags` & `eCarryingFlags` from `tty`\nhttps://pastebin.com/ArrAJPia",
"timestamp": "2021-03-05T19:03:07.035+01:00"
},
{
"id": "817488737893351444",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "`0xA0BC8FAED8CFEB3C` => `IS_PED_READY_TO_RENDER`\n`_IS_VEHICLE_LIGHT_PROPSET_VALID` = `_IS_VEHICLE_LANTERN_PROPSET_VALID`",
"timestamp": "2021-03-05T21:08:23.32+01:00"
},
{
"id": "817488764363604039",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x84D0BF2B21862059\nBOOL IS_PED_SITTING(Ped ped)\n\n// 0xEF3A8772F085B4AA\nBOOL IS_PED_BEING_DRAGGED(Ped ped)\n\n// 0xFC4165C9165C166F\nBOOL NETWORK_IS_PLATFORM_INVITE_PENDING()\n\n// 0x8785E6E40C7A8819\nBOOL GET_IS_PED_AIMING_IN_THE_AIR(Ped ped)\n\n// 0x8E7CE19219669AEB\nBOOL NETWORK_IS_AIM_CAM_ACTIVE(Player player)\n```\n\n```c\n// 0xDCC4B7F7112E8AB7\nBOOL _GET_PLAYER_WAYPOINT_IS_ACTIVE(Player player)\n\n// 0x5809DBCA0A37C82B\nBOOL _IS_WEAPON_SILENT(Hash weaponHash)\n```",
"timestamp": "2021-03-05T21:08:29.631+01:00"
},
{
"id": "817775090371526726",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x3AB6C7B0BB0DF4B1\nBOOL IS_ENTITY_PLAYING_ANIM_SCENE(Entity entity, AnimScene animScene)\n```\n```c\n// 0xA7E51B53309EAC97\nBOOL _IS_ENTITY_OWNED_BY_PERSISTENCE_SYSTEM(Entity entity)\n```",
"timestamp": "2021-03-06T16:06:15.071+01:00"
},
{
"id": "817852014918762517",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "*repost* newly named natives, now on pastebin\nhttps://pastebin.com/iWzpNt52",
"timestamp": "2021-03-06T21:11:55.312+01:00"
},
{
"id": "818516127999197235",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```lua\nSettings to be used on `SET_PED_CAN_BE_KNOCKED_OFF_VEHICLE`\n\neKnockOfVehicleSetting = {\n KNOCKOFFVEHICLE_DEFAULT = 0,\n KNOCKOFFVEHICLE_NEVER = 1,\n KNOCKOFFVEHICLE_EASY = 2,\n KNOCKOFFVEHICLE_HARD = 3,\n}\n```",
"timestamp": "2021-03-08T17:10:52.209+01:00"
},
{
"id": "818530396701851680",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n_GIVE_WEAPON_TO_PED -> GIVE_WEAPON_TO_PED_WITH_OPTIONS\n\n// 0x705BE297EEBDB95D\nBOOL IS_WEAPON_A_GUN\n```",
"timestamp": "2021-03-08T18:07:34.133+01:00"
},
{
"id": "818930628703551488",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```lua\nStatus for `GetPedLootStatusMp`\n\nePedLootStatus = {\n PLS_NONE = 0,\n PLS_PRE_LOOT,\n PLS_SAMPLING,\n PLS_SKINNING\n}\n```",
"timestamp": "2021-03-09T20:37:56.878+01:00"
},
{
"id": "820733862355140659",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x31F343383F19C987\nvoid _SET_VEHICLE_TARP_HEIGHT(Vehicle vehicle , float height, bool immediately)\n```\nhttps://imgur.com/a/nsomtiv\nfrom @Ktos",
"timestamp": "2021-03-14T20:03:21.283+01:00"
},
{
"id": "821278137278005278",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xE2487779957FE897\nvoid SET_TRANSPORT_USAGE_FLAGS(Entity transport, int flags)\n\nenum eTransportUsageFlags {\n TUF_INVALID = 0,\n TUF_ALLOW_DRIVER_ME = 1,\n TUF_ALLOW_DRIVER_GANG = 2,\n TUF_ALLOW_DRIVER_CREW = 4,\n TUF_ALLOW_DRIVER_FRIENDS = 8,\n TUF_ALLOW_DRIVER_ANYONE = 16,\n TUF_ALLOW_PASSENGER_ME = 32,\n TUF_ALLOW_PASSENGER_GANG = 64,\n TUF_ALLOW_PASSENGER_CREW = 128,\n TUF_ALLOW_PASSENGER_FRIENDS = 256,\n TUF_ALLOW_PASSENGER_ANYONE = 512,\n TUF_ALLOW_ACCESS_AI = 1024,\n}\n\n// 0xFFEC4B0A1A3ED515\nPed _GET_PED_IN_TRANSPORT_SEAT(Entity transport, int seatIndex)\n// https://alloc8or.re/rdr3/doc/enums/eVehicleSeat.txt\n\n// 0xA6C0787443C9583E\nPlayer _NETWORK_GET_PLAYER_OWNER_OF_NETWORK_ID(int networkId)\n// r* >:(\n\n// 0xC505036A35AFD01B\nvoid _NETWORK_DISABLE_LEAVE_REMOTE_PED(bool toggle)\n\n// 0x8D9BFCE3352DE47F\nbool _IS_PED_QUEUED_FOR_DELETION(Ped ped)\n\n// 0xE98D55C5983F2509\nvoid _UNREGISTER_INTERACTION_LOCKON_PROMPTS(Ped ped)\n\n// 0x870708A6E147A9AD\nbool REGISTER_INTERACTION_LOCKON_PROMPT(Ped ped, char* p2, float p3, float p4, int unkFlag, Any p6, Any, p7, Any p8, Any p9, int p10)\n```",
"timestamp": "2021-03-16T08:06:06.537+01:00"
},
{
"id": "826464954776551457",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x6B89FAA36FC909A3\nint _COMPUTE_SATCHEL_ITEM_FOR_PED_CARCASS(Any* outInventoryItemArray, Ped ped, int pedDamage, int pedQuality)\n```",
"timestamp": "2021-03-30T16:36:40.195+02:00"
},
{
"id": "827673076342063134",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x878B68960C1C2A35\nBOOL _IS_PED_GROUP_LEADER(Ped ped, int groupId)\n```",
"timestamp": "2021-04-03T00:37:18.822+02:00"
},
{
"id": "827677055558090792",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0xAA9F048DCF69B6DC\nBOOL _IS_PED_MODEL_SUPPRESSED(Hash model)\n```",
"timestamp": "2021-04-03T00:53:07.541+02:00"
},
{
"id": "838209903101083668",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x6127F25ED21C533C\nfloat _GET_PED_MELEE_ACTION_PHASE(Ped ped)\n```",
"timestamp": "2021-05-02T02:26:54.086+02:00"
},
{
"id": "838862246200868915",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cradz",
"author_id": "389556839601405954",
"content": "```c++\n//0x0CEEB6F4780B1F2F\nint _GET_PELT_FROM_HORSE(Ped horseped, int index);\n\n//0x627F7F3A0C4C51FF\nvoid _REMOVE_PELT_FROM_HORSE(Ped horseped, int pelt)```",
"timestamp": "2021-05-03T21:39:04.801+02:00"
},
{
"id": "842566074015809536",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xDCA6ABDB9288FBE4\nvoid _SET_PLAYER_GHOSTED_FOR_LOCAL_PLAYER(Player player, bool ghosted)\n```",
"timestamp": "2021-05-14T02:56:46.166+02:00"
},
{
"id": "848872814354104350",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Almost completly named INVENTORY namespace, A-Z. Forgot i had that lying around so i'l just drop it here.\nhttps://pastebin.com/iDFKruff",
"timestamp": "2021-05-31T12:37:30.236+02:00"
},
{
"id": "854270653679140894",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0xC6D7DDC843176701\nfloat _GET_DRAFT_VEHICLE_DESIRED_SPEED(Vehicle vehicle)\n\n/*\n A getter for _SET_DRAFT_VEHICLE_DESIRED_SPEED (0x0C3F0F7F92CA847C)\n*/\n```",
"timestamp": "2021-06-15T10:06:35.418+02:00"
},
{
"id": "854638918677823498",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "```c\n// 0xEFC4303DDC6E60D3\nbool _IS_PED_LEADING_HORSE(Ped ped)\n\n// 0xED27560703F37258\nvoid _TASK_STOP_LEADING_HORSE(Ped ped)\n\n// 0xED1F514AF4732258\nint _GET_LED_HORSE_FROM_PED(Ped ped)\n```",
"timestamp": "2021-06-16T10:29:56.636+02:00"
},
{
"id": "854639317552332820",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "blattersturm",
"author_id": "214942714846904321",
"content": "leaded horse lol",
"timestamp": "2021-06-16T10:31:31.735+02:00"
},
{
"id": "855208869663604746",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cradz",
"author_id": "389556839601405954",
"content": "```c++\n // 0x138398153824E332\nvoid _CLEAR_ALL_JUNCTIONS()```",
"timestamp": "2021-06-18T00:14:43.54+02:00"
},
{
"id": "872231707175178250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xB086C8C0F5701D14\nbool _IS_PED_COWERING(Ped ped)\n```",
"timestamp": "2021-08-03T23:37:24.272+02:00"
},
{
"id": "874791686281261137",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "originally posted by spAnser in #redm-scripting: https://discord.com/channels/192358910387159041/643437814104457217/788156560454189077\n\n```cs\n// 0x3B005FF0538ED2A9\nbool _GET_ANIMAL_IS_WILD(int /* Ped */ ped);\n\n// 0xAEB97D84CDF3C00B\nvoid _SET_ANIMAL_IS_WILD(int /* Ped */ ped, bool isWild);\n```\n\n> You can use this to set a spawned in horse as wild so it will run away from players and mounting will trigger them to buck until broken.\n> \n> Names are probably wrong but R* uses the first one to set a REL_DOMESTICATED_ANIMAL thing",
"timestamp": "2021-08-11T01:09:50.853+02:00"
},
{
"id": "879288893340549152",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kure2330",
"author_id": "258305216204505089",
"content": "anybody that can point me on were to find a list of the items in redm ?? names to add in server",
"timestamp": "2021-08-23T11:00:08.57+02:00"
},
{
"id": "879468250495340695",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "not the right channel for that.",
"timestamp": "2021-08-23T22:52:50.648+02:00"
},
{
"id": "879834346662531132",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kure2330",
"author_id": "258305216204505089",
"content": "@Mooshe again now that you took the time to reply. Why not point med in the right way then indtraf og that thing you are doing ?",
"timestamp": "2021-08-24T23:07:34.776+02:00"
},
{
"id": "879835883325489152",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "meylyn",
"author_id": "311715202305490944",
"content": "Because I have no clue what you're requesting, even still. Regardless, this isn't the right channel for it.",
"timestamp": "2021-08-24T23:13:41.145+02:00"
},
{
"id": "880278695468736542",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cradz",
"author_id": "389556839601405954",
"content": "```c++\n// 0xC9EA26893C9E4024\nvoid _WARP_TRAIN_TO_COORDS(int /* train */ train, float posX, float posY, float posZ, bool withPassengers);\n```",
"timestamp": "2021-08-26T04:33:15.787+02:00"
},
{
"id": "881636190892204062",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x4402960666000E62\nvoid _DETACH_DRAFT_VEHICLE_HARNESS_FROM_SEAT(Vehicle draftVeh, int harnessIndex);\n\n// 0xB36D3EC70963BE60\nvoid _DETACH_DRAFT_VEHICLE_HARNESS_PED(Vehicle draftVeh, Ped ped);\n\n// 0x3AE3552E7C207CC5\nvoid _SET_PED_GETUP_ANIMATION(Ped ped, char* animName, BOOL unk);\n```",
"timestamp": "2021-08-29T22:27:27.917+02:00"
},
{
"id": "892691273595629578",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xinerki",
"author_id": "190057412282023937",
"content": "https://gist.github.com/1b34ddbd0ee6aa94db71d360b782da01\nmany music events found from scripts (nowhere near all for sure)",
"timestamp": "2021-09-29T10:36:25.027+02:00"
},
{
"id": "897736771134160926",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x1461DF6DB886BE3F\nvoid _MAKE_OBJECT_CARRIABLE(Object object);\n```",
"timestamp": "2021-10-13T08:45:25.381+02:00"
},
{
"id": "898385482747093022",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0xB16223CB7DA965F0\nbool _IS_SPECIAL_ABILITY_ACTIVE(Player player);\n\n// 0xAE637BB8EF017875\nvoid _SPECIAL_ABILITY_SET_ACTIVE(PLayer player, bool setActive);\n\n// 0x45AB66D02B601FA7\nbool _IS_SECONDARY_SPECIAL_ABILITY_ACTIVE(Player player);\n\n// 0x64FF4BF9AF59E139\nvoid _SECONDARY_SPECIAL_ABILITY_SET_ACTIVE(PLayer player, bool setActive);\n\n// 0xDF66A37936D5F3D9\nint _GET_PLAYER_DEAD_EYE_AMOUNT(Player player);\n\n// 0xAE4BCC79C587EBBF\nfloat _SET_SPECIAL_ABILITY_ACTIVATION_COST(Player player, float activationCost, Any p2);\n\n// 0x4D1699543B1C023C\nvoid _SET_SPECIAL_ABILITY_*(Player player, float p1);\n\n// 0xB783F75940B23014\nvoid _SET_SPECIAL_ABILITY_DURATION_COST(Player player, float durationCostPerSecond);\n/* per second */\n\n// 0x6B5DDFB967E5073D\n\n// 0x83FCD6921FC8FD05\nvoid _SET_DEAD_EYE_TAGGING_CONFIG(Player player, int filter);\nvoid _SET_DEAD_EYE_TAGGING_FILTER(Player player, int filter);\n/* *_CONFIG is correct according to ordering, but tty mentions 'filter' */\n\n// 0x6B5DDFB967E5073D\nvoid _SET_DEAD_EYE_TAGGING_ENABLED(Player player, bool setEnabled);\n\n// 0x32348719DCED2969\nbool _GET_IS_DEAD_EYE_TAGGING_ENABLED(Player player);\n\n// 0x95EE1DEE1DCD9070\nvoid _ENABLE_DEAD_EYE_ABILITY(Player player, bool enable);\n```",
"timestamp": "2021-10-15T03:43:10.282+02:00"
},
{
"id": "898385494965100607",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// 0x04D7F33640662FA2\nbool _IS_PLAYER_SCOPED_IN(Player player);\n\n// 0x4D107406667423BE\nvoid _UI_PROMPT_ATTACH_VOLUME(Prompt uiPrompt, Volume volume);\n\n// 0x226C6A4E3346D288\nvoid _SET_DRAFT_VEHICLE_YOKE_CAN_BREAK(Vehicle draftVehicle, bool canBreak);\n\n// 0x6090A031C69F384E\nvoid _SET_DRAFT_VEHICLE_ANIMALS_CAN_DETACH(Vehicle draftVehicle, bool canDetach);\n\n// 0xF666EF30F4F0AC4E\nvoid _SET_CARRIABLE_CARRY_ACTION_PROMPT_OVERRIDE(void* data);\n/*\nstruct Data {\n int iCarriableEntity; // 0x00\n char pad0[4]; // 0x04\n int eCarryAction; // 0x08\n char pad1[4]; // 0x0C\n int iFlag; // 0x10\n char pad2[4]; // 0x14\n char* strProbablyName // 0x18\n char pad3[4]; // 0x1C\n char* strProbablyCntrl // 0x20\n char pad4[4]; // 0x24\n float fWeight; // 0x28\n char pad5[4]; // 0x2C\n _DWORD dwUnk; // 0x30\n}\n*/\n```",
"timestamp": "2021-10-15T03:43:13.195+02:00"
},
{
"id": "898386861238681620",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "```cpp\n// _NETWORK_RESURRECT_LOCAL_PLAYER_2\n\nf_0__fX\nf_1__fY\nf_2__fZ\nf_3__fHeading\nf_4__iFlag\nf_5__iTargetTrainCarriage\nf_6__bSetInvincibility\nf_7__bDoNotStopFastInstance\n\nenum eNetworkResurrectLocalPlayerFlag\n{\n _NETWORK_RESURRECT_LOCAL_PLAYER_FLAG_KEEP_CORPSE_ON_RESPAWN = 1,\n _NETWORK_RESURRECT_LOCAL_PLAYER_FLAG_CLEAR_CORPSE = 4,\n _NETWORK_RESURRECT_LOCAL_PLAYER_FLAG_RESPAWN_ON_TARGET_TRAIN = 8,\n NETWORK_RESURRECT_LOCAL_PLAYER_FLAG_DONT_USE_FADE = 16,\n NETWORK_RESURRECT_LOCAL_PLAYER_FLAG_LEAVE_ALIVE_PED = 32,\n}\n```",
"timestamp": "2021-10-15T03:48:38.94+02:00"
},
{
"id": "912446870062784513",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cradz",
"author_id": "389556839601405954",
"content": "```c++\n// 0x0556C784FA056628\nint _Create_Stream(char* streamName, char* soundSet);\n```\nExample usage with musical instruments: https://pastebin.com/saabZk2C",
"timestamp": "2021-11-22T21:58:06.266+01:00"
},
{
"id": "916117077612437514",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "From @Kadir Aktas \n\n```\n//0x2024F4F333095FB1\nshow bottom right notification\n```\nhttp://prntscr.com/21gvqde",
"timestamp": "2021-12-03T01:02:11.935+01:00"
},
{
"id": "917090461259280394",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "From Maniac\n```\n// 0xB8DE69D9473B7593\nvoid : DISABLE_PED_TAKDOWN_FLAG( Ped ped, int flag )\n\n// 0xB346C85D49CC998E\nbool : IS_PED_TAKDOWN_FLAG_DISABLED( Ped ped, int flag )\n```\nRanges from 1 to 33",
"timestamp": "2021-12-05T17:30:04.681+01:00"
},
{
"id": "944584454263943189",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0xCD284E2F6AC27EE9\nvoid _DISABLE_FAR_ARTIFICIAL_LIGHTS(BOOL flag);\n/*\n It seems disables lod/distant lights when flag is \"true\".\n https://gfycat.com/antiqueeminenthornet\n*/\n```",
"timestamp": "2022-02-19T14:21:23.427+01:00"
},
{
"id": "944640568816967692",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "A bit of old lazy-named findings about photomode.\nSearch for `districtname` in .exe to verify the struct, there will be 2 functions, reading and writing.\nAlmost the same metadata was used in V.\n```cpp\n0xD1031B83AC093BC7 _SET_REGION_PHOTO_TAKEN_STAT\n0x8952E857696B8A79 _SET_STATE_PHOTO_TAKEN_STAT\n0x8B3296278328B5EB _SET_PHOTO_OVERLAY_EFFECT_STAT\n0xFA91736933AB3D93 _SET_PHOTO_IN_PHOTOMODE_STAT\n0x2705D18C11B61046 _SET_PHOTO_SELF_STAT\n0x8E6AFF353C09652E _SET_PHOTO_STUDIO_STAT\n```",
"timestamp": "2022-02-19T18:04:22.179+01:00"
},
{
"id": "947865910356611072",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "anthony229",
"author_id": "205818257456758784",
"content": "I don't know if someone has discovered that yet but I found nothing about this in this discord\n\nhttps://imgur.com/47dyLLX\n\n```cpp\n// 0xC65A45D4453C2627\n\nAny _UI_PROMPT_SET_ACTIVE_GROUP_THIS_FRAME(Hash hash, int tabAmount, int tabDefaultIndex, Any p3, Any p4, Prompt prompt);\n\n/*\n tabAmount (p1) is a int that specify the number of tabs in the prompt group\n tabDefaultIndex (p2) is a int that specify the starting index\n p3 if is set > 3 you can't no longer press Q to change tab if there are more than one tab setted on the p1\n p4 ¯\\_(ツ)_/¯\n*/\n```\n\n```cpp\n// 0x2F11D3A254169EA4\n\nvoid _UI_PROMPT_SET_GROUP(Prompt prompt, int groupId, int tabIndex);\n\n/*\n tabIndex (p2) is a int that specify the tab of the prompt\n*/\n```",
"timestamp": "2022-02-28T15:40:43.526+01:00"
},
{
"id": "958265886282776586",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cayden.",
"author_id": "302338823248150529",
"content": "My apologies if this doesn’t belong here but does anyone know how to make this and what scripts (if any) are involved? (I’ve been trying to find an answer to this for hours.)",
"timestamp": "2022-03-29T09:26:31.009+02:00"
},
{
"id": "958266069540306974",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cayden.",
"author_id": "302338823248150529",
"content": "I’m referring to the voice chat mic icon on the side of the map.",
"timestamp": "2022-03-29T09:27:14.701+02:00"
},
{
"id": "958266988331941898",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "cayden.",
"author_id": "302338823248150529",
"content": "You can adjust it with your scroll wheel as well.",
"timestamp": "2022-03-29T09:30:53.758+02:00"
},
{
"id": "958369638125797386",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "windswept.horizons",
"author_id": "948481069815066654",
"content": "Hey mate, I sent you DM with info 🤠",
"timestamp": "2022-03-29T16:18:47.376+02:00"
},
{
"id": "959238403734528061",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "topgphantom",
"author_id": "374071763426082827",
"content": "could you also send to me as well",
"timestamp": "2022-04-01T01:50:57.238+02:00"
},
{
"id": "959886252079988766",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0x8433E1954BE323FC\nfloat _DOOR_SYSTEM_GET_AUTOMATIC_RATE(Hash doorHash);\n```",
"timestamp": "2022-04-02T20:45:16.32+02:00"
},
{
"id": "960405104127803453",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "windswept.horizons",
"author_id": "948481069815066654",
"content": "Sent you a DM 🤠",
"timestamp": "2022-04-04T07:07:00.288+02:00"
},
{
"id": "966430764570931220",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "deadspin",
"author_id": "132280826850181120",
"content": "A search of 'revolver' turned up nothing, 'weapon' turned up way too much to sift through. \n\nFlaco's revolver in SP is the mexican cattleman, which we can spawn and equip in RedM. \n\nWhat's the deal with the rest? I've set them up in configs (inventory, weapons, core) and attempted to spawn them but while they will show up in the player inventory, they won't actually equip. \n\nDo we know why?",
"timestamp": "2022-04-20T22:10:49.689+02:00"
},
{
"id": "980466162917847060",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "xreo8643",
"author_id": "659975560851882038",
"content": "Hi how can i remove all NPC i tyr yo use \nSetPedDensityMultiplierThisFrame(0) \nSetScenarioPedDensityMultiplierThisFrame(0, 0)\n\nbut i not working , Thanks.",
"timestamp": "2022-05-29T15:42:29.42+02:00"
},
{
"id": "980690458990772254",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "v3sc",
"author_id": "345655698698272769",
"content": "https://vespura.com/doc/natives/?_0xCE51AC2C",
"timestamp": "2022-05-30T06:33:45.771+02:00"
},
{
"id": "990322510362992660",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "Anyone wants dualwield?\n```js\n\nconst getGuidFromItemId = (inventoryId, itemData, category, slotId) => {\n const outItem = new DataView(new ArrayBuffer(8 * 13));\n\n // INVENTORY_GET_GUID_FROM_ITEMID\n const success = Citizen.invokeNative(\"0x886DFD3E185C8A89\", inventoryId, itemData ? itemData : 0, category, slotId, outItem, );\n return (success) ? outItem : null;\n};\n\nconst addWardrobeInventoryItem = (itemName, slotHash) => {\n const itemHash = GetHashKey(itemName);\n const addReason = GetHashKey(\"ADD_REASON_DEFAULT\");\n const inventoryId = 1; // INVENTORY_SP_PLAYER\n\n // _ITEMDATABASE_IS_KEY_VALID\n const isValid = Citizen.invokeNative(\"0x6D5D51B188333FD1\", itemHash, 0);\n if (!isValid) return false;\n\n const characterItem = getGuidFromItemId(inventoryId, null, GetHashKey(\"CHARACTER\"), 0xA1212100);\n if (!characterItem) return false;\n\n const wardrobeItem = getGuidFromItemId(inventoryId, characterItem, GetHashKey(\"WARDROBE\"), 0x3DABBFA7);\n if (!wardrobeItem) return false;\n\n const itemData = new DataView(new ArrayBuffer(8 * 13));\n\n // _INVENTORY_ADD_ITEM_WITH_GUID\n const isAdded = Citizen.invokeNative(\"0xCB5D11F9508A928D\", inventoryId, itemData, wardrobeItem, itemHash, slotHash, 1, addReason);\n if (!isAdded) return false;\n\n // _INVENTORY_EQUIP_ITEM_WITH_GUID\n const equipped = Citizen.invokeNative(\"0x734311E2852760D0\", inventoryId, itemData, true);\n return equipped;\n};\n\nconst givePlayerWeapon = (weaponName, attachPoint) => {\n const addReason = GetHashKey(\"ADD_REASON_DEFAULT\");\n const weaponHash = GetHashKey(weaponName);\n const ammoCount = 100;\n\n // _REQUEST_WEAPON_ASSET\n Citizen.invokeNative(\"0x72D4CB5DB927009C\", weaponHash, 0, true);\n\n setTimeout(() => {\n // GIVE_WEAPON_TO_PED\n Citizen.invokeNative(\"0x5E3BDDBCB83F3D84\", PlayerPedId(), weaponHash, ammoCount, true, false, attachPoint, true, 0.0, 0.0, addReason, true, 0.0, false);\n }, 1000);\n};\n\nRegisterCommand(\"dualwield\", () => {\n addWardrobeInventoryItem(\"CLOTHING_ITEM_M_OFFHAND_000_TINT_004\", 0xF20B6B4A);\n addWardrobeInventoryItem(\"UPGRADE_OFFHAND_HOLSTER\", 0x39E57B01);\n\n givePlayerWeapon(\"WEAPON_PISTOL_MAUSER\", 2);\n givePlayerWeapon(\"WEAPON_REVOLVER_CATTLEMAN\", 3);\n});\n```",
"timestamp": "2022-06-25T20:28:05.773+02:00"
},
{
"id": "990777511719886848",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "Here's a Lua version from Bytesizd https://pastebin.com/QqiQFzK2",
"timestamp": "2022-06-27T02:36:06.55+02:00"
},
{
"id": "999037831609589781",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x4F5EBE70081E5A20\nint _CREATE_GRAVITY_WELL(float posX, float posY, float posZ, float heading, float radius, float unk1, float unk2, float unk3, BOOL stopAtDestination);\n/*\n Creates an instance of `CScriptResource_GravityWell`, this system forces local ped to target specified position when moving, however player still can interrupt this. Can be useful to \"point\" player at some specific position. Only works while on-foot.\n*/\n\n// 0x87247BC60B60BED8\nvoid _REMOVE_GRAVITY_WELL(int handle);\n/*\n Removes gravity well by handle.\n*/\n```",
"timestamp": "2022-07-19T21:39:40.281+02:00"
},
{
"id": "1007491246530498630",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "disquse",
"author_id": "142435697159176192",
"content": "```cpp\n// 0x6AC4AF46A6B8DFB2\nvoid _SET_AI_MEMORY_REACTIONS_ENABLED(BOOL flag);\n/*\n Used in CAIConditionAmbientAIMemoryReactionsEnabled.\n*/\n```",
"timestamp": "2022-08-12T05:30:31.455+02:00"
},
{
"id": "1011084279511523438",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "stealthee",
"author_id": "654434490134822912",
"content": "Has anyone researched reproduction of the scent/tracking/eagle eye seen in this screenshot?\nhttps://i.imgur.com/O9y77Kg.png\n\nHave set the entities at tracked, and tried a bunch. Can't seem to find it any of the decompiled scripts either. Wondering if anyone has got any further.\n\nNote: Fully able to create a normal tracked entity (https://i.imgur.com/E8z55He.png), I'm wondering on the specifics of that large tracked \"plume\"",
"timestamp": "2022-08-22T03:27:57.273+02:00"
},
{
"id": "1016786780722315304",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "bluesky_fur",
"author_id": "247433781395324929",
"content": "has anyone found a way to revert the animation speeds back to where they where before the frontier pursuits dlc?\n\nBefore that DLC animations for gundraw, reloads ecetera where as slow as in RDR2 Storymode, and i really miss it. i hate the speedy animations, just takes out the immersion of the game",
"timestamp": "2022-09-06T21:07:39.509+02:00"
},
{
"id": "1023620514079584317",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ktos93",
"author_id": "769650352181084170",
"content": "Leaderboard \nhttps://pastebin.com/judASbFh",
"timestamp": "2022-09-25T17:42:28.506+02:00"
},
{
"id": "1023912816412991550",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ktos93",
"author_id": "769650352181084170",
"content": "Item Shop Inspection\nhttps://pastebin.com/WWfQ7uUU",
"timestamp": "2022-09-26T13:03:58.813+02:00"
},
{
"id": "1023927405951340616",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ktos93",
"author_id": "769650352181084170",
"content": "Translate\nhttps://pastebin.com/XyC9f35R",
"timestamp": "2022-09-26T14:01:57.23+02:00"
},
{
"id": "1025143930427277334",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "key_value",
"author_id": "211697261636222979",
"content": "Hunting with friends!\n\nnot sure why R* doesn't allow that by default but yeah\nall is left is for me to try and fix a crash i introduced with my shitty attempt at assembly 😛 but at least it works™️\n\nhttps://streamable.com/dtyp6p",
"timestamp": "2022-09-29T22:35:59.267+02:00"
},
{
"id": "1026482579706237028",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "Custom bounty posters! (not sure what happened to the original post) \n\nThanks to r4venw for the original implementation and Ktos for continued assistance troubleshooting the crashes and cleaning up the snippet. Countless hours have been spent reversing this from the game and refining it. (currently might crash after an extended period of time, but sharing so anyone can investigate and use it)\nhttps://pastebin.com/jFhBJtu2",
"timestamp": "2022-10-03T15:15:18.126+02:00"
},
{
"id": "1029792546886516737",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mrv6",
"author_id": "680124634649460765",
"content": "```c\n// 0xCE71C2F9BAA3F975\nvoid _PED_FISHINGROD_HOOK_OBJECT(Ped ped, Object object);\n\n/*\n Used with \"P_BODYPARTARMFLOAT02X\" model in fishing_core.c\n*/\n```",
"timestamp": "2022-10-12T18:27:55.798+02:00"
},
{
"id": "1046031065501937735",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "For those wishing to ignore the forced drowning/kill water volumes, set ped reset flag (0xC1E8A365BF3B29F2) 364 every frame. This also prevents any boat a ped is on/in from sinking due to these volumes.",
"timestamp": "2022-11-26T12:54:00.333+01:00"
},
{
"id": "1057430781674397706",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "RayFire map objects are pretty neat, primarily in dynamic destruction. Things like bank walls being blown out, railroad bridge blown up, trees falling, etc.. Note that they are not networked and you'll need to sync clients manually.\n\nGet nearby RayFire map objects like so:\n`local object = GetRayfireMapObject(GetEntityCoords(PlayerPedId()), 150.0, 'des_treefall_accident')` where the first parameter is the coords used for the search, the second parameter is the radius, and the third is the RayFire map object string. These can be found in the decompiled scripts and YMAPs. To check if a valid RayFire map object was found do `DoesRayfireMapObjectExist(object)`\n\nSet the state of the RayFire map object like this:\n`SetStateOfRayfireMapObject(object, 6)` where the second parameter is an integer state, typically `4` resets the state and `6` will then start the RayFire sequence. However, there are other states in between and after (see decompiled scripts for further in each instance as they vary).\n\nThe `des_treefall_accident` example comes from the Appleseed event area in single player (the logging camp near Strawberry - `des_treefall_accident.ymap`). So if you load all IMAP/IPLs and go to this logging camp, you should be able to trigger any of the `treefall` related objects.\n\nHere's some RayFire related strings to get ya started, though note that not all of them are actual RayFire objects, just RayFire related (locations can be found in decompiled scripts or any YMAP that creates them):\n```\ndes_bar_win_end\ndes_bar_win_start\ndes_bar_window\ndes_bee_shack\ndes_bee_shack_collapse\ndes_brt3_door\ndes_crn1_barn\ndes_crn1_barn_01\ndes_dis_alchemist\ndes_dis_alchemist_house\ndes_em5_roof\ndes_fus1_boilerhouse\ndes_gang_amb_wag_bomb\ndes_gang_wag_bomb_back\ndes_gang_wag_bomb_front\ndes_gang_wag_bomb_side\ndes_gang_wag_rho_ne\ndes_gang_wagon_back\ndes_gang_wagon_front\ndes_gang_wagon_rhodes_ne\ndes_gang_wagon_side\ndes_grh_outhouse\ndes_gry1_still\ndes_gua1_ship_lurches\ndes_gua3_cannon\ndes_gua3_cannon_exp\ndes_gua3_cannon_exp_ig\ndes_gua3_cannon_exp_var1\ndes_gua3_window_jump\ndes_guarma3_tower_exp\ndes_guarma3_wall_exp\ndes_mg_poker_table\ndes_mob1_fence\ndes_mob3_trolley\ndes_nbd1_bankwall\ndes_nbd1_bankwall_int\ndes_nts1_boat_chain\ndes_nts1_chain_exp\ndes_ntv3_fort\ndes_ntv3_rail_break\ndes_ntvs2_treefall\ndes_ntvs2_treefall_top\ndes_re_wagon_crash_front\ndes_rho_bankwall\ndes_rho_sheriff\ndes_rho_sheriff_start\ndes_safe_lrg_l_fail\ndes_safe_lrg_l_succeed\ndes_safe_lrg_r_fail\ndes_safe_lrg_r_succeed\ndes_safe_med_l_fail\ndes_safe_med_l_succeed\ndes_safe_med_r_fail\ndes_safe_med_r_succeed\ndes_safe_sml_l_fail\ndes_safe_sml_l_succeed\ndes_safe_sml_r_fail\ndes_safe_sml_r_succeed\ndes_smg2_fortwall\ndes_str_jail\ndes_str_jail_exp\ndes_trap_gua01x\ndes_trap_roa02x\ndes_trap_roa0a01x\ndes_trap_roa0b01x\ndes_tree_fall_neutral\ndes_treefall_accident\ndes_treefall_down15\ndes_treefall_flat\ndes_treefall_up15\ndes_trn3_bridge\ndes_trn4_train_crash\ndes_trn4_train_derail\ndes_utp2_rvrbed\ndes_utp2_treefall\ndes_val_sheriff\ndes_wagon_bomb_start\ndes_wnt1_cabin_collapse\n```\nhttps://cdn.discordapp.com/attachments/982398135496212530/1053482851816976404/2022-12-15_12-13-22_Trim.mp4\nhttps://cdn.discordapp.com/attachments/982398135496212530/1053482853016555650/2022-12-15_19-39-06_Trim.mp4\nhttps://cdn.discordapp.com/attachments/982398135496212530/1053482854421631067/2022-12-15_18-59-04_Trim.mp4\nhttps://cdn.discordapp.com/attachments/982398135496212530/1053482856590094488/2022-12-15_15-47-19_Trim.mp4",
"timestamp": "2022-12-27T23:52:24.465+01:00"
},
{
"id": "1077169653895401502",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ktos93",
"author_id": "769650352181084170",
"content": "Looks like whole weapon modding stuff is here 😛 \nhttps://pastebin.com/aF3EjiHk",
"timestamp": "2023-02-20T11:07:38.333+01:00"
},
{
"id": "1085736755719843850",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "Here's a further refined/documented weapon inspection from @r4venw 🤠\nhttps://pastebin.com/z1BUCLCi",
"timestamp": "2023-03-16T02:30:14.577+01:00"
},
{
"id": "1094178936050679839",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "Here are most of the `MetaPedExpressions` (face and body features) for use with `_SET_CHAR_EXPRESSION` (`0x5653AB26C82938CF`). Unfortunately none of the horse expressions seem to sync across the network (except gender when re-entering scope w/ OneSync at least). Human expressions should sync within `-1.0` - `1.0` (though it *may* sync a little bit beyond and should be further researched) and there are several new facial/body features identified. \n\nCredit to Disquse and Ktos as well.\nhttps://pastebin.com/Ld76cAn7",
"timestamp": "2023-04-08T10:36:27.216+02:00"
},
{
"id": "1096873475571990629",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "```c\n//0x986F7A51EE3E1F92\nvoid _REGISTER_PED_CINEMATIC_KILL_CAM_SHOT (Ped ped, bool forceKillCam);\n\n/*\nUsed to enable headshot kill replay when you headshot set ped.\n\nfrom t3chman: Can confirm, it does still register the kill cam with some lesser probability of triggering if p1 is false/0. No headshot association still that I can tell. So p1 seems to be something like forceKillCam. The native name will be between _REACTIVATE_* and _REGISTER_* and it seems R* uses the terminology kill shot / kill cam associated with the cinematic camera.\n*/\n```",
"timestamp": "2023-04-15T21:03:35.5+02:00"
},
{
"id": "1120254158495289394",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "t3chman",
"author_id": "463930964587053066",
"content": "Same weapon dual wielding from grumpypoo: https://pastebin.com/zyUntnUd\n\nYou will also need the inventory items referenced in the original script from Disquse here: https://discord.com/channels/192358910387159041/643437867044962304/990322510362992660\n\nNeed DataView and the following:\n```lua\nlocal function getGuidFromItemId(inventoryId, itemData, category, slotId)\n local outItem = DataView.ArrayBuffer(8 * 13)\n local success = Citizen.InvokeNative(0x886DFD3E185C8A89, inventoryId, itemData and itemData or 0, category, slotId, outItem:Buffer())\n return success and outItem or nil\nend\n\nlocal function moveInventoryItem(inventoryId, old, new, slot)\n local outGUID = DataView.ArrayBuffer(8 * 13)\n if not slot then slot = 1 end\n local sHash = \"SLOTID_WEAPON_\"..tostring(slot)\n local success = Citizen.InvokeNative(0xDCCAA7C3BFD88862, inventoryId, old, new, GetHashKey(sHash), 1, outGUID:Buffer())\n return success and outGUID or nil\nend\n```",
"timestamp": "2023-06-19T09:30:04.701+02:00"
},
{
"id": "1123562172233043968",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "_aric",
"author_id": "196019821480116224",
"content": "```c\n//0x1BC47A9DEDC8DF5D\nvoid OBJECT::_DOOR_SYSTEM_SET_AUTOMATIC_STATE(Hash doorHash, int state)\n\n/*\nSets if the door closes automatically or hangs up\nstate: 0 is used to turn on and 1 is used to disable\n\nwas called after:\nDOOR_SYSTEM_SET_OPEN_RATIO\nDOOR_SYSTEM_SET_AUTOMATIC_DISTANCE\nDOOR_SYSTEM_SET_AUTOMATIC_RATE\n*/\n```",
"timestamp": "2023-06-28T12:34:56.636+02:00"
},
{
"id": "1152545743563927553",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "chatdisabled",
"author_id": "273852112767680523",
"content": "Since I haven't seen anyone talk about `RegisterInteractionLockonPrompt` | `0x870708A6E147A9AD`.\n\nYou'll first need to make the entity `SetObjectTargettableFocus` before using the native above. Personally I still haven't figured out how to pass an actual prompt into `RegisterInteractionLockonPrompt` itself. This is why I use this method to apply a prompt to the entity.\n\n```lua\nlocal promptGroup = PromptGetGroupIdForTargetEntity(entity)\nlocal prompt = PromptRegisterBegin()\nPromptSetControlAction(prompt, 0x41AC83D1)\nlocal promptString = CreateVarString(10, 'LITERAL_STRING', 'Play')\nPromptSetText(prompt, promptString)\nPromptSetGroup(prompt, promptGroup)\nPromptRegisterEnd(prompt)\n```\n\nThe end result will be the video below. As you can notice if you look away the prompt goes away, but if you use 260 in the flag param the prompt will always display if you are in the radius of the entity. And don't forget to `UnregisterInteractionLockonPrompt`!",
"timestamp": "2023-09-16T12:05:18.53+02:00"
},
{
"id": "1178297888170840177",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "chatdisabled",
"author_id": "273852112767680523",
"content": "### ** TLDR**: A complete guide regarding prompts\n- Context prompts activate automatically based on the player position.\n- Ambient groups can group with other ambient groups (like when looting mulitple enemies). They (kinda) activate automatically based on the player position and can be attached to entities or volumes.\n- Interaction Lockon Prompts (ILOs) allow you to focus on entities.\n- Prompts are ordered based on their controls, but that can be customized that with `_UI_PROMPT_SET_ORDERING_AS_INPUT_TYPE`\n\nComplete research done by @umaruru\n<https://gist.github.com/umaruru/1cdbfc302dda20d8c5601f0ce8f0e03c>\n\nFor discord's indexing sake I'll put some native hashes below\n_SET_PED_PROMPT_NAME SetPedPromptName 0x4A48B6E03BABB4AC\n0xAEE6C800E124CFE1\n_UI_PROMPT_SET_ORDERING_AS_INPUT_TYPE UiPromptSetOrderingAsInputType 0x2F385ECC5200938D\n_UI_PROMPT_CONTEXT_SET_POINT UiPromptContextSetPoint 0xAE84C5EE2C384FB3\n_UI_PROMPT_SET_AMBIENT_GROUP_THIS_FRAME UiPromptSetAmbientGroupThisFrame 0x315C81D760609108",
"timestamp": "2023-11-26T12:35:08.256+01:00"
},
{
"id": "1222968001784184914",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ilumen",
"author_id": "1016438644355104900",
"content": "**Show interior mappings on radar. **\n\nBeen wondering for a while how to show the details of each interior on the radar but for whatever reason their didn't seem to be much documentation for such a simple thing. All you need to do is use 2 natives, ``SetRadarConfigType(configHash --[[ Hash ]], p1 --[[ Hash ]])`` and ``GetInteriorFromEntity(entity --[[Entity]])``. \n\n``GetInteriorFromEntity`` is served as checking if your ped is in an interior or not, while ``SetRadarConfigType`` sets how much the radar gets zoomed in by. In the example below, the radar gets zoomed in by 10x no matter what interior is entered. There is more research on this native available [here](https://github.com/femga/rdr3_discoveries/blob/master/graphics/minimap/radar/radar_configs.lua). \n\nThere is probably a more efficient way of doing this somehow, but this is just a basic example below.\n\n```lua\nCitizen.CreateThread(function()\n while true do\n Citizen.Wait(500) \n\n local playerPed = PlayerPedId()\n local interiorId = GetInteriorFromEntity(playerPed)\n\n if interiorId ~= 0 then\n -- ped entered an interior\n SetRadarConfigType(0xDF5DB58C, 0) -- zoom in the map by 10x\n else\n -- ped left an interior\n SetRadarConfigType(0x25B517BF, 0) -- zoom in the map by 0x (return the minimap back to normal)\n end\n end\nend)\n```",
"timestamp": "2024-03-28T18:58:13.272+01:00"
},
{
"id": "1242088999951270000",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "dev_mate",
"author_id": "596666131033620480",
"content": "Some params @i just stole a kia found:\n```lua\nTaskDismountAnimal(\n rider --[[ Ped ]], \n taskFlag --[[ integer ]], \n leadingAnimation --[[ Any->BOOL ]], -- Plays a horse leading dismount animation when the ped is dismounting instead of the normal dismount animation\n p3 --[[ Any ]], \n p4 --[[ Any ]], \n targetPed --[[ Ped ]]\n)\n\nN_0x250c75eb1728cc0d -> _DETACH_BLIP_FROM_ENTITY -- Removes an entity blip from the respective entity and makes it static, try it on GetMainPlayerBlipId() for a demonstration \n\nAddPropToMinimap(\n minimapProp --[[ Hash ]], \n x --[[ number ]], \n y --[[ number ]], \n rotation --[[ number ]], \n variation --[[ integer ]] some props have different variations and looks (e.g beecher's hope)\n)\n```\nAll credit goes to @i just stole a kia",
"timestamp": "2024-05-20T14:18:14.486+02:00"
},
{
"id": "1249852418556956672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kypos",
"author_id": "710230365305831627",
"content": "If anyone wanted to integrate the \"Show Info\" prompts for animals when you press Q here you go:\nhttps://gist.github.com/freedy69/9a366ff81f2b6a70f0ad7b8c126a7a12\n\nfrom @i just stole a kia",
"timestamp": "2024-06-11T00:27:17.719+02:00"
},
{
"id": "1250847583866322954",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ktos93",
"author_id": "769650352181084170",
"content": "```c++\n//_0xD503D6F0986D58BC\nvoid _SET_OBJECT_PROMPT_NAME_FROM_GXT_ENTRY(Object object, const Hash gxtEntryHash);\n\n//_0xAEE6C800E124CFE1\nvoid _SET_OBJECT_PROMPT_NAME(Object object, const char* name);\n```\nbut im not sure about names",
"timestamp": "2024-06-13T18:21:43.618+02:00"
},
{
"id": "1250852439981166663",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```lua\n---@param cam_speed number camera speed\n---@param enable_slide boolean if true slide will be enable\n---@param slide number positive is right, negative is left\n---@param enable_zoom boolean if true zoom will be enable\n---@param zoom number zoom value positive is zoom in, negative is zoom out\nfunction SetGameplayCamParamsThisUpdate(cam_speed, enable_slide, slide, enable_zoom, zoom)\n Citizen.InvokeNative(0x066167c63111d8cf,cam_speed, enable_slide, slide, enable_zoom, zoom)\nend\n```\n*not an official name* but for what it does, it makes sense?.\n\nit's mostly used when a container is opened and closed\nthere seems to be no boundaries as well on the values parsed.\nbasically it moves the game play cam as you can see in the video",
"timestamp": "2024-06-13T18:41:01.406+02:00"
},
{
"id": "1251719565013155860",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Seen people asking how to disable horse kicking when other's are close to them. *not really research*\n\nIf you hit a horse it won't kick either it will just flee, *only needs to be set once*\n```lua\nSetPedConfigFlag(Horse, 471, true) -- PCF_DisableHorseKick\n```",
"timestamp": "2024-06-16T04:06:40.124+02:00"
},
{
"id": "1252076185517818048",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "This was mentioned once in #redm-scripting by @t3chman \n\n*not really research*\nThought people should know about it so i'm posting it here, this enables the mercy kill on the animals like in Rdr2 you will get a prompt **kill** to *end their suffering* when their are down and can't move anymore this also allows to preserve the pelts quality.\n\n**Note:** just have in mind to update it now and then, because the `PlayerId` *might change*.\n\n```lua\nSetPlayerCanMercyKill(PlayerId(), toggle)\n```",
"timestamp": "2024-06-17T03:43:45.078+02:00"
},
{
"id": "1252400507012644955",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Came across this native that allows you to manipulate Guarma sea\nThe tests I made found what some of the parameters do and are listed below, the rest is in the docs already documented [SetOceanGuarmaWaterQuadrant](https://rdr3natives.github.io/?_0xC63540AEF8384732)\nGuarma sea is pretty wild and with this values you can calm the waters allowing you to use boats there.\nOnly needs to run once and it doesn't matter if the world in Guarma is loaded or not.\n\n```lua\n -- not official param names\n local waveDirection = 0 -- 1 and 2 \n local waveAmount = 1.28 -- amount of waves\n local waveSpeed = 1.86 -- wave animation speed\n SetOceanGuarmaWaterQuadrant(0.1, 50.04, waveDirection, 1.15, waveAmount, -1082130432, waveSpeed, 8.1, 1)\n```",
"timestamp": "2024-06-18T01:12:29.348+02:00"
},
{
"id": "1253323734882717757",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "We were able to convert all .ymt files into readable .xml files using [RageParseData tool](https://github.com/Disquse/RAGEParsedData ) by @Disquse \n\n- think of this as **config files** where you can find for example exact position of shops, missions, exact names of items for shops and so much more\n\n[converted files](https://github.com/outsider31000/rdr2-parseddata)\nConverted by @Black Pegasus",
"timestamp": "2024-06-20T14:21:04.025+02:00"
},
{
"id": "1255254880101335152",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "chatdisabled",
"author_id": "273852112767680523",
"content": "Here is how to create a native UI Countdown with base game methods. Credit: @Nykatas \n\n```lua\nRegisterCommand(\"textCountDown\", function()\n local timer = 10 -- 10 Second timer.\n \n local container = DatabindingAddDataContainerFromPath(\"\", \"MPCountdown\")\n local dataString = DatabindingAddDataString(container, \"Timer\", timer)\n local dataBoolean = DatabindingAddDataBool(container, \"showTimer\", true)\n \n for i = timer, 1, -1 do\n DatabindingWriteDataString(dataString, i)\n Citizen.Wait(1000)\n end\n\n if UiStateMachineExists(190275865) then\n UiStateMachineDestroy(190275865)\n end\n\n if DatabindingIsEntryValid(dataString) then\n DatabindingRemoveDataEntry(dataString)\n end\n\n if DatabindingIsEntryValid(dataBoolean) then\n DatabindingWriteDataBool(dataBoolean, false);\n DatabindingRemoveDataEntry(dataBoolean)\n end\n\n if DatabindingIsEntryValid(container) then\n DatabindingRemoveDataEntry(container)\n end\nend, false)\n```",
"timestamp": "2024-06-25T22:14:44.924+02:00"
},
{
"id": "1257309813558218814",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "returns nearby horse `handle` if param is 1, within a certain range maybe 1 to 3 meters if param is 0 will return `PlayerPedId()` always.\n```lua\n---@param param integer -- 1 for horses 0 for PlayerPedId\n---@return number | boolean -- return entity handle if close enough of mount or false\nfunction IsNearMount(param) -- only works for horses or player peds.\n return Citizen.InvokeNative(0x0501D52D24EA8934, param)\nend\n```\nThis is probably used for the RPGCore ui stuff when you get closer to your horse and the UI shows up to see it's cores.\njust thought I would place it here so people are aware of it.",
"timestamp": "2024-07-01T14:20:19.239+02:00"
},
{
"id": "1257310265641406555",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "I believe this was found by this user @Aaron *correct me if I am wrong*",
"timestamp": "2024-07-01T14:22:07.024+02:00"
},
{
"id": "1257782902297464884",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "You can create passive icon.\n```lua\nlocal passiveIcon = DatabindingAddDataContainerFromPath(\"\",\"PassiveIcon\")\nlocal isVisible = DatabindingAddDataBool(passiveIcon,\"isVisible\",true)\nlocal setState = DatabindingAddDataInt(passiveIcon, \"setState\", 1) -- max 3\n```\nhttps://youtu.be/8JCLtAF_d9E",
"timestamp": "2024-07-02T21:40:12.384+02:00"
},
{
"id": "1257789036081188977",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "I can't image post here. So you can try it.\n```lua\n// 0x7563CBCA99253D1A\nvoid _SET_BLIP_ICON_LOCKON_ENTITY_PROMPT(Entity entity, Hash blipHash);\n\nusage : \nCitizen.InvokeNative(0x7563CBCA99253D1A,entity,GetHashKey(\"blip_mp_war_wagon\"))\n```",
"timestamp": "2024-07-02T22:04:34.792+02:00"
},
{
"id": "1258037080618041476",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "riskyshot",
"author_id": "457435385967017984",
"content": "`Countdown Timer on centre top`\nhttps://pastebin.com/XQuLBM8U\nhttps://imgur.com/a/w5m0yoY\n\nThanks @xK3LY for paste posted in 2021\nIt might be badly written as it's first time working with databinding",
"timestamp": "2024-07-03T14:30:13.218+02:00"
},
{
"id": "1258452870815027271",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thewayshelovesme",
"author_id": "403844073829433344",
"content": "**Ui related stuff:**\n\nAdd handwritten text on Pause Map (If anyone has a list of unhashed strings, please post <3)\nhttps://gist.github.com/freedy69/94f20245ecd17824314e02216f0ae41a\n\nRemove BLIP_NAME from pause map hover and player blip:\n```lua\nlocal mapFocus = DatabindingAddUiItemListFromPath('', 'MapFocus')\nDatabindingAddDataBool(mapFocus, 'ItemHovered', false) -- Hide the BLIP_NAME indicator in pause menu (this is used for bounty prices in rdro)\n\nSetBlipName(GetMainPlayerBlipId(), GetPlayerName(PlayerId())) -- Set our name in pause menu\n```\n\nShow radar configuration prompt when left alt is held:\n```lua\nCreateThread(function()\n while true do\n Wait(0)\n if IsControlPressed(0, `INPUT_SELECT_RADAR_MODE`) then\n UiPromptSetActiveGroupThisFrame(704572841, 'HUD_PAGE_RADAR', 1, 1, 0, 0)\n SetControlContext(5, `UI_RADAR_EDIT_MODE`)\n end\n end\nend)```\n\nSet honor bar and xp bar values (Found in rdr2mods discord, credits to them):\n```lua\n-- weapon wheel xp bar state\nlocal mpRankBar = DatabindingAddDataContainerFromPath(\"\", \"mp_rank_bar\")\nDatabindingAddDataString(mpRankBar, \"rank_header_text\", \"0 / 0\")\nDatabindingAddDataString(mpRankBar, \"rank_text\", \"0\")\nDatabindingAddDataFloat(mpRankBar, \"xp_bar_minimum\", 0.0)\nDatabindingAddDataFloat(mpRankBar, \"xp_bar_maximum\", 100.0)\nDatabindingAddDataFloat(mpRankBar, \"xp_bar_value\", 0.0)\n\n\n-- Honor state\nlocal RPGStatusIcons = DatabindingAddDataContainerFromPath(\"\", \"RPGStatusIcons\")\nlocal honorIcon = DatabindingAddDataContainer(RPGStatusIcons, \"HonorIcon\")\nDatabindingAddDataInt(honorIcon, \"State\", 0) -- 1:lowest honor, 16:highest honor```\n\nWorking location UI with all locations\nhttps://gist.github.com/freedy69/708ceeb16428b6c0298ed3a45c40db78",
"timestamp": "2024-07-04T18:02:25.326+02:00"
},
{
"id": "1259940265842573342",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "the_ricx",
"author_id": "228434349949714442",
"content": "You can find here the map discoveries\nhttps://github.com/femga/rdr3_discoveries/tree/master/graphics/minimap/discoveries",
"timestamp": "2024-07-08T20:32:47.935+02:00"
},
{
"id": "1267792224993935391",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "list of wearable states as strings researched by @spAnser \n[Gist](https://gist.github.com/outsider31000/923539fabb3a99e7cd943466d0f27b37)",
"timestamp": "2024-07-30T12:33:40.879+02:00"
},
{
"id": "1274726046918377553",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c++\n// _0xd7db94ab78e8ebe4\nvoid _DATABINDING_ADD_DATA_CONTAINER_FROM_PATH_BY_HASH(String string, Hash, hash)\n```\n```lua\n \nlocal dbCraftingDatastore = DatabindingAddDataContainerFromPath(\"\", \"CraftingDatastore\")\nlocal dbhCraftingDatastore = N_0xd7db94ab78e8ebe4(\"\", GetHashKey(\"CraftingDatastore\"))\n```",
"timestamp": "2024-08-18T15:46:12.85+02:00"
},
{
"id": "1275434808893378691",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "## Routing Buckets and Object Attachment\n\nIf you create and attach object to Player, while he is in Routing Bucket, this object will stay attached to player during next teleportation into this Routing Bucket.\n\nMoreover, the object will have different entity handle!\n\nFor example:\n\n```lua\n-- server.lua\nRegisterCommand('step1', function(playerId)\n SetPlayerRoutingBucket(playerId, 1)\n TriggerClientEvent('create-prop', playerId)\nend, false)\n\nRegisterCommand('step2', function(playerId)\n SetPlayerRoutingBucket(playerId, 0)\nend, false)\n\nRegisterCommand('step3', function(playerId)\n SetPlayerRoutingBucket(playerId, 1)\nend, false)\n```\n\n```lua\n-- client.lua\nRegisterNetEvent('create-prop', function()\n local playerPed = PlayerPedId()\n local coords = GetEntityCoords(playerPed)\n local modelHash = GetHashKey('prop_sign_parking_1')\n RequestModel(modelHash)\n while not HasModelLoaded(modelHash) do\n Wait(0)\n end\n local object = CreateObject(modelHash, coords.x, coords.y, coords.z, true)\n AttachEntityToEntity(object, playerPed, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 180.0, false, false, false, true, 0, true)\nend)\n```\n\nUsage:\n`/step1` - teleport player into routing bucket 1 and create and attach object to player \n`/step2` - teleport player into routing bucket 0 (see no object, it is left in bucket 1)\n`/step3` - teleport player back into routing bucket 1 (now you can see object and it is still attached to player)",
"timestamp": "2024-08-20T14:42:34.873+02:00"
},
{
"id": "1275437667764408340",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "",
"timestamp": "2024-08-20T14:53:56.481+02:00"
},
{
"id": "1277814821055627264",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0x94E8CA3DEE952789\nint _STRING_SPLIT_AND_COUNT_SEGMENTS(const char* inputString, const char* delimiters); \n// A better name may be preferred.\n/*\nCounts the number of segments in a string that are separated by specified delimiter characters, ignoring consecutive delimiters.\n\nParameters:\n- inputString (const char*): The main string in which segments are counted. This is the text that will be split by the delimiters.\n- delimiters (const char*): A string containing all delimiter characters. These characters define the boundaries of each segment.\n\nReturns:\n- (int): The count of segments that are separated by any of the specified delimiters in the input string, ignoring consecutive delimiters.\n\nUsage:\nThis function is useful for splitting a string into meaningful segments based on multiple delimiters and counting those segments. It is applicable in scenarios such as text parsing, data processing, or configuration handling where structured data needs to be divided into manageable parts.\n\nExample:\nint count = N_0x94e8ca3dee952789(\"qadr_ui-qadr_ui;qadr_ui,qadr_ui.qadr_ui;qadr_ui-\", \"-,;.\"); \n// Returns 6, counts all segments separated by '-', ',', ';', or '.', while ignoring consecutive delimiters.\n\nNotes:\n- The function counts segments only where there is text between delimiters. Consecutive delimiters are ignored, meaning they do not create empty segments.\n- If the input string starts or ends with a delimiter, those are ignored unless they enclose actual text segments.\n*/\n```",
"timestamp": "2024-08-27T04:19:53.991+02:00"
},
{
"id": "1278685025394491504",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "**How to use flow blocks**\n```lua\nlocal flowblock = UiflowblockRequest(flowblockHash)\nrepeat Wait(0) until UiflowblockIsLoaded(flowblock) == 1\n\nUiflowblockEnter(flowblock, flowblockEnteringHash)\n\nif (UiStateMachineExists(statemachineHash) == 0) then\n UiStateMachineCreate(statemachineHash, flowblock)\nend\n```",
"timestamp": "2024-08-29T13:57:46.873+02:00"
},
{
"id": "1278749460058472532",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Since there isn't official documentation for **RedM** *yet*, I was allowed to share the following :\n\n[RedM native Docs](https://rdr3natives.com/)\n\nThese docs are actively maintained and contain the most up-to-date research for **RedM**. If you'd like to contribute, there's a GitHub button at the top of the page be sure to read the `readme.md` for instructions before getting started.\n\nThis could potentially serve as a foundation for future **RedM official documentation**, making it easier to incorporate native declarations as new information becomes available.\n\n-# enjoy the dark mode 😛",
"timestamp": "2024-08-29T18:13:49.294+02:00"
},
{
"id": "1279046917904666677",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "**A cool UI for animal description**\n```lua\nLaunchUiappByHashWithEntry(joaat(\"shop_browsing\"), joaat(\"info_card_entry_point\"))\n\nAddTextEntryByHash(joaat(\"info_card_entry_point_description\"), \"Your description here\") -- (thanks kadir)\n\nlocal infoBoxContainer = DatabindingAddDataContainerFromPath(\"\", \"InfoBox\")\nDatabindingAddDataBool(infoBoxContainer, \"isVisible\", true)\nDatabindingAddDataString(infoBoxContainer, \"itemLabel\", \"Animal Description\")\nDatabindingAddDataHash(infoBoxContainer, joaat(\"info_card_entry_point_description\"))\n```\nhttps://imgur.com/Zg911aq",
"timestamp": "2024-08-30T13:55:48.771+02:00"
},
{
"id": "1283644000179458060",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mikethemadkiwi",
"author_id": "143756107733663744",
"content": "Some folks still asking about UIAPP stuff like Satchel and Horse Inventory. Tuffy's got us.\nhttps://www.rdr2mods.com/forums/topic/2139-addingremoving-items-to-inventory-using-natives/",
"timestamp": "2024-09-12T06:22:58.595+02:00"
},
{
"id": "1284566108313096213",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Was messing with this a bit earlier, did the probe properly line up for you? It endCoords was always slightly offset for me ~~wonder if this expects a certain resolution~~? it doesn't",
"timestamp": "2024-09-14T19:27:06.306+02:00"
},
{
"id": "1284567157216383048",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "```cs\npublic class CursorProbe\n{\n static int m_handle = 0;\n static Vector3 m_gameplayCam = Vector3.Zero;\n static Vector3 m_unk1 = Vector3.Zero;\n\n static Vector3 m_lastPos = Vector3.Zero;\n static bool m_requested = false;\n static int m_lastHitEntity = 0;\n\n public static void OnTick()\n {\n SetMouseCursorThisFrame();\n\n if (!m_requested)\n {\n m_requested = true;\n m_handle = StartShapeTestMouseCursorLosProbe(ref m_gameplayCam, ref m_unk1, -1, PlayerPedId(), 7);\n }\n\n bool hit = false;\n Vector3 endCoords = Vector3.Zero;\n Vector3 normals = Vector3.Zero;\n int entityId = 0;\n\n int result = GetShapeTestResult(m_handle, ref hit, ref endCoords, ref normals, ref entityId);\n\n\n // shape test was non-existent we should re-request\n if (result == 0)\n {\n m_requested = false;\n }\n\n // if we hit anything then update our data\n if (hit)\n {\n m_requested = false;\n m_lastPos = endCoords;\n m_lastHitEntity = entityId;\n }\n\n Vector3 pedPos = GetEntityCoords(PlayerPedId(), false, true);\n\n // scale of the circle sphere\n const float SCALE = 0.25f;\n\n // Draw a marker on the coord that was hit by the probe\n DrawMarker(0x50638AB9, m_lastPos.X, m_lastPos.Y, m_lastPos.Z, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, SCALE, SCALE, SCALE, 250, GetEntityType(m_lastHitEntity) != 0 ? 0 : 250, 100, 250, false, false, 2, false, null, null, false);\n\n // draw a line to the hit pos\n DrawLine(pedPos.X, pedPos.Y, pedPos.Z, m_lastPos.X, m_lastPos.Y, m_lastPos.Z, 255, 255, 0, 255);\n }\n}\n```",
"timestamp": "2024-09-14T19:31:16.384+02:00"
},
{
"id": "1284567231765807194",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Doesn't seem like it, let me try the lua example real quick to see if it shows any different",
"timestamp": "2024-09-14T19:31:34.158+02:00"
},
{
"id": "1284567927860756522",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Vary depending on how close you are to the the screen corners",
"timestamp": "2024-09-14T19:34:20.12+02:00"
},
{
"id": "1284570782101541047",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Seems to work the same in the Lua version, always offset from the mouse cursor\n\n```lua\nCitizen.CreateThread(function()\n local requested = false\n local shapeTestHandle = 0\n local lastCoords = vector3(0)\n local lastEntity = 0\n while true do\n Wait(0)\n SetMouseCursorThisFrame()\n\n if not requested then\n local retval, pVec1, pVec2 = StartShapeTestMouseCursorLosProbe(-1, PlayerPedId(), 7)\n\n shapeTestHandle = retval\n requested = true\n end\n\n local result, wasHit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(shapeTestHandle)\n if result == 0 then\n requested = false\n end\n if wasHit == 1 then\n lastEntity = entityHit\n lastCoords = endCoords\n requested = false\n print(endCoords)\n end\n\n local p = GetEntityCoords(PlayerPedId())\n\n local SCALE = 0.25\n DrawMarker(0x50638AB9, lastCoords.x, lastCoords.y, lastCoords.z, 0, 0, 0, 0, 0, 0, SCALE, SCALE, SCALE, 250, 250,\n 100, 250, 0, 0, 2, 0, 0, 0, 0)\n\n DrawLine(p.x, p.y, p.z, lastCoords.x, lastCoords.y, lastCoords.z, 255, 255, 0, 255);\n end\nend)\n```\n\nChanging the unknown flag doesn't seem to change anything either",
"timestamp": "2024-09-14T19:45:40.624+02:00"
},
{
"id": "1284571051476652054",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Ah this native also exists in GTA",
"timestamp": "2024-09-14T19:46:44.848+02:00"
},
{
"id": "1284572548662825042",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tim.fl",
"author_id": "132485289225617408",
"content": "#redm-scripting ? this is no discussion channel",
"timestamp": "2024-09-14T19:52:41.805+02:00"
},
{
"id": "1284573166156513424",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "This channel's description mentions that it is open for discussions related to research. The code being discussed here is focused on research rather than scripting, so everything is as it should be.",
"timestamp": "2024-09-14T19:55:09.027+02:00"
},
{
"id": "1284574885233819749",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Nope, the entity returned will be the one hit by the raycast still, wonder if this is just broken and whichever scripter in R* used it used it in a similar way that you are (very close to an entity), would probably be better off just using `GET_WORLD_COORD_FROM_SCREEN_COORD` and raycasting from that instead if you need anything at a farther range",
"timestamp": "2024-09-14T20:01:58.887+02:00"
},
{
"id": "1284575795037208688",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "",
"timestamp": "2024-09-14T20:05:35.801+02:00"
},
{
"id": "1284576458924359772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mathu_lmn",
"author_id": "381894752649478144",
"content": "There is no offset in the GTA version tho",
"timestamp": "2024-09-14T20:08:14.084+02:00"
},
{
"id": "1284576703275864137",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mathu_lmn",
"author_id": "381894752649478144",
"content": "so it was made for first person only maybe ?",
"timestamp": "2024-09-14T20:09:12.342+02:00"
},
{
"id": "1284576901733548073",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Might just be specifically related to the gameplay camera?",
"timestamp": "2024-09-14T20:09:59.658+02:00"
},
{
"id": "1284576985355653202",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`local retval, pVec1, pVec2 = StartShapeTestMouseCursorLosProbe(-1, PlayerPedId(), 7)`\n`pVec1` is the gameplay camera coords (or probably \"current camera coords\")",
"timestamp": "2024-09-14T20:10:19.595+02:00"
},
{
"id": "1284578623038292120",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Probably just `ignoreEntity`",
"timestamp": "2024-09-14T20:16:50.049+02:00"
},
{
"id": "1284578732836917430",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "That is how most of the other scripts are set up iirc `int flags, int /* Entity */ entityToIgnore, int options`",
"timestamp": "2024-09-14T20:17:16.227+02:00"
},
{
"id": "1284579149973032971",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mathu_lmn",
"author_id": "381894752649478144",
"content": "If you don't put it, the raycast will intersect with your own ped, and it's not wanted for most cases",
"timestamp": "2024-09-14T20:18:55.68+02:00"
},
{
"id": "1284579547874070528",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mathu_lmn",
"author_id": "381894752649478144",
"content": "That's how it works for other raycast yes",
"timestamp": "2024-09-14T20:20:30.547+02:00"
},
{
"id": "1284579732763185182",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Yea its `ignoreEntity`, using a static camera doesn't seem to change it at all, it will still be offset from the cursor",
"timestamp": "2024-09-14T20:21:14.628+02:00"
},
{
"id": "1290297838646853632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "the_ricx",
"author_id": "228434349949714442",
"content": "Legendary Map with adding animals\n```lua\nlocal animalList = {\n [-317373141] = \"cougar\",\n [-1632720801] = \"cougar2\",\n [2046336256] = \"boar\",\n [2085003676] = \"boar2\",\n [-110898462] = \"buck\",\n [56059597] = \"buck2\",\n [1520433456] = \"fox\",\n [751508871] = \"fox2\",\n [-1047689404] = \"alligator\",\n [-768169834] = \"alligator2\",\n [-617397357] = \"beaver\",\n [413253235] = \"beaver2\",\n [-888046168] = \"wolf\",\n [1499142717] = \"wolf2\",\n [159901881] = \"moose\",\n [-4270809] = \"moose2\",\n [417928156] = \"bison\",\n [-1753771781] = \"bison2\",\n [-1598011864] = \"elk\",\n [-1165067836] = \"elk2\",\n [-2103187059] = \"coyote\",\n [1950895318] = \"coyote2\",\n [-1979107230] = \"panther\",\n [2073533311] = \"panther2\",\n [-708560898] = \"ram\",\n [-1077605376] = \"ram2\",\n [-1005924273] = \"bear\",\n [-1245170742] = \"bear2\",\n}\n\nlocal function LegendaryMap()\n local flowblockHash = -980176693\n local flowblockEnteringHash = -980176693\n local flowblock = UiflowblockRequest(flowblockHash)\n local statemachineHash = 978408792\n repeat Wait(0) until UiflowblockIsLoaded(flowblock) == 1\n UiflowblockEnter(flowblock, flowblockEnteringHash)\n if (UiStateMachineExists(statemachineHash) == 0) then\n UiStateMachineCreate(statemachineHash, flowblock)\n end\n \n if DBD?.a then \n DatabindingRemoveDataEntry(DBD.a)\n end\n DBD = {}\n DBD.a = DatabindingAddDataContainerFromPath(\"\", \"DynamicAnimalMap\")\n local nr = 0\n while (nr < 28) do \n local txt = \"Zone\"..(nr+1)\n local str = GetTextSubstring_2(txt, GetLengthOfLiteralString(txt))\n DBD.b = DatabindingAddDataContainer(DBD.a, str)\n DBD.c = DatabindingAddDataHash(DBD.b, \"animalType\", -317373141)\n DBD.d = DatabindingAddDataBool(DBD.b, \"isVisible\", true)\n nr += 1\n Wait(1)\n end\n TaskItemInteraction(PlayerPedId(), 17745825, 889797228, 1, 0, -1082130432)\nend\n```",
"timestamp": "2024-09-30T15:02:57.308+02:00"
},
{
"id": "1291592467342299176",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "## String or Number? \n### Preventing Mistakes with playerServerId in FiveM/RedM\n\nUsing `GetPlayerFromServerId` without explicitly ensuring that the parameter `playerServerId` is a `number` can lead to issues. For example, if you pass parameter as a `string`, you'll always get a result of `-1`.\n\nIn my opinion, this reflects a design flaw in FiveM/RedM related to the handling of `playerServerId`. In some cases, it's a number, while in others, it's a string. Consider the following examples:\n\n```lua\n-- server.lua\nRegisterNetEvent('testevent', function()\n print(type(source)) -- returns 'number'\nend)\nRegisterNetEvent('testcommand', function(source)\n print(type(source)) -- returns 'number'\nend)\nprint(type(GetPlayers()[1])) -- returns 'string'\n```\n\n```lua\n-- client.lua\nGetPlayerFromServerId(playerServerId) -- expects 'number'\nprint(type(GetPlayerServerId(PlayerId()))) -- returns 'number'\n```\n\nThis inconsistency can easily trip you up, even if you have years of experience with FiveM. For example, I prefer `playerServerId` as a string since it's easier to store in Lua tables and I recently ran into the issue. Let me show you a simple script to illustrate:\n\n```lua\n-- server.lua\nlocal players = {}\nRegisterCommand('say_hello', function(source)\n local playerServerId = tostring(source)\n players[playerServerId] = true\n TriggerClientEvent('say_hello', -1, playerServerId)\nend, true)\n\n-- client.lua\nRegisterNetEvent('say_hello', function(playerServerId)\n local playerId = GetPlayerFromServerId(playerServerId) -- returns -1, because parameter is a 'string'\n local playerPed = GetPlayerPed(playerId) -- returns wrong ped, guess why :)\n print(playerId, playerPed)\nend)\n```\n\nTo avoid this problem, I now always make sure to convert `playerServerId` to a number when it's says so in the documentation:\n```lua\nGetPlayerFromServerId(tonumber(playerServerId))\n```\n\nFiveM Docs: https://docs.fivem.net/natives/?_0x344EA166\nRedM Docs: https://redm.disquse.me/natives/?_0x344EA166",
"timestamp": "2024-10-04T04:47:20.842+02:00"
},
{
"id": "1293208686738538516",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "Databinding path containers list: https://github.com/femga/rdr3_discoveries/tree/master/databindings#databinding-path-containers-list\nUiapps list: https://github.com/femga/rdr3_discoveries/tree/master/databindings/uiapps",
"timestamp": "2024-10-08T15:49:37.574+02:00"
},
{
"id": "1293214708429750364",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "## Hot Reload for scripting in FiveM/RedM\n\nIt's must-have extension for VSCode! No need to manually type `restart/ensure` command during scripts development.\n\nCheck out the video recording how it works and here the link for extension: \nhttps://marketplace.visualstudio.com/items?itemName=AstroDevelopment.fivem-auto-restart",
"timestamp": "2024-10-08T16:13:33.257+02:00"
},
{
"id": "1293466680760078347",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "the_ricx",
"author_id": "228434349949714442",
"content": "Corona Title\nImage: https://i.ibb.co/fkbcdcm/image.png\nModel to create corona object: ```mp001_s_mpcorona01x```\n```lua\nlocal databind = {}\nAddTextEntry(\"CustomGameModeText\", \"Game Mode Text\")\nfunction CoronaTitle()\n local flowblockHash = 41788007\n local flowblockEnteringHash = 1769708826\n local flowblock = UiflowblockRequest(flowblockHash)\n local statemachineHash = -470163491\n repeat Wait(0) until UiflowblockIsLoaded(flowblock) == 1\n UiflowblockEnter(flowblock, flowblockEnteringHash)\n if UiStateMachineExists(statemachineHash) ~= 1 then\n UiStateMachineCreate(statemachineHash, flowblock)\n end\n\n if databind.container then \n DatabindingRemoveDataEntry(databind.container) \n end\n databind.container = DatabindingAddDataContainerFromPath(\"\", \"CoronaTitle\")\n databind.GameModeText = DatabindingAddDataString(databind.container, \"GameModeText\", \"CustomGameModeText\") \n databind.PlayerCountText = DatabindingAddDataString(databind.container, \"PlayerCountText\", \"1/12\") \nend\n```",
"timestamp": "2024-10-09T08:54:48.142+02:00"
},
{
"id": "1294464468977193011",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```lua\n// 0x988C9045531B9FCE\nvoid _SET_PLAYER_PROMPT_SIT_TEXT(int playerID, const char* promptTextKey);\n/*\nSets the sit prompt for a specific player using a predefined text entry.\n\nParameters:\n- playerID (int): The ID of the player for whom the sit prompt will be changed.\n- promptTextKey (const char*): The key of the text that was previously added via AddTextEntry. Or use default rdr strings. Like : \"PLAYER_SIT\"\n\nUsage:\nBefore using this function, you must first add the text using AddTextEntry. This native changes the text of the prompt that appears when the player is prompted to sit.\n\nExample:\nAddTextEntry(\"qadr_ui_sit\", \"Take a seat\");\n_SET_PLAYER_SIT_PROMPT_TEXT(PlayerId(), \"qadr_ui_sit\");\n// First, \"Take a seat\" is registered under the key \"qadr_ui_sit\". Then, the prompt for player to sit uses this text.\n*/\n```\nhttps://imgur.com/gallery/0x988c9045531b9fce-9bTHgkv\n\n```lua\n// 0x06C3DB00B69D5435\nvoid _SET_PLAYER_PROMPT_LEAVE_TEXT(int playerID, const char* promptTextKey);\n/*\nSets the stand prompt for a specific player using a predefined text entry.\n\nParameters:\n- playerID (int): The ID of the player for whom the stand prompt will be changed.\n- promptTextKey (const char*): The key of the text that was previously added via AddTextEntry. Or use default rdr strings. Like : \"LEAVE\"\n\nUsage:\nBefore using this function, you must first add the text using AddTextEntry. This native changes the text of the prompt that appears when the player is prompted to stand up after sitting.\n\nExample:\nAddTextEntry(\"qadr_ui_stand\", \"Get on your feet\");\n_SET_PLAYER_STAND_PROMPT_TEXT(PlayerId(), \"qadr_ui_stand\");\n// First, \"Get on your feet\" is registered under the key \"qadr_ui_stand\". Then, the prompt for player to stand uses this text.\n*/\n```\nhttps://imgur.com/gallery/rdrnative-kscnRlF\n\n```lua\n// 0x0FAF95D71ED67ADE\nvoid _SET_PLAYER_MELEE_PROMPT_TEXT(int playerID, const char* promptTextKey);\n/*\nSets the melee combat prompt for a specific player using a predefined text entry.\n\nParameters:\n- playerID (int): The ID of the player for whom the melee combat prompt will be changed.\n- promptTextKey (const char*): The key of the text that was previously added via AddTextEntry. Or use default rdr strings. Like : \"INTERACT_MELEE\"\n\nUsage:\nBefore using this function, you must first add the text using AddTextEntry. This native changes the text of the prompt that appears when the player is prompted to engage in melee combat.\n\nExample:\nAddTextEntry(\"qadr_ui_melee\", \"Throw a punch\");\n_SET_PLAYER_MELEE_PROMPT_TEXT(3, \"qadr_ui_melee\");\n// First, \"Throw a punch\" is registered under the key \"qadr_ui_melee\". Then, the prompt for player during melee combat uses this text.\n*/\n```\nhttps://imgur.com/gallery/0x0faf95d71ed67ade-GDYsE9L",
"timestamp": "2024-10-12T02:59:39.391+02:00"
},
{
"id": "1294474690898690099",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```lua\n// 0xCE285A4413B00B7F\nvoid _EAGLEEYE_SET_SPRINT_BEHAVIOR(player playerId, bool disableSprint);\n// A better name may be preferred.\n/*\nSets the behavior of sprinting while the \"Eagleeye\" feature is active, determining whether sprinting cancels the effect based on the specified parameter.\n\nParameters:\n- playerId (int): The ID of the player for whom the behavior is being set. This identifies the specific player whose sprinting behavior in Eagleeye mode is to be controlled.\n- disableSprint (bool): A boolean that determines whether sprinting will cancel Eagleeye mode while it is active.\n - true: Sprinting will cancel the Eagleeye effect when active. If the player starts sprinting, the Eagleeye feature will be deactivated.\n - false: Sprinting will not cancel the Eagleeye effect. The player can sprint while keeping the Eagleeye feature active.\n\nUsage:\nThis function is useful for managing gameplay scenarios where the Eagleeye feature is used for scouting or detection, and you want to control whether the player can sprint without losing this ability. It provides a way to fine-tune the balance between movement speed and environmental awareness for different players or scenarios.\n\nExample:\n_EAGLEEYE_SET_SPRINT_BEHAVIOR(PlayerId(), false); \n// Allows the player to sprint without canceling the Eagleeye effect.\n\nNotes:\n- This function can be used to dynamically modify gameplay experience by allowing or restricting sprinting in a specific state (i.e., when Eagleeye is active).\n```",
"timestamp": "2024-10-12T03:40:16.487+02:00"
},
{
"id": "1294843952620634153",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "it seems that this native already had a name \n`_EAGLE_EYE_SET_PLUS_FLAG_DISABLED` not sure who named this.\nmy question is, should the name found before change?\nyour native name seems to be named better.\nbut should we change the name though ? it seems both are guessed names",
"timestamp": "2024-10-13T04:07:35.342+02:00"
},
{
"id": "1294844305671983115",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "and this name `_EAGLE_EYE_SET_PLUS_FLAG_DISABLED` is already added as declared so no need to invoke.",
"timestamp": "2024-10-13T04:08:59.516+02:00"
},
{
"id": "1294844382821879942",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "but your native name sounds better cause it says what it does kinda",
"timestamp": "2024-10-13T04:09:17.91+02:00"
},
{
"id": "1294845488339882098",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "@AvarianKnight what you think of this ? should we keep the old since its already declared?or do we add this name since it's better named ? by add I mean to the docs I have ,just asking for opinion.",
"timestamp": "2024-10-13T04:13:41.486+02:00"
},
{
"id": "1294846052419244033",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x2B12B6FC8B8772AB\nvoid _SET_DEADEYE_ENTITY_AURA_WITH_FLAG(player playerID, int flag);\n// A better name may be preferred.\n/*\nApplies a aura effect to nearby entities when Deadeye is active, based on a flag parameter. This includes humans, animals, vehicles, and horses pulling those vehicles. Additionally, depending on the flag value, the player's appearance may change (e.g., turning gray).\n\nParameters:\n- playerID (int): The ID of the player for whom the aura effect will be applied.\n- flag (int): A flag that determines the behavior of the aura effect.\n- - 2 means people\n- - 4 means animal etc.\n\nUsage:\nThis function is used during Deadeye mode to highlight nearby entities by making them aura, helping the player identify important targets like people, animals, and vehicles.\n\nExample:\n_SET_DEADEYE_ENTITY_AURA_WITH_FLAG(PlayerID(), 3);\n// Applies a aura effect to nearby entities, and the player turns gray when flag is set to 8.\n*/\n```\nVideo : https://discord.com/channels/192358910387159041/755192425974202470/1294845421654642730",
"timestamp": "2024-10-13T04:15:55.973+02:00"
},
{
"id": "1294846283411882066",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Unconfirmed anmes should be changed around at-will to anything that explains what it does better",
"timestamp": "2024-10-13T04:16:51.046+02:00"
},
{
"id": "1294846339032551436",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "I don't think anyone would understand what `_EAGLE_EYE_SET_PLUS_FLAG_DISABLED` would do",
"timestamp": "2024-10-13T04:17:04.307+02:00"
},
{
"id": "1294846648240963605",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah I agree. so i'll add it as old name and add his native name then. *if one day they get to be updated*",
"timestamp": "2024-10-13T04:18:18.028+02:00"
},
{
"id": "1294846966781575229",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Additionally, it was associated with a native PED in the description, but it is related to the PLAYER.",
"timestamp": "2024-10-13T04:19:33.974+02:00"
},
{
"id": "1294847147656745042",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yes in alloc8tr nativeDB was wrong",
"timestamp": "2024-10-13T04:20:17.098+02:00"
},
{
"id": "1294847333959467099",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "although I feel like the native should be called `SET_PLAYER_EAGLEEYE_SPRINT_BEHAVIOUR` since its player type",
"timestamp": "2024-10-13T04:21:01.516+02:00"
},
{
"id": "1294847442365186100",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "or `SET_PLAYER_EAGLEEYE_SPRINT_DISABLE`",
"timestamp": "2024-10-13T04:21:27.362+02:00"
},
{
"id": "1294847847392350240",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "any suggestions ?",
"timestamp": "2024-10-13T04:23:03.928+02:00"
},
{
"id": "1294848819799920721",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Since 'set_player' is not preferred in the naming conventions under the Player namespace for eagleeye, I named it this way. However, if 'set_player' is to be added here, it should be done for all of them.\n```\nEagleEyeSetColor(player --[[ Player ]], p1 --[[ boolean ]])\nEagleEyeSetCustomDistance(entity --[[ Entity ]], distance --[[ number ]])\nEagleEyeSetCustomEntityTint(entity --[[ Entity ]], red --[[ integer ]], green --[[ integer ]], blue --[[ integer ]])\nEagleEyeSetDrainRateModifier(player --[[ Player ]], modifier --[[ number ]])\nEagleEyeSetFocusOnAssociatedClueTrail(player --[[ Player ]], linkedWaypointPed --[[ Entity ]])\nEagleEyeSetPlusFlagDisabled(ped --[[ Ped ]], disabled --[[ boolean ]])\nEagleEyeSetTrackingUpgrade(player --[[ Player ]], p1 --[[ number ]])\nEagleEyeSetTrackingUpgrade_2(player --[[ Player ]], p1 --[[ number ]])\n```",
"timestamp": "2024-10-13T04:26:55.768+02:00"
},
{
"id": "1294848935243812904",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah i noticed they all start with eagleeye",
"timestamp": "2024-10-13T04:27:23.292+02:00"
},
{
"id": "1294849008300195851",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "okay then we add what you addeed fine for me",
"timestamp": "2024-10-13T04:27:40.71+02:00"
},
{
"id": "1294849964689719316",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "if you want you can commit to these here , I have been adding them anyways.\nhttps://discord.com/channels/192358910387159041/643437867044962304/1278749460058472532",
"timestamp": "2024-10-13T04:31:28.731+02:00"
},
{
"id": "1294860257410945045",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x131E294EF60160DF\nvoid _SET_DEADEYE_ENTITY_AURA_INTENSITY_WITH_FLAG(player playerID, float param2, float param3, float param4, float auraIntensity, int flag);\n// A better name may be preferred.\n/*\nApplies a customizable aura effect to nearby entities when Deadeye is active, with control over aura intensity and additional behavior based on a flag parameter.\n\nParameters:\n- playerID (int): The ID of the player for whom the aura effect will be applied.\n- param2 (float): Unknown effect, possibly for color correction\n- param3 (float): Unknown effect, possibly for color correction\n- param4 (float): Unknown effect, possibly for color correction\n- auraIntensity (float): The intensity of the aura effect, with a maximum value of 1.0. Represents how strong the aura appears on nearby entities.\n- flag (int): A flag that determines the behavior of the aura effect and which entities are affected.\n - 2: Applies aura to humans.\n - 4: Applies aura to animals.\n\nUsage:\nThis function is used during Deadeye mode to visually enhance important targets by making them aura. The aura effect helps the player identify entities such as people, animals, and vehicles, providing an advantage during gameplay. The aura intensity can be customized to highlight entities more clearly, while the flag value controls which types of entities are affected.\n\nExample:\n_SET_DEADEYE_ENTITY_AURA_INTENSITY_WITH_FLAG(PlayerID(), 0.0, 0.0, 0.0, 1.0, 8);\n// Applies a maximum intensity aura effect to all nearby entities while Deadeye is active.\n*/\n```\nhttps://imgur.com/gallery/0x131e294ef60160df-zNQ6Pc0",
"timestamp": "2024-10-13T05:12:22.707+02:00"
},
{
"id": "1294975212806344766",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "skyami_",
"author_id": "930606949245026345",
"content": "I’m guessing it sets the plus flag whatever that means",
"timestamp": "2024-10-13T12:49:10.209+02:00"
},
{
"id": "1294976328809971733",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "skyami_",
"author_id": "930606949245026345",
"content": "“with flag” seems too verbose. Just have the flag as a parameter",
"timestamp": "2024-10-13T12:53:36.285+02:00"
},
{
"id": "1295021779068256387",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```lua\n// 0x72AD59F7B7FB6E24\nbool _HAS_PLAYER_DAMAGED_RECENTLY_ATTACKED_PED(player playerID, int unknownValue);\n// A better name may be preferred.\n/*\nChecks if the player has damaged the ped they recently attacked. This function is useful for determining whether the player's most recent attack on a ped resulted in damage.\n\nParameters:\n- playerID (int): The ID of the player whose recent attack is being checked.\n- unknownValue (int): An unknown value, typically set to 4000. The exact meaning of this parameter is unclear, but it is used in the function call.\n\nReturns:\n- bool: Returns true if the player has damaged the ped they recently attacked, otherwise false.\n\nUsage:\nThis function can be used to track if the player has successfully inflicted damage on a ped they attacked recently. It is particularly useful in gameplay mechanics where damage-dealing to specific peds needs to be confirmed, such as for combat checks or mission criteria.\n\nExample:\nif (HAS_PLAYER_DAMAGED_RECENTLY_ATTACKED_PED(PlayerID(), 4000)) {\n // Execute some action if the player has damaged the ped\n}\n\n```",
"timestamp": "2024-10-13T15:54:12.471+02:00"
},
{
"id": "1295025846754738248",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```lua\n// 0x1A6E84F13C952094\nvoid _GET_PEDS_IN_COMBAT_WITH_RECENTLY(player playerID, int unknownValue, any* dataview);\n// A better name may be preferred.\n/*\nFills a data view with a list of peds the player has recently attacked in a combo. This function tracks up to three peds in consecutive attacks and stores their information in the provided data view buffer.\n\nParameters:\n- playerID (int): The ID of the player whose combo attack information is being tracked.\n- unknownValue (int): An unknown value, typically set to 4000. The exact purpose of this parameter is not clear, but it is required for the function call.\n- dataview (any*): A buffer where the combo of recently attacked peds is stored. This can track up to three peds.\n\nUsage:\nThis function is used to track the peds a player has attacked in succession (combo). It fills the provided data view with the ped IDs, storing up to three combos of peds.\n\nExample:\nwhile (true) {\n Wait(300);\n if (Citizen.InvokeNative(0x72AD59F7B7FB6E24, PlayerId(), 4000)) {\n var dataview = DataView.ArrayBuffer(8*25);\n Citizen.InvokeNative(0x1A6E84F13C952094, PlayerId(), 4000, dataview:Buffer());\n var entityCombo1 = dataview:GetInt32(8*1);\n var entityCombo2 = dataview:GetInt32(8*2);\n var entityCombo3 = dataview:GetInt32(8*3);\n }\n}\n*/\n```\nhttps://discord.com/channels/192358910387159041/755192425974202470/1295025754815332412",
"timestamp": "2024-10-13T16:10:22.283+02:00"
},
{
"id": "1295046090495885463",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```lua\n// 0x1DA5C5B0923E1B85\nbool _EAGLE_EYE_CAN_PLAYER_FOCUS_ON_TRACK(player playerID);\n// A better name may be preferred.\n/*\nChecks if the player can focus on tracks while in Eagle Eye mode. Returns true if the player is able to focus on a track, otherwise false.\n\nParameters:\n- playerID (int): The ID of the player whose ability to focus on tracks in Eagle Eye mode is being checked.\n\nReturns:\n- bool: Returns true if the player can focus on tracks in Eagle Eye mode, false otherwise.\n\nUsage:\nThis function is used to determine whether the player can focus on tracks while using Eagle Eye mode. Useful for tracking mechanics related to hunting or following trails.\n\nExample:\nif (_EAGLE_EYE_CAN_PLAYER_FOCUS_ON_TRACK(PlayerId())) {\n // Perform actions when the player is focusing on a track in Eagle Eye mode\n}\n```\nhttps://imgur.com/gallery/0x1da5c5b0923e1b85-M8AyOsu",
"timestamp": "2024-10-13T17:30:48.767+02:00"
},
{
"id": "1295141333534642176",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n\n// 0x27AD7162D3FED01E\nint _GET_NUM_DEADEYE_MARKS_ON_PED(player playerID, ped Ped);\n// A better name may be preferred.\n/*\nRetrieves the number of marks placed on a PED when Deadeye mode is active for the specified player. \n\nParameters:\n- playerID (player): The ID of the player who currently has Deadeye mode active.\n- ped (ped): The ID of the PED (which could be the player or an NPC) whose marks are being counted.\n\nReturns:\n- int: The number of marks on the PED while in Deadeye mode. If Deadeye is not active or there are no marks, it will return 0.\n\nExample:\nint marksCount = GET_NUM_DEADEYE_MARKS_ON_PED(PlayerId(), pedHandle);\nif (marksCount > 0) {\n // Logic for when there are marks on the PED, like enhancing accuracy or special effects\n} else {\n // No marks, possibly disable special abilities or visual indicators\n}\n```\nhttps://imgur.com/gallery/0x27ad7162d3fed01e-XvMXq2d",
"timestamp": "2024-10-13T23:49:16.477+02:00"
},
{
"id": "1295171142889242708",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x330CA55A3647FA1C\nvoid _EAGLE_EYE_SET_HIDE_ALL_TRAILS(player playerID, bool hideTrails);\n// A better name may be preferred.\n/*\nSets whether all trails are hidden during Eagle Eye mode.\n\nParameters:\n- playerID (player): The ID of the player for whom the Eagle Eye setting is being applied.\n- hideTrails (bool): If true, all trails are hidden when Eagle Eye is active; if false, they are shown.\n\nExample:\n// Hide all trails in Eagle Eye mode for the current player\nEAGLE_EYE_SET_HIDE_ALL_TRAILS(PlayerId(), true);\n\n// Show all trails in Eagle Eye mode\nEAGLE_EYE_SET_HIDE_ALL_TRAILS(PlayerId(), false);\n\n```\nhttps://imgur.com/gallery/0x330ca55a3647fa1c-0xa62bbaae67a05bb0-Lpzt2Yi\nhttps://imgur.com/gallery/0x330ca55a3647fa1c-0xa62bbaae67a05bb0-yLA6GBk",
"timestamp": "2024-10-14T01:47:43.581+02:00"
},
{
"id": "1295171596952277072",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xA62BBAAE67A05BB0\nbool _EAGLE_EYE_ARE_ALL_TRAILS_HIDDEN(player playerID);\n// A better name may be preferred.\n/*\nRetrieves whether all trails are currently hidden during Eagle Eye mode for the specified player.\n\nParameters:\n- playerID (player): The ID of the player for whom to check the Eagle Eye setting.\n\nReturns:\n- bool: True if all trails are hidden when Eagle Eye is active; false if they are visible.\n\nUsage:\nThis function checks the current state of trail visibility in Eagle Eye mode. It's useful for conditional logic in scripts or for UI elements that need to reflect this state.\n\nExample:\nif (_EAGLE_EYE_ARE_ALL_TRAILS_HIDDEN(PlayerId())) {\n // Logic for when trails are hidden\n} else {\n // Logic for when trails are visible\n}\n```\nhttps://imgur.com/gallery/0x330ca55a3647fa1c-0xa62bbaae67a05bb0-Lpzt2Yi\nhttps://imgur.com/gallery/0x330ca55a3647fa1c-0xa62bbaae67a05bb0-yLA6GBk",
"timestamp": "2024-10-14T01:49:31.838+02:00"
},
{
"id": "1295179091493912748",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x3813E11A378958A5\nPed _EAGLE_EYE_GET_TRACKED_PED_ID(player playerID);\n// A better name may be preferred.\n/*\nRetrieves the ID of the ped that the specified player is currently tracking while in Eagle Eye mode.\n\nParameters:\n- playerID (player): The ID of the player for whom to retrieve the tracked ped ID.\n\nReturns:\n- Ped ID (int): The ID of the ped being tracked by the player in Eagle Eye mode. If no ped is being tracked, it returns an invalid value.\n\nUsage:\nThis function is useful for identifying which ped the player is currently tracking in Eagle Eye mode. It can be used in scripts for targeted interactions, missions, or gameplay logic.\n\nExample:\nPed trackedPed = _EAGLE_EYE_GET_TRACKED_PED_ID(PlayerId());\nif (trackedPed != -1) {\n // Logic for when a ped is being tracked\n} else {\n // Logic for when no ped is being tracked\n}\n*/\n```\nhttps://imgur.com/gallery/0x3813e11a378958a5-CHoJVRu\nhttps://imgur.com/gallery/0x3813e11a378958a5-reK5IXt",
"timestamp": "2024-10-14T02:19:18.676+02:00"
},
{
"id": "1295184484261429360",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x3946FC742AC305CD\nvoid _ADD_AMBIENT_PLAYER_INTERACTIVE_FOCUS_PRESET(player playerID, ped pedID, string preset, float x, float y, float z, entity targetEntity, string name);\n// A better name may be preferred.\n/*\nAssociates a specific \"interactive focus mode preset\" between a player and a ped, with a specified location and target entity.\n\nParameters:\n- playerID (player): The ID of the player for whom the preset is being applied.\n- pedID (ped): The ped involved in the interaction.\n- preset (string): The name of the \"interactive focus mode preset\" to apply.\n- x \n- y \n- z \n- targetEntity (entity): The entity targeted for the interaction.\n- name (string): Use for clearing focus.\n\nUsage:\nThis function sets up an interactive focus mode between a player and a ped, typically used for scripted interactions or mission logic. It allows the focus to be applied to a specific entity and location.\n\nExample:\n_ADD_PLAYER_INTERACTIVE_FOCUS_PRESET(PlayerId(), targetPed, \"IND1_OFFER_CHAMPL\", 0.0, 0.0, 0.0, 0, \"qadr_\");\n\nTo access all available presets, refer to the file located at:\n`\\update_1.rpf\\common\\data\\interactive_focus_mode_presets.meta`\n*/\n```\nVideo : https://discord.com/channels/192358910387159041/755192425974202470/1295450833902633101",
"timestamp": "2024-10-14T02:40:44.412+02:00"
},
{
"id": "1295306077872586772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "the_ricx",
"author_id": "228434349949714442",
"content": "```\n0x00EB5A760638DB55\n? SET_PLAYER_WEAPON_DRAW_SPEED ?\n```\nParams: PlayerId, WeaponHash, SpeedFloat\n\nExample #1 : https://streamable.com/v1mbxl\n```lua\nCitizen.InvokeNative(0x00EB5A760638DB55, PlayerId(), `WEAPON_REVOLVER_CATTLEMAN`, 0.0)\n```\nExample #2 : https://streamable.com/3j3rmn\n```lua\nCitizen.InvokeNative(0x00EB5A760638DB55, PlayerId(), `WEAPON_REVOLVER_CATTLEMAN`, 10.0)\n```",
"timestamp": "2024-10-14T10:43:54.588+02:00"
},
{
"id": "1295307826415009823",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Maybe `SET_PLAYER_WEAPON_DRAW_SPEED` seems more logical. Holster only means putting the weapon back. However, it also speeds up drawing the weapon.",
"timestamp": "2024-10-14T10:50:51.473+02:00"
},
{
"id": "1295409867430957137",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Could also be `_SET_PLAYER_WEAPON_SWAP_SPEED` since it doesn't seem to be specific to draw/holster",
"timestamp": "2024-10-14T17:36:19.947+02:00"
},
{
"id": "1295411795426672701",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Could 'Swap' be understood as switching between weapons? Considering the importance of drawing speed for cowboys, 'draw speed' seems more comprehensible to me, frankly. But we'll find out how the community better understands it if everyone comments.",
"timestamp": "2024-10-14T17:43:59.617+02:00"
},
{
"id": "1295413116817113183",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "this seems like more of a modifier than a setter the 0.0 isn't that the normal speed ? would be cool if negative numbers worked sadge.",
"timestamp": "2024-10-14T17:49:14.661+02:00"
},
{
"id": "1295450068807057473",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xC67A4910425F11F1\nvoid _DISABLE_PLAYER_INTERACTIVE_FOCUS_PRESET(player playerID, string name);\n// A better name may be preferred.\n/*\nDisables the previously set \"interactive focus mode preset\" for a given player.\n\nParameters:\n- playerID (player): The ID of the player for whom the preset is being disabled.\n- name (string): The name of the \"interactive focus mode preset\" to disable.\n\nUsage:\nThis function is used to disable or clear a previously applied interactive focus mode preset. It can be called when the preset is no longer needed or to reset the focus state of a player.\n\nExample:\n_DISABLE_PLAYER_INTERACTIVE_FOCUS_PRESET(PlayerId(), \"qadr_\");\n\nThis example disables the preset named \"qadr_\" for the current player, effectively removing the previously established interactive focus mode.\n\nRefer to `_ADD_PLAYER_INTERACTIVE_FOCUS_PRESET` to understand how presets are added.\n*/\n```\nVideo : https://discord.com/channels/192358910387159041/755192425974202470/1295450833902633101",
"timestamp": "2024-10-14T20:16:04.702+02:00"
},
{
"id": "1295481550695174207",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "you should be able to post videos here now.",
"timestamp": "2024-10-14T22:21:10.569+02:00"
},
{
"id": "1295772530321264792",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\nvoid _LOAD_CARRIABLE_CONFIG_HASH(Hash carryConfigHash) // load ? request? // _0xFF745B0346E19E2C\nbool _HAS_CARRIABLE_CONFIG_HASH_LOADED(Hash carryConfigHash) // checks if it has been loaded //_0xB8F52A3F84A7CC59\n```\n- example usage\n\n```lua\nRequestCarriableConfigHash(joaat(\"dead_carriable_rabbit\")) --you must invoke it*\nrepeat Wait() until HasCarriableConfigHashLoaded(joaat(\"dead_carriable_rabbit\")) --you must invokeit*\nTaskCarriable(entity,joaat(\"dead_carriable_rabbit\"),carrier,carriableSlot,flags)\n```\n- some config carry strings\n\n```lua\n\n-- dead_carriable_human_never_wake_up\n-- knockedout_hogtied_carriable_human_never_wake_up\n-- knockedout_carriable_human_never_wake_up\n-- knockedout_hogtied_carriable_human\n-- hogtied_ped\n-- dead_carriable_rabbit\n-- mp_moneybag\n-- carriable_inventory_item\n-- arriable_fish_bag\n-- carriable_egg_small\n-- carriable_saddle_bundle\n-- injured_carriable_human\n-- carriable_animal_skin_ml\n-- dead_carriable_human\n-- carriable_pipebag\n-- bait_bag\n-- dead_carriable_deer\n-- carriable_animal_skin_l\n-- dynamite_bundle\n-- large_dynamite_bundle\n-- dead_hogtied_carriable_human\n```",
"timestamp": "2024-10-15T17:37:25.518+02:00"
},
{
"id": "1296435570377097246",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xCBB54CC7FFFFAB86\nvoid _SET_PLAYER_COOPERATE_PROMPT_THIS_FRAME(Player playerID, Ped targetPed, int promptOrder, bool unknownFlag);\n// A better name may be preferred.\n/*\nActivates the \"Surrender\" prompt for the specified player in the current frame.\n\n**Parameters:**\n\n- **playerID** (`Player`): The ID of the player for whom the \"Surrender\" prompt will be activated.\n- **targetPed** (`Ped`): The target pedestrian associated with the surrender action.\n- **promptOrder** (`int`): Represents the order or group of the prompt. A value of `1` adds the prompt to the `targetPed`'s prompt group.\n- **unknownFlag** (`bool`): An unknown boolean flag. Typically `0` (false), but can sometimes be `1` (true). The exact effect is not fully documented.\n\n**Usage:**\n\nThis function is used to display the \"Surrender\" prompt to the player during the current frame. It should be called every frame in which you want the prompt to remain active. It's particularly useful in scenarios where the player has the option to surrender to NPCs, such as law enforcement or enemy factions.\n\n**Notes:**\n\n- **Continuous Activation:** Since this function affects only the current frame, it must be called every frame to keep the \"Surrender\" prompt active.\n- **Prompt Grouping:** Setting `promptOrder` to `1` ties the prompt to the `targetPed`'s prompt group, which may affect how prompts are displayed or prioritized.\n- **Unknown Flag:** The `unknownFlag` parameter's exact behavior is not fully understood. It may control additional internal logic related to the prompt's activation.\n- **Enemy Behavior:** Additionally, it stops enemies who are attacking you from continuing their attack on you.\n\n**Example:**\n// Calm targetPed\nCitizen.InvokeNative(0x3A2A2071DF5CC569,targetPed,PlayerPedId(),2)\n//Register lockon prompt to targetPed\nCitizen.InvokeNative(0x870708A6E147A9AD,targetPed,\"\",10.1,10.1, 0, 0.0, 0.0, 0, false, -1)\n\n// Activate the surrender prompt for the current player towards the targetPed\nwhile true do \n Wait(0)\n Citizen.InvokeNative(0xCBB54CC7FFFFAB86,PlayerId(),targetPed,1, false)\n //_SET_PLAYER_SURRENDER_PROMPT_THIS_FRAME(PlayerId(), targetPed, 1, false);\nend\n```",
"timestamp": "2024-10-17T13:32:06.586+02:00"
},
{
"id": "1296469442120777799",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//0x7563CBCA99253D1A\nvoid _SET_BLIP_ICON_TO_LOCKON_ENTITY_PROMPT(Entity entity, int blipHash);// will add a blip icon to the entity lockon prompt that you specify\n//0x44813684F72B563C\nvoid _CLEAR_BLIP_ICON_FROM_LOCKON_ENTITY_PROMPT(Entity entity, int blipId); // will remove the blip icon from the entity lockon prompt \n//0x97F6F158CC5B5CA2\nvoid _SET_ENTITY_BLIP_ICON_TO_LOCKON_ENTITY_PROMPT(Entity entity, int blipId); // adds the entity blip icon to the sam entity lockon prompt if wrong param will remove the icon if had any \n```\n- example\n\n```lua\nRegisterCommand('addblip', function()\n local horse = Citizen.InvokeNative(0x0501D52D24EA8934, 1, Citizen.ResultAsInteger()) -- horse close to you \n Citizen.InvokeNative(0x7563CBCA99253D1A, horse, joaat(\"blip_horse_owned_bonding_3\")) -- adds a blip icon to the entity prompt \nend, false)\n```",
"timestamp": "2024-10-17T15:46:42.239+02:00"
},
{
"id": "1296476739798827118",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "https://discord.com/channels/192358910387159041/643437867044962304/1257789036081188977\n\nUsing SET instead of ADD seems more logical since we are setting these data rather than adding them.\n```c\n// 0x7563CBCA99253D1A\nvoid _SET_BLIP_ICON_LOCKON_ENTITY_PROMPT(Entity entity, Hash blipHash);\n\nThis one adds a blip to the entity if there is already an existing blip. Therefore:\n\n// 0x97F6F158CC5B5CA2\nvoid _SET_EXISTING_BLIP_LOCKON_ENTITY_PROMPT(Entity entity, int existingBlipId);\n\nThis one seems to perform the deletion:\n\n// 0x44813684F72B563C\nvoid _CLEAR_EXISTING_BLIP_FROM_LOCKON_ENTITY_PROMPT(Entity entity, int existingBlipId);\n```",
"timestamp": "2024-10-17T16:15:42.141+02:00"
},
{
"id": "1296477150278586369",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "from my example, my horse already came with the icon because its owned horse perhaps,and i was trying to follow the same name convention _ADD_BLIP",
"timestamp": "2024-10-17T16:17:20.007+02:00"
},
{
"id": "1296477308038676613",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "",
"timestamp": "2024-10-17T16:17:57.62+02:00"
},
{
"id": "1296478828713082942",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah makes more sense a Set and also like the Lockon as well i will change mine",
"timestamp": "2024-10-17T16:24:00.177+02:00"
},
{
"id": "1296480564253294592",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "okay i think makes more sense now thanks for the suggestions",
"timestamp": "2024-10-17T16:30:53.962+02:00"
},
{
"id": "1296481747025924137",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "I was trying to find if i could do the same but without using entity, just for normal prompts",
"timestamp": "2024-10-17T16:35:35.957+02:00"
},
{
"id": "1296481781926858762",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "that would be neat",
"timestamp": "2024-10-17T16:35:44.278+02:00"
},
{
"id": "1296482456031199313",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Also , It would make more sense to use clear instead of remove because we are not adding anything.",
"timestamp": "2024-10-17T16:38:24.997+02:00"
},
{
"id": "1296482761560817725",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "I think both names make sense",
"timestamp": "2024-10-17T16:39:37.841+02:00"
},
{
"id": "1296483345793810506",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "I looked in the docs and I see remove being used but not clear when it comes to blips, but both makes sense anyways",
"timestamp": "2024-10-17T16:41:57.133+02:00"
},
{
"id": "1296483498189787176",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "I said this to keep it consistent for this list.",
"timestamp": "2024-10-17T16:42:33.467+02:00"
},
{
"id": "1296483626111991888",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah makes sense then",
"timestamp": "2024-10-17T16:43:03.966+02:00"
},
{
"id": "1296483752092106803",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "changed",
"timestamp": "2024-10-17T16:43:34.002+02:00"
},
{
"id": "1296509683313541170",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xBBA140062B15A8AC\nvoid _SPECIAL_ABILITY_SET_ACTIVATE(Player player);\n// A better name may be preferred.\n/*\nActivates the special ability for the specified player.\n\n**Parameters:**\n\n- **player** (`Player`): The player ID for whom the special ability will be activated.\n\n**Example:**\n\n// Activate the special ability for the current player\n_SPECIAL_ABILITY_SET_ACTIVATE(PlayerId());\n```",
"timestamp": "2024-10-17T18:26:36.487+02:00"
},
{
"id": "1296548934990299136",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xCFFC3ECCD7A5CCEB\nvoid _SET_PLAYER_AIM_WEAPON(Player player, Hash weaponHash, int attachSlotId);\n// A better name may be preferred.\n/*\nSets the weapon that the specified player will aim with. The weapon must already be assigned to the PED. This also determines the weapon order, specifying which weapon the player will automatically switch to when the current weapon runs out of ammo.\n\n**Parameters:**\n\n- **player** (`Player`): The player ID for whom the aim weapon will be set.\n- **weaponHash** (`Hash`): The weapon's hash value that the player will aim with.\n- **weaponDrawOrder** (`int`): The slot ID where the weapon is attached.\n\n**Example:**\n\n// Set the player's aim weapon to the specified weapon hash in slot 0\nSET_PLAYER_AIM_WEAPON(PlayerId(), GetHashKey(\"WEAPON_RIFLE_VARMINT\"), 0);\n*/\n```",
"timestamp": "2024-10-17T21:02:34.816+02:00"
},
{
"id": "1296582726392090625",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xACA45DDCEF6071C4\nvoid _SET_PLAYER_CAN_PICKUP_HAT(Player player, bool canPickup);\n// A better name may be preferred.\n/*\nEnables or disables the \"Pick Up\" prompt for a hat on the ground for the specified player. When set to true, the player will see a prompt to pick up the hat if they are near it.\n\n**Parameters:**\n\n- **player** (`Player`): The player ID for whom the prompt will be enabled or disabled.\n- **canPickup** (`bool`): Set to true to enable the \"Pick Up\" prompt for hats, false to disable it.\n\n**Example:**\n\n// Enable the \"Pick Up\" prompt for hats for the current player\n_SET_PLAYER_CAN_PICKUP_HAT(PlayerId(), true);\n*/\n```",
"timestamp": "2024-10-17T23:16:51.314+02:00"
},
{
"id": "1296594003294421094",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x72AD59F7B7FB6E24\nbool _HAS_PLAYER_DAMAGED_ANY_PED_RECENTLY(Player player, int duration);\n```\nthis native checks if the player has damaged or killed any ped human/animal recently within the duration passed, either by shooting or even using melee\n\n- example\n```lua\nlocal hasDamagedPed = Citizen.InvokeNative(0x72AD59F7B7FB6E24, PlayerId(), 8000)\nprint(hasDamagedPed)\n```",
"timestamp": "2024-10-18T00:01:39.937+02:00"
},
{
"id": "1296602588111835236",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xA0C683284DF027C7\nvoid _SET_PLAYER_HAT_ACCESS(Player player, int flag, bool allow);\n// A better name may be preferred.\n/*\nSets the player's ability to wear hats based on the specified flag. The flag value determines whether the player can wear all hats or only the ones they own.\n\nIf the flag is set to 15 and `allow` is true, the player can wear all available hats. However, if you want to restrict the player to wearing only their owned hats (flag 1), you **must first** disable flag 15 by setting it to false, and then set flag 1 to true.\n\n**Parameters:**\n\n- **player** (`Player`): The player ID for whom the hat access will be modified.\n- **flag** (`int`): Determines the type of hat access:\n - 15: Allows the player to wear all hats.\n - 1: Restricts the player to wearing only their owned hats.\n- **allow** (`bool`): Set to true to grant the player the hat access specified by the flag, false to disable it.\n\n**Important:** To restrict the player to owned hats (flag 1), flag 15 must be disabled first by setting it to false. Only then can flag 1 be set to true.\n\n**Example:**\n\n// Allow the player to wear all hats\n_SET_PLAYER_HAT_ACCESS(PLAYER::PLAYER_ID(), 15, true);\n\n// Restrict the player to only wearing owned hats\n_SET_PLAYER_HAT_ACCESS(PLAYER::PLAYER_ID(), 15, false);\n_SET_PLAYER_HAT_ACCESS(PLAYER::PLAYER_ID(), 1, true);\n```",
"timestamp": "2024-10-18T00:35:46.717+02:00"
},
{
"id": "1296610627632107632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n/// 0xD1A70C1E8D1031FE\nvoid _SET_PLAYER_CAN_PICKUP_ABILITY(Player player, bool enable);\n// A better name may be preferred.\n/*\nShows or hides all \"Pick Up\" prompts for the specified player, including the prompt for picking up hats from the ground. When set to true, the player will see \"Pick Up\" prompts for all nearby items. If set to false, all \"Pick Up\" prompts will be hidden.\n\n**Parameters:**\n\n- **player** (`Player`): The player ID for whom the \"Pick Up\" prompt visibility will be modified.\n- **isVisible** (`bool`): Set to true to show all \"Pick Up\" prompts, or false to hide them.\n\n**Example:**\n\n// Show all \"Pick Up\" prompts for the current player, including the hat pickup prompt\n_SET_PLAYER_PICKUP_PROMPT_VISIBLE(PLAYER::PLAYER_ID(), true);\n\n// Hide all \"Pick Up\" prompts for the current player, including the hat pickup prompt\n_SET_PLAYER_PICKUP_PROMPT_VISIBLE(PLAYER::PLAYER_ID(), false);\n```",
"timestamp": "2024-10-18T01:07:43.488+02:00"
},
{
"id": "1296673337543753810",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": ".westernspace",
"author_id": "696486045155590186",
"content": "Full list of carry configs: https://gist.github.com/WesternSpace/95a1f8daf02520cad2bf96af6d957e70\n\nThe full list can be found in `carryconfigdata.meta` in the `CCarryConfigDatas` section.",
"timestamp": "2024-10-18T05:16:54.696+02:00"
},
{
"id": "1296680283944390668",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n// _0x1A6E84F13C952094\nbool _GET_PEDS_DAMAGED_BY_PLAYER_RECENTLY(Player player, int duration, Any* struct)\n\n// it is used to check for that period of time if player damaged any peds\n// only returns the last 3 hits with the entity ids\n// works on animals and humans\n```\n - example \n Note: this is just an example on how you could use it , it doesn't mean that's how you should use it.\n\n```lua\nRegisterCommand(\"test\", function()\n -- this will check the last 10 seconds of hits on entities when called\n local dataView = DataView.ArrayBuffer(8 * 4) -- needs dataview\n local duration = 10000 --(milliseconds)\n local entities = {}\n\n -- Continuously loop to check for new entities over the duration, a good example is: if you are in a fight with alot of peds\n repeat\n Wait(1000)\n Citizen.InvokeNative(0x1A6E84F13C952094, PlayerId(), duration, dataView:Buffer())\n -- gets the last 3 hits every second\n for i = 1, 3 do\n local entityId = dataView:GetInt32(8 * i)\n if entityId ~= 0 and not entities[entityId] then\n entities[entityId] = true -- only add new entities\n end\n end\n duration = duration - 1000 -- reset duration\n until duration <= 0\n\n -- do something with the entities that were hit after the 10 seconds duration?\n for entityId, _ in pairs(entities) do\n if DoesEntityExist(entityId) and IsPedHuman(entityId) then\n if IsPedDeadOrDying(entityId, false) then\n print(\"Ped is dead: \", entityId)\n elseif IsPedInjured(entityId) then\n print(\"Ped is injured: \", entityId)\n elseif IsPedFleeing(entityId) then\n print(\"Ped is fleeing: \", entityId)\n end\n end\n end\n duration = 10000 -- reset\n \n -- simplified version\n -- just get the last 3 hits done on entities for the last 10 seconds\n -- Citizen.InvokeNative(0x1A6E84F13C952094, PlayerId(), 10000, dataView:Buffer())\n -- local entity = dataView:GetInt32(8 * 1)\n -- local entity2 = dataView:GetInt32(8 * 2)\n -- local entity3 = dataView:GetInt32(8 * 3)\n -- print(entity, entity2, entity3)\nend, false)\n```",
"timestamp": "2024-10-18T05:44:30.847+02:00"
},
{
"id": "1296738717372780565",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "My purpose in previously naming this a 'combo' was that it stores consecutive attacks up to a maximum of 3 and returns them.\nhttps://discord.com/channels/192358910387159041/643437867044962304/1295025846754738248",
"timestamp": "2024-10-18T09:36:42.462+02:00"
},
{
"id": "1296755791193182229",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n/// 0x09034479E6E3E269\nvoid _GET_TRAIN_TRACK_INFOS(Vehicle train, Hash &trainTrack, int &junctionIndex);\n// A better name may be preferred.\n/*\nReturns train track infos where the train is like trash hash and nearest junction index.\n\n**Parameters:**\n\n- **train** (`Vehicle`): The train id to get track hash and junction index.\n- **trainTrack** (`Hash`): Citizen.PointerValueInt()\n- **junctionIndex** (`int`): Citizen.PointerValueInt()\n\n**Return values:**\n\n- **trainTrack** (`Hash`): The track hash where the train is\n- **nearestJunctionIndex** (`int`): The junction index where the train is close to\n```",
"timestamp": "2024-10-18T10:44:33.178+02:00"
},
{
"id": "1296763548072017952",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n/// 0x9D21B185ABC2DBC4\nvoid _INVENTORY_GET_CATALOG_ITEM_INSPECTION_EFFECTS_ENTRY(int entryId, char* name, bool unk1, bool unk2);\n// A better name may be preferred.\n/*\nReturns effects entry id of \"CatalogItemInspection\" container.\n\n**Parameters:**\n\n- **entryId** (`int`): The container entryId.\n- **name** (`char`): Always set to \"effects\"\n- **unk1** (`bool`): Unkown usage, always set to false\n- **unk2** (`bool`): Unkown usage, always set to false\n\n**Return values:**\n\n- **entrId** (`int`): The effects entry id.\n\n**Example:**\n\n// Get the entry id for effects\nentryId = _GET_CONTAINER_EFFECTS_ENTRY_ID(itemInspectionContainer, \"effects\", false, false);\n```\n\n```c\n/// 0x9D21B185ABC2DBC5\nvoid _INVENTORY_GET_CATALOG_ITEM_INSPECTION_STATS_ENTRY(int entryId, char* name, int unk1, int playerId);\n// A better name may be preferred.\n/*\nReturns stats entry id of \"CatalogItemInspection\" container.\n\n**Parameters:**\n\n- **entryId** (`int`): The container entryId.\n- **name** (`char`): \"stats\" or \"compareStats\".\n- **unk1** (`int`): Unknown usage, always set to 0.\n- **playerId** (`int`): The player to get the weapon stats from.\n\n**Return values:**\n\n- **entryId** (`int`): The stats entry id.\n\n**Example:**\n\n// Get the entry id for stats\n_GET_CONTAINER_STATS_ENTRY_ID(itemInspectionContainer, \"stats\", 0, playerId);\n\n// Get the entry id for compareStats\n_GET_CONTAINER_STATS_ENTRY_ID(itemInspectionContainer, \"compareStats\", 0, playerId);\n```",
"timestamp": "2024-10-18T11:15:22.562+02:00"
},
{
"id": "1296765596448325632",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n/// 0x75CFAC49301E134E\nvoid _INVENTORY_APPLY_WEAPON_STATS_TO_ENTRY(int entryId, Hash weapon, Ped ped);\n// A better name may be preferred.\n/*\nApply the weapon stats to the \"CatalogItemInspection\" stats entry id.\n\n**Parameters:**\n\n- **entryId** (`int`): The stats entryId.\n- **weapon** (`Hash`): The weapon hash to get stats.\n- **ped** (`Ped`): Ped to get weapon stats from.\n\n**Example:** (only 2 way of use)\n\n// Apply player weapon stats to compare stats.\nentryId = _GET_CONTAINER_STATS_ENTRY_ID(itemInspectionContainer, \"compareStats\", 0, playerId);\n\n_APPLY_PED_WEAPON_STATS_TO_STATS_ENTRY_ID(entryId, joaat(\"WEAPON_RIFLE_BOLTACTION\"), playerPed);\n```",
"timestamp": "2024-10-18T11:23:30.933+02:00"
},
{
"id": "1296799135718047764",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Oh I didn't see you already had them before, I wasted all that time for nothing xD",
"timestamp": "2024-10-18T13:36:47.318+02:00"
},
{
"id": "1296800271636107355",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Well it wasn't for nothing I guess.",
"timestamp": "2024-10-18T13:41:18.142+02:00"
},
{
"id": "1296802026927161468",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "### Threads have been enabled here if you wish to discuss something create a thread",
"timestamp": "2024-10-18T13:48:16.636+02:00"
},
{
"id": "1296860367485403178",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n// _0x9C81338B2E62CE0A\n// namespace is PED\nbool _HAS_PED_BEEN_SHOT_BY_PLAYER_RECENTLY(Player player, int ped, int duration)\n// this native checks if player has shot a specific ped for the duration passed\n// works for human peds and animals\n```",
"timestamp": "2024-10-18T17:40:06.109+02:00"
},
{
"id": "1296877296296399019",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//_0xEA522F991E120D45\n//namespace weapon\nbool _IS_WEAPON_CLOSE_RANGE(int weaponHash)\n// native returns true when it's lasso , melee, thrown , but not all of them?\n// returns false for matchetes and unarmed though ?\n// all guns returns false ,bows and animal wepaons\n```",
"timestamp": "2024-10-18T18:47:22.252+02:00"
},
{
"id": "1296881255715180644",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x58D32261AE0F0843\n// Namespace: PED\nvoid _APPLY_PED_DAMAGE_PACK_TO_BONE(Ped ped, int boneId, float xOffset, float yOffset, float zOffset, float xRot, float yRot, float zRot, const char* damagePack)\n/*\nApply damage pack to a ped bone with offset and rotation.\n*/\n```\nLUA Example\n```lua\nApplyPedDamagePackToBone(PlayerPedId(), 14412, -0.056234, -0.093714, 0.386692, -0.047381, -0.894152, 0.44525, \"PD_Vomit\")\n```\nPreview: https://imgur.com/a/qwEGXEu",
"timestamp": "2024-10-18T19:03:06.251+02:00"
},
{
"id": "1296893046771810439",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x1F8215D0E446F593\n// Namespace: PED\nvoid _APPLY_COLD_TO_PED(Ped ped, float intensity, p2, int)\n/*\nApply cold intensity to ped from 0.0 to 1.0\n*/\n```\nPreview: https://imgur.com/a/QknpK44",
"timestamp": "2024-10-18T19:49:57.458+02:00"
},
{
"id": "1296913373300133909",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x4820A6939D7CEF28\n// Namespace: WEAPON\nvoid _SET_PED_WEAPON_ON_BACK(Ped ped, bool disableAnim)\n/*\nHolster the holded shoulder weapon.\nPrecisions: 0 means with anim while 1 means direct holster\n*/\n```",
"timestamp": "2024-10-18T21:10:43.68+02:00"
},
{
"id": "1296921109899382824",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//_0x9EEFD670F10656D7\n// namespace weapon\nint _GET_WEAPON_HASH_FROM_DEFAULT_PED_WEAPON_COLLECTION(int pedWeaponCollection, int weaponGroupHash)\n// this native gets the weapon hash from the default ped weapon collection (see GetDefaultPedWeaponCollection for more info) will randomly return one of it's weapons\n\n``` \n- example\n\n```lua\nRegisterCommand(\"gethash\", function()\n local pedWeaponCollectionHash = GetDefaultPedWeaponCollection(joaat(\"mp_u_m_m_interrogator_01\"))\n local hash = Citizen.InvokeNative(0x9EEFD670F10656D7, pedWeaponCollectionHash, joaat(\"GROUP_REVOLVER\")) \n if hash and IsWeaponValid(hash) then\n local name = GetWeaponName(hash)\n local label = GetLabelText_2(name)\n print(name, label)\n end\nend, false)\n```\nstrings for weapon groups *might be missing some*\n\n```\n-- GROUP_REVOLVER\n-- GROUP_SHOTGUN\n-- GROUP_UNARMED\n-- GROUP_PISTOL\n-- GROUP_REPEATER\n-- GROUP_RIFLE\n-- GROUP_THROWABLE\n-- GROUP_SNIPER\n-- GROUP_MELEE\n-- GROUP_BOW\n-- GROUP_THROWN\n-- GROUP_LASSO\n-- GROUP_PETROLCAN\n-- GROUP_HEAVY\n-- GROUP_FISHINGROD\n-- GROUP_HELD -- all the weapons kit\n```",
"timestamp": "2024-10-18T21:41:28.229+02:00"
},
{
"id": "1296930703337980026",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x59872EA4CBD11C56\n// Namespace: TASK\nint _GET_COVERPOINT_FROM_ENTITY_WITH_OFFSET(Entity entity, float xOffset, float yOffset, float zOffset, float heading, int p5, int p6, int p7, int p8)\n/*\nReturns the entity coverpoint with offset.\n*/\n```",
"timestamp": "2024-10-18T22:19:35.483+02:00"
},
{
"id": "1296933468978286602",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n// _0xFC3B580C4380B5B7\n// namespace PED\nint _GET_NUM_RESERVED_STAMINA(Ped ped)\n// returns the number of reserved stamina similar to _GET_NUM_RESERVED_HEALTH\n// it is used for _CHANGE_PED_STAMINA just like _GET_NUM_RESERVED_HEALTH is used for _CHANGE_PED_HEALTH\n```\n- example \n\n```lua\nRegisterCommand(\"changeStamina\", function()\n local ped = PlayerPedId()\n local num = Citizen.InvokeNative(0xFC3B580C4380B5B7, ped, Citizen.ResultAsInteger()) -- it returns false instead of 0 so we make sure to return always an int\n print(num)\nend, false)\n```",
"timestamp": "2024-10-18T22:30:34.863+02:00"
},
{
"id": "1296941865589018645",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x34AE85C7CA4857AA\n// Namespace: FIRE\nvoid _ADD_EXPLOSION_WITH_USER_VFX_AND_DAMAGE_CAUSER(Entity entity, BOOL p1, float x, float y, float z, int explosionType, Hash explosionFx, float damageScale, BOOL isAudible, BOOL isInvisible, float cameraShake)\n/*\nAdd explosion with vfx and entity as damage causer.\n*/\n\nentity: damager\np1: unknow\nx: x coords to make explosion\ny: y coords to make explosion\nz: z coords to make explosion\nexplosionType: https://github.com/femga/rdr3_discoveries/blob/master/graphics/explosions/README.md\nexplosionFx: https://github.com/femga/rdr3_discoveries/blob/master/graphics/explosions/explosion_vfxTags.lua\ndamageScale: explosion intensity (from 0.0 to 1.0)\nisAudible: make explosion audible or not\nisInvisible: make explosion invisible\ncameraShake: camera shake intensity 0.0, 0.4, 1065353216...\n```\nLUA Example\n```lua\nAddExplosionWithUserVfxAndDamageCauser(playerPed, false, ped.x, ped.y, ped.z, 25, `exp_sht_flame`, 0.1, true, false, 1065353216)\n```",
"timestamp": "2024-10-18T23:03:56.771+02:00"
},
{
"id": "1296946175538368533",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x46D42883E873C1D7\n// namespace WEAPON\nint _GET_NUM_PEDS_RESTRAINED_FROM_WEAPON_BOLAS(Ped ped)\n// returns the amount of peds that were restrained with the weapon thrown bolas\n// it is used to get the number of peds that were tied with the weapon thrown bolas\n```",
"timestamp": "2024-10-18T23:21:04.343+02:00"
},
{
"id": "1296946888037240914",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xB7DF150605EEDC9B\n// Namespace: FIRE\nvoid _ADD_EXPLOSION_WITH_DAMAGE_CAUSER(Entity entity, BOOL p1, float x, float y, float z, int explosionType, float damageScale, BOOL isAudible, BOOL isInvisible, float cameraShake)\n/*\nAdd explosion with entity as damage causer.\n*/\n\nentity: damager\np1: unknow\nx: x coords to make explosion\ny: y coords to make explosion\nz: z coords to make explosion\nexplosionType: https://github.com/femga/rdr3_discoveries/blob/master/graphics/explosions/README.md\ndamageScale: explosion intensity (from 0.0 to 1.0)\nisAudible: make explosion audible or not\nisInvisible: make explosion invisible\ncameraShake: camera shake intensity 0.0, 0.4, 1065353216...\n```\nLUA Example\n```lua\nAddExplosionWithDamageCauser(playerPed, false, ped.x, ped.y, ped.z, 25, 0.1, true, false, 1065353216)\n```",
"timestamp": "2024-10-18T23:23:54.216+02:00"
},
{
"id": "1296958907587104841",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x01B928CA2E198B01\n// Namespace: MAP\nint _CLEAR_BLIP(Blip blip)\n/*\nClear blip data. It must be used before RemoveBlip().\nI'm pretty sure that blips are handled internally with databinding. This function should then allow you to clear blip container and therefore free up memory.\n*/\n```\nLUA Example\n```lua\nlocal blip = BlipAddForCoords(1664425300, playerCoords.x, playerCoords.y, playerCoords.z)\nSetBlipSprite(blip, `blip_adversary_small`)\nSetBlipName(blip, \"Test\")\n\nWait(5000)\nClearBlip(blip)\nRemoveBlip(blip)\n```",
"timestamp": "2024-10-19T00:11:39.9+02:00"
},
{
"id": "1296965988855709867",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xF47A1EB2A538A3A3\n// Namespace: MAP\nbool _IS_GPS_ACTIVE()\n/*\nReturn whether a GPS marker is set.\n*/\n```\nLUA Example\n```lua\nif (IsGPSActive()) then\n print(\"I have a route set\")\nelse\n print(\"I have no goal in my life...\")\nend\n```",
"timestamp": "2024-10-19T00:39:48.206+02:00"
},
{
"id": "1296976512192614410",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xD48227263E3D06AE\nvoid _ADD_AMBIENT_PLAYER_INTERACTIVE_FOCUS_PRESET_AT_COORDS(player playerID, vector3 coords, string preset, float x, float y, float z, entity targetEntity, string name);\n// Adds an \"interactive focus mode preset\" between a player and a specific set of coordinates with a target entity.\n\n/*\nParameters:\n- playerID (player): The ID of the player for whom the preset is being applied.\n- coords (vector3): The coordinates (X, Y, Z) where the focus will be applied.\n- preset (string): The name of the \"interactive focus mode preset\" to apply.\n- x (float)\n- y (float)\n- z (float)\n- targetEntity (entity): The entity targeted for the interaction.\n- name (string): Typically used for clearing focus or identifying the focus interaction.\n\nUsage:\nThis function sets up an interactive focus mode between a player and a specific set of coordinates (vector3), allowing focus on a specific location or entity. The additional parameters (x, y, z) may be used for internal purposes or adjustments, but their exact use is unclear without more context.\n\nExample:\n_ADD_PLAYER_INTERACTIVE_FOCUS_PRESET_AT_COORDS(PlayerId(),GetEntityCoords(PlayerPedId()),\"ForcedILONoIcon\",0.0,0.0,0.0,PlayerPedId(),\"qadr\");\n\nTo access all available presets, refer to the file located at:\n\\update_1.rpf\\common\\data\\interactive_focus_mode_presets.meta\n\nReleated with : \n0xC67A4910425F11F1\nvoid _DISABLE_PLAYER_INTERACTIVE_FOCUS_PRESET\n*/\n```",
"timestamp": "2024-10-19T01:21:37.165+02:00"
},
{
"id": "1296997873568710717",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```\n// 0x2009F8AB7A5E9D6D\nbool _IS_PLAYER_LOCKED_ON_ENTITY_ON_HORSE(player playerID);\n// Checks if the player has locked onto an entity while on horseback.\n\n/*\nParameters:\n- playerID (player): The ID of the player whose lock-on status is being checked.\n\nReturns:\n- bool: Returns `true` if the player has locked onto an entity while on a horse, otherwise `false`.\n\nUsage:\nThis function is used to determine if the player has an active lock on an entity while riding a horse.\n\nExample:\nif (_IS_PLAYER_LOCKED_ON_ENTITY_ON_HORSE(PlayerId())) {\n // Execute logic when the player is locked onto an entity\n}\n\nThis function checks only the lock-on status and does not trigger any additional behavior.\n*/\n```",
"timestamp": "2024-10-19T02:46:30.114+02:00"
},
{
"id": "1297004477043314730",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "",
"timestamp": "2024-10-19T03:12:44.505+02:00"
},
{
"id": "1297012169816281139",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xDE6C85975F9D4894\nbool _IS_SPECIAL_ABILITY_ENABLED(player playerID);\n// Checks if the player's Deadeye ability is enabled.\n\n/*\nParameters:\n- playerID (player): The ID of the player whose Deadeye ability status is being checked.\n\nReturns:\n- bool: Returns `true` if the player's Deadeye ability is enabled, otherwise `false`.\n\nExample:\nif (_IS_SPECIAL_ABILITY_ENABLED(PlayerId())) {\n // Execute logic when Deadeye is enabled\n}\n\nThis function does not activate or modify the Deadeye ability but simply checks its status.\n*/\n```",
"timestamp": "2024-10-19T03:43:18.605+02:00"
},
{
"id": "1297152626672144396",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x445D7D8EA66E373E\n// Namespace: ENTITY\nint _ATTACH_ENTITY_TO_COORDS_PHYSICALLY(Entity entity, float x, float y, float z, float p4, float p5, float p6, float p7, bool p8, int p9, int p10, int p11, int p12, int p13, int p14);\n/*\nAttach an entity to coordinates physically.\n*/\n```\nLUA Example\n```lua\nAttachEntityToCoordsPhysically(playerPed, x, y, z, 0.0, 0.0, 0.0, -1.0, true, 0, 0, 0, 0, 0, 0)\n```",
"timestamp": "2024-10-19T13:01:26.129+02:00"
},
{
"id": "1297155910619107421",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xEF2D9ED7CE684F08\n// Namespace: ENTITY\nEntity _GET_ENTITY_LOOTING_PED(Entity entity);\n/*\nReturn the entity which is looting the ped. It will return false if no one is looting the ped.\n*/\n```\nLUA Example\n```lua\n Citizen.CreateThread(function()\n while true do\n Citizen.Wait(0)\n\n if (DoesEntityExist(GetEntityLooter(nearestPed))) then\n print(\"Someone is looting the nearest ped!\")\n end\n end\n end)\n```",
"timestamp": "2024-10-19T13:14:29.083+02:00"
},
{
"id": "1297184242459082767",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Started a thread.",
"timestamp": "2024-10-19T15:07:03.92+02:00"
},
{
"id": "1297189386886185025",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Started a thread.",
"timestamp": "2024-10-19T15:27:30.447+02:00"
},
{
"id": "1297221145895899247",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x6ECFC621A168424C\n// Namespace: PLAYER\nvoid _EAGLE_EYE_ADD_PARTICLE_EFFECT_TO_ENTITY(Entity entity, Entity entity2, int p2, int p3);\n/*\nAdd yellow particle to the entity.\n\nentity: entity to apply yellow particles\nentity2: same entity as entity\np2: always 0\np3: always 0\n*/\n```\nLUA Example\n```lua\n-- This will set yellow particles to the nearest ped\nRegisterEagleEyeForEntity(player, nearestPed, false)\nEagleEyeAddParticleEffectToEntity(nearestPed, nearestPed, 0, 0)\n```\nPreview: https://imgur.com/a/cbldo35",
"timestamp": "2024-10-19T17:33:42.385+02:00"
},
{
"id": "1297223544639590531",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xDC5E09D012D759C4\n// Namespace: PLAYER\nvoid _EAGLE_EYE_REMOVE_PARTICLE_EFFECT_FROM_ENTITY(Entity entity, Entity entity2, int p2);\n/*\nRemove yellow particle to the entity.\n\nentity: entity to remove yellow particles\nentity2: same entity as entity\np2: always 0\n*/\n```\nLUA Example\n```lua\n RegisterEagleEyeForEntity(player, nearestPed, false)\n EagleEyeAddParticleEffectToEntity(nearestPed, nearestPed, 0, 0)\n Wait(2000)\n EagleEyeRemoveParticleEffectFromEntity(nearestPed, nearestPed, 0)\n```",
"timestamp": "2024-10-19T17:43:14.29+02:00"
},
{
"id": "1297227724892405868",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-19T17:59:50.94+02:00"
},
{
"id": "1297239886528774216",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "(I need help to name this one)\n```c\n// _0xBC02B3D151D3859F\n// Namespace: PLAYER\nvoid _EAGLE_EYE_SET_ENTITY???(Entity entity, bool enable);\n/*\nEnable/disable a color on the entity in eagle eye mode.\n\nentity: entity to enable/disable the color\nenable: true to enable the color, false to disable\n*/\n```\nLUA Example\n```lua\n RegisterEagleEyeForEntity(player, nearestPed, false)\n EagleEyeSet???(nearestPed, true)\n```\nPreview: https://imgur.com/a/e1ph146",
"timestamp": "2024-10-19T18:48:10.5+02:00"
},
{
"id": "1297245239328637071",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-19T19:09:26.707+02:00"
},
{
"id": "1297252388402495630",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x947E43F544B6AB34\n// Namespace: PED\nbool _HAS_PED_INTERACTED_WITH_PLAYER_RECENTLY(Ped ped, Player player, int interactionFlag, int duration);\n/*\nReturns whether a ped has interacted with a player recently.\n\nped: The ped to check.\nplayer: The player to check.\ninteractionFlag: The type of interaction to check for. [https://github.com/Halen84/RDR3-Native-Flags-And-Enums/tree/main/0x947E43F544B6AB34]\nduration: The time limit of the interaction.\n*/\n```\nLUA Example\n```lua\n-- Shoot the ped and you will see that the function will return true while the interaction date less than 4000 ms.\nCitizen.CreateThread(function()\n while true do\n Citizen.Wait(0)\n print(HasPedInteractedWithPlayerRecently(nearestPed, PlayerId(), 4, 4000))\n end\nend)\n```",
"timestamp": "2024-10-19T19:37:51.179+02:00"
},
{
"id": "1297267079363297402",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "**(Unachieved researches)**\n```c\n// _0x1E017404784AA6A3\n// Namespace: PED\nvoid _0x1E017404784AA6A3(Ped ped, Hash hash);\n/*\nApply hash on ped\n\nped: the ped to set the hash on\nhash: the hash to set on ped\n*/\n```\n```c\n// _0x7C8AA850617651D9\n// Namespace: PED\nbool _0x7C8AA850617651D9(Ped ped, Hash hash);\n/*\nReturns wether 0x1E017404784AA6A3(ped, hash) was applied on the ped.\n\nped: the ped to check\nhash: the hash to check if is set on\n*/\n```\nPossible hash names:\n- MAR2_RIDE1\n- MAR2_RIDE1\n- RBCH1_RIDE1\n- SAD5_RIDE1",
"timestamp": "2024-10-19T20:36:13.777+02:00"
},
{
"id": "1297279305952526449",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-19T21:24:48.823+02:00"
},
{
"id": "1297331993826164829",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xE5D3EB37ABC1EB03\nvoid _EAGLE_EYE_CLEAR_REGISTERED_TRAILS(player playerID);\n// Clears all Eagle Eye trails that were registered for entities associated with the specified player.\n\n/*\nParameters:\n- playerID (player): The ID of the player whose registered Eagle Eye trails will be cleared.\n\nReturns:\n- This function does not return any value.\n\nUsage:\nThis function is used to clear the visual trails that were registered for entities (such as peds) in Eagle Eye mode. These trails are often used to track the movement of entities, and this function removes them for all entities associated with the specified player.\n\nExample:\n_EAGLE_EYE_CLEAR_REGISTERED_TRAILS(PlayerId());\n\nThis function only clears the registered trails.\n*/\n```",
"timestamp": "2024-10-20T00:54:10.591+02:00"
},
{
"id": "1297345946346197062",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xE631EAF35828FA67\nbool _GET_PLAYER_MOUNT_IS_SPRINTING_ON_ROAD(player playerID);\n// Checks if the player is sprinting on a road while riding a horse.\n\n/*\nParameters:\n- playerID (player): The ID of the player whose sprinting status on a road with a horse is being checked.\n\nReturns:\n- bool: Returns `true` if the player is sprinting on a road while riding a horse, otherwise `false`.\n\nUsage:\nThis function checks whether the player is sprinting while on a designated road and riding a horse. It does not return `true` if the player is off-road, such as in hills or other rough terrain.\n\nExample:\nif (_IS_PLAYER_SPRINTING_ON_HORSE_ON_ROAD(PlayerId())) {\n // Execute logic when the player is sprinting on a road with a horse\n}\n\nThis function only checks sprinting status when the player is on a road.\n*/\n```",
"timestamp": "2024-10-20T01:49:37.131+02:00"
},
{
"id": "1297362274675064878",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Started a thread.",
"timestamp": "2024-10-20T02:54:30.108+02:00"
},
{
"id": "1297651803571093645",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "(maybe find a better name as it not work for all)\n```c\n// _0x07E1C35F0078C3F9\n// Namespace: WEAPON\nbool _IS_PED_HOLDING_WEAPON(Ped ped, Hash weaponHash);\n/*\nReturns whether the specified ped is holding a weapon with the given hash.\n\nParameters:\n - ped: The ped to check.\n - weaponHash: The hash of the weapon to check for.\n\nReturn values:\n - TRUE if the ped is holding the weapon, otherwise FALSE.\n*/\n```\nLUA Example\n```lua\nif (IsPedHoldingWeapon(PlayerPedId(), `WEAPON_BOW`)) then\n print(\"Player is holding a bow\")\nend\n```\nPreview: https://imgur.com/a/3BrZSpq\nWorking list:\n- WEAPON_BOW\n- WEAPON_MELEE_TORCH\n- WEAPON_UNARMED",
"timestamp": "2024-10-20T22:04:59.176+02:00"
},
{
"id": "1297665778014879775",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x58425FCA3D3A2D15\n// Namespace: WEAPON\nbool _GET_WEAPON_HAS_MULTIPLE_AMMO_TYPES(Hash weaponHash);\n/*\nReturns whether the weapon has several ammo types.\n\nParameters:\n - weaponHash: The weapon hash.\n\nReturn values:\n - TRUE if the weapon has several ammo types, FALSE otherwise.\n*/\n```\nLUA Example\n```lua\nif (DoesWeaponHaveSeveralAmmoTypes(`weapon_melee_hatchet_hewing`)) then\n print(\"weapon_melee_hatchet_hewing has several ammo types\")\nelse\n print(\"weapon_melee_hatchet_hewing does not have several ammo types\")\nend\n```\nPreview: https://imgur.com/a/fCaPJ1x",
"timestamp": "2024-10-20T23:00:30.943+02:00"
},
{
"id": "1297668190238806089",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Started a thread.",
"timestamp": "2024-10-20T23:10:06.062+02:00"
},
{
"id": "1297672673459048502",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-20T23:27:54.945+02:00"
},
{
"id": "1297674405719179325",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "**I have a problem naming this one** since there is an existant `int _GET_WEAPON_ATTACH_POINT(Ped ped, int attachPoint);`\n```c\n// _0x65DC4AC5B96614CB\n// Namespace: WEAPON\nint _GET_DEFAULT_WEAPON_ATTACH_POINT(Hash weaponHash)\n/*\nReturns the attachpoint for a weapon hash. (returns -1 for melee as they can't be attached)\n\nParameters:\n - weaponHash: The weapon hash.\n\nReturn values:\n - attachpoint: The attachpoint for the weapon hash.\n*/\n```\nLUA Example\n```lua\nlocal attachPoint = GetWeaponAttachPoint(`WEAPON_REVOLVER_CATTLEMAN`)\n```\nPreview: https://imgur.com/a/mUE5fug",
"timestamp": "2024-10-20T23:34:47.948+02:00"
},
{
"id": "1297699386888949811",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x95CA12E2C68043E5\n// Namespace: WEAPON\nbool DOES_PED_HAVE_RIFLE(Ped ped, int p1);\n/*\nReturns whether the ped has a rifle.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a rifle, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasRifle = DoesPedHaveRifle(PlayerPedId(), 0)\nif (hasRifle) then\n print(\"Player has a rifle on him\")\nelse\n print(\"Player does not have a rifle\")\nend\n``` \n\n```c\n// _0x80BB243789008A82\n// Namespace: WEAPON\nbool DOES_PED_HAVE_SNIPER(Ped ped, int p1);\n/*\nReturns whether the ped has a sniper.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a sniper, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasSniper = DoesPedHaveSniper(PlayerPedId(), 0)\nif (hasSniper) then\n print(\"Player has a sniper on him\")\nelse\n print(\"Player does not have a sniper\")\nend\n```\n\n```c\n// _0x495A04CAEC263AF8\n// Namespace: WEAPON\nbool DOES_PED_HAVE_REPEATER(Ped ped, int p1);\n/*\nReturns whether the ped has a repeater.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a repeater, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasRepeater = DoesPedHaveRepeater(PlayerPedId(), 0)\nif (hasRepeater) then\n print(\"Player has a repeater on him\")\nelse\n print(\"Player does not have a repeater\")\nend\n```\n\n```c\n// _0xABC18A28BAD4B46F\n// Namespace: WEAPON\nbool DOES_PED_HAVE_SHOTGUN(Ped ped, int p1);\n/*\nReturns whether the ped has a shotgun.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a shotgun, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasShotgun = DoesPedHaveShotgun(PlayerPedId(), 0)\nif (hasShotgun) then\n print(\"Player has a shotgun on him\")\nelse\n print(\"Player does not have a shotgun\")\nend\n```",
"timestamp": "2024-10-21T01:14:03.923+02:00"
},
{
"id": "1297699575561322598",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x5B235F24472F2C3B\n// Namespace: WEAPON\nbool DOES_PED_HAVE_REVOLVER(Ped ped, int p1);\n/*\nReturns whether the ped has a revolver.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a revolver, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasRevolver = DoesPedHaveRevolver(PlayerPedId(), 0)\nif (hasRevolver) then\n print(\"Player has a revolver on him\")\nelse\n print(\"Player does not have a revolver\")\nend\n```\n\n```c\n// _0xBFCA7AFABF9D7967\n// Namespace: WEAPON\nbool DOES_PED_HAVE_PISTOL(Ped ped, int p1);\n/*\nReturns whether the ped has a pistol.\n\nParameters:\n - ped: The ped to check.\n - p1: 0 or 1.\n\nReturn values:\n - true if the ped has a pistol, false otherwise.\n*/\n```\nLUA Example\n```lua\nlocal hasPistol = DoesPedHavePistol(PlayerPedId(), 0)\nif (hasPistol) then\n print(\"Player has a pistol on him\")\nelse\n print(\"Player does not have a pistol\")\nend\n```\n\nPreview: https://imgur.com/a/U8Q04Xu",
"timestamp": "2024-10-21T01:14:48.906+02:00"
},
{
"id": "1299067703801413683",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//0xA4454592DCF7C992\n//namespace FIRE\nbool _IS_ENTITY_DAMAGED_BY_FIRE(Entity entity)\n// this natives only returns true if entity is damaged by fire at this moment, once damages caused to entity by fire (like burned appearance) has cleared (they clear over time) then returns false\n```",
"timestamp": "2024-10-24T19:51:16.097+02:00"
},
{
"id": "1299085051320991774",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//_0x559FC1D310813031\n//namespace FIRE\nbool _GET_IS_FIRE_AT_VOLUME_POS(float posx ,float posy, float posz, float volumePosx, float volumePosy, float volumePosz, float volumeRotx, float volumeRoty, float volumeRotz )\n// native name might not be accurate but the parameteres are correct\n// is fire in volume \n// the vector seems to be from player or fire coords and this native is only used once in the decompiles? \n```",
"timestamp": "2024-10-24T21:00:12.068+02:00"
},
{
"id": "1299260751449686111",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-25T08:38:22.243+02:00"
},
{
"id": "1299851743911350332",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xE910932F4B30BE23\nvoid _RESET_DEADEYE_AURA_EFFECT(player playerID);\n/*\nResets any aura effects applied to entities for a specific player in Deadeye mode, returning all aura-related visuals to their default state. This function is primarily used to remove any highlighting or aura effects set by `_SET_DEADEYE_ENTITY_AURA_WITH_FLAG - 0x2B12B6FC8B8772AB` and `_SET_DEADEYE_ENTITY_AURA_INTENSITY_WITH_FLAG - 0x131E294EF60160DF`.\n\nParameters:\n- playerID (int): The ID of the player for whom the aura effect will be reset.\n\nExample:\n_RESET_DEADEYE_AURA_EFFECT(PlayerID());\n// Resets all aura effects and intensity changes for the player, removing entity highlights and restoring default visuals after Deadeye.\n*/```",
"timestamp": "2024-10-26T23:46:45.826+02:00"
},
{
"id": "1299857646786183188",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x0E9057A9DA78D0F8\nvoid _CLEAR_DEADEYE_AURA_INTENSITY_WITH_FLAG(player playerID, int Flag);\n/*\nClears the intensity of aura effects applied to entities for a specific player in Deadeye mode based on a flag parameter. This function is used to reset any intensity modifications set by `_SET_DEADEYE_ENTITY_AURA_INTENSITY_WITH_FLAG - 0x131E294EF60160DF`, restoring affected entities' aura intensity to their default state.\n\nParameters:\n- playerID (Player): The ID of the player for whom the aura intensity will be cleared.\n- Flag (int)\n\nExample:\n_CLEAR_DEADEYE_AURA_INTENSITY_WITH_FLAG(PlayerID(), int Flag);\n// Clears all aura intensity adjustments for the player based on the specified flag, restoring entities' intensity to default values.\n*/\n```",
"timestamp": "2024-10-27T00:10:13.181+02:00"
},
{
"id": "1299863646389801071",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x768E81AE285A4B67\nvoid _SET_PLAYER_DEAD_EYE_AURA_BY_HASH(player playerID, int auraHash);\n/*\nSets the aura color for entities that the player can target in Deadeye mode, based on a specific hash value. This Native was previously named `SetPlayerStatFlagHash`, but it has been re-evaluated and renamed to better reflect its function in controlling the Deadeye aura color for targeted entities.\n\nParameters:\n- playerID (int): The ID of the player for whom the aura color will be applied.\n- auraHash (int): A hash value that determines the aura color applied to targeted entities in Deadeye mode. Common values observed include:\n - 0: Default aura\n - 1014693585\n - 1936842089\n - 1979474018\n\nExample:\n_SET_PLAYER_DEAD_EYE_AURA_BY_HASH(PlayerID(), 1014693585);\n// Applies an aura color based on the provided hash for entities that the player targets in Deadeye mode.\n*/\n```\n_It was previously unknown what this native was for. It was only named by interpreting decompiled code._",
"timestamp": "2024-10-27T00:34:03.598+02:00"
},
{
"id": "1299867382033940566",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-27T00:48:54.245+02:00"
},
{
"id": "1299868572960555158",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-27T00:53:38.184+02:00"
},
{
"id": "1299868967891894308",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-10-27T00:55:12.343+02:00"
},
{
"id": "1299899543243980810",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xE92261BD28C0878F\nfloat _GET_DEADEYE_ABILITY_DEPLETION_DELAY(player playerID);\n/*\nReturns the depletion delay value for the Deadeye ability that was previously set using `SetDeadeyeAbilityDepletionDelay - 0x870634493CB4372C`. This function provides a float value representing the delay, allowing the game to retrieve the current Deadeye depletion setting for a specific player.\n\nParameters:\n- playerID (int): The ID of the player for whom the Deadeye depletion delay value is being retrieved.\n\nExample:\nfloat depletionDelay = _GET_DEADEYE_ABILITY_DEPLETION_DELAY(PlayerID());\n// Retrieves the Deadeye depletion delay value as a float for the specified player.\n*/\n```",
"timestamp": "2024-10-27T02:56:42.075+02:00"
},
{
"id": "1300132227262451842",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//_0x3CB8859F04763C78\n// namespace MAP\nbool _IS_BLIP_ICON_ON_LOCKON_ENTITY_PROMPT(Entity entity, int blipid)\n// checks if the entity lockon prompt contains an icon\n// it is used to check before removing an icon\n```\nrelated to https://discord.com/channels/192358910387159041/643437867044962304/1296469442120777799",
"timestamp": "2024-10-27T17:21:18.268+01:00"
},
{
"id": "1300134314519953498",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n//_0xBB68D4D3CA3DE402\n// namespace MAP\nvoid _REMOVE_BLIP_ICON_FROM_ENTITY_LOCKON_PROMPT(Entity entity, int integer?)\n// removes the icon from lockon entity prompt?\n// the last param doesnt seem to matter what it is.\n// this native seems to do the same as 0x44813684F72B563C invalid or valid param it always deletes\n// it could be something else and is just deleting because its invalid but in the decompiles this doesnt seem to ever be executed\n// the param needed needs to be above 0 but its always passed as 0 ? \n```\nrelated to https://discord.com/channels/192358910387159041/643437867044962304/1296469442120777799",
"timestamp": "2024-10-27T17:29:35.909+01:00"
},
{
"id": "1303639104671711242",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x1726963E6049DB53\nvoid _SET_ACTIVE_BLIP_ICON_ENTITY_PROMPT_WITHOUT_LOCKON(Entity entity);\n/*\nActivates a blip icon prompt for a specific entity, allowing it to be displayed without requiring a lock-on. This function enables the blip to appear associated with the given entity, making it visible without the need to focus or target the entity directly.\n\nThis native is related to `_SET_BLIP_ICON_LOCKON_ENTITY_PROMPT - 0x7563CBCA99253D1A`, which requires a lock-on for the blip to appear with an entity prompt. However, `_SET_ACTIVE_BLIP_ICON_ENTITY_PROMPT_WITHOUT_LOCKON` removes the need for a lock-on, allowing for direct display.\n\nParameters:\n- entity (Entity): The entity for which the blip icon will be displayed without lock-on.\n\nExample:\n_SET_ACTIVE_BLIP_ICON_ENTITY_PROMPT_WITHOUT_LOCKON(myEntity);\n// Activates the blip prompt for `myEntity`, making it visible without requiring lock-on.\n*/\n```\nRelated: https://discord.com/channels/192358910387159041/643437867044962304/1257789036081188977",
"timestamp": "2024-11-06T09:36:22.997+01:00"
},
{
"id": "1303654381941424151",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x7C9F4CDF402CA82A\nvoid _CLEAR_PAUSEMAP_COORDS();\n/*\nClears the previously set coordinates for the pause map view, removing any specified focal point and radius that were set using `SetPausemapCoordsWithRadius - 0xE0884C184728C75B`. This function resets the map view, allowing it to open with the default coordinates and view instead of a specific target area.\n\nExample:\nCLEAR_PAUSEMAP_COORDS();\n// Clears any previously set coordinates for the pause map view, restoring the default view when the map is opened.\n*/\n```",
"timestamp": "2024-11-06T10:37:05.382+01:00"
},
{
"id": "1303670818449915935",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xF08E42BFA46BDFF8\nvoid _GET_WAYPOINT_POSITION(float* x, float* y);\n/*\nUnlike `GET_WAYPOINT_COORDS - 0x29B30D07C3F7873B`, which returns a single value, this native returns the x and y coordinates of the waypoint separately as floats from pointer. To retrieve each coordinate, `Citizen.PointerValueFloat()` must be used with this function.\n\nThis native allows for separate x and y coordinate values, which need to be stored via pointers. Directly using `Citizen.ResultAsFloat()` will not work; instead, each float must be accessed using `Citizen.PointerValueFloat()`.\n\nParameters:\n- x (float*): Pointer to store the x-coordinate of the waypoint.\n- y (float*): Pointer to store the y-coordinate of the waypoint.\n\nLua Example:\nlocal x,y = _GET_WAYPOINT_POSITION(Citizen.PointerValueFloat(),Citizen.PointerValueFloat())\n*/\n```",
"timestamp": "2024-11-06T11:42:24.151+01:00"
},
{
"id": "1303677747406704651",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xF47A1EB2A538A3A3\nbool _IS_GPS_ROUTE_ON_ROAD()\n/*\nChecks if the GPS route to the waypoint is navigable along a road. If a route exists but there is no valid road path, this function returns false.\n\nUsage : \n_IS_GPS_ROUTE_ON_ROAD()\nReturns:\n- bool: True if the GPS route is on a navigable road, false if no road path exists to the waypoint.\n*/\n```",
"timestamp": "2024-11-06T12:09:56.143+01:00"
},
{
"id": "1304414983152734328",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "nykatas",
"author_id": "688038233401327634",
"content": "```c\n// 0xDC0CB602DEADBA53\n// Namespace: HUD\nvoid _UI_PROMPT_SET_MASH_WITH_RESISTANCE_CAN_FAIL_MODE(Prompt prompt, int mashes, float decreaseSpeed, float startProgress)\n// Sets the mode for the given prompt to mash mode, the native was already discovered but the last two arguments were unclear.\n// For decreaseSpeed, 0.0f will result in the prompt not showing the mash progress at all. 0.01f - ?.0f. At speeds around 7.0f to 8.0f the prompt basically fails immediately if you don't start mashing right away.\n// For startProgress, 0.0f - 1.0f is a percentage value, so 0.5f = 50% progress. Range: 0.0f - 1.0f \n```\n```lua\n-- Lua example:\n_UI_PROMPT_SET_MASH_WITH_RESISTANCE_CAN_FAIL_MODE(prompt, 20, 2.0, 0.0)\n```",
"timestamp": "2024-11-08T12:59:26.842+01:00"
},
{
"id": "1305577135716696130",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T17:57:25.605+01:00"
},
{
"id": "1305628929712853019",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T21:23:14.256+01:00"
},
{
"id": "1305631459884929183",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T21:33:17.496+01:00"
},
{
"id": "1305631886458228952",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T21:34:59.199+01:00"
},
{
"id": "1305632684889997428",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T21:38:09.56+01:00"
},
{
"id": "1305638039636410473",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T21:59:26.231+01:00"
},
{
"id": "1305638996994555915",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-11T22:03:14.483+01:00"
},
{
"id": "1306157871016443981",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2024-11-13T08:25:03.69+01:00"
},
{
"id": "1311088384155844610",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//0x082C043C7AFC3747\nvoid _DISABLE_COMPOSITE_PICK_PROMPT_THIS_FRAME(int composite, bool disable)\n// disables composite Pick prompt\n```",
"timestamp": "2024-11-26T22:57:09.627+01:00"
},
{
"id": "1329236057660719186",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "- updating param names and description for these 2 natives\n```C\n// 0x61E360B7E040D12E\n// go to coords relative to entity wihtout using navmesh, if timeBeforeTeleport is -1 then it never teleports p7 is 1 or 0 still unknown\nvoid TASK_GO_STRAIGHT_TO_COORD_RELATIVE_TO_ENTITY(int Ped, int Entity, float xOffset, float yOffset, float zOffset, int moveBlendRatio, int timeBeforeTeleport, int p7)\n``` \n```C\n// 0xD76B57B44F1E6F8B\n// go to coords wihtout using navmesh, if timeBeforeTeleport is -1 then it never teleports p8 is 1 or 0 still unknown\nvoid TASK_GO_STRAIGHT_TO_COORD(int Ped, float x, float y, float z, int moveBlendRatio, int timeBeforeTeleport, float finalHeading, float targetRadius, int p8)\n```",
"timestamp": "2025-01-16T00:49:32.158+01:00"
},
{
"id": "1329401765380096041",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "# Tips about Teleportation into MLO in @FiveM \n\nImagine a situation, you are using some MLO for your script and want teleport players there, but for some reason sometime your MLO is not loaded on time and all your players fall through the ground/fall from sky.\n\nIt's actually what happened recently with our #👧🏻︱doll-game and we got this issue solved, so I'm pleased to share this knowledge with you. How we did this:\n\n```lua\n-- client.lua\n\n-- Reference for MLO will be stored here\nlocal interiorId = nil\n\nRegisterNetEvent('lumanstudio:teleportToMLO', function(coords)\n print('Teleported to MLO:')\n\n -- Teleport player and freeze him for now\n SetEntityCoordsNoOffset(PlayerPedId(), coords.x, coords.y, coords.z)\n FreezeEntityPosition(PlayerPedId(), true)\n\n -- Store reference for MLO so we unload it when needed \n interiorId = GetInteriorAtCoords(coords.x, coords.y, coords.z)\n\n -- Check if MLO even exists\n if IsValidInterior(interiorId) then\n -- Force MLO loading\n PinInteriorInMemory(interiorId)\n while not IsInteriorReady(interiorId) do\n print('- Waiting for interior loading')\n Wait(0)\n end\n end\n\n -- Also force collision loading around player\n RequestCollisionAtCoord(coords.x, coords.y, coords.z)\n while not HasCollisionLoadedAroundEntity(PlayerPedId()) do\n print('- Waiting for collisions loading around player')\n Wait(0)\n end\n\n -- Unfreeze player\n FreezeEntityPosition(PlayerPedId(), false)\n\n print('- Teleported to MLO')\nend)\n```",
"timestamp": "2025-01-16T11:47:59.957+01:00"
},
{
"id": "1329402934177300561",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "## Memory Management - Continuation from previous post\n\nSo, we did teleported to MLO and everything looks fine, but imagine next situation. Later, after some days or even months we started to notice that our server has some issues with missing textures or other MLO's not loaded in time or some other weird things happening related to 3D assets.\n\nAnd actually, the problem might be related to some of your script, like above. Take a look on it - we loaded there MLO into memory and leaved it there. And even later, when you are already out of MLO, the MLO is still in memory and using it.\n\nSo how do we solve this. You simply *unload it from memory* 😅 Take a look:\n\n```lua\n-- client.lua\n\n-- Teleport out of MLO\nRegisterNetEvent('lumanstudio:teleportOutOfMLO', function(coords)\n print('Teleportation out of MLO:')\n \n -- Teleport player and freeze him for now\n SetEntityCoordsNoOffset(PlayerPedId(), coords.x, coords.y, coords.z)\n FreezeEntityPosition(PlayerPedId(), true)\n \n -- Also force collision loading around player\n RequestCollisionAtCoord(coords.x, coords.y, coords.z)\n while not HasCollisionLoadedAroundEntity(PlayerPedId()) do\n print('- Waiting for collisions loading around player')\n Wait(0)\n end\n\n -- Unfreeze player\n FreezeEntityPosition(PlayerPedId(), false)\n print('- Teleported ot of MLO')\n\n -- Release MLO from memory when teleported out of MLO\n if interiorId ~= nil and IsValidInterior(interiorId) then\n UnpinInterior(interiorId)\n interiorId = nil\n end\nend)\n```",
"timestamp": "2025-01-16T11:52:38.62+01:00"
},
{
"id": "1329405179975565322",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "If you combine these 2 pieces of code - then you have made proper MLO loading/unloading. But, actually, one minor touch additionally can be done - you also likely want to unload MLO when the script stops. It is useful to clean scripts staff when resource stops - this way you always get predicted script behaviour, when you test scripts many times and you want to test it properly.\n\n```lua\n-- client.lua\n\n-- Release MLO from memory when the script stops\nAddEventHandler('onResourceStop', function(res)\n if res == GetCurrentResourceName() then\n if interiorId ~= nil and IsValidInterior(interiorId) then\n UnpinInterior(interiorId)\n end\n end\nend)\n```\n\nThat's all, thanks for reading, I hope for someone it will be useful and if you already knew it or you have some other tips and tricks, let's discuss them in #💬︱chat 🙂",
"timestamp": "2025-01-16T12:01:34.06+01:00"
},
{
"id": "1329573218402570318",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "levraimurphy",
"author_id": "338086345757032460",
"content": "Started a thread.",
"timestamp": "2025-01-16T23:09:17.543+01:00"
},
{
"id": "1329677735693652109",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x669655FFB29EF1A9\n// namespace ENTITY\nvoid _SET_FILL_IN_STATE_FOR_ENTITY(Entity entity, int p1, char* p2, float fill )\n// sets the fill in state for some objects like for the stew, coffee mug ,poker chips, jugs, P1 is either 0 or 2 p2 seems to be a label p3 is the fill in state max seems to be for some 3.0 (most is 1.0) - 0.0\n// not sure about the name\n```\n- here's some of the labels/names found\n```\ntumbler_fill, Canvas, Stew_Fill,CTRL_cupFill, Food_DOF_Fill,\nfrom empty_jug01_Ctrl to empty_jug20_Ctrl, from full_jug01_Ctrl to full_jug20_Ctrl,\nfrom WhiteChip_Ctrl_0 to WhiteChip_Ctrl_10, from BlueChip_Ctrl_0 to BlueChip_Ctrl_10,\nfrom BlackChip_Ctrl_0 to BlackChip_Ctrl_10, from RedChip_Ctrl_0 to RedChip_Ctrl_10, \nfrom Chip01_Ctrl to Chip10_Ctrl,\n```\n- example for stew bowl\n```lua\n -- load objects here\n local bowl = CreateObject(\"P_BOWL04X_STEW\", x, y, z, true, false, false, false)\n local spoon = CreateObject(\"P_SPOON01X\", x, y, z, true, false, false, false)\n\n Citizen.InvokeNative(0x669655FFB29EF1A9, bowl, 0, \"Stew_Fill\", 1.0) -- set the fill in state for entity 1.0 will be full\n Citizen.InvokeNative(0xCAAF2BCCFEF37F77, bowl, 20)\n Citizen.InvokeNative(0xCAAF2BCCFEF37F77, spoon, 82)\n --\n TaskItemInteraction_2(ped, 599184882, bowl, `P_BOWL04X_STEW_PH_L_HAND`, `EAT_STEW_BOWL_BASE`, 3, 0, -1.0)\n TaskItemInteraction_2(ped, 599184882, spoon, `P_SPOON01X_PH_R_HAND`, `EAT_STEW_BOWL_BASE`, 3, 0, -1.0)\n Citizen.InvokeNative(0xB35370D5353995CB, ped, `EAT_STEW_BOWL_BASE`, 1.0) -- _SET_ITEM_INTERACTION_STATE\n\n -- check if interaction is over and delete the objects\n```",
"timestamp": "2025-01-17T06:04:36.407+01:00"
},
{
"id": "1330248743865286736",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x9C409BBC492CB5B1\n// namespace HUD\nint _HUD_WEAPON_WHEEL_GET_SELECTED_ITEM_HASH()\n// not really sure about the name but its time to give a name to the native since its purpose has already been discovered\n// Returns the hash of the currently highlighted item in the weapon wheel if selection have no item or weapon wheel closed returns false\n// feel free to suggest better name\n```",
"timestamp": "2025-01-18T19:53:35.364+01:00"
},
{
"id": "1330257656413425761",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "Started a thread.",
"timestamp": "2025-01-18T20:29:00.281+01:00"
},
{
"id": "1330392938186014813",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//_0x18714953CCED17D3\n//namespace VEHICLE\nbool _ARE_ANY_VEHICLE_WHEELS_DESTROYED(Vehicle ,vehicle)\n// native purose have been found but never given a name\n// tested its purpose and seems to be related to any wheels broken returns true if any wheel is destroyed\n//NOTE: IsVehicleDriveable will still return true even though a wheel is destroy, like vehicles with 4 wheels\n```",
"timestamp": "2025-01-19T05:26:33.969+01:00"
},
{
"id": "1330489729036320840",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "A Herd is initialized with `_CREATE_HERD`.\n```c\n//_0x67A43EA3F6FE0076\n//namespace FLOCK\nvoid CLEAR_HERD(Herd herd);\n//Clear a herd.\n```\n```c\n//_0xE0961AED72642B80\n//namespace FLOCK\nvoid DELETE_HERD(Herd herd);\n//Delete and invalidate a herd.\n```\n```c\n//_0x9E13ACC38BA8F9C3\n//namespace FLOCK\nbool IS_PED_IN_HERD(Herd herd, Ped ped);\n//Return whether the ped is in the herd.\n```\n```c\n//_0x408D1149C5E39C1E\n//namespace FLOCK\nvoid REMOVE_HERD_PED(Herd herd, Ped ped);\n//Remove a ped from a herd.\n```",
"timestamp": "2025-01-19T11:51:10.706+01:00"
},
{
"id": "1336865316415737978",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "- show blip card snippet\n\n```lua\nRegisterCommand(\"blip_card\", function(source, args)\n if IsUiappActiveByHash(joaat(\"Map\")) == 0 then\n LaunchUiappByHash(joaat(\"Map\"))\n repeat Wait(2000) until IsUiappRunningByHash(`Map`) == 1\n end\n\n local rootContainer <const> = DatabindingAddUiItemListFromPath(\"\", \"MapFocus\")\n DatabindingAddDataString(rootContainer, \"Region\", \"\")\n DatabindingAddDataBool(rootContainer, \"ItemHovered\", true)\n DatabindingAddDataString(rootContainer, \"HoveredName\", \"\")\n TextBlockRequest(\"FMMC\")\n\n if DoesStreamedTxdExist(joaat(\"ZONE_ANNESBURG\")) ~= 1 then\n RequestStreamedTxd(joaat(\"ZONE_ANNESBURG\"), false)\n end\n\n -- add your own text\n AddTextEntry(\"HOWDY_01\", \"THIS IS A DESCRIPTION\")\n AddTextEntry(\"HOWDY_02\", \"TITLE\")\n AddTextEntry(\"HOWDY_03\", \"SUB TITLE\")\n\n local blipContainer <const> = DatabindingAddDataContainer(rootContainer, \"BLIP\")\n DatabindingAddDataHash(blipContainer, \"name\", joaat(\"HOWDY_02\")) -- title\n DatabindingAddDataHash(blipContainer, \"description\", joaat(\"HOWDY_01\")) -- description\n DatabindingAddDataHash(blipContainer, \"description_title\", joaat(\"HOWDY_03\")) -- sub title\n\n DatabindingAddDataHash(blipContainer, \"imageTXD\", joaat(\"ZONE_ANNESBURG\")) -- image\n DatabindingAddDataHash(blipContainer, \"imageTX\", joaat(\"ZONE_ANNESBURG\")) -- image\n DatabindingAddDataHash(blipContainer, \"hint_name\", 1544592360)\n DatabindingAddDataString(blipContainer, \"hint_value\", \"\")\n DatabindingInsertUiItemToListFromContextStringAlias(rootContainer, -1, \"map_card_mission\", blipContainer)\n\n -- transition to show info\n RequestUiappTransitionByHash(joaat(\"Map\"), joaat(\"show_info\"))\n\n -- hide instead of delete\n -- RequestUiappTransitionByHash(joaat(\"Map\"), joaat(\"hide_info\"))\n\n repeat Wait(1000) until IsUiappRunningByHash(`Map`) == 0\n\n -- clean up\n DatabindingClearBindingArray(rootContainer)\n DatabindingRemoveDataEntry(blipContainer)\n SetStreamedTxdAsNoLongerNeeded(joaat(\"ZONE_ANNESBURG\"))\nend, false)\n\n```\nstill looking for a way to detect mouse hover over blips, I'm sure it uses Ui peek events but can't find the hash needed",
"timestamp": "2025-02-06T02:05:29.19+01:00"
},
{
"id": "1337018357148418058",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "thetruemido",
"author_id": "231863444880490498",
"content": "You can get all map type but not blip\n\n```ts\nsetTick(() => {\n const iScriptParam_0 = GetHashKey('MAP_MENU');\n if (EventsUiIsPending(iScriptParam_0)) {\n const buffer = new ArrayBuffer(4 * 8);\n const view = new DataView(buffer);\n if (Citizen.invokeNative<boolean>('0xE24E957294241444', iScriptParam_0, view)) { // EventsUiGetMessage\n\n const f0 = view.getUint32(8 * 0, true) >> 0;\n const f1 = view.getUint32(8 * 1, true);\n const f2 = view.getUint32(8 * 2, true) >> 0;\n const f3 = view.getUint32(8 * 3, true);\n\n // BLIP type never tiggered\n let foundMapType = null;\n for (const mapType of ['BLIP', 'ZONE', 'STATE', 'TOWN', 'LAKE', 'RIVER', 'OIL_SPILL', 'SWAMP', 'OCEAN', 'CREEK', 'POND', 'GLACIER', 'DISTRICT', 'TEXT_PRINTED', 'TEXT_WRITTEN']) {\n if (GetHashKey(mapType) == f2) {\n foundMapType = mapType;\n }\n }\n console.log(foundMapType || f2);\n\n let foundEventType = null;\n for (const eventType of ['ITEM_FOCUSED', 'ITEM_UNFOCUSED', 'ITEM_SELECTED']) {\n if (GetHashKey(eventType) == f0) {\n foundEventType = eventType;\n }\n }\n console.log(foundEventType || f0);\n\n console.log(Cfx.Text.getEntry(f1));\n\n EventsUiPopMessage(iScriptParam_0);\n }\n }\n});\n```",
"timestamp": "2025-02-06T12:13:36.944+01:00"
},
{
"id": "1337087149522157652",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "`MAP_MENU` thats what I was looking for thanks.",
"timestamp": "2025-02-06T16:46:58.324+01:00"
},
{
"id": "1338154168690671652",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "tim.fl",
"author_id": "132485289225617408",
"content": "Started a thread.",
"timestamp": "2025-02-09T15:26:55.518+01:00"
},
{
"id": "1338479847877378148",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "# Addition to previous post about MLO loading\n\nRecently we heard about rare bug about MLO loading - happens only when you load into MLO for a first time, next time all good. So what the case:\n\nBasically, the case about `IsInteriorReady` function. Despite the MLO is loaded, the function will say that MLO is not loaded. For example if you teleport into MLO for a first time and use next code:\n\n```lua\nwhile IsValidInterior(interiorId) and not IsInteriorReady(interiorId) do\n print('- Waiting for interior loading')\n Wait(0)\nend\n```\n\nYou'll see in console constant messaging `- Waiting for interior loading`, despite the interior has obviously already loaded. \n\n\n**Possible solution #1:**\n\nSo far we investigate this issue and as possible workaround added next solution - together with PinInteriorInMemory function we use 2 additional functions:\n\n```lua\nRegisterNetEvent('lumanstudio:teleportToMLO', function(coords)\n PinInteriorInMemory(interiorId) -- before was only used this\n SetInteriorActive(interiorId, true) -- added this\n RefreshInterior(interiorId) -- and this\nend)\n```\n\n**Possible solution #2:**\n\nAnother solution is planned in case if first one will not help - is to try to pre-load interior like this, when the script has started:\n\n```lua\nCreateThread(function()\n PinInteriorInMemory(interiorId)\n Wait(100)\n UnpinInterior(interiorId)\nend)\n```",
"timestamp": "2025-02-10T13:01:03.487+01:00"
},
{
"id": "1341581134294810624",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "To follow the issue mentioned here, take a look on this FiveM github pull request:\nhttps://github.com/citizenfx/fivem/pull/2847",
"timestamp": "2025-02-19T02:24:27.788+01:00"
},
{
"id": "1345370360895246407",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall:** Object rotation sync\n\n`SetEntityRotation` will not work on an object if `FreezeEntityPosition` is enabled. However, changing the object's position using `SetEntityCoords` will work good, moreover it will synchronize the rotation. \n\nA better approach to rotating the object is to unfreeze it before applying the rotation.",
"timestamp": "2025-03-01T13:21:29.81+01:00"
},
{
"id": "1345372692689322005",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall:** Object physics\n\nWhen creating an object and activating its physics, sometimes the physics will not be applied unless the object is physically interacted with. For example, this happens when you create an object with the hash `prop_rub_carwreck_2`:\n\n```lua\nCreateObject(`prop_rub_carwreck_2`, coords.x, coords.y, coords.z)\nSetActivateObjectPhysicsAsSoonAsItIsUnfrozen(entity, true)\nSetEntityDynamic(entity, true)\nPlaceObjectOnGroundProperly(entity)\nSetEntityCollision(entity, true, true)\nFreezeEntityPosition(entity, false)\nActivatePhysics(entity)\n```\n\nThe above code will not activate the object's physics. You will need to push the object using an explosion or collide with it heavily by driving a vehicle into it. This issue is likely related to entity flags defined in the object's `.ytyp` file. Specifically, this object has `flag 32`, marking it as a `static entity`.\n\n**Solutions:**\nThere are two ways to fix this behavior:\n\n1) Modify the .ytyp file. Remove the static flag (32) from the entity in the .ytyp file and stream the modified version.\n\n2) Apply an external force (Hacky workaround). You can force the physics to activate by applying an artificial force to the entity:\n```lua\nApplyForceToEntity(entity, 3, 0.0, 0.0, 21520.0, 0.0, 0.0, 50.0, 0, true, true, false, false, true)\n```\nThis will apply a force to the object, triggering its physics.",
"timestamp": "2025-03-01T13:30:45.753+01:00"
},
{
"id": "1346508409511481457",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pma_avarianknight",
"author_id": "974934565607071825",
"content": "Why change the name from an official name -> unofficial name?",
"timestamp": "2025-03-04T16:43:41.744+01:00"
},
{
"id": "1346517623852240906",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "In my tests that native disables the eat prompt. While the pick is still active. So i think it makes sense since the other native has pick in its name.",
"timestamp": "2025-03-04T17:20:18.614+01:00"
},
{
"id": "1346517773936889918",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Not sure if it can be related to other scripts, but for herbs it disables the eat prompt.",
"timestamp": "2025-03-04T17:20:54.397+01:00"
},
{
"id": "1346520230029164574",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pma_avarianknight",
"author_id": "974934565607071825",
"content": "Yea but if the name is a confirmed match we should always prefer the official name",
"timestamp": "2025-03-04T17:30:39.975+01:00"
},
{
"id": "1346522902207529081",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah I forgot that detail, will change it back a description should be enough anyways",
"timestamp": "2025-03-04T17:41:17.072+01:00"
},
{
"id": "1349382397363228703",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "rohane",
"author_id": "86675240540737536",
"content": "@{'𝗢𝘂𝘁𝘀𝗶𝗱𝗲𝗿'}; ^ see above",
"timestamp": "2025-03-12T15:03:53.844+01:00"
},
{
"id": "1349405202033148036",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "the docs are public people can make pull requests.",
"timestamp": "2025-03-12T16:34:30.901+01:00"
},
{
"id": "1349405282869968908",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "rohane",
"author_id": "86675240540737536",
"content": "Oh, ha, didn't realize",
"timestamp": "2025-03-12T16:34:50.174+01:00"
},
{
"id": "1349604387240149057",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "updating parameters for this native\n\n- entityModel can be 0 or using Hash or using `GET_ENTITY_MODEL` \n- conditionalAnim can be 0 or using Hash also accepts `GET_ACTIVE_DYNAMIC_SCENARIO` in some parts of the decompile.\n\n```C\n void _REQUEST_SCENARIO_TYPE(Hash scenarioType int p1, Hash entityModel , Hash conditonalAnim )\n```",
"timestamp": "2025-03-13T05:46:00.355+01:00"
},
{
"id": "1349784654777155634",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Wouldn't false just be `0`? it should still be a hash type",
"timestamp": "2025-03-13T17:42:19.485+01:00"
},
{
"id": "1349800790918697060",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "yeah they use 0",
"timestamp": "2025-03-13T18:46:26.641+01:00"
},
{
"id": "1349800910737510502",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "so both should be hash types",
"timestamp": "2025-03-13T18:46:55.208+01:00"
},
{
"id": "1350578361621155970",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "New parameters explanation:\n\n- ent: entity to fire\n- p1: unknow, it's 0.0 or 100.0 in R* scripts\n- boneIndex: entity bone to start fire on or set -1\n- p3: unknow it can be 0, 2, 4, 8, 14, 15 in R* scripts\n\n```c\nvoid START_ENTITY_FIRE(Entity ent, float p1, int boneIndex, int p3)\n```",
"timestamp": "2025-03-15T22:16:13.943+01:00"
},
{
"id": "1351307293379006657",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`0xE31A04513237DC89` -> `_NETWORK_UNREGISTER_NETWORKED_ENTITY`",
"timestamp": "2025-03-17T22:32:44.817+01:00"
},
{
"id": "1351642519506784377",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`0xFD4272A137703449` -> `_NETWORK_LEAVE_SESSION` possibly\n\nSeems to just kill the network connection, sets the players coords to 0, 0, 0 when doing `GetEntityCoords`",
"timestamp": "2025-03-18T20:44:48.954+01:00"
},
{
"id": "1355381662120415366",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```c\n// _0xDC88D06719070C39\n//namespace PED\n\nbool _IS_PED_AFLOAT(Ped ped)\n// detects if ped is afloat in water like swimming or in a boat (driving or standing on it)\n```",
"timestamp": "2025-03-29T04:22:50.023+01:00"
},
{
"id": "1356281899672404188",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0xC4B67EF3FD65622D\nvoid _MODIFY_PROPSET_COORDS_AND_HEADING(int propSet, float coordsX, float coordsY, float coordsZ, BOOL onGroundProperly, float heading);\n/*\nRelocates an existing prop set to specified coordinates and adjusts its heading (rotation) without affecting the prop set's internal layout or structure. The `propSet` parameter identifies the prop set to move. The parameters (`coordsX`, `coordsY`, `coordsZ`) set the new central position of the prop set, while `heading` specifies its rotation around the Z-axis (in degrees). When `onGroundProperly` is true, the prop set automatically aligns accurately with the terrain.\n\nExample:\n_MODIFY_PROPSET_COORDS_AND_HEADING(2502917, -278.69, 838.1, 118.16, true, 180.0);\n// Moves the prop set (ID: 2502917) to coordinates (-278.69, 838.1, 118.16), aligns it to the terrain, and rotates it 180 degrees.\n*/\n```\n\n***Note: I was previously able to upload videos directly here, but now videos or images are not uploading.***",
"timestamp": "2025-03-31T17:00:03.381+02:00"
},
{
"id": "1356296205763874877",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0x1ACBC313966C21F3\nBOOL _IS_SCENARIO_IN_USE(Hash scenarioHash);\n/*\nChecks whether a specified scenario is currently being used (actively played) by any entity (player or ped). Returns true if the scenario is already occupied, otherwise false.\n\nExample:\nbool isInUse = _IS_SCENARIO_IN_USE(-2118385641);\n// Returns true if the scenario with hash -2118385641 is currently active or occupied by any entity.\n*/\n```\n***Note: I was previously able to upload videos directly here, but now videos or images are not uploading.***",
"timestamp": "2025-03-31T17:56:54.219+02:00"
},
{
"id": "1357514766188286125",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0xF9CFF5BB70E8A2CB\n// namespace PED\nvoid _SET_PED_WETNESS(Ped ped, float amount)\n// previously discovered but never given a name officially\n// only works when you use SET_PED_WETNESS_HEIGHT first , if you do 0.0 or it dries naturally (it resets) you need to apply again with SET_PED_WETNESS_HEIGHT to see the wetness effects again\n```",
"timestamp": "2025-04-04T02:39:01.664+02:00"
},
{
"id": "1359179805098246246",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Some research for how to use the GET_CARRIED_PELT_SKIN native:\n\nhttps://github.com/nativewrappers/nativewrappers/blob/main/src/redm/entities/HorsePeltEntries.ts",
"timestamp": "2025-04-08T16:55:17.875+02:00"
},
{
"id": "1364419145214722229",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "For people who come over from FiveM and are confused why `REQUEST_COLLISION_AT_COORD` doesn't work you need to use the `LOAD_SCENE_*` natives\n\nSee [here](https://github.com/nativewrappers/nativewrappers/blob/f9d36c512e1be9ebe43dd8d3e25668a252aac3cb/src/redm/Game.ts#L14) for underlying calls, most will line up with their names though.\n\n```ts\nasync function set_coords_when_area_is_loaded(pos: Vector3) {\n // load the area, returns a boolean, will always be true unless `IS_PLAYER_SWITCH_IN_PROGRESS` is true \n if (!Game.loadScene(pos, Vector3.Zero, 60.0 /* load the immediate area */)) return ;\n\n // wait for the scene to load, if you add your own timeout logic you should\n // make sore to always call `Game.stopLoadScene` as it has cleanup logic it needs to do.\n while (!Game.isLoadSceneLoaded()) {\n await Delay(0);\n }\n\n // teleport to the area\n Game.PlayerPed.Position = pos\n\n // stop loading the scene, you should *always* call this\n Game.stopLoadScene();\n}\n```",
"timestamp": "2025-04-23T03:54:33.901+02:00"
},
{
"id": "1365322805532561430",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x1BFBAFCC6760FF02\n// namespace VEHICLE\nvoid _SET_TRAIN_WHISTLE_ENABLED(Vehicle train, bool value)\n// Determines whether the train whistle can be used. True if so, False to make it unusable.\n\n// Example:\n_SET_TRAIN_WHISTLE_ENABLED(myTrain, false);\n// This will disable the train whistle\n```",
"timestamp": "2025-04-25T15:45:23.31+02:00"
},
{
"id": "1367193430391918823",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Might be good to note that this only works if it's called on the engine train, one would probably already assume this but there's always someone.",
"timestamp": "2025-04-30T19:38:35.031+02:00"
},
{
"id": "1367194410949021819",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "I already specified to put the train vehicle. All natives related to the train are specified as \"Vehicle train\" on the documentation. The other cars are indicated as \"carriage\" and are not networked. So I don't think it poses a real problem.",
"timestamp": "2025-04-30T19:42:28.814+02:00"
},
{
"id": "1393972552212283464",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall**: SetEntityCoords on server side during script restart doesn't work\n\n```lua\nAddEventHandler('onResourceStop', function(res)\n if GetCurrentResourceName() == res then\n for k,v in ipairs(GetPlayers()) do\n local ped = GetPlayerPed(v)\n SetEntityCoords(ped, Config.GameOverSpawnpoints[1]) -- This will not work. Probably because this native is 'RPC' and since we restart the script the client-side is no longer available to process the call.\n end\n end\nend)\n```",
"timestamp": "2025-07-13T17:09:15.205+02:00"
},
{
"id": "1395038591423353005",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall:** Entity anim speed and time desync\n\n1. `SetEntityAnimSpeed` and `SetEntityAnimCurrentTime` are not synced by the game.\n2. If you'd like to sync it manually there a pitfall when very often it will not sync (f.e. I set speed to 0.0 to pause the anim and it was still continuing to play).\n3. To fix above issue study the code bellow how I sync trolley car with cash:\n\n```lua\n-- client.lua\n-- Necessary to call the function on each client\nfunction setTrolleyState(trolley, state)\n print('Set Trolley State', trolley, state)\n\n local dict = 'anim@heists@ornate_bank@grab_cash'\n local anim = 'cart_cash_dissapear'\n\n -- Don't use it. Breaks entity state bag sync\n -- NetworkRequestControlOfEntity(trolley)\n -- while not NetworkHasControlOfEntity(trolley) do Wait(100) end\n\n if NetworkHasControlOfEntity(trolley) then\n requestAnimDict(dict)\n PlayEntityAnim(trolley, anim, dict, 1.0, true, true, false, state, 0)\n while not IsEntityPlayingAnim(trolley, dict, anim, 3) do\n Wait(0)\n print('- Waiting for anim')\n end\n -- Not synced\n SetEntityAnimSpeed(trolley, dict, anim, 0.0)\n SetEntityAnimCurrentTime(trolley, dict, anim, state)\n else\n -- Custom sync\n while not IsEntityPlayingAnim(trolley, dict, anim, 3) do\n Wait(0)\n print('- Waiting for anim')\n end\n -- Wait for anim current time set\n -- Necessary wait to make SetEntityAnimSpeed below work. \n -- Idk why, just accept it\n SetEntityAnimCurrentTime(trolley, dict, anim, state)\n while math.abs(GetEntityAnimCurrentTime(trolley, dict, anim) - state) >= 0.01 do\n Wait(0)\n print('- Waiting for anim time set')\n end\n SetEntityAnimSpeed(trolley, dict, anim, 0.0)\n end\n \n print('Set Trolley State Confimred')\nend\n```",
"timestamp": "2025-07-16T15:45:18.759+02:00"
},
{
"id": "1395121559059824670",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall:** Deletion of entity not always works\n\nMake sure to use `SetEntityAsMissionEntity(entity, true, true)` and `NetworkRequestControlOfEntity(entity)`\n```lua\n-- client.lua\nwhile DoesEntityExist(entity) do\n NetworkRequestControlOfEntity(entity)\n Wait(0)\n if NetworkHasControlOfEntity(entity) then\n SetEntityAsMissionEntity(entity, true, true)\n DeleteEntity(entity)\n end\nend\n```",
"timestamp": "2025-07-16T21:14:59.785+02:00"
},
{
"id": "1396278095119384676",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "**Pitfall:** You can't set the rotation of an object that was just created server-side, even if it's set to freeze.\n\nMake sure the entity is completely unfrozen by first freezing it manually, then unfreezing it. Use getters to verify it's state.\n```lua\n-- server.lua\n\nfunction createObject(hash, coords, rot)\n -- Create.\n local object = CreateObjectNoOffset(hash, coords.x, coords.y, coords.z, true, true, false)\n\n -- Wait for creation.\n local timeoutAt = GetGameTimer() + 1000\n while not DoesEntityExist(object) do\n if GetGameTimer() >= timeoutAt then\n return nil\n end\n Wait(0)\n end\n\n -- Freeze entity manually to be certain of current freeze state.\n freezeEntity(object)\n\n -- Unfreeze.\n unfreezeEntity(object)\n\n -- Set the rotation.\n SetEntityRotation(object, rot.x, rot.y, rot.z)\n\n return object\nend\n\n\nfunction unfreezeEntity(entity)\n local timeoutAt = GetGameTimer() + 1000\n while IsEntityPositionFrozen(entity) and GetGameTimer() < timeoutAt do\n FreezeEntityPosition(entity, false)\n Wait(0)\n end\nend\n\nfunction freezeEntity(entity)\n local timeoutAt = GetGameTimer() + 1000\n while not IsEntityPositionFrozen(entity) and GetGameTimer() < timeoutAt do\n FreezeEntityPosition(entity, true)\n Wait(0)\n end\nend\n```",
"timestamp": "2025-07-20T01:50:39.469+02:00"
},
{
"id": "1397098096642756619",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xEC97101A8F311282\n// namespace WEAPON\nint _GET_AMMO_TYPE_FOR_WEAPON_2(int weaponHash)\n// Return the default ammo type for weapon, works similar as 0x5C2EA6C44F515F34 native\n\n// Example:\nint ammoType = _GET_AMMO_TYPE_FOR_WEAPON_2(joaat(\"WEAPON_REVOLVER_CATTLEMAN\"));\n// This will return the hash of \"AMMO_REVOLVER\"\n```",
"timestamp": "2025-07-22T08:09:03.067+02:00"
},
{
"id": "1397103387740471418",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0x4823F13A21F51964\n// namespace WEAPON\nint _GET_AMMO_IN_PED_WEAPON_FROM_GUID(Ped ped, guid)\n// Return total ammo in ped weapon from its guid, or false if 0\n```\n```lua\n-- Example:\nlocal ped = PlayerPedId()\nlocal weaponGuid = DataView.ArrayBuffer(16 * 8)\n\nfor attachPoint = 0, 3 do\n if (Citizen.InvokeNative(0x6929E22158E52265, ped, attachPoint, weaponGuid:Buffer())) then -- GET_PED_WEAPON_GUID_AT_ATTACH_POINT\n local ammo = Citizen.InvokeNative(0x4823F13A21F51964, ped, weaponGuid:Buffer()) or 0\n print(string.format(\"You have %s ammo in the weapon at attach point #%s\", ammo, attachPoint))\n end\nend\n-- This will return the total ammo of each of the player weapon slots\n```",
"timestamp": "2025-07-22T08:30:04.563+02:00"
},
{
"id": "1397246131821608981",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`0xEC97101A8F311282` and `0x5C2EA6C44F515F34` are the same native, I'm guessing one was kept for compatabilitys sake, they call the same exact native handler.",
"timestamp": "2025-07-22T17:57:17.404+02:00"
},
{
"id": "1397258888880984154",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "someone else has already found that native and named it `_GET_DEFAULT_WEAPON_AMMO_TYPE`, idk how but it was reverted in the website somehow so it didnt show the name.",
"timestamp": "2025-07-22T18:47:58.924+02:00"
},
{
"id": "1397258963266961468",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "but im fixing it",
"timestamp": "2025-07-22T18:48:16.659+02:00"
},
{
"id": "1397314997553594378",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "Good to know",
"timestamp": "2025-07-22T22:30:56.274+02:00"
},
{
"id": "1398074327810969670",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ehbw",
"author_id": "524283814357237792",
"content": "I posted this under [this issue](https://github.com/citizenfx/fivem/issues/2561) however its probably best to also document it here to prevent it from getting lost. You can prevent players from getting softlocked after pressing ``X`` in the map menu when hovering over a player blip by disabling input ``INPUT_FRONTEND_RS`` when inside the map. \n\nAn very simple snippet provided by outsider:\n\n```lua\nCreateThread(function()\n while true do\n Wait(0)\n if IsUiappActiveByHash(`MAP`) == 1 then\n DisableControlAction(0, `INPUT_FRONTEND_RS`, true) \n end\n end\nend)\n```",
"timestamp": "2025-07-25T00:48:14.715+02:00"
},
{
"id": "1401555110378864712",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Battle pass UI Databinding\nhttps://pastebin.com/CPvLkEGM\n\nI'm not sure how I did it, but I did. There are a lot of incorrect entries maybe they don't even need to be used!",
"timestamp": "2025-08-03T15:19:37.949+02:00"
},
{
"id": "1404754733511606435",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "How to access FiveM while it on maintance (to access dev server)\n\n1. In the server folder, same folder where FXServer.exe located, open file `components.json,` and remove string `svadhesive` from there; \n2. In `server.cfg` set `sv_lan 1`\n3. In fivem folder (`FiveM.app`) rename file `adhesive.dll` to `_adhesive.dll`.",
"timestamp": "2025-08-12T11:13:47.55+02:00"
},
{
"id": "1406234928676470784",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// _0xB0E8599243B3F568\n// namespace HUD\nbool _UI_PROMPT_HAS_MASH_MODE_JUST_PRESSED(Prompt promp)\n// Return true if the mash mode have just been pressed\n```",
"timestamp": "2025-08-16T13:15:33.578+02:00"
},
{
"id": "1410727637118095450",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mikethemadkiwi",
"author_id": "143756107733663744",
"content": "```'SLOTID_PROGRESSION'```\nwhen used as a slotid check in inventory add functions allows for \n```GetHashKey('CHARACTER_ROLE_TOKEN')``` \nto be added to the correct slot, Updating the native blue Character role token in the UI.\nprops to @grumpypoo, who apparently got there before me and found this 😄",
"timestamp": "2025-08-28T22:47:58.741+02:00"
},
{
"id": "1416499730845794497",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "```lua\n-- EmotePlayAction\nN_0x6a1af481407bf6e9(PlayerPedId())\n```\n\nExample (smoking action):\n```lua\nTaskPlayEmoteWithHash(PlayerPedId(), 1, 1, joaat(\"KIT_EMOTE_ACTION_SMOKE_CIGAR_1\"), true, false, false, false, false) -- Base emote\nWait(5000)\nN_0x6a1af481407bf6e9(PlayerPedId()) -- Action\n```\n\nhttps://discord.com/channels/192358910387159041/643437814104457217/1416472322319057066",
"timestamp": "2025-09-13T21:04:13.126+02:00"
},
{
"id": "1416528928725798954",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0xAC5045AB7F1A34FD\n// namespace TASK\n\nBOOL _IS_PED_BEING_LED(Entity mount);\n/*\nReturns true if the specified mount (horse) is currently being led by the player, otherwise false.\n\nExample:\nEntity myHorse = /* your horse entity */;\nBOOL isLed = Citizen.InvokeNative(0xAC5045AB7F1A34FD, myHorse);\n// `isLed` will be true if `myHorse` is being led by the player, false otherwise.\n```",
"timestamp": "2025-09-13T23:00:14.443+02:00"
},
{
"id": "1418651108418781205",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "https://natives.avarian.dev/\n\nLets you search by namespaces, parameters, and return types\n\n`namespace:PED` will show only the ped namespace\n`namespace:PED|TASK` will show `PED` OR `TASK`\n\n`parameters:Ped` will show any native that takes ped as a parameter\n`parameters:Ped,Vehicle` shows any native that takes `Ped` AND `Vehicle` as a parameter\n`parameters:Ped|Vehicle` shows any native that takes `Ped` OR `Vehicle` as a parameter\n\n`returns:Ped` will show any native that returns a ped\n\nYou can favorite natives and view them under the history, and also see natives you recently traveled to\n\nThis doesn't handle ref types and such properly, I hope to be able to generate proper in/out types later on, and add default parameters.\n\nWe can link relative natives through a new frontmatter `related_natives: [\"NATIVE_NAME\"]`, but its only currently done for one type right now\n\nThis doesn't include Cfx natives (yet)",
"timestamp": "2025-09-19T19:33:01.51+02:00"
},
{
"id": "1419059105670365330",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pulsehabour",
"author_id": "1309153036022714435",
"content": "Started a thread.",
"timestamp": "2025-09-20T22:34:15.635+02:00"
},
{
"id": "1420003123174572033",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "While researching RDR2 natives, I noticed the first parameter of GET_DEFAULT_MAX_ATTRIBUTE_RANK is mislabeled. It’s currently documented as a Ped handle, but it should be a model hash. This native returns the default max rank for an attribute based on the model archetype, not a specific runtime ped.\n```\nCurrent (incorrect) signature\n// 0x7C059C55AD940CB4\nint GET_DEFAULT_MAX_ATTRIBUTE_RANK(Ped ped, int attributeIndex); //\n\nCorrect signature\n// 0x7C059C55AD940CB4\nint GET_DEFAULT_MAX_ATTRIBUTE_RANK(Hash modelHash, int attributeIndex); //\n\n\nattributeIndex refers to ePedAttribute.\n```\nWhy this matters\n\nPassing a ped handle can lead to confusion: the return value doesn’t vary with the individual ped instance; it depends on the model.",
"timestamp": "2025-09-23T13:05:26.947+02:00"
},
{
"id": "1420196073456140440",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x640A602946A8C972\n// namespace TASK\n\nint _GET_RANSACK_SCENARIO_CONTAINER_NUM_COMPARTMENTS(Entity);\n/*\nReturns the total number of compartments (drawers, lids, etc.) the specified scenario container entity has. \nFor example, a chest has 1 compartment, while a cabinet with 3 drawers returns 3.\n```",
"timestamp": "2025-09-24T01:52:09.879+02:00"
},
{
"id": "1420197160590246072",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x849791EBBDBA0362\n// namespace TASK\n\nint _GET_RANSACK_SCENARIO_CONTAINER_NUM_OPEN_COMPARTMENTS(Entity);\n/*\nReturns the number of currently open compartments for the specified scenario container entity. \nIf the container has closeable compartments (like drawers), this will return how many of them are currently open. \nIf the container is not closeable (like a chest or safe that cannot be closed again), it will return 0.\n*/\n```",
"timestamp": "2025-09-24T01:56:29.072+02:00"
},
{
"id": "1420198243270393886",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x01AF8A3729231A43\n// namespace TASK\n\nint _GET_RANSACK_SCENARIO_CONTAINER_REMAINING_LOOT_COUNT(Entity);\n/*\nReturns the total number of lootable items currently inside the specified scenario container entity. \nThis value decreases as items are looted. Before opening, it may return 0 because contents are not always loaded until the container is opened.\n```",
"timestamp": "2025-09-24T02:00:47.203+02:00"
},
{
"id": "1420213621761511606",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x03D741CB4052E26C\n// namespace TASK\n\nfloat _GET_PED_WRITHE_BREAK_FREE_PROGRESS(Ped ped); // Default value -1.0\n/*\nReturns the current progress of the \"Break Free\" prompt when the specified ped is hogtied or knocked out. \nThe value increases as the player spams the prompt key until it reaches 1.0, at which point the ped breaks free.\n\nExample:\nfloat progress = Citizen.InvokeNative(0x03D741CB4052E26C, PlayerPedId(), Citizen.ResultAsFloat());\n// `progress` will be between 0.0 and 1.0 depending on how far the break free action has advanced.\n*/\n```",
"timestamp": "2025-09-24T03:01:53.721+02:00"
},
{
"id": "1420235075756228669",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x0FE797DD9F70DFA6\n// namespace TASK\n\nvoid _SET_INTIMIDATED_FACING_ANGLE(Ped ped, BOOL useLimits, float minAngle, float maxAngle);\n/*\nConfigures how an intimidated/hogtied ped faces the player.\n\n- If `useLimits` is false (0), the ped always fully faces the player.\n- If `useLimits` is true (1), the ped’s facing is restricted within the given angle range `[minAngle, maxAngle]`.\n```\nLua Examples:\n```lua\n-- Set ped interaction personality to scripted timid robbery\nCitizen.InvokeNative(0x24C82EF607105FAA, ped, joaat(\"SCRIPTEDTIMIDROB\"))\n\n-- Start intimidated task with the player\nCitizen.InvokeNative(0x933ACC1A1771A288, ped, PlayerPedId(), 1, 0, 0, 0, 0, 0, 83968)\n\n-- Make the ped face within the range 0.0 to -360.0 degrees\nCitizen.InvokeNative(0x0FE797DD9F70DFA6, ped, 1, 0.0, -360.0)\n\n-- Force the ped to always face the player\nCitizen.InvokeNative(0x0FE797DD9F70DFA6, ped, 0)\n```",
"timestamp": "2025-09-24T04:27:08.752+02:00"
},
{
"id": "1420245505690046587",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x141BC64C8D7C5529\n// namespace TASK\n\nvoid _CLEAR_VEHICLE_TASKS(Vehicle vehicle);\n/*\nClears all active tasks assigned to the specified vehicle. \nThis cancels ongoing behaviors such as TASK_VEHICLE_DRIVE_TO_DESTINATION_2, \nor even tasks triggered by horses pulling the vehicle when they start moving due to gunfire etc. \n\nExample:\n-- Start a driving task\nCitizen.InvokeNative(0x391073B9D3CCE2BA, vehicle, -1798.6697, -342.1558, 163.8509, 8.0, 69210112, 6, 10.0, 10.0)\n\n-- Later, clear all tasks on the vehicle (stopping it)\nCitizen.InvokeNative(0x141BC64C8D7C5529, vehicle)\n*/\n```",
"timestamp": "2025-09-24T05:08:35.442+02:00"
},
{
"id": "1420273489021112407",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-09-24T06:59:47.188+02:00"
},
{
"id": "1420415344941469747",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x4642182A298187D0\n// namespace PED\n\nint _REFRESH_CARRYING_STATE_FOR_PED(Ped ped, int carryingType, int *ents, int unk3, int filter);\n/*\nReturn the status of the wanted carrying action of a ped. unk3 is usually 4.\nYou can also get the entity being carried and the entity it was taken from with a buffer.\n\nStatus:\nINVALID = 0,\nSTARTING = 1,\nPROGRESSING = 2,\nFINISHING = 3\n\nCARRYING TYPES:\nUNK_0 = -1,\nUNK_1 = 0,\nUNK_2 = 1,\nUNK_3 = 2,\nUNK_4 = 3,\nCARRYING_FROM_GROUND = 4,\nCARRYING_FROM_MOUNT = 5,\nPUTTING_DOWN_GROUND = 6,\nPUTTING_DOWN_MOUNT = 7,\nUNK_9 = 8,\nUNK_10 = 9,\nUNK_11 = 10\n\nFilters:\n ENTITY_ONLY = 0,\n NOTHING = 1,\n ENTITY_AND_TAKEN_FROM_ENTITY = 2\n*/\n```\nLua examples :\n```lua\n-- Print the entity being carried from ground\nlocal retval, entity = Citizen.InvokeNative(0x4642182A298187D0, PlayerPedId(), 1, Citizen.PointerValueInt(), 4, 0, Citizen.ResultAsInteger())\nif (retval ~= 0) then\n print(entity)\nend\n\n-- Print the entity (and mount) being carried from a mount\nlocal struct = DataView.ArrayBuffer(2*8)\nlocal retval = Citizen.InvokeNative(0x4642182A298187D0, PlayerPedId(), 5, struct:Buffer(), 4, 2, Citizen.ResultAsInteger())\nif (retval ~= 0) then\n local entity = struct:GetInt32(0*8)\n local fromEntity = struct:GetInt32(1*8)\n print(entity, fromEntity)\nend\n```",
"timestamp": "2025-09-24T16:23:28.275+02:00"
},
{
"id": "1420417733224304772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "",
"timestamp": "2025-09-24T16:32:57.686+02:00"
},
{
"id": "1420763311112454276",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xB29C553BA582D09E\n// namespace PED\n\nint _COMPUTE_LOOT_FOR_PED_CARCASS(Any* outLoot, Hash model, int damageCleanliness, int skinningQuality);\n/*\nReturn the number of loot items for a ped carcass of given model, damage cleanliness and skinning quality.\nThe first index of the buffer is required, it's the max size of loot (always 15 in R* scripts)\noutLoot is an array of loot hash, its size is returned by the native (it starts at the index 1).\n*/\n```\nLua example :\n```lua\n-- Request the loots for a cow with 0 as damage cleanliness and 2 as skinning quality\nlocal size = 15\nlocal struct = DataView.ArrayBuffer(size * 8)\nstruct:SetInt32(0, size)\n\nlocal numLoot = Citizen.InvokeNative(0xB29C553BA582D09E, struct:Buffer(), `a_c_cow`, 0, 2, Citizen.ResultAsInteger())\nif (numLoot > 0) then\n for i = 1, numLoot do\n local hash = struct:GetInt32(i * 8)\n print((\"i: %d: loot: %d\"):format(i, hash))\n end\nend\n```",
"timestamp": "2025-09-25T15:26:09.875+02:00"
},
{
"id": "1420785856599293992",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x0EA9EACBA3B01601\n// namespace PED\n\nbool _CAN_PED_HEAR_TARGET_PED(Ped target, Ped ped, bool flag);\n/*\nReturn true if the ped is heard by the target ped.\nUsually flag is set to false when the ped is in stealth mode.\n*/\n```\nLua example :\n```lua\nlocal playerPed = PlayerPedId()\nlocal flag = true\nif (GetPedCrouchMovement(playerPed) or IsPedInCover(playerPed, false, false) or IsPedGoingIntoCover(playerPed)) then\n flag = false\nend\nlocal isHeard = Citizen.InvokeNative(0x0EA9EACBA3B01601, playerPed, ped, flag)\nprint(isHeard)\n```",
"timestamp": "2025-09-25T16:55:45.138+02:00"
},
{
"id": "1420814232253104300",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xBEA3A6E5F5F79A6F\n// namespace PLAYER\n\nbool _GET_PLAYER_INTERACTION_AIM_ENTITY(Player player, Entity* entity);\n/*\nGet the entity the player is aiming at with/without weapon.\n*/\n```\nLua example :\n```lua\nlocal struct = DataView.ArrayBuffer(1*8)\nlocal retval = Citizen.InvokeNative(0xBEA3A6E5F5F79A6F, PlayerId(), struct:Buffer())\n\nif (retval) then\n local entity = struct:GetInt32(0)\n print(\"Aimed Entity:\", entity)\nend\n```",
"timestamp": "2025-09-25T18:48:30.421+02:00"
},
{
"id": "1420868658430869556",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x2C497BDEF897C6DF\n// namespace TASK\n\nAnimScene _GET_ANIM_SCENE_FROM_PED_*(Ped ped);\n/*\nReturns the AnimScene handle currently associated with the given Ped, \nbut only when the anim event \"SEARCHSTART\" has fired on that Ped. \n\nBut in a strange way, it also seems to work with the butcher's meat-cutting animscene.\n\n⚠️ This does not return AnimScenes in general — it seems restricted to \nSEARCH-related scenes (needs more research).\n\nLoop Example (Lua):\nlocal on = false\nRegisterCommand(\"animscene_test\",function (src,args,raw)\n on = not on\n while on do \n Wait(1) \n local animscene_test = Citizen.InvokeNative(0x2C497BDEF897C6DF,PlayerPedId())\n if animscene_test then\n print(\"animscene_test\",animscene_test)\n print(\"GetAnimSceneDict\",GetAnimSceneDict(tonumber(animscene_test))) \n print(\"GetAnimSceneDuration\",GetAnimSceneDuration(tonumber(animscene_test))) \n print(\"GetAnimSceneObject\",GetAnimSceneObject(tonumber(animscene_test),\"player\")) \n print(\"GetAnimScenePed\",GetAnimScenePed(tonumber(animscene_test),\"player\")) \n print(\"GetAnimScenePlaybackListPhaseAudioLoadStress\",GetAnimScenePlaybackListPhaseAudioLoadStress(tonumber(animscene_test)))\n print(\"GetAnimSceneRate\",GetAnimSceneRate(tonumber(animscene_test))) \n print(\"GetAnimSceneTime\",GetAnimSceneTime(tonumber(animscene_test))) \n print(\"GetAnimSceneVehicle\",GetAnimSceneVehicle(tonumber(animscene_test))) \n print(\"GetAnimSceneBool\",GetAnimSceneBool(tonumber(animscene_test),\"player\")) \n print(\"GetAnimSceneCurrentActiveCameraCount\",GetAnimSceneCurrentActiveCameraCount(tonumber(animscene_test))) \n print(\"GetAnimSceneEntityLocationData\",GetAnimSceneEntityLocationData(tonumber(animscene_test),\"player\"))\n print(\"GetAnimSceneFloat\",GetAnimSceneFloat(tonumber(animscene_test))) \n print(\"GetAnimSceneInt\",GetAnimSceneInt(tonumber(animscene_test))) \n print(\"GetAnimSceneOrigin\",GetAnimSceneOrigin(tonumber(animscene_test))) \n print(\"GetAnimScenePhase\",GetAnimScenePhase(tonumber(animscene_test))) \n print(\"IsAnimSceneLoaded\",IsAnimSceneLoaded(tonumber(animscene_test))) \n end \n end\nend)\n*/\n```",
"timestamp": "2025-09-25T22:24:46.633+02:00"
},
{
"id": "1420934078735323237",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//_0xB223249B7798EEED\n//namespace STREAMING\nint _REQUEST_SCENARIO_TYPE_FOR_PED(Ped ped, Hash scenarioType, int flag, Hash conditionalScenario)\n// requests a scenario type just like _REQUEST_SCENARIO_TYPE but for a specifc ped p2 is a flag unknown\n```",
"timestamp": "2025-09-26T02:44:44.049+02:00"
},
{
"id": "1420935381041283142",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//_0x66BC28E50E85270E\n//namespace STREAMING\nvoid _REMOVE_SCENARIO_TYPE_FOR_PED(int scenarioTypeId);\n//removes the requested scenario type for ped using the id returned by _REQUEST_SCENARIO_TYPE_FOR_PED\n```",
"timestamp": "2025-09-26T02:49:54.543+02:00"
},
{
"id": "1420936305151316058",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//_0xA0AE7653E8181725\n//namespace STREAMING\nbool _HAS_SCENARIO_TYPE_FOR_PED_LOADED(int scenarioTypeId)\n//returns 1 if the scenario type for ped is loaded using the id returned by _REQUEST_SCENARIO_TYPE_FOR_PED or false\n```",
"timestamp": "2025-09-26T02:53:34.868+02:00"
},
{
"id": "1420941464887623762",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "https://youtu.be/cJvcFxQ-1Hw\n`Citizen.InvokeNative(0x152664AA3188B193, coords, 1000.0, 2, 0)`\n\nThere’s a native like this and it seems to return fixed positions. What do you think it’s actually for? Any ideas? I’ve dug into it a lot but couldn’t reach a solid conclusion. Sharing here in case anyone wants to investigate",
"timestamp": "2025-09-26T03:14:05.045+02:00"
},
{
"id": "1421184012956864642",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n//0x20135AF9C10D2A3D\n//namespace OBJECT\nbool _IS_MODEL_A_PORTABLE_PICKUP(Hash modelHash) // or _IS_MODEL_A_VALID_PORTABLE_PICKUP\n// returns true if the model hash is a portable pickup its used before creating a portable pick up for example.\n```",
"timestamp": "2025-09-26T19:17:53.011+02:00"
},
{
"id": "1421218498184741019",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-26T21:34:54.93+02:00"
},
{
"id": "1421221228118806699",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "Thanks to @fingaweg for helping definition\n```c\n// 0xE4B7945EF4F1BFB2\n// namespace CAM\n\nvoid _SET_CAM_DOF_PARAMS(Cam cam, const CamDofParams* p);\n/*\nSet cam DOF and focal settings.\nstruct CamDofParams {\n float dofStrength; // [0] blur strength\n float dofNear; // [1] near falloff\n float dofFar; // [2] far falloff\n float focalLength; // [3] focal length (e.g. advanced camera uses 30..90)\n float minFocal; // [4] min allowed focalLength\n float maxFocal; // [5] max allowed focalLength\n bool flagA; // [6] lens/DOF enable\n bool flagB; // [7] aux toggle (kept conservative)\n bool flagC; // [8] aux toggle (kept conservative)\n bool flagD; // [9] aux toggle (kept conservative)\n};\n*/\n```\n```lua\nlocal cam = CreateCam(\"DEFAULT_SCRIPTED_CAMERA\", false)\nSetCamCoord(cam, x, y, z)\nSetCamActive(cam, true)\nRenderScriptCams(true, false, 0, false, false, 0)\n\nlocal struct = DataView.ArrayBuffer(10*8)\nstruct:SetFloat32(0*8, 5.0)\nstruct:SetFloat32(1*8, 2.0)\nstruct:SetFloat32(2*8, 128.0)\nstruct:SetFloat32(3*8, 25.0)\nstruct:SetFloat32(4*8, 25.0)\nstruct:SetFloat32(5*8, 60.0)\nstruct:SetInt32(6*8, 1)\nstruct:SetInt32(7*8, 0)\nstruct:SetInt32(8*8, 1)\nstruct:SetInt32(9*8, 1)\n\nCitizen.InvokeNative(0xE4B7945EF4F1BFB2, cam, struct:Buffer())\n```",
"timestamp": "2025-09-26T21:45:45.797+02:00"
},
{
"id": "1421223328961659061",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x03DDBF2D73799F9E\n// namespace STREAMING\nvoid _REQUEST_CLIP_SET_2(char* clipset)\n// requests clip set to be loaded\n```\n\n```C\n// _0x85B8F04555AB49B8\n// namespace STREAMING\nbool _HAS_CLIP_SET_LOADED_2(char* clipset)\n// returns true if the requested clip set is loaded\n```\n\n```C\n// _0x9F348DE670423460 \n// namespace STREAMING\nvoid _REMOVE_CLIP_SET_2(char* clipset)\n// removes the requested clip set\n```\n\nnot entirely sure but based on where the natives are place [list](https://gist.github.com/fingaweg/2a7653c73daf985f73667e9c424cb) could it be about collisions?\nI tried on a script that uses clip set natives but I see no difference in using one or the other, but whats being requested by `REQUEST_CLIP_SET` is not detected by `_0x85B8F04555AB49B8` and vice versa they seem to point to a different script as well, both are widely used in the decompiles for SP",
"timestamp": "2025-09-26T21:54:06.677+02:00"
},
{
"id": "1421241729884885093",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x5E214112806591EA\n// namespace ENTITY\n\nvector _GET_OFFSET_FROM_ENTITY_BONE(Entity entity, int boneIndex);\n/*\nReturn the offset from the entity for the selected bone index.\n*/\n```\n```lua\nCreateThread(function()\n while true do\n local playerPed = PlayerPedId()\n local boneOffset = Citizen.InvokeNative(0x5E214112806591EA, playerPed, GetEntityBoneIndexByName(playerPed, \"skel_r_hand\"), Citizen.ResultAsVector())\n local coords = GetOffsetFromEntityInWorldCoords(playerPed, boneOffset)\n\n DrawMarker(0x50638AB9, coords, 0, 0, 0, 0, 0, 0, 0.05, 0.05, 0.05, 250, 250, 100, 250, 0, 0, 2, 0, 0, 0, 0)\n \n Wait(0)\n end\nend)\n```",
"timestamp": "2025-09-26T23:07:13.799+02:00"
},
{
"id": "1421251524159340625",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-26T23:46:08.936+02:00"
},
{
"id": "1421258352473804905",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "https://youtu.be/L4Ejp_2oag8\n```lua\n// 0x41323F4E0C4AE94B\n// namespace TASK\n\nvoid TASK_FORCE_AIM_AT_COORD(Ped attackerPed, float x, float y, float z, int p4, BOOL p5, BOOL p6);\n/*\nForce a ped that is already attacking to aim directly at the specified world coordinates.\n- ped: The attacking ped entity.\n- x, y, z: Target world coordinates to aim at.\n- p4 always -1, p5, p6: Unknown/flags (commonly set to false/0).\n*/\n\nExample : \n\nRegisterCommand(\"_TASK_FORCE_AIM_AT_COORD\", function(src,args,raw)\n local attackerPed = tonumber(args[1])\n Citizen.InvokeNative(0x9F8AA94D6D97DBF4,attackerPed,true)\n while true do\n Citizen.Wait(0)\n local boneId = tonumber(args[2]) or 21030 -- skel_head not boneindex.\n local bonecoords = GetPedBoneCoords(PlayerPedId(),boneId,0.0,0.0,0.0)\n local entitycoords = GetEntityCoords(attackerPed)\n -- Force attackerPed to aim at player’s head coords\n Citizen.InvokeNative(0x41323F4E0C4AE94B,attackerPed,bonecoords,-1,0,0)\n print(\"Attacker location: \",entitycoords, \" Target location: \",bonecoords)\n DrawLine(entitycoords.x, entitycoords.y, entitycoords.z, bonecoords.x, bonecoords.y, bonecoords.z, 255, 255, 0, 255)\n end\nend)\n```",
"timestamp": "2025-09-27T00:13:16.933+02:00"
},
{
"id": "1421284816112062585",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "https://youtu.be/pM6H_hnDKqU\n\n```yaml\n// 0x4161648394262FDF\n// namespace TAKS\n\nvoid _RESET_SCENARIO_POINTS_IN_AREA(float x, float y, float z, float radius);\n/*\nResets/clears all scenario entities within the given spherical area.\n- x, y, z: Center of the area.\n- radius: Radius of the area to reset scenarios in.\n*/\n```\n\n```lua\n Citizen.InvokeNative(0x4161648394262FDF,GetEntityCoords(PlayerPedId()),2000.0)\n```",
"timestamp": "2025-09-27T01:58:26.356+02:00"
},
{
"id": "1421315426125746236",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_DRIVING_SEAT - _GET_DRIVING_SEAT\nhttps://youtu.be/bjXrHOTgtu0\n```yaml\n// 0x4BA972D0E5AD8122\n// namespace TASK\n\nvoid _SET_DRIVING_SEAT(Vehicle vehicle, int seatIndex);\n/*\nSets which seat index acts as the \"driver seat\" for driving tasks.\n- vehicle: The vehicle to modify.\n- seatIndex: The seat index to assign as the driving seat (default = -1 = actual driver seat). max 8\n*/\n```\n\n```yaml\n// 0xE62754D09354F6CF\n// namespace TASK\n\nint _GET_DRIVING_SEAT(Vehicle vehicle);\n/*\nReturns the seat index currently set as the \"driving seat\" for the specified vehicle.\n- vehicle: The vehicle to query.\nReturns: Seat index (default = -1 for driver seat, custom index if changed with SET_DRIVING_SEAT).\n*/\n```",
"timestamp": "2025-09-27T04:00:04.352+02:00"
},
{
"id": "1421325682189013053",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "IS_PED_LOOKING_AT_COORD\nhttps://youtu.be/iLHXrWVvq_c\n```yaml\n// 0x508F5053E3F6F0C4\n// namespace TASK\n\nbool IS_PED_LOOKING_AT_COORD(Ped ped, float x, float y, float z, float radius);\n/*\nChecks if the ped can/look is directed at the given coord within the specified radius.\n- ped: Ped to check.\n- x, y, z: Target coordinates.\n- radius: Range tolerance for the look-at check.\nReturns: true if the ped can/headtracks the coord, false otherwise (e.g. player in FPS view).\n*/\n```",
"timestamp": "2025-09-27T04:40:49.588+02:00"
},
{
"id": "1421343696942792795",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TASK_VEHICLE_IS_AT_DESTINATION\n```yaml\n// 0x583AE9AF9CEE0958\n// namespace TASK\n\nbool _TASK_VEHICLE_IS_AT_DESTINATION(Vehicle vehicle, float x, float y, float z);\n/*\nChecks if the vehicle's current drive-to destination matches the given coordinates.\n- vehicle: Vehicle handle.\n- x, y, z: Destination coordinates to check.\nReturns: true if the vehicle is currently assigned to drive to these coordinates, false otherwise.\n\nReleated : _TASK_VEHICLE_DRIVE_TO_DESTINATION_2\n*/\n```",
"timestamp": "2025-09-27T05:52:24.64+02:00"
},
{
"id": "1421398229467140282",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-09-27T09:29:06.207+02:00"
},
{
"id": "1421405440868089872",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-09-27T09:57:45.539+02:00"
},
{
"id": "1421417479359696981",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-09-27T10:45:35.739+02:00"
},
{
"id": "1421484068008099860",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xBBE5B63EFFB08E68\n// namespace MISC\n\nbool _GET_GROUND_Z_AND_MATERIAL_FOR_3D_COORD(Vector3 pos, int p1, float* groundZ, Hash* material, int* flags);\n/*\nIf success, return the ground Z, its material hash and flags.\nIn R* scripts p1 is 17, 129 or 3423 (maybe flags).\n*/\n```\n```lua\nlocal groundZStruct = DataView.ArrayBuffer(1*8)\nlocal materialStruct = DataView.ArrayBuffer(1*8)\nlocal flagsStruct = DataView.ArrayBuffer(1*8)\nlocal retval = Citizen.InvokeNative(0xBBE5B63EFFB08E68, x, y, z, 3423, groundZStruct:Buffer(), materialStruct:Buffer(), flagsStruct:Buffer())\n\nif (retval) then\n local groundZ = groundZStruct:GetFloat32(0)\n local materialHash = materialStruct:GetInt32(0)\n local flags = flagsStruct:GetInt32(0)\nend\n```",
"timestamp": "2025-09-27T15:10:11.71+02:00"
},
{
"id": "1421484351983583354",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "",
"timestamp": "2025-09-27T15:11:19.415+02:00"
},
{
"id": "1421520301056856145",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_TASK_COMBAT_READY_TO_SHOOT\n```yaml\n// 0x5EA655F01D93667A\n// namespace TASK\n\nbool _GET_TASK_COMBAT_READY_TO_SHOOT(Ped ped);\n * Checks if the given ped is currently in combat using a ranged weapon\n * and is ready to shoot (actively attempting to attack).\n * \n * - ped: Ped handle.\n * \n * Returns: true if the ped is attacking to fire with a ranged weapon \n * (firearms, bows, throwables, molotovs, poison bottles, etc.), \n * false otherwise (including melee weapons or idle cover).\n * Note: This can return true even in cases where IS_PED_WEAPON_READY_TO_SHOOT returns false.\n```\nhttps://youtu.be/TER47Jp2PTI",
"timestamp": "2025-09-27T17:34:10.342+02:00"
},
{
"id": "1421540038671470743",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "GET_TRAIN_TRACK_COORD_AT_JUNCTION_INDEX\n```yaml\n// 0x785639D89F8451AB\n// namespace VEHICLE\n\nVector3 _GET_JUNCTION_COORDS_FOR_TRAIN_TRACK(Hash trackConfig, int junctionIndex);\n/*\n * Returns the world coordinate of the given train track configuration at the specified index.\n *\n * - trackConfig: Hash key of the train track configuration (e.g. \"NB_TROLLEY_TRACK_CONFIG\").\n * - index: Track point index to query.\n *\n * Returns: A Vector3 containing the coordinate of the track point.\n```",
"timestamp": "2025-09-27T18:52:36.156+02:00"
},
{
"id": "1421543025858969655",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "snapopotamus",
"author_id": "298339092394016770",
"content": "Started a thread.",
"timestamp": "2025-09-27T19:04:28.357+02:00"
},
{
"id": "1421573813430390934",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_LINKED_SCENARIO_POINTS\n```yaml\n// 0xE7BBC4E56B989449\n// namespace TASK\n\nint _GET_LINKED_SCENARIO_POINTS(int scenarioPoint, int* outPoints, int maxPoints);\n/*\n * Fills an output array with scenario points linked (\"chained\") to a given parent scenario point. \n * Writes up to maxPoints entries and zeroes remaining elements. \n * Commonly used for flows like chained put-down scenarios.\n *\n * Params:\n * scenarioPoint: Parent scenario point handle.\n * outPoints: Pointer to an int array that receives the linked scenario point handles.\n * maxPoints: Capacity of outPoints.\n *\n * Returns:\n * Count of linked scenario points written (0 if none).\n */\n\n```",
"timestamp": "2025-09-27T21:06:48.686+02:00"
},
{
"id": "1421585503962267770",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_REMOVE_CARRIABLE_CONFIG\n```yaml\n// 0x6AFDA2264925BD11\n// namespace TASK\n\nvoid _REMOVE_CARRIABLE_CONFIG(Hash configHash);\n/*\n * Removes/unloads a previously loaded carriable config.\n * \n * - configHash: Hash of the carriable config to remove (e.g. joaat(\"HOGTIED_PED\")).\n * \n * Notes:\n * - This is the inverse of LoadCarriableConfigHash.\n * - Before removing, you can check if a config is loaded using _0xB8F52A3F84A7CC59.\n * \n * Related: LoadCarriableConfigHash, _0xB8F52A3F84A7CC59\n```",
"timestamp": "2025-09-27T21:53:15.926+02:00"
},
{
"id": "1421603589331091486",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x288CBB414C3C2FBB\n// namespace VEHICLE\n\nint _GET_NUM_DRAFT_VEHICLE_LOGS(Vehicle vehicle);\n/*\nReturn the number of logs on a draft vehicle.\n*/\n```\n\n```c\n// 0x1121B07088ED3013\n// namespace VEHICLE\n\nint _GET_NUM_DRAFT_VEHICLE_STRAPS(Vehicle vehicle);\n/*\nReturn the number of straps that hold the logs of a draft vehicle.\n*/\n```",
"timestamp": "2025-09-27T23:05:07.814+02:00"
},
{
"id": "1421603760991371274",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_PED_MOUNT_LEAP_STATE\n```yaml\n// 0x9420FB11B8D77948\n// namespace TASK\n\nint _GET_PED_MOUNT_LEAP_STATE(Ped ped);\n/*\n* Returns a coarse state for the \"mount leap\" task when a ped jumps\n* from their horse onto another horse, a wagon, or a train.\n*\n* - ped: Ped to query (e.g., PlayerPedId()).\n*\n* Returns:\n* - -1 -> No leap task active / idle.\n* - 0 -> Leap started / in-air (button pressed, task initialized).\n* - 1 -> Leap completed successfully (mounted the target).\n* - 2 -> Special completion: boarded the rear trailer/platform of a train.\n*\n* Notes:\n* - Observed behavior: idle gives -1; pressing the leap button flips to 0;\n* on successful board it becomes 1 (or 2 for the train trailer case).\n* - Use this as a phase flag; for smooth timing use GET_PED_MOUNT_LEAP_PROGRESS.\n*\n* Related: GET_PED_MOUNT_LEAP_PROGRESS (0x6BA606AB3A83BC4D),\n*/\n```\nhttps://youtu.be/YZuw9lhqDms",
"timestamp": "2025-09-27T23:05:48.741+02:00"
},
{
"id": "1421603915354472629",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_PED_MOUNT_LEAP_PROGRESS\n```yaml\n// 0x6BA606AB3A83BC4D\n// namespace TASK\n\nfloat _GET_PED_MOUNT_LEAP_PROGRESS(Ped ped);\n/*\n* Returns a normalized progress value (≈0.0 → 1.0) for the \"mount leap\" task\n* as a ped jumps from their horse onto another horse, a wagon, or a train.\n*\n* - ped: Ped to query (e.g., PlayerPedId()).\n*\n* Returns:\n* - float in [0.0, 1.0] increasing during the leap animation/task.\n* (Observed samples while airborne: 0.0, 0.1, …, 0.7, then completion.)\n*\n* Notes:\n* - Typically 0.0 when idle; rises while the leap is playing.\n* - Pair with GET_PED_MOUNT_LEAP_STATE for discrete phase info (-1/0/1/2).\n* - If you only need completion, poll GET_PED_MOUNT_LEAP_STATE; use this for\n* timing/UI bars or mid-air checks.\n*\n* Related: GET_PED_MOUNT_LEAP_STATE (0x9420FB11B8D77948),\n*/\n```\nhttps://youtu.be/YZuw9lhqDms",
"timestamp": "2025-09-27T23:06:25.544+02:00"
},
{
"id": "1421605443158933514",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xD1EFA8D68BF5D63D\n// namespace VEHICLE\n\nvoid _BREAK_VEHICLE_STRAPS(Vehicle vehicle, Vector3 coords);\n/*\nOnly used to break draft vehicle log straps. Coords is always equal to the vehicle coords.\n*/\n```",
"timestamp": "2025-09-27T23:12:29.801+02:00"
},
{
"id": "1421608447513858119",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "(see the video above to understand better)\n```c\n// 0x42404D57D621601A\n// namespace VEHICLE\n\nEntity _RE*(Vehicle vehicle);\n/*\nReturn the draft vehicle log entity that just fall.\n*/\n```",
"timestamp": "2025-09-27T23:24:26.095+02:00"
},
{
"id": "1421624772042686527",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-28T00:29:18.166+02:00"
},
{
"id": "1421629674429087797",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-28T00:48:46.986+02:00"
},
{
"id": "1421675888516399164",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_CARRIABLE_CONFIG_PROMPT_ENABLED\n```yaml\n// 0x816A3ACD265E2297\n// namespace TASK\n\nvoid _SET_CARRIABLE_CONFIG_PROMPT_ENABLED(Hash carriableConfigHash, bool toggle);\n/*\n* Enables or disables the context/prompt associated with a given\n* carriable config hash. Typically used after calling LoadCarriableConfigHash\n* to control whether the player can interact with or use that carriable type.\n*\n* - carriableConfigHash: Hash of the carriable config (e.g. joaat(\"DEAD_CARRIABLE_HUMAN\")).\n* - toggle: true to enable the prompt, false to disable it.\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - Must be used with valid carriable configs. Commonly used when setting up\n* carrying tasks (TaskCarriable).\n* - If disabled, the prompt for picking up/using that carriable will not appear.\n* - Example flow:\n* LoadCarriableConfigHash(joaat(\"DEAD_CARRIABLE_HUMAN\"));\n* _SET_CARRIABLE_CONFIG_PROMPT_ENABLED(joaat(\"DEAD_CARRIABLE_HUMAN\"), true);\n*/\n```",
"timestamp": "2025-09-28T03:52:25.283+02:00"
},
{
"id": "1421677061600182353",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "https://natives.avarian.dev/native-name-confidence \n\nMight be useful, thanks fingaweg for his dump 🙏",
"timestamp": "2025-09-28T03:57:04.968+02:00"
},
{
"id": "1421687188093145274",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Started a thread.",
"timestamp": "2025-09-28T04:37:19.312+02:00"
},
{
"id": "1421846840071946275",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-28T15:11:43.31+02:00"
},
{
"id": "1422327252863025258",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-29T23:00:42.645+02:00"
},
{
"id": "1422342674022797327",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-09-30T00:01:59.336+02:00"
},
{
"id": "1422360734909730976",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_FINISH_SCENARIO_TRANSITION\n```yaml\n// 0x90703A8F75EE4ABD\n// namespace TASK\n\nbool _FINISH_SCENARIO_TRANSITION(Ped ped, float phaseOrDelta);\n/*\n* Attempts to finish/advance a ped’s ongoing scenario transition (between scenario clips/anims).\n* Returns true if the ped is in a scenario transition and the given value pushes it forward,\n* otherwise returns false.\n*\n* Parameters:\n* - ped: Ped — Target ped currently running a scenario (must be in transition for effect).\n* - phaseOrDelta: float — Unknown; behaves like a transition phase/progress delta (typically 0.0–1.0).\n*\n* Returns:\n* - bool — true if the transition advanced successfully, false otherwise.\n*\n* Notes:\n* - Only effective when the ped is already in a scenario transition.\n* - Useful as a check-and-advance helper in one call.\n* - Alphabetical placement: FI… group, between other FI* natives and FORCE_SCENARIO_GROUP_PRIORITY (FO…).\n*\n*/\n```\nhttps://youtu.be/BdUwEnkDopQ",
"timestamp": "2025-09-30T01:13:45.387+02:00"
},
{
"id": "1422391412950962249",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_IS_CARRIABLE_HAT_PICKUP_AVAILABLE\n```yaml\n// 0x11CD066F54DA0133\n// namespace TASK\n// Previous name : _IS_HAT_BEING_PICKED_UP\n//These older names did not accurately reflect the functions and also did not fit the alphabetical order.\n\nbool _IS_CARRIABLE_HAT_PICKUP_AVAILABLE(Entity hat);\n/*\n* EN: Checks if a carriable hat object on the ground can currently be picked up.\n*\n* Parameters:\n* - hat: Entity — The hat object (dropped/unequipped).\n*\n* Returns:\n* - bool — true if the hat can be picked up, false otherwise.\n*\n* Notes:\n* - Use before starting the pickup/equip flow.\n* - Related: _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED, _IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE.\n*/\n```\nhttps://youtu.be/grcyyZdGNNY",
"timestamp": "2025-09-30T03:15:39.602+02:00"
},
{
"id": "1422391454646403084",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_REQUEST_CARRIABLE_HAT_EQUIP_TO_PED\n```yaml\n// 0x9ADDBB9242179D56\n// namespace TASK\n\nvoid _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED(Entity hat, Ped ped);\n/*\n* EN: Requests that the given carriable hat be assigned for equip by the ped.\n* After success, _IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE(hat) will return true.\n*\n* Parameters:\n* - hat: Entity — The hat object.\n* - ped: Ped — The ped who will equip the hat.\n*/\n```\nhttps://youtu.be/grcyyZdGNNY",
"timestamp": "2025-09-30T03:15:49.543+02:00"
},
{
"id": "1422391490889650176",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE\n```yaml\n// 0x4ECCC2815CA79AE2\n// namespace TASK\n// Previous name : _IS_HAT_BEING_PICKED_UP_2\n//These older names did not accurately reflect the functions and also did not fit the alphabetical order.\n\nbool _IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE(Entity hat);\n/*\n* EN: Returns whether a carriable hat equip request is currently active.\n* Usually becomes true right after _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED is called.\n*\n* Parameters:\n* - hat: Entity — The hat object.\n*\n* Returns:\n* - bool — true if an equip request is active, false otherwise.\n*\n* Notes:\n* - Common flow: _IS_CARRIABLE_HAT_PICKUP_AVAILABLE → _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED\n* → _IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE → _APPLY_HAT_TO_PED_IMMEDIATE.\n* - Related: _IS_CARRIABLE_HAT_PICKUP_AVAILABLE, _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED.\n*/\n```\nhttps://youtu.be/grcyyZdGNNY",
"timestamp": "2025-09-30T03:15:58.184+02:00"
},
{
"id": "1422391528290123859",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_APPLY_HAT_TO_PED_IMMEDIATE\n```yaml\n// 0xAA0AF6025160243A\n// namespace TASK\n// Previous name : _TASK_EQUIP_HAT\n//These older names did not accurately reflect the functions and also did not fit the alphabetical order.\n\nvoid _APPLY_HAT_TO_PED_IMMEDIATE(Entity hat, Ped ped);\n/*\n* EN: Immediately applies the given hat to the ped’s head without any animation.\n* Directly equips the hat, skipping the pickup anim flow.\n*\n* Parameters:\n* - hat: Entity — The hat object.\n* - ped: Ped — The ped who will wear the hat.\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - Related: _IS_CARRIABLE_HAT_PICKUP_AVAILABLE, _REQUEST_CARRIABLE_HAT_EQUIP_TO_PED,\n* _IS_CARRIABLE_HAT_PICKUP_REQUEST_ACTIVE.\n*/\n```\nhttps://youtu.be/grcyyZdGNNY",
"timestamp": "2025-09-30T03:16:07.101+02:00"
},
{
"id": "1422408400943321181",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_REMOVE_TASK_CARRIABLE\n```yaml\n// 0x9EBD34958AB6F824\n// namespace TASK\n\nvoid _REMOVE_TASK_CARRIABLE(Entity carriable);\n/*\n* Removes the TaskCarriable association for the given entity.\n* - If a ped is currently carrying this entity, it will be **dropped** immediately.\n* - If it is not being carried, the carriable **link/state** created via TaskCarriable(...) is cleared.\n*\n* Parameters:\n* - carriable: Entity — The carriable entity whose TaskCarriable state should be removed.\n*\n* Returns:\n* - void\n*\n* Notes:\n* - Alphabetical fit: after REMOVE_COVER_POINT (CO…) and before REMOVE_WAYPOINT_RECORDING (WA…).\n* - Pairs with: TaskCarriable(entity, carryConfig, carrier, carriableSlot, flags).\n```\nhttps://youtu.be/hE-0R4oP5yEe",
"timestamp": "2025-09-30T04:23:09.855+02:00"
},
{
"id": "1422416448575504524",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_HAS_PED_DIRECTED_TASK_ACTIVE\n```yaml\n// 0x9FF5F9B24E870748\n// namespace TASK\n\nbool _HAS_PED_DIRECTED_TASK_ACTIVE(Entity entity);\n/*\n* Returns true if the given entity currently has an active **directed task** —\n* that is, a task with a specific external objective (coordinate, entity, vehicle, or combat target).\n*\n* Known to return true for:\n* - TaskGoToCoordAnyMeans(ped, ...)\n* - TaskGoToEntity(ped, target, ...)\n* - TaskCombatPed(ped, targetPed, ...)\n* - TaskWarpPedIntoVehicle(ped, vehicle)\n*\n* Tasks without an external directive (e.g., TaskStartScenarioInPlace, TaskPlayAnim)\n* usually do not trigger this check.\n*\n* Parameters:\n* - entity: Entity — The entity to check (commonly a Ped).\n*\n* Returns:\n* - bool — true if a directed/objective task is active, false otherwise.\n*\n```\nhttps://youtu.be/gearAe_IZ8M",
"timestamp": "2025-09-30T04:55:08.56+02:00"
},
{
"id": "1422608152909709493",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// 0x957D7E750216D74B\n// namespace AICOVERPOINT\nint _GET_PED_COVER_POINT_TRANSITION_STATE(Ped ped);\n// returns the active transition state of a cover point for about 2 seconds unless its peeking\n// transition states that I've tested and found\n// 1 - transition from pointing a gun to not pointing a gun\n// 2 - transition to pointing a gun\n// 3 - broke the window \n// 4 - when opening a door while in cover (a prompt will show and once pressed state is changed to 4)\n// 5 - cover transition like from one corner of a house to the other corner\n// 6 - changing cover to cover like crossing from one side of the door to the other\n// 7 - when the ped is facing foward with the camera, might be to detect when going from left to right\n// 8 - when the ped is peeking through a door window etc (this will return 8 while is in peek)\n// 9 - when a ped is aiming in crouch and enters cover (it doesnt always trigger)\n// 10 - enters cover\n// 12 - leaves cover\n// 16 - changed to crouch or to standing up position\n```",
"timestamp": "2025-09-30T17:36:54.435+02:00"
},
{
"id": "1422623436424871948",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// _0x140B3CB1D424A945\n// namespace AICOVERPOINT\nvoid _REQUEST_WEAPON_COVER_ANIM_FOR_PED(Ped ped, int weaponHash);\n// seems to load the weapon for the ped related to cover anims when its needed\n// -1 seems to be used to clean it from the ped, many times is used before requesting a new one\n```",
"timestamp": "2025-09-30T18:37:38.309+02:00"
},
{
"id": "1422625237123465226",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// 0x53E4D0C079CA6855\n// namespace AICOVERPOINT\nint _GET_PED_FROM_COVER_POINT(int coverPoint)\n// returns the ped that is using this cover point created by ADD_COVER_POINT and adding the ped using tasks like TASK_PUT_PED_DIRECTLY_(*)\n```",
"timestamp": "2025-09-30T18:44:47.629+02:00"
},
{
"id": "1422659963670499538",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_CARRIABLE_PICKUP_PROMPT_ENABLED\n```yaml\n// 0xA21AA2F0C2180125\n// namespace TASK\n\nvoid _SET_CARRIABLE_PICKUP_PROMPT_ENABLED(Entity carriableObject, bool enabled);\n/*\n* Enables or disables the contextual **\"Pick Up\"** prompt for a carriable entity.\n*\n* Parameters:\n* - carriableObject: Entity — A carriable entity (animal carcass, pelt bundle, sack/crate flagged as carriable, etc.).\n* - enabled: bool — true to show/enable the \"Pick Up\" prompt, false to hide/disable it.\n*\n* Returns:\n* - (none) — This native does not return a value.\n*\n* Notes:\n* - Has effect only if the entity is carriable; use TASK::_GET_IS_CARRIABLE_ENTITY(entity) to verify beforehand.\n* - This controls UI/interaction availability of the **prompt**; it does not force-release or prevent scripted pickup tasks.\n* - Compared to issuing a pickup task (e.g., TASK::TASK_PICKUP_CARRIABLE_ENTITY), this native only toggles the **prompt visibility/availability** without starting any task.\n*\n* Related Natives:\n* - TASK::_GET_IS_CARRIABLE_ENTITY(entity)\n* - TASK::TASK_PICKUP_CARRIABLE_ENTITY(ped, entity, ... )\n*/\n```",
"timestamp": "2025-09-30T21:02:47.083+02:00"
},
{
"id": "1422690371653079163",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// 0x64340DC208D671D5\n// namespace AICOVERPOINT\nvoid _ACTIVATE_COVER_LAYER(char* coverLayer);\n// activates a cover layer, these seem to be for specifc scenes in SP for example where a table is flipped using \"grand_korr_poker_table_flipped\" see more in levels\\rdr3\\coverlayers.rpf\n```\n\n```C\n// _0x7A1FDCF35EAA140F\n// namespace AICOVERPOINT\nvoid _DEACTIVATE_COVER_LAYER(char* coverLayer);\n// deactivates a cover layer loaded with 0x64340DC208D671D5\n```\n\n```lua\n-- nativeson2_ambushtrees\n-- nativeson2_fallentrees\n-- grand_korr_poker_table_flipped\n```",
"timestamp": "2025-09-30T23:03:36.911+02:00"
},
{
"id": "1422805049448599562",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// 0x18D6869FBFFEC0F8\n// namespace UIFEED\nint _UI_FEED_POST_INTERACTIVE_TOAST(Any* p0,Any* p1, bool p2, bool p3);\n// plays the interact feed notification on the top left screen\n```\n\n```lua\n-- you need dataview for this\nRegisterCommand(\"notify\", function()\n UiFeedClearAllChannels()\n local function bigInt(text)\n local _string = DataView.ArrayBuffer(16)\n _string:SetInt64(0, text)\n return _string:GetInt64(0)\n end\n\n local hash = \"elements_stamps_icons\"\n if not HasStreamedTextureDictLoaded(hash) then\n RequestStreamedTextureDict(hash, true)\n repeat Wait(0) until HasStreamedTextureDictLoaded(hash)\n end\n\n local data = DataView.ArrayBuffer(8 * 7)\n data:SetInt32(8 * 0, bigInt(-2)) -- -2 or -1 to always show\n -- sounds\n data:SetInt64(8 * 1, bigInt(0 --[[ VarString(10, \"LITERAL_STRING\", \"Transaction_Feed_Sounds\") ]])) -- optional\n data:SetInt64(8 * 2, bigInt(0 --[[ VarString(10, \"LITERAL_STRING\", \"Transaction_Positive\") ]]))\n\n data:SetInt32(8 * 3, bigInt(0)) -- unknown INPUT_FEED_INTERACT_GENERIC\n data:SetInt64(8 * 4, bigInt(0)) -- unknown joaat(\"player_menu\")\n data:SetInt64(8 * 5, bigInt(0)) -- unknown joaat(\"sp_notifications\")\n data:SetInt64(8 * 6, bigInt(VarString(10, \"LITERAL_STRING\", \"2nd ~INPUT_CONTEXT_B~ description\")))\n\n local info = DataView.ArrayBuffer(8 * 7)\n info:SetInt32(8 * 0, bigInt(0)) -- unknown\n info:SetInt64(8 * 1, bigInt(VarString(10, \"LITERAL_STRING\", \"Hello title\")))\n info:SetInt64(8 * 2, bigInt(VarString(10, \"LITERAL_STRING\", \"Hello description\")))\n info:SetInt32(8 * 3, bigInt(0)) -- unknown\n info:SetInt64(8 * 4, bigInt(joaat(\"elements_stamps_icons\")))\n info:SetInt64(8 * 5, bigInt(joaat(\"stamp_cash\")))\n info:SetInt32(8 * 6, bigInt(joaat(\"COLOR_WHITE\")))\n\n\n Citizen.InvokeNative(0x18D6869FBFFEC0F8, data:Buffer(), info:Buffer(), true, true)\nend, false)\n```",
"timestamp": "2025-10-01T06:39:18.228+02:00"
},
{
"id": "1422969816787980390",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "```C\n// 0xAFF5BE9BA496CE40\n// namespace UIFEED\nint _UI_FEED_POST_COLLECTOR_TOAST(Any* p0, Any* p1, bool p2, bool p3, Hash collectableCategory)\n// same notfiy as 0x18D6869FBFFEC0F8 but allows to use a duration, I dont see any difference between them 2 besides allowing to use duration\n```",
"timestamp": "2025-10-01T17:34:01.823+02:00"
},
{
"id": "1422970108556349491",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "can use this for the above ^ just change the `native` and add last param to it `joaat(\"WEEKLY_COLLECTABLES\")` or others, no difference",
"timestamp": "2025-10-01T17:35:11.386+02:00"
},
{
"id": "1423029648828399854",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_UPDATE_TASK_VEHICLE_SHOOT_AT_COORD\n```yaml\n// 0xAF2EF28CE3084505\n// namespace TASK\n\nvoid _UPDATE_TASK_VEHICLE_SHOOT_AT_COORD(Ped ped, float x, float y, float z);\n/*\nUpdates the target coordinate of an ongoing SCRIPT_TASK_VEHICLE_SHOOT_AT_COORD for the given ped.\nThis lets you \"retarget\" the shooting point in real time without restarting the task.\n\nParameters:\n- ped: Ped — The ped executing the vehicle shoot task (must be in a vehicle and have the task running).\n- x, y, z: float — The new world coordinate to shoot at. (Alternatively pass a Vector3.)\n\nReturns:\n- void\n\nNotes:\n- Has effect only while the ped’s task status for SCRIPT_TASK_VEHICLE_SHOOT_AT_COORD is `TASK_STATUS_ONGOING` (commonly 1).\n- If the task hasn’t started yet (status 0 or not running), use TASK::TASK_VEHICLE_SHOOT_AT_COORD first; after it becomes active, call this to update the aim point.\n- Compared to TASK_VEHICLE_SHOOT_AT_COORD: the latter starts (or re-queues) the task with an initial target; this native *only* updates the active task’s target coordinate.\n\nRelated natives:\n- TASK::TASK_VEHICLE_SHOOT_AT_COORD(ped, x, y, z, speedOrDuration)\n- TASK::GET_SCRIPT_TASK_STATUS(ped, SCRIPT_TASK_VEHICLE_SHOOT_AT_COORD, bool p2)\n*/\n```\nhttps://youtu.be/pCW2pgELnqI",
"timestamp": "2025-10-01T21:31:46.893+02:00"
},
{
"id": "1423035112693567508",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_DOES_PED_FISHING_WAIT_FOR_BITE\n```yaml\n// 0xB520DBDA7FCF573F\n// namespace TASK\n\nbool _DOES_PED_FISHING_WAIT_FOR_BITE(Ped ped);\n/*\nReturns true while the ped has cast the fishing line and is **waiting for a fish to bite**.\nOnce the ped hooks a fish and enters the struggle/reeled-in phase, this returns false.\n\nParameters:\n- ped: Ped — The ped to query.\n\nReturns:\n- bool — true after the line is cast and until a fish bites; false during hook/struggle phase or when not actively waiting.\n```\nhttps://youtu.be/BjW7SBIil1c",
"timestamp": "2025-10-01T21:53:29.58+02:00"
},
{
"id": "1423062374457278609",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "pulsehabour",
"author_id": "1309153036022714435",
"content": "Started a thread.",
"timestamp": "2025-10-01T23:41:49.291+02:00"
},
{
"id": "1423062961580277760",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "outsider7719",
"author_id": "668997092902961158",
"content": "Research for the notification with objective sequences, using databinds and dataview\nthe example also demonstrates a failed action where the dot gets red and then greyed out\n### [Gist](https://gist.github.com/outsider31000/2293c5e33db1218c1f4e735f6a0eb340)",
"timestamp": "2025-10-01T23:44:09.272+02:00"
},
{
"id": "1423398633113649194",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_FIND_SCENARIO_ALL_POINTS_IN_VOLUME_OF_TYPE\n```yaml\n// 0xB8E213D02F37947D\n// namespace TASK\n\nint _FIND_SCENARIO_ALL_POINTS_IN_VOLUME_OF_TYPE(Volume volume, Itemset itemset, Hash scenarioType, int p3, int p4, int p5, int p6);\n/*\n* English:\n* Finds **all** scenario points of a given type that lie inside a Volume and writes them into an Itemset.\n* Typically used with ITEMSET::CREATE_ITEMSET(true). Iterate results with\n* ITEMSET::GET_ITEMSET_SIZE and ITEMSET::GET_INDEXED_SCENARIO_POINT_INDEX_IN_ITEMSET.\n*\n* Parameters:\n* - volume: Volume — Search volume (e.g., from CREATE_VOLUME_BOX / CYLINDER / AGGREGATE).\n* - itemset: Itemset — Destination container to receive scenario point handles.\n* - scenarioType: Hash — Scenario type hash (e.g., `RANSACK_ATTACHED_LOCKBOX_SML_LOCKED`).\n* - p3, p4, p5, p6: int/unk — Unknown flags/params; pass 0 for default behavior.\n*\n* Returns:\n* - int — Count of scenario points added to the itemset (observed; some scripts ignore the return value).\n*\n* Notes:\n* - Entries are **scenario point IDs**; validate via TASK::DOES_SCENARIO_POINT_EXIST,\n* enable/disable via TASK::_SET_SCENARIO_POINT_ACTIVE.\n* - Versus TASK::FIND_SCENARIO_OF_TYPE_HASH (which returns a single nearest point),\n* this native **collects multiple points** within the provided volume.\n* - Remember to ITEMSET::DESTROY_ITEMSET when finished.\n*\n* Related:\n* - TASK::FIND_SCENARIO_OF_TYPE_HASH\n* - TASK::DOES_SCENARIO_POINT_EXIST\n* - TASK::_SET_SCENARIO_POINT_ACTIVE\n* - ITEMSET::GET_ITEMSET_SIZE\n* - ITEMSET::GET_INDEXED_SCENARIO_POINT_INDEX_IN_ITEMSET\n* - ITEMSET::DESTROY_ITEMSET\n```\n\nLua Example\n```lua\nlocal ped = PlayerPedId()\nlocal scenarioType = GetHashKey(\"RANSACK_ATTACHED_LOCKBOX_SML_LOCKED\")\nlocal itemset = CreateItemset(true)\nlocal volume = CreateVolumeBox(465.4113, 2251.546, 247.78157, 0.0, 0.0, 0.0, 3.0, 3.0, 3.0)\nlocal count = Citizen.InvokeNative(0xB8E213D02F37947D, volume, itemset, scenarioType, 0, 0, 0, 0)\nprint(\"Found scenario points:\", count)\nfor i = 0, GetItemsetSize(itemset) - 1 do\n local scenarioPoint = GetIndexedScenarioPointIndexInItemset(i, itemset)\n if Citizen.InvokeNative(0x841475AC96E794D1, scenarioPoint) then -- TASK::DOES_SCENARIO_POINT_EXIST\n Citizen.InvokeNative(0xEEE4829304F93EEE, scenarioPoint, true) -- TASK::_SET_SCENARIO_POINT_ACTIVE\n print(\"Enabled scenario point:\", i)\n end\nend\nDestroyItemset(itemset)\n```",
"timestamp": "2025-10-02T21:57:59.602+02:00"
},
{
"id": "1423408402914349107",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_PED_APPLY_FOLLOW_ROAD_SPEED_OVERRIDE\n```yaml\n// 0xBAAB791AA72C2821\n// namespace TASK\nvoid _PED_APPLY_FOLLOW_ROAD_SPEED_OVERRIDE(Ped ped, float speed);\n\nIt's not alphabetical, but I chose this name because it describes what it does. If you have any suggestions, please let me know.\n\nNote: In the video, other horses are also accelerating. There's a while loop running in the background that triggers this function for all nearby horses.\n\n/*\n* Sets the AI travel speed for a mount (horse). Affects how fast the horse’s AI will move\n* when being controlled by AI logic (not player input), e.g. during escorts, flee, wander, or scripted tasks.\n*\n* Parameters:\n* - horse: Ped — The horse (mount) ped entity.\n* - speed: float — Target AI speed. Exact unit/clamp is not fully verified; treat as a desired speed/blend value.\n* - Common values: small numbers for walk/trot, larger for canter/gallop. Use 0.0 to effectively halt AI.\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - This sets the **AI’s desired speed**; it does not override direct player control of the horse.\n* - Pairs well with TASK commands that drive the mount (e.g., TaskFollowToOffsetEntity, TaskGoToEntity, TaskSmartFlee).\n* - If you need per-frame control while a TASK is running, call this before/after assigning the task or when state changes.\n* - Unknowns: engine-side clamping and scaling of `speed` are not fully documented; adjust empirically.\n*\n\n* Related:\n* - TASK::TASK_GO_TO_ENTITY / TASK::TASK_FOLLOW_TO_OFFSET_ENTITY (tasks that will honor AI speed)\n* - PED::IS_PED_ON_MOUNT (to ensure the ped is a mount or ridden)\n* - etc\n```\nhttps://youtu.be/aupII2O9vT8",
"timestamp": "2025-10-02T22:36:48.904+02:00"
},
{
"id": "1423423501972406308",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "skiddytoast",
"author_id": "412069599249563649",
"content": "Started a thread.",
"timestamp": "2025-10-02T23:36:48.8+02:00"
},
{
"id": "1423455282788433991",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_FIND_SCENARIO_AT_OBJECT_OF_TYPE\n```yaml\n// 0xD508FA229F1C4900\n// namespace TASK\n\nint _FIND_SCENARIO_AT_OBJECT_OF_TYPE(Entity object, float offsetX, float offsetY, float offsetZ, Hash scenarioType, float radius);\n/*\n* English:\n* Returns a **scenario point handle** of the given scenario type that is associated with / found near\n* the specified object. Useful for “attached” scenarios (e.g., ransackable lockboxes on a prop).\n*\n* Parameters:\n* - object: Entity — The reference object/prop to query against.\n* - offsetX, offsetY, offsetZ: float — Local/world offset from the object to anchor the search (observed usage passes 0.0,0.0,0.0).\n* - scenarioType: Hash — Scenario type hash (e.g., RANSACK_ATTACHED_LOCKBOX_MED_LOCKED).\n* - radius: float — Search radius around the (object + offset) anchor.\n*\n* Returns:\n* - int — Scenario point ID/handle. Validate with TASK::DOES_SCENARIO_POINT_EXIST before use.\n```",
"timestamp": "2025-10-03T01:43:05.937+02:00"
},
{
"id": "1423468061377171506",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SWAP_REINS_FOR_VEHICLE\n```yaml\n// 0xE01F55B2896F6B37\n// namespace TASK\n\nvoid _SWAP_REINS_FOR_VEHICLE(Vehicle vehicle, bool instant);\n/*\n* Transfers the **driving reins/control** of a vehicle (e.g., wagon/coach) to another occupant\n* when there is more than one ped inside. If `instant` is true, the handover happens instantly;\n*\n* Parameters:\n* - vehicle: Vehicle — Target vehicle (wagons/coaches/other reins-driven vehicles).\n* - instant: bool — True = instant handover (no animation), False = play handover animation.\n*\n* Returns:\n* - void\n```",
"timestamp": "2025-10-03T02:33:52.59+02:00"
},
{
"id": "1423664046103593034",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "Explanation of the **_ITEMDATABASE_CREATE_ITEM_COLLECTION** filter struct (with random config).\n```c\nint _ITEMDATABASE_CREATE_ITEM_COLLECTION(const ItemCollectionFilter* filter, int* size, int comparisonType);\n/*\nstruct ItemCollectionFilter\n{\n Hash slotId; /* `SLOTID_WEAPON_0` */\n Hash slotId2; /* `SLOTID_WEAPON_1` */\n Hash tag; /* `TAG_ITEM_PROPERTY` */\n Hash ciCategory; /* `CI_CATEGORY_HERBS` */\n Hash cost; /* `COST_GOLD` */\n Hash unk5; /* 0 */\n int flags; /* -1 */\n Hash itemType; /* `WEAPON` */\n Hash ciTag; /* `CI_TAG_ITEM_EQUIPMENT` */\n}\n*/\n```",
"timestamp": "2025-10-03T15:32:38.99+02:00"
},
{
"id": "1423704096774295644",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "**Edit: after reviewing the outputs, I think I'm wrong about the name.**\n\n```c\n// 0x8870895BA5ED9385\n// namespace ITEMDATABASE\n\nint _ITEMDATABASE_GET_ITEM_TAG_TAGS(Hash key, Hash tag, Any* data);\n/*\n* Outputs the \"ci\" tags of the selected item tag.\n*\n* Parameters:\n* - key: Hash — Wanted key (e.g WEAPON_RIFLE_VARMINT).\n* - tag: Hash — The item tag (e.g TAG_ITEM_PROPERTY).\n* - data: Any* - CI tag list starting at the offset \"1\", the offset 0 is to define the max number of tags you want to collect (uselly 5 in R* scripts, surelly the limit).\n*\n* Returns:\n* - int: unknow value (it's not the number of tags)\n```\n```lua\nlocal data = DataView.ArrayBuffer(64*8)\ndata:SetInt32(0*8, 5)\n\nlocal num = Citizen.InvokeNative(0x8870895BA5ED9385, `PROVISION_JEWELRY_BOX_LRG_POOR_01`, `TAG_ITEM_PROPERTY`, data:Buffer(), Citizen.ResultAsInteger())\nif (num > 0) then\n for i=0, 5 do\n local tag = data:GetInt32(i*8)\n if (tag == 0) then\n break\n end\n print(i, tag)\n end\nend\n```",
"timestamp": "2025-10-03T18:11:47.814+02:00"
},
{
"id": "1423784611506552912",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_CANCEL_PED_HOGTIE\n```yaml\n// 0xE2CF104ADD49D4BF\n// namespace TASK\n\nvoid _CANCEL_PED_HOGTIE(Ped ped);\n/*\nCancels the hogtie state of a ped, releasing them from ropes or restraints.\nIf the ped is currently hogtied on the ground, carried on a shoulder,\nlassoed, or tied to a horse, this native will clear the hogtie state and\nreturn the ped to free/normal behavior.\n\nParameters:\n- ped: Ped — The ped to release.\n\nReturns:\n- void\n```",
"timestamp": "2025-10-03T23:31:44.022+02:00"
},
{
"id": "1424044240316661882",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_FORCE_ANIMAL_SAMPLED\n```yaml\n// 0xF3C3503276F4A034\n// namespace TASK\n\nvoid _FORCE_ANIMAL_SAMPLED(Ped animal, bool toggle);\n/*\n* Forces the specified animal/ped to have (or not have) its \"sampled\" state flag set.\n* Acts as the setter counterpart to:\n* _HAS_PED_ANIMAL_SAMPLED(animal)\n*\n* Parameters:\n* - animal: Ped — The target animal (commonly a Legendary Animal).\n* - toggle: bool — true to flag the ped as sampled; false to clear the flag.\n*\n* Returns:\n* - void\n*\n* Notes:\n* - Likely part of the Legendary Animal/Naturalist sampling system in RDO.\n* - Writes a boolean flag that determines whether an animal has been sampled.\n* - Alphabetically fits within the FORCE_* group (near FORCE_SCENARIO_GROUP_PRIORITY).\n*\n* ⚠️ Name uncertainty:\n* - \"_FORCE_ANIMAL_SAMPLED\" fits alphabetically, but the true internal meaning of this native \n* isn't fully verified yet. Consider that it might later be adjusted to a `SET_` or `FLAG_` prefix.\n*\n* Related Natives:\n* - _HAS_PED_ANIMAL_SAMPLED(Ped animal)\n*/\n```",
"timestamp": "2025-10-04T16:43:24.354+02:00"
},
{
"id": "1424044471976202330",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_HAS_PED_ANIMAL_SAMPLED\n```yaml\n// 0x7CB99FADDE73CD1B\n// namespace TASK\n\nbool _HAS_PED_ANIMAL_SAMPLED(Ped animal);\n/*\n* Returns true if the specified ped (animal) has been flagged as sampled.\n* This is presumed to read a boolean flag set by:\n* _FORCE_ANIMAL_SAMPLED(animal, bool toggle)\n*\n* Parameters:\n* - animal: Ped — The target ped (typically a Legendary Animal).\n*\n* Returns:\n* - bool — true if the ped is marked as sampled, false otherwise.\n*\n* Notes:\n* - Used in cleanup logic or to prevent respawning already-sampled legendary animals.\n* - Reads a stored state flag rather than a timed event.\n*\n* ⚠️ Name uncertainty:\n* - \"_HAS_PED_ANIMAL_SAMPLED\" is descriptive, but its exact internal label or canonical prefix \n* is not fully confirmed; could alternatively be `GET_` or `IS_` in future naming.\n*\n* Related Natives:\n* - _FORCE_ANIMAL_SAMPLED(Ped animal, bool toggle)\n*/\n```",
"timestamp": "2025-10-04T16:44:19.586+02:00"
},
{
"id": "1424052171787210854",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TASK_POINT_AT_ENTITY\n```yaml\n// 0xF40A109B4B79A848\n// namespace TASK\n\nvoid _TASK_POINT_AT_ENTITY(Ped ped, Entity targetEntity, int durationMs);\n/*\n* Orders the ped to point at the given entity (finger/upper-body point), similar to a\n* “task point entity” behavior.\n*\n* Parameters:\n* - ped: Ped — The ped who will perform the pointing gesture.\n* - targetEntity: Entity — The entity to point at.\n* - durationMs: int — Duration in milliseconds to keep pointing (use a positive value; 0/negative is unknown).\n*\n* Returns:\n* - void\n```\n\nLua example\n```lua\nRegisterCommand(\"_TASK_POINT_AT_ENTITY\",function(src,args,raw)\n local targetEntity = tonumber(args[1])\n local playerped = PlayerPedId()\n local pedCoords = GetEntityCoords(playerped) \n local openSeq = Citizen.InvokeNative(0xE8854A4326B9E12B, Citizen.PointerValueInt())\n TaskTurnPedToFaceEntity(playerped, targetEntity, 1000, -1.0, -1.0, -1.0)\n Citizen.InvokeNative(0xF40A109B4B79A848, playerped, targetEntity, 30000) -- _TASK_POINT_AT_ENTITY\n CloseSequenceTask(openSeq)\n TaskPerformSequence(playerped, openSeq)\n print(\"pointing to entity: \" .. tostring(targetEntity))\nend)\n```",
"timestamp": "2025-10-04T17:14:55.364+02:00"
},
{
"id": "1424080426636546220",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_PLAY_CONDITIONAL_ANIM_WITH_PROPITEM\n```yaml\n// 0xCE7A6C1D5CDE1F9D\n// namespace PED\n\nvoid _PLAY_CONDITIONAL_ANIM_WITH_PROPITEM(Ped ped, Entity targetEntity, const char* propItemId, const char* conditionalAnimName);\n/*\n* Plays a **conditional locomotion animation** with an attached prop item, \n* commonly used for LOCO attachment interactions (e.g., attaching/carrying a crate).\n*\n* Parameters:\n* - ped: Ped — The ped playing the animation.\n* - targetEntity: Entity — The context or linked entity (often the object being manipulated).\n* - propItemId: const char* — Prop item identifier from ConditionalAnims.propitem (e.g., \"P_CS_CRATETNT01X_PH_R_HAND\").\n* - conditionalAnimName: const char* — Name of the conditional locomotion anim (e.g., \"LOCO_ATTACH_CRATE_TNT\").\n*\n* Returns:\n* - void\n*\n* Notes:\n* - Tied to **“LOCO ONLY ATTACHMENTS”** (ConditionalAnims). \n* - Blends the animation with locomotion and attaches the specified prop.\n* - Commonly used for Naturalist/mission crate, TNT, or carry-style animations.\n* - :warning: Native name not confirmed; “PLAY_CONDITIONAL_ANIM_WITH_PROPITEM” chosen based on observed usage and alphabetical placement.\n*\n```\n\nLua Example\n```lua\nRegisterCommand(\"_PLAY_CONDITIONAL_ANIM_WITH_PROPITEM\",function(src,args,raw)\n print(\"qadr_search started\") \n local targetEntity = tonumber(args[1])\n local playerped = PlayerPedId()\n local pedCoords = GetEntityCoords(playerped)\n local DetachEntity = DetachEntity(targetEntity, false, true)\n Citizen.InvokeNative(0xCE7A6C1D5CDE1F9D, playerped, targetEntity, \"P_CS_CRATETNT01X_PH_R_HAND\", \"LOCO_ATTACH_CRATE_TNT\") \n local AttachEntity = AttachEntityToEntity(targetEntity, playerped, GetPedBoneIndex(playerped, 7966), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, false, false, false, false, 2, true, false, false)\nend)\n```",
"timestamp": "2025-10-04T19:07:11.845+02:00"
},
{
"id": "1424085422887407797",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_REMOVE_PED_PROPITEM_CONDITIONAL_ANIM\n```yaml\n// 0x3A50753042B6891B\n// namespace PED\n// prev name : _REMOVE_PED_PROP\nvoid _REMOVE_PED_PROPITEM_CONDITIONAL_ANIM(Ped ped, const char* propItemId);\n/*\n* Stops and clears a running **conditional locomotion animation** previously started by _PLAY_CONDITIONAL_ANIM_WITH_PROPITEM.\n*\n* Parameters:\n* - ped: Ped — The ped whose conditional prop animation should be stopped.\n* - propItemId: const char* — The prop item id used when starting the animation \n* (e.g., \"P_CS_CRATETNT01X_PH_R_HAND\").\n*\n* Returns:\n* - void\n*\n* Notes:\n* - This does **not** remove the physical prop entity itself, but rather ends the active\n* locomotion/conditional animation associated with it.\n* - Typically used when the ped finishes or aborts a “LOCO ONLY ATTACHMENTS” sequence.\n* - ⚠️ Previous labeling as `_REMOVE_PED_PROP` is inaccurate; this function stops a conditional animation, not an attached prop model.\n*\n* Related Natives:\n* - _PLAY_CONDITIONAL_ANIM_WITH_PROPITEM(ped, targetEntity, propItemId, conditionalAnimName)\n*/\n```",
"timestamp": "2025-10-04T19:27:03.044+02:00"
},
{
"id": "1424121822177267943",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "I let this here if someone wanna do some search, I'm not sure about its utility. I'm thinking about mission rewards.\n```c\n // 0xD076DB9B96FAADF1\n // namespace ITEMDATABASE\n\n int _ITEMDATABASE_GET_AWARD_*(Hash unk0, Any* data);\n /*\n * Outputs \n *\n * Parameters:\n * - unk0: Hash —\n * - data: Any* —\n *\n * Returns:\n * - bool: true if successful, false otherwise.\n */\n \n struct data\n {\n Hash hash;\n Hash unk1;\n int numRewards;\n int maxRewards;\n struct reward rewards;\n }\n\n struct reward\n {\n Hash type;\n float value;\n }\n```\n```lua\n local hashes = {\n 231565871,\n 882569845,\n 19216914,\n -1849212108,\n 151986531,\n 187757919,\n 1089319681,\n 2071997805,\n -1478986105,\n }\n\n local data = DataView.ArrayBuffer(32 * 8)\n data:SetInt32(3*8, 10)\n\n for _, hash in ipairs(hashes) do\n if (Citizen.InvokeNative(0xD076DB9B96FAADF1, hash, data:Buffer()) == 1) then\n local hash0 = data:GetInt32(0*8)\n local unk1 = data:GetInt32(1*8)\n local len = data:GetInt32(2*8)\n local maxOutputs = data:GetInt32(3*8)\n\n local str = \"Hash: %d, unk1: %d, len: %d, maxOutputs: %d\\n\"\n str = str:format(hash0, unk1, len, maxOutputs)\n\n for i = 4, 4 + (len*2) - 1 do\n local v = 0\n \n if (i % 2 == 0) then\n v = data:GetInt32(i*8)\n else\n v = data:GetFloat32(i*8)\n v = tonumber((\"%.2f\"):format(v))\n end\n\n str = str .. (\" [%d] = %s\\n\"):format(i, v)\n end\n\n print(str)\n end\n end\n```",
"timestamp": "2025-10-04T21:51:41.311+02:00"
},
{
"id": "1424135398388531201",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xDBEADA0DF5F9AB9F\n// namespace ITEMDATABASE\n\nbool _ITEMDATABASE_GET_SHOP_LAYOUT_PAGE_INFO_BY_INDEX(Hash layout, int index, struct PageInfo* pageInfo);\n/*\n* Outputs the layout page info at the selected index.\n*\n* Parameters:\n* - layout: Hash — \n* - index: int — \n* - PageInfo: pageInfo* — \n*\n* Returns:\n* - bool: true if successful, false otherwise.\n*/\nstruct PageInfo\n{\n Hash pageKey;\n Hash unk1;\n bool unk2;\n int numItems;\n}\n```\n```lua\nlocal data = DataView.ArrayBuffer(4 * 8)\nif (Citizen.InvokeNative(0xDBEADA0DF5F9AB9F, `st_doctor`, 0, data:Buffer()) == 1) then\n local pageKey = data:GetInt32(0)\n ...\nend\n```",
"timestamp": "2025-10-04T22:45:38.132+02:00"
},
{
"id": "1424326626035892265",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mikethemadkiwi",
"author_id": "143756107733663744",
"content": "I'd wager these fit perfectly into the values needed to add an xp item into the reward category of the satchel...",
"timestamp": "2025-10-05T11:25:30.356+02:00"
},
{
"id": "1424326641529651291",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "mikethemadkiwi",
"author_id": "143756107733663744",
"content": "nice find",
"timestamp": "2025-10-05T11:25:34.05+02:00"
},
{
"id": "1424371961101946990",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0X6B67320E0D57856A\n// namespace PED\n\nvoid _REFRESH_CARRIED_PED_FOR_PED(Ped ped, Ped *carriedPed, int p2, bool p3);\n/*\n* Outputs the carried ped.\n*\n* Parameters:\n* - ped: Ped — Ped to check carried ped\n* - carriedPed: Ped * — Carried ped\n* - p2: int — unknow but always 2\n* - p3: bool — unknow but always false\n*/\n```\n```lua\nlocal carriedPed = Citizen.InvokeNative(0X6B67320E0D57856A, PlayerPedId(), Citizen.PointerValueInt(), 2, false)\nprint(carriedPed)\n```",
"timestamp": "2025-10-05T14:25:39.078+02:00"
},
{
"id": "1424383977623519325",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x9AC53CB6907B4428\n// namespace INVENTORY\n\nbool _INVENTORY_GET_INVENTORY_ITEM_COMPATIBLE_SLOTS(Hash item, int *slotIds, int maxResults);\n/*\n* Outputs the slot ids compatible with the item.\n*\n* Parameters:\n* - item: Hash — The item to check\n* - slotIds: int * — Array of slot IDs\n* - maxResults: int — Maximum number of results to output\n*\n* Returns:\n* - bool — True if successful, false otherwise\n*/\n```\n```lua\nlocal maxOccurrence = 15\nlocal data = DataView.ArrayBuffer(32 * 8)\nif (Citizen.InvokeNative(0x9AC53CB6907B4428, `horse_equipment_western_04_stock_new_saddle_005`, data:Buffer(), maxOccurrence) == 1) then\n local i = 1\n while (i <= maxOccurrence and data:GetInt32(i * 8) ~= 0) do\n print(i, data:GetInt32(i * 8))\n i = i + 1\n end\nend\n```",
"timestamp": "2025-10-05T15:13:24.04+02:00"
},
{
"id": "1424392871292965078",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0X112BCA290D2EB53C\n// namespace INVENTORY\n\nbool _INVENTORY_GET_INVENTORY_ITEM_LAST_CREATION(int inventoryId, Hash item, int *year, int *month, int *day, int *hour, int *minute, int *second);\n/*\n* Outputs the last creation date of the item for the selected inventory.\n*\n* Parameters:\n* - inventoryId: int — The inventory id to check\n* - item: Hash — The item to check\n* - year: int * — Game year of creation\n* - month: int * — Game month of creation\n* - day: int * — Game day of creation\n* - hour: int * — Game hour of creation\n* - minute: int * — Game minute of creation\n* - second: int * — Game second of creation\n*\n* Returns:\n* - bool — True if successful, false otherwise\n*/\n```\n```lua\nlocal yearData = DataView.ArrayBuffer(1*8)\nlocal monthData = DataView.ArrayBuffer(1*8)\nlocal dayData = DataView.ArrayBuffer(1*8)\nlocal hourData = DataView.ArrayBuffer(1*8)\nlocal minuteData = DataView.ArrayBuffer(1*8)\nlocal secondData = DataView.ArrayBuffer(1*8)\nif (Citizen.InvokeNative(0X112BCA290D2EB53C, 1, `CONSUMABLE_CORNEDBEEF_CAN`, yearData:Buffer(), monthData:Buffer(), dayData:Buffer(), hourData:Buffer(), minuteData:Buffer(), secondData:Buffer()) == 1) then\n local year = yearData:GetInt32(0)\n local month = monthData:GetInt32(0)\n local day = dayData:GetInt32(0)\n local hour = hourData:GetInt32(0)\n local minute = minuteData:GetInt32(0)\n local second = secondData:GetInt32(0)\n\n print((\"Last item created: %04d-%02d-%02d %02d:%02d:%02d\"):format(year, month, day, hour, minute, second))\nend\n```",
"timestamp": "2025-10-05T15:48:44.456+02:00"
},
{
"id": "1424421857758543925",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2025-10-05T17:43:55.368+02:00"
},
{
"id": "1424422982117363712",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SWAP_REINS\n```yaml\n// 0xFC7F71CF49F70B6B\n// namespace TASK\n\nvoid _SWAP_REINS(Ped ped);\n/*\n* Swaps the wagon/coach **reins control** between the ped and their adjacent front-seat partner.\n*\n* Parameters:\n* - ped: Ped — Must be inside a horse-drawn vehicle (wagon/coach) and seated in a front seat\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - Has no effect if the ped is not in a vehicle, not in a front seat, or the vehicle isn’t reins-driven (e.g., not a horse-drawn vehicle).\n* - Behavior mirrors `_SWAP_REINS_FOR_VEHICLE(Vehicle vehicle, bool instant)` but targets the **ped** rather than the vehicle.\n* - Compared to `_SWAP_REINS_FOR_VEHICLE(vehicle, instant)`, this ped-based version does not expose an `instant` flag; it appears to use the default handover behavior (animation timing may be game-driven).\n*/\n```",
"timestamp": "2025-10-05T17:48:23.436+02:00"
},
{
"id": "1425587475467866113",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "```c\nvoid N_0xC2E62678D602853C(Vehicle veh, Vector3 p2, Vector3 p3);\n// iterates through the engine carraige and to all attached carraiges and sets some bit flag on the health component, probably related to explosion, only used im fme_wreckage\nvoid N_0x07E2E21E799080A0(CTrainEngine train, BOOL p2);\n// nothing changed, just documentation, Sets something on the task tree to `p2` and returns `1` on success\nvoid N_0x6DB875AFC584FA32(Ped ped, int p2);\n// Looks to add a reference count to the volume, and nothing else.\nvoid N_0x9E3842E5DAD69F80(Volume volume);\n\n// Sets some flag on a horse\n// 0xB8AB265426CFE6DD\nvoid SET_HORSE_*(Ped ped, BOOL p2);\n\n// Sets a ped config flag for the specified ped\nvoid N_0x028E7B3BBA0BD2FC(Ped ped);\n\nvoid N_0xDC91F22F09BC6C2F(Hash group, BOOL ShouldNotRegisterInScript);\n// setting ShouldNotRegisterInScript to `true` will unregister the group from the script handler, while `false` registers it (why did they decide to invert this)\n```\n\n```c\n// UNCONFIRMED, just assuming based on decompiled code and scripts, uses the same time offset as TIME_SINCE_PED_LAST_SHOT in the ped component\n// 0xB7DBB2986B87E230\nvoid _HAS_PED_SHOT_IN_LAST_X_SECONDS(Ped ped, float timeInSeconds);\n// timeInSeconds gets converted to millseconds internally\n\n// 0xA691C10054275290\nvoid _SET_PLAYER_DISMOUNT_TIMESTAMP_FOR_HORSE(Ped horse, Player playerId, int dismountTimer);\n// `dismountTimer` gets called with the data from `_GET_PLAYER_DISMOUNT_TIMESTAMP`\n```",
"timestamp": "2025-10-08T22:55:40.286+02:00"
},
{
"id": "1425941624512577648",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TASK_FORCE_THROWABLE_AT_ENTITY_WHEN_AIMING\n```yaml\n// 0x2416EC2F31F75266\n// namespace TASK\n\nvoid _TASK_FORCE_THROWABLE_AT_ENTITY_WHEN_AIMING(Ped ped, Entity target, int durationMs, bool unk1, bool unk2);\n/*\nForces a ped to attack a target with **throwable or projectile weapons** (like bows, throwing knives, tomahawks, dynamite) for a specified duration while aiming.\n\nBehavior:\n- **With a bow**: the ped keeps firing arrows continuously until `durationMs` expires (as long as the aiming condition is maintained).\n- **With other throwables**: throws are generally **single-use** (one per animation cycle).\n- **Excluded weapons**: lasso and bolas.\n\nTypical usage:\n- Combine with `TASK::TASK_AIM_AT_ENTITY(ped, target, ...)` to ensure proper aiming before throwing or shooting.\n\nParameters:\n- ped: Ped — The attacker.\n- target: Entity — The target entity to attack.\n- durationMs: int — Duration in milliseconds during which the ped will attempt throwable attacks.\n- unk1: bool — Unknown flag (observed 0 in usage;\n- unk2: bool — Unknown flag (observed 1 in usage;\n\nReturns:\n- void\n```",
"timestamp": "2025-10-09T22:22:55.998+02:00"
},
{
"id": "1425965507097661602",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "`_FIND_NEAREST_PED_*`\n```yaml\n// 0x244430C13BA5258E\n// namespace TASK\n\nPed _FIND_NEAREST_PED_*(Ped originPed, bool onlyAlive, bool onlyDead, bool predatorsPreferDead);\n/*\nMaybe \"_FIND_NEAREST_PED_WITH_FILTERS\"\nFinds the **nearest ped** around the specified `originPed`, with optional filters for life state and predator/fish behavior.\n\nBehavior:\n- if `onlyAlive == true` → returns the nearest **living** ped (human or animal). *(Also an assumption; behavior seems consistent but not guaranteed.)*\n- else if `onlyDead == true` → returns the nearest **dead** ped (human or animal). *(Also an assumption; behavior seems consistent but not guaranteed.)*\n- else if `predatorsPreferDead == true` → for **predators & fish**, returns the **nearest dead** ped (human or animal).*(Not fully understood — please see reference videos; this explanation is the most logical hypothesis.)*\n- else (all false) → returns the **nearest ped** regardless of alive/dead state.\n\nParameters:\n- originPed: Ped — The reference ped performing the search.\n- onlyAlive: bool — Filter: only return living peds. // I guess\n- onlyDead: bool — Filter: only return dead peds. // I guess\n- predatorsPreferDead: bool — Unknown; appears to bias predators/fish toward dead targets (uncertain).\n\nReturns:\n- Ped — The nearest ped handle matching the filters, or 0 if none found.\n\nNotes:\n- Actual flag meanings are inferred, not officially documented.\n*/\n```",
"timestamp": "2025-10-09T23:57:50.05+02:00"
},
{
"id": "1425968217062375469",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "Started a thread.",
"timestamp": "2025-10-10T00:08:36.156+02:00"
},
{
"id": "1425991709698818119",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_IS_REVIVABLE_HORSE_PROMPT_VISIBLE\n```yaml\n// 0x756C7B4C43DF0422\n// namespace TASK\n\nbool _IS_REVIVABLE_HORSE_PROMPT_VISIBLE(bool unk);\n/*\nReturns `true` if a **revivable horse prompt** is currently **visibled** (i.e., visible and interactable) near the player.\nThis indicates that there is a downed horse nearby which can be revived.\n\nParameters:\n- unkToggle: bool Effect not fully verified.\n\nReturns:\n- bool — `true` if the “Revive Horse” prompt is active, `false` otherwise.\n\nNotes:\n- Behavior confirmed when within range where the “Revive Horse” UI prompt appears.\n*/\n```",
"timestamp": "2025-10-10T01:41:57.237+02:00"
},
{
"id": "1425992025064345601",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_REVIVABLE_HORSE_ENTITY\n```yaml\n// 0x351F74ED6177EBE7\n// namespace TASK\n\nEntity _GET_REVIVABLE_HORSE();\n/*\nReturns the **horse entity** currently in a **revivable** state and within the revive prompt range (if any).\n\nParameters:\n- (none)\n\nReturns:\n- Entity — Handle of the revivable horse, or `0` if none is available (e.g., outside prompt range or no revivable horse).\n```",
"timestamp": "2025-10-10T01:43:12.426+02:00"
},
{
"id": "1426013523410161816",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_CALCULATE_WAYPOINT_DISTANCE_FROM_START\n```yaml\n// 0x3ACC128510142B9D\n// namespace TASK\n\nfloat _CALCULATE_WAYPOINT_DISTANCE_FROM_START(const char* waypointName, Vector3 coords);\n/*\n* Returns the **signed distance along the waypoint recording** from its start (first node) to the point on the recording that corresponds to `coords`.\n*\n* Behavior (empirical):\n* - If `coords` is **before the start** of the recording (behind the first segment’s origin), the result becomes **negative** and decreases as you move farther back.\n* - From the start towards the **last node**, the value increases **monotonically**.\n* - Once you go **beyond the last node**, the value is **clamped** to the recording’s total length and remains constant (no overflow beyond the end).\n*\n* Requirements:\n* - You must request & load the recording first:\n* `TASK::REQUEST_WAYPOINT_RECORDING(waypointName)` (and ensure it is loaded).\n*\n* Parameters:\n* - waypointName: const char* — Name of the waypoint recording.\n* - coords: Vector3 — World position to project onto the recording.\n*\n* Returns:\n* - float — Signed along-path distance (meters) from the recording start to the projected point.\n* Can be **negative** when behind the start; **caps** at total length after the end.\n* If the recording is not active/loaded, the return value is undefined (often 0.0f or -1.0f).\n*\n* Notes:\n* - This measures **route arclength**, not straight-line distance. For Euclidean distance, use a generic distance function instead.\n* - Projection semantics are asymmetric: **unbounded** before the start (negative allowed), but **clamped** after the end (no values > total length).\n*\n* Related natives:\n* - TASK::REQUEST_WAYPOINT_RECORDING(waypointName)\n```",
"timestamp": "2025-10-10T03:08:38.031+02:00"
},
{
"id": "1426020163786113045",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```c\n// 0x0759591819534F7B\n// namespace TASK\nvoid TASK_FOLLOW_WAYPOINT_RECORDING(\n Ped ped,\n const char* waypointRecording,\n int startIndex, // p2 \n int flags, // flag\n int endIndex, // p4\n bool patrol, // p5\n bool aimWeapon, // p6\n int durationMs // p7\n);\n\n/*\n* Orders `ped` to follow a waypoint recording with control over\n* start/end node indices, optional patrol (back-and-forth) behavior,\n* aiming stance, and total traversal duration.\n*\n* Parameters:\n* - ped: Ped — The ped that will execute the task.\n* - waypointRecording: const char* — Name of the loaded waypoint recording.\n* - startIndex (p2): int — Index of the **first waypoint node** to start from.\n* - flags: int\n* - endIndex (p4): int — Index of the **final waypoint node** to move toward.\n* - patrol (p5): bool — If **true**, the ped **patrols** continuously back and forth\n* between `startIndex` and `endIndex`. \n* If **false**, the ped follows the path one way and stops at the end.\n* - aimWeapon (p6): bool — If **true**, the ped **draws and aims** their weapon while moving\n* but **does not fire**.\n* - durationMs (p7): int — Total allowed duration (in milliseconds) to traverse the entire route. \n* If set to **-1**, the ped naturally walks through all points. \n* Otherwise, once `durationMs` expires, the ped **teleports to the last waypoint**.\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - The recording must be requested and loaded using `TASK::REQUEST_WAYPOINT_RECORDING(waypointRecording)`.\n* - The indices (`startIndex`, `endIndex`) restrict which part of the route is used.\n* - `patrol` controls whether the ped returns to the start after reaching the end.\n* - `aimWeapon` only affects stance — no firing occurs.\n* - `durationMs` determines total task time before snapping to the end node.\n*\n* Related natives:\n* - TASK::REQUEST_WAYPOINT_RECORDING\n```\nFor more waypoint check \"waypointrec.rpf\"\nhttps://youtu.be/RIsXDJSmeGU",
"timestamp": "2025-10-10T03:35:01.22+02:00"
},
{
"id": "1426319356551364669",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`0xFD4272A137703449` -> `_NETWORK_SESSION_REQUEST_TERMINATE` (fixing an earlier rename)",
"timestamp": "2025-10-10T23:23:54.334+02:00"
},
{
"id": "1426327259760820239",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-10-10T23:55:18.606+02:00"
},
{
"id": "1426527484089995324",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "https://github.com/alloc8or/rdr3-nativedb-data/commit/7dfa76ebef6d0fd5a34b8a1c863fea01b6bf147a",
"timestamp": "2025-10-11T13:10:55.806+02:00"
},
{
"id": "1426527627656560763",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "some stuff from here was checked and edited and included in this commit. i will continue to maintain this repo so if you want to also open prs there i can check and merge them.",
"timestamp": "2025-10-11T13:11:30.035+02:00"
},
{
"id": "1427492360912371722",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_UPDATE_TASK_GO_TO_COORD_WITH_OFFSET\n```yaml\n// 0x3FFCD7BBA074CC80\n// namespace TASK\n\nvoid _UPDATE_TASK_GO_TO_COORD_WITH_OFFSET(Ped ped, Vector3 targetCoords, float offsetX, float offsetY, float offsetZ, float speed, float tolerance);\n/*\n* Updates the current directed \"go to/follow offset\" objective of a Ped to a new world position.\n* Works when the ped is on foot or mounted (horse). Does **not** work while the ped is in a vehicle.\n* Requires that the ped already has a compatible directed task running (e.g., follow-to-offset / go-to).\n*\n* Parameters:\n* - ped: Ped — The ped whose active movement objective will be updated.\n* - targetCoords: Vector3 — The new base coordinate to move towards.\n* - offsetX/Y/Z: float — Local offset applied to targetCoords (same meaning as in TaskFollowToOffsetOfCoord).\n* - speed (i guess): float — Desired movement speed (multiplier / speed hint used by the running task).\n* - tolerance/Proximity (i guess): float — Arrival threshold in meters; smaller values (e.g., 0.1) make the ped go right up to the spot.\n*\n* Returns:\n* - void.\n*\n* Notes:\n* - Calling this without a compatible active task will have no effect.\n* - Compared to reassigning TaskFollowToOffsetOfCoord every tick, this updates the destination **in-place** on the running task, preventing task resets/animation pops.\n*/\n```\nLua Example : attached",
"timestamp": "2025-10-14T05:05:00.367+02:00"
},
{
"id": "1427523697455005748",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TASK_VEHICLE_ADD_NEXT_DESTINATION\n```yaml\n// 0x1D125814EBC517EB\n// namespace TASK\n\nvoid _TASK_VEHICLE_ADD_NEXT_DESTINATION(Vehicle vehicle, Vector3 coords);\n/*\n* Adds a new waypoint to the AI driver's active \"drive to destination\" task.\n* Requires a running vehicle drive task (e.g., 0x391073B9D3CCE2BA / TaskVehicleDriveToDestination2).\n*\n* Behavior:\n* - The task can store up to **3** pending destination points.\n* - If more than 3 are added, only the **last 3** remain active and used by the AI.\n* - When 3 destinations are active, the driver will choose the **shortest or most optimal** route among them.\n*\n* Parameters:\n* - vehicle: Vehicle — The vehicle whose AI driver currently has a drive task.\n* - coords: Vector3 — The world coordinate to add as the next destination.\n*\n* Returns:\n* - void\n*\n* Notes:\n* - Has no effect if there is no compatible active drive task.\n* - Typical usage:\n* // Start the vehicle drive task:\n* TaskVehicleDriveToDestination or TaskVehicleDriveToDestination2\n* // Add follow-up destinations:\n* TASK_VEHICLE_ADD_NEXT_DESTINATION(vehicle, coordA);\n* TASK_VEHICLE_ADD_NEXT_DESTINATION(vehicle, coordB);\n* // Only the last 3 added coordinates are considered.\n*\n* Related:\nTaskVehicleDriveToDestination2\nTaskVehicleDriveToDestination\n*/\n```",
"timestamp": "2025-10-14T07:09:31.581+02:00"
},
{
"id": "1427665364648460380",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_ABOARD_PED_BOAT_OFFSET\n```yaml\n// 0x517D01BF27B682D1\n// namespace TASK\nvoid _SET_ABOARD_PED_BOAT_OFFSET(Ped ped, Vehicle boat, float offsetX, float offsetY, float offsetZ, float heading, int flags);\nI forced the name to fit the alphabetical order — maybe there’s a more logical and concise naming option.\n\n/*\n* Sets a ped’s standing position and/or facing direction while aboard a boat, using a local offset relative to the boat’s coordinate system. Works only on boats.\n\n* Flags (I guess):\n* - 0: No action.\n* - 1: Apply X/Y/Z offset only (ignore heading).\n* - 2: Apply heading only (ignore X/Y/Z).\n\n* Parameters:\n* - ped: Ped — The ped to adjust.\n* - boat: Vehicle — The target boat entity.\n* - offsetX / offsetY / offsetZ: float — Local offset from the boat’s origin (meters).\n* - heading: float — Desired facing (degrees), likely world-space yaw.\n* - flags(I guess): int — Selector controlling what is applied (0/1/2).\n\n* Returns:\n* - void\n\n* Notes:\n* - Has no effect on non-boat vehicles (cars, wagons, trains, mounts).\n```",
"timestamp": "2025-10-14T16:32:27.672+02:00"
},
{
"id": "1427684871970492508",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_HOLD_TO_REEL_SETTING_ENABLED\n```yaml\n// 0x5952DFA38FA529FE\n// namespace TASK\n\nbool _GET_HOLD_TO_REEL_SETTING_ENABLED();\n/*\n* Returns whether the “Hold to Reel [Fishing]” gameplay setting is currently enabled.\n* If the setting is turned **Off**, this native returns **false**.\n* If the setting is turned **On**, this native returns **true**.\n*\n* Returns:\n* - bool — True if “Hold to Reel” is enabled, false if disabled.\n```",
"timestamp": "2025-10-14T17:49:58.58+02:00"
},
{
"id": "1429899634913968218",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TRANSITION_SCENARIO_TO_CONDITIONAL_ANIM\n```yaml\n// 0x79197F7D2BB5E73A\n// namespace TASK\n\nbool _TRANSITION_SCENARIO_TO_CONDITIONAL_ANIM(Ped ped, int scenarioPoint, char* clipsetDict, char* clipName, char* fromConditionalAnim, flags /*= 0*/);\n/*\n\nSmoothly transitions an active scenario actor (ped) into a specific conditional /clipset defined in the scenario’s conditional-anim graph, breaking or restarting the scenario**. \nReturns `true` if the transition was successfully triggered, or `false` if it failed.\n\nParameters:\n - ped: The scenario actor ped.\n - scenarioPoint: Handle of the active scenario point the ped is currently using.\n - clipsetDict: Clipset/animation dictionary path .g. \"SCRIPT_PROC@BOUNTY@LEMOYNE_RAIDER@INTERIOR_RETURN@ENTER_FRONT_DEAD_DEPUTY\").\n - clipName: Target clip name inside that dictionary .g. \"ENTER_FRONT_DEAD_DEPUTY\").\n - fromConditionalAnim: Name of the current conditional anim that serves as the \"From\" for the authored transition .g. \"SCRIPT_COMMON_SHERIFF_SIT_RELAX\").\n - flags: Bitfield for transition options (commonly 0 in scripts, unknown purpose).\n\nReturns:\n - bool — `true` if the transition succeeded, `false` otherwise.\n\nNotes:\n - Mirrors the authored structure found in `script_common_ca.meta`:\n <FromConditionalAnims>SCRIPT_COMMON_SHERIFF_SIT_RELAX</FromConditionalAnims>\n <ClipSet>...ENTER_FRONT_DEAD_DEPUTY</ClipSet>\n - Keeps the scenario active while switching to a defined animation branch.\n\nExample:\n // Transition a sheriff ped sitting relaxed into the “dead deputy” entrance anim\n bool result = Citizen.InvokeNative(0x79197F7D2BB5E73A,\n ped,\n scenarioPoint, \n \"SCRIPT_PROC@BOUNTY@LEMOYNE_RAIDER@INTERIOR_RETURN@ENTER_FRONT_DEAD_DEPUTY\",\n \"ENTER_FRONT_DEAD_DEPUTY\",\n \"SCRIPT_COMMON_SHERIFF_SIT_RELAX\",\n 0\n );\n if (result)\n print(\"Transition successful\");\n*/\n```\ncheck \"script_common_ca.meta\" for more info",
"timestamp": "2025-10-20T20:30:39.214+02:00"
},
{
"id": "1431482728297140326",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_DATABINDING_REMOVE_UI_ITEM_FROM_LIST_BY_INDEX\n```yaml\n// 0x6318FB3BE37E11B3\n// namespace DATABINDING\nvoid _DATABINDING_REMOVE_UI_ITEM_FROM_LIST_BY_INDEX(entryId int, int index);\n```",
"timestamp": "2025-10-25T05:21:18.089+02:00"
},
{
"id": "1432372216330453075",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "I had lot of difficulties naming this one, if someone can help to find a better name\n```c\n// 0x46BF2A810679D6E6\n// namespace PED\nfloat _COMPUTE_PED_MOVE_BLEND_RATIO_FOR_MAX_SPEED(Ped ped, float moveBlendRatio);\n/*\n * Get an estimated max speed (m/s) for the ped move blend ratio. Move blend ratio is in a range of 0.0-3.0\n*/\n```",
"timestamp": "2025-10-27T15:15:48.562+01:00"
},
{
"id": "1432390113614237870",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2025-10-27T16:26:55.607+01:00"
},
{
"id": "1433216750693908722",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "I don't remember if a list of HUD components had already been made. In any case, it goes up to at least 66.\n```c\n// 0x7EC0D68233E391AC\n// namespace HUD\nint _GET_HUD_STATE(int hudComponent);\n/*\n* Returns the state of a specific HUD component.\n*\n* Parameters:\n* - hudComponent: int — The HUD component id to check\n*\n* Returns:\n* - int — Current state\n*/\n```",
"timestamp": "2025-10-29T23:11:41.245+01:00"
},
{
"id": "1433225554114510868",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x72E4D1C4639BC465\n// namespace AUDIO\nint _CREATE_NEW_SCRIPTED_SPEECH(Ped speaker, Any *params);\n/*\n* Create a scripted speech to control it.\n*\n* Parameters:\n* - ped: Ped — The ped speaking\n* - params: Any* — The speech struct\n*\n* Returns:\n* - int — Speech handle, if < 0 means invalid\n*\n* Reminder of a speech struct:\n*/\nstruct params\n{\n char *soundName;\n char *soundRef;\n int speechLine;\n Hash speechParams;\n Ped pedListener;\n bool syncOverNetwork;\n bool unk;\n}\n```",
"timestamp": "2025-10-29T23:46:40.144+01:00"
},
{
"id": "1433226390479573075",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xB18FEC133C7C6C69\n// namespace AUDIO\nvoid _PLAY_SOUND_FROM_SCRIPTED_SPEECH(int scriptedSpeech);\n/*\n* Play the scripted speech.\n*\n* Parameters:\n* - scriptedSpeech: int — Scripted speech created with 0x72E4D1C4639BC465 (_CREATE_NEW_SCRIPTED_SPEECH)\n*\n* Returns:\n* - void\n*/\n```",
"timestamp": "2025-10-29T23:49:59.549+01:00"
},
{
"id": "1433398934297907312",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x0105FEE8F9091255\n// namespace PED\nfloat _GET_PED_DIRT_LEVEL(Ped ped, int p1);\n/*\n* Return the ped dirt level. p1 always 1\n*\n* Parameters:\n* - ped: Ped — The ped to check\n*\n* Returns:\n* - float — Normalized ped dirt level (0.0 - 1.0)\n*/\n```",
"timestamp": "2025-10-30T11:15:37.201+01:00"
},
{
"id": "1433411396632182865",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0xCA95924C893A0C91\n// namespace PED\nfloat _COMPUTE_SPEED_FOR_PED_MOVE_BLEND_RATIO(Ped ped, float speed);\n/*\n* Return the ped move blend ratio corresponding to the specified speed\n*\n* Parameters:\n* - ped: Ped — The ped to check\n* - speed: float — Speed in m/s\n*\n* Returns:\n* - float — Move blend ratio (0.0 - 3.0)\n*/\n```",
"timestamp": "2025-10-30T12:05:08.453+01:00"
},
{
"id": "1434204441955008615",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "https://github.com/alloc8or/rdr3-nativedb-data/pull/211 new research by @Sarbatore",
"timestamp": "2025-11-01T16:36:25.192+01:00"
},
{
"id": "1434290146571714641",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "`_GET_ITEM_INTERACTION*`\n```yaml\n // 0x678D3226CF70B9C8\n // namespace TASK\n\n Entity _GET_ITEM_INTERACTION*(Ped ped, bool unkSelect = true);\n /*\n Returns the entity (object/prop) that the ped is currently inspecting or about to interact with during an some item interaction sequence.\n\n Commonly triggered right after the \"INSPECT\" animation event fires to fetch the temporary item or prop (such as a document, small pelt, or piece of meat) ped holds briefly before calling _TASK_ITEM_INTERACTION_2.\n\n Parameters:\n ped - Ped.\n unkSelect - Unknown/(usually 'true')\n\n Returns:\n Entity handle of the item/prop to interact with, or 0 if none is found.\n\n Notes:\n - This native does not start the interaction itself — it only resolves the target entity for _TASK_ITEM_INTERACTION_2.\n - Typical usage pattern:\n * Wait for ENTITY::HAS_ANIM_EVENT_FIRED(ped, \"INSPECT\")\n * Call _GET_ITEM_INTERACTION_*(ped, true)\n * Then use the returned entity with TASK::_TASK_ITEM_INTERACTION_2\n */\n```",
"timestamp": "2025-11-01T22:16:58.765+01:00"
},
{
"id": "1434447891690426399",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_WHISTLE_RANGE_MIN_FOR_BONDING_LEVEL\n```yaml\n // 0xEB67D4E056C85A81\n // namespace TASK\n\n float _GET_WHISTLE_RANGE_MIN_FOR_BONDING_LEVEL(int bondingLevel);\n /*\n Returns the minimum (baseline) whistle/call distance for the given horse bonding level. This value represents the lower bound used when computing whether a horse is considered \"near\" or \"far\" relative to the player, and is interpolated against the next level's max.\n\n Parameters:\n - bondingLevel (int): Current bonding rank (0..4). Values outside the valid range may return fallback behavior.\n\n Returns:\n - float: Baseline whistle range for the specified bonding level (in game distance units).\n\n Notes:\n - Typically used together with GET_WHISTLE_RANGE_MAX_FOR_BONDING_LEVEL to interpolate an effective threshold based on in-level bonding progress.\n - Observed usage: compared against player–horse distance to switch blip modifiers (near/far) and callability.\n\n Related natives:\n - _GET_WHISTLE_RANGE_MAX_FOR_BONDING_LEVEL (0x78D8C1D4EB80C588)\n */\n\n```",
"timestamp": "2025-11-02T08:43:48.132+01:00"
},
{
"id": "1434448162826883093",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_WHISTLE_RANGE_MAX_FOR_BONDING_LEVEL\n```yaml\n // 0x78D8C1D4EB80C588\n // namespace TASK\n\n float _GET_WHISTLE_RANGE_MAX_FOR_BONDING_LEVEL(int bondingLevel);\n /*\n Returns the maximum (target) whistle/call distance associated with the next horse bonding level. Used together with the current level's minimum to derive an effective whistle range based on the horse's bonding progress toward the next rank.\n\n Parameters:\n - bondingLevel (int): Current bonding rank (0..4). Values outside the valid range may return fallback behavior.\n\n Returns:\n - float: Target whistle range used as the upper bound for interpolation (in game distance units).\n\n Notes:\n - Pair this with GET_WHISTLE_RANGE_MIN_FOR_BONDING_LEVEL to linearly interpolate a distance threshold that scales as the horse advances within the current bonding level.\n - Observed usage: drives transitions between “near” and “far” blip states and affects whistle effectiveness.\n\n Related natives:\n - _GET_WHISTLE_RANGE_MIN_FOR_BONDING_LEVEL (0xEB67D4E056C85A81)\n */\n```",
"timestamp": "2025-11-02T08:44:52.776+01:00"
},
{
"id": "1434496263922913380",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_TASK_KNOCKED_OUT_SET_DURATION\n```yaml\n// 0xFFB520A3E16F7B7B\n// namespace TASK\n\nvoid _TASK_KNOCKED_OUT_SET_DURATION(Ped ped, float duration);\n/*\nSets the knockout timer for a ped that is currently in the knocked-out state.\n\nParameters:\n- Ped ped: Target ped.\n- float duration\n\nReturns:\n- void\n\nNotes:\n- Requires the ped to already be knocked out (e.g., via TASK_KNOCKED_OUT or TASK_KNOCKED_OUT_AND_HOGTIED).\n- This **resets** duration and sets a new duration from now.\n*/\n```",
"timestamp": "2025-11-02T11:56:00.971+01:00"
},
{
"id": "1434620495608938681",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "Started a thread.",
"timestamp": "2025-11-02T20:09:40.113+01:00"
},
{
"id": "1436638943448924241",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_IS_PED_TAKING_POISON_GAS_DAMAGE\n```yaml\n // 0x0DE0944ECCB3DF5D\n // namespace WEAPON\n\n bool _IS_PED_TAKING_POISON_GAS_DAMAGE(Ped ped); (The name is not in alphabetical order, so you can make suggestions.)\n /*\n Checks whether the given ped is currently taking damage from poisonous gas/fog volumes (e.g., toxic moonshine cloud, scripted poison fog).\n \n Params:\n - Ped ped: The ped to query.\n\n Returns:\n - bool: true if the ped is being damaged by poison gas/fog right now; false otherwise.\n\n Notes:\n - This reflects *damage being applied*, not just presence inside a volume. If the ped is immune (mission flags, protective effects, invincibility), it may return false even while inside the fog.\n```",
"timestamp": "2025-11-08T09:50:15.579+01:00"
},
{
"id": "1436663698382127176",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_CAN_PED_ACCESS_MOUNT_WEAPONS\n```yaml\n // 0x23BF601A42F329A0\n // namespace WEAPON\n\n bool _CAN_PED_ACCESS_MOUNT_WEAPONS(Ped ped);\n /*\n English:\n Returns true if the given ped is in a valid state to stow or retrieve weapons from their *owned* mount.\n This typically means the ped is either on their horse or close enough to it for saddle weapon interactions.\n\n Params:\n - Ped ped: Ped to query.\n\n Returns:\n - bool: true if the ped is near or on their owned mount and can access the saddle weapons; false otherwise.\n\n Notes:\n - The ped does **not** need to currently hold a weapon. This check simply determines if saddle stowing/retrieval actions are allowed.\n - Commonly used to enable weapon wheel or stow prompts near the player’s own horse.\n - Will return false if the ped is near a non-owned horse or too far from their own.\n```",
"timestamp": "2025-11-08T11:28:37.615+01:00"
},
{
"id": "1436672984042704937",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_ARROW_TRAIL\n```yaml\n// 0x2EBF70E1D8C06683\n// namespace WEAPON\n\nvoid _SET_ARROW_TRAIL(Ped ped, Hash trailHash);\n/*\nSets the visual trail FX for arrows fired from a Bow by the given ped.\n\nParams:\n - Ped ped: The archer ped.\n - Hash trailHash: Effect preset hash. Known values:\n - 658521773 -> enables a sparkling particle trail behind arrows\n - -1199552854 -> restores default behavior (no special trail)\n\nReturns:\n - void\n\nNotes:\n - Only affects arrows shot with a Bow by the specified ped.\n - Takes effect on arrows fired after the call.\n - This is purely visual and does not change damage or ammo type.\n```",
"timestamp": "2025-11-08T12:05:31.489+01:00"
},
{
"id": "1436686864613380298",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_LOCKON_RANGE_CURRENT_WEAPON\n```yaml\n // 0x3799EFCC3C8CD5E1\n // namespace WEAPON\n\n float _GET_LOCKON_RANGE_CURRENT_WEAPON(Ped ped);\n /*\n Returns the effective lock-on or targeting range for the ped’s current weapon.\n This value reflects the weapon’s maximum aim assist or targeting distance, used for systems like auto-aim and lock-on overrides.\n\n Params:\n - Ped ped: Ped whose current weapon range is queried.\n\n Returns:\n - float: The maximum lock-on/target range for the ped’s current weapon.\n\n Notes:\n - Can be used alongside `PLAYER::SET_PLAYER_LOCKON_RANGE_OVERRIDE` to dynamically clamp or expand lock-on distance.\n - This native does **not** modify the weapon; it only retrieves the current weapon’s configured targeting range.\n```",
"timestamp": "2025-11-08T13:00:40.875+01:00"
},
{
"id": "1436711128444043265",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_EXPLODE_PED_AMMO_TYPE\n```yaml\n// 0x44C8F4908F1B2622\n// namespace WEAPON\n\nvoid _EXPLODE_PED_AMMO_TYPE(Ped ped, Hash ammoHash);\n/*\nEnglish:\nForces the detonation or effect of a throwable ammo type owned or placed by the specified ped. \nCommonly used for remotely exploding dynamite that belong to the ped.\n\nParams:\n - Ped ped: The ped whose throwable ammo will be detonated.\n - Hash ammoHash: The ammo type to trigger. Known values:\n - joaat(\"AMMO_DYNAMITE\")\n - joaat(\"AMMO_MOLOTOV\")\n - joaat(\"AMMO_POISONBOTTLE\")\n\nReturns:\n - void\n```",
"timestamp": "2025-11-08T14:37:05.823+01:00"
},
{
"id": "1436713456823832689",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x9CC94A948EAF5372\n// namespace VEHICLE\nHash _GET_STATION_FROM_TRAIN_STATION_DATA(int trackIndex, int stationIndex);\n/*\n* Returns the station hash for a track and station index.\n*\n* Parameters:\n* - trackIndex: int — From 0 to 24\n* - stationIndex: int — From 0 to 7\n*\n* Returns:\n* - Hash — The station hash or 0 if invalid\n*/\n```",
"timestamp": "2025-11-08T14:46:20.952+01:00"
},
{
"id": "1436729492285554789",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "```yaml\n// 0x5A695BD328586B44\n// namespace WEAPON\n\nbool _GET_LONGARM_STORE_ON_DISMOUNT_STATE(Ped ped, int unk);\n/*\nReturns whether the ped can keeps longarm weapons on the horse when dismounting.\n\nParams:\n - Ped ped: Target ped.\n - int unk: Unknown parameter. Observed usage: 0.\n\nReturns:\n - bool: true if longarm storage on dismount is enabled; false otherwise.\n\nNotes:\n - Use with `_SET_INSTANTLY_STORE_LONGARMS_ON_DISMOUNT` to modify the setting.\n - The second parameter’s purpose is unknown; scripts consistently pass 0.\n - Functionally checks the same flag that `_SET_INSTANTLY_STORE_LONGARMS_ON_DISMOUNT` changes.\n\nRelated:\n - WEAPON::_SET_INSTANTLY_STORE_LONGARMS_ON_DISMOUNT - 0xB832F1A686B9B810\n```",
"timestamp": "2025-11-08T15:50:04.104+01:00"
},
{
"id": "1436738646010236968",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "RedM Role Progress Databinding. \nit's not complete may you can prove it!!\nhttps://pastebin.com/3HYh61y4",
"timestamp": "2025-11-08T16:26:26.522+01:00"
},
{
"id": "1436752485175001301",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Databinding for Bottom Right Stack\n\nThere’s one thing I couldn’t do because there’s no entry or element found with the name\n``item_text_with_pickups``.\n```lua\n-- Shows only one element I don't know why\nRegisterCommand(\"itemWithTwoTextfields\", function()\n local hud = DatabindingAddDataContainerFromPath(\"\", \"MpHudDataStore\")\n local stack = DatabindingAddDataContainer(hud, \"bottomRightStack\")\n DatabindingAddDataBool(stack, \"isVisible\", true)\n \n local list = DatabindingAddUiItemList(stack, \"itemCreationList\")\n DatabindingClearBindingArray(list)\n\n\n local item = DatabindingAddDataContainer(list, \"br_item_1\")\n DatabindingAddDataString(item, \"leftTextfield\", \"Hello\") \n DatabindingAddDataString(item, \"rightTextfield\", \"Valentine\")\n -- DatabindingAddDataString(item2, \"backgroundColor\", \"COLOR_RED\")\n\n DatabindingInsertUiItemToListFromContextStringAlias(list, -1, \"item_two_textfields\", item)\n\nend, false)\n\nRegisterCommand(\"itemWithTime\", function()\n local hud = DatabindingAddDataContainerFromPath(\"\", \"MpHudDataStore\")\n local stack = DatabindingAddDataContainer(hud, \"bottomRightStack\")\n DatabindingAddDataBool(stack, \"isVisible\", true)\n \n local list = DatabindingAddUiItemList(stack, \"itemCreationList\")\n DatabindingClearBindingArray(list)\n\n\n local item = DatabindingAddDataContainer(list, \"br_item_2\")\n DatabindingAddDataString(item, \"text\", \"Time Remaining\") \n DatabindingAddDataInt(item, \"time\", 3000)\n -- DatabindingAddDataString(item2, \"backgroundColor\", \"COLOR_RED\")\n\n DatabindingInsertUiItemToListFromContextStringAlias(list, -1, \"item_text_with_time\", item)\n\nend, false)\n\nRegisterCommand(\"itemWithMeter\", function()\n local hud = DatabindingAddDataContainerFromPath(\"\", \"MpHudDataStore\")\n local stack = DatabindingAddDataContainer(hud, \"bottomRightStack\")\n DatabindingAddDataBool(stack, \"isVisible\", true)\n \n local list = DatabindingAddUiItemList(stack, \"itemCreationList\")\n DatabindingClearBindingArray(list)\n\n\n local item = DatabindingAddDataContainer(list, \"br_item_3\")\n DatabindingAddDataString(item, \"text\", \"Valentine\") \n DatabindingAddDataFloat(item, \"value\", 0.5)\n -- DatabindingAddDataString(item2, \"trackColor\", \"COLOR_WHITE\")\n -- DatabindingAddDataString(item2, \"fillColor\", \"COLOR_YELLOWSTRONG\")\n -- DatabindingAddDataString(item2, \"backgroundColor\", \"COLOR_RED\")\n\n DatabindingInsertUiItemToListFromContextStringAlias(list, -1, \"item_text_with_meter\", item)\n\nend, false)\n```",
"timestamp": "2025-11-08T17:21:26.036+01:00"
},
{
"id": "1437029153076543539",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_PROJECTILE_EFFECT_RADIUS\n```yaml\n// 0x74C9080FDD1BB48F\n// namespace WEAPON\n\nvoid _SET_PROJECTILE_EFFECT_RADIUS(Entity projectile, float radius);\n/*\nSets the explosion or impact effect radius of a projectile entity (e.g., thrown dynamite or similar explosives).\n\nParameters:\n - projectile: The projectile entity to modify (for example, a thrown dynamite stick).\n - radius: float\n\nReturns:\n - void\n\nNotes:\n - Must be called before the projectile explodes; changing the radius afterward has no effect.\n - Commonly used after retrieving the projectile entity with MISC::GET_PROJECTILE_OF_PROJECTILE_TYPE_WITHIN_DISTANCE.\n - This does not trigger an explosion; it only defines how large the explosion’s area of effect will be.\n - Compared to MISC::ADD_EXPLOSION, which spawns a new explosion at a location, this modifies an existing projectile’s explosion properties.\n```",
"timestamp": "2025-11-09T11:40:48.804+01:00"
},
{
"id": "1437035228479754360",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_PROJECTILE_IN_VOLUME\n```yaml\n // 0x74C8000FDD1BB222\n // namespace WEAPON\n _GET_PROJECTILE_IN_VOLUME(Volume volume, int* outHandle);\n```\n\n```lua\nRegisterCommand(\"rs\",function(src,args,raw)\n local coords = GetEntityCoords(PlayerPedId())\n local x = coords.x\n local y = coords.y\n local z = coords.z\n local rotX = 0.0\n local rotY = 0.0 \n local rotZ = 0.0\n local scaleX = 50.0\n local scaleY = 50.0\n local scaleZ = 50.0\n local volume = CreateVolumeBox(x, y, z, rotX, rotY, rotZ, scaleX, scaleY, scaleZ)\n \n local projectile_entity = Citizen.InvokeNative(0x74C8000FDD1BB222, volume, Citizen.PointerValueInt()) \n \n print(projectile_entity)\n Wait(1000)\n DeleteVolume(volume)\nend)\n```",
"timestamp": "2025-11-09T12:04:57.293+01:00"
},
{
"id": "1437038763653075073",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_IGNITED_PROJECTILE_IN_VOLUME\n```yaml\n// 0x74C8000FDD1BB111\n// namespace WEAPON\n\n_GET_IGNITED_PROJECTILE_IN_VOLUME(Volume volume, Entity* outEntity); (The name is not in alphabetical order, so you can make suggestions.)\n/*\nReturns the first ignited (lit/fused) explosive projectile entity found within the specified Volume.\nSimilar to WEAPON::_GET_FIRST_PROJECTILE_IN_VOLUME (0x74C8000FDD1BB222), \nbut only returns projectiles that are currently ignited (e.g., a lit dynamite about to explode).\n\nParameters:\n - volume: The search volume.\n - outEntity: [out] Pointer to store the found ignited projectile entity.\n```\nMy lua example : \n```lua\nRegisterCommand(\"qadr_research\",function(src,args,raw)\n local coords = GetEntityCoords(PlayerPedId())\n local x = coords.x\n local y = coords.y\n local z = coords.z\n local rotX = 0.0\n local rotY = 0.0 \n local rotZ = 0.0\n local scaleX = 50.0\n local scaleY = 50.0\n local scaleZ = 50.0\n local volume = CreateVolumeBox(x, y, z, rotX, rotY, rotZ, scaleX, scaleY, scaleZ)\n print(\"volume\"..volume)\n local say = 0\n while true do \n Citizen.Wait(100)\n local ignited_projectile_entity = Citizen.InvokeNative(0x74C8000FDD1BB111, volume, Citizen.PointerValueInt())\n print(\"ignited_projectile_entity\"..ignited_projectile_entity)\n say = say + 1\n if say > 100 then\n break\n end\n end\n Wait(1000)\n DeleteVolume(volume)\nend)\n```",
"timestamp": "2025-11-09T12:19:00.144+01:00"
},
{
"id": "1437043663992651776",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_PROJECTILE_FUSE_TIME\n```yaml\n// 0x74C9080FDD1BB48E\n// namespace WEAPON\n\nvoid _SET_PROJECTILE_FUSE_TIME(Entity projectile, float time);\n/*\nSets the remaining fuse time (in seconds) for an ignited explosive projectile entity, such as a thrown dynamite.\n\nParameters:\n - projectile: The projectile entity (e.g., a lit dynamite).\n - time: Fuse duration in seconds. 0.0 causes immediate detonation, higher values delay the explosion.\n\nReturns:\n - void\nNotes:\n - Must be called on an already ignited projectile; calling before ignition has no effect.\n```",
"timestamp": "2025-11-09T12:38:28.476+01:00"
},
{
"id": "1437046703696908318",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_REGISTER_WEAPON_OBJECT_FOR_IGNITION\n```yaml\n// 0x74C90AAACC1DD48F\n// namespace WEAPON\n\nvoid _REGISTER_WEAPON_OBJECT_FOR_IGNITION(Entity weaponObject);\n/*\nMarks a created weapon object (e.g., a dynamite weapon object) as ignitable so it can be lit and detonate.\nUse this after CreateWeaponObject for thrown explosives to enable fuse/ignition behavior.\n\nParameters:\n - weaponObject: Weapon object entity created via CreateWeaponObject (e.g., WEAPON_THROWN_DYNAMITE).\n\nReturns:\n - void\n\nNotes:\n - This does NOT ignite immediately; it only enables the object to be lit / to run a fuse.\n```",
"timestamp": "2025-11-09T12:50:33.198+01:00"
},
{
"id": "1437052987871727706",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_SET_VEHICLE_WEAPON_RELOAD_MODE\n```yaml\n// 0x8A779706DA5CA3DD\n// namespace WEAPON\n\nvoid _SET_VEHICLE_WEAPON_RELOAD_MODE(Vehicle vehicle, bool noReload, int unk);\n/*\nEnables/disables reload behavior for vehicle-mounted **cannons**.\nWhen `noReload` is true, the cannon fires without requiring a reload; when false, it must reload after shots.\n\nParameters:\n - vehicle: Vehicle entity that carries the cannon.\n - noReload: true = no reload required (continuous fire), false = normal reload required.\n - unk: always -1\n\nReturns:\n - void\n\nNotes:\n - **Supported vehicles only:** \"breach_cannon\" and \"hotchkiss_cannon\".\n - **Does not work** on other vehicle weapons (e.g., gatling guns/“garlingun”), turrets, or small arms.\n```",
"timestamp": "2025-11-09T13:15:31.462+01:00"
},
{
"id": "1437713169824088064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_WEAPON_REPLACED_HASH\n```yaml\n// 0x9F0E1892C7F228A8\n// namespace WEAPON\n\nHash _GET_WEAPON_REPLACED_HASH(bool unk);\nReturns the hash of the weapon that was replaced when a new weapon of the same slot/type is given to a ped.\nExample: if the ped had \"WEAPON_LASSO\" and you give \"WEAPON_LASSO_REINFORCED\", this returns \"WEAPON_LASSO (typically once).\n\nParameters:\n - unk (bool): Unknown. Commonly called with value 1.\n\nReturns:\n - Hash: The replaced weapon hash (e.g., WEAPON_LASSO), or 0 if none is pending.\n```",
"timestamp": "2025-11-11T08:58:51.105+01:00"
},
{
"id": "1437770134151364652",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_WEAPON_FROM_HORSE_HOLSTER\n```yaml\n// 0xAFFD0CCF31F469B8\n// namespace WEAPON\n\nHash _GET_WEAPON_FROM_HORSE_HOLSTER(Ped horse);\n/*\nReturns the weapon hash stored in the first holster slot of the specified horse or mount.\n\nParameters:\n - horse (Ped): The horse or mount entity to check.\n\nReturns:\n - Hash: The weapon hash stored in the horse's first holster slot, or 0 if empty or invalid.\n```",
"timestamp": "2025-11-11T12:45:12.459+01:00"
},
{
"id": "1438030420162646036",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_IS_PED_CARRYING_WEAPON_SNIPER_AT_ATTACH_POINT\n```yaml\n// 0xD2209866B0CB72EA\n// namespace WEAPON\n\nbool _IS_PED_CARRYING_WEAPON_SNIPER_AT_ATTACH_POINT(Ped ped, int attachPoint);\n/*\nReturns true if the ped has a sniper-type weapon equipped or stored in the specified attach point (slot).\n\nParameters:\n- ped: Ped to check.\n- attachPoint: Weapon attach point.\n\nReturns:\n- bool: true if the weapon in that slot is a sniper-class weapon; false otherwise.\n```",
"timestamp": "2025-11-12T05:59:29.48+01:00"
},
{
"id": "1438034848400015371",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_DELETE_WEAPON_OBJECTS_ON_HORSE\n```yaml\n// 0xD4C6E24D955FF061\n// namespace WEAPON\n\nvoid _DELETE_WEAPON_OBJECTS_ON_HORSE(Ped horse);\n/*\nDeletes all visible weapon PROP objects attached to the horse’s holsters.\nThis ONLY removes objects; the weapons remain in inventory and are still accessible.\n\nParameters:\n- horse: The horse Ped entity.\n\nReturns:\n- void\n```",
"timestamp": "2025-11-12T06:17:05.254+01:00"
},
{
"id": "1438177332081852461",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_ATTACH_WEAPON_TO_HORSE_HOLSTER\n```yaml\n// 0x14FF0C2545527F9B\n// namespace WEAPON\n\nvoid _ATTACH_WEAPON_TO_HORSE_HOLSTER(Ped horse, Hash weaponHash, Ped ownerPed);\n/*\nVisually attaches the specified weapon to the given horse's holster (long-gun rack), even if the player is not near the horse.\n\nParameters:\n- horse: Target horse entity that will display the holstered weapon.\n- weaponHash: Weapon to place (e.g., WEAPON_RIFLE_BOLTACTION). Likely long guns only.\n- ownerPed: The weapon owner whose inventory/horse is affected.\n\nNotes:\n- Must call _SEND_WEAPON_TO_INVENTORY (0xE9BD19F8121ADE3E) beforehand to move the weapon into the horse inventory. That native makes it accessible from the weapon wheel but not visible; this native makes it visible on the horse.\n- Works at a distance; proximity to the horse is not required.\n\nRelated Natives:\n- _SEND_WEAPON_TO_INVENTORY - 0xE9BD19F8121ADE3E\n- _DELETE_WEAPON_OBJECTS_ON_HORSE - 0xD4C6E24D955FF061\n```\nhttps://discord.com/channels/192358910387159041/643437814104457217/898704982004613161",
"timestamp": "2025-11-12T15:43:16.011+01:00"
},
{
"id": "1438235416590549084",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "this is databinding for fistingMeter\n```lua\nuiFlowblock = Citizen.InvokeNative(0xC0081B34E395CE48, -119209833) \n \nlocal temp = 0\nwhile not UiflowblockIsLoaded(uiFlowblock) do \n temp = temp + 1\n if temp > 10000 then \n print('Failed To Load Flowblock')\n return \n end\n Citizen.Wait(1) \nend\n \n\nwhile not Citizen.InvokeNative(0x10A93C057B6BD944, uiFlowblock) do\n Wait(200)\nend\n \ncontainer = DatabindingAddDataContainerFromPath(\"\", \"centralInfoDatastore\")\n\ncontainersecoundRoot = DatabindingAddDataContainer(container, \"fistingMeter\")\n \n \nDatabindingAddDataString(containersecoundRoot, \"setLeftMeterColor\", \"COLOR_YELLOW\") \nDatabindingAddDataString(containersecoundRoot, \"setRightMeterColor\", \"COLOR_RED\") \nDatabindingAddDataInt(containersecoundRoot, \"setLeftMeter\", 70)\nDatabindingAddDataInt(containersecoundRoot, \"setRightMeter\", 30)\nDatabindingAddDataBool(containersecoundRoot, \"isVisible\", true)\n\nDatabindingAddDataString(container, \"timerMessageString\", \"Hello\")\nDatabindingAddDataString(container, \"timerString\", \"\") \n\nUiflowblockEnter(uiFlowblock, `cTimer_and_fistingMeter`)\n \nif UiStateMachineExists(1546991729) == 0 then\n stateMachine = UiStateMachineCreate(1546991729, uiFlowblock)\nend \n\nWait(3000)\n\nUiStateMachineDestroy(1546991729) \n```",
"timestamp": "2025-11-12T19:34:04.437+01:00"
},
{
"id": "1438236716358963330",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "",
"timestamp": "2025-11-12T19:39:14.326+01:00"
},
{
"id": "1438240264908050555",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "databinding for Timer Scores\n```lua\nuiFlowblock = Citizen.InvokeNative(0xC0081B34E395CE48, -119209833) \n \nlocal temp = 0\nwhile not UiflowblockIsLoaded(uiFlowblock) do \n temp = temp + 1\n if temp > 10000 then \n print('Failed To Load Flowblock')\n return \n end\n Citizen.Wait(1) \nend\n \n\nwhile not Citizen.InvokeNative(0x10A93C057B6BD944, uiFlowblock) do\n Wait(200)\nend\n \ncontainer = DatabindingAddDataContainerFromPath(\"\", \"centralInfoDatastore\")\n\ncontainersecoundRoot = DatabindingAddDataContainer(container, \"score\")\n \n \nDatabindingAddDataBool(containersecoundRoot, \"leftScoreVisible\", true)\nDatabindingAddDataString(containersecoundRoot, \"leftScore\", \"25\") \nDatabindingAddDataString(containersecoundRoot, \"leftScoreTextColor\", \"COLOR_RED\") \nDatabindingAddDataString(containersecoundRoot, \"leftScoreColor\", \"COLOR_YELLOW\") \n\n\nDatabindingAddDataBool(containersecoundRoot, \"rightScoreVisible\", true)\nDatabindingAddDataString(containersecoundRoot, \"rightScore\", \"25\") \nDatabindingAddDataString(containersecoundRoot, \"rightScoreTextColor\", \"COLOR_YELLOW\") \nDatabindingAddDataString(containersecoundRoot, \"rightScoreColor\", \"COLOR_RED\") \n\nDatabindingAddDataBool(containersecoundRoot, \"isVisible\", true)\n\nDatabindingAddDataString(container, \"timerMessageString\", \"Fight\")\nDatabindingAddDataString(container, \"timerString\", \"\") \n\n\n\nUiflowblockEnter(uiFlowblock, `cTimer_Scores_and_meters`)\n \nif UiStateMachineExists(1546991729) == 0 then\n stateMachine = UiStateMachineCreate(1546991729, uiFlowblock)\nend \n\nWait(5000)\n\nUiStateMachineDestroy(1546991729) \n```",
"timestamp": "2025-11-12T19:53:20.366+01:00"
},
{
"id": "1438625464498258020",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "databinding ScoreAndFistingMeter\n```lua\nRegisterCommand(\"ScoreAndFistingMeter\", function()\n\n uiFlowblock = Citizen.InvokeNative(0xC0081B34E395CE48, -119209833) \n \n local temp = 0\n while not UiflowblockIsLoaded(uiFlowblock) do \n temp = temp + 1\n if temp > 10000 then \n print('Failed To Load Flowblock')\n return \n end\n Citizen.Wait(1) \n end\n \n\n while not Citizen.InvokeNative(0x10A93C057B6BD944, uiFlowblock) do\n Wait(200)\n end\n \n container = DatabindingAddDataContainerFromPath(\"\", \"centralInfoDatastore\")\n\n containersecoundRoot = DatabindingAddDataContainer(container, \"fistingMeter\")\n \n \n DatabindingAddDataString(containersecoundRoot, \"setLeftMeterColor\", \"COLOR_YELLOW\") \n DatabindingAddDataString(containersecoundRoot, \"setRightMeterColor\", \"COLOR_RED\") \n DatabindingAddDataInt(containersecoundRoot, \"setLeftMeter\", 70)\n DatabindingAddDataInt(containersecoundRoot, \"setRightMeter\", 30)\n DatabindingAddDataBool(containersecoundRoot, \"isVisible\", true)\n\n DatabindingAddDataString(container, \"timerMessageString\", \"Hello\")\n DatabindingAddDataString(container, \"timerString\", \"\") \n\n containersecoundRoot2 = DatabindingAddDataContainer(container, \"score\")\n \n \n DatabindingAddDataBool(containersecoundRoot2, \"leftScoreVisible\", true)\n DatabindingAddDataString(containersecoundRoot2, \"leftScore\", \"25\") \n DatabindingAddDataString(containersecoundRoot2, \"leftScoreTextColor\", \"COLOR_RED\") \n DatabindingAddDataString(containersecoundRoot2, \"leftScoreColor\", \"COLOR_YELLOW\") \n\n\n DatabindingAddDataBool(containersecoundRoot2, \"rightScoreVisible\", true)\n DatabindingAddDataString(containersecoundRoot2, \"rightScore\", \"25\") \n DatabindingAddDataString(containersecoundRoot2, \"rightScoreTextColor\", \"COLOR_YELLOW\") \n DatabindingAddDataString(containersecoundRoot2, \"rightScoreColor\", \"COLOR_RED\") \n\n DatabindingAddDataBool(containersecoundRoot2, \"isVisible\", true)\n\n DatabindingAddDataString(container, \"timerMessageString\", \"Fight\")\n DatabindingAddDataString(container, \"timerString\", \"\") \n\n\n UiflowblockEnter(uiFlowblock, `cTimer_scores_and_fistingMeter`)\n \n if UiStateMachineExists(1546991729) == 0 then\n stateMachine = UiStateMachineCreate(1546991729, uiFlowblock)\n end \n\n Wait(3000)\n\n UiStateMachineDestroy(1546991729) \nend, false)\n```",
"timestamp": "2025-11-13T21:23:59.105+01:00"
},
{
"id": "1438632812876927212",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0XBC9444F2FF94A9C0\n// namespace WEAPON\nbool _GET_CAN_SWITCH_WEAPON(Ped ped);\n/*\n* Returns true if the ped can switch of weapon.\n*\n* Parameters:\n* - ped: Ped — Ped to check\n*\n* Returns:\n* - bool — True if can switch weapon, false otherwise\n*/\n```",
"timestamp": "2025-11-13T21:53:11.095+01:00"
},
{
"id": "1438765889330872410",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_DISABLE_ALL_SPECIAL_AMMO_FOR_PED\n```yaml\n// 0xD63B4BA3A02A99E0\n// namespace WEAPON\n\nvoid _DISABLE_ALL_SPECIAL_AMMO_FOR_PED(Ped ped, Hash weaponHash);\n/*\nDisables all special ammo types for the specified weapon on the given ped, forcing the weapon to use only its basic/regular ammunition.\n\nParameters:\n- ped: The ped whose weapon ammo configuration will be modified.\n- weaponHash: Hash of the weapon for which all non-regular ammo types will be disabled.\n\nReturn value:\n- None.\n\nNotes:\n- After calling this native, the weapon on that ped becomes restricted to regular ammo only.\n- Works as a higher-level override compared to _DISABLE_AMMO_TYPE_FOR_PED and _DISABLE_AMMO_TYPE_FOR_PED_WEAPON, which target individual ammo types.\n- Useful when ensuring a weapon cannot use any special ammo variants such as high velocity, express, explosive, or split point.\n```",
"timestamp": "2025-11-14T06:41:58.994+01:00"
},
{
"id": "1438766301823897672",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_ENABLE_ALL_SPECIAL_AMMO_FOR_PED\n```yaml\n// 0x404514D231DB27A0\n// namespace WEAPON\n\nvoid _ENABLE_ALL_SPECIAL_AMMO_FOR_PED(Ped ped, Hash weaponHash);\n/*\nEnables all special ammo types for the specified weapon on the given ped.\nThis is the inverse of _DISABLE_ALL_SPECIAL_AMMO_FOR_PED, restoring the ped’s ability to use any special ammo variants available for that weapon.\n\nParameters:\n- ped: The ped whose weapon ammo configuration will be modified.\n- weaponHash: Hash of the weapon for which all special ammo types will be re-enabled.\n\nReturn value:\n- None.\n\nNotes:\n- Restores full access to special ammo categories such as express, high velocity, split point, explosive, etc.\n- Effectively undoes the restriction applied by _DISABLE_ALL_SPECIAL_AMMO_FOR_PED.\n- Useful when switching between “normal ammo only” mode and full ammo variety.\n```",
"timestamp": "2025-11-14T06:43:37.34+01:00"
},
{
"id": "1439292987250315354",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_BALLOON_OBJECT_FROM_VEHICLE\n```yaml\n// 0x0BA4250D20007C2E\n// namespace VEHICLE\n\nEntity _GET_BALLOON_OBJECT_FROM_VEHICLE(Vehicle vehicle);\n/*\nReturns the balloon object attached to a hot air balloon vehicle.\n\nIf the input vehicle is a hot air balloon, the native returns the object entity\nthat represents the balloon itself (the inflated top part). \nIf the vehicle is not balloon-type or the balloon object does not exist,\nthe function returns 0. \nAlways validate the returned handle with ENTITY::DOES_ENTITY_EXIST.\n\nParameters:\n- vehicle: The target vehicle.\n\nReturns:\n- Entity: The balloon object attached to the vehicle, or 0 if not applicable.\n\nNotes:\n- Only useful for hot air balloon vehicles.\n- The returned handle is typically an OBJECT, not a PED or VEHICLE.\n```+",
"timestamp": "2025-11-15T17:36:28.931+01:00"
},
{
"id": "1439573687673290772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_FORCE_TRAIN_WAGON_POPULATION\n```yaml\n// 0x119A5714578F4E05\n// namespace ENTITY\n\nvoid _FORCE_TRAIN_WAGON_POPULATION(Entity trainWagon, bool toggle);\n/*\nEnables or disables automatic passenger population on a specific train wagon (carriage).\n\nWhen `toggle == true`, the game keeps this wagon filled with ambient passengers.\nIf a passenger ped is deleted or removed from the wagon, a new ped is spawned almost\nimmediately to occupy that seat.\n\nWhen `toggle == false`, the engine stops auto-filling this wagon. After you delete or\nremove the existing passengers, no new peds will spawn for that wagon until you enable\nit again with `true`.\n\nParameters:\n- trainWagon: Train carriage entity (vehicle) whose passenger population should be managed.\n Should be a train wagon attached to a train, not an arbitrary vehicle.\n- toggle: `true` to enable continuous auto-population, `false` to disable it.\n```",
"timestamp": "2025-11-16T12:11:53.127+01:00"
},
{
"id": "1439574826128900218",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "A bit clarifications for `GET_PLAYER_REGISTERED_CRIME` which is wrongly signed on documentations.\n```c\n// 0x532C5FDDB986EE5C\n// namespace LAW\nbool GET_PLAYER_REGISTERED_CRIME(Player player, int index, Any* outData);\n/*\n* Returns the player registed crime data at the index.\n*\n* Parameters:\n* - player: Player — Player to retrive crime data\n* - index: int — Crime index, from the oldest to the newest\n- outData: Any* — Crime data, size of 11 bytes at least\n*\n* Returns:\n* - bool — True if successfully collected crime data\n*/\nstruct outData\n{\n Hash crimeType;\n int bounty;\n Hash unk2;\n Any unk3;\n Any unk4;\n Any unk5;\n Any unk6;\n int unk7;\n Any unk8;\n Any unk9;\n bool unk10;\n}\n```",
"timestamp": "2025-11-16T12:16:24.556+01:00"
},
{
"id": "1439578413622104144",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "kadiraktas",
"author_id": "250262096611246083",
"content": "_GET_ALL_WAGON_PASSENGERS\n```yaml\n// 0x0E558D3A49D759D6\n// namespace VEHICLE\n\nint _GET_ALL_WAGON_PASSENGERS(Vehicle wagon, ItemSet itemSet);\n/*\nCollects all passenger peds (excluding the driver) from the specified **wagon-type vehicle**\nand adds them as indexed items to the provided itemset.\n\n⚠️ IMPORTANT:\nThis native **only works on wagon-type vehicles**, specifically train wagons.\nCalling it on regular vehicles, coaches, or non-wagon entities will return 0.\n\nFor valid wagon entities, it fills the itemset with all current passenger peds and\nreturns the count. The driver (if the wagon type has one) is NOT included.\n\nTypical usage:\n- Create & clear an itemset.\n- Call this native to populate it with wagon passengers.\n- Iterate entries using GET_INDEXED_ITEM_IN_ITEMSET +\n MISC::_GET_PED_FROM_INDEXED_ITEM.\n\nParameters:\n- wagon: Must be a valid wagon entity (train wagon).\n- itemSet: A valid itemset that will be populated with passenger ped references.\n\nReturns:\n- int: Number of wagon passengers found (driver excluded).\n\nNotes:\n- Always clear the itemset before calling.\n- Returns 0 if the wagon is empty or auto-population is disabled\n (ENTITY::_0x119A5714578F4E05(wagon, false)).\n- Itemset may contain dead peds; filter with IS_ENTITY_DEAD if needed.\n- Often used alongside wagon auto-population management.\n```",
"timestamp": "2025-11-16T12:30:39.881+01:00"
},
{
"id": "1440384759787163772",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "you can find other databinding in my github\n\nhttps://github.com/0xAhmedBero/0x_Databinding/blob/main/client/CircleMeter.lua",
"timestamp": "2025-11-18T17:54:47.788+01:00"
},
{
"id": "1441509913036849234",
"channel": "🔍︱scripting",
"channel_id": "1275431684636147824",
"author": "draobrehtom",
"author_id": "452471793853267973",
"content": "# Mlo Note. Creating props in interiors\n\nSometimes when you create a prop inside MLO interior, you'll see it will be created, but stil it's not there (invisible). Prop located in main world dimension. Before, at Luman Studio, we fixed it by function `ForceRoomForEntity(entity, interior, roomHashKey)`. \n\nJust now I discovered there another more convinient method to do it, by using `N_0x82ebb79e258fa2b7(entity, interior)`. Looks like it works totaly good!\n\n> N_0x82ebb79e258fa2b7 - retainEntityInInterior (https://natives.altv.mp/0x82EBB79E258FA2B7)\n\n🫡 :lumanstudio:",
"timestamp": "2025-11-21T20:25:45.227+01:00"
},
{
"id": "1441898874817220738",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "ability cards databinding\n\nyou can find other databinding in my github\nhttps://github.com/0xAhmedBero/0x_Databinding/blob/main/client/AbilityCards.lua",
"timestamp": "2025-11-22T22:11:20.942+01:00"
},
{
"id": "1442331705028513915",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Crafting databinding\n\nyou can find other databinding in my github\nhttps://github.com/0xAhmedBero/0x_Databinding/blob/main/client/Crafting.lua",
"timestamp": "2025-11-24T02:51:15.706+01:00"
},
{
"id": "1442901958125027399",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Mission Menu databinding\n\nyou can find other databinding in my github\nhttps://github.com/0xAhmedBero/0x_Databinding/blob/main/client/MissionMenu.lua",
"timestamp": "2025-11-25T16:37:14.639+01:00"
},
{
"id": "1442910475456090250",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Legendary Menu databinding\n\nother menu are just different \"dynamic list item\" like you can use all of them\n\nmaybe there is more \"dynamic list item\" I will see\n\nyou can find other databinding in my github\nhttps://github.com/0xAhmedBero/0x_Databinding/blob/main/client/LegendaryBounty.lua",
"timestamp": "2025-11-25T17:11:05.329+01:00"
},
{
"id": "1447298178947743866",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "A bit clarifications for `GET_CARRIED_ATTACHED_INFO_FOR_SLOT` which is not documented.\n```c\n// 0x608BC6A6AACD5036\n// namespace PED\nbool GET_CARRIED_ATTACHED_INFO_FOR_SLOT(Any* outData, Ped ped, int carriableSlot, int p3);\n/*\n* Outputs carriable infos for selected ped carriable slot.\n*\n* Parameters:\n* - outData: Any* — A structure of 4 explained below\n* - ped: Ped — Ped to check\n* - carriableSlot: int — See TASK_CARRIABLE for available slots\n* - p3: int — always 0 in R* scripts\n*\n* Returns:\n* - bool — True if successfully outputs info\n*/\nstruct outData\n{\n Hash model; // Entity model\n Hash carryConfig; // Carry config (e.g: DEAD_CARRIABLE_FOX)\n Hash carriableSlot; // See TASK_CARRIABLE for available slots\n Entity entity; // Entity carried\n}\n```",
"timestamp": "2025-12-07T19:46:15.361+01:00"
},
{
"id": "1447532646333939753",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "Documentation for `TASK_ENTER_TRANSPORT` and `TASK_EXIT_TRANSPORT`.\nFor those 2 functions, 3 first values are never used.\n```c\n// 0xAEE3ADD08829CB6F\n// namespace AITRANSPORT\nvoid TASK_ENTER_TRANSPORT(Any* args);\n/*\n* Request entering a transport.\n*\n* Parameters:\n* - args: Any* — A structure of 9 explained below\n*\n*/\nstruct args\n{\n Any p0;\n Any p1;\n Any p2;\n Ped ped; // Ped performing\n Vehicle vehicle; // Vehicle to enter\n int seatIndex; // Seat to join\n int timer; // Time in ms to force ped join the seat by teleportation\n float pedSpeed; // Ped blend speed\n int flags;\n}\n```\n```c\n// 0xC273A5B8488F7838\n// namespace AITRANSPORT\nvoid TASK_EXIT_TRANSPORT(Any* args);\n/*\n* Request exiting a transport.\n*\n* Parameters:\n* - args: Any* — A structure of 7 explained below\n*\n*/\nstruct args\n{\n Any p0;\n Any p1;\n Any p2;\n Ped ped; // Ped performing\n Vehicle vehicle; // Vehicle to exit\n float pedSpeed; // Ped blend speed\n int flags;\n}\n```",
"timestamp": "2025-12-08T11:17:56.742+01:00"
},
{
"id": "1456289678255849496",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "fingaweg",
"author_id": "419284766865489940",
"content": "https://github.com/alloc8or/rdr3-nativedb-data/commit/93ddb030916d9aea583d846293b5b718b71ffdaf\nhappy new year 🙂\nonce again, some stuff from here was checked and edited and included in this commit.\ni will continue to maintain this repo, so please feel free to also open prs there, so i can check and merge them 🙂\n\nGist was also updated: https://gist.github.com/fingaweg/2a7653c73daf985f73667e9c424cb624",
"timestamp": "2026-01-01T15:15:15.85+01:00"
},
{
"id": "1457750330962874530",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "I'm offering a tool (I'm not sure if I'm allowed to post here) that lists __many hash keys along with their readable names and usage context__.\n\nThe idea is to **know what you're reading** when you read decompiled scripts or print data. \nThis glossary **contains names that were previously undiscovered** in public repositories, so take advantage of it.\n\nI'm open to suggestions and don't hesitate to report me bugs or mistakes (privately, so as not to overload the server).\n\nLink : https://rdr2.sarbatore.fr",
"timestamp": "2026-01-05T15:59:22.593+01:00"
},
{
"id": "1457842814892245226",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "Started a thread.",
"timestamp": "2026-01-05T22:06:52.48+01:00"
},
{
"id": "1459286483977506817",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "Databinding for deathscreen\n```lua\nRegisterCommand(\"deathscreen\", function()\n SetEntityHealth(PlayerPedId(), 0)\n CreateKillCam(PlayerPedId())\n Wait(1400)\n local uiFlowblock = UiflowblockRequest(209170685)\n\n local temp = 0\n while not UiflowblockIsLoaded(uiFlowblock) do \n temp = temp + 1\n if temp > 10000 then \n print('Failed To Load Flowblock')\n return \n end\n Citizen.Wait(1) \n end\n\n\n while not UiflowblockIsLoaded(uiFlowblock) do\n Wait(200)\n end\n\n local container = DatabindingAddDataContainerFromPath(\"\", \"mpDeathScreen\")\n\n DatabindingAddDataBool(container, \"showScreen\", true)\n DatabindingAddDataString(container, \"labelAction\", \"Killed by a bullet\") \n DatabindingAddDataString(container, \"labelOpponent\", \"Unknown Outlaw\")\n DatabindingAddDataString(container, \"labelPosse\", \"Lone Riders\")\n DatabindingAddDataString(container, \"labelDeathCause\", \"Cause of death: Fatal headshot\")\n DatabindingAddDataBool(container, \"showOpponentLines\", true)\n DatabindingAddDataBool(container, \"showPosseLines\", true)\n DatabindingAddDataBool(container, \"showDeathCauseLines\", true)\n DatabindingAddDataBool(container, \"showKillDeathRatio\", true)\n DatabindingAddDataInt(container, \"labelPlayerKills\", 5)\n DatabindingAddDataInt(container, \"labelPlayerDeaths\", 2)\n DatabindingAddDataBool(container, \"showHelpTextClone\", true)\n DatabindingAddDataString(container, \"labelHelpTextClone\", \"Next time, be prepared.\")\n DatabindingAddDataInt(container, \"variationId\", 0)\n\n \n UiflowblockEnter(uiFlowblock, -837092826)\n \n if UiStateMachineExists(-2083910058) == 0 then\n stateMachine = UiStateMachineCreate(-2083910058, uiFlowblock)\n end \n\n Wait(4100)\n UiStateMachineDestroy(-2083910058)\nend, false)\n```",
"timestamp": "2026-01-09T21:43:30.012+01:00"
},
{
"id": "1459288348584841296",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ahmedbero",
"author_id": "637312483295756339",
"content": "",
"timestamp": "2026-01-09T21:50:54.569+01:00"
},
{
"id": "1461422954477912064",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ehbw",
"author_id": "524283814357237792",
"content": "Research and documentation for various native toast notifications (with lua + DataView examples) by @Senexis \n\nGist: https://gist.github.com/Senexis/2e50584b81315fc14f05f02553b74e07",
"timestamp": "2026-01-15T19:13:04.273+01:00"
},
{
"id": "1462188253204713522",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "ehbw",
"author_id": "524283814357237792",
"content": "Research + documentation into sticky feeds usages including practical uses in combination with event triggers/handlers by @Senexis \n\nGist: https://gist.github.com/Senexis/c5319a5d29214d093fc06087abb085ac",
"timestamp": "2026-01-17T21:54:05.708+01:00"
},
{
"id": "1466326041353125899",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "`0xFFDE295662405B25` -> `GET_PED_COMBAT_RANGE`",
"timestamp": "2026-01-29T07:56:11.279+01:00"
},
{
"id": "1466326396610674873",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "avarianknight",
"author_id": "157679982653472768",
"content": "I think it's safe with how all of the natives around this use the exact same GET/SET pattern to assume that this is the actual name",
"timestamp": "2026-01-29T07:57:35.979+01:00"
},
{
"id": "1475157663741640725",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "`FIRE_SINGLE_BULLET` structure definition.\n```c\nvoid FIRE_SINGLE_BULLET(Any* args);\n/*\n* Fire a single bullet.\n*\n* Parameters:\n* - args: Any* — A structure sized of +20\n*\n*/\nstruct FireSingleBulletArgs\n{\n float xStart;\n float yStart;\n float zStart;\n float xEnd;\n float yEnd;\n float zEnd;\n Hash weaponHash;\n float damage;\n float p8;\n Entity instigator;\n Entity entity2;\n Entity entity3;\n BOOL p12;\n BOOL p13;\n BOOL p14;\n BOOL p15;\n BOOL p16;\n Any p17;\n BOOL p18;\n BOOL p19;\n}\n```",
"timestamp": "2026-02-22T16:49:54.14+01:00"
},
{
"id": "1477051779698135213",
"channel": "redm-research",
"channel_id": "643437867044962304",
"author": "sarbatore",
"author_id": "439014976200638464",
"content": "```c\n// 0x6098139150DCC745\n// namespace IK\nbool _INVERSE_KINEMATICS_IS_ACTIVE(Ped ped, int ik);\n/*\n* Get the ped ik activity state.\n*\n* Parameters:\n* - ped: Ped — Ped to check\n* - ik: int — Ik to check\n*\n* Returns:\n* - bool — True if is active, false otherwise\n*/\n```\nExample\n```lua\nCreateThread(function()\n while true do\n InverseKinematicsRequestLookAt(PlayerPedId())\n print(Citizen.InvokeNative(0x6098139150DCC745, PlayerPedId(), 6) -- print true because ik is in use and ik 6 is for head\n\n Wait(0)\n end\nend)\n```",
"timestamp": "2026-02-27T22:16:26.575+01:00"
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment