Quantcast
Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
    1. Welcome to GTAForums!   (92,919 visits to this link)

    2. News

    1. GTA Online

      1. Find Lobbies & Players
      2. Guides & Strategies
      3. Vehicles
      4. Content Creator
      5. Help & Support
    2. Crews

      1. Events
      2. Recruitment
    1. Grand Theft Auto Series

    2. GTA Next

    3. GTA V

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

      1. Episodes from Liberty City
      2. Multiplayer
      3. Guides & Strategies
      4. Help & Support
      5. GTA Mods
    5. GTA Chinatown Wars

    6. GTA Vice City Stories

    7. GTA Liberty City Stories

    8. GTA San Andreas

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    9. GTA Vice City

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    10. GTA III

      1. Guides & Strategies
      2. Help & Support
      3. GTA Mods
    11. Top Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    12. Wiki

      1. Merchandising
    1. GTA Modding

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Mod Showroom

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

      1. DYOM
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Red Dead Redemption 2

    2. Red Dead Redemption

    3. Rockstar Games

    1. Off-Topic

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

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

    2. Site Suggestions

Sign in to follow this  
GameHacker666

Counting how many enemies are left!

Recommended Posts

GameHacker666
Posted (edited)

Hello!
I want to create a mod for a custom deathmatch which would start by pressing C on the keyboard. Pressing C creates 5 pedestrians and makes them fight each other and the player aswell. The fighting system works fine but I can't figure out how to display the amount of remaining enemies. I've tried a lot of things, but no success whatsoever. I'm not sure what I'm doing wrong, because this was supposed to be the easy part, lol. :facedesk::cry:

Anyway, below's a snippet of my code. As you can see, I make sure that the state of peds is being checked every single frame and if the said pedestrian is dead, the counter updates. I also make sure the substraction doesn't happen more than once by adding another boolean.

private void onTick(object sender, EventArgs e)        {            if (matchStart == true)            {                Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");                Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("Enemies left: " + numOfEnemies));                Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);            if (ped1.IsDead == true && ped1DeathCheck == false)            {                numOfEnemies--;                ped1DeadCheck = true;            }            //I check the other peds too obviously, this is just a snippet           if(numOfEnemies == 0)            {                Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");                Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("CONGRATULATIONS, YOU'VE WON!"));                Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);            }          }        } private void onKeyDown(object sender, KeyEventArgs e)        {            if (e.KeyCode == Keys.C)            {                numOfEnemies = 5;                ped1 = World.CreatePed(PedHash.Bevhills01AMY, ped1Coords);                ped1.Weapons.Give(WeaponHash.SniperRifle, 500, true, true);                 ped2 = World.CreatePed(PedHash.Bevhills02AMY, ped2Coords);                ped2.Weapons.Give(WeaponHash.HeavySniper, 500, true, true);                 ped3 = World.CreatePed(PedHash.Cop01SMY, ped3Coords);                ped3.Weapons.Give(WeaponHash.AssaultRifle, 500, true, true);                //and a couple more peds            }        }
Edited by GameHacker666

Share this post


Link to post
Share on other sites
Bob_74

You set numOfPlayers and then check numOfEnemies.

Is it a mistake in your snippet or do you have this in your actual code?

Share this post


Link to post
Share on other sites
GameHacker666
Posted (edited)

You set numOfPlayers and then check numOfEnemies.

Is it a mistake in your snippet or do you have this in your actual code?

 

It's just in the snippet. I accidentally deleted too much of the original code in the post and then made a mistake when rewriting.

if (ped1.IsDead == true && ped1DeathCheck == false)            {                numOfEnemies--;                ped1DeadCheck = true;            }

^^This code right here is the culprit it seems, because nothing happens if it goes through. I've put different things inside, such as set the health of my character to 50 etc. but when the enemy dies, this part just doesn't get executed for some reason. I tried creating another method and calling it inside the onTick(), but with no success.

Edited by GameHacker666

Share this post


Link to post
Share on other sites
Bob_74

Did you set matchStart to true?

Because this works nicely:

using System;using System.Windows.Forms;using GTA;using GTA.Native;namespace DebugScript{    public class MainScript : Script    {        private bool matchStart = false;        private Ped ped1;        private bool ped1DeathCheck = false;        private int numOfEnemies = 0;        public MainScript()        {            Tick += OnTick;            KeyDown += OnKeyDown;        }        private void OnTick(object sender, EventArgs e)        {            if (matchStart == true)            {                Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");                Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("Enemies left: " + numOfEnemies));                Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);                if (ped1.IsDead == true && ped1DeathCheck == false)                {                    numOfEnemies--;                    ped1DeathCheck = true;                }                if (numOfEnemies == 0)                {                    Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");                    Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("CONGRATULATIONS, YOU'VE WON!"));                    Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);                }            }        }        private void OnKeyDown(object sender, KeyEventArgs e)        {            if (e.KeyCode == Keys.C)            {                numOfEnemies = 1;                ped1 = World.CreatePed(PedHash.Bevhills01AMY, Game.Player.Character.Position);                ped1.Weapons.Give(WeaponHash.SniperRifle, 500, true, true);                matchStart = true;            }        }    }}

The only issue is that you call _0x238FFE5C7B0498A6 twice when the player has won, so it switch between "Ennemies left..." and "CONGRATULATIONS...".

You can quickly fix it like this:

if (ped1.IsDead == true && ped1DeathCheck == false){	numOfEnemies--;	ped1DeathCheck = true;}if (numOfEnemies == 0){	Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");	Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("CONGRATULATIONS, YOU'VE WON!"));	Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);}else{	Function.Call(Hash._SET_TEXT_COMPONENT_FORMAT, "STRING");	Function.Call(Hash._ADD_TEXT_COMPONENT_STRING, ("Enemies left: " + numOfEnemies));	Function.Call(Hash._0x238FFE5C7B0498A6, 0, 0, 1, -1);}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

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