[MTA SA {LUA}]Neuen HUD Erstellen

09/09/2012 03:24 Z1337#1
Inhaltsverzeichnis :
1. Erklärung der Funktionen sowie Alle Funktionen die man eigentlich für einen Hud Brauch.
2. Das Herausfinden der Position auf dem Bildschirm wo der Hud Später Hin soll.
3. Hud Erstellen

Hallo Erstmal :D

Ich Schreibe mein Erstes Tut über MTA(Multi Theft Auto)
Ich Hoffe ihr Versteht das Meiste wenn nicht Könnt ihr Gerne Nachfragen ich werde Versuchen Alle Fragen zu Beantworten .

Voraussetzungen :
Ein Bischen Ahnung von MTA server
Englisches Verständnis

So Nun Beginne ich mal:

1. Erklärung der Funktionen sowie Alle Funktionen die man eigentlich für einen Hud Brauch
Diese Funktionen Nutzen wir In diesem Tut jede von Ihnen werde ich mit einem Link zu der MTA wiki verlinken damit man sich Schlauer machen kann wenn man Möchte :
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
h[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Erklärung :
getLocalPlayer = der Lokale Spieler wird Gefunden
dxCreateFont = eine Neue Schriftart wird in MTA eingefügt diese wird mit einer Datei der Resource hinzugefügt
getElementHealth = Das Leben wird Herausgefunden -Ein Wert wird ausgegeben 1-100
getPlayerMoney = Geld :D
guiGetScreenSize = Bildschirmauflösung wird Herausgefunden
getPedAmmoInClip = Die Munition in der Waffe die der Spieler Hält wenn er eine Waffe dabei hat wird Herausgefunden
getPedTotalAmmo = Die Totale Munition von einem Spieler wird Herausgefunden inkl aller Magazine
getPedWeapon = die Waffe des Spieler wird Herausgefunden
getWeaponNameFromID = die id die durch getPedWeapon ausgegeben wird wird zu einem Namen Gemacht
dxDrawText = ein Text wird auf den Bildschirm geschrieben
dxDrawImage = ein Bild wird auf den Bildschirm gemacht
dxDrawRectangle = Ein Rechteck wird auf den Bildschirm gemacht
getPedArmor = die Rüstung eines Spielers wird Herausgefunden -Ein Wert wird ausgegeben 1-100
showPlayerHudComponent = Die Hud Komponenten des Alten GTA huds kann man ein Und ausblenden


2. Das Herausfinden der Position auf dem Bildschirm wo der Hud Später Hin soll



Dazu Starten wir MTA, Klicken auf Host Game
Darauf achten das man den Guieditor in den Resourcen hat wenn nicht Sollte man ihn sich hier Runter laden :
[Only registered and activated users can see links. Click Here To Register...]
das Müsste dann so Etwa aussehen :
Nun Klicken wir auf Start danach Dauert es ein Bischen dann Finden wir uns Ingame wieder nun Loggen wir uns ein,
und geben das Kommand ein :
start guieditor in die Console in die man Durch F8 Kommt
dann Müsste es So aussehen in Etwa man Beachte die Unterstrichende Zeile
Nun Drücken wir Shift und G zusammen dann Sehen wir einen Mauszeiger mit dem Drücken wir jetzt Linksklick dann Öffnet sich ein Menü dort gehen wir auf Drawing
dann auf DX draw Rectangel nun Wählen wir die Position aus an Dem der Hud Später sein soll ich habe die Obere Rechte ecke Dafür Gewählt
Wenn wir Fertig sind Drücken wir Wieder Rechtsklick auf den Bildschirm dort Steht dann Print Code
dort Drücken wir drauf Dann Öffnet sich ein Fenster
Dies Kopieren wir und Fügen es in Ein Lua Dokument ein Nun Müssen wir noch machen das es bei Jeder auflösung gleich aussieht und an der Gleichen Stelle ist
dies Können wir durch Rechnen oder durch Probieren Rauskriegen. ich bin ein Fan der 2. Möglichkeit,


3. Hud Erstellen



So nun Fängt die Eigentliche Arbeit an :
Als Erstes finden wir den Lokalen Spieler raus und erstellen die neuen Fonts
rofl = getLocalPlayer ( )
nfont = dxCreateFont( "data/nFont.ttf", 20 )
ag = dxCreateFont( "data/agency.ttf", 22 )
uk = dxCreateFont( "data/UKNumberPlate.ttf", 22 )
Code:

vor dem = Zeichen kann man hinschreiben was man will ich nenne Meinen Lokalen Spieler Rofl
und die Fonts immer unterschiedlich

Funktions Anfang :

Code:
addEventHandler("onClientRender",getRootElement(),
function ()
Dies Heißt das bei Jedem mal wenn der client die Welt rendert diese Funktion ausgeführt wird

Nun Brauchen wir die Ganzen Variablen
für den Hud
die Finden wir so Raus :
Code:
local leben = getElementHealth ( rofl )
local money = getPlayerMoney(rofl)  
local sWidth,sHeight = guiGetScreenSize()	
clip = getPedAmmoInClip ( rofl )
ammo = getPedTotalAmmo ( rofl )
waffe = getPedWeapon ( rofl )
namewap = getWeaponNameFromID ( waffe )
local armor = getPedArmor ( rofl )
Die Einzelnden funktionen sind Oben Beschrieben


Nun zu den Positionen die wir Rausgefunden haben ich habe Etwas rumprobiert und schon die Passenden Kordinaten gesammelt
Code:
if leben >= 1 then
dxDrawRectangle ( sWidth/1.19, sHeight/11.8, 120, 21, tocolor(1,1,1) )
dxDrawRectangle ( sWidth/1.18, sHeight/11.5, leben, 16, tocolor(200,0,0) ) 


if armor >= 1 then

dxDrawRectangle ( sWidth/1.19, sHeight/8.8, 120, 22, tocolor(1,1,1) )
dxDrawRectangle ( sWidth/1.18, sHeight/8.5, armor, sHeight/55, tocolor(0,100,200) ) 
else
	end

else
	end
Allgemeine Beschreibung von dxDrawRectangle :
Code:
dxDrawRectangle ( x-Kordinate, y-Kordinate, Breite, Höhe, tocolor(R,G,B) )
Nun Fehlt nurnoch die Munition usw
die Finden wir mit getPedAmmoInClip usw raus wie oben Beschrieben

Code:
if ammo ~= 0 then --Wenn munition was Anderes als 0 Ist
dxDrawText( " :"..ammo-clip.."", sWidth/1.26, sHeight/4.4, 0, 0, tocolor(255,255,255), 0.7, Font ) --Die Anzahl der Munition wird auf den Bildschirm "gedrawt" in diesem Fall wird clip von Ammo subtrahiert
dxDrawText( " :"..clip.."", sWidth/1.12, sHeight/4.4, 0, 0, tocolor(255,255,255), 1, Font ) --Die Munition die in dem "clip" noch ist wird Gedrawt
dxDrawImage ( sWidth/1.31, sHeight/4.8, 50, 50, "anzeigen/Barrett 6.8.png", 0, 0, 0) --Bild einer Kugel wird Neben clip gedrawt
dxDrawImage ( sWidth/1.16, sHeight/4.8, 50, 50, "anzeigen/mag.png", 0, 0, 0) --Bild eines Magazins wird neben Ammo Gedrawt
else
				
end
Nun Noch den Alten hud Ausblenden
:
Code:
		showPlayerHudComponent ( "radar", true )
		showPlayerHudComponent ( "ammo", false )
		showPlayerHudComponent ( "armour", false )
		showPlayerHudComponent ( "health", false )
		showPlayerHudComponent ( "weapon", false )
		showPlayerHudComponent ( "clock", false )
		showPlayerHudComponent ( "money", false )
Am ende wenn wir Alles zusammen Gefügt haben sieht es so Aus
:
Code:
rofl = getLocalPlayer ( )

nfont = dxCreateFont( "data/nFont.ttf", 20 )   
ag = dxCreateFont( "data/agency.ttf", 22 )   
uk = dxCreateFont( "data/UKNumberPlate.ttf", 22 )   


addEventHandler( "onClientPreRender",getRootElement(),
   function( )

							local leben = getElementHealth ( rofl )
							local money = getPlayerMoney(rofl)  
							local sWidth,sHeight = guiGetScreenSize()	
							clip = getPedAmmoInClip ( rofl )
							ammo = getPedTotalAmmo ( rofl )
							waffe = getPedWeapon ( rofl )
							namewap = getWeaponNameFromID ( waffe )
							if ammo ~= 0 then

			--[[ammo-clip]] 
								if (ammo >= 1000) then
								dxDrawText( " :"..ammo-clip.."", sWidth/1.26, sHeight/4.4, 0, 0, tocolor(255,255,255), 0.7, Font )
								else
								munidraw = dxDrawText( " :"..ammo-clip.."", sWidth/1.26, sHeight/4.4, 0, 0, tocolor(255,255,255), 1, Font )
								end
			--[[clip]]	    	dxDrawText( " :"..clip.."", sWidth/1.12, sHeight/4.4, 0, 0, tocolor(255,255,255), 1, Font )
			--[[clipbild]]		dxDrawImage ( sWidth/1.31, sHeight/4.8, 50, 50, "anzeigen/Barrett 6.8.png", 0, 0, 0)
			--[[ammobild]]		dxDrawImage ( sWidth/1.16, sHeight/4.8, 50, 50, "anzeigen/mag.png", 0, 0, 0)
							else
				
							end
							

							
				if leben >= 1 then
					dxDrawRectangle ( sWidth/1.19, sHeight/11.8, 120, 21, tocolor(1,1,1) )
					dxDrawRectangle ( sWidth/1.18, sHeight/11.5, leben, 16, tocolor(200,0,0) ) 


					if armor >= 1 then

							dxDrawRectangle ( sWidth/1.19, sHeight/8.8, 120, 22, tocolor(1,1,1) )
							dxDrawRectangle ( sWidth/1.18, sHeight/8.5, armor, sHeight/55, tocolor(0,100,200) ) 
					else
						end

				else
					end						
						
					end		

)
		showPlayerHudComponent ( "radar", true )
		showPlayerHudComponent ( "ammo", false )
		showPlayerHudComponent ( "armour", false )
		showPlayerHudComponent ( "health", false )
		showPlayerHudComponent ( "weapon", false )
		showPlayerHudComponent ( "clock", false )
		showPlayerHudComponent ( "money", false )
Ich habe Es Noch etwas Modifziert um die Übersicht zu behalten
und Etwas Schöner zu machen wenn Weiterhin Fragen bestehen
Bitte in den Kommentaren Fragen,
Die Bilder Müsst ihr Entweder Selbst suchen oder wenn Genügend nachfrage besteht Uploade ich sie Nochmals.


MfG
09/17/2012 13:34 RomanasDead#2
thx das tutorial ist mal voll gut gemacht, wäre nett wenn du die png files mit hoch läds.

heiße in mta sa.de DeathNero^^