MTASA TÜRK
Türkiye'nin En Güncel MTA Platformu


[YARDIM] Killmessage

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Speaw

  • Yeni Üye
  • *
    • İleti: 69
: 29 Temmuz 2017, 22:59:23
Arkadaşlar bende killmessage var ve bunda yazı fontu ve renk kodlarını kapatmak istiyorum
Mesela renk kodları belli oluyor belli olmayacak ve yazı fontu olacak güzel bir şey nasıl eklerim onları



Client.lua
Kod: lua
addEvent ("onClientPlayerKillMessage",true)
function onClientPlayerKillMessage ( killer,weapon,wr,wg,wb,kr,kg,kb,width,resource )
if wasEventCancelled() then return end
outputKillMessage ( source, wr,wg,wb,killer,kr,kg,kb,weapon,width,resource )
end
addEventHandler ("onClientPlayerKillMessage",getRootElement(),onClientPlayerKillMessage)

function outputKillMessage ( source, wr,wg,wb,killer,kr,kg,kb,weapon,width,resource )
if not iconWidths[weapon] then
if type(weapon) ~= "string" then
weapon = 999
end
end
local killerName
local wastedName
if not tonumber(wr) then wr = 255 end
if not tonumber(wg) then wg = 255 end
if not tonumber(wb) then wb = 255 end
if not tonumber(kr) then kr = 255 end
if not tonumber(kg) then kg = 255 end
if not tonumber(kb) then kb = 255 end
if ( source ) then
if isElement ( source ) then
if getElementType ( source ) == "player" then
wastedName = getPlayerName ( source )
else
outputDebugString ( "outputKillMessage - Invalid 'wasted' player specified",0,0,0,100)
return false end
elseif type(source) == "string" then
wastedName = source
end
else
outputDebugString ( "outputKillMessage - Invalid 'wasted' player specified",0,0,0,100)
return false end
if ( killer ) then
if isElement ( killer ) then
if getElementType ( killer ) == "player" then
killerName = getPlayerName ( killer )
else
outputDebugString ( "outputKillMessage - Invalid 'killer' player specified",0,0,0,100)
return false end
elseif type(killer) == "string" then
killerName = killer
else
killerName = ""
end
else killerName = "" end
--create the new text
if not killerName then
killerName = ""
end
return outputMessage ( {killerName, {"padding",width=3}, {"icon",id=weapon},
{"padding",width=3},{"color",r=wr,g=wg,b=wb}, wastedName},
kr,kg,kb )
end

Server.lua
Kod: lua
local config = {
["lines"] = 5,
["startY"] = 0.35,
["textHeight"] = 16,
["iconHeight"] = 20,
["iconSpacing"] = 4,
["defaultWeapon"] = 255,
["fadeTime"] = 5000,
["startFade"] = 15000,
["align"] = "right",
["startX"] = -10
}
local default = {
["lines"] = 5,
["startY"] = 0.25,
["textHeight"] = 16,
["iconHeight"] = 20,
["iconSpacing"] = 4,
["defaultWeapon"] = 255,
["fadeTime"] = 5000,
["startFade"] = 15000,
["align"] = "right",
["startX"] = -10
}

local vehicleIDs = { [50]=true,[49]=true,[31]=true,[38]=true,[52]=true }
function KillMessages_onPlayerWasted ( totalammo, killer, killerweapon, bodypart )
---These are special checks for certain kill types
local usedVehicle
if killerweapon == 19 and isElement(killer) then --rockets
killerweapon = killer and getElementType ( killer ) == "player" and getPedWeapon(killer)
if not killerweapon then
killerweapon = 51
end
elseif vehicleIDs[killerweapon] then --heliblades/rammed
if ( isElement(killer) and getElementType ( killer ) == "vehicle" ) then
usedVehicle = getElementModel ( killer )
killer = getVehicleOccupant ( killer, 0 )
end
elseif ( killerweapon == 59 and isElement(killer) ) then
if ( getElementType ( killer ) == "player" ) then
local vehicle = getPedOccupiedVehicle(killer)
if ( vehicle ) then
usedVehicle = getElementModel ( vehicle )
end
end
end
--finish this
-- Got a killer? Print the normal "* X died" if not
if ( killer and isElement(killer) and getElementType ( killer ) == "player" ) then
local kr,kg,kb = getPlayerNametagColor ( killer )
if getPlayerTeam ( killer ) then
kr,kg,kb = getTeamColor ( getPlayerTeam ( killer ) )
end
-- Suicide?
if (source == killer) then
if not killerweapon then killerweapon = 255 end
local triggered = triggerEvent ( "onPlayerKillMessage", source,false,killerweapon,bodypart )
--outputDebugString ( "Cancelled: "..tostring(triggered) )
if ( triggered ) then
eventTriggered ( source,false,killerweapon,bodypart,true,usedVehicle)
return
end
end
local triggered = triggerEvent ( "onPlayerKillMessage", source,killer,killerweapon,bodypart )
--outputDebugString ( "Cancelled: "..tostring(triggered) )
if ( triggered ) then
eventTriggered ( source,killer,killerweapon,bodypart,false,usedVehicle)
end
else
local triggered = triggerEvent ( "onPlayerKillMessage", source,false,killerweapon,bodypart )
--outputDebugString ( "Cancelled: "..tostring(triggered) )
if ( triggered ) then
eventTriggered ( source,false,killerweapon,bodypart,false,usedVehicle)
end
end
end
addEventHandler ( "onPlayerWasted", getRootElement(), KillMessages_onPlayerWasted )

addEvent ( "onPlayerKillMessage" )
function eventTriggered ( source,killer,weapon,bodypart,suicide,usedVehicle )
local wr,wg,wb = getPlayerNametagColor ( source )
if getPlayerTeam ( source ) then
wr,wg,wb = getTeamColor ( getPlayerTeam ( source ) )
end
local kr,kg,kb = false,false,false
if ( killer ) then
kr,kg,kb = getPlayerNametagColor ( killer )
if getPlayerTeam ( killer ) then
kr,kg,kb = getTeamColor ( getPlayerTeam ( killer ) )
end
end
if ( usedVehicle ) then
weapon = usedVehicle
end
outputKillMessage ( source, wr,wg,wb,killer,kr,kg,kb,weapon )
--
local extra = ""
if ( usedVehicle ) then
extra = " (Vehicle)"
end
if ( killer ) then
if suicide then
local weaponName = getWeaponNameFromID ( weapon )
if weaponName then
outputConsoleKillMessage ( "* "..getPlayerName(source).." killed himself. ("..weaponName..")" )
else
outputConsoleKillMessage ( "* "..getPlayerName(source).." killed himself."..extra )
end
else
local weaponName = getWeaponNameFromID ( weapon )
if weaponName then
outputConsoleKillMessage ( "* "..getPlayerName(killer).." killed "..getPlayerName(source)..". ("..weaponName..")" )
else
outputConsoleKillMessage ( "* "..getPlayerName(killer).." killed "..getPlayerName(source).."."..extra )
end
end
else
outputConsoleKillMessage ( "* "..getPlayerName(source).." died."..extra )
end
--
end

function outputConsoleKillMessage ( text )
outputConsole ( text )
end

function outputKillMessage ( killed, wr,wg,wb,killer,kr,kg,kb,weapon,width,resource )
if ( resource ) then resource = getResourceName(resource) end
if not isElement(killed) then
outputDebugString ( "outputKillMessage - Invalid 'wasted' player specified",0,0,0,100)
return false
end
if not getElementType(killed) == "player" then
outputDebugString ( "outputKillMessage - Invalid 'wasted' player specified",0,0,0,100)
return false
end
return triggerClientEvent(getRootElement(),"onClientPlayerKillMessage",killed,killer,weapon,wr,wg,wb,kr,kg,kb,width,resource )
end

function outputMessage ( message, visibleTo, r, g, b, font )
if type(message) ~= "string" and type(message) ~= "table" then
outputDebugString ( "outputMessage - Bad 'message' argument", 0, 112, 112, 112 )
return false
end
if not isElement(visibleTo) then
outputDebugString ( "outputMessage - Bad argument", 0, 112, 112, 112 )
return false
end
--Turn any resources into resource names
if type(message) == "table" then
for i,part in ipairs(message) do
if type(part) == "table" and part[1] == "image" then
if part.resource then
message[i].resourceName = getResourceName(part.resource)
else
part.resourceName = getResourceName(sourceResource)
end
end
end
end
return triggerClientEvent ( visibleTo, "doOutputMessage", visibleTo, message, r, g, b, font )
end

function setKillMessageStyle ( startX,startY,align,lines,fadeStart,fadeAnimTime )
if ( not startX ) then startX = default.startX end
if ( not startY ) then startY = default.startY end
if ( not align ) then startY = align.startY end
if ( not lines ) then lines = default.lines end
if ( not fadeStart ) then fadeStart = default.startFade end
if ( not fadeAnimTime ) then fadeAnimTime = default.fadeTime end
config.startX = startX
config.startY = startY
config.align = align
config.lines = lines
config.startFade = fadeStart
config.fadeTime = fadeAnimTime
for k,v in ipairs(getElementsByType"player") do
triggerClientEvent(v,"doSetKillMessageStyle",v,config.startX,config.startY,config.alignX,config.lines,config.startFade,config.fadeTime)
end
return true
end

