Snippet GetHost 2.0

Nestharus

o-o
Reaction score
84
Ok, was tired of waiting for you to write an update, so I did it for u =P.

JASS:

library GetHost initializer Init requires Event, PlayerTracker
/*===================================================================
Name: Host
Version: 2.1
Author: Azlier
-Help from Nestharus

Description:
    What it does-
        Description

    How it does it-
        Description

Requirements: Event- URL
              PTN- URL

Installation: NA

Usage:
------------------------------------------------------------------
-GetHost takes nothing returns player
    Description

-OnHostDetect takes code c returns nothing
    Description

-TriggerRegisterHostDetected takes trigger t returns nothing
    Description
===================================================================*/
globals
    private unit array U
    private player Host
    private trigger OnDetect
    private group Group
    private unit Enummed
    private Event Ev
    private filterfunc findSelected
    private player indexedPlayer
    private integer playerId
endglobals

constant function GetHost takes nothing returns player
    return Host
endfunction

function OnHostDetect takes boolexpr c returns nothing
    call TriggerAddCondition(OnDetect, c)
endfunction

function TriggerRegisterHostDetected takes trigger t returns nothing
    call Ev.register(t)
endfunction

private function CalculateHost takes nothing returns boolean
    if Host == null then
        set Host = GetOwningPlayer(GetTriggerUnit())
        call TriggerEvaluate(OnDetect)
        call Ev.fire()
    endif
    return false
endfunction

private function FindSelected takes nothing returns boolean
    if Enummed == null then
        set Enummed = GetFilterUnit()
    endif
    return false
endfunction

private function RecalculateHost takes nothing returns boolean
    local integer i = GetPlayerCount()-1
    set Host = null
    loop
        set indexedPlayer = GetIndexedPlayer(i)
        set playerId = GetIndexedPlayerId(i)
        set Enummed = null
        call GroupEnumUnitsSelected(Group, indexedPlayer, findSelected)
        if GetLocalPlayer() == indexedPlayer then
            call SelectUnit(Enummed, false)
            call SelectUnit(U[playerId], true)
            call SelectUnit(U[playerId], false)
            call SelectUnit(Enummed, true)
        endif
        exitwhen i == 0
        set i = i - 1
    endloop
    call TriggerRegisterPlayerEvent(OnDetect, Host, EVENT_PLAYER_LEAVE)
    return false
endfunction

private function Init takes nothing returns nothing
    local trigger t
    local integer i = GetPlayerCount()-1
    if i > 0 then
        set OnDetect = CreateTrigger()
        set Group = CreateGroup()
        set t = CreateTrigger()
        set Ev = Event.create()
        set findSelected = Filter(function FindSelected)
        call TriggerAddCondition(t, Condition(function CalculateHost))
        call TriggerAddCondition(OnDetect, Condition(function RecalculateHost))
        loop
            set indexedPlayer = GetIndexedPlayer(i)
            set playerId = GetIndexedPlayerId(i)
            set U[playerId] = CreateUnit(indexedPlayer, 'hfoo', 10000, 10000, 270)
            call PauseUnit(U[playerId], true)
            call TriggerRegisterUnitEvent(t, U[playerId], EVENT_UNIT_SELECTED)
            set Enummed = null
            call GroupEnumUnitsSelected(Group, indexedPlayer, findSelected)
            if GetLocalPlayer() == indexedPlayer then
                call SelectUnit(Enummed, false)
                call SelectUnit(U[playerId], true)
                call SelectUnit(U[playerId], false)
                call SelectUnit(Enummed, true)
            endif
            exitwhen i == 0
            set i = i - 1
        endloop
        call TriggerRegisterPlayerEvent(OnDetect, Host, EVENT_PLAYER_LEAVE)
        return
    endif
    set Host = GetIndexedPlayer(0)
endfunction

endlibrary
 
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