| 06-26-2007, 06:21 PM | #1 |
I wanted to know if it's possible to make a free for all vistory condition in altered melee and using custom building as main. I know it's possible but it's damn annoying to trigger.According leavers and unused slots.So can u tell me your fastest way to do it. And my map will be finally playable. |
| 06-26-2007, 06:57 PM | #2 |
The best option is to make a custom one in JASS. It can be done converting a melee initialization trigger to jass, and modifying the parts which you need to be custom in your map. I did one for my project and works perfectly. If you want, I can send you the code. |
| 06-26-2007, 07:30 PM | #3 |
yes it would be helpful. |
| 06-27-2007, 11:37 PM | #4 |
Sorry for my delayed response, I've been a little bit busy Here's my code: Initialization Trigger://Initialization Code function Trig_Melee_Initialization_SetPlayerColorText takes player p returns string //Set the color test in the text local playercolor pc = GetPlayerColor(p) local string color if pc == ConvertPlayerColor(0) then set color = "|CFFFF0000" elseif pc == ConvertPlayerColor(1) then set color = "|CFF0000FF" elseif pc == ConvertPlayerColor(2) then set color = "|CFF18E7BD" elseif pc == ConvertPlayerColor(3) then set color = "|CFF520084" elseif pc == ConvertPlayerColor(4) then set color = "|CFFFFFF00" elseif pc == ConvertPlayerColor(5) then set color = "|CFFFF8A08" elseif pc == ConvertPlayerColor(6) then set color = "|CFF18BE00" elseif pc == ConvertPlayerColor(7) then set color = "|CFFE759AD" elseif pc == ConvertPlayerColor(8) then set color = "|CFF949694" elseif pc == ConvertPlayerColor(9) then set color = "|CFF7BBEF7" elseif pc == ConvertPlayerColor(10) then set color = "|CFF086142" elseif pc == ConvertPlayerColor(11) then set color = "|CFF4A2800" else set color = "|CFFFFFFFF" endif set pc = null return color endfunction function Trig_Melee_Initialization_MeleeResult takes player whichPlayer,boolean leftGame, playergameresult gR returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() local string formatString if (leftGame) then set formatString = GetLocalizedString( "PLAYER_LEFT_GAME" ) else if gR == PLAYER_GAME_RESULT_VICTORY then set formatString = GetLocalizedString( "PLAYER_VICTORIOUS" ) else set formatString = GetLocalizedString( "PLAYER_DEFEATED" ) endif endif if SubString(formatString, 0, 2) == "%s" then set formatString = SubString(formatString, 2, StringLength(formatString)) endif call DisplayTimedTextToForce(GetPlayersAll(), 60, Trig_Melee_Initialization_SetPlayerColorText(whichPlayer) + GetPlayerName(whichPlayer) + "|r" + formatString) if gR == PLAYER_GAME_RESULT_VICTORY then call DialogSetMessage( d, GetLocalizedString( "GAMEOVER_VICTORY_MSG" ) ) call DialogAddButton( d, GetLocalizedString( "GAMEOVER_CONTINUE_GAME" ), GetLocalizedHotkey("GAMEOVER_CONTINUE_GAME") ) else call DialogSetMessage( d, GetLocalizedString( "GAMEOVER_DEFEAT_MSG" ) ) if (not bj_meleeGameOver and IsMapFlagSet(MAP_OBSERVERS_ON_DEATH)) then call DialogAddButton( d, GetLocalizedString( "GAMEOVER_CONTINUE_OBSERVING" ), GetLocalizedHotkey("GAMEOVER_CONTINUE_OBSERVING") ) endif endif set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddQuitButton( d, true, GetLocalizedString( "GAMEOVER_QUIT_GAME" ), GetLocalizedHotkey("GAMEOVER_QUIT_GAME") ) ) call DialogDisplay( whichPlayer, d, true ) if gR == PLAYER_GAME_RESULT_VICTORY then call StartSoundForPlayerBJ( whichPlayer, bj_victoryDialogSound ) else call StartSoundForPlayerBJ( whichPlayer, bj_defeatDialogSound ) endif endfunction function Trig_Melee_Initialization_GameOverDialog takes player whichPlayer returns nothing local trigger t = CreateTrigger() local dialog d = DialogCreate() local string s = GetLocalizedString( "PLAYER_LEFT_GAME" ) if SubString(s, 0, 2) == "%s" then set s = SubString(s, 2, StringLength(s)) endif call DisplayTimedTextToForce(GetPlayersAll(), 60, Trig_Melee_Initialization_SetPlayerColorText(whichPlayer) + GetPlayerName(whichPlayer) + "|r" + s) if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then set s = GetLocalizedString( "GAMEOVER_DISCONNECTED" ) else set s = GetLocalizedString( "GAMEOVER_GAME_OVER" ) endif call DialogSetMessage( d, s ) set t = CreateTrigger() call TriggerRegisterDialogButtonEvent( t, DialogAddQuitButton( d, true, GetLocalizedString( "GAMEOVER_OK" ), GetLocalizedHotkey("GAMEOVER_OK") ) ) call DialogDisplay( whichPlayer, d, true ) call StartSoundForPlayerBJ( whichPlayer, bj_defeatDialogSound ) endfunction function Trig_Melee_Initialization_RemovePlayerPreserveUnits takes player whichPlayer,playergameresult gameResult,boolean leftGame returns nothing if AllowVictoryDefeat(gameResult) then call RemovePlayer(whichPlayer, gameResult) if gameResult == PLAYER_GAME_RESULT_VICTORY or gameResult == PLAYER_GAME_RESULT_DEFEAT then call Trig_Melee_Initialization_MeleeResult(whichPlayer, leftGame, gameResult) return else call Trig_Melee_Initialization_GameOverDialog( whichPlayer ) endif endif endfunction function Trig_Melee_Initialization_MeleeDoDefeatEnum takes nothing returns nothing local player thePlayer = GetEnumPlayer() call CachePlayerHeroData(thePlayer) call MakeUnitsPassiveForTeam(thePlayer) set bj_meleeDefeated[GetPlayerId(thePlayer)] = true call Trig_Melee_Initialization_RemovePlayerPreserveUnits(thePlayer, PLAYER_GAME_RESULT_DEFEAT, false) endfunction function Trig_Melee_Initialization_MeleeDoVictoryEnum takes nothing returns nothing local player thePlayer = GetEnumPlayer() local integer playerIndex = GetPlayerId(thePlayer) if (not bj_meleeVictoried[playerIndex]) then set bj_meleeVictoried[playerIndex] = true call CachePlayerHeroData(thePlayer) call Trig_Melee_Initialization_RemovePlayerPreserveUnits(thePlayer, PLAYER_GAME_RESULT_VICTORY, false) endif endfunction function Trig_Melee_Initialization_MeleeRemoveObservers takes nothing returns nothing local integer playerIndex local player indexPlayer set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (IsPlayerObserver(indexPlayer)) then call Trig_Melee_Initialization_RemovePlayerPreserveUnits(indexPlayer, PLAYER_GAME_RESULT_NEUTRAL, false) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunction function Trig_Melee_Initialization_CheckLosersVictors takes nothing returns nothing local integer playerIndex local player indexPlayer local force defeatedPlayers = CreateForce() local force victoriousPlayers if (bj_meleeGameOver) then return endif if (GetIntegerGameState(GAME_STATE_DISCONNECTED) != 0) then set bj_meleeGameOver = true return endif set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (not bj_meleeDefeated[playerIndex] and not bj_meleeVictoried[playerIndex]) then if (MeleeGetAllyStructureCount(indexPlayer) <= 0) then call ForceAddPlayer(defeatedPlayers, Player(playerIndex)) set bj_meleeDefeated[playerIndex] = true endif endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop set victoriousPlayers = MeleeCheckForVictors() call ForForce(defeatedPlayers, function Trig_Melee_Initialization_MeleeDoDefeatEnum) call ForForce(victoriousPlayers, function Trig_Melee_Initialization_MeleeDoVictoryEnum) if (bj_meleeGameOver) then call Trig_Melee_Initialization_MeleeRemoveObservers() endif endfunction function Trig_Melee_Initialization_Get_TownHall takes nothing returns boolean local unit u = GetFilterUnit() local boolean b = IsUnitType(u, UNIT_TYPE_TOWNHALL) == true set u = null return b endfunction function Trig_Melee_Initialization_Count_TownHall takes player p returns integer local boolexpr Cnd = Condition( function Trig_Melee_Initialization_Get_TownHall ) local group g = GetUnitsOfPlayerMatching(p, Cnd) local integer c = CountUnitsInGroup(g) call DestroyGroup(g) set Cnd = null set g = null return c endfunction function Trig_Melee_Initialization_MeleeGetAllyKeyStructureCount takes player whichPlayer returns integer local integer playerIndex local player indexPlayer local integer keyStructs set keyStructs = 0 set playerIndex = 0 loop set indexPlayer = Player(playerIndex) if (PlayersAreCoAllied(whichPlayer, indexPlayer)) then set keyStructs = Trig_Melee_Initialization_Count_TownHall(indexPlayer) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop return keyStructs endfunction function Trig_Melee_Initialization_MeleePlayerIsCrippled takes player whichPlayer returns boolean local integer allyStructures = MeleeGetAllyStructureCount(whichPlayer) local integer allyKeyStructures = Trig_Melee_Initialization_MeleeGetAllyKeyStructureCount(whichPlayer) return (allyStructures > 0) and (allyKeyStructures <= 0) endfunction function Trig_Melee_Initialization_GetRaceMessage takes player p returns string // Change the player race conditionals by the ones you need local string s = "You will be revealed to your opponents unless you build a " local race r = GetPlayerRace(p) if r == RACE_HUMAN or r == RACE_NIGHTELF then set s = s + UnitId2String('nntt') else set s = s + UnitId2String('u000') endif set r = null return s endfunction function Trig_Melee_Initialization_MeleeGetCrippledRevealedMessage takes player whichPlayer returns string return GetLocalizedString("CRIPPLE_REVEALING_PREFIX") + Trig_Melee_Initialization_SetPlayerColorText(whichPlayer) + GetPlayerName(whichPlayer) + "|r" + GetLocalizedString("CRIPPLE_REVEALING_POSTFIX") endfunction function Trig_Melee_Initialization_MeleeCrippledPlayerTimeout takes nothing returns nothing local timer expiredTimer = GetExpiredTimer() local integer playerIndex local player exposedPlayer set playerIndex = 0 loop if (bj_crippledTimer[playerIndex] == expiredTimer) then exitwhen true endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop if (playerIndex == bj_MAX_PLAYERS) then return endif set exposedPlayer = Player(playerIndex) if (GetLocalPlayer() == exposedPlayer) then call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], false) endif call DisplayTimedTextToPlayer(GetLocalPlayer(), 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, Trig_Melee_Initialization_MeleeGetCrippledRevealedMessage(exposedPlayer)) call MeleeExposePlayer(exposedPlayer, true) endfunction function Trig_Melee_Initialization_MeleeCheckForCrippledPlayers takes nothing returns nothing local integer playerIndex local player indexPlayer local boolean isNowCrippled if bj_finishSoonAllExposed then return endif set playerIndex = 0 loop set indexPlayer = Player(playerIndex) set isNowCrippled = Trig_Melee_Initialization_MeleePlayerIsCrippled(indexPlayer) if (not bj_playerIsCrippled[playerIndex] and isNowCrippled) then set bj_playerIsCrippled[playerIndex] = true call TimerStart(bj_crippledTimer[playerIndex], bj_MELEE_CRIPPLE_TIMEOUT, false, function Trig_Melee_Initialization_MeleeCrippledPlayerTimeout) if (GetLocalPlayer() == indexPlayer) then call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], true) call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, Trig_Melee_Initialization_GetRaceMessage(indexPlayer)) endif elseif (bj_playerIsCrippled[playerIndex] and not isNowCrippled) then set bj_playerIsCrippled[playerIndex] = false call PauseTimer(bj_crippledTimer[playerIndex]) if (GetLocalPlayer() == indexPlayer) then call TimerDialogDisplay(bj_crippledTimerWindows[playerIndex], false) if (MeleeGetAllyStructureCount(indexPlayer) > 0) then if (bj_playerIsExposed[playerIndex]) then call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, GetLocalizedString("CRIPPLE_UNREVEALED")) else call DisplayTimedTextToPlayer(indexPlayer, 0, 0, bj_MELEE_CRIPPLE_MSG_DURATION, GetLocalizedString("CRIPPLE_UNCRIPPLED")) endif endif endif call MeleeExposePlayer(indexPlayer, false) endif set playerIndex = playerIndex + 1 exitwhen playerIndex == bj_MAX_PLAYERS endloop endfunction function Trig_Melee_Initialization_MeleeCheckLostUnit takes unit lostUnit returns nothing local player lostUnitOwner = GetOwningPlayer(lostUnit) if (GetPlayerStructureCount(lostUnitOwner, true) <= 0) then call Trig_Melee_Initialization_CheckLosersVictors() endif call Trig_Melee_Initialization_MeleeCheckForCrippledPlayers() endfunction function Trig_Melee_Initialization_MeleeTriggerActionConstructCancel takes nothing returns nothing call Trig_Melee_Initialization_MeleeCheckLostUnit(GetCancelledStructure()) endfunction function Trig_Melee_Initialization_MeleeTriggerActionUnitDeath takes nothing returns nothing if (IsUnitType(GetDyingUnit(), UNIT_TYPE_STRUCTURE)) then call Trig_Melee_Initialization_MeleeCheckLostUnit(GetDyingUnit()) endif endfunction function Trig_Melee_Initialization_MeleeCheckAddedUnit takes unit addedUnit returns nothing local player addedUnitOwner = GetOwningPlayer(addedUnit) if (bj_playerIsCrippled[GetPlayerId(addedUnitOwner)]) then call Trig_Melee_Initialization_MeleeCheckForCrippledPlayers() endif endfunction function Trig_Melee_Initialization_MeleeTriggerActionUnitConstructionStart takes nothing returns nothing call Trig_Melee_Initialization_MeleeCheckAddedUnit(GetConstructingStructure()) endfunction function Trig_Melee_Initialization_MeleeTriggerActionAllianceChange takes nothing returns nothing call Trig_Melee_Initialization_CheckLosersVictors() call Trig_Melee_Initialization_MeleeCheckForCrippledPlayers() endfunction function Trig_Melee_Initialization_MeleeVictoryDefeat takes nothing returns nothing local trigger trig local integer index local player indexPlayer set bj_finishSoonTimerDialog = CreateTimerDialog(null) set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon) set trig = CreateTrigger() call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW) call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow) set index = 0 loop set indexPlayer = Player(index) if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then set bj_meleeDefeated[index] = false set bj_meleeVictoried[index] = false set bj_playerIsCrippled[index] = false set bj_playerIsExposed[index] = false set bj_crippledTimer[index] = CreateTimer() set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index]) call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer)) set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null) call TriggerAddAction(trig, function Trig_Melee_Initialization_MeleeTriggerActionConstructCancel) set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction(trig, function Trig_Melee_Initialization_MeleeTriggerActionUnitDeath) set trig = CreateTrigger() call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null) call TriggerAddAction(trig, function Trig_Melee_Initialization_MeleeTriggerActionUnitConstructionStart) set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT) call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated) set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) set trig = CreateTrigger() call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE) call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1) call TriggerAddAction(trig, function Trig_Melee_Initialization_MeleeTriggerActionAllianceChange) else set bj_meleeDefeated[index] = true set bj_meleeVictoried[index] = false if (IsPlayerObserver(indexPlayer)) then set trig = CreateTrigger() call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE) call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft) endif endif set index = index + 1 exitwhen index == bj_MAX_PLAYERS endloop call TimerStart(CreateTimer(), 2.0, false, function Trig_Melee_Initialization_MeleeTriggerActionAllianceChange) endfunction function Trig_Melee_Initialization_Preload_Heroes takes nothing returns nothing // Preload units local unit u local integer array uid local integer i = 0 set uid[0] = 'H001' //Naga Warqueen set uid[1] = 'H002' //Naga Enchantress set uid[2] = 'H003' //Naga Imperial Warrior set uid[3] = 'H005' //Venom Warrior set uid[4] = 'U005' //Arachnian Queen set uid[5] = 'H000' //Inferno Warrior set uid[6] = 'N013' //Brutal Lord set uid[7] = 'N014' //Lord of Darkness loop exitwhen i > 7 set u = CreateUnit(Player(15), uid[i], 0, 0, 0) call RemoveUnit(u) set i = i + 1 endloop set u =null endfunction function Trig_Melee_Initialization_HeroLimit takes nothing returns nothing local integer index set index = 0 loop call SetPlayerMaxHeroesAllowed(3, Player(index)) call ReducePlayerTechMaxAllowed(Player(index), 'H001', 1) call ReducePlayerTechMaxAllowed(Player(index), 'H002', 1) call ReducePlayerTechMaxAllowed(Player(index), 'H003', 1) call ReducePlayerTechMaxAllowed(Player(index), 'H005', 1) call ReducePlayerTechMaxAllowed(Player(index), 'U005', 1) call ReducePlayerTechMaxAllowed(Player(index), 'H000', 1) call ReducePlayerTechMaxAllowed(Player(index), 'N013', 1) call ReducePlayerTechMaxAllowed(Player(index), 'N014', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Npbm', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nbrn', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nngs', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nplh', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nbst', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nalc', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Ntin', 1) call ReducePlayerTechMaxAllowed(Player(index), 'Nfir', 1) set index = index + 1 exitwhen index == 12 endloop endfunction function Trig_Melee_Initialization_Is_Playing takes integer p returns boolean // Indicates if the player slot is playing return GetPlayerSlotState(Player(p)) == PLAYER_SLOT_STATE_PLAYING endfunction function Trig_Melee_Initialization_Starting_Resources takes nothing returns nothing // Set the starting resources for all players local integer i = 0 loop exitwhen i == 12 if Trig_Melee_Initialization_Is_Playing(i) then call SetPlayerState( Player(i), PLAYER_STATE_RESOURCE_GOLD, 550 ) call SetPlayerState( Player(i), PLAYER_STATE_RESOURCE_LUMBER, 210 ) endif set i = i + 1 endloop endfunction function Trig_Melee_Initialization_Is_Naga takes integer p returns boolean // Indicates if the player race must be set as Naga local boolean b1 = GetPlayerRace(Player(p)) == RACE_HUMAN local boolean b2 = GetPlayerRace(Player(p)) == RACE_NIGHTELF local boolean b3 = Trig_Melee_Initialization_Is_Playing(p) return (b1 or b2) and b3 endfunction function Trig_Melee_Initialization_Is_Demon takes integer p returns boolean // Indicates if the player race must be set as Demon local boolean b1 = GetPlayerRace(Player(p)) == RACE_ORC local boolean b2 = GetPlayerRace(Player(p)) == RACE_UNDEAD local boolean b3 = Trig_Melee_Initialization_Is_Playing(p) return (b1 or b2) and b3 endfunction function Trig_Melee_Initialization_Set_Town_Hall takes integer p returns integer // Returns the correct town Hall ID if Trig_Melee_Initialization_Is_Naga(p) then return 'nntt' elseif Trig_Melee_Initialization_Is_Demon(p) then return 'u000' else return 0 endif endfunction function Trig_Melee_Initialization_Set_Peon takes integer p returns integer // Returns the correct worker ID if Trig_Melee_Initialization_Is_Naga(p) then return 'nmpe' elseif Trig_Melee_Initialization_Is_Demon(p) then return 'u001' else return 0 endif endfunction function Trig_Melee_Initialization_StartingUnits takes integer p returns nothing // Start the units for each active player local player Pl = Player(p) local location lp = GetStartLocationLoc(GetPlayerStartLocation(Pl)) local boolean useRandomHero = IsMapFlagSet(MAP_RANDOM_HERO) local real unitSpacing = 64.00 local unit nearestMine = MeleeFindNearestMine(lp, bj_MELEE_MINE_SEARCH_RADIUS) local location nearMineLoc local location heroLoc local real peonX local real peonY local integer TownHID = Trig_Melee_Initialization_Set_Town_Hall(p) local integer PeonID = Trig_Melee_Initialization_Set_Peon(p) call CreateUnitAtLoc(Pl, TownHID, lp, bj_UNIT_FACING) if nearestMine != null then set nearMineLoc = MeleeGetProjectedLoc(GetUnitLoc(nearestMine), lp, 320, 0) set peonX = GetLocationX(nearMineLoc) set peonY = GetLocationY(nearMineLoc) call CreateUnit(Pl, PeonID, peonX + 0.00 * unitSpacing, peonY + 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX + 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX - 1.00 * unitSpacing, peonY + 0.15 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX + 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX - 0.60 * unitSpacing, peonY - 1.00 * unitSpacing, bj_UNIT_FACING) set heroLoc = MeleeGetProjectedLoc(nearMineLoc, lp, 384, 45) else set peonX = GetLocationX(lp) set peonY = GetLocationY(lp) - 224.00 call CreateUnit(Pl, PeonID, peonX + 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX + 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX + 0.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX - 1.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) call CreateUnit(Pl, PeonID, peonX - 2.00 * unitSpacing, peonY + 0.00 * unitSpacing, bj_UNIT_FACING) set heroLoc = Location(peonX, peonY - 2.00 * unitSpacing) endif if useRandomHero then if Trig_Melee_Initialization_Is_Naga(p) then call MeleeRandomHeroLoc(Pl, 'H001', 'H002', 'H003', 'H005', heroLoc) elseif Trig_Melee_Initialization_Is_Demon(p) then call MeleeRandomHeroLoc(Pl, 'U005', 'H000', 'N013', 'N014', heroLoc) endif else call SetPlayerState(Pl, PLAYER_STATE_RESOURCE_HERO_TOKENS, bj_MELEE_STARTING_HERO_TOKENS) endif call SetCameraPositionForPlayer(Pl, peonX, peonY) call SetCameraQuickPositionForPlayer(Pl, peonX, peonY) call RemoveLocation(lp) call RemoveLocation(nearMineLoc) call RemoveLocation(heroLoc) set Pl = null set lp = null set nearestMine = null set nearMineLoc = null set heroLoc = null endfunction function Trig_Melee_Initialization_Actions takes nothing returns nothing local integer i = 0 call Trig_Melee_Initialization_Preload_Heroes() call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.00, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0 ) call DisplayTimedTextToForce( GetPlayersAll(), 3.00, "|cffffff00Power of Corruption" ) call DisplayTimedTextToForce( GetPlayersAll(), 3.00, "|CFF00FF00By MOYACK. 2006." ) call DisplayTimedTextToForce( GetPlayersAll(), 3.00, "|cffffff00Press F9 for basic help and credits" ) call TriggerSleepAction( 3.00 ) call SetFloatGameState(GAME_STATE_TIME_OF_DAY, bj_MELEE_STARTING_TOD) call MeleeGrantHeroItems() call MeleeClearExcessUnits() call Trig_Melee_Initialization_HeroLimit() call Trig_Melee_Initialization_Starting_Resources() loop if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then call Trig_Melee_Initialization_StartingUnits(i) endif set i = i + 1 exitwhen i == bj_MAX_PLAYERS endloop call TriggerExecute( gg_trg_Starting_normal_players_AI ) call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 5.00, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0 ) call Trig_Melee_Initialization_MeleeVictoryDefeat() call DestroyTrigger( GetTriggeringTrigger() ) endfunction //=========================================================================== function InitTrig_Melee_Initialization takes nothing returns nothing set gg_trg_Melee_Initialization = CreateTrigger( ) call TriggerAddAction( gg_trg_Melee_Initialization, function Trig_Melee_Initialization_Actions ) endfunction The functions with yellow background are the ones which you should modify in your map, probably I'm miss one or two. The best way to know that is by testing. I hope it helps you with your project. |
| 06-28-2007, 01:16 AM | #5 |
Thx but your code is too complex i just want to a player win with victory message if all others left or have been defeated. |
