Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --De Osler para Wowcreador.com
- local AIO = AIO or require("AIO")
- local MyHandlers = AIO.AddHandlers("NewGossip", {})
- local NpcId = 1432 --ID del NPC
- local token_id = 49426 --Objeto necesario para llevar a cabo la solicitud
- if AIO.AddAddon() then
- --[[
- #########################################################
- ##################START SERVER###########################
- #########################################################
- ]]
- -- we are on server
- local function OnGossipHello(event, player, object)
- player:GossipClearMenu() --Creamos un gossip vacio
- player:GossipSendMenu(1, object, MenuId)
- AIO.Handle(player, "NewGossip", "ShowFrame") --AL abrir el gossip manda al cliente que abra el nuevo gossip
- end
- function MyHandlers.Morph(player, ...)
- if player:GetDistance(-8848.3144, 614.4602, 95.1868) > 3.6 then --Coordenadas del NPC (x, y, z) para evitar abusar el sistema
- player:SendBroadcastMessage("You are too far away from the NPC")
- else
- if player:GetItemCount(token_id) >= 1 then
- player:RemoveItem(token_id, 1)
- player:SetDisplayId(17822)
- AIO.Handle(player, "NewGossip", "UpdateTitle") --Actualiza el titulo para reflejar la cantidad de tokens restante
- else
- player:SendBroadcastMessage("You don't have the required amount of tokens")
- end
- end
- end
- RegisterCreatureGossipEvent(NpcId, 1, OnGossipHello)
- else
- --[[
- #########################################################
- ##################START CLIENT###########################
- #########################################################
- ]]
- -- Creamos el nuevo gossip
- NewGossip = CreateFrame("Frame", "NewGossip", UIParent, "UIPanelDialogTemplate")
- local frame = NewGossip
- frame:SetSize(200, 200)
- frame:RegisterForDrag("LeftButton")
- frame:SetPoint("BOTTOM", 0, 0)
- frame:SetToplevel(true)
- frame:SetClampedToScreen(true)
- frame:SetMovable(true)
- frame:EnableMouse(true)
- frame:SetScript("OnDragStart", frame.StartMoving)
- frame:SetScript("OnHide", frame.StopMovingOrSizing)
- frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
- AIO.SavePosition(frame)
- frame:Hide()
- frame:RegisterEvent("GOSSIP_CLOSED")
- local fontTitle = frame:CreateFontString("fontTitle")
- fontTitle:SetFont("Fonts\\FRIZQT__.TTF", 13)
- fontTitle:SetSize(190, 5)
- fontTitle:SetPoint("TOP", 0, -13)
- frame:SetScript("OnEvent", function(self,event, ...) --Cuando se cierra un gossip restaura la ventana a su condicion normal
- if event == "GOSSIP_CLOSED" then
- GossipFrame:SetPoint("TOPLEFT", UIParent, "TOPLEFT",0,-104)
- GossipFrame:SetScale(1)
- frame:Hide()
- end
- end)
- frame:SetScript("OnShow", function() --Oculta el gossip original al aparecer el nuevo
- GossipFrame:ClearAllPoints()
- GossipFrame:SetPoint("LEFT",UIParent,"LEFT",-1000,-1000)
- GossipFrame:SetScale(0.01)
- fontTitle:SetText("|cffFFC125Morpher |r".."-".."|cffddff25Tokens: |r"..GetItemCount(token_id)) --Actualiza el titulo
- end)
- NewGossipClose:SetScript("OnClick", function()CloseGossip()end) --Hacemos que el gossip original se cierre con el nuevo
- function MyHandlers.ShowFrame(player)
- frame:Show()
- end
- function MyHandlers.HideFrame(player)
- frame:Hide()
- end
- function MyHandlers.UpdateTitle()
- fontTitle:SetText("|cffFFC125Morpher |r".."-".."|cffddff25Tokens: |r"..GetItemCount(token_id))
- end
- --Boton de prueba
- local ButTest = CreateFrame("Button", "ButTest", frame, "UIPanelButtonTemplate")
- ButTest:SetSize(128, 32)
- ButTest:SetPoint("CENTER", frame, "CENTER", 0, 50)
- ButTest:EnableMouse(true)
- ButTest:SetText("Velen")
- ButTest:SetScript("OnClick", function() AIO.Handle("NewGossip", "Morph") end)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement