XaskeL

Glitch

Feb 24th, 2021
25
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local SHADER_CODE = base64Decode("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AAAAAAcAAAAAAAAAAAAAAAcAAAAEAAAAAAAAAAcAAAAIAAAAAQBQoAIAAAAAAAAABwAAAAgAAAAAAAAAAQAAABkAAAAAAAAABAAAAAgAAAABAFCgAgAAAAAAAAAHAAAACAAAAAAAAAABAAAACQAAAAAAAAAHAAAAAAAAAAEAQBABAAAAAAAAAAcAAAAAAAAAAAAAAAcAAAAEAAAAAQAQEAEAAAAAAAAABwAAAAQAAAAAAAAABwAAAAEAAAABAECgAgAAAAAAAAAHAAAAAQAAAAAAAAAHAAAAAAAAAAAAAAAHAAAABAAAAAEAUKACAAAAAAAAAAcAAAAEAAAAAAAAAAEAAAAKAAAAAAAAAAcAAAAAAAAAAgBQoAIAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAwAAAAAAAAABwAAAAQAAAABAECgAgAAAAAAAAAHAAAABQAAAAAAAAAHAAAABAAAAAAAAAAHAAAAAAAAAAEAUKACAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAALAAAAAAAAAAcAAAAEAAAAAQBAoAIAAAAAAAAABwAAAAQAAAAAAAAAAQAAAA4AAAAAAAAABwAAAAAAAAABAEAQAQAAAAAAAAAHAAAAAAAAAAAAAAAHAAAABAAAAAEAUKACAAAAAAAAAAcAAAAEAAAAAAAAAAEAAAAPAAAAAAAAAAcAAAAAAAAAAQBAoAIAAAAAAAAABwAAAAAAAAAAAAAAAQAAABAAAAAAAAAABwAAAAQAAAABAIAQAQAAAAAAAAAHAAAABAAAAAAAAAAHAAAAAQAAAAEAUKACAAAAAAAAAAcAAAABAAAAAAAAAAEAAAARAAAAAAAAAAcAAAAEAAAAAQBAEAEAAAAAAAAABwAAAAQAAAAAAAAABwAAAAAAAAABAECgAgAAAAAAAAACAAAABAAAAAAAAAABAAAAGgAAAAAAAAAHAAAAAQAAAAEAEKACAAAAAAAAAAcAAAABAAAAAAAAAAEAAAAbAAAAAAAAAAcAAAAEAAAAAQAAEAEAAAAAAAAABwAAAAEAAAAAAAAABAAAABAAAAABAACgAgAAAAAAAAAHAAAABAAAAAAAAAABAAAACAAAAAAAAAAHAAAAAQAAAAEAEBABAAAAAAAAAAcAAAABAAAAAAAAAAcAAAAEAAAAAQBQoAIAAAAAAAAABwAAAAEAAAAAAAAAAQAAAA4AAAAAAAAABAAAAAwAAAABAECgAgAAAAAAAAAHAAAABAAAAAAAAAABAAAACAAAAAAAAAAHAAAAAQAAAAEAUKACAAAAAAAAAAcAAAABAAAAAAAAAAEAAAASAAAAAAAAAAcAAAAEAAAAAQBAoAIAAAAAAAAABwAAAAAAAAAAAAAABwAAAAQAAAAAAAAABwAAAAgAAAABABAQAQAAAAAAAAAHAAAAAAAAAAAAAAAHAAAABAAAAAEAQKACAAAAAAAAAAcAAAAEAAAAAAAAAAEAAAAOAAAAAAAAAAcAAAAAAAAAAQAAMAMAAAAAAAAABwAAAAAAAAAAAAAAAQAAABQAAAAAAAAAAQAAABUAAAAAAAAABAAAABgAAAABAACgAgAAAAAAAAAHAAAACAAAAAAAAAABAAAACAAAAAAAAAAHAAAAAAAAAAEAUKACAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAATAAAAAAAAAAcAAAAEAAAAAQAwEAEAAAAAAAAABwAAAAQAAAAAAAAABAAAAAQAAAABAAAQAQAAAAAAAAAHAAAABAAAAAAAAAAEAAAAAAAAAPDw8PAPDw8P//8AAFEAAAUHAA+gOdZPQUx3nEIAAAAAjO4qR1EAAAUIAA+gg/kiPgAAAD/bD8lA2w9JwFEAAAUJAA+gvTeGNs3MTD9mZmY/zcxMPVEAAAUKAA+gzczMPQAAgD8AAAAAzcxMPlEAAAULAA+gmpmZPs3MzD6amRk/MzMzP1EAAAUMAA+gdMlsPv3fWD5WAZo+zczMPVEAAAUNAA+gAAAAPwAAAL8AAIA/AAAgQlEAAAUOAA+gd/RKP2HLKD8AAAAAAACAP1EAAAUPAA+gtxoUP42vWT8AAAAAAACAP1EAAAUQAA+gYAd0P+TFsz4AAAAAAACAPx8AAAIFAACAAAADkB8AAAIAAACQAAgPoAUAAAMAAAGAAAAAoAAAVZATAAACAAACgAAAAIACAAADAAABgAAAVYEAAACABQAAAwAAAYAAAACAAQAAoAEAAAIAAAKAAgAAoFoAAAQAAAGAAADkgAcA5KAHAKqgBAAABAAAAYAAAACACAAAoAgAVaATAAACAAABgAAAAIAEAAAEAAABgAAAAIAIAKqgCAD/oCUAAAIBAAKAAAAAgAUAAAMAAAGAAQBVgAcA/6ATAAACAAABgAAAAIACAAADAAARgAAAAIAJAFWgAgAAAwAAAYAAAACBCQCqoAUAAAMAAAGAAAAAgAQAAKAEAAAEAAAIgAAAAIAKAACgAABVkAUAAAMBAAGAAAAAoAAAAJATAAACAQACgAEAAIACAAADAQABgAEAVYEBAACABQAAAwEAAYABAACAAQAAoAEAAAIBAAqAAgAAoFoAAAQBAAGAAQDkgAcA5KAHAKqgBAAABAEAAYABAACACAAAoAgAVaATAAACAQABgAEAAIAEAAAEAQABgAEAAIAIAKqgCAD/oCUAAAICAAKAAQAAgAUAAAMBAAGAAgBVgAcA/6ATAAACAQABgAEAAIACAAADAQABgAEAAIADAAChAgAAAwEAA4ABAACADQDkoAIAAAMBAAGAAQAAgQ0AqqAFAAADAQABgAEAAIANAP+gWAAABAEAAYABAFWACQAAoAEAAIAFAAADAQACgAEAAIAAAFWQBgAAAgEAAYABAACAEwAAAgIAAYABAFWAAgAAAwEAAoABAFWAAgAAgQUAAAMBAASAAQAAgAEAVYBaAAAEAQABgAEA7oAHAOSgBwCqoAQAAAQBAAGAAQAAgAgAAKAIAFWgEwAAAgEAAYABAACABAAABAEAAYABAACACACqoAgA/6AlAAACAgACgAEAAIAFAAADAQABgAIAVYAHAP+gEwAAAgEAAYABAACABQAAAwEAAYABAACABAAAoAUAAAMBAAGAAQAAgAkA/6AFAAADAQABgAEAAIAGAACgAgAAAwEABoACAACgAADQkFoAAAQBAAKAAQDpgAcA5KAHAKqgBAAABAEAAoABAFWACAAAoAgAVaATAAACAQACgAEAVYAEAAAEAQACgAEAVYAIAKqgCAD/oCUAAAICAAKAAQBVgAUAAAMBAAKAAgBVgAcA/6ATAAACAQACgAEAVYAFAAADAQACgAEAVYABAACABAAABAEAAYABAFWACABVoAEAAIABAAACAAAUgAAAAJAEAAAEAAASgAEAAIAKAACgAACqgEIAAAMCAA+AAADugAAI5KBCAAADAwAPgAAA7YAACOSgBAAABAAAEYABAACACgD/oAAAVYAFAAADAwAPgAMA5IAKAGmgBAAABAIAD4ACAOSACgBpoAMA5IBCAAADAwAPgAAA7IAACOSgBAAABAAAFIABAACACwAAoAAAAIAEAAAEAgAPgAMA5IAQAOSgAgDkgEIAAAMDAA+AAADugAAI5KAEAAAEAAASgAEAAIALAFWgAACqgAQAAAQCAA+AAwDkgA4A5KACAOSAQgAAAwMAD4AAAO2AAAjkoAQAAAQAABGAAQAAgAgAVaAAAFWABAAABAIAD4ADAOSADwDkoAIA5IBCAAADAwAPgAAA7IAACOSgBAAABAAAFIABAACACwCqoAAAAIAEAAAEAgAPgAMA5IAKAGagAgDkgEIAAAMDAA+AAADugAAI5KAEAAAEAAASgAEAAIALAP+gAACqgAQAAAQCAA+AAwDkgA8AxqACAOSAQgAAAwMAD4AAAO2AAAjkoAQAAAQAABGAAQAAgAkAVaAAAFWABAAABAEAEYABAACACQCqoAAAAIBCAAADBAAPgAAA7IAACOSgAQAAAgEAAoAAAP+AQgAAAwAAD4ABAOSAAAjkoAQAAAQBAA+AAwDkgA4AxqACAOSABAAABAEAD4AEAOSAEADGoAEA5IAEAAAEAAAPgAAA5IAKAFqgAQDkgAUAAAMACA+AAADkgAwA5KD//wAAAAAAAAAAAAD/////AAAAAAAAAABwAQAAAAL+//7/NQBDVEFCHAAAAJ8AAAAAAv7/AQAAABwAAAAAAAAgmAAAADAAAAACAAAABAAAAEgAAABYAAAAZ1dvcmxkVmlld1Byb2plY3Rpb24Aq6urAwADAAQABAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2c18yXzAATWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA5LjI3Ljk1Mi4zMDIyAFEAAAUEAA+gAACAPwAAAAAAAAAAAAAAAB8AAAIAAACAAAAPkB8AAAIFAACAAQAPkAQAAAQAAA+AAAAkkAQAQKAEABWgCQAAAwAAAcAAAOSAAADkoAkAAAMAAALAAADkgAEA5KAJAAADAAAEwAAA5IACAOSgCQAAAwAACMAAAOSAAwDkoAEAAAIAAAPgAQDkkP//AAD/////AwAAAAAAAAAAAAAAAQAAAA8AAABteVNjcmVlblNvdXJjZQAA");
  2.  
  3. -- export to mta and writted code by: XaskeL
  4. -- shader code from glsl by: Coolok
  5.  
  6. CGlitch = {
  7.     GlitchPower = 0.001; -- Glitch Power (0.0f to 1.0f);
  8.     ScreenSize = { guiGetScreenSize() }; -- default screen size
  9.  
  10.     -- example[1]: CGlitch:destroy()
  11.     -- example[2]: CGlitch.destroy()
  12.     -- function for destroy glitch effects
  13.     destroy = function(self)
  14.         if CGlitch.AlreadyHandlered then
  15.             removeEventHandler('onClientHUDRender', root, CGlitch.draw);
  16.             removeEventHandler('onClientPreRender', root, CGlitch.update);
  17.             CGlitch.AlreadyHandlered = false;
  18.         end
  19.         if self.Shader then
  20.             destroyElement(self.Shader);
  21.             self.Shader = false;
  22.         end
  23.         if self.MyScreenSource then
  24.             destroyElement(self.MyScreenSource);
  25.             self.MyScreenSource = false;
  26.         end
  27.         return true;
  28.     end;
  29.    
  30.     -- function for update screen source
  31.     update = function()
  32.         if CGlitch.MyScreenSource then
  33.             dxUpdateScreenSource(CGlitch.MyScreenSource);
  34.         end
  35.     end;
  36.  
  37.     -- function for draw glitch effect
  38.     draw = function()
  39.         if CGlitch.Shader then
  40.             dxDrawImage(0, 0, CGlitch.ScreenSize[1], CGlitch.ScreenSize[2], CGlitch.Shader)
  41.         end
  42.         if (CGlitch.fTime and CGlitch.fTime < getTickCount()) then
  43.             CGlitch:destroy();
  44.         end
  45.     end;
  46.    
  47.     -- example [1]: CGlitch:show(500);
  48.     -- example [2]: CGlitch.show(CGlitch, 500);
  49.     -- params: @self (table CGlitch), 500 (time in milliseconds or false for permanently drawing)
  50.     show = function(self, fTime)
  51.         -- create screen source & shader
  52.         if not self.Shader then
  53.             self.MyScreenSource = dxCreateScreenSource(CGlitch.ScreenSize[1], CGlitch.ScreenSize[2]);
  54.             self.Shader = dxCreateShader(SHADER_CODE);
  55.             -- set default parametres
  56.             dxSetShaderValue(self.Shader, 'GlitchPower', self.GlitchPower);
  57.             dxSetShaderValue(self.Shader, 'myScreenSource', self.MyScreenSource);
  58.             dxSetShaderValue(self.Shader, 'ScreenSize', { CGlitch.ScreenSize[1], CGlitch.ScreenSize[2] });
  59.             dxSetShaderValue(self.Shader, 'PixelSize', { 1 / CGlitch.ScreenSize[1], 1 / CGlitch.ScreenSize[2] });
  60.         end
  61.         -- set work time
  62.         if fTime then self.fTime = getTickCount() + fTime; else self.fTime = false; end
  63.         -- create event handlers
  64.         if (not self.AlreadyHandlered) then
  65.             addEventHandler('onClientPreRender', root, CGlitch.update);
  66.             addEventHandler('onClientHUDRender', root, CGlitch.draw);
  67.             self.AlreadyHandlered = true;
  68.         end
  69.     end;
  70. };
  71.  
  72. --[[ example:
  73.     CGlitch:show(500); -- show 500 ms
  74. --]]
  75.  
  76. --[[ example:
  77.     CGlitch:show(false); -- show permanently
  78.    
  79.     addCommandHandler('disableglitch', function()
  80.         CGlitch:destroy();
  81.     end )
  82. --]]
  83.  
  84. -- CGlitch:show(500); -- show 500 ms
  85. -- setTimer(function() CGlitch:show(500); end, 400, 1) -- show 500 ms
  86. -- setTimer(function() CGlitch:show(500); end, 800, 1) -- show 500 ms
  87. -- setTimer(function() CGlitch:show(500); end, 1200, 1) -- show 500 ms
  88. -- setTimer(function() CGlitch:show(500); end, 800, 1) -- show 500 ms
  89.  
  90. local MarkerPos = { x = 0.0; y = 0.0; z = 2.0; };
  91. local theMarker = createMarker(MarkerPos.x, MarkerPos.y, MarkerPos.z, "cylinder", 1.5, 255, 255, 0, 170)
  92.  
  93. addEventHandler('onClientMarkerHit', theMarker, function()
  94.     CGlitch:show(500);
  95. end);
RAW Paste Data