| 01-14-2005, 04:47 AM | #1 |
Code:
function EndVotingActions takes nothing returns nothing
local integer i=0
local player pi=null
local force AllPlayers=GetPlayersAll()
set udg_IsItVotingTime=false
set udg_TotalVotes=0
set udg_VotesForPlayerToBeKicked=0
call DestroyTimerDialog(udg_VotingTimeD)
loop
exitwhen i>11
set pi=Player(i)
call DialogDisplay(pi,udg_YesAndNo[i],false)
set pi=null
set i=i+1
endloop
if I2R(udg_VotesForPlayerToBeKicked)>(udg_PlayersInGame-1)*.5 then
call CustomDefeatBJ(udg_PlayerToBeKicked,"You've been voted out of the game!")
call DisplayTimedTextToForce(AllPlayers,30,udg_PlayerName[GetPlayerId(udg_PlayerToBeKicked)]+" |c00ff0000has|r been voted out of the game!")
else
call DisplayTimedTextToForce(AllPlayers,30,udg_PlayerName[GetPlayerId(udg_PlayerToBeKicked)]+" has |c00ff0000not|r been voted out of the game!")
endif
call PauseAllUnitsBJ(false)
call ResumeTimer(udg_TimeLeftInGame)
set AllPlayers=null
endfunction
function DetectVoteActions takes nothing returns nothing
local integer i=0
local button b=GetClickedButton()
set udg_TotalVotes=udg_TotalVotes+1
if udg_IsItVotingTime then
loop
exitwhen i>11
if b==udg_Yes[i] then
set udg_VotesForPlayerToBeKicked=udg_VotesForPlayerToBeKicked+1
endif
set i=i+1
endloop
if udg_TotalVotes==udg_PlayersInGame then
call EndVotingActions()
endif
endif
set b=null
endfunction
function BalletsActions takes nothing returns nothing
local integer i=0
local player pi=null
local button b=GetClickedButton()
if udg_IsItVotingTime then
call TimerStart(udg_TimeLeftToVote,15,false,null)
set udg_VotingTimeD=CreateTimerDialog(udg_TimeLeftToVote)
call TimerDialogSetTitle(udg_VotingTimeD,"Time left to vote...")
call TimerDialogDisplay(udg_VotingTimeD,true)
loop
exitwhen i>11
if b==udg_WhoToKickDialogButton[i] then
set pi=Player(i)
set udg_PlayerToBeKicked=pi
set pi=null
endif
set i=i+1
endloop
set i=0
loop
exitwhen i>11
set pi=Player(i)
call DialogClear(udg_YesAndNo[i])
call DialogSetMessage(udg_YesAndNo[i],"Kick "+udg_PlayerName[GetPlayerId(udg_PlayerToBeKicked)]+" out of the game?")
set udg_Yes[i]=DialogAddButton(udg_YesAndNo[i],"Yes",0)
call DialogAddButton(udg_YesAndNo[i],"No",0)
if pi!=udg_PlayerToBeKicked then
call DialogDisplay(pi,udg_YesAndNo[i],true)
endif
set pi=null
set i=i+1
endloop
endif
set b=null
endfunction
function IntVoteDefeat takes nothing returns nothing
local integer i=0
local player TP=GetTriggerPlayer()
local trigger Ballets=CreateTrigger()
local triggeraction BalletsA=TriggerAddAction(Ballets,function BalletsActions)
local event BalletsE=TriggerRegisterDialogEvent(Ballets,udg_WhoToKickDialog)
local trigger DetectVote=CreateTrigger()
local triggeraction DetectVoteA=TriggerAddAction(DetectVote,function DetectVoteActions)
local event array DetectVoteE
local trigger EndVoting=CreateTrigger()
local triggeraction EndVotingA=TriggerAddAction(EndVoting,function EndVotingActions)
local event EndVotingE=TriggerRegisterTimerExpireEvent(EndVoting,udg_TimeLeftToVote)
set udg_IsItVotingTime=true
call PauseAllUnitsBJ(true)
call PauseTimer(udg_TimeLeftInGame)
call DialogClear(udg_WhoToKickDialog)
call DialogSetMessage(udg_WhoToKickDialog,"Who do you want to kick?")
loop
exitwhen i>11
if PlayerIsPlaying(i) then
set udg_WhoToKickDialogButton[i]=DialogAddButton(udg_WhoToKickDialog,udg_PlayerName[i],0)
endif
set i=i+1
endloop
call DialogDisplay(TP,udg_WhoToKickDialog,true)
/////////////DetectVote
set i=0
loop
exitwhen i>11
set DetectVoteE[i]=TriggerRegisterDialogEvent(DetectVote,udg_YesAndNo[i])
endloop
///////////////////////
set Ballets=null
set BalletsE=null
set BalletsA=null
set DetectVote=null
set i=0
loop
exitwhen i>11
set DetectVoteE[i]=null
set i=i+1
endloop
set DetectVoteA=null
set EndVoting=null
set EndVotingE=null
set EndVotingA=null
endfunction
//===========================================================================
function InitTrig_Vote_defeat takes nothing returns nothing
local integer i=0
local event array e
local triggeraction a=null
set gg_trg_Vote_defeat=CreateTrigger()
set a=TriggerAddAction(gg_trg_Vote_defeat,function IntVoteDefeat)
loop
exitwhen i>11
set e[i]=TriggerRegisterPlayerChatEvent(gg_trg_Vote_defeat,Player(i),"-kick",true)
set e[i]=null
set i=i+1
endloop
set a=null
endfunctionThe above code is a working dialog vote-kick system, but it lags whever one of the triggers fires. I'm pretty sure I cleaned all leaks. |
| 01-14-2005, 05:23 AM | #2 |
You forgot increasing the i in the DetectVote loop. |
| 01-14-2005, 02:18 PM | #3 |
Thanks that fixed it^^ I'd give you rep but it says "No Post specified" when I click the link to give rep. |
