Jump to content

matucha123

Members
  • Posts

    29
  • Joined

  • Last visited

Everything posted by matucha123

  1. I need to read that in LUA, while gamemode running
  2. Thank you! Is there way to know which EDF (editor definitions) are added to map?
  3. How read settings from map meta? "MiniMissions" type="map" version="1.0.0"> "MiniMiss.map" dimension="0"> "#greenteamskins" value='[ "0" ]'> "#greenteamcolor" value='[ "#00FF00FF" ]'> "#maxplayers" value="[ 128 ]"> "#gamespeed" value="[ 1 ]"> "#greenteamob" value='[ "Kill other teams" ]'> "#respawndissable" value="[ 0 ]"> "#minplayers" value="[ 0 ]"> "#weather" value="[ 0 ]"> "#gravity" value="[ 0.008000 ]"> "#waveheight" value="[ 0 ]"> "#greenteamname" value='[ "Green team" ]'> "#locked_time" value="[ false ]"> "#duration" value="[ 600 ]"> "#time" value="12:0"> Let's say I need "#greenteamname" name
  4. In gamemode settings (in mapeditor) I select that there would be 3 teams and set their names. How make than then I put spwan point, in it's setting appears created teams.
  5. OK. I have questions about edf. Lets say in setting I chose gametype, and elements (like spawnpoint, marker and etc) change, lets say in gamemode settings I enter that there would be 3 teams. Is it possible that in definitions would be 3 teams after changing? now teams is created like this: EDF "team" type="selection:Team1,Team2" default="TeamA" />
  6. Yeah for now random would be OK. Later I will add random spawns for different teams. BTW map file: "MiniMissions,editor_main"> "minispwanpoint (2)" team="Team1" rotZ="0" model="0" posX="2480.1999511719" posY="-1658.6999511719" posZ="13.300000190735" rotX="0" rotY="0"> "minispwanpoint (3)" team="Team2" rotZ="0" model="0" interior="0" posX="2467" posY="-1657.6999511719" posZ="13.300000190735" rotX="0" rotY="0">
  7. I dont want that indexes is predefined, i want what indexes names is set while runinning script: Server full script spawnPoints = {} spawnPoints["Team1"] = {} spawnPoints["Team1"][1] = {} --[[addEventHandler( "onPlayerWasted", root, function() setTimer( spawnPlayer, 2000, 1, source, get("startx"),get("starty"), get("startz"), get("startrot")) end )]] function loadMap(startedMap) mapRoot = getResourceRootElement(startedMap) loadSpawns( ) end addEventHandler("onGamemodeMapStart", root, loadMap) function loadSpawns() local spawn = getElementsByType("minispawnpoint", mapRoot) local x,y,z,r, team --spawnPoints["Team1"] = {} --spawnPoints["Team2"] = {} for key, value in pairs(spawn) do x = getElementData(value, "posX") y = getElementData(value, "posY") z = getElementData(value, "posZ") r = getElementData(value, "rotZ") team = getElementData(value, "team") spawnPoints[team][key]["x"] = x spawnPoints[team][key]["y"] = y spawnPoints[team][key]["z"] = z spawnPoints[team][key]["r"] = r end end addEventHandler("onPlayerJoin", root, function () fadeCamera(source,true) setCameraTarget(source, source) spawnPlayer(source,spawnPoints["Team1"][1]["x"], spawnPoints["Team1"][1]["y"],spawnPoints["Team1"]["z"] ) end )
  8. How crate multiply table (in other languages 2d, 3d arrays)? I want something like that: spwanPoints[team][key]["x"] = x spwanPoints[team][key]["y"] = y spwanPoints[team][key]["z"] = z spwanPoints[team][key]["r"] = r Tried: spwanPoints = {keyss = {valuses={}}} Error:
  9. I tried to create EDF and run into problem, it wont load (no special errors): "Mygame"> "minispwanpoint" friendlyname="Teams spawnpoint" > "position" type="coord3d" required="true" default="0,0,0" /> "team" type="number" default="1" /> "model" type="skinID" required="true" default=0"/> " type="number" required="true" default="0" /> " model="!model!" rotZ="!rotZ!" /> Solved!
  10. I need that only player can see vehicle I needed cursors function thanks!
  11. I have shop. Then players enters it (pick pickup), I set camera to look at car (which is selected in GUI). How can I do rotation with mouse (You holding mouse button pressed on screen and drag it right or left and car rotates, its hard to explain...) And it should be client side because car is created in client side.
  12. Thank you This is working. But how put name and price values in table under id? (I don't know if I said whis right ) Let's say Infernus id = 411, how put "name" and "price" under this id in table?
  13. OK I'm newbie in LUA Now I'm trying to make loading from XMl file. My script(client side): local carlist = {} function updateCarsList () local meta = xmlLoadFile("carshop/settings.xml") local id = xmlNodeGetAttribute(meta, "id") local name = xmlNodeGetAttribute(meta, "name") local price = xmlNodeGetAttribute(meta, "price") carlist[tonumber(id)] = name xmlUnloadFile(meta) outputDebugString(tostring(carlist[411])) end XML file: "411" name="Infernus" price="180000" /> How can I put all 3 values in table? How read all lines? Can someone explain for me "for" cycles? I can't get them . In C they are more understandable for me And other question. Lets say I have in meta.xml defined setting (editable in game via admin panel). How can I spot changes in it (Let's say blur level)?
  14. top part is copy from wiki. That says what arguments can be passed to function. I dont know how to explain. I'm only beginer of LUA but I have experience in programming/scripting All serverside functions: https://wiki.multitheftauto.com/wiki/Server_Scripting_Functions All clientside functions: https://wiki.multitheftauto.com/wiki/Client_Scripting_Functions Main wiki page: https://wiki.multitheftauto.com/wiki/Main_Page And sorry for my English. It isn't my first language.
  15. local screenWidth, screenHeight = guiGetScreenSize ( ) -- Get the screen resolution (width and height) function createText ( ) local playerX, playerY, playerZ = getElementPosition ( localPlayer ) -- Get our player's coordinates. local playerZoneName = getZoneName ( playerX, playerY, playerZ ) -- Get name of the zone the player is in. -- Draw zone name text's shadow. dxDrawText ( playerZoneName, 44, screenHeight - 41, screenWidth, screenHeight, tocolor ( 0, 0, 0, 255 ), 1.02, "bankgothic" ) -- Draw zone name text. dxDrawText ( playerZoneName, 44, screenHeight - 43, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 1, "bankgothic" ) end function HandleTheRendering ( ) addEventHandler ( "onClientRender", root, createText ) -- keep the text visible with onClientRender. root = getRootElement () function updateCamera () local x, y, z = getElementPosition ( getLocalPlayer () ) setCameraMatrix ( x, y, z + 50, x, y, z ) end addEventHandler ( "onClientResourceStart", resourceRoot, HandleTheRendering ) Try this.
  16. And one more question. How can I see element tree? I can't understand Wiki...
  17. OK. its now much clearer for me
  18. Ok, its works with login, but register isnt working... Could you explain then I should use "source" "root" "resourceRoot" and etc? I dont get this part...
  19. I'm starting scripter in lua. While scripting I run into problem with SpwanPlayer. When I login(or register) get error playerDataSaving_loading(serverside): addEvent("playerDataLoad", true) function playerDataLoading(thePlayer, username) local result = mysql_query(mysqldb, "Select * From players where username='"..username.."'") if not result then outputDebugString( "EVENT:playerDataLoading mysql_query failed: (" .. tostring( mysql_errno( mysqldb ) ).. ") " ..tostring( mysql_error( mysqldb ) ) ) mysql_free_result(result) return end local field = mysql_fetch_field(result) setElementData(thePlayer, "playerUsername", username) --spawnPlayer(thePlayer, field["pos_X"], field["pos_Y"], field["pos_Z"]) tried simple coordination's. spawnPlayer(theplayer, 0, 0, 3) mysql_free_result(result) end addEventHandler("playerDataLoad", root, playerDataLoading) function playerDataSaving() if get("AutoSaveOnQuit") then local posX, posY, posZ = getElementPosition(source) mysql_query(mysqldb, "Update players Set pos_X="..posX.." pos_Y="..posY.." pos_Z="..posZ.." Where username='"..getElementData(source, "playerUsername").."'") end end addEventHandler("onPlayerQuit", root, playerDataSaving) GUI creating, events calling(client): addEvent( "falseLogin", true) function createLoginRegisterGUI( ) local X = 0.375 local Y = 0.375 local Width = 0.35 local Height = 0.35 myFont = guiCreateFont( "password.ttf", 15 ) wdwLogin = guiCreateWindow(X, Y, Width, Height, "Login/Register window", true) tabPanel = guiCreateTabPanel ( 0, 0.1, 1, 1, true, wdwLogin) tabLogin = guiCreateTab( "Login", tabPanel ) local tabRegister = guiCreateTab( "Register", tabPanel ) X = 0.0825 Y = 0.2 Width = 0.25 Height = 0.25 guiCreateLabel(X, Y, Width, Height, "Username", true, tabLogin) Y = 0.5 guiCreateLabel(X, Y, Width, Height, "Password", true, tabLogin) X = 0.315 Y = 0.2 Width = 0.6 Height = 0.15 edtUser = guiCreateEdit(X, Y, Width, Height, "", true, tabLogin) Y = 0.5 edtPass = guiCreateEdit(X, Y, Width, Height, "", true, tabLogin) guiSetFont(edtPass, myFont ) guiEditSetMaxLength(edtUser, 50) guiEditSetMaxLength(edtPass, 50) X = 0.05 Y = 0.75 Width = 0.9 Height = 0.15 btnLogin = guiCreateButton(X, Y, Width, Height, "Log In", true, tabLogin) --========================Regsiter=============================================== X = 0.0825 Y = 0.21 Width = 0.2 Height = 0.2 guiCreateLabel(X, Y, Width, Height, "Username", true, tabRegister) Y = 0.41 guiCreateLabel(X, Y, Width, Height, "Password", true, tabRegister) Y = 0.61 guiCreateLabel(X, Y, Width, Height, "Repeat password", true, tabRegister) X = 0.315 Y = 0.2 Width = 0.6 Height = 0.1 edtReUser = guiCreateEdit(X, Y, Width, Height, "", true, tabRegister) Y = 0.4 edtRegPass = guiCreateEdit(X, Y, Width, Height, "", true, tabRegister) Y = 0.6 edtRePass = guiCreateEdit(X, Y, Width, Height, "", true, tabRegister) myFont = guiCreateFont( "password.ttf", 10 ) guiSetFont( edtRegPass, myFont ) guiSetFont( edtRePass, myFont ) guiEditSetMaxLength(edtReUser, 50) guiEditSetMaxLength(edtRegPass, 50) guiEditSetMaxLength(edtRePass, 50) X = 0.05 Y = 0.8 Width = 0.9 Height = 0.15 btnRegister = guiCreateButton(X, Y, Width, Height, "Register", true, tabRegister) guiSetVisible(wdwLogin, false) addEventHandler( "onClientGUIClick", btnLogin, clientSubmitLogin, false ) addEventHandler( "onClientGUIClick", btnRegister, clientSubmitRegister, false ) end addEvent("succesRegister", true) addEventHandler("succesRegister", resourceRoot, function(password) guiSetInputEnabled( false ) guiSetVisible( wdwLogin, false ) showCursor( false ) outputChatBox("* You have registeres succesfuly! Your password is: "..password, 0, 255, 0) end ) function clientSubmitRegister(button, state) if button == "left" and state == "up" then local username = guiGetText(edtReUser) local password = guiGetText(edtRegPass) local repass = guiGetText(edtRePass) if username and password then triggerServerEvent( "submitRegister", localPlayer, username, password, repass ) end end end function clientSubmitLogin( button,state ) if button == "left" and state == "up" then local username = guiGetText( edtUser ) local password = guiGetText( edtPass ) if username and password then triggerServerEvent( "submitLogin", localPlayer, username, password ) guiSetInputEnabled( false) guiSetVisible( wdwLogin, false) showCursor( false ) else outputChatBox("Please enter a username and password.") end end end addEventHandler( "onClientResourceStart", resourceRoot, function ( ) createLoginRegisterGUI( ) outputChatBox( "Welcome to My MTA:SA Server." ) if wdwLogin then guiSetVisible( wdwLogin, true ) else outputChatBox( "An unexpected error has occurred and the log in GUI has not been created." ) end showCursor( true ) guiSetInputEnabled( true ) end ) addEventHandler( "falseLogin", root, function( ) guiSetInputEnabled( true ) guiSetVisible( wdwLogin, true ) showCursor( true ) end ) login_register (server) local spawnX, spawnY, spawnZ = 1959.55, -1714.46, 20 addEvent( "submitLogin", true ) addEvent( "submitRegister", true) function loginHandler(username, password ) local password2=whirlpool(password) local result = mysql_query( mysqldb, "SELECT * FROM players WHERE username = '"..username.. "' AND pass = '"..password2.. "'" ) if not result then outputDebugString( "EVENT:submitLogin mysql_query failed: (" .. tostring( mysql_errno( mysqldb ) ).. ") " ..tostring( mysql_error( mysqldb ) ) ) else if mysql_num_rows( result ) > 0 then fadeCamera(source, true) setCameraTarget(source, source) outputChatBox( "Welcome to My Server.", source ) triggerEvent("playerDataLoad", resourceRoot, source, username) else outputChatBox( "Invalid username and password. Please try again.",source, 255, 0, 0) triggerClientEvent ( "falseLogin", root ) end mysql_free_result( result ) end end function registerHandler(user, pass, repass ) local result = mysql_query( mysqldb, "SELECT * FROM players WHERE username = '"..user.."'" ) if not result then outputDebugString( "EVENT:submitRegister mysql_query failed: (" .. tostring( mysql_errno( mysqldb ) ).. ") " ..tostring( mysql_error( mysqldb ) ) ) else if mysql_num_rows( result ) > 0 then outputChatBox( "Username which you selected already exists!",source, 255, 0, 0 ) else if pass == repass then local pass2 = whirlpool(pass) local Result = mysql_query( mysqldb, "INSERT INTO players (username, pass) VALUES ('"..user.."', '"..pass2.."')" ) if Result then mysql_free_result( Result ) fadeCamera(source, true) setCameraTarget(source, source) spawnPlayer(source, spawnX, spwanY, spawnZ) setElementData(source, "pMoney", get("PlayerStartingMoney")) givePlayerMoney(source, get("PlayerStartingMoney")) triggerClientEvent(source, "succesRegister", root, pass) else outputDebugString( "Register not succes: mysql_query failed: (" .. tostring( mysql_errno( mysqldb ) ).. ") " ..tostring( mysql_error( mysqldb ) ) ) end else outputChatBox( "Passwords dosen't match. Please re-enter passwords!",source, 255, 0, 0 ) end end mysql_free_result( result ) end end addEventHandler( "submitRegister", root, registerHandler ) addEventHandler( "submitLogin", root, loginHandler ) MySQL callings are right. Inputs in database appears. I think I messed whit triggering events
  20. Then I set elementData to player does it delete after players Quit? Or I have to do that in script?
  21. how can I make case sensitive? hash password in whirlpool or MD5?
  22. No... its wont work with random username, but its can connect with right one. Example: In mysql username is james. i can connect with JaMes In mysql password is mta. I can connect with MtA
×
×
  • Create New...