Search the Community

Showing results for tags 'serverside'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Multi Theft Auto: San Andreas 1.x
    • Support for MTA:SA 1.x
    • User Guides
    • Open Source Contributors
    • Suggestions
    • Ban appeals
  • General MTA
    • News
    • Media
    • Site/Forum/Discord/Mantis/Wiki related
    • MTA Chat
    • Other languages
  • MTA Community
    • Scripting
    • Maps
    • Resources
    • Other Creations & GTA modding
    • Competitive gameplay
    • Servers
  • Other
  • Archive
  • Private Bugtracker

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me





Found 6 results

  1. MTA-Communication-Enchantment This is an enchantment that allows you to communicate between clientside and serverside a bit easier. If you know how to work with events, then you probably do not need this, but it has some nice features which allows you to sit back and write less code + achieve some nice results. Note: It is important to keep in mind that this is an enchantment. Which means it is just an layer on top of the basic functionalities of MTA. And most enchantments come with a cost, in this case that is bit of performance. I will keep the information of topic to the minimal, as I have written most of the information already on the repository. You can find the repository here. Examples Syntax Installation What can you do with it? Calling from clientside to serverside Client callServer("hello") Server function hello () outputChatBox("Hello client!") end Calling from serverside to clientside Server addCommandHandler("callclient", function (player) -- An addCommandHandler is needed, because the client hasn't loaded it's scripts yet. callClient(player, "hello") end, false, false) Client function hello () outputChatBox("Hello server!") end Ok, ok, that was boring. The next one this is a bit nicer! Hello are you there? Just Call-me-back... I miss(ed) you too Callback Client callServer( "callbackMe", "argument", function (argument) -- < This is the callback function outputChatBox(argument) end ) Server function callbackMe (argument) return argument .. " < I looked at it :)" end Callback + internal arguments Sometimes you have arguments that you simply can't send over. > functions Or arguments that shouldn't be send over. > LARGE quantities of database data Internal arguments can be used to pass information to a callback without exposing it to the other side(client/server). Client callServer( "callbackMe", -------------------------------- -- arguments that are send over "argument", -- -------------------------------- function (internalArgument, argument) -- < This is the callback function. outputChatBox(internalArgument) outputChatBox(argument) end, -------------------------------- -- arguments that are not send over "internalArgument" -- < internal argument -- -------------------------------- ) Server function callbackMe (argument) return argument .. " < I looked at it :D" end Ha! Serverside what is that? No need for complicated things! Communicate between clients without writing a single line of serverside. Magic! Note: There is serverside used behind the scenes, you just don't have to write it. Client function smile (player) outputChatBox((isElement(player) and getPlayerName(player) or "[unknown]") .. " has send you a: :)") local x, y, z = getElementPosition(localPlayer) setElementPosition(localPlayer, x, y, z + 100) end addRemoteClientAccessPoint(smile) -- < This function allows other clients to call this function. --------------------------------------- -- -- function getPlayerFromPartialName(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end -- Author: TAPL -- -- -- --------------------------------------- addCommandHandler("smile", function (cmd, playerName) local player = getPlayerFromPartialName(playerName) if player then outputChatBox("Sending smile!") callRemoteClient(player, "smile", player) else outputChatBox("Can't find player!") end end) Turtle, I will wait for you to catch up. So don't worry, you are still cute. Await functions When a player has joined the server, he or she doesn't have download + loaded his scripts yet. This means that you can't deliver your love letter yet and all your work will be for nothing. But what if you don't have to worry about that? You can just wait now! Server addEventHandler("onPlayerJoin", root, function () callClientAwait(source, "testCallClientAwait") end) Client function testCallClientAwait () outputChatBox("Yes this works!") end Security Worried about security issues? Remote calls for C++/MTA functions have been blocked. There is a whitelist feature included, if enabled your code can only remote-call whitelisted functions. (this is disabled by default) Read the docs for that. Here and here
  2. Buenas!, les cuento que estoy teniendo un problema y no se cómo buscarlo en la wiki, y por eso recurro al foro. Lo que quiero hacer es varias paradas de recolección, y a partir de 30 segundos se le va a sumar 1 a cada parada de recolección. Estas paradas son de servidor para todos, y la idea es que cuando un jugador recolecta, se resta lo q habia sumado, para TODOS. Es decir el problema está que cuando al hacer un vector de parada X, se pone en Parada[X] ¿y ahí carga el dato, o no? Parada1 = 0 Parada2 = 0 Parada3 = 0 Parada4 = 0 function AgregarPasajeros() if (Parada1 < 8) then Parada1 = Parada1+1 if (Parada2 < 8) then Parada2 = Parada2+1 if (Parada3 < 8) then Parada3 = Parada3+1 if (Parada4 < 8) then Parada4 = Parada4+1 end end end end end addEventHandler("onResourceStart", getRootElement(AgregarPasajeros)) Timer = setTimer(AgregarPasajeros, 9000, 0) function FuncParada_58_A (DispPasajeros, pia) outputChatBox ("Se activa FUNC PARADA PRUEBA") outputChatBox ("La parada es:") outputChatBox (pia) if (Parada[pia] > 0) and (DispPasajeros > 0) then --Esto ¿? La "Parada[PIA]" con el pia que viene de cliente, está bien? outputChatBox ("Se cumple primera condicion") PasajSuben = 0 DispPasajeros = DispPasajeros -1 Parada[pia] = Parada[pia] -1 PasajSuben = PasajSuben +1 pia_server = pia setTimer ( SegundoPaso, 2000, 1, PasajSuben, pia_server) else if (Parada[pia] <= 0) or (DispPasajeros <= 0) then outputChatBox ("Se cumple segunda condicion") PasajSuben = 0 setTimer ( SegundoPaso, 1000, 1, PasajSuben, pia_server) else outputChatBox ("Algo falla") end end end addEvent( "HaciaServidor", true ) addEventHandler( "HaciaServidor", root, FuncParada_58_A )
  3. I want to create a random supply drop script that moves a certain object from a position in the air to the ground position vertically. -- SERVERSIDE local object = {id = 1271, x = 1000, y = 1000, z = 200} function moveSupply(source, command) local box = createObject(, object.x, object.y, object.z, 0, 0, 0) -- here it should be something that calculates 'ground' as the z coordonate of the ground object point moveObject(box, 10000, object.x, object.y, ground) -- etc end addCommandHandler("supply", moveSupply) . The problem is that there is no support for getting the specific ground position in serverside, only in clientside. Waiting an idea or any other method that can work.
  4. Hi I'm getting a error on debugscript each time I start the resource, could anyone explain to me the cause of this error ? Thanks for any help ..
  5. hola mi gente, aqui tengo 1 error espero que me puedan ayudar, 1.- este error se trata de que aparece cuando alguien se sube a un vehiculo ( o nose pero a parece demaciadas veses -.-)
  6. I can't find an error in this script, what's wrong here? The message says that the event is not added serverside... coreh_client.lua local tableToSendVip = { [1] = guiGetText( hc_edith['edith_ec_X'] ), [4] = guiGetText( hc_edith['edith_etc_X'] ), [2] = guiGetText( hc_edith['edith_ec_Y'] ), [5] = guiGetText( hc_edith['edith_etc_Y'] ), [3] = guiGetText( hc_edith['edith_ec_Z'] ), [6] = guiGetText( hc_edith['edith_etc_Z'] ), [7] = guiGetText( hc_edith['edith_exc_X'] ), [10] = guiGetText( hc_edith['edith_extc_X'] ), [8] = guiGetText( hc_edith['edith_exc_Y'] ), [11] = guiGetText( hc_edith['edith_extc_Y'] ), [9] = guiGetText( hc_edith['edith_exc_Z'] ), [12] = guiGetText( hc_edith['edith_extc_Z'] ), [13] = guiGetText( hc_guih['edith_intID'] ), [14] = guiGetText( hc_guih['edith_dim'] ), [15] = guiGetText( hc_guih['edith_cost'] ) }; for i, v in ipairs( tableToSendVip ) do tableToSendVip[ i ] = tonumber( tableToSendVip[ i ] ); end; triggerServerEvent( 'onPlayerAttemptCreateHouseVip', me, tableToSendVip ); triggerEvent( 'HPV_SetVisible', me, false ); end, false ); coreh_server.lua addEvent( 'onPlayerAttemptcreateHouseVip', true ); addEventHandler( 'onPlayerAttemptcreateHouseVip', root, function( rt ) createHouseVip( true, #sqly.Query( "SELECT * FROM house_data" ) + 1, '', '', unpack( rt ) ); outputChatBox( 'A casa VIP foi criada com sucesso!', client, 255, 255, 0 ); end ); Any ideas?