Bloodz Posted July 9, 2011 Share Posted July 9, 2011 Bueno, a tan solo dos dias de mi ultimo post (gracias soliiD! ) me surge otro pequeño problemilla, el caso es que estoy creeando el oficio de camionero (trucker) y me he quedado bloqueado namás empezar. Mientras intentaba crear una mision de camionero que se activa por medio un comando /activeMision, y qué consiste en pasar por los 15 marcadores "checkpoint" que hay a lo largo del mapa, con uno de los cuatro camiones de camionero, me ha surgido un pequeño error, el caso es que para hacerlo como yo quiero, necesito hacer varias funciones en una misma función. Lo que me surge es que en este code: local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) local truckerVH1 = createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) local truckerVH1 = createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) local truckerVH1 = createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) local truckerVH1 = createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function activeMision (commandName, hitElement, matchingDimension) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) if getElementType ( hitElement ) == "truckerVH1" then outputChatBox ( "1 to 15 complete deliveries", thePlayer, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end addEventHandler ( "onMarkerHit", wP1, activeMision ) end addCommandHandler ("activeMision", activeMision ) Siempre me pone, al tocar el marcador con el vehiculo como ahí se índica: Bad argument @ "getElementType" , en la consola tras golpear el marcador "wP1" con el vehiculo "truckerVH1". Y lo que yo trataba de hacer, era que cuando el vehiculo "truckerVH1" chocase con el marcador "wP1" el blip, y el marcador, se borrasen, y saliera el mensaje de outputChatBox..."1 to 15 compl...." y a continuación, seguiría creando otro marcador y otro blip en X, X, X, coordenadas, y ese sería la siguente entrega (2nda), pero con ese error lo unico que me hace, es: Al chocar el vehiculo "truckerVH1" con el marcador "wP1" se me repite el mensaje del principio, de "Complete all 15 deliv...." cuando solo debería salír al poner en el chatbox el comando /activeMision, luego también los marcadores y el blip no desaparecen, se quedan ahí... No creo que me haiga explicado muy bien... como he podido, si lograis entenderlo y podeis ofrecerme alguna ayuda, como siempre, os lo agradecería MIL... Link to comment
Gothem Posted July 9, 2011 Share Posted July 9, 2011 (edited) local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) local truckerVH1 = createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) local truckerVH1 = createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) local truckerVH1 = createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) local truckerVH1 = createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function activeMision (thePlayer, commandName, hitElement, matchingDimension) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) if getElementType ( hitElement ) == "truckerVH1" then outputChatBox ( "1 to 15 complete deliveries", thePlayer, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end --addEventHandler ( "onMarkerHit", wP1, activeMision ) Como va a tener de elemento base algo que no existe? end addCommandHandler ("activeMision", activeMision ) Ahi lo arregle un poco.... PD: al parecer hay hartas incoherencias en la función activeMision del código.... podrías explicar bien la función? Edited July 9, 2011 by Guest Link to comment
diegofkda Posted July 9, 2011 Share Posted July 9, 2011 el problema está en que los parametros correctos serían activeMision (source, commandName) y en el otro sería addEventHandler ( "onMarkerHit", wP1, activeMision2 ) El script tendría que quedar así: local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) local truckerVH1 = createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) local truckerVH1 = createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) local truckerVH1 = createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) local truckerVH1 = createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) 23. function activeMision (source, commandName) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) addEventHandler ( "onMarkerHit", wP1, function ( hitElement, matchingDimension ) if getElementType ( hitElement ) == "truckerVH1" then outputChatBox ( "1 to 15 complete deliveries", thePlayer, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end end ) end addCommandHandler ("activeMision", activeMision ) O bién: local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) local truckerVH1 = createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) local truckerVH1 = createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) local truckerVH1 = createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) local truckerVH1 = createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) 23. function activeMision (source, commandName) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) addEventHandler ( "onMarkerHit", wP1, activeMision2 ) end addCommandHandler ("activeMision", activeMision ) function activeMision2(hitElement, matchingDimension) if getElementType ( hitElement ) == "truckerVH1" then driver = getVehicleOccupant ( hitElement ) outputChatBox ( "1 to 15 complete deliveries", driver, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end end EDIT: Gothem, claro que si se le tiene que poner comillas. Link to comment
Gothem Posted July 9, 2011 Share Posted July 9, 2011 Ahí cuando lo volví a ver me di cuenta. No lo entendía muy bien a la primera. Pero para que usar string cuando puedes obtener el vehículo del jugador y ver si es igual al de la variable? Link to comment
diegofkda Posted July 9, 2011 Share Posted July 9, 2011 Claro, pero cuando estas comparando si se nesesitaría comillas, debes aclarar que en este caso podrías no usar comillas. Link to comment
Gothem Posted July 9, 2011 Share Posted July 9, 2011 si entiendo eso. Pero a lo que voy es que por que usar getElementType si el tipo definido de los camiones es de 'vehicle' y no como se expresa en el código, ya que están creados vía script. Y ademas se redefine la variable como 4 veces... Por ejemplo el codigo podria haber quedado asi si los vehiculos se hubieran querido crear via script. local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) setElementID( createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) , "truckerVH1" ) setElementID( createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) , "truckerVH1" ) setElementID( createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) , "truckerVH1" ) setElementID( createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) , "truckerVH1" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) 23. function activeMision (source, commandName) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) addEventHandler ( "onMarkerHit", wP1, function ( hitElement, matchingDimension ) if getElementID ( hitElement ) == "truckerVH1" then outputChatBox ( "1 to 15 complete deliveries", thePlayer, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end end ) end addCommandHandler ("activeMision", activeMision ) Link to comment
Bloodz Posted July 9, 2011 Author Share Posted July 9, 2011 He probado con todo lo que me habeis dicho, pero sigue habiendo ese " error ", aunque se ha corregido lo de qué al entrar en el marcador con el vehiculo me salía el mensaje principal de nuevo, pero el marcador sigue ahí, el blip, y sigue sin salir el mensaje que corresponde . outputChatBox "( "1 to 15 complete deliveries"..." Aún así os doy las gracias, no cerreis aún el post porfavor, voy a probar algunos recursos y si sigue sin furular edito el mensaje, de lo contrario ya os aviso y os pongo el script para que podais cerrar. Link to comment
Bloodz Posted July 9, 2011 Author Share Posted July 9, 2011 local truckerTM = createTeam ( "Trucker", 255, 255, 0 ) local truckerMK = createMarker ( 797.6, -617.05, 15.4, "cylinder", 2, 255, 255, 0, 255, getRootElement() ) local truckerVH1 = createVehicle ( 455, 828.2, -607, 16,9, 0, 0, 0, "TRC001" ) local truckerVH1 = createVehicle ( 455, 821, -607, 16,9, 0, 0, 0, "TRC002" ) local truckerVH1 = createVehicle ( 455, 792, -607, 16,9, 0, 0, 0, "TRC003" ) local truckerVH1 = createVehicle ( 455, 785, -607, 16,9, 0, 0, 0, "TRC004" ) local truckerBP = createBlip ( 797, -617, 16.8, 51, 2, 255, 255, 0, 255, 0, 99999.0, getRootElement() ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setElementModel (thePlayer, 206 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit) function MarkerHit( thePlayer, hitElement, matchingDimension ) giveWeapon ( thePlayer, 7 ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function MarkerHit( thePlayer, hitElement, matchingDimension ) setPlayerTeam ( thePlayer, truckerTM ) end addEventHandler ( "onMarkerHit", truckerMK, MarkerHit ) function activeMision (thePlayer, commandName, hitElement, matchingDimension) outputChatBox ( "Complete all 15 deliveries, and receive 25.000$", thePlayer, 255, 255, 0 ) local wP1 = createMarker ( 1659, 131, 30, "checkpoint", 2, 255, 255, 0, 255, thePlayer ) local bP1 = createBlip ( 1659, 131, 30, 53, 2, 255, 255, 0, 255, 0, 99999.0, thePlayer ) if getElementType ( hitElement ) == "truckerVH1" then outputChatBox ( "1 to 15 complete deliveries", thePlayer, 255, 255, 0 ) destroyElement (wP1) destroyElement (bP1) end --addEventHandler ( "onMarkerHit", wP1, activeMision ) Como va a tener de elemento base algo que no existe? end addCommandHandler ("activeMision", activeMision ) Ahi lo arregle un poco.... PD: al parecer hay hartas incoherencias en la función activeMision del código.... podrías explicar bien la función? Mi intencion con esa función, era crear un comando con el cual activar una de las misiones de ese oficio, y en esa funcion solo esta definido de momento lo que iba a ser el comando para activar (/activeMision) y luego vendría a ser la parte de los chekpoints como en las carreras, que tienes que ir con el coche pasando por los chekpoints, igual, y en este caso al entrar al marcador, el vehiculo ( el vehiculo "truckerVH1" no player, ni cualquier otro vehiculo ) se supone que como está definido ahí, debería ( repito, almenos esa era mi intención ) ocurrir que al entrar el vehiculo en el marcador , apareceria un mensaje en el chat box diciendo que ya has completado la primera entrega de 15 ( 1/15) y el blip de ese chekpoint , y el propio marcador, desaparecerían, y entonces apareciería otro blip y otro chekpoint en otro lugar, que representaría la segunda entrega y asín succesivamente hasta 15 entregas. Link to comment
Recommended Posts