TheMauro921 Posted August 2, 2015 Share Posted August 2, 2015 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
aka Blue Posted August 2, 2015 Share Posted August 2, 2015 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 Link to comment
TheMauro921 Posted August 2, 2015 Author Share Posted August 2, 2015 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
aka Blue Posted August 2, 2015 Share Posted August 2, 2015 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
aka Blue Posted August 2, 2015 Share Posted August 2, 2015 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 Link to comment
DBY Posted August 2, 2015 Share Posted August 2, 2015 Yo creo que para que sean todos, se usa https://wiki.multitheftauto.com/wiki/GetElementsByTypePD: 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
aka Blue Posted August 2, 2015 Share Posted August 2, 2015 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. Link to comment
DBY Posted August 2, 2015 Share Posted August 2, 2015 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 Link to comment
aka Blue Posted August 2, 2015 Share Posted August 2, 2015 No, si yo tampoco entendí muy bien si es que era un comando administrativo o que le de de un jugador a otro jajajaja. Link to comment
aka Blue Posted August 3, 2015 Share Posted August 3, 2015 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 Link to comment
Recommended Posts