~ Forums of Enroth ~

An Enroth diehard fan community
 
HomeHome  FAQFAQ  SearchSearch  RegisterRegister  Log inLog in  
Latest topics
» [H3SW v0.8.1] Crash when I wear the Crystal Ball and right-click neutral packs (also Visions Spell)
by Orzie Yesterday at 02:11

» [H3SW V0.8.1] HD mod keeps changing resolution
by Orzie 2019-02-16, 18:47

» Heroes III: The Succession Wars v0.8.1 Beta
by qlczas_PL 2019-02-15, 19:05

» [H3SW V0.8.1] Enemy AI turn stuck (Using Teleporters infinitely)
by wielkaberta 2019-02-12, 03:50

» Campaign in future?
by DeusEx 2019-02-11, 21:10

» Hiro's hero biographies for H3SW
by Orzie 2019-02-11, 06:00

» [H3SW v0.8.1] Map - Beltway
by Orzie 2019-02-11, 04:00

Poll
"Wait" in HoMM2?
Yes
80%
 80% [ 55 ]
No
20%
 20% [ 14 ]
Total Votes : 69
Most Viewed Topics
H3SW: General Graphics discussion
Ragoon's Graphics For HoMM3SW
H3SW General Discussion
H3SW: Dwelling Development
Heroes of Might and Magic 3: The Succession Wars - General info & Announcements
H3SW Map List: Work in progress
Welcome fellow Enrothians!
Enrothian Fan Art
Commanders?
H3SW Recruitment Point - Enroth Needs You!

Share | 
 

 [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"

Go down 
AuthorMessage
Unknown_Hero
Vampire
Vampire
Unknown_Hero

Messages : 459
Quality Points : 58
Registration Date : 2015-09-06

PostSubject: [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"   2018-09-27, 00:00

I'm trying to understand how it works. Smile

On the Scripting Documentation page:

GetCurrentPlayer()
Returns a number (0-5) determining which player is active now.

GetHeroOwner(hero)
hero: The hero to get the owner of. (See, for example, GetHero).
Returns the owner of the given hero as an integer (0-5), or -1 if the hero is not owned by any player (i.e.: is or may become available for hire).

I did some tests.

This does not work:

Code:
function OnHeroMove(x, y)
  player = GetCurrentPlayer();
  if player == 0 then
    MessageBox("Player is 0.");
  elseif player == 1 then
    MessageBox("Player is 1.");
  end;
end

This works:

Code:
function OnHeroMove(x, y)
  hero = GetCurrentHero();
  owner = GetHeroOwner(hero);
  if owner == 0 then
    MessageBox("Owner is 0.");
  elseif owner == 1 then
    MessageBox("Owner is 1.");
  end;
end

This works:

Code:
function OnHeroMove(x, y)
  player = GetCurrentPlayer();
  gold = GetResource(player, RESOURCE_GOLD);
  gold = gold - 500;
  SetResource(player, RESOURCE_GOLD, gold);
  MessageBox("Player - 500 gold.");
end

This does not work:

Code:
function OnHeroMove(x, y)
  hero = GetCurrentHero();
  player = GetHeroOwner(hero);
  gold = GetResource(player, RESOURCE_GOLD);
  gold = gold - 500;
  SetResource(player, RESOURCE_GOLD, gold);
  MessageBox("Player - 500 gold.");
end

So, what is the difference between the two expressions and why it works in one case and not in the other? Is this normal?

It would be nice if someone could tell me. Very Happy
Back to top Go down
Darmani
Master Modder
Master Modder
Darmani

Messages : 237
Quality Points : 38
Registration Date : 2014-12-27

PostSubject: Re: [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"   2018-12-31, 15:59

The reason is that GetCurrentPlayer returns a player object, while GetHeroOwner returns a number. So, the documentation is incorrect. GetCurrentPlayer().color or GetPlayerColor(GetCurrentPlayer()) should do what you want it to do. It looks like this is a change that occurred during the scripting overhaul to deep-binding.

I will make it so GetHeroOwner also returns a player object, and update the documentation of both.
Back to top Go down
Darmani
Master Modder
Master Modder
Darmani

Messages : 237
Quality Points : 38
Registration Date : 2014-12-27

PostSubject: Re: [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"   2019-01-01, 12:01

This has been done. Both examples now work using "player.color == 0" .
Back to top Go down
Unknown_Hero
Vampire
Vampire
Unknown_Hero

Messages : 459
Quality Points : 58
Registration Date : 2015-09-06

PostSubject: Re: [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"   2019-01-03, 07:06

Thanks for the explanation and the change. Smile
Back to top Go down
Sponsored content




PostSubject: Re: [Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"   

Back to top Go down
 
[Ironfist ver 1.3.0] "GetCurrentPlayer()" and "GetHeroOwner(hero)"
Back to top 
Page 1 of 1
 Similar topics
-
» [Ironfist ver 1.2] scrXXXX.tmp files
» Some Ironfist changes I am working on
» [Ironfist ver 1.2] Crash with AUTOSAVE
» A good night's rest for the hero and his troops
» E HERO Water control/nuke (HERO + Monarchs(?))

Permissions in this forum:You cannot reply to topics in this forum
~ Forums of Enroth ~ :: Modding Guild :: Heroes of Might and Magic II: Project Ironfist :: Modding and Mapmaking-
Jump to: