Advertisement
Guest User

Untitled

a guest
Jul 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.59 KB | None | 0 0
  1. local sw,sh=guiGetScreenSize()
  2. local logo_w=sw/8
  3. local logo_h=logo_w*(133/405)
  4.  
  5. local target_cel, target_ograniczenia
  6. local target_material = dxCreateTexture("i/arrow.png")
  7.  
  8. local ss_image
  9.  
  10. local vote={}
  11. local countdown={}
  12.  
  13. local playerWarning=false
  14.  
  15. local bottom_bar={"","","","","",""}
  16.  
  17. local bottombar_scale=(logo_h/2)/dxGetFontHeight(1.0,barFont)
  18.  
  19. local stoper_st=nil
  20. local stoper_width=dxGetTextWidth("00:00.00", 1, lcdFont)
  21.  
  22. addEvent("startCountingTime", true)
  23. addEventHandler("startCountingTime", root, function(state)
  24. stoper_st = state and getTickCount() or nil
  25. end)
  26.  
  27. addEventHandler("onClientPlayerSpawn", localPlayer, function()
  28. stoper_st=nil
  29. end)
  30.  
  31. function findRotation(startX, startY, targetX, targetY)
  32. local t = -math.deg(math.atan2(targetX - startX, targetY - startY))
  33. if t < 0 then
  34. t = t + 360
  35. end
  36. return t
  37. end
  38.  
  39.  
  40.  
  41.  
  42.  
  43. local function renderTarget()
  44. if target_cel then
  45. if not isElement(target_cel) then
  46. target_cel=nil
  47. return
  48. end
  49.  
  50. if target_ograniczenia then
  51. if target_ograniczenia.inVehicle and isElement(target_ograniczenia.inVehicle) then
  52. if getPedOccupiedVehicle(localPlayer)~=target_ograniczenia.inVehicle then return end
  53. end
  54. if target_ograniczenia.factionId and target_ograniczenia.factionId~=(getElementData(localPlayer,"faction:id") or "") then
  55. return
  56. end
  57. end
  58.  
  59.  
  60. local x1,y1,z1=getWorldFromScreenPosition(sw/2,sh*1/20,15)
  61. local tx,ty,tz=getElementPosition(target_cel)
  62. local x0,y0=getElementPosition(localPlayer)
  63. local dist=math.min(getDistanceBetweenPoints2D(x0,y0,tx,ty),31)
  64.  
  65. local alpha=(dist-15)*8
  66. if alpha<0 then alpha=0 end
  67. -- 0 = 0
  68. -- 15 - 0
  69. -- 32 - 255
  70.  
  71. local rz=findRotation(x1,y1,tx,ty)
  72. local x2,y2,z2=x1,y1,z1-1
  73.  
  74. local rrz=math.rad(rz)
  75. local x2= x2 + (5 * math.sin(-rrz))
  76. local y2= y2 + (5 * math.cos(-rrz))
  77.  
  78. dxDrawMaterialLine3D(x1,y1,z1, x2,y2,z2, target_material, 5, tocolor(255,255,255,alpha), tx,ty,tz)
  79. end
  80. end
  81.  
  82. local display_stat_pp=getTickCount()-5000
  83.  
  84. addEvent("displayStatPP", true)
  85. addEventHandler("displayStatPP", root, function()
  86. display_stat_pp=getTickCount()+10000
  87. end)
  88.  
  89.  
  90. addEventHandler("onClientRender", root, function()
  91. -- dxDrawImage(sw-389,sh-500, 389,500, "i/babe.jpg")
  92. -- dxDrawText("Serwer testowy, prosze nie spodziewac sie ze wszystko bedzie dzialac, wyniki gry nie są rejestrowane",0,0)
  93. if getElementData(localPlayer, "justConnected") then return end
  94.  
  95.  
  96. if (playerWarning) then
  97. dxDrawRectangle( 100,100,sw-200, sh-200, tocolor(255,0,0,100), true)
  98. dxDrawText( _("Otrzymałeś/aś ostrzeżenie:"), 100, 100, sw-100, sh/2-20, tocolor(255,255,255), 3.0, "default-bold", "center", "bottom", true, true,true)
  99. dxDrawText( playerWarning, 100,sh/2+20, sw-100, sh-100, tocolor(0,0,0), 2.0, "default-bold", "center", "top", true, true,true )
  100. return -- reszty nie pokazujemy bo po co
  101. end
  102.  
  103.  
  104. renderTarget()
  105.  
  106. dxDrawImage(0,sh-logo_h, sw, logo_h, 'i/statusbarbg.png')
  107. dxDrawImage(8, sh-logo_h, logo_w,logo_h, 'i/bp.png') --405x133
  108.  
  109. dxDrawText(bottom_bar[2], logo_w+16+1, sh-logo_h, sw, sh-logo_h/2+1, tocolor(0,0,0), bottombar_scale,barFont,"left","bottom",false,false,false,false)
  110. dxDrawText(bottom_bar[1], logo_w+16, sh-logo_h, sw, sh-logo_h/2, tocolor(getPlayerNametagColor(localPlayer)), bottombar_scale,barFont,"left","bottom",false,false,false,true,false)
  111. dxDrawText(bottom_bar[4], logo_w+16+1, sh-logo_h*1/2+1, sw,sh,tocolor(0,0,0),bottombar_scale, barFont, "left","top",false, false, false, true)
  112. dxDrawText(bottom_bar[3], logo_w+16, sh-logo_h*1/2, sw,sh,-1,bottombar_scale, barFont, "left","top",false, false, false, true)
  113.  
  114. dxDrawText(bottom_bar[6], logo_w+16+1, sh-logo_h+1, sw,sh-logo_h/2+1,tocolor(0,0,0),bottombar_scale, barFont, "right","bottom",false, false, false, true)
  115. dxDrawText(bottom_bar[5], logo_w+16, sh-logo_h, sw,sh-logo_h/2,-1,bottombar_scale, barFont, "right","bottom",false, false, false, true)
  116.  
  117.  
  118. -- stoper
  119. if stoper_st then
  120. local czas=getTickCount()-stoper_st
  121. local czas_t=string.format("%02d:%02d.%02d", czas/60000, (czas/1000)%60, czas%1000/10)
  122. dxDrawText(czas_t, sw/2-stoper_width/2, 16, sw, 16, tocolor(0,0,60,255), 1, lcdFont, "left", "top")
  123. end
  124.  
  125.  
  126. local area=getElementData(localPlayer,"area") or 0
  127. if area==1 then
  128. local t=_("strefa bez dm")
  129. dxDrawText(t, 860/1024*sw-1,0-1, sw*970/1024-1, sh/25-1, tocolor(0,0,0,255),1, "pricedown", "center","center")
  130. dxDrawText(t, 860/1024*sw+1,0+1, sw*970/1024+1, sh/25+1, tocolor(0,0,0,255),1, "pricedown", "center","center")
  131. dxDrawText(t, 860/1024*sw,0, sw*970/1024, sh/25, tocolor(150,150,250),1, "pricedown", "center","center")
  132. elseif area==2 then
  133. local t=_("strefa śmierci")
  134. dxDrawText(t, 860/1024*sw-1,0-1, sw*970/1024-1, sh/25-1, tocolor(0,0,0,255),1, "pricedown", "center","center")
  135. dxDrawText(t, 860/1024*sw+1,0+1, sw*970/1024+1, sh/25+1, tocolor(0,0,0,255),1, "pricedown", "center","center")
  136. dxDrawText(t, 860/1024*sw,0, sw*970/1024, sh/25, tocolor(250,20,20),1, "pricedown", "center","center")
  137.  
  138. end
  139. local pv=getPedOccupiedVehicle(localPlayer)
  140. if pv then
  141. drawSpedo()
  142. local pve=getElementModel(pv)
  143. if pve==520 or pve==425 then
  144. drawTargeting()
  145. end
  146. end
  147.  
  148.  
  149. local ctrl=(getKeyState("lalt") or getKeyState("ralt")) and (getKeyState("lctrl") or getKeyState("rctrl"))
  150.  
  151. if ctrl or getTickCount()-display_stat_pp<5000 then
  152. dxDrawText("Pojemność płuc",683/800*sw, (90+75)/600*sh, 759/800*sw, (100+75)/600*sh,tocolor(255,255,255),1,"default-small","center","center")
  153. dxDrawRectangle(683/800*sw, (100+75)/600*sh, 76/800*sw, 11/600*sh, tocolor(0,0,0,255))
  154. dxDrawRectangle(685/800*sw, (100+77)/600*sh, 72/800*sw, 7/600*sh, tocolor(100,100,255,64))
  155.  
  156. local hl=getPedStat(localPlayer, 225)/10
  157. dxDrawRectangle(685/800*sw, (100+77)/600*sh, 72/800*sw*(hl/100), 7/600*sh, tocolor(100,100,255,255))
  158. end
  159.  
  160.  
  161. if (vote and vote.timeleft and vote.timeleft>-8 and vote.pytanie) then
  162. if (vote.timeleft>0) then
  163. vote.tekst=vote.pytanie .. "\n\n" .. vote.tak.. " /" .. _("TAK").." (".. vote.timeleft .."s) /".. _("NIE").." "..vote.nie
  164. else
  165. vote.tekst=vote.pytanie .. "\n\n"
  166. if (vote.tak>vote.nie) then
  167. vote.tekst=vote.tekst.._("TAK! (głosów:").." " .. vote.tak ..")"
  168. elseif (vote.nie>vote.tak) then
  169. vote.tekst=vote.tekst.._("NIE! (głosów:").." " .. vote.nie ..")"
  170. else
  171. vote.tekst=vote.tekst.._("REMIS! (głosów:").." " ..vote.tak.."+".. vote.nie ..")"
  172. end
  173. end
  174. dxDrawText( vote.tekst, 1+sw*2/8, 1+sh*6/9, 1+sw*6/8, 1+sh*8/9, tocolor(0,0,0), 1, "default-bold", "center","bottom",true,true)
  175. dxDrawText( vote.tekst, sw*2/8, sh*6/9, sw*6/8, sh*8/9, tocolor(255,255,255), 1, "default-bold", "center","bottom",true,true)
  176.  
  177. local vcn=((0.2+vote.nie)*sw*2/8)/(vote.tak+vote.nie+0.4)
  178. local vct=((0.2+vote.tak)*sw*2/8)/(vote.tak+vote.nie+0.4)
  179. dxDrawLine( sw*4/8, sh*8/9+8, sw*4/8+vcn, sh*8/9+8, tocolor(255,0,0), 6)
  180. dxDrawLine( sw*4/8, sh*8/9+8, sw*4/8-vct, sh*8/9+8, tocolor(0,255,0), 6)
  181. end
  182.  
  183.  
  184. for i,v in pairs(countdown) do
  185. if v<getTickCount()-1000 then
  186. outputDebugString("a")
  187. countdown[i]=nil
  188. if tonumber(i) and tonumber(i)>1 and tonumber(i)<=5 then
  189. playSound("a/"..tostring(tonumber(i-1))..".ogg")
  190. end
  191. elseif v<getTickCount() then
  192. local scale=math.sqrt(1000-(getTickCount()-v))/20+1
  193. --[[
  194. x/2 x/2-250 math.abs(x/2-250) 255-prev
  195. 1 - 0 0 -250 250
  196. 250 - 127 127 -127 127
  197. 500 - 250 250 0 0
  198. 750 - 127 350 127 127
  199. 1000 - 0 500 250 250
  200. ]]--
  201.  
  202.  
  203.  
  204. local alpha=255-math.abs( (getTickCount()-v)/2-250)
  205.  
  206. dxDrawText(tostring(i), sw/2,sh/2,sw/2,sh/2, tocolor(255,255,255,alpha), scale, cdFont, "center", "center")
  207.  
  208. end
  209. end
  210. if ss_image then
  211. dxDrawImage( sw/2-320, sh/2-240, 640, 480, ss_image )
  212. end
  213.  
  214. end)
  215.  
  216. addEvent("doCountdown", true)
  217. addEventHandler("doCountdown", root, function(n)
  218. for i=n,1,-1 do
  219. countdown[i]=getTickCount()+(n-i)*1000
  220. end
  221. playSound("a/"..tostring(tonumber(n))..".ogg")
  222. end)
  223.  
  224. local function getPlayersCount()
  225. local gracze=getElementsByType("player")
  226. local vipy,gmy,admini=0,0,0
  227. for i,v in ipairs(gracze) do
  228. local r=getElementData(v,"rank")
  229. if r and r>=2 then
  230. admini=admini+1
  231. elseif r and r==1 then
  232. gmy=gmy+1
  233. end
  234. if getElementData(v,"vip") then
  235. vipy=vipy+1
  236. end
  237. end
  238. return #gracze,vipy,gmy,admini
  239. end
  240.  
  241. local function refreshBars()
  242. local playTime=getElementData(localPlayer,"playTime")
  243. if not playTime then return end -- gracz jeszcze nie wszedl do gry
  244. bottom_bar[1]=getPlayerName(localPlayer).."#6090AA ID:#FFFFFF "..(getElementData(localPlayer, "id") or "-")
  245. bottom_bar[2]=stripColors(bottom_bar[1])
  246.  
  247. bottom_bar[3]=string.format(_("#d9ddfcRespekt:#FFFFFF %d#d9ddfc, Skill:#FFFFFF %d#d9ddfc, Czas gry:#FFFFFF %02dh%02dm"), getElementData(localPlayer, "respect"), getElementData(localPlayer,"skill"), playTime/60, playTime%60)
  248. bottom_bar[4]=stripColors(bottom_bar[3])
  249.  
  250. bottom_bar[5]=string.format(_("#d9ddfcGraczy:#FFFFFF %d#d9ddfc (#FFFF00%d#d9ddfc/#1f1fff%d#d9ddfc/#FF0000%d#d9ddfc)"), getPlayersCount())
  251. -- bottom_bar[5]=string.format(_("#d9ddfcGraczy:#FFFFFF %d#d9ddfc (#FFFF00%d#d9ddfc/#0fc0fc%d#d9ddfc/#FF0000%d#d9ddfc)"), getPlayersCount())
  252. bottom_bar[6]=stripColors(bottom_bar[5])
  253. end
  254.  
  255. setTimer(refreshBars, 5000, 0)
  256. refreshBars()
  257.  
  258.  
  259. function hidePlayerWarning()
  260. playerWarning=false
  261. end
  262.  
  263. function onPlayerWarningReceived(tresc)
  264. playSoundFrontEnd(5)
  265. outputChatBox(" ")
  266. outputChatBox(" ")
  267. outputChatBox(_("Otrzymales/as ostrzezenie!"), 255,0,0)
  268. outputChatBox(tresc, 255,255,255)
  269. outputChatBox(_("Nie stosowanie sie do ostrzezen moze skutkowac kickiem lub banem!"), 255,0,0)
  270. outputChatBox(" ")
  271. outputChatBox(" ")
  272. playerWarning=tresc
  273. setTimer(hidePlayerWarning, 7000, 1)
  274. end
  275.  
  276. addEvent("onPlayerWarningReceived",true)
  277. addEventHandler ( "onPlayerWarningReceived", getRootElement(), onPlayerWarningReceived )
  278.  
  279. addEvent("onGlosowanie", true)
  280. addEventHandler("onGlosowanie", getRootElement(), function(rvote)
  281. vote=rvote
  282. end)
  283.  
  284.  
  285.  
  286.  
  287.  
  288. local function checkSpec()
  289. local ct=getCameraTarget(localPlayer)
  290. if ct and ct~=localPlayer and getElementType(ct)=="player" then
  291. setElementInterior(localPlayer, getElementInterior(ct))
  292. setElementDimension(localPlayer, getElementDimension(ct))
  293. end
  294. end
  295. setTimer(checkSpec, 1000, 0)
  296.  
  297.  
  298. addEvent("onMyClientScreenShot",true)
  299. addEventHandler( "onMyClientScreenShot", resourceRoot,
  300. function( pixels )
  301. if ss_image then
  302. destroyElement(ss_image)
  303. end
  304. ss_image = dxCreateTexture( pixels )
  305. setTimer(function()
  306. destroyElement(ss_image)
  307. ss_image=nil
  308. end, 5000, 1)
  309. end
  310. )
  311.  
  312. --bindKey("y","down","chatbox","local")
  313.  
  314.  
  315. function setTarget(cel, ograniczenia)
  316. target_cel=cel
  317. target_ograniczenia=ograniczenia
  318. end
  319.  
  320. function clearTarget()
  321. target_cel=nil
  322. target_ograniczenia=nil
  323. end
  324.  
  325. addEvent("setTarget", true)
  326. addEventHandler("setTarget", root, function(ograniczenia,passive)
  327. if not passive or not target_cel then
  328. setTarget(source,ograniczenia)
  329. end
  330. end)
  331.  
  332. addEvent("clearTarget", true)
  333. addEventHandler("clearTarget", root, function(ograniczenia)
  334. clearTarget()
  335. end)
  336.  
  337.  
  338. addEventHandler("onClientResourceStop", resourceRoot, function()
  339. if target_cel then
  340. setElementData(localPlayer, "tmp:target_cel", target_cel)
  341. setElementData(localPlayer, "tmp:target_ograniczenia", target_ograniczenia)
  342. end
  343. end)
  344.  
  345. if getElementData(localPlayer, "tmp:target_cel") then
  346. target_cel=getElementData(localPlayer, "tmp:target_cel")
  347. end
  348.  
  349. addEventHandler("onClientPedWasted", localPlayer, clearTarget)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement