Kliens script készítéseSzükséges fájlok letöltése:
http://www.solidfiles.com/d/19272c8a7c/ Elõször is hozzunk létre egy
script_c.lua nevû fájlt ami a kliens scriptünk lesz, benne a fegyverek, hangok, skinek módosításával.
Majd a letöltött fájlt csomagoljuk ki az \"DMNEV\" mappánkba.
Így kell kinéznie a mapparendszerünknek:
Nos akkor nyissuk meg a
script_c.lua fájlt.
Elõször is adjunk meg a hangok elérési útvonalát:
local JediKard = { \"sounds/a.mp3\", \"sounds/b.mp3\", \"sounds/c.mp3\" }
local FegyverHang = {\"sounds/sound_000.wav\",\"sounds/sound_001.wav\"}
JediKard --A jedi kard (katana) hangjait fogja tartalmazni
FegyverHang --Fegyver hangokat fogja tartalmazni (M4 és AK47)
Készítsük el a skinek cseréjének a funkcióját.
function DMCsere()
dm1_skin_txd = engineLoadTXD(\"skins/sw1.txd\")
engineImportTXD(dm1_skin_txd, 287)
dm1_skin_dff = engineLoadDFF(\"skins/sw1.dff\")
engineReplaceModel(dm1_skin_dff , 287)
dm1_wep_txd = engineLoadTXD(\"skins/m4.txd\")
engineImportTXD(dm1_wep_txd, 356)
dm1_wep_dff = engineLoadDFF(\"skins/m4.dff\")
engineReplaceModel(dm1_wep_dff , 356)
dm2_skin_txd = engineLoadTXD(\"skins/army.txd\")
engineImportTXD(dm2_skin_txd, 286)
dm2_skin_dff = engineLoadDFF(\"skins/army.dff\")
engineReplaceModel(dm2_skin_dff , 286)
dm2_wep_txd = engineLoadTXD(\"skins/ak47.txd\")
engineImportTXD(dm2_wep_txd, 355)
dm2_wep_dff = engineLoadDFF(\"skins/ak47.dff\")
engineReplaceModel(dm2_wep_dff , 355)
dm_wep_txd = engineLoadTXD(\"skins/katana.txd\")
engineImportTXD(dm_wep_txd, 339)
dm_wep_dff = engineLoadDFF(\"skins/katana.dff\")
engineReplaceModel(dm_wep_dff , 339)
end
addEventHandler (\"onClientResourceStart\", root, DMCsere)
function DMCsere() --Funkció elevezése és létrehozása
dm1_skin_txd = engineLoadTXD(\"skins/sw1.txd\") --A
\"dm1_skin_txd\" tárolja el a letöltött skinünk TXD fájlját (
\"skins/sw1.txd\")
engineImportTXD(dm1_skin_txd, 287) --A
287 ID TXD fájlját cseréljük le a letöltött fájlunkéra (
\"skins/sw1.txd\")
Ezután a DFF rész következik
dm1_skin_dff = engineLoadDFF(\"skins/sw1.dff\") --A
\"dm1_skin_dff\" tárolja el a letöltött skinünk DFF fájlját (
\"skins/sw1.dff\")
engineReplaceModel(dm1_skin_dff , 287) --A
287 ID DFF fájlját cseréljük le a letöltött fájlunkéra (
\"skins/sw1.dff\")
Ugyanígy folytatjuk a többinél is, mint azt láthatjátok a kódban
end --Lezárjuk a funkciónkat
addEventHandler (\"onClientResourceStart\", root, DMCsere) Megadjuk, hogy a resource indulásakor (\"
onClientResourceStart\") elinduljon a
\"DMCsere\" funkciónk
Készítsük el az egyedi hangokat a fegyverhez
local function DMLoves(weaponID)
local lovesX, lovesY, lovesZ = getPedWeaponMuzzlePosition(source)
if weaponID == 31 then
local sound = playSound3D(FegyverHang[1], lovesX, lovesY, lovesZ, false)
setSoundMaxDistance(sound, 10)
SetSoundVolume(sound,1.0)
elseif weaponID == 30 then
local sound = playSound3D(FegyverHang[2], lovesX, lovesY, lovesZ, false)
setSoundMaxDistance(sound, 10)
SetSoundVolume(sound,1.0)
end
end
addEventHandler(\"onClientPlayerWeaponFire\", root, DMLoves)
local function DMLoves(weaponID) --Készítünk egy lokális funkciót, amelynek a paramétere a
\"weaponID\" lesz, mivel az egyik paramétere a
\"onClientPlayerWeaponFire\" eseménynek, ez az esemény akkor hívódik meg ha a játékos tüzel egy fegyverrel
local lovesX, lovesY, lovesZ = getPedWeaponMuzzlePosition(source) --Lekérjük a pozíciót ahol a lövés történt
if weaponID == 31 then --Ha a játékos a 31 ID fegyverrel lõ (M4)
local sound = playSound3D(FegyverHang[1], lovesX, lovesY, lovesZ, false) --Lejátszuk a hangot (
FegyverHang[1] amit fentebb adtunk meg) a lekért pozíción, és az ismétlést kikapcsoljuk (
false)
setSoundMaxDistance(sound, 10) --Beállítjuk a hang lejátszásának a hatósugarát (10)
SetSoundVolume(sound,1.0) Felvesszük a hangerõt
Most az AK47 hangját cseréljük le
elseif weaponID == 30 then --Ha a játékos a 30 ID fegyverrel lõ (AK47)
local sound = playSound3D(FegyverHang[2], lovesX, lovesY, lovesZ, false) --Lejátszuk a
FegyverHang[2]-t
setSoundMaxDistance(sound, 10) --Beállítjuk a hang lejátszásának a hatósugarát (10)
SetSoundVolume(sound,1.0) --Felvesszük a hangerõt
end --Lezárjuk az if állításunkat (
if weaponID == 31 then)
end --Lezárjuk a funkciónkat is
addEventHandler(\"onClientPlayerWeaponFire\", root, DMLoves) --Elõhíjvuk a
\"DMLoves\" funkciónkat amikor a játékos lõ (\"
onClientPlayerWeaponFire\")
Ha ezzel megvagyunk mát a Jedi kardunknak kell adni valami vagány hangot, kezdjük is el
function JedikardF()
local hangX, hangY, hangZ = getPedWeaponMuzzlePosition(localPlayer)
local weaponID = getPedWeapon (localPlayer)
if ( weaponID == 8 and isControlEnabled ( \"fire\" ) ) then
local sound = playSound3D(JediKard[ math.random(1,#JediKard)],hangX,hangY,hangZ,false)
setSoundMaxDistance(sound,5)
end
end
bindKey ( \"fire\", \"down\", JedikardF)
function JedikardF() --Létrehozzuk a funkciót
local hangX, hangY, hangZ = getPedWeaponMuzzlePosition(localPlayer) --Lekérjük a pozíciót ahol az ütés történt
local weaponID = getPedWeapon (localPlayer) --Lekérjük a játékos fegyverét
if ( weaponID == 8 and isControlEnabled ( \"fire\" ) ) then Ellenõrizzük a játékos kezében lévõ fegyvert, hogy Katana-e és hogy a \"Tûz\" gomb engedélyezve van-e
local sound = playSound3D(JediKard[ math.random(1,#JediKard)],hangX,hangY,hangZ,false) --Lejátszük a fentebb megadott
\"JediKard[]\" hangok közül az egyiket a koordinátán és az ismétlést kikapcsoljuk
setSoundMaxDistance(sound,5) --Beállítjuk a hang hatótávolságát
end --Lezárjuk az if állításunkat (\"
if ( weaponID == 8 and isControlEnabled ( \"fire\" ) ) then\")
end --Lezárjuk a funkciónkat is
bindKey ( \"fire\", \"down\", JedikardF) --Elõhívjuk a \"
JedikardF\" funkciót amikor a játékos leüti a \"
Tûz\" gombot, alap esetben a
Bal egérgombTeljes script_c.lua fájlunk tartalma: local JediKard = { \"sounds/a.mp3\", \"sounds/b.mp3\", \"sounds/c.mp3\" }
local FegyverHang = {\"sounds/sound_000.wav\",\"sounds/sound_001.wav\"}
function DMCsere()
dm1_skin_txd = engineLoadTXD(\"skins/sw1.txd\")
engineImportTXD(dm1_skin_txd, 287)
dm1_skin_dff = engineLoadDFF(\"skins/sw1.dff\")
engineReplaceModel(dm1_skin_dff , 287)
dm1_wep_txd = engineLoadTXD(\"skins/m4.txd\")
engineImportTXD(dm1_wep_txd, 356)
dm1_wep_dff = engineLoadDFF(\"skins/m4.dff\")
engineReplaceModel(dm1_wep_dff , 356)
dm2_skin_txd = engineLoadTXD(\"skins/army.txd\")
engineImportTXD(dm2_skin_txd, 286)
dm2_skin_dff = engineLoadDFF(\"skins/army.dff\")
engineReplaceModel(dm2_skin_dff , 286)
dm2_wep_txd = engineLoadTXD(\"skins/ak47.txd\")
engineImportTXD(dm2_wep_txd, 355)
dm2_wep_dff = engineLoadDFF(\"skins/ak47.dff\")
engineReplaceModel(dm2_wep_dff , 355)
dm_wep_txd = engineLoadTXD(\"skins/katana.txd\")
engineImportTXD(dm_wep_txd, 339)
dm_wep_dff = engineLoadDFF(\"skins/katana.dff\")
engineReplaceModel(dm_wep_dff , 339)
end
addEventHandler (\"onClientResourceStart\", root, DMCsere)
local function DMLoves(weaponID)
local muzzleX, muzzleY, muzzleZ = getPedWeaponMuzzlePosition(source)
if weaponID == 31 then
local sound = playSound3D(FegyverHang[1], muzzleX, muzzleY, muzzleZ, false)
setSoundMaxDistance(sound, 10)
SetSoundVolume(sound,1.0)
elseif weaponID == 30 then
local sound = playSound3D(FegyverHang[2], muzzleX, muzzleY, muzzleZ, false)
setSoundMaxDistance(sound, 10)
SetSoundVolume(sound,1.0)
end
end
addEventHandler(\"onClientPlayerWeaponFire\", root, DMLoves)
function jedi()
local muzzleX, muzzleY, muzzleZ = getPedWeaponMuzzlePosition(localPlayer)
local weaponID = getPedWeapon (localPlayer)
if ( weaponID == 8 and isControlEnabled ( \"fire\" ) ) then
local sound = playSound3D ( JediKard[ math.random( 1,#JediKard ) ], muzzleX, muzzleY, muzzleZ, false )
setSoundMaxDistance ( sound, 40 )
end
end
bindKey ( \"fire\", \"down\", jedi )
Már csak a
meta.xml fájlunk módosítása maradt hátra. Bele kell írnunk a fájlokat amelyeket használunk, és a kliens scriptünket is.
<meta>
<info author=\"mr_rich\" type=\"gamemode\" name=\"Tutorial DM\"/>
<script src=\"script_s.lua\" type=\"server\"></script>
<script src=\"script_c.lua\" type=\"client\"></script>
<file src=\"skins/ak47.dff\" download=\"true\"></file>
<file src=\"skins/ak47.txd\" download=\"true\"></file>
<file src=\"skins/m4.dff\" download=\"true\"></file>
<file src=\"skins/m4.txd\" download=\"true\"></file>
<file src=\"skins/army.dff\" download=\"true\"></file>
<file src=\"skins/army.txd\" download=\"true\"></file>
<file src=\"skins/sw1.dff\" download=\"true\"></file>
<file src=\"skins/sw1.txd\" download=\"true\"></file>
<file src=\"skins/katana.txd\" download=\"true\"></file>
<file src=\"skins/katana.dff\" download=\"true\"></file>
<file src=\"sounds/sound_000.wav\" download=\"true\"></file>
<file src=\"sounds/sound_001.wav\" download=\"true\"></file>
<file src=\"sounds/a.mp3\" download=\"true\"></file>
<file src=\"sounds/b.mp3\" download=\"true\"></file>
<file src=\"sounds/c.mp3\" download=\"true\"></file>
</meta>