Szerző Téma: Kocsi texturájának megváltoztatása  (Megtekintve 2958 alkalommal)

Kocsi texturájának megváltoztatása
« Dátum: 2015. november 06. - 19:35:45 »
0 Show voters
Helló! Azt szeretném kérdezni, hogy hogyan lehetne megcsinálni ami a videóban látszik? Esetleg tudnátok példát küldeni nekem? :S Előre is köszönöm
VIDEÓ:
 

Nem elérhető Xenius

  • 668
    • Profil megtekintése
Kocsi texturájának megváltoztatása
« Válasz #1 Dátum: 2015. november 07. - 09:10:18 »
0 Show voters

Kocsi texturájának megváltoztatása
« Válasz #2 Dátum: 2015. november 07. - 13:36:26 »
0 Show voters
Köszönöm

Dupla hozzászólás automatikusan összefûzve. ( 2015. november 07. - 17:31:28 )

Esetleg még megkérdezhetem azt, hogy azt hogyan lehetne megoldani, hogy csak annak a kocsinak váltsa át a textúráját amibe én ülök?
« Utoljára szerkesztve: 2015. november 07. - 17:31:28 írta asdpudingasd »

Nem elérhető Live

  • 507
    • Profil megtekintése
Kocsi texturájának megváltoztatása
« Válasz #3 Dátum: 2015. november 08. - 12:51:43 »
0 Show voters
Lekéred a kocsit amiben ülsz (https://wiki.multitheftauto.com/wiki/GetPedOccupiedVehicle), majd az engineApplyShaderToWorldTexture-nél extraként megadod azt a kocsit amiben ülsz.
Tehát:
 

local vehicle = getPedOccupiedVehicle(getLocalPlayer());
engineApplyShaderToWorldTexture(__SHADER__, __TEXTÚRA__, vehicle);

Kocsi texturájának megváltoztatása
« Válasz #4 Dátum: 2015. november 08. - 13:52:12 »
0 Show voters
Köszi :D még 1 utolsó kérdés. Ezt mindenki látja ha paranccsal változtatja meg vagy csak a kliens?
« Utoljára szerkesztve: 2015. november 08. - 14:32:32 írta asdpudingasd »

Nem elérhető Live

  • 507
    • Profil megtekintése
Kocsi texturájának megváltoztatása
« Válasz #5 Dátum: 2015. november 08. - 15:08:25 »
0 Show voters
Ha azt akarod, hogy mindenki lássa akkor szerver oldalról át kell triggerelned azt a kocsit amiben ülsz kliens oldalra (triggernél persze megadod, hogy mindenkinek fusson le), kliens oldalon pedig beállítod az átküldött kocsira a textúrát.

Kocsi texturájának megváltoztatása
« Válasz #6 Dátum: 2015. november 08. - 15:36:55 »
0 Show voters
Egyszerűbb megoldás: elementdatában tárolni a kocsi paintjob értékét, majd streaminkor vagy elementdatachangekor betölteni, streamoutkor pedig kitölteni.

Kocsi texturájának megváltoztatása
« Válasz #7 Dátum: 2015. november 08. - 15:54:57 »
0 Show voters
Nem nagyon értem, esetleg tudna valaki ebben segíteni?

Nem elérhető Live

  • 507
    • Profil megtekintése
Kocsi texturájának megváltoztatása
« Válasz #8 Dátum: 2015. november 08. - 16:35:39 »
+2 Show voters
Tessék, nálam működött lackos888 egyszerűbb megoldása alapján.
Szerver oldal:
 

addCommandHandler(\'apaintjob\',
function(player, cmd, id)
local vehicle = getPedOccupiedVehicle(player);
if (vehicle) then
   setElementData(vehicle, \'tuning.paintjob\', tonumber(id), true);
else
   outputChatbox(\'Nem vagy járműben!\');
end
end
)

 
Kliens oldal:
 

Paintjob = {};
Paintjob.File = \'Assets/Images/Paintjobs/\';
Paintjob.Format = \'.png\';
Paintjob.Textures = {
-- *vehiclegrunge256*
[562] = {
{\'*#emapelegybody128*\', \'elegy1body256\'},
{\'*#emapelegybody128*\', \'elegy2body256\'},
{\'*#emapelegybody128*\', \'elegy3body256\'}
},
[565] = {
{\'*#emapflash92body256*\', \'flash1body256\'},
{\'*#emapflash92body256*\', \'flash2body256\'}
},
[559] = {
{\'*emapjesterbody256*\', \'jester1body256\'},
{\'*emapjesterbody256*\', \'jester3body256\'},
{\'*emapjesterbody256*\', \'jester2body256\'}
},
[560] = {
{\'*emapsultanbody256*\', \'sultan1body256\'},
{\'*emapsultanbody256*\', \'sultan2body256\'},
{\'*emapsultanbody256*\', \'sultan3body256\'}
},
[558] = {
{\'*emapuranus92body256*\', \'uranus1body256\'},
{\'*emapuranus92body256*\', \'uranus2body256\'},
{\'*emapuranus92body256*\', \'uranus3body256\'}
}
};
Paintjob.VehicleList = {};
Paintjob.VehicleList.Shader = {};
Paintjob.VehicleList.Texture = {};
addEventHandler(\'onClientResourceStart\', resourceRoot,
function()
for k, v in ipairs(getElementsByType(\'vehicle\')) do
   local vehiclePaintjob = getElementData(v, \'tuning.paintjob\') or 0;
   if (vehiclePaintjob ~= 0) then
      setElementData(v, \'tuning.paintjob\', vehiclePaintjob, true);
      setVehiclePaintjobTexture(v, vehiclePaintjob);
   end
end
end
);
addEventHandler(\'onClientElementDataChange\', getRootElement(),
function(data, oldPaintjob)
if (data == \'tuning.paintjob\') then
   local newPaintjob = getElementData(source, \'tuning.paintjob\') or 0;
   local vehicleID = getElementModel(source);
   if (newPaintjob ~= 0) then
      if (Paintjob.Textures[vehicleID][newPaintjob]) then
         setVehiclePaintjobTexture(source, newPaintjob);
      else
         setElementData(source, \'tuning.paintjob\', oldPaintjob, true);
      end
   else
      engineRemoveShaderFromWorldTexture(Paintjob.VehicleList.Shader[source], Paintjob.Textures[vehicleID][oldPaintjob][1], source);
   end
end
end
)
addEventHandler(\'onClientElementStreamIn\', getRootElement(),
function()
if (getElementType(source) == \'vehicle\') then
   local paintjob = getElementData(source, \'tuning.paintjob\') or 0;
   if (paintjob ~= 0) then
      setVehiclePaintjobTexture(source, paintjob);
   end
end
end
);
addEventHandler(\'onClientElementStreamOut\', getRootElement(),
function()
if (getElementType(source) == \'vehicle\') then
   if (Paintjob.VehicleList.Shader[source] and Paintjob.VehicleList.Texture[source]) then
      local paintjob = getElementData(source, \'tuning.paintjob\') or 0;
      local vehicleID = getElementModel(source);
      if (paintjob ~= 0 and vehicleID) then
         engineRemoveShaderFromWorldTexture(Paintjob.VehicleList.Shader[source], Paintjob.Textures[vehicleID][paintjob][1], source);
      end
   end
end
end
);
function setVehiclePaintjobTexture(vehicle, paintjob)
if (vehicle and paintjob) then
local vehicleID = getElementModel(vehicle);
if (vehicleID and Paintjob.Textures[vehicleID][paintjob]) then
   Paintjob.VehicleList.Shader[vehicle] = dxCreateShader(\'Assets/Files/Paintjob.fx\', 0, 0, true, \'vehicle\');
   Paintjob.VehicleList.Texture[vehicle] = dxCreateTexture(Paintjob.File .. Paintjob.Textures[vehicleID][paintjob][2] .. Paintjob.Format);
   if (Paintjob.VehicleList.Shader[vehicle] and Paintjob.VehicleList.Texture[vehicle]) then
      dxSetShaderValue(Paintjob.VehicleList.Shader[vehicle], \'gTexture\', Paintjob.VehicleList.Texture[vehicle]);
      engineApplyShaderToWorldTexture(Paintjob.VehicleList.Shader[vehicle], Paintjob.Textures[vehicleID][paintjob][1], vehicle);
   end
end
end
end

 
E: Kiegészítettem még pár dologgal.
« Utoljára szerkesztve: 2015. november 08. - 17:21:46 írta Tréj »

Kocsi texturájának megváltoztatása
« Válasz #9 Dátum: 2015. november 08. - 17:58:47 »
0 Show voters
Köszönöm szépen :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal