Jump to content

Quiero aprender a scriptear


Recommended Posts

Necesito ayuda para comenzar a scriptear, tengo pocos conocimientos, ayer aprendi algunas cosas

crear una funcion, crear variables, eventos handler, crear un auto, crear un mensaje cuando entre un jugador, un mensaje por comando

Yo sé que hay que darle poco a poco, ya que programar es como jugar ser un dios, estoy dandole con todo a aprender sobre el script en MTA. Espero que alguien me ayude, me den animos ya que cuando sea grande. Nunca olvidare esos pequeños pasos que di ya la gente que me ayudo.

he visto funciones que llevan esto:

function name ( command, etc, etc ) y me confunde un poco

if

local

etc...

Espero conseguir esa gran ayuda :)

Link to comment

También soy algo nuevo en ésto pero tengo experiencia por otros lenguajes anteriores de programación así que, te ayudaré en lo que sepa.

Lo del function name (command, etc, etc), esos son los valores que le puedes dar a dicho comando. Me explico, digamos que quieres hacer un comando con dos funciones, /dardinero [jugador] [cantidad]. Ahora bien, deberías poner algo como ésto:

  
--Cuando se pone local es una variable dentro de la función (hasta donde tengo entendido) y si no tiene local es una función que puede funcionar dentro y fuera de la función. (Repito, es algo que no tengo muy claro). 
  
function dareldinero (thePlayer, amount, otherPlayer) 
local otro = getElementByID (otherPlayer) --Coge al otro jugador por ID 
local cantidad = tonumber(amount) --Amount es cantidad en inglés y como ves, es lo que pusimos arriba en la función. 
if otro then --Si ese 'otro' existe, hace... 
   givePlayerMoney (otro, cantidad) --Le da al jugador del cual pusiste la ID, la cantidad que asignaste de dinero. 
   outputChatBox ("Le has dado "..cantidad.." a "..otro, thePlayer) --Ésto envía un mensaje al que puso al comando diciendo satisfactoriamente le diste el dinero 
   outputChatBox ("Has recibido "..cantidad.." de "..thePlayer, otro) --Ésto enviaría un mensaje al jugador al que le diste el dinero, diciendo que tú le diste el dinero y la cantidad que le diste. 
else --si ese 'otro', no existe, hace 
outputChatBox ("El jugador introducido es inválido", thePlayer, 255, 0, 0) --Envía un mensaje en rojo (El rojo es el formato RGB, 255, 0, 0) al jugador que puso el comando, diciendo que el jugador no está conectado y por lo cual, no puede enviar dicho dinero. 
     end 
end 
addCommandHandler ("dardinero", dareldinero) 
  

Te recomiendo ir mirando la Wiki o simplemente otros scripts que haya por la comunidad. Con mirar no me refiero a robarlos sino en fijarte como lo programan e intentar hacer tú mismo, algo parecido o mejor. Suerte en ello :wink:

Link to comment

Gracias, ahí le voy dando a como hacer scripts hasta ahora he aprendido a hacer

Markers, Blips, teleport con markers, Mensaje de bienvenida al entrar un jugador, mensaje cuando escribes un comando, crear un auto, crear un spawn ( ahí medio medio ), crear un comando que te de tu posicion, rotacion, interior y dimension y ire por cosas mas grandes, pero toca estudiar las funciones

las () "" '' , . su significado, las cosas espacios etcétera para entender mas

Link to comment

Creo que sería algo como ésto.

function spawn (thePlayer) 
local x = --Aquí le pones las coordenadas x 
local y = --Aquí las coordenadas y 
local z = --Aquí las coordenadas z 
setElementPosition ( thePlayer, x, y, z ) 
outputChatBox ("Bienvenido al servidor " ..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) 
end 
addEventHandler ("onPlayerJoin", getRootElement(), spawn) 

PD: Recuerda, para guardar la posición del jugador, puedes utilizar un contacto entre MySQL o bien, crear tablas en el propio .xml aunque eso no tengo ni idea de hacerlo ya que la GM que uso usa el contacto vía MySQL jaja.

PD2: Mirando la Wiki más atentamente me di cuenta que esa función ni funciona (creo), por lo cual, te pongo una recomendada por la propia wiki, la cual sería, spawnPlayer.

function spawnear (thePlayer, x, y, z) 
local x = --Aquí le asignas una coordenada x 
local y = --Le asignas una coordenada y 
local z = --Le asignas una coordenada z 
spawnPlayer (thePlayer, x, y, z, [puedesponerrotacion], [puedesponerunaskin], [puedesponeruninterior], [puedesponerunadimension], [puedesponerunteam]) 
outputChatBox ("Bienvenido al servidor "..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) 
--Ejemplo de como quedaría con todo puesto. 
-- locos = createTeam ("Los locos", 255, 0, 0) --Crea un team 
-- x = -10023 
-- y = 20 
-- z = -111 (es uno inventado ) 
-- spawnPlayer (thePlayer, x, y, z, 90, 299, 1, 30, locos) 
-- outputChatBox ("Bienvenido al servidor "..thePlayer.. " pásalo bien!", thePlayer, 255, 100, 100) 
  
end 
addEventHandler("onPlayerLogin", getRootElement(), spawnear) 

Link to comment
Yo creo que para que sean todos, se usa https://wiki.multitheftauto.com/wiki/GetElementsByType

PD: Lo sigo viendo bien, será porque yo uso un export llamado exports.players:getFromID (creo que era así, no estoy del 100% seguro) pero creo que estaría bien :?

Se puede dar dinero infinito, deberías poner una condición para que el dinero especificado no sea mayor al que tiene, además quitar el dinero del jugador cuando se lo de al otro.

Link to comment
No pero, se supone que es un comando administrativo (hasta donde entendí), en caso contrario, puedo pasar otro código utilizando un math.ceil y demás pero, como dije, entendí que sería un comando administrativo.

Como no digiste nada de comando administrativo generaste confusión :lol:

Link to comment

Es que no se trata de dar dinero a todos los jugadores sino, un comando administrativo que le de dinero al otro jugador...

PD: El command ese es innecesario en caso de que quieras poner que el comando es erróneo ya que yo mismo probé mi script y no da ningun error. Funciona perfectamente.

Un ejemplo de lo que quise decir.

--Digamos que nos olvidamos de poner la cantidad, usando el "command", podríamos poner un else con lo siguiente. 
  
else 
      outputChatBox ("Debes utilizar /"..command.. " [jugador] [cantidad]", thePlayer, 255, 255, 255) 
end 
  

Algo que debes saber es que si quieres coger el nombre de una función, por ejemplo, el nombre de otro jugador el cual consigues mediante

local otro = getElementByID (otherPlayer) --Por ejemplo 

En el chatBox debes poner ese "otro" en puntos. Algo así:

outputChatBox ("Se llama "..otro, thePlayer, 255, 0, 0 

Debes tener en cuenta que si hay una coma después de eso, debes poner únicamente dos puntos al principio ".." y no ponerlos al final ya que te dará error. En caso de que quieras añadir algo más y el nombre del "otro" quede en medio del mensaje, sí se utilizarían ambos puntos, ejemplo

outputChatBox ("Has matado a "..otro.. " usando una M4", thePlayer, 255, 255, 255) --Por ejemplo 

Espero que me hayas entendido :wink:

Link to comment
  • Recently Browsing   0 members

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