Wysłany: 2016-08-21, 21:37
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
Witam!
Mam b??d ze skryptem "notices" oraz z kodem kt?ry powoduje pokazanie si? informacji (chyba wiecie o co chodzi)
Wyskakuje taki b??d:
Oto kod na "notices":
local displayWidth , displayHeight = guiGetScreenSize ();
local notificationData = {};
local notificationFont = dxCreateFont ( 'files/fonts/roboto.ttf' , 12 * 2 , false );
local iconsFont = dxCreateFont ( 'files/fonts/icons.ttf' , 12 * 2 , false );
addEventHandler ( 'onClientRender' , root ,
function()
for k , v in pairs ( notificationData ) do
if ( v . State == 'fadeIn' ) then
local alphaProgress = ( getTickCount () - v . AlphaTick ) / 650 ;
local alphaAnimation = interpolateBetween ( 0 , 0 , 0 , 255 , 0 , 0 , alphaProgress , 'Linear' );
if ( alphaAnimation ) then
v . Alpha = alphaAnimation ;
else
v . Alpha = 255 ;
end
if ( alphaProgress > 1 ) then
v . Tick = getTickCount ();
v . State = 'openTile' ;
end
elseif ( v . State == 'fadeOut' ) then
local alphaProgress = ( getTickCount () - v . AlphaTick ) / 650 ;
local alphaAnimation = interpolateBetween ( 255 , 0 , 0 , 0 , 0 , 0 , alphaProgress , 'Linear' );
if ( alphaAnimation ) then
v . Alpha = alphaAnimation ;
else
v . Alpha = 0 ;
end
if ( alphaProgress > 1 ) then
notificationData = {};
end
elseif ( v . State == 'openTile' ) then
local tileProgress = ( getTickCount () - v . Tick ) / 350 ;
local tilePosition = interpolateBetween ( v . StartX , 0 , 0 , v . EndX , 0 , 0 , tileProgress , 'Linear' );
local tileWidth = interpolateBetween ( 0 , 0 , 0 , v . Width , 0 , 0 , tileProgress , 'Linear' );
if ( tilePosition and tileWidth ) then
v . CurrentX = tilePosition ;
v . CurrentWidth = tileWidth ;
else
v . CurrentX = v . EndX ;
v . CurrentWidth = v . Width ;
end
if ( tileProgress > 1 ) then
v . State = 'fixTile' ;
setTimer (function()
v . Tick = getTickCount ();
v . State = 'closeTile' ;
end , string . len ( v . Text ) * 45 + 5000 , 1 );
end
elseif ( v . State == 'closeTile' ) then
local tileProgress = ( getTickCount () - v . Tick ) / 350 ;
local tilePosition = interpolateBetween ( v . EndX , 0 , 0 , v . StartX , 0 , 0 , tileProgress , 'Linear' );
local tileWidth = interpolateBetween ( v . Width , 0 , 0 , 0 , 0 , 0 , tileProgress , 'Linear' );
if ( tilePosition and tileWidth ) then
v . CurrentX = tilePosition ;
v . CurrentWidth = tileWidth ;
else
v . CurrentX = v . StartX ;
v . CurrentWidth = 0 ;
end
if ( tileProgress > 1 ) then
v . AlphaTick = getTickCount ();
v . State = 'fadeOut' ;
end
elseif ( v . State == 'fixTile' ) then
v . Alpha = 255 ;
v . CurrentX = v . EndX ;
v . CurrentWidth = v . Width ;
end
roundedRectangle ( v . CurrentX , 20 , 25 + v . CurrentWidth , 25 , tocolor ( 0 , 0 , 0 , 150 * v . Alpha / 255 ), _ , true );
dxDrawRectangle ( v . CurrentX , 20 , 25 , 25 , tocolor ( 0 , 0 , 0 , 255 * v . Alpha / 255 ), true );
if ( v . Alpha == 255 ) then
dxDrawText ( v . Text , v . CurrentX + 25 + 10 , 20 , v . CurrentX + 25 + 10 + v . CurrentWidth - 20 , 20 + 25 , tocolor ( 255 , 255 , 255 , 255 ), 0.40 , notificationFont , 'center' , 'center' , true , false , true );
end
if ( v . Type == 'error' ) then
dxDrawText ( '' , v . CurrentX + 5 , 20 , v . CurrentX + 5 + 25 - 10 , 20 + 25 , tocolor ( 215 , 90 , 90 , v . Alpha ), 0.50 , iconsFont , 'center' , 'center' , false , false , true );
elseif ( v . Type == 'warning' ) then
dxDrawText ( '' , v . CurrentX + 5 , 20 , v . CurrentX + 5 + 25 - 10 , 20 + 25 , tocolor ( 220 , 180 , 80 , v . Alpha ), 0.50 , iconsFont , 'center' , 'center' , false , false , true );
elseif ( v . Type == 'info' ) then
dxDrawText ( '' , v . CurrentX + 5 , 20 , v . CurrentX + 5 + 25 - 10 , 20 + 25 , tocolor ( 85 , 180 , 245 , v . Alpha ), 0.50 , iconsFont , 'center' , 'center' , false , false , true );
elseif ( v . Type == 'success' ) then
dxDrawText ( '' , v . CurrentX + 5 , 20 , v . CurrentX + 5 + 25 - 10 , 20 + 25 , tocolor ( 80 , 205 , 105 , v . Alpha ), 0.50 , iconsFont , 'center' , 'center' , false , false , true );
end
end
end
)
function addNotification ( text , type )
if ( text and type ) then
if ( notificationData ~= nil ) then
table . remove ( notificationData , #notificationData);
end
table . insert ( notificationData ,
{
StartX = ( displayWidth / 2 ) - ( 25 / 2 ),
EndX = ( displayWidth / 2 ) - (( dxGetTextWidth ( text , 0.40 , notificationFont ) + 20 + 25 ) / 2 ),
Text = text ,
Width = dxGetTextWidth ( text , 0.40 , notificationFont ) + 20 ,
Alpha = 0 ,
State = 'fadeIn' ,
Tick = 0 ,
AlphaTick = getTickCount (),
CurrentX = ( displayWidth / 2 ) - ( 25 / 2 ),
CurrentWidth = 0 ,
Type = type or 'info'
}
);
playSoundFrontEnd ( 11 );
end
end
function roundedRectangle ( x , y , w , h , borderColor , bgColor , postGUI )
if ( x and y and w and h ) then
if ( not borderColor ) then
borderColor = tocolor ( 0 , 0 , 0 , 200 );
end
if ( not bgColor ) then
bgColor = borderColor ;
end
--> Background
dxDrawRectangle ( x , y , w , h , bgColor , postGUI );
--> Border
dxDrawRectangle ( x + 2 , y - 1 , w - 4 , 1 , borderColor , postGUI ); -- top
dxDrawRectangle ( x + 2 , y + h , w - 4 , 1 , borderColor , postGUI ); -- bottom
dxDrawRectangle ( x - 1 , y + 2 , 1 , h - 4 , borderColor , postGUI ); -- left
dxDrawRectangle ( x + w , y + 2 , 1 , h - 4 , borderColor , postGUI ); -- right
end
end
A oto kod na pokazywanie informacji (ka?dy z nich testowa?em ale nic nie dzia?a):
addCommandHandler ( "hinfo" , function( plr , cmd ,...)
local account = getPlayerAccount ( plr )
local accname = getAccountName ( account )
if isObjectInACLGroup ( "user." .. accname , aclGetGroup ( "RCON" )) then
if not ... then triggerClientEvent ( plr , "powiadomienie" , root , "Wpisz /hinfo (tekst) " ) return end
local text = table . concat ({...}, " " )
for _ , p in pairs ( getElementsByType ( 'player' )) do
triggerClientEvent ( p , "powiadomienie" , root , text )
end
end
end )
addCommandHandler ( "notification" , function( plr , cmd , tyr ,...)
local account = getPlayerAccount ( plr )
local accname = getAccountName ( account )
if isObjectInACLGroup ( "user." .. accname , aclGetGroup ( "RCON" )) then
if not ... or not tyr then triggerClientEvent ( plr , "addNotification" , root , "Wpisz /notification [error/success/warning/info] (tekst) " , "error" ) return end
local text = table . concat ({...}, " " )
for _ , p in pairs ( getElementsByType ( 'player' )) do
triggerClientEvent ( p , "addNotificatione" , root , text , tyr )
end
end
end )
addCommandHandler ( "ninfo" , function( plr , cmd ,...)
local account = getPlayerAccount ( plr )
local accname = getAccountName ( account )
if isObjectInACLGroup ( "user." .. accname , aclGetGroup ( "RCON" )) then
if not ... then triggerClientEvent ( plr , "addNotification" , root , "Wpisz /ninfo (tekst) " , "error" ) return end
local text = table . concat ({...}, " " )
for _ , p in pairs ( getElementsByType ( 'player' )) do
triggerClientEvent ( p , "addNotificatione" , root , text , "info" )
end
end
end )
Prosz? o edycj? kodu - stawiam respekt i piwo
Wysłany: 2016-08-21, 22:03
CzarnaKobra
Wiek: 30 Na forum: 4183 dni Posty: 59
Nick w MP: CzarnaKobra
Piwa : 1
triggerClientEvent ( p , "addNotificatione" , root , text , tyr )
na
triggerClientEvent ( p , "addNotification" , root , text , tyr )
Wysłany: 2016-08-21, 22:26
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
CzarnaKobra , za? wyst?puje b??d:
ERROR: Server triggered clienside event addNotification, but event is not added clientside.
Wysłany: 2016-08-22, 00:58
CzarnaKobra
Wiek: 30 Na forum: 4183 dni Posty: 59
Nick w MP: CzarnaKobra
Piwa : 1
[lua]
function addNotification(player, text, type)
if (player and text and type) then
triggerClientEvent(player, 'addNotification', player, text, type);
end
end
/[lua]
Wklej to po stronie servera
Wysłany: 2016-08-22, 09:01
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
CzarnaKobra , nadal ten sam b??d, mo?e co? jest z met?:
< meta >
< info name = "Simple Notifications" author = "Jayceon" version = "1.0.1" type = "script" />
< script src = "sourceC.lua" type = "client" />
< script src = "sourceS.lua" type = "server" />
< file src = "files/fonts/roboto.ttf" />
< file src = "files/fonts/icons.ttf" />
< export function= "addNotification" type = "client" />
</ meta >
Wysłany: 2016-08-22, 09:35
DJglizdek
Uczeń LUA
Wiek: 24 Na forum: 4168 dni Posty: 75
Nick w MP: DJglizdek
Piwa : 5
Po stronie clienta na samej g?rze kodu dodaj
addEvent ( "addNotificatione" , true )
Wysłany: 2016-08-22, 10:23
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
DJglizdek , nadal ten sam b??d:
ERROR: Server triggered clienside event addNotification, but event is not added clientside.
Wysłany: 2016-08-22, 10:47
DJglizdek
Uczeń LUA
Wiek: 24 Na forum: 4168 dni Posty: 75
Nick w MP: DJglizdek
Piwa : 5
Wybacz, m?j b?ad. Zr?b to samo co napisa?em tylko zamiast "addNotificatione" daj "addNotification"
Wysłany: 2016-08-22, 11:26
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
DJglizdek , nie ma DB3 nic si? nie dzieje po wpisaniu /notification lub /ninfo
Wysłany: 2016-08-22, 11:52
GabWas
Wiek: 24 Na forum: 3881 dni Posty: 289
Nick w MP: GabWas
Piwa : 65
Przecie? jak w?? pisze w mecie, ?e addNotification nie jest event'em, tylko funkcj?, wi?c nie wywo?uje jej si? trigger'em.
export . notices : addNotification ()
Wysłany: 2016-08-22, 19:25
Kalizman
Wiek: 23 Na forum: 3652 dni Posty: 1394
Piwa : 4619
Wysłany: 2016-08-22, 21:11
GabWas
Wiek: 24 Na forum: 3881 dni Posty: 289
Nick w MP: GabWas
Piwa : 65
No to? poda?em Ci jak masz tego u?y?. W nawiasie tylko wpisz swoje argumenty, kt?re dawa?e? do trigger'a i tyle. Chyba nie takie trudne mi si? wydaje.
Tagi: notifications
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: