@Hardcore4435 Ich gehe davon aus, dass du Clientseitig den Marker erstellt hast (Weshalb der Fehler auftritt)
Ballerst ne Abfrage rein, ob das hitElement der localPlayer ist, sollte dein Problem gelöst sein.
Siehe hier:
@Hardcore4435 Ich gehe davon aus, dass du Clientseitig den Marker erstellt hast (Weshalb der Fehler auftritt)
Ballerst ne Abfrage rein, ob das hitElement der localPlayer ist, sollte dein Problem gelöst sein.
Siehe hier:
@Hardcore4435 Muss nicht zwangsweise sein, bin nur davon ausgegangen. Wenn du mir den Code von dir zeigen könntest, könnte ich dir eine direkte Fehlerbehebung anbieten.
anke für die antwort. Die marker sind serverseitig erstellt worden und die abfrage mache ich mit onMarkerHit. Ich werde jetzt einfach die marker clientseitig erstellen. Die marker müssen sowieso nicht serverseitig sein
Durch lernst aber dann nicht aus dem Fehler. Ich denke mal das dein Fehler beim Triggern liegt weil du es bestimmt für jeden Spieler triggerst statt dem Spieler der im Marker ist.
triggerClientEvent ( [ table/element sendTo = getRootElement(), ] string name, element sourceElement [, arguments... ] )
Hierbei ist muss bei sendTo der Spieler angegeben werden der hinein läuft, du hast dort bestimmt getRootElement() wodurch es bei jedem Spieler getriggert wird.SourceElement ist das Object was du beim Client als Source nutzen willst hierbei meistens auch wieder der Spieler.
Mit freundlichen Grüßen
Strider
Oh ja ich hatte getRootElement ups egal ist jetzt clientseitig
Habt direkt aber noch eine neue Frage und zwar ist es möglich das auto indem der player einsteigt schon abzufragen ohne das er im auto sitzt? Weil ich mache ein car lock system sprich beim einsteigen öffnet sich ein fenster wo man das password von dem auto eingeben muss. Das password setze ich via setElementData auf das auto die abfragen ist dann halt mit getElementData aber ich kann während dem einsteigen noch kein getElementData nutzen da getPedOccupiedVehicle nil ist. Vielleicht habt ihr ja ideen wie man das komplett anders machen kann
Das bringt wenig kannst dir ja mal im chat ne nachricht ausgeben lassen bei dem event. dann wirst du sehen das die nachricht erst dann kommt wenn du im auto sitzt. Ich brauchte das sobald man quasi the hand an der tür hat. Hab das ganze jetzt anders gemacht mit isElementInRange
@Hardcore4435 wenn du die Funktion richtig nutzt funktioniert sie auch.
Hier ein Beispiel, was einem beim "f" drücken im Chat ausgibt, wer welches Fahrzeug betreten wollte und cancelt dann das event und lässt einen nicht einsteigen.
function output(enteringPlayer)
name = getPlayerName(enteringPlayer)
auto = getVehicleName(source)
outputChatBox(""..name.." hat versucht das Fahrzeug "..auto.." zu betreten!",enteringPlayer,255,0,0)
cancelEvent()
end
addEventHandler("onVehicleStartEnter",getRootElement(),output)
Das ganze sieht dann so aus:
https://streamable.com/icahb
addEventHandler( "onVehicleStartEnter", function( player )
local veh = getPedOccupiedVehicle(player)
local passwort = getElementData(veh,"pw")
triggerClientEvent(player,"window",player,veh, passwort)
end )
addEvent("checkPassword", true)
function checkPassword(eingegebenesPw,veh,passwort)
If eingegebensPw ~= passwort then
setVehicleLocked( veh, true )
else
outputChatBox("Falsches Passwort!", player, 255,0,0)
end
addEventHandler("checkPassword",getRootElement(),checkPassword)
Alles anzeigen
?
Servus hab nochmal ne frage. Hab hier ne kleine Funktion die mir den Inhalt von nem Table ausgibt. Möchte diese Funktion jetzt triggern und den wert der returned wird damit abfragen
Hier die funktion:
function getVehiclesFromUser()
for key,value in pairs(fahrzeugeUser) do
outputChatBox(tostring(value))
return tostring(value)
end
end
addEvent("getVehiclesFromUser",true)
addEventHandler("getVehiclesFromUser",root,getVehiclesFromUser)
trigger es so:
function respawnDeadPlayer(ammo, attacker, weapon, bodypart)
fadeCamera(source, false, 7)
setTimer(respawn, 5000, 1,source)
givePlayerXP ( attacker, math.random(350,450) )
end
addEventHandler("onPlayerWasted", getRootElement(), respawnDeadPlayer)
function respawn(p)
spawnPlayer(p, 1173.197265625, -1323.5419921875, 15.395062446594)
fadeCamera(p, true, 5)
end
Alles anzeigen
Warum respawned der spieler nicht? Debugscript sagt nichts. Er faded quasi die ganze zeit nur raus sobald der timer abgelaufen ist portet sich die kamera nochmal an die spieler leiche und geht dann wieder weiter nach oben und es passiert einfach NICHTS. Verstehe das nicht
setz bei der respawn funktion
setCameraTarget( p, p )
ein
Servus leute hab hier eine tabelle aus dieser entnehme ich per math.random eine zahl von 1 - 3. Dadurch bekomme ich dann den map namen. jede map hat einen eigenen table mit spawn positionen. Ich möchte nun in zeile 26 den mapnamen den ich per mathrandom bekommen habe benutzen um die jeweilige Tabelle anzusteuern. Allerdings funktionert das so nicht bzw ich weiß nichtmal ob das überhaupt so funktionieren kann.
Ich bedanke mich für jegliche Hilfe!
crossMaps = {
[1]="derby1",
[2]="atmosfera",
[3]="blacksabbath",
[4]="crossly",
[5]="crossmey",
[6]="crossmonde",
[7]="crosss",
[8]="crosst",
[9]="crossxl",
[10]="crossxl-b",
[11]="crosszl",
[12]="crosszy",
[13]="dynamium",
[14]="maracaibo",
[15]="maracaibozm",
}
function createStartPositionCross ()
dasTeam = getPlayerTeam(getLocalPlayer())
local players2 = getPlayersInTeam ( dasTeam )
local rn = math.random(1,3)
local map = crossMaps[rn]
outputChatBox("map: "..map)
for playerKey2, playerValue2 in ipairs ( players2 ) do
local x,y,z,rx,ry,rz = map[playerKey2][1],map[playerKey2][2],map[playerKey2][3],map[playerKey2][4],map[playerKey2][5],map[playerKey2][6]
outputChatBox("Number "..playerKey2.. " and team "..getTeamName(dasTeam) )
outputChatBox(x.. "|"..y.."|"..z.."|"..rx.."|"..ry.."|"..rz)
triggerServerEvent("createVehicle",playerValue2,playerValue2,x,y,z,rx,ry,rz)
playerlist(getPlayerName(playerValue2),playerKey2)
end
end
Alles anzeigen
Ich sehe hier ein kleines Problem mit der benennung deiner Variablen
local map = crossMaps[rn] -- map ist ein Text
outputChatBox("map: "..map)
for playerKey2, playerValue2 in ipairs ( players2 ) do
local x,y,z,rx,ry,rz = map[playerKey2][1],map[playerKey2][2],map[playerKey2][3],map[playerKey2][4],map[playerKey2][5],map[playerKey2][6] -- du behandelst einen Text wie eine Tabelle
Weiss nicht wie deine Tabelle "map" aussieht, also schätze ich jetzt einfach mal
crossMaps = {
[1]="derby1",
[2]="atmosfera",
[3]="blacksabbath",
[4]="crossly",
[5]="crossmey",
[6]="crossmonde",
[7]="crosss",
[8]="crosst",
[9]="crossxl",
[10]="crossxl-b",
[11]="crosszl",
[12]="crosszy",
[13]="dynamium",
[14]="maracaibo",
[15]="maracaibozm",
}
map = {
["derby1"] = {
[1] = 2153,
[2] = 124,
[3] = 4521,
[4] = 2453,
[5] = 532,
[6] = 2153,
},
["atmosfera"] = {
[1] = 2153,
[2] = 124,
[3] = 4521,
[4] = 2453,
[5] = 532,
[6] = 2153,
},
--usw usw
}
function createStartPositionCross ()
dasTeam = getPlayerTeam(getLocalPlayer())
local players2 = getPlayersInTeam ( dasTeam )
local rn = math.random(1,3)
local dieMap = crossMaps[rn]
outputChatBox("map: "..map)
for playerKey2, playerValue2 in ipairs ( players2 ) do
-- Du moechtest glaube ich in die zufallsgenerierte Karte
local x,y,z,rx,ry,rz = map[dieMap][1],map[dieMap][2],map[dieMap][3],map[dieMap][4],map[dieMap][5],map[dieMap][6]
outputChatBox("Number "..playerKey2.. " and team "..getTeamName(dasTeam) )
outputChatBox(x.. "|"..y.."|"..z.."|"..rx.."|"..ry.."|"..rz)
triggerServerEvent("createVehicle",playerValue2,x,y,z,rx,ry,rz)
playerlist(getPlayerName(playerValue2),playerKey2)
end
end
Alles anzeigen
Habs jedoch nicht getestet
Moin
Ich habe dir hier mal ein Beispiel zusammengestellt, um das Zusammenspiel von Indizes und Values ein wenig zu zeigen.
Prinzipiell kannst du deine Tables beliebig verschachteln, du musst dir einfach über die Zugriffe bewusst sein.
Leider wusste ich nicht ganz genau, was du meinst, daher habe ich ein paar Sachen meinerseits angenommen.
Dein Code schien mir ein wenig merkwürdig, da er scheinbar Client-Side ausgeführt wird. Ich kann dir an dieser Stelle nur abraten.
Spawnpoints etc ist eigentlich Sache des Servers, da das ja an alle Clients gehen soll. Es kann schon Situationen geben, wo man Client-Side Sachen umsetzt, jedoch konnte ich das dem Code nicht entnehmen.
Hier wäre der Code zum anschauen. Wenn du etwas nicht verstehst - einfach fragen.
crossMaps = {
{
mapname = "derby1",
spawnpoints = {
{x = 11.11, y = 21.22, z = 31.33, rx = 41.44, ry = 51.55, rz = 61.66},
{x = 12.11, y = 22.22, z = 32.33, rx = 42.44, ry = 52.55, rz = 62.66},
{x = 13.11, y = 23.22, z = 33.33, rx = 43.44, ry = 53.55, rz = 63.66},
{x = 14.11, y = 24.22, z = 34.33, rx = 44.44, ry = 54.55, rz = 64.66},
}
}, -- Dies ist nun eine Map mit einem Map Name derby1 und 4 spawnpoints
-- ...
}
function createStartPositionCross ()
local randomIndex = math.random( 1, #crossMaps ) -- Wähle einen zufälligen Index für eine Map
local map = crossMaps[randomIndex]
print( "Map: " .. map.mapname )
for spawnKey, spawnVal in ipairs ( map.spawnpoints ) do
print( spawnVal.x .. "|" .. spawnVal.y .. "|" .. spawnVal.z .. "|" .. spawnVal.rx .. "|" .. spawnVal.ry .. "|" .. spawnVal.rz )
end
end
Alles anzeigen
Derzeitiger Output:
Ich danke euch die methode von Audifire funktioniert wunderbar
Moin,
Hätte da ein kleines problem
Ich habe eine Tabelle die ich gerne Sortieren möchte.
Die Tabelle wird wie folgt gefüllt:
local playerData = {}
function fillTable()
-- Diverses zeug
table.insert(playerData, {name=p.Name, value=p.Count})
end
Jetzt würde ich gerne die Tabelle "playerData" so sortieren lassen das der Höchste Count an erster stelle steht.
Habe bereits mit table.sort und verschiedenen Funktionen versucht die Tabelle zu sortieren bekomme aber jedes mal die Meldung: table expected, got nil
Hier ein teil der Versuche (denke mehr beispiele wird es nicht brauchen da am ende alles mehr oder weniger aufs gleiche rauskommt)
Stelle ich mich einfach nur doof dran?!
Hoffe mir kann da jemand helfen
MfG
Alles anzeigenMoin,
Hätte da ein kleines problem
Ich habe eine Tabelle die ich gerne Sortieren möchte.
Die Tabelle wird wie folgt gefüllt:Lualocal playerData = {} function fillTable() -- Diverses zeug table.insert(playerData, {name=p.Name, value=p.Count}) end
Jetzt würde ich gerne die Tabelle "playerData" so sortieren lassen das der Höchste Count an erster stelle steht.
Habe bereits mit table.sort und verschiedenen Funktionen versucht die Tabelle zu sortieren bekomme aber jedes mal die Meldung: table expected, got nil
Hallo Paddy,
in deinem obigen Versuch hast du versehentlich das Feld "value" des Arrays "playerData" zu sortieren versucht. Natürlich hat playerData kein Feld namens "value". Denn stattdessen hat ja jeder Eintrag von playerData ein Feld names "value".
Versuch mal folgenden Code:
local playerData = {};
function fill()
playerData[1] = { name="Fred", value=4 };
playerData[2] = { name="Gerd", value=1 };
playerData[3] = { name="Meow", value=3 };
playerData[4] = { name="Timo", value=-99 };
end
fill();
table.sort(playerData, function(a,b) return a.value < b.value end);
for m,n in ipairs(playerData) do
outputConsole("Name: " .. n.name .. ", Value: " .. n.value);
end
Alles anzeigen
Liebe Grüße,
Martin
Danke dir da hätt ich selbst drauf kommen können
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!