Sverkerman
Hosted Project: BoW
- Joined
- Feb 28, 2010
- Messages
- 1,325
Hi and thank you for reading my thread
I want to edit this dialog so that the button for Save only shows up if udg_Boolean_CanSave==True and so that the button for Load only shows up if udg_Boolean_CanLoad==True.
How would I go about doing this? I've never touched Vjass before
I'd be extremely greatful if someone could help me to do this
@Illidan(Evil)X (mentioned you as you have helped me out before, not sure if you have time tho.)
Here is the code:
I want to edit this dialog so that the button for Save only shows up if udg_Boolean_CanSave==True and so that the button for Load only shows up if udg_Boolean_CanLoad==True.
How would I go about doing this? I've never touched Vjass before
I'd be extremely greatful if someone could help me to do this
@Illidan(Evil)X (mentioned you as you have helped me out before, not sure if you have time tho.)
Here is the code:
Code:
scope SampleDialogSystem initializer Init
globals
private dialog array Dialog
private button array Button
private button array PlayerButton[25][10]
private trigger T=CreateTrigger()
endglobals
private function GetTitle takes player p, integer slot returns string
local string s = SaveFile(slot).getTitle()
if (s == null or s == "") then
return "Empty"
endif
if (StringLength(s) > 32) then
set s = SubString(s, 0, 26) + "...)"
endif
return s
endfunction
private function OnButtonClick takes nothing returns boolean
local button b = GetClickedButton()
local player p = GetTriggerPlayer()
local string s = ""
local integer pid = GetPlayerId(p)
local boolean safe = (File.ReadEnabled and GetLocalPlayer() == p)
local User u = User(pid)
local integer curSlot = SaveHelper.GetSaveSlot(u)
if (b == Button[(u.id*12)+0]) then // save char
if (curSlot == 0) then
call DialogClear(Dialog[(u.id*12)+2])
call DialogSetMessage(Dialog[(u.id*12)+2], "|cffff8000Save Character|r")
if (not safe) then
call ClearTextMessages()
call DisplayTimedTextToPlayer(p, 0, 0, 60000, udg_LocalFiles_WarningMessage)
endif
set PlayerButton[pid][10] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[1] |cffffffff" + GetTitle(p, 1) + "|r", 0)
set PlayerButton[pid][11] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[2] |cffffffff" + GetTitle(p, 2), 0)
set PlayerButton[pid][12] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[3] |cffffffff" + GetTitle(p, 3), 0)
set PlayerButton[pid][13] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[4] |cffffffff" + GetTitle(p, 4), 0)
set PlayerButton[pid][14] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[5] |cffffffff" + GetTitle(p, 5), 0)
call DialogAddButton(Dialog[(u.id*12)+2], "|cffff8000Close", 0)
call DialogDisplay(GetLocalPlayer(), Dialog[(u.id*12)+2], safe)
else
call SaveCharToSlot(udg_SavePlayerHero[pid], curSlot, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
call DisplayTextToPlayer(u.toPlayer(), 0, 0, "|cffffcc00[" + I2S(curSlot) + "]|r " + SaveHelper.GetUnitTitle(SaveHelper.GetUserHero(u)))
endif
elseif(b == Button[(u.id*12)+1]) then // load char
if (not safe) then
call ClearTextMessages()
call ClearTextMessages()
call DisplayTimedTextToPlayer(p, 0, 0, 60000, udg_LocalFiles_WarningMessage)
endif
call DialogClear(Dialog[(u.id*12)+1])
call DialogSetMessage(Dialog[(u.id*12)+1], "|cffff8000Load Character|r")
set PlayerButton[pid][20] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00Autosave - |cffffffff" + GetTitle(p, 10), 0)
set PlayerButton[pid][0] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[1] |cffffffff" + GetTitle(p, 1), 0)
set PlayerButton[pid][1] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[2] |cffffffff" + GetTitle(p, 2), 0)
set PlayerButton[pid][2] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[3] |cffffffff" + GetTitle(p, 3), 0)
set PlayerButton[pid][3] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[4] |cffffffff" + GetTitle(p, 4), 0)
set PlayerButton[pid][4] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[5] |cffffffff" + GetTitle(p, 5), 0)
call DialogAddButton(Dialog[(u.id*12)+1], "|cffff8000Close", 0)
call DialogDisplay(p, Dialog[(u.id*12)+1], safe)
elseif(b == Button[(u.id*12)+2]) then // load char
if (not safe) then
call ClearTextMessages()
call DisplayTimedTextToPlayer(p,0,0,60000, udg_LocalFiles_WarningMessage)
endif
call DialogClear(Dialog[(u.id*12)+3])
call DialogSetMessage(Dialog[(u.id*12)+3], "|cffff8000Delete Character|r")
set PlayerButton[pid][5] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 1), 0)
set PlayerButton[pid][6] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 2), 0)
set PlayerButton[pid][7] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 3), 0)
set PlayerButton[pid][8] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 4), 0)
set PlayerButton[pid][9] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 5), 0)
call DialogAddButton(Dialog[(u.id*12)+3], "|cffff8000Close", 0)
call DialogDisplay(p, Dialog[(u.id*12)+3], safe)
elseif(b == PlayerButton[pid][0]) then
call LoadSaveSlot(p, 1)
elseif(b == PlayerButton[pid][1]) then
call LoadSaveSlot(p, 2)
elseif(b == PlayerButton[pid][2]) then
call LoadSaveSlot(p, 3)
elseif(b == PlayerButton[pid][3]) then
call LoadSaveSlot(p, 4)
elseif(b == PlayerButton[pid][4]) then
call LoadSaveSlot(p, 5)
elseif(b == PlayerButton[pid][20]) then
call LoadSaveSlot(p, 10)
elseif(b == PlayerButton[pid][5]) then
call DeleteCharSlot(p, 1)
elseif(b == PlayerButton[pid][6]) then
call DeleteCharSlot(p, 2)
elseif(b == PlayerButton[pid][7]) then
call DeleteCharSlot(p, 3)
elseif(b == PlayerButton[pid][8]) then
call DeleteCharSlot(p, 4)
elseif(b == PlayerButton[pid][9]) then
call DeleteCharSlot(p, 5)
elseif(b == PlayerButton[pid][10]) then
call SaveCharToSlot(udg_SavePlayerHero[pid], 1, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
elseif(b == PlayerButton[pid][11]) then
call SaveCharToSlot(udg_SavePlayerHero[pid], 2, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
elseif(b == PlayerButton[pid][12]) then
call SaveCharToSlot(udg_SavePlayerHero[pid], 3, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
elseif(b == PlayerButton[pid][13]) then
call SaveCharToSlot(udg_SavePlayerHero[pid], 4, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
elseif(b == PlayerButton[pid][14]) then
call SaveCharToSlot(udg_SavePlayerHero[pid], 5, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
endif
return false
endfunction
private function ShowMenu takes nothing returns boolean
local player p = GetTriggerPlayer()
local integer i = GetPlayerId(p)
if (GetLocalPlayer() == p) then
call DialogSetMessage(Dialog[(i*12)+0], "|cffff8000Main Menu|r")
call DialogDisplay(p, Dialog[(i*12)+0], true)
endif
return false
endfunction
private function InitDialog takes nothing returns nothing
local integer i = 0
local trigger t = CreateTrigger()
local User u
loop
exitwhen i == User.AmountPlaying
set u = User.fromPlaying(i)
set Dialog[(u.id*12)+0] = DialogCreate()
set Button[(u.id*12)+0] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Save Character", 0)
set Button[(u.id*12)+1] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Load Character", 0)
set Button[(u.id*12)+2] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Delete Character", 0)
call DialogAddButton(Dialog[(u.id*12)+0], "|cffff8000Close", 0)
set Dialog[(u.id*12)+1] = DialogCreate()
set Dialog[(u.id*12)+2] = DialogCreate()
set Dialog[(u.id*12)+3] = DialogCreate()
call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+0])
call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+1])
call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+2])
call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+3])
set i = i + 1
endloop
call TriggerAddCondition(t, Filter(function OnButtonClick))
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
//set CurrentCharSaveSlot[i] = -1
call TriggerRegisterPlayerEvent(t, Player(i), EVENT_PLAYER_END_CINEMATIC)
set i = i + 1
exitwhen i == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition(t, Filter(function ShowMenu))
call TimerStart(CreateTimer(), 0, false, function InitDialog)
endfunction
endscope