-
Posts
1,143 -
Joined
-
Last visited
-
Days Won
42
Everything posted by Patrick
-
The source of the events is the player that left the server or logout. So, if onPlayerQuit FUNCTION triggered by onPlayerLogout or onPlayerQuit EVENT, the source exists and it is the player's element. BUT if you call the onPlayerQuit FUNCTION with the timer, the source doesn't exists. Solutions: 1) Remove the setTimer. 2) Or modify the script, like this: function savePlayerAccount() -- rename the function, because it's less misleading local playeraccount = getPlayerAccount(source) if (playeraccount) then local x,y,z = getElementPosition (source) local HijackExp = getElementData (source, "hiExp" ) local health = getElementHealth (source) local armor = getPedArmor (source) local storeRobExp = getElementData (source, "srExp" ) local CriminalExp = getElementData (source, "CriminalExp" ) local married = getElementData (source, "married" ) local CopKillingExp = getElementData (source, "cExp" ) local walkstyle = getAccountData( source, "walks") local job = exports.CISbusiness:getPlayerJob(source) local w = getElementData(source, "w") local policearrests = getElementData(source, "policeArrests") local arrestpoints = getElementData(source, "arrestPoints") local arrestkills = getElementData(source, "arrestsKills") local sweepam = getElementData(source, "sweeps") local farmam = getElementData(source, "farmer_bails") local taxiam = getElementData(source, "taxi_dropoff") local limoam = getElementData(source, "limo_dropoff") local busam = getElementData(source, "busdriver_progress") local fisham = getElementData(source, "fish_sales") local wasteam = getElementData(source, "rubbish_collections") local pizzaam = getElementData(source, "delivered_pizzas") local ironam = getElementData(source, "iron") local ironlifeam = getElementData(source, "lifetimeiron") local turftakenam = getElementData(source, "turfTaken") local bagtakenam = getElementData(source, "bagtaken") local oil = getElementData(source, "oil") local EX = getElementData(source, "explosive") local EP = getElementData(source, "engineparts") local Ch = getElementData(source, "chemicals") local gold = getElementData(source, "gold") local pin = getElementData(source, "ATMPW") local r,g,b = getPlayerNametagColor(source) setAccountData (playeraccount, "pin", pin) setAccountData (playeraccount, "TagR", r) setAccountData (playeraccount, "TagG", g) setAccountData (playeraccount, "TagB", b) setAccountData (playeraccount, "chemicals", Ch) setAccountData (playeraccount, "gold", gold) setAccountData (playeraccount, "EX", EX) setAccountData (playeraccount, "engineparts", EP) setAccountData (playeraccount, "cis.job", job) setAccountData (playeraccount, "health", health) setAccountData (playeraccount, "armor", armor) setAccountData (playeraccount, "hiExp", HijackExp) setAccountData (playeraccount, "CriminalExp", CriminalExp) setAccountData (playeraccount, "policeArrests", policearrests) setAccountData (playeraccount, "arrestPoints", arrestpoints) setAccountData (playeraccount, "arrestsKills", arrestkills) setAccountData (playeraccount, "married", married) setAccountData (playeraccount, "cExp", CopKillingExp) setAccountData (playeraccount, "srExp", storeRobExp) setAccountData (playeraccount, "w", w) setAccountData (playeraccount, "sweeps", sweepam) setAccountData (playeraccount, "farmer_bails", farmam) setAccountData (playeraccount, "taxi_dropoff", taxiam) setAccountData (playeraccount, "limo_dropoff", limoam) setAccountData (playeraccount, "busdriver_progress", busam) setAccountData (playeraccount, "fish_sales", fisham) setAccountData (playeraccount, "rubbish_collections", wasteam) setAccountData (playeraccount, "delivered_pizzas", pizzaam) setAccountData (playeraccount, "iron", ironam) setAccountData (playeraccount, "lifetimeiron", ironlifeam) setAccountData (playeraccount, "bagtaken", bagtakenam) setAccountData (playeraccount, "turfTaken", turftakenam) setAccountData (playeraccount, "oil", oil) setAccountData (playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) setAccountData (playeraccount, "s.skin", tostring (getPedSkin (source))) setAccountData (playeraccount, "s.x", x) setAccountData (playeraccount, "s.y", y) setAccountData (playeraccount, "s.z", z) setAccountData (playeraccount, "s.int", getElementInterior (source)) setAccountData (playeraccount, "s.dim", getElementDimension (source)) setAccountData (playeraccount, "s.rot", getPedRotation (source)) setAccountData (playeraccount, "s.weap0", getPedWeapon ( source, 0 )) setAccountData (playeraccount, "s.weap1", getPedWeapon ( source, 1 )) setAccountData (playeraccount, "s.weap2", getPedWeapon ( source, 2 )) setAccountData (playeraccount, "s.ammo2", getPedTotalAmmo ( source, 2 )) setAccountData (playeraccount, "s.weap3", getPedWeapon ( source, 3 )) setAccountData (playeraccount, "s.ammo3", getPedTotalAmmo ( source, 3 )) setAccountData (playeraccount, "s.weap4", getPedWeapon ( source, 4 )) setAccountData (playeraccount, "s.ammo4", getPedTotalAmmo ( source, 4 )) setAccountData (playeraccount, "s.weap5", getPedWeapon ( source, 5 )) setAccountData (playeraccount, "s.ammo5", getPedTotalAmmo ( source, 5 )) setAccountData (playeraccount, "s.weap6", getPedWeapon ( source, 6 )) setAccountData (playeraccount, "s.ammo6", getPedTotalAmmo ( source, 6 )) setAccountData (playeraccount, "s.weap7", getPedWeapon ( source, 7 )) setAccountData (playeraccount, "s.ammo7", getPedTotalAmmo ( source, 7 )) setAccountData (playeraccount, "s.weap8", getPedWeapon ( source, 8 )) setAccountData (playeraccount, "s.ammo8", getPedTotalAmmo ( source, 8 )) setAccountData (playeraccount, "s.weap9", getPedWeapon ( source, 9 )) setAccountData (playeraccount, "s.ammo9", getPedTotalAmmo ( source, 9 )) setAccountData (playeraccount, "s.weap10", getPedWeapon ( source, 10 )) setAccountData (playeraccount, "s.weap11", getPedWeapon ( source, 11 )) setAccountData (playeraccount, "s.weap12", getPedWeapon ( source, 12 )) end end addEventHandler("onPlayerLogout", getRootElement(), savePlayerAccount) addEventHandler("onPlayerQuit", getRootElement(), savePlayerAccount) addEvent("savePlayerAccount", true) -- register a custom event what we can call with triggerEvent and pass the source addEventHandler("savePlayerAccount", getRootElement(), savePlayerAccount) setTimer(function() for _, player in ipairs(getElementsByType("player")) do -- loop all online players and call savePlayerAccount function triggerEvent("savePlayerAccount", player) end end, 3000, 0)
-
Something else is doing it.
-
Server side load before client side. You need to wait, until client side load. outputChatBox("Test") -- good addEvent("trig1", true) addEventHandler("trig1", root, function() outputChatBox("trig111") end) addEventHandler("onClientResourceStart", resourceRoot, function() triggerServerEvent("onClientSideStarted", resourceRoot) end) addEvent("onClientSideStarted", true) addEventHandler("onClientSideStarted", resourceRoot, function() triggerClientEvent(root, "trig1", root, var1) end)
-
How can I add unique element data for object from table?
Patrick replied to NoviceWithManyProblems's topic in Scripting
Maybe, but you need to cancel the event. -- SERVER local pickup = createPickup(...) setElementData(pickup, "unique_id", 1) addEventHandler("onPlayerPickupHit", pickup, function() cancelEvent() -- cancel the event ==> the player can't pickup this "pickup" :D outputChatBox(getElementData(source, "unique_id")) end) -
How can I add unique element data for object from table?
Patrick replied to NoviceWithManyProblems's topic in Scripting
Okay, i see ? In the for loop you define a global marker variable what you overwrite every time until the for loop is running. So, when the loop ends, the marker variable is still alive, whats the last marker's element. In the onMarkerHit event you print the unique_id of this element. You need to replace it to source. function func1() outputChatBox(tostring(getElementData(source, "unique_id"))) end addEventHandler("onMarkerHit", marker, func1, false) btw, nice drawing xd -
How can I add unique element data for object from table?
Patrick replied to NoviceWithManyProblems's topic in Scripting
I think the problem is similar to a previous one -
How can I add unique element data for object from table?
Patrick replied to NoviceWithManyProblems's topic in Scripting
This part of the code isn't wrong, more info is needed about the script. -
I don't quite understand what you want, but: -- CLIENT SIDE -- FIRST RESOURCE function applySetting() setSetting(slcSet, guiGetText(settingsEdit)) triggerEvent("onSettingsChange", localPlayer) -- Trigger the event, whats in a another client sided resource end addEventHandler("onClientGUIClick", apply, applySetting, false) addEventHandler("onClientGUIClick", apply, onApplying, false) -- (?) -- CLIENT SIDE (?) -- SECOND RESOURCE function set() if ( exports.settings:getSetting("setHaze") ) then setHaze( exports.settings:getSetting("setHaze") ) end end addEvent("onSettingsChange", true) -- register our custom event addEventHandler("onSettingsChange", root, set)
-
https://wiki.multitheftauto.com/wiki/AddEvent
-
You attached the onPlayerChat event to resourceRoot. A resource can't use chat (like a player ?). You need to change it to root, what contains players. (https://wiki.multitheftauto.com/wiki/Element_tree)
-
local var1 = "Bobby_Bob" local lengthofvar1 = #var1 -- returns: 9 local positionof_ = var1:find("_") -- returns: 6 local first_part = var1:sub(1, positionof_- 1) -- returns: Bobby local second_part = var1:sub(positionof_ + 1, lengthofvar1) -- returns: Bob
-
You can't modify it. But the client can for himself in settings.
-
The simplest way if you limit the command usage.
-
The maximum health of the vehicle is 1000, not 100, so: -- CLIENT SIDE function fix() local CarHP = getElementHealth(source) -- use as local variable, because you want to use this variable inside this function only if (getElementModel(source) == 451) then if (CarHP < 900) then setElementHealth(source, 1000) end end end addEventHandler("onClientVehicleDamage", root, fix)
-
It is possible because the event triggered on button press and release. Trigger event only on button release. addEventHandler("onClientClick", root, function(button, state) if button == "left" then -- if clicked with left button if state == "up" then -- if button released -- trigger end end end)
-
We can't say exactly because we can't see it. But, you can increase load distance with https://wiki.multitheftauto.com/wiki/EngineSetModelLODDistance Or try to disable occlusion with https://wiki.multitheftauto.com/wiki/SetOcclusionsEnabled
-
It's just Tiny Encryption Algorithm with base64 encode. You need a 'key' to decode it.