addEvent ("onClientKillmessagesLoaded",true)
addEventHandler ( "onClientKillmessagesLoaded", getRootElement(),
function()
triggerClientEvent(source,"doSetKillMessageStyle",source,config.startX,config.startY,config.alignX,config.lines,config.startFade,config.fadeTime)
end )

Gui.lua
Kod: lua
local customKills = {}
local config = {
["lines"] = 5,
["startY"] = 0.35,
["textHeight"] = 16,
["iconPosOffY"] = -10,
["iconHeight"] = 20,
["iconSpacing"] = 4,
["defaultWeapon"] = 255,
["fadeTime"] = 5000,
["startFade"] = 15000,
["align"] = "right",
["startX"] = -10
}
local default = {
["lines"] = 5,
["startY"] = 0.25,
["textHeight"] = 16,
["iconPosOffY"] = -10,
["iconHeight"] = 20,
["iconSpacing"] = 4,
["defaultWeapon"] = 255,
["fadeTime"] = 5000,
["startFade"] = 15000,
["align"] = "right",
["startX"] = -10
}
local endTime
local screenX,screenY = guiGetScreenSize ()
local contentMessages = {}
local fadingLines = {}
---
local iconOrder = {}


function setupTextOnStart ( resource )
if resource ~= getThisResource() then return end
triggerServerEvent ( "onClientKillmessagesLoaded", getLocalPlayer() )
end
addEventHandler ( "onClientResourceStart", getRootElement(), setupTextOnStart )

addEvent ("doSetKillMessageStyle",true)
function setKillMessageStyle ( startX,startY,align,lines,fadeStart,fadeAnimTime )
if ( not startX ) then startX = default.startX end
if ( not startY ) then startY = default.startY end
if ( not align ) then align = default.align end
if ( not lines ) then lines = default.lines end
if ( not fadeStart ) then fadeStart = default.startFade end
if ( not fadeAnimTime ) then fadeAnimTime = default.fadeTime end
config.startX = startX
config.startY = startY
config.align = align
config.lines = lines
config.startFade = fadeStart
config.fadeTime = fadeAnimTime
if #contentMessages ~= 0 then
for i=1,config.lines do
if contentMessages[i] then
destroyLine ( i )
end
end
end
fadingLines = {}
killMessages = {}
if ( config.startY < 0 ) then
config.startY = screenY - math.abs(config.startY*screenY) - (config.iconHeight*config.lines)
config.startY = config.startY/screenY
end
createKillMessageGUI()
return true
end
addEventHandler ( "doSetKillMessageStyle",getRootElement(),setKillMessageStyle)

function createKillMessageGUI()
local gap = config.iconHeight - config.textHeight
gap = gap/2
for i=1,config.lines do
local y = config.startY*screenY + (config.iconHeight*(i-1))
y = y + gap
contentMessages[i] = { dxText:create("",0,y) }
end
endTime = config.fadeTime + config.startFade
end

function shiftUpGUI()
local i = 1
for i=config.lines,2,-1 do
local y = config.startY*screenY + (config.iconHeight*(i-1)) + (config.iconHeight - config.textHeight)/2
local targetY = config.startY*screenY + (config.iconHeight*(i-2)) + (config.iconHeight - config.textHeight)/2
if contentMessages[i] then
for k,part in ipairs(contentMessages[i]) do
local x,realY = getWidgetPosition(part)

local diffY = realY - y
setWidgetPosition(part,x,targetY + diffY)
end
end
end
for i=1,config.lines-1 do
---shift up the alpha too
local tick = fadingLines[i+1]
fadingLines[i] = tick
fadingLines[i+1] = nil
end
end

addEvent ( "doOutputMessage", true )
function outputMessage ( message, r, g, b, font )
if type(message) ~= "string" and type(message) ~= "table" then
outputDebugString ( "outputMessage - Bad 'message' argument", 0, 112, 112, 112 )
return false
end
if type(font) ~= "string" then
font = "default"
end
r = tonumber(r) or 255
g = tonumber(g) or 255
b = tonumber(b) or 255
---shift everything up
shiftUpGUI()
--Delete the first line
destroyLine (1)
table.remove ( contentMessages, 1 )
if type(message) == "string" then
message = {message}
end
local y = config.startY*screenY + (config.iconHeight*(config.lines-1)) + (config.iconHeight - config.textHeight)/2
local startX = config.startX
if startX < 1 and startX > -1 then --auto calculate whether its relative or absolute
startX = screenX/startX --make it relative
end
if startX < 0 then
startX = screenX + startX
end

for i,part in ipairs(message) do
if type(part) == "table" and part[1] == "image" then
if not part.resource and not part.resourceName then
part.resource = sourceResource
end
end
end

