Need help with an easy JASS script :P

jomik

New Member
Reaction score
17
Hey, I'm new to coding in JASS, and I'm trying to convert my GUI triggers to JASS, and optimize them a bit, or write them in another way than the GUI converter thingy does. I just ran into a problem here in this script:

Trigger:
  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Visibility - Disable black mask
      • Player Group - Make (All players) treat (All players) as an Ally
      • Set temp_player = (All players matching ((((Matching player) slot status) Equal to Is playing) and (((Matching player) controller) Equal to User)))
      • Player Group - Pick every player in temp_player and do (Actions)
        • Loop - Actions
          • Player Group - Add (Picked player) to farmers
          • Player - Set (Picked player) Current gold to 80
          • Player - Set (Picked player) Current lumber to 20
          • Unit - Create 1 Farmer for (Picked player) at ((Picked player) start location) facing Default building facing degrees
      • Custom script: call DestroyForce(udg_temp_player)
      • Player - Set Player 12 (Brown) Current gold to 1000


I'm writing it in JASS like this:


But there's some error in the set p = GetPlayersMatching(...)
Please help me out >.<
Thanks in advance :D
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
JASS:
scope MapInit initializer Init

    globals
        player P
    endglobals
    
    private function ActiveHumanPlayers takes nothing returns boolean
        return GetPlayerSlotState(GetFilterPlayer()) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController(GetFilterPlayer()) == MAP_CONTROL_USER
    endfunction
    
    function GiveGoldAndUnit takes nothing returns nothing
        set P = GetEnumPlayer()
        call SetPlayerState(P, PLAYER_STATE_RESOURCE_GOLD, 80)
        call SetPlayerState(P, PLAYER_STATE_RESOURCE_LUMBER, 20)
        call CreateUnit(P, &#039;H001&#039;, GetPlayerStartLocationX(P), GetPlayerStartLocationY(P), 270.)
    endfunction

    function Init takes nothing returns nothing
        local force f = CreateForce()
        call FogMaskEnable(false)
        call ForceEnumPlayers(f,Condition(function ActiveHumanPlayers)) 
        call SetForceAllianceStateBJ(f, f, bj_ALLIANCE_ALLIED)
        call ForForce(f, function GiveGoldAndUnit)
        call DestroyForce(f)
        set f = null
        
        call SetPlayerState(Player(11), PLAYER_STATE_RESOURCE_GOLD, 1000)
    endfunction

endscope
 

jomik

New Member
Reaction score
17
Oh, thanks for the quick answer! Would you mind explaining it though? >.< I'm new to JASS as I said :p What's the scope?
And the ForceEnumPlayers?
And for the SetForceAllianceStateBJ , I wanted all players to be allied, also the computer controlled :p~
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
scope
vJass candy. It is hard to explain. Refer to Jasshelper's manual.

ForceEnumPlayers
This functions check all players, if the condition is true, add the player to force.

And for the SetForceAllianceStateBJ , I wanted all players to be allied, also the computer controlled
Sorry. You can use ForceEnumPlayers to add all players in force, by using return true function.
JASS:
function ReturnTrue takes nothing returns boolean
    return true
endfunction
 

jomik

New Member
Reaction score
17
Hmm, I can just use call ForceEnumPlayers(f, true)? I have to make a function for it? And do you have a link for vJASS and how to set it up and stuff? :p
 

Romek

Super Moderator
Reaction score
964
@ kingkingyyk3:
Giving people who don't understand vJass, random vJass code isn't going to help them or teach them anything. Explain what you're doing, and why. If you cannot do these, you might as well not post your improved code.

I'd suggest reading this if you're new to JASS. :)
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
Hmm, I can just use call ForceEnumPlayers(f, true)?
According functions list
JASS:
native ForceEnumPlayer takes force whichForce, boolexpr whichBoolexpr returns nothing

"true" is a boolean.
Condition(*A function that returns boolean*) is a boolexpr.
You can only substitute correct type into the function or the complier will give you error.
 

jomik

New Member
Reaction score
17
@ Romek, yeah I did read that, but I dunno how I can implement vJASS still :p It doesn't tell that anywhere. Got anything that can help me there? :p

@ kingkingyyk3, Thanks :D I think I get it now, and how it works, now I just need to find the vJASS thingy, I might aswell learn to use vJASS from the beginning :p
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top