(Keeps Hive Alive)
Go Back   The Hive Workshop - A Warcraft III Modding Site > Warcraft III Tutorials > Trigger (GUI) Editor Tutorials

Trigger (GUI) Editor Tutorials Contains tutorials concerning the usage of GUI features.
Read the Rules before posting.

Closed Thread
 
LinkBack Thread Tools Display Modes
Old 09-12-2006, 09:06 AM   #1 (permalink)
 
ragingspeedhorn's Avatar

Condemned Entertainment
 
Join Date: Apr 2005
Posts: 6,566

ragingspeedhorn is a name known to all (701)ragingspeedhorn is a name known to all (701)ragingspeedhorn is a name known to all (701)ragingspeedhorn is a name known to all (701)

Paired Mapping Contest #3 Winner: Warcraft Arena Paired Mapping Contest #2 Winner: Hell Scream's Party Cinematic Mini-Contest #1 Winner: The Escape & The Premonition Mini-Game Contest #1 Winner: Pirate Tag! 

Hostfinder

by: ragingspeedhorn

Note: I did not discover this code, the original author is "Tennis" from www.wc3jass.com. All credits go to him, this is only a guide on how you implement it.

Description
Many maps uses the "player1 (red) = guy who decides everything", that is annoying because the host might not want to play as red but still wants to control the stuff which the host sometimes can do (as an example, difficulty settings, player 1 (red) is in a large number of maps able to set the difficulty of the game through a dialog or something similar).
But what most people probably didn't knew is that with just a very small amount of custom scripts (Jass) and 1 variable you can detect who is the host.

So here it goes, the 3 easy steps on how to create the variable and make the custom scripts.

Step 1: The Variable
Create a new variable, name it "Host", set the variable type to "Player (player)", do not check out the Aray box and leave the initial value at none like I have done in the picture below.


Step 2: Custom Script Header
Right, you have your variable now it is time to get the hardest part done. In the Trigger Editor you click at the top at the maps name like if it was any other trigger, in there you paste these lines of code (Make sure you paste it at the top):
function GetHost takes nothing returns nothing
    local gamecache g = InitGameCache("Map.w3v")
    call StoreInteger ( g, "Map", "Host", GetPlayerId(GetLocalPlayer ())+1)
    call TriggerSyncStart ()
    call SyncStoredInteger ( g, "Map", "Host" )
    call TriggerSyncReady ()
    set udg_Host = Player( GetStoredInteger ( g, "Map", "Host" )-1)
    call FlushGameCache( g )
    set g = null
endfunction

Step 3 Getting The Host
Now that you have the most of the work done you just need to make a last simple trigger where you set the event to Map initialization, conditions you leave untouched and in the actions you make a custom script like this: "Custom script: call GetHost()". Now it has checked who is the host and stored it in the variable, for further use you just need to address everything to the "Host" variable like you would usually do to Player 1 (red), it is as simple as that.


Final note: This is not 100% stable, the gethost() can fail sometimes and select another player, however that is quite rare.
__________________

Last edited by Ralle; 10-25-2006 at 04:31 PM.
ragingspeedhorn is offline  
Closed Thread

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

All times are GMT. The time now is 06:01 PM.






Your link here 
Yahoo Personals | Loans | Credit Cards | Loan | Mortgage Loans
Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Copyright©Ralle