is there any way how i can make changes to my odf or lua to add health to a certian unit but only if that unit is a human
OKAY
this is what im trying to achieve
one of the the "computer players" (AI) selects the "jet trooper". The jet trooper is on the map and his maximum health points are 100.
One of the human players spawns as a "jet trooper" but because he's a human he now has 200 maximum health points.
I guess my question would be is there a way (through the odf or lua) that the computer can give different things (like extra maximum health) to a unit depending on if its a human or computer.
Mhh, the only thing I can think of right now is using SetProperty() but that would crash in multiplayer.
You might want to take a look at Zerteds Holocron mode. From what I've heard all units have a shield there (but it's only 1 HP) and only the unit carrying the holocron gets their shield raised to a useful value.
Lorul1 wrote:is there any way how i can make changes to my odf or lua to add health to a certian unit but only if that unit is a human
OKAY
this is what im trying to achieve
one of the the "computer players" (AI) selects the "jet trooper". The jet trooper is on the map and his maximum health points are 100.
One of the human players spawns as a "jet trooper" but because he's a human he now has 200 maximum health points.
I guess my question would be is there a way (through the odf or lua) that the computer can give different things (like extra maximum health) to a unit depending on if its a human or computer.
add the green part to your lua file :
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--
---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptPostLoad()
--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1-1"}
cp2 = CommandPost:New{name = "cp2-1"}
cp3 = CommandPost:New{name = "cp3-1"}
cp4 = CommandPost:New{name = "cp4-1"}
cp5 = CommandPost:New{name = "cp5-1"}
cp6 = CommandPost:New{name = "cp6-1"}
--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true}
--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)
conquest:AddCommandPost(cp6)
conquest:Start()
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character), "AddHealth", 50)
end
end)
EnableSPHeroRules()
end
function ScriptInit()
StealArtistHeap(132*1024)
-- Designers, these two lines *MUST* be first.
SetPS2ModelMemory(3200000)
SetUberMode(1);
ReadDataFile("ingame.lvl")
-- Republic Attacking (attacker is always #1)
local REP = 1
local CIS = 2
-- These variables do not change
local ATT = 1
local DEF = 2
is there any way how this can be done with locking up multiplier. can i put this...
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character), "AddHealth", 50)
end
end)
Lorul1 wrote:is there any way how this can be done with locking up multiplier. can i put this...
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character), "AddHealth", 50)
end
end)
in to the odf's of my units or something
i dont know about multiplier sorry :S, maybe modifying it for cast if multiplayer or singleplayer but i am not sure about that
There are a couple of SetProperty() values that will certainly crash multiplayer (like changing the weapon model) but I've also heard of cases where SetProperty() didn't crash.
Simplest thing for you to do: Try it out.
The script that you gave me adds +50 once I lose heath. Thats not what i want. Im looking for something that gives human players +50 heath that adds on to the health they already have.
i just want to boost the max health if the player is a human
~ If a computer plays as jet trooper he gets 20 health
~ If a human plays as a jet trooper he gets 30 health
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character),"AddHealth", 50)
end
end
)
I think "AddHealth" needs to change to something else but I don't know what
Lorul1 wrote:The script that you gave me adds +50 once I lose heath. Thats not what i want. Im looking for something that gives human players +50 heath that adds on to the health they already have.
i just want to boost the max health if the player is a human
~ If a computer plays as jet trooper he gets 20 health
~ If a human plays as a jet trooper he gets 30 health
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character),"AddHealth", 50)
end
end
)
I think "AddHealth" needs to change to something else but I don't know what
mmm do you have a standard health for every? like 400 ? when you say human, you mean player, or every units with healthtype "human"?
---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------
function ScriptPostLoad()
--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1-1"}
cp2 = CommandPost:New{name = "cp2-1"}
cp3 = CommandPost:New{name = "cp3-1"}
cp4 = CommandPost:New{name = "cp4-1"}
cp5 = CommandPost:New{name = "cp5-1"}
cp6 = CommandPost:New{name = "cp6-1"}
--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF, textATT = "game.modes.con", textDEF = "game.modes.con2", multiplayerRules = true}
--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)
conquest:AddCommandPost(cp6)
conquest:Start()
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character), "MaxHealth", 450)
end
end)
EnableSPHeroRules()
end
function ScriptInit()
StealArtistHeap(132*1024)
-- Designers, these two lines *MUST* be first.
SetPS2ModelMemory(3200000)
SetUberMode(1);
ReadDataFile("ingame.lvl")
I'm thinking about adding the wookies and I don't want them to have the same health as the clones
When the computers play as the clones: HEALTH = 100
When the human player plays as the clones: HEALTH = 150
When the computer plays as the wookies: HEALTH = 200
When the human player plays as the wookies: HEALTH = 250
The script you gave me is good but when I add the wookies I need a script that can add 50 not change all the classes to one health number. How do I do that?
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) and GetEntityClass(character) == "whatever_your_wookiee_class_is_called" then
SetProperty(GetCharacterUnit(character), "MaxHealth", 250)
elseif IsCharacterHuman(character) and GetEntityClass(character) == "whatever_your_clone_class_is_called" then
SetProperty(GetCharacterUnit(character), "MaxHealth", 150)
end
end)
Make sure you are able clearly explain how this code works.
Onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) and GetEntityClass(character) == "all_inf_wookiee" then
SetProperty(GetCharacterUnit(character), "MaxHealth", 999999)
end
end
)
It's not a value you'll see in any ODF, but it's the value the game uses to store the unit's current health.
If the ODF's MaxHealth is 100, you can set CurHealth to 200 and it will work, but once the player is damaged below 100 they can't heal to above 100, and if damaged but still above 100 they also can't heal.
If you set the ODF MaxHealth to 200 and whenever a Jettrooper spawns or is damaged or healed, check if its CurHealth is above 100 and set it to 100, ignoring all players in the calculation.
onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) then
SetProperty(GetCharacterUnit(character),"CurHealth", 950)
end
end
)
Onfirstspawn = OnCharacterSpawn(
function(character)
if IsCharacterHuman(character) and GetEntityClass(character) == "all_inf_wookiee" then
SetProperty(GetCharacterUnit(character),"CurHealth", 990)
end
end
)
for some reason the code wont work with "CurHealth", "MaxHealth", or "AddHealth" wont work with the code above.
I think it has some thing to do with this line
AQT wrote:if IsCharacterHuman(character) and GetEntityClass(character) == "all_inf_wookiee" then
were REALLY close to figuring this out can some one find the problem with AQT's code ?