Szerző Téma: [Leírás] DM alapozás II.  (Megtekintve 2610 alkalommal)

[Leírás] DM alapozás II.
« Dátum: 2013. január 26. - 17:49:38 »
0 Show voters
Elõzmények: http://sampforum.hu/index.php?topic=37544.0
 

Kliens script készítése
Szü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:
\"alap.jpg\"
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érgomb
Teljes 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>

 

Teljes Csomag letöltése:
 


 

SimplePortal 2.3.7 © 2008-2024, SimplePortal