Hallo community,
Ich habe mir gestern zum üben das Reloaded Reallife auf meinen testserver geklatscht. Da dieses script noch sehr viele Bugs hat, hab ich
es mir zur Aufgabe gemacht, diese zu beheben. Ich bin sehr weit gekommen, bis ich am arrest System hängen geblieben bin.
Situation: Ich fahre mit dem gefangenen ( 2 wtds ) als Polizist in Duty auf das Feld, auf dem man /carrest machen muss (hab dieses Feld mit dem Coordinaten
des Scripts verglichen, war an der richtigen stelle). Dann gebe ich den befehl /carrest ein, dann steht da: nutze /carrest [name] [zeit] [bail] .
Ich gebe /carrest mit dem namen, der zeit und bail = 0 (also keine kaution) ein, jedoch passiert ingame garnichts, in der Console hingegen kommen mir folgende Errors.
[2014-09-14 09:54:06] ERROR: reloaded2/fraktionen/sfpd/arrest.lua:105: bad argument #1 to 'floor' (number expected, got nil)
[2014-09-14 09:54:25] ERROR: reloaded2/fraktionen/sfpd/arrest.lua:106: bad argument #1 to 'floor' (number expected, got nil)
[2014-09-14 09:54:39] ERROR: reloaded2/fraktionen/sfpd/arrest.lua:19: bad argument #1 to 'floor' (number expected, got nil)
[2014-09-14 09:54:48] ERROR: reloaded2/fraktionen/sfpd/arrest.lua:105: bad argument #1 to 'floor' (number expected, got nil)
[2014-09-14 09:55:01] ERROR: reloaded2/fraktionen/sfpd/arrest.lua:20: bad argument #1 to 'floor' (number expected, got nil)
Lua Quelltext:
lvJailArea = createColCuboid ( 2278.166015625, 2424.8486328125, 3.0, 6.799804685, 10.05, 4.08400478363 )
function isInLVJailArea ( player )
local x1, y1, z1 = getElementPosition ( player )
if getDistanceBetweenPoints3D ( x1, y1, z1, 198.08735656738, 174.32916259766, 1002.672668457 ) < 10 then
return true
else
return false
end
end
function arrest_func ( player, cmd, target, time, strafe, bail )
if target ~= nil then
local target = getPlayerFromName(target)
local x, y, z = getElementPosition ( player )
local tx, ty, tz = getElementPosition ( target )
local strafe = math.abs ( math.floor ( tonumber ( strafe ) ) )
local bail = math.abs ( math.floor ( tonumber ( bail ) ) )
if isOnDuty ( player ) or isArmy(player) then
local bool = isInLVJailArea ( player )
if isInLVJailArea ( target ) and bool then
bool = true
else
bool = false
end
if ( x < 229 and x > 213 and y < 116 and y > 107 and z < 1002 and z > 950 ) or bool then
if ( tx < 229 and tx > 213 and ty < 116 and ty > 107 and tz < 1002 and tz > 950 ) or bool then
if vioGetElementData ( target, "wanteds" ) >= 1 then
local fmoney = tonumber ( MySQL_GetString("fraktionen", "DepotGeld", "ID LIKE '1'") )
if tonumber(strafe) > vioGetElementData ( target, "money" ) then
takePlayerMoney ( target, vioGetElementData ( target, "money" ) )
triggerClientEvent ( target, "HudEinblendenMoney", getRootElement() )
vioSetElementData ( target, "money", 0 )
MySQL_SetString("fraktionen", "DepotGeld", fmoney + strafe, "ID LIKE '1'")
else
vioSetElementData ( target, "money", tonumber(vioGetElementData ( target, "money" )) - tonumber(strafe) )
takePlayerMoney ( target, tonumber(strafe) )
MySQL_SetString("fraktionen", "DepotGeld", fmoney + strafe, "ID LIKE '1'")
triggerClientEvent ( target, "HudEinblendenMoney", getRootElement() )
end
vioSetElementData ( target, "jailtime", tonumber(time) )
vioSetElementData ( player, "boni", vioGetElementData ( player, "boni" ) + vioGetElementData ( target, "wanteds" ) * wantedprice )
if bail == nil then bail = 0 end
if tonumber(bail) < 1 then
vioSetElementData ( target, "bail", 0 )
outputChatBox ( "Du hast den Spieler "..getPlayerName(target).." ohne Kaution fuer "..strafe.." $ und "..time.." Minuten eingesperrt!", player, 0, 125, 0 )
outputChatBox ( "Du wurden von Polizist "..getPlayerName(player).." ohne Kaution fuer "..strafe.." $ und "..time.." Minuten eingesperrt!", target, 0, 125, 0 )
else
vioSetElementData ( target, "bail", tonumber(bail) )
outputChatBox ( "Du wurdest von Polizist "..getPlayerName(player).." mit "..bail.." $ Kaution fuer "..strafe.." $ und "..time.." Minuten eingesperrt!", target, 0, 125, 0 )
outputChatBox ( "Du hast den Spieler "..getPlayerName(target).." mit "..bail.." $ Kaution fuer "..strafe.." $ und "..time.." Minuten eingesperrt!", player, 0, 125, 0 )
end
outputChatBox ( "Officer "..getPlayerName(player).." hat "..getPlayerName(target).." eingesperrt!", getRootElement(), 0, 0, 150 )
takeAllWeapons ( target )
toggleAllControls ( target, true, true, true )
vioSetElementData ( target, "wanteds", 0 )
setPlayerWantedLevel ( target, 0 )
toggleControl ( target, "fire", false )
if bool then
local x, y, z, r, int = getRandomCellKoordinates ( false )
setElementPosition ( target, x, y, z )
setElementInterior ( target, 10 )
setPedRotation ( target, r )
setElementData ( target, "jail", "lv" )
else
setElementData ( target, "jail", "sf" )
local rnd = math.floor(math.random ( 1, 3 ))
if rnd == 1 then
setElementPosition ( target, 215.61360168457, 110.61786651611, 998.66485595703 )
elseif rnd == 2 then
setElementPosition ( target, 219.60717773438, 110.39416503906, 998.66485595703 )
elseif rnd == 3 then
setElementPosition ( target, 223.60034179688, 110.17053222656, 998.66485595703 )
else
setElementPosition ( target, 227.34938049316, 110.19967651367, 998.66485595703 )
end
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Buerger hat\nkeine Verbrechen\nbegangen!", 5000, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nZiel ist\nbei den Zellen!", 5000, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu bist nicht\nbei den Zellen!", 5000, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Du bist\nkein Polizist im\nDienst!", 5000, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Gebrauch:\n/arrest [Name]\n[Zeit] [Bail\n 0=Nein]", 5000, 125, 0, 0 )
end
end
addCommandHandler ( "arrest", arrest_func )
function carrest_func ( player, cmd, target, time, strafe, bail )
if target ~= nil then
local target = getPlayerFromName(target)
local x, y, z = getElementPosition ( player )
local tx, ty, tz = getElementPosition ( target )
local strafe = math.abs ( math.floor ( tonumber ( strafe ) ) )
local bail = math.abs ( math.floor ( tonumber ( bail ) ) )
if isOnDuty ( player ) or isArmy(player) then
local bool = ( isElementWithinColShape ( player, lvJailArea ) and isElementWithinColShape ( target, lvJailArea ) )
if getDistanceBetweenPoints3D ( -1590, 716, 0, x, y, 0 ) < 9 or getDistanceBetweenPoints3D ( -1680.318359375, 705.716796875, 30.830875396729, x, y, 30.830875396729 ) < 9 or bool then
if getDistanceBetweenPoints3D ( -1590, 716, 0, tx, ty, 0 ) < 9 or bool or getDistanceBetweenPoints3D ( -1680.318359375, 705.716796875, 30.830875396729, tx, ty, 30.830875396729 ) < 9 then
if vioGetElementData ( target, "wanteds" ) >= 1 then
removePedFromVehicle ( target )
local fmoney = tonumber ( MySQL_GetString("fraktionen", "DepotGeld", "ID LIKE '1'") )
if tonumber(strafe) > vioGetElementData ( target, "money" ) then
takePlayerMoney ( target, vioGetElementData ( target, "money" ) )
triggerClientEvent ( target, "HudEinblendenMoney", getRootElement() )
vioSetElementData ( target, "money", 0 )
MySQL_SetString("fraktionen", "DepotGeld", fmoney + strafe, "ID LIKE '1'")
else
vioSetElementData ( target, "money", tonumber(vioGetElementData ( target, "money" )) - tonumber(strafe) )
takePlayerMoney ( target, tonumber(strafe) )
triggerClientEvent ( target, "HudEinblendenMoney", getRootElement() )
MySQL_SetString("fraktionen", "DepotGeld", fmoney + strafe, "ID LIKE '1'")
end
vioSetElementData ( target, "jailtime", tonumber(time) )
vioSetElementData ( player, "boni", vioGetElementData ( player, "boni" ) + vioGetElementData ( target, "wanteds" ) * wantedprice )
if bail == nil then bail = 0 end
if tonumber(bail) < 1 then
vioSetElementData ( target, "bail", 0 )
outputChatBox ( "Du hast den Spieler "..getPlayerName(target).." ohne Kaution mit "..strafe.." $ bestraft und "..time.." Minuten eingesperrt!", player, 0, 125, 0 )
outputChatBox ( "Du wurdest von Officer "..getPlayerName(player).." ohne Kaution mit "..strafe.." $ bestraft und "..time.." Minuten eingesperrt!", target, 0, 125, 0 )
else
vioSetElementData ( target, "bail", tonumber(bail) )
outputChatBox ( "Du wurdest von Officer "..getPlayerName(player).." mit einer Kaution von "..bail.." $ und "..time.." Minuten eingesperrt,", target, 0, 125, 0 )
outputChatBox ( "zudem musst du eine Strafe in Höhe von "..strafe.." $ bezahlen!", target, 0, 125, 0)
outputChatBox ( "Du hast den Spieler "..getPlayerName(target).." mit einer Kaution von "..bail.." $ und "..time.." Minuten eingesperrt,", player, 0, 125, 0 )
outputChatBox ( "zudem hast du eine Strafe in Höhe von "..strafe.." $ vergeben.!", player, 0, 125, 0 )
end
outputChatBox ( "Officer "..getPlayerName(player).." hat "..getPlayerName(target).." eingesperrt!", getRootElement(), 0, 0, 150 )
takeAllWeapons ( target )
toggleAllControls ( target, true, true, true )
vioSetElementData ( target, "wanteds", 0 )
setPlayerWantedLevel ( target, 0 )
toggleControl ( target, "fire", false )
if not bool then
local rnd = math.floor(math.random ( 1, 4 ))
if rnd == 1 then
setElementPosition ( target, 215.61360168457, 110.61786651611, 998.66485595703 )
elseif rnd == 2 then
setElementPosition ( target, 219.60717773438, 110.39416503906, 998.66485595703 )
elseif rnd == 3 then
setElementPosition ( target, 223.60034179688, 110.17053222656, 998.66485595703 )
else
setElementPosition ( target, 227.34938049316, 110.19967651367, 998.66485595703 )
end
setElementInterior ( target, 10 )
else
local x, y, z, r, int = getRandomCellKoordinates ( false )
setElementInterior ( target, int )
setElementPosition ( target, x, y, z )
setPedRotation ( target, r )
end
setElementDimension ( target, 0 )
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Der Buerger hat\nkeine Verbrechen\nbegangen!", 5000, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\n\nZiel ist\nbeim Carport!", 7500, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "\n\nDu bist nicht\nam Carport!", 7500, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Du bist\nkein Polizist im\nDienst!", 7500, 125, 0, 0 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Gebrauch:\n/carrest [Name]\n[Zeit] [Bail\n 0=Nein]", 7500, 125, 0, 0 )
end
end
addCommandHandler ( "carrest", carrest_func )
function bail_func ( player )
if vioGetElementData ( player, "jailtime" ) == 0 then
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu bist nicht\nim Gefaengnis!", 5000, 125, 0, 0 )
else
if vioGetElementData ( player, "bail" ) == 0 then
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu hast\nkeine Kaution!", 5000, 125, 0, 0 )
else
local fmoney = tonumber ( MySQL_GetString("fraktionen", "DepotGeld", "ID LIKE '1'") )
if tonumber(vioGetElementData ( player, "bail" )) <= vioGetElementData ( player, "money" ) then
local bail = vioGetElementData ( player, "bail" )
MySQL_SetString("fraktionen", "DepotGeld", fmoney + bail, "ID LIKE '1'")
vioSetElementData ( player, "money", vioGetElementData ( player, "money" ) - bail )
vioSetElementData ( player, "bail", 0 )
vioSetElementData ( player, "jailtime", 0 )
toggleControl ( target, "fire", true )
outputChatBox ("Du bist wieder Frei! Benimm dich in Zukunft besser!", player, 0, 125, 0 )
setElementInterior ( player, 0 )
if getElementData ( player, "jail" ) == "lv" then
setElementPosition ( player, 2340.1567382813, 2451.8452148438, 14.62340164 )
setPedRotation ( player, 180 )
else
setElementPosition ( player, -1605.8544921875, 712.8017578125, 13.840023040771 )
end
else
triggerClientEvent ( player, "infobox_start", getRootElement(), "Du hast\nzu wenig Geld!\nKosten:\n"..tonumber(bail).."", 5000, 125, 0, 0 )
end
end
end
end
addCommandHandler ("bail", bail_func )
function jailtime_func ( player )
local jailtime = vioGetElementData ( player, "jailtime" )
if jailtime == 0 then
triggerClientEvent ( player, "infobox_start", getRootElement(), "\nDu bist nicht\nim Gefaengnis!", 5000, 125, 0, 0 )
else
outputChatBox ("Du bist noch "..jailtime.." Minuten im Gefaengnis!", player, 0, 125, 0 )
end
end
addCommandHandler ("jailtime", jailtime_func )
Alles anzeigen
Wie ich verstehe, liegt der fehler an dem math.floor, ich verstehe aber nicht was da falsch ist. Ich hoffe ihr könnt mir weiterhelfen.
Mit freudlichen Grüßen,
Steven