drawLine ( message, startX, y, config.align, config.lines, r, g, b, font, 1 )
fadeLine ( config.lines )
end
addEventHandler ( "doOutputMessage", getRootElement(), outputMessage )

function drawLine ( message, x,y, align, line, r, g, b, font, scale )
--First draw it and work out the width
local width = 0
contentMessages[line] = {}
for i,part in ipairs(message) do
if type(part) == "string" then
local text = dxText:create ( part, width, y, false )
text:font ( font )
text:scale ( scale )
text:type("shadow",1)
text:align"left"
text:color ( r,g,b )
table.insert ( contentMessages[line], text )
width = width + text:extent()
elseif part[1] == "icon" then
local iconWidth = part.width or iconWidths[part.id or -1] or iconWidths[255]
local iconHeight = part.height or config.iconHeight
local image = dxImage:create ( icons[part.id or 0] or icons[255], width, y + (part.posOffY or config.iconPosOffY), iconWidth, iconHeight, false )
image:color ( part.r or 255, part.g or 255, part.b or 255 )
image:rotation ( part.rot or 0, part.rotOffX or 0, part.rotOffY or 0 )
width = width + iconWidth
table.insert ( contentMessages[line], image )
elseif part[1] == "image" then
if part.width and part.path then
if part.resourceName then
part.resource = getResourceFromName(tostring(part.resourceName)) or part.resource
end
local image = dxImage:create ( ":"..getResourceName(part.resource).."/"..part.path, width, y + (part.posOffY or config.iconPosOffY), part.width, part.height or config.iconHeight, false )
image:color ( part.r or 255, part.g or 255, part.b or 255 )
image:rotation ( part.rot or 0, part.rotOffX or 0, part.rotOffY or 0 )
width = width + part.width
table.insert ( contentMessages[line], image )
end
elseif part[1] == "color" or part[1] == "colour" then
r = part.r or r
g = part.g or g
b = part.b or b
elseif part[1] == "padding" then
width = width + part.width or 0
end
contentMessages[line].scale = scale
end
--Now reposition everything properly
if align == "center" or align == "centre" then
x = x - width/2
elseif align == "right" then
x = x - width
end
for i,widget in ipairs(contentMessages[line]) do
local wx,wy = getWidgetPosition ( widget )
setWidgetPosition ( widget, x + wx, wy )
end
return true
end

function fadeLine ( line )
setLineAlpha ( line, 1 )
fadingLines[line] = getTickCount()
end
-----
addEventHandler ( "onClientRender",getRootElement(),
function()
for line,originalTick in pairs(fadingLines) do
local tickDifference = getTickCount() - originalTick
if tickDifference > endTime then
destroyLine ( line )
setLineAlpha ( line, 1 )
fadingLines[line] = nil
elseif tickDifference >  config.startFade then
local fadeTimeDifference = tickDifference - config.startFade
--calculate the alpha
local newAlpha = 1 - fadeTimeDifference/config.fadeTime
--Set all the alphas
setLineAlpha ( line, newAlpha )
end
end
end )

function setLineAlpha ( line, alpha )
for i,part in ipairs(contentMessages[line]) do
setWidgetAlpha ( part, alpha )
end
end

function destroyLine ( line )
for k,part in ipairs(contentMessages[line]) do
destroyWidget(part)
end
contentMessages[line] = {}
end

function destroyWidget ( widget )
if isElement(widget) then
destroyElement ( widget )
elseif type(widget) == "table" and widget.destroy then
widget:destroy()
end
end

function getWidgetPosition ( widget )
if isElement(widget) then
return guiGetPosition ( widget, false )
elseif type(widget) == "table" and widget.position then
return widget:position()
end
end

function setWidgetPosition ( widget, x, y )
if isElement(widget) then
return guiSetPosition ( widget, x, y, false )
elseif type(widget) == "table" and widget.position then
return widget:position(x,y,false)
end
end

function setWidgetAlpha ( widget, alpha )
if isElement(widget) then
guiSetAlpha ( widget, alpha )
elseif type(widget) == "table" and widget.color then
local r,g,b = widget:color()
widget:color(r,g,b,alpha*255)
end
end
« Son Düzenleme: 31 Temmuz 2017, 23:38:21 Gönderen: Narkoz »
 


MTASA TÜRK

[YARDIM] Killmessage
« : 29 Temmuz 2017, 22:59:23 »

Çevrimdışı Mahlukat

  • Scripter
  • *
    • İleti: 654
Yanıtla #1 : 30 Temmuz 2017, 06:43:13
Buyur:Linki görebilmek için Kayıt olun yada Giriş yapın.
Linki görebilmek için Kayıt olun yada Giriş yapın.