Hallöchen Leute, ich bin zwar relativ neu in der Community was das Scripten angeht,
aber ich hab mal vor ein paar Wochen ein Boxscript geschrieben, und das wollte ich euch mal zeigen.
Die Gui ist das Element mit dem ich mich dafür allerdings am wenigsten beschäftigt habe, sie sieht auch dementsprechend aus.
Meinungen, Verbesserungsvorschläge usw erwünscht *thumbup*
Serverseitig
Spoiler anzeigen
-----------------------------------------------
------Made and copyright by (c)Sorginator------
-----------------------------------------------
--Variablen
local boxer
local timer1
local derSpieler
local KampfstyledesBoxers = 4
local istBereitsVoll = false
local variable = 305
local Lebensspeicher
local aufgegeben = false
--Timer
local timer = {}
--Events
addEvent("drehdichBoxer", true)
addEvent("boxenstarten1", true)
--Die Boxer werden erstellt und in den Interior geportet
function botErstellen()
boxer = createPed(81, 758.53125, -1.9306640625, 1001.5942382812, 315) --Boxer 1
setElementInterior(boxer, 5 )
setElementDimension(boxer, 1)
end
--Die Marker werden erstellt und in den Interior geportet wo nötig
boxMarkerRein = createMarker( -2455.36328125, -135.8212890625, 25.196598815918, "cylinder", 1, 255, 0, 0 )
boxMarkerRaus = createMarker( 772.2177734375, -4.703125, 999.7786987305, "cylinder", 1, 255, 0, 0 )
boxMarkerInnenStart = createMarker( 757.1298828125, 5.650390625, 999.7786987305, "cylinder", 1, 255, 0, 0 )
setElementInterior( boxMarkerInnenStart, 5)
setElementInterior( boxMarkerRaus, 5)
--Die Markerevents
addEventHandler("onMarkerHit", boxMarkerRein, function(player)
setElementInterior(player, 5, 772.2109375, -2.697265625, 1000.729675293 )
setElementRotation(player, 0, 0, 0 )
setCameraTarget(player)
end )
addEventHandler("onMarkerHit", boxMarkerRaus, function(player)
setElementInterior(player, 0, -2458.6494140625, -135.8388671875, 25.947332382202 )
setElementRotation(player, 0, 0, 90 )
setCameraTarget(player)
end )
addEventHandler("onMarkerHit", boxMarkerInnenStart, function(player)
triggerClientEvent(player, "guiBoxenPed", player )
end)
addEventHandler("boxenstarten1", getRootElement(), function(player)
if istBereitsVoll == false then
istBereitsVoll = true
botErstellen()
if getElementData(player, "boxlvl") == 2 then
setPedArmor(boxer, 50)
end
derSpieler = player
Lebensspeicher = getElementHealth(derSpieler)
setElementPosition(player, 763.0126953125, 2.3515625, 1001.5942382812 )
setElementRotation(player, 0, 0, 130 )
setElementDimension(player, 1)
timer[1] = setTimer( function() triggerClientEvent(derSpieler,"jih", derSpieler, player, boxer ) end, 500, 1 )
boxerLebtNochFrage()
spielerLebtNoch()
KampfstyledesBoxers = getPedFightingStyle(player)
setPedFightingStyle( player, 4 )
timer[2] = setTimer(function() dreschBotDresch(boxer, derSpieler) end, 500, 1)
addEventHandler("onPlayerQuit", derSpieler, function() timerkillen2() end )
aufgegeben = true
timer[8] = setTimer(function() aufgegeben = false end, 15000, 1)
else
triggerClientEvent(player, "guiBoxenPed", player )
outputChatBox("Es ist bereits ein Spieler im Ring", player, 200, 20, 20 )
end
end )
--Die Funktionen
function dreschBotDresch(bot, ziel) --triggert das Clientseitige Event das den Bot auf einen eindreschen lässt
triggerClientEvent(derSpieler, "dreschen", derSpieler, bot, ziel)
timer[3] = setTimer(dreschBotDresch, variable, 1, bot, ziel )
end
addEventHandler("drehdichBoxer", getRootElement(), function(bot)
if (derSpieler) and (bot) then
local x, y, z = getElementPosition(derSpieler)
local x1, y1, z1 = getElementPosition(bot)
local rot = math.atan2(y - y1, x - x1) * 180 / math.pi
rot = rot-90
setElementRotation(bot, 0, 0, rot)
end
end )
function boxerLebtNochFrage() --Diese Funktion prüft nach ob der Boxer noch lebt/der spieler gewonnen hat
if isPedDead(boxer) then
setTimer(function() destroyElement(boxer) end, 500, 1 )
timerkillen()
setPedFightingStyle(derSpieler, KampfstyledesBoxers)
setElementPosition( derSpieler, 760.6298828125, 5.6533203125, 1000.7082519531 )
setElementDimension(derSpieler, 0)
setElementFrozen(derSpieler, true)
timer[4] = setTimer(setElementFrozen, 2000, 1, derSpieler, false)
setElementHealth(derSpieler, Lebensspeicher)
if getElementData(derSpieler, "boxlvl") == 2 then
setElementData(derSpieler, "boxlvl", 0)
variable = 305
outputChatBox("Du hast den Boxkampf gewonnen, und erhältst ein Preisgeld von 300$", derSpieler, 0, 200, 10)
setElementData(derSpieler, "geld", getElementData(derSpieler, "geld") + 300)
givePlayerMoney(derSpieler, 300)
elseif getElementData(derSpieler, "boxlvl") == 1 then
setElementData(derSpieler, "boxlvl", 2)
variable = 155
outputChatBox("Gratuliere, du hast auch die zweite Runde gemeistert!",derSpieler, 20, 180, 50)
outputChatBox("Schlage den Boxer noch ein letztes mal, um den endgültigen Sieg zu erringen!",derSpieler, 20, 180, 50)
elseif getElementData(derSpieler, "boxlvl") == 0 then
setElementData(derSpieler, "boxlvl", 1)
variable = 230
outputChatBox("Gratuliere, du hast die erste Runde gemeistert!",derSpieler, 20, 150, 50)
outputChatBox("Gewinns du auch die anderen beiden Runden, so wartet eine Belohnung auf dich!",derSpieler, 20, 150, 50)
end
derSpieler = nil
else
timer[5] = setTimer(function() boxerLebtNochFrage() end, 500, 1 )
end
end
function spielerLebtNoch()
if getElementHealth(derSpieler) < 10 then
setTimer(function() destroyElement(boxer) end, 500, 1 )
timerkillen()
setElementPosition( derSpieler, 760.6298828125, 5.6533203125, 1000.7082519531 )
setElementDimension(derSpieler, 0)
setElementFrozen(derSpieler, true)
timer[6] = setTimer(setElementFrozen, 2000, 1, derSpieler, false)
setElementHealth(derSpieler, Lebensspeicher)
outputChatBox("Du hast diese Runde leider verloren!", derSpieler, 130, 10, 10 )
outputChatBox("Aber du kannst es jederzeit wieder versuchen.", derSpieler, 130, 10, 10 )
setElementData(derSpieler, "boxlvl", 0)
derSpieler = nil
else
timer[7] = setTimer(spielerLebtNoch, 300, 1 )
end
end
function timerkillen()
for i = 1, 8, 1 do
if isTimer(timer[i]) then
killTimer(timer[i])
end
end
istBereitsVoll = false
removeEventHandler("onPlayerQuit", derSpieler, function() timerkillen2() end )
end
function timerkillen2()
for i = 1, 8, 1 do
if isTimer(timer[i]) then
killTimer(timer[i])
end
end
istBereitsVoll = false
removeEventHandler("onPlayerQuit", derSpieler, function() timerkillen2() end )
end
addCommandHandler("spieler", function()
outputChatBox("Der spieler ist Momentan "..getPlayerName(derSpieler), source)
end )
addCommandHandler("aufgeben", function(player)
if player == derSpieler then
if aufgegeben == true then
outputChatBox("Du hast innerhalb der Anfangszeit aufgegeben,", derSpieler, 130, 10, 10 )
outputChatBox("daher wird dieser Kampf nicht als verloren gewertet.", derSpieler, 130, 10, 10 )
else
outputChatBox("Du hast aufgegeben, und daher den Kampf verloren!", derSpieler, 130, 10, 10 )
setElementData(derSpieler, "boxlvl", 0)
end
setTimer(function() destroyElement(boxer) end, 500, 1 )
timerkillen()
setElementPosition( derSpieler, 760.6298828125, 5.6533203125, 1000.7082519531 )
setElementFrozen(derSpieler, true)
setElementDimension(derSpieler, 0)
timer[6] = setTimer(setElementFrozen, 2000, 1, derSpieler, false)
setElementHealth(derSpieler, Lebensspeicher)
derSpieler = nil
end
end )
Alles anzeigen
Clientseitig:
Spoiler anzeigen
-----------------------------------------------
------Made and copyright by (c)Sorginator------
-----------------------------------------------
--Variablen
local box1
local box2
local entwaffnenTimer
local falsevar1 = 100
local falsevar2 = 300
local KampfstyledesBoxers = 4
--Events
addEvent("dreschen", true)
addEvent("jih", true)
addEvent("guiBoxenPed", true)
--EventHandler
addEventHandler("jih", getRootElement(), function() --Dieses Event gibt den Text zur jeweiligen Runde aus
if getElementData(getLocalPlayer(), "boxlvl") == 0 then
outputChatBox("Willkommen in der ersten Runde!", 20, 150, 50)
outputChatBox("Für die Gesamte Zeit des Kampfes gilt: ", 20, 150, 50)
outputChatBox("Du kannst den Ring innerhalb der ersten 15 Sekunden mit /aufgeben verlassen.", 20, 150, 50)
outputChatBox("Solltest du ihn danach verlassen, oder disconnecten, gilt der Kampf als verloren!", 20, 150, 50)
outputChatBox("Erledige den Boxer um die erste Runde für dich zu entscheiden!", 20, 150, 50)
--falsevar2 = 300
elseif getElementData(getLocalPlayer(), "boxlvl") == 1 then
outputChatBox("Willkommen in der zweiten Runde!", 20, 180, 50)
outputChatBox("Die Regeln dürften dir bekannt sein!", 20, 180, 50)
outputChatBox("Besiege den Boxer in dieser Runde, um zur letzten Runde Antreten zu können!", 20, 180, 50)
--falsevar2 = 225
elseif getElementData(getLocalPlayer(), "boxlvl") == 2 then
outputChatBox("Willkommen in der dritten und letzten Runde!", 20, 200, 50)
outputChatBox("Die Regeln dürften dir bekannt sein!", 20, 200, 50)
outputChatBox("Besiege den Boxer nun endgültig um den gesamten Kampf für dich entscheiden zu können!", 20, 200, 50)
--falsevar2 = 150
end
end )
addEventHandler("dreschen", getRootElement(), function(bot, ziel) --Dieses Event lässt den Boxer auf den Spieler einprügeln
if (bot) and (ziel) then
local x, y, z = getElementPosition(ziel)
local x1, y1, z1 = getElementPosition(bot)
local rot = math.atan2(y - y1, x - x1) * 180 / math.pi
rot = rot-90
setElementRotation(bot, 0, 0, rot)
box1 = setTimer(function()
if bot and not (bot == 1) then
setPedControlState(bot, "fire", false)
end
end, falsevar1, 1 )
box2 = setTimer(function()
if bot and not (bot == 1) then
setPedControlState(bot, "fire", true)
end
end, falsevar2, 1 )
end
end )
addEventHandler("guiBoxenPed", getRootElement(),
function()
local sWidth, sHeight = guiGetScreenSize()
local Width,Height = 234,140
local x = (sWidth/2) - (Width/2)
local y = (sHeight/2) - (Height/2)
local fenster = guiCreateWindow(x, y, Width, Height, "Willkommen beim Boxring", false)
guiWindowSetSizable(fenster, false)
local Label = guiCreateLabel(73, 24, 98, 15, "Hier kannst du", false, fenster)
guiSetFont(Label, "default-bold-small")
local Label2 = guiCreateLabel(45, 39, 156, 16, "gegen einen Boxer kämpfen", false, fenster)
guiSetFont(Label2, "default-bold-small")
local knopf = guiCreateButton(14, 100, 69, 30, "Kampf starten", false, fenster)
local knopf2 = guiCreateButton(154, 102, 70, 28, "Abbrechen", false, fenster)
guiSetVisible(fenster, true)
showCursor(true)
addEventHandler("onClientGUIClick", knopf, function()
triggerServerEvent("boxenstarten1", root, getLocalPlayer())
guiSetVisible(fenster, false)
showCursor(false)
end )
addEventHandler("onClientGUIClick", knopf2, function()
guiSetVisible(fenster, false)
showCursor(false)
end )
end
)
Alles anzeigen
Bilder:
Spoiler anzeigen
Spoiler anzeigen
Dieselben bilder für diejenigen bei denen picupload nicht funktioniert
Zum Ablauf:
Man muss 3 Runden in folge gegen den Boxer gewinnen, um den gesamten Boxkampf zu gewinnen, von Runde zu Runde wird der Boxer begrenzt schneller.
Sobald man in den Marker im Interior geht erscheint ein Fenster, in welchem man den Boxkampf gegen den Bot beginnen kann, oder abbrechen.
Sobald man auf "Boxkampf starten" klickt, wird man in den Ring und eine andere Dimension geportet, wo man gegen den Boxer die erste Runde kämpfen muss.
Nachdem man diese Runde gewonnen hat, kann man das noch 2 mal wiederholen, dann bekommt man Geld (300$) und eine Nachricht dass Man gewonnen hat.
Sollte man eine dieser 3 Runden verlieren, wird das "boxlevel" wieder auf 0 gesetzt, und man muss sich von vorne hocharbeiten.
Sobald ein Kampf gewonnen oder verloren ist, verschwindet der Boxer, und man wird zurückgeportet.