Jump to content

Ayuda


Bloodz

Recommended Posts

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
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 by Guest
Link to comment

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

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

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
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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...