Bei dem Code wird die ausgewählte Funktion nur einmal aufgeführt.
Aber wie verbinde ich das dann mit einem Timer?, bzw. mache es so das es alle zufällig ausgewählten minuten ausgeführt wird?
Beiträge von Jan_Peters
-
-
Warum muss man dann in der Funktion nochmal nen Timer setzen?
Kannst du mir das eventuell erläutern? -
Hallo liebe MTA-SA Community,
gibt es eine Möglichkeit verschiedene functions zufällig ausführen zu lassen?
Zum Beispiel:function1
function2
function3
function4
usw...Alle x Minuten dir Funktion y ausführen.
Dabei steht x für eine zufalls generierte Zahl
und y steht für eine zufällig ausgewählte Funktion.Ich habe zwar eine Idee weis aber nicht wie ich diese umsetzen soll...
Idee
Eine Tabelle anlegen aus der dann zufällig eine Funktion ausgewählt wird und dann ausgeführt wird.Ich hoffe ich habe es einigermaßen gut erklärt wie ich es meine.
Ich hoffe auf hilfreiche Antworten.
-
@MasterM
Kann es sein das sich die Feuer nicht selbstständig ausbreiten?
Wenn nicht... kann man das irgendwie machen?Und danke nochmal für deinen Tipp
-
Hey @Prime-City.net,
Ich muss sagen dein UCP ist echt klasse.
Ich habe mir es gerade heruntergeladen und ein paar sachen in den Datein für mein MTA-Server geändert und es Funktioniert einwandfrei. -
Ich hab es jetzt erstmal so gemacht:
Lua
Alles anzeigenfunction fire2start() setTimer(function() createFireElement(1760.7789,-1900.6817,13.5638,2) createFireElement(1761.0013,-1895.1660,13.5612,2) createFireElement(1766.9141,-1897.8802,13.5640,2) createFireElement(1760.7789,-1900.6817,13.5638,2) createFireElement(1761.0013,-1895.1660,13.5612,2) createFireElement(1766.9141,-1897.8802,13.5640,2) createFireElement(1760.7789,-1900.6817,13.5638,2) createFireElement(1761.0013,-1895.1660,13.5612,2) createFireElement(1766.9141,-1897.8802,13.5640,2) createFireElement(1760.7789,-1900.6817,13.5638,2) createFireElement(1761.0013,-1895.1660,13.5612,2) createFireElement(1766.9141,-1897.8802,13.5640,2) outputServerLog("Feuer ausgebrochen: Bahnhof-LS") outputChatBox("=================================", getRootElement(), 255, 0, 0, true) outputChatBox("Es ist ein Feuer hinter dem Bahnhof", getRootElement(), 255, 0, 0, true) outputChatBox("in Los Santos ausgebrochen", getRootElement(), 255, 0, 0, true) outputChatBox("=================================", getRootElement(), 255, 0, 0, true) end, 900000, 0) end
-
@MasterM ist es möglich automatisch Feuer generieren zu lassen mit Orts Angabe in einer Nachricht ohne sich die ganzen Koordinaten aufzuschreiben und ein Timer zu erstellen?
-
@Flatliner_
Die Daten sind korrekt. Das habe ich mit verschiedenen MySQL-Accounts versucht. -
Ich habe folgendes Problem wenn ich auf den Server connecten möchte:
Code[2017-05-08 21:34:29] WARNING: Life/server/Classes/System/cDatabase.lua:97: Bad argument @ 'dbQuery' [Expected db-connection at argument 1, got nil] [2017-05-08 21:34:29] WARNING: Life/server/Classes/System/cDatabase.lua:98: Bad argument @ 'dbPoll' [Expected db-query at argument 1, got boolean] [2017-05-08 21:34:29] INFO: Error Excecuting Query: SELECT * FROM bans WHERE (Name=? OR Serial=? OR IP=?) AND expire_timestamp > ? ||nil| nil
Ich habe mit Hilfe des Wikis die Funktionen nachgeschaut und die dB Verbindung überprüft. Man kann von außen auf den DB Server verbinden.
Das aktuellste MYSQL Modul habe ich ebenfalls.und die cDatabase sieht so aus:
Lua: cDatabase.lua
Alles anzeigen--[[ @Class Database - Database management ---- Functions ------ CDatabase:excec(sQuery [, ...args]) Excecutes a Query without any result or callback. Use for one-way Querys. CDatabase:query(sQuery [, ...args]) Excecutes a SQL-Query. You will get a Table as result. ]] local using_localhost = true; CDatabase = inherit(cSingleton) function CDatabase:constructor(sType, sHost, sUser, sPass, sDBName, iPort) self.sType = sType self.sHost = sHost self.sUser = sUser self.sPass = sPass self.sDBName = sDBName self.iPort = iPort if (self.sType == "mysql") then self.hCon = dbConnect(self.sType, "dbname="..self.sDBName..";host="..self.sHost..";port="..iPort..";unix_socket=/run/mysqld/mysqld.sock;", self.sUser, self.sPass) if ((self.hCon ~= false) and (self.hCon)) then outputServerLog("Datenbankverbindung hergestellt!") self.tSaveAllDatas = bind (self.saveAllDatas, self) setTimer(self.tSaveAllDatas, 300000, 0) else outputServerLog("Datenbankverbindung konnte nicht hergestellt werden!") stopResource(getThisResource()) end else outputServerLog("Please add specific Database Connection!") stopResource(getThisResource()) end end function CDatabase:destructor() self.sType = nil self.sHost = nil self.sUser = nil self.sPass = nil self.sDBName = nil self.iPort = nil destroyElement(self.hCon) end function CDatabase:query(sQuery, ...) -- Anti Linux -- --[[local tables = { ["System"] = true, ["User"] = true, ["Radio_Streams"] = true, ["Userdata"] = true, ["Faction_Vehicle"] = true, ["Factions"] = true, ["Inventory"] = true, ["Gangareas"] = true, ["Item_Category"] = true, ["Item"] = true, ["achievement"] = true, ["achievement_category"] = true, ["achievement_reward"] = true, ["advertisments"] = true, ["bankvendors"] = true, ["bans"] = true, ["business"] = true, ["chains"] = true, ["drivein"] = true, ["faction_crashedvehiclespawns"] = true, ["faction_ped"] = true, ["faction_vehicle"] = true, ["gates"] = true, ["houses"] = true, ["house_interiors"] = true, ["house_keys"] = true, ["house_objects"] = true, ["infopickups"] = true, ["serversettings"] = true, ["itemshop"] = true, ["shop"] = true, ["item"] = true, ["item_Crafting"] = true, }]] -- Dieser Scheiss muss gemacht werden, da es Linux anscheinend NICHT EGAL IST OB DER TABELLENNAMEN GROSS ODER KLEIN GESCHRIEBEN IST! Was fuer ein SCHEISS --[[ for index, _ in pairs(tables) do sQuery = string.gsub(sQuery, index, string.lower(index)); end]] local qHandler = dbQuery(self.hCon,sQuery, ...) local result, iRows, sError = dbPoll ( qHandler, 90) if (result == nil) then result, iRows, sError = dbPoll ( qHandler, -1) if(result == nil) then dbFree(qHandler) outputDebugString("Max query runtime reached: "..sQuery) return false end end if (result == false) then outputDebugString("Error Excecuting Query: "..tostring(sQuery).." ||"..tostring(iRows).."| "..tostring(sError)) return false end return result, iRows, (sError or "-"); end function CDatabase:exec(sQuery, ...) return dbExec(self.hCon, sQuery, ...) end function CDatabase:queryAsync(sQuery, mCallBack, ...) local function doCallBack(qh, tag, score) local args = {dbPoll(qh, 0)} if(mCallBack) then mCallBack(unpack(args)); end end return dbQuery(doCallBack, self.hCon, sQuery, ...) end function CDatabase:savePlayer(thePlayer) thePlayer:save() end function CDatabase:saveAllPlayers() local players = getElementsByType("player") if (#players > 0) then for i,thePlayer in ipairs(players) do if (thePlayer.LoggedIn == true) then thePlayer:save() end end end end function CDatabase:saveAllUserVehicles() if (table.size(UserVehicles) > 0) then for i,theVehicle in pairs(UserVehicles) do theVehicle:save() end end end function CDatabase:saveAllDatas() self:saveAllPlayers() self:saveAllUserVehicles() end -- Dimensionspeicherung UsedDimensions = {} _setElementDimension = setElementDimension function setElementDimension(theElement, Dim) Dim = tonumber(Dim) local oldDim = getElementDimension(theElement) if (oldDim ~= 0) then if (type(UsedDimensions[oldDim]) == "table") then UsedDimensions[oldDim][theElement] = nil if (table.size(UsedDimensions[oldDim]) == 0) then UsedDimensions[oldDim] = nil end end end if not(Dim == 0) and (Dim < 10000) then if ( not (type(UsedDimensions[Dim]) == "table")) then UsedDimensions[Dim] = {} end UsedDimensions[Dim][theElement] = true end _setElementDimension(theElement, Dim) end function getEmptyDimension() for i=1, 9999, 1 do if not(type(UsedDimensions[i]) == "table") then return i end end return 9999 end setTimer( function() for k,v in pairs(UsedDimensions) do if table.size(v) == 0 then UsedDimensions[k] = nil end end end , 125000, 0)
in der cCore.lua hab ich das so eingetragen:Lua: cCore.lua
Alles anzeigenlocal iID = #cCore.tServerTypes + 1 cCore.tServerTypes[iID] = {} cCore.tServerTypes[iID]["fCheck"] = function () return true end cCore.tServerTypes[iID]["iDBID"] = 1 cCore.tServerTypes[iID]["strName"] = "Test-Server" cCore.tServerTypes[iID]["strType"] = "mysql" cCore.tServerTypes[iID]["strHost"] = "127.0.0.1" cCore.tServerTypes[iID]["strUser"] = "root" cCore.tServerTypes[iID]["strPass"] = "******" cCore.tServerTypes[iID]["strDB"] = "test-rl" cCore.tServerTypes[iID]["iPort"] = 3306 cCore.tServerTypes[iID]["bDebug"] = false
Danke schonmal im vorraus