Client :
MoteInfo = {}
SentMessage = {
Button = {}
}
MoreInfo = {
Button = {}
}
Chat = {}
Message = {
Edit = {}
}
X = {
Button = {}
}
Search = {
Edit = {}
}
Chatting = {}
PlayerStatus = {
Button = {}
}
Messages = {
Memo = {}
}
GUIEditor = {
gridlist = {},
label = {}
}
setElementData(localPlayer, "Chatting", nil)
setElementData(localPlayer, "Status", "Online")
local screenW, screenH = guiGetScreenSize()
Chat.pWindow = guiCreateWindow(screenW - 297 - 10, (screenH - 420) / 2, 297, 420, "# - | Chat system | - #", false)
guiWindowSetSizable(Chat.pWindow, false)
guiSetAlpha(Chat.pWindow, 1.00)
guiSetProperty(Chat.pWindow, "CaptionColour", "FF00F5FE")
guiSetVisible(Chat.pWindow, false)
GUIEditor.gridlist[1] = guiCreateGridList(10, 57, 229, 319, false, Chat.pWindow)
guiGridListSetSelectionMode(GUIEditor.gridlist[1], 0)
guiSetFont(GUIEditor.gridlist[1], "default-bold-small")
guiGridListAddColumn(GUIEditor.gridlist[1], "# Player", 0.6)
guiGridListAddColumn(GUIEditor.gridlist[1], "# Status", 0.3)
Search.Edit.pWindow = guiCreateEdit(10, 27, 229, 24, "Search", false, Chat.pWindow)
GUIEditor.label[1] = guiCreateLabel(10, 383, 68, 27, "My status : ", false, Chat.pWindow)
guiSetFont(GUIEditor.label[1], "default-bold-small")
guiLabelSetColor(GUIEditor.label[1], 0, 239, 253)
guiLabelSetVerticalAlign(GUIEditor.label[1], "center")
PlayerStatus.Button.pWindow = guiCreateButton(88, 383, 151, 27, "# Offline ~", false, Chat.pWindow)
guiSetFont(PlayerStatus.Button.pWindow, "default-bold-small")
guiSetProperty(PlayerStatus.Button.pWindow, "NormalTextColour", "FFFC0000")
X.Button.pWindow = guiCreateButton(257, 383, 30, 27, "X", false, Chat.pWindow)
guiSetFont(X.Button.pWindow, "default-bold-small")
guiSetProperty(X.Button.pWindow, "NormalTextColour", "FFFC0000")
MoreInfo.Button.pWindow = guiCreateButton(257, 27, 30, 27, "؟", false, Chat.pWindow)
guiSetFont(MoreInfo.Button.pWindow, "default-bold-small")
guiSetProperty(MoreInfo.Button.pWindow, "NormalTextColour", "FF2FFB00")
GUIEditor.label[2] = guiCreateLabel(277, 57, 15, 319, "|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|\n|", false, Chat.pWindow)
guiSetFont(GUIEditor.label[2], "default-bold-small")
guiLabelSetColor(GUIEditor.label[2], 245, 0, 0)
guiLabelSetHorizontalAlign(GUIEditor.label[2], "center", false)
guiLabelSetVerticalAlign(GUIEditor.label[2], "center")
MoteInfo.MoreInfoWindow = guiCreateWindow(0.54, 0.07, 0.23, 0.17, "# - | More Info about | - #", true)
guiWindowSetSizable(MoteInfo.MoreInfoWindow, false)
guiSetAlpha(MoteInfo.MoreInfoWindow, 1.00)
guiSetProperty(MoteInfo.MoreInfoWindow, "CaptionColour", "FF13FE1E")
guiSetVisible(MoteInfo.MoreInfoWindow, false)
GUIEditor.label[3] = guiCreateLabel(10, 21, 98, 23, "- Player status : ", false, MoteInfo.MoreInfoWindow)
guiSetFont(GUIEditor.label[3], "default-bold-small")
guiLabelSetColor(GUIEditor.label[3], 39, 120, 255)
guiLabelSetVerticalAlign(GUIEditor.label[3], "center")
GUIEditor.label[4] = guiCreateLabel(10, 44, 243, 46, "* If you set your status to \"Offline\", \n you can't send any message,\n and everyone can't send you a messages", false, MoteInfo.MoreInfoWindow)
guiSetFont(GUIEditor.label[4], "default-bold-small")
X.Button.MoreInfoWindow = guiCreateButton(269, 100, 33, 21, "X", false, MoteInfo.MoreInfoWindow)
guiSetFont(X.Button.MoreInfoWindow, "default-bold-small")
guiSetProperty(X.Button.MoreInfoWindow, "NormalTextColour", "FFF50000")
Chatting.ChattingWindow = guiCreateWindow((screenW - 566) / 2, (screenH - 370) / 2, 566, 370, "", false)
guiWindowSetSizable(Chatting.ChattingWindow, false)
guiSetAlpha(Chatting.ChattingWindow, 1.00)
guiSetProperty(Chatting.ChattingWindow, "CaptionColour", "FF00E6F5")
guiSetVisible(Chatting.ChattingWindow, false)
Messages.Memo.ChattingWindow = guiCreateMemo(9, 24, 547, 304, "", false, Chatting.ChattingWindow)
guiMemoSetReadOnly(Messages.Memo.ChattingWindow, true)
Message.Edit.ChattingWindow = guiCreateEdit(10, 332, 399, 28, "", false, Chatting.ChattingWindow)
SentMessage.Button.ChattingWindow = guiCreateButton(413, 332, 93, 28, "# Send ~", false, Chatting.ChattingWindow)
guiSetFont(SentMessage.Button.ChattingWindow, "default-bold-small")
guiSetProperty(SentMessage.Button.ChattingWindow, "NormalTextColour", "FF0BF500")
X.Button.ChattingWindow = guiCreateButton(522, 332, 34, 28, "X", false, Chatting.ChattingWindow)
guiSetFont(X.Button.ChattingWindow, "default-bold-small")
guiSetProperty(X.Button.ChattingWindow, "NormalTextColour", "FFF50000")
function refreshList_()
guiGridListClear(GUIEditor.gridlist[1])
for _, player_ in ipairs(getElementsByType('player')) do
local itemPlayer = guiGridListAddRow(GUIEditor.gridlist[1])
local itemText = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 1, getPlayerName(player_), false, false)
local itemStatus = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 2, getElementData(player_, "Status"), false, false)
if (getElementData(player_, "Status") == "Online") then
guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 0, 255, 0)
else guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 255, 0, 0)
end
end
end
addEvent( 'RefreshList', true )
addEventHandler( 'RefreshList', root,
function()
setTimer(function()
refreshList_()
end, 50, 1)
guiGridListClear(GUIEditor.gridlist[1])
for _, player_ in ipairs(getElementsByType('player')) do
local itemPlayer = guiGridListAddRow(GUIEditor.gridlist[1])
local itemText = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 1, getPlayerName(player_), false, false)
local itemStatus = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 2, getElementData(player_, "Status"), false, false)
if (getElementData(player_, "Status") == "Online") then
guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 0, 255, 0)
else guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 255, 0, 0)
end
end
end
)
guiGridListClear(GUIEditor.gridlist[1])
for _, player_ in ipairs(getElementsByType('player')) do
local itemPlayer = guiGridListAddRow(GUIEditor.gridlist[1])
local itemText = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 1, getPlayerName(player_), false, false)
local itemStatus = guiGridListSetItemText(GUIEditor.gridlist[1], itemPlayer, 2, getElementData(player_, "Status"), false, false)
if (getElementData(player_, "Status") == "Online") then
guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 0, 255, 0)
else guiGridListSetItemColor(GUIEditor.gridlist[1], itemPlayer, 2, 255, 0, 0)
end
end
addEventHandler( 'onClientGUIClick', root,
function()
if (source == X.Button.pWindow) then
guiSetVisible(Chat.pWindow, false)
guiSetInputEnabled(false)
showCursor(false)
elseif (source == X.Button.MoreInfoWindow) then
guiSetVisible(MoteInfo.MoreInfoWindow, false)
elseif (source == X.Button.ChattingWindow) then
guiSetVisible(Chatting.ChattingWindow, false)
setElementData(localPlayer, "Chatting", nil)
elseif (source == MoreInfo.Button.pWindow) then
guiSetVisible(MoteInfo.MoreInfoWindow, true)
elseif (source == PlayerStatus.Button.pWindow) then
if (guiGetText(PlayerStatus.Button.pWindow) == "# Offline ~") then
triggerServerEvent( 'setPlayerStatusOffline', localPlayer )
guiSetText(PlayerStatus.Button.pWindow, "# Online ~")
guiSetProperty(PlayerStatus.Button.pWindow, "NormalTextColour", "FF13FE1E")
guiSetEnabled(GUIEditor.gridlist[1], false)
else
triggerServerEvent( 'setPlayerStatusOnline', localPlayer )
guiSetText(PlayerStatus.Button.pWindow, "# Offline ~")
guiSetProperty(PlayerStatus.Button.pWindow, "NormalTextColour", "FFFC0000")
guiSetEnabled(GUIEditor.gridlist[1], true)
end
elseif (source == SentMessage.Button.ChattingWindow) then
local getMessage = guiGetText(Message.Edit.ChattingWindow)
if (getMessage == "") then outputChatBox('* ERROR : #FFFFFF Please write a message !', 255, 0, 0, true) return end
local playerSelected_ = guiGridListGetItemText(GUIEditor.gridlist[1], guiGridListGetSelectedItem(GUIEditor.gridlist[1], 1))
guiSetText (Messages.Memo.ChattingWindow, "" ..guiGetText(Messages.Memo.ChattingWindow).. ""..getPlayerName(localPlayer).." : "..guiGetText (Message.Edit.ChattingWindow).."")
local playerName = getPlayerName(localPlayer)
local MemoMessages = guiGetText(Messages.Memo.ChattingWindow)
local getMessage_ = guiGetText(Message.Edit.ChattingWindow)
local playerSource = getPlayerFromName(playerSelected_)
triggerServerEvent ( "SentMessageToPlayer", playerSource, MemoMessages, playerName, getMessage_)
guiSetText(Message.Edit.ChattingWindow, "")
end
end
)
addEvent( 'SentMessageTo', true )
addEventHandler( 'SentMessageTo', root,
function(MemoMessages, playerName, getMessage_ )
guiSetText (Messages.Memo.ChattingWindow,"" ..MemoMessages.. "" ..playerName.. " : " ..getMessage_.. "")
end
)
addEventHandler( 'onClientGUIDoubleClick', root,
function()
if (source == GUIEditor.gridlist[1]) then
local Selected = guiGridListGetSelectedItem(GUIEditor.gridlist[1])
if (Selected == -1) then return end
local playerSelected = guiGridListGetItemText(GUIEditor.gridlist[1], guiGridListGetSelectedItem(GUIEditor.gridlist[1], 1))
local playerStatus = getPlayerFromName(playerSelected)
if (playerSelected) then
if (getElementData(playerStatus, "Status") == "Offline") then outputChatBox('* ERROR : #FFFFFF This player is offline !', 255, 0, 0, true) return end
--if (playerStatus == localPlayer) then outputChatBox('* ERROR : #FFFFFF You can\'t chatting with yourself !', 255, 0, 0, true) return end
guiSetVisible(Chatting.ChattingWindow, true)
guiSetText(Chatting.ChattingWindow, playerSelected)
setElementData(localPlayer, "Chatting", playerSelected)
end
end
end
)
function openChatpWindow()
if (guiGetVisible(Chat.pWindow) == false) then
if (getElementData(localPlayer, "Chatting") ~= nil) then
guiSetInputEnabled(true)
guiSetVisible(Chatting.ChattingWindow, true)
guiSetVisible(Chat.pWindow, true)
showCursor(true)
else guiSetVisible(Chat.pWindow, true) showCursor(true) guiSetInputEnabled(true) end
else
guiSetInputEnabled(false)
guiSetVisible(Chat.pWindow, false)
guiSetVisible(Chatting.ChattingWindow, false)
showCursor(false)
end
end
bindKey( "F2", "down", openChatpWindow)
Server :
addEvent( 'SentMessageToPlayer', true )
addEventHandler( 'SentMessageToPlayer', root,
function(MemoMessages, playerName, getMessage_)
triggerClientEvent( source, "SentMessageTo", source, MemoMessages, playerName, getMessage_ )
end
)
addEventHandler( 'onPlayerChangeNick', root,
function()
triggerClientEvent( 'RefreshList', source )
end
)
addEventHandler( 'onPlayerQuit', root,
function()
triggerClientEvent( 'RefreshList', source )
end
)
addEventHandler( 'onPlayerJoin', root,
function()
setElementData(source, "Status", "Online")
triggerClientEvent( 'RefreshList', source )
end
)
addEvent( 'setPlayerStatusOffline', true )
addEventHandler( 'setPlayerStatusOffline', root,
function()
setElementData(source, "Status", "Offline")
triggerClientEvent( 'RefreshList', source )
end
)
addEvent( 'setPlayerStatusOnline', true )
addEventHandler( 'setPlayerStatusOnline', root,
function()
setElementData(source, "Status", "Online")
triggerClientEvent( 'RefreshList', source )
end
)
المشلة أني يوم اجي اراسل احد واجي مرة ثانية اراسل واحد ثاني
الرسائل اللي بيني وبين الشخص الأول تجي نفسها وكأنه مراسل الأول !!
أعرف تحتاج جداول لاكن ابي خبرتكم شوي تفيدني لآن الجداول لآحسه مخي