TimDragon 99 Posted November 18, 2018 Share Posted November 18, 2018 (edited) Hi, everyone! I decided to remove hookers and strippers from the game to make a cencored version of GTA IV. My coding skills: I created my first C# script in Visual Studio and it worked :-). But it is so hard to find C# opcodes and functions for coding. In particular, I need opcode for finding hooker and stripper peds near Niko. It is a first part of code. The second part of code is a removing of found peds from player's field of view. Could you help me, please? Edited November 18, 2018 by TimDragon 1 Link to post Share on other sites
TimDragon 99 Posted November 19, 2018 Author Share Posted November 19, 2018 OK, i've found a function to remove a ped: ped.Delete(); Now I need a function to find a ped of particular model in Niko's sight radius. Link to post Share on other sites
TheSangheili 41 Posted November 20, 2018 Share Posted November 20, 2018 (edited) I like that, No, I respect that. I'm at work right now. so I'll just give you hints. Here is what I know: 1. They are not called C# Opcodes, they are called API (Application Programing Interface) 2. You can download the API Documentation if you want to know ALL api (google "GTA 4 Script hook .net documentation") 3. Get All The Peds In The Game 4. Check that every single one of them is not NULL 5. Check that the ped exists in the game 6. Check the ped's HONOR 7. Delete pigs // NOT TESTED // in constructor Interval = 1000; // World.GetPeds() may slow the game!!! wait 1 sec before calling again // in on_tick method try { Ped[] all_peds_in_gta_world = World.GetPeds(); // not safe, throws some exceptions for (int i = 0; i < all_peds_in_gta_world.Length; i++) { if (all_peds_in_gta_world[i] == null || !Game.Exists(all_peds_in_gta_world[i])) { // the idiot does not exist continue; } if (HasNoHonor(all_peds_in_gta_world[i]) { all_peds_in_gta_world[i].Delete(); // Ped.Delete() as you said } } catch { // ignored } 9. HasNoHonor Function should look like this: public bool HasNoHonor(Ped p) { if (p.isRequiredForMission) { return false; // to avoid crashing the game or messing up missions!!! } // This only removes prostitutes, I do not know if strippers are included return p.RelationshipGroup == RelationshipGroup.Prostitute; } 10. Like and subscribe, no wait, wait, wait... this is not youtube! I don't have a youtube channel... FORGET ABOUT 10! Edited November 20, 2018 by TheSangheili Try Catch Link to post Share on other sites
TheSangheili 41 Posted November 20, 2018 Share Posted November 20, 2018 (edited) Hold on! I think there is a way to remove them from the game data, or at least block them from spawning... But I have no idea how. As Jar Jar Binks puts it: Quote Hold on! messa thinking dessa a way to removen dodo from da game data, or at least block dodo from spawnen. But messa have nosa idea how - https://lingojam.com/JarJarBinks Edited November 20, 2018 by TheSangheili Link to post Share on other sites
Jitnaught 422 Posted December 18, 2018 Share Posted December 18, 2018 (edited) Here is a full example of a .NET script that removes all stripper and prostitute pedestrians: using GTA; using System; using System.Collections.Generic; namespace NoPorn { public class NoPorn : Script { List<int> modelsToDelete = new List<int>(); public NoPorn() { modelsToDelete.Add(new Model("F_Y_HOOKER_01").Hash); modelsToDelete.Add(new Model("F_Y_HOOKER_03").Hash); modelsToDelete.Add(new Model("F_Y_STRIPPERC01").Hash); modelsToDelete.Add(new Model("F_Y_STRIPPERC02").Hash); if (Game.CurrentEpisode == GameEpisode.TLAD) modelsToDelete.Add(new Model("F_Y_BIKESTRIPPER_01").Hash); Interval = 1000; Tick += NoPorn_Tick; } private void NoPorn_Tick(object sender, EventArgs e) { RemovePeds(); } private void RemovePeds() { foreach (Ped ped in World.GetAllPeds()) { if (ped != null && ped.Exists() && ped != Game.LocalPlayer.Character && modelsToDelete.Contains(ped.Model.Hash)) { ped.Delete(); } Wait(0); } } } } Tested on GTA IV 1.0.7.0, works fine. To use all you should have to do is... Create a new file in "GTA V directory/scripts/" named "NoPorn.cs" Open the file in a text editor Copy and paste the code into the text editor, then save Run GTA IV and see if it works @TheSangheili isRequiredForMission seems to always return true for (at least) prostitutes, so that can't be used to curb breakage in missions. Edited December 18, 2018 by Jitnaught changed hooker to stripper Link to post Share on other sites
Spider-Vice 42,262 Posted December 19, 2018 Share Posted December 19, 2018 @Jitnaught Sorry about the post approval delay, it got caught in the "porn" filter. Link to post Share on other sites
Jitnaught 422 Posted December 19, 2018 Share Posted December 19, 2018 @Spider-Vice All good man, I figured that was why. :) Link to post Share on other sites