-
Posts
1,803 -
Joined
-
Last visited
-
Days Won
8
Everything posted by Citizen
-
Basic Lua should be a minimum when you are going to script something. client and server is not lua specific, and it's really an abstract thing when you start scripting for MTA. So it's not as obvious as you think it was.
-
To make WHAT ?! Do you mean a tazer ? click for images You need use a specfic gun from GTA that you will use for that. (like the silenced pistol (id 23)) Then on client, listen for onClientPlayerDamage event and check if the id of the attacker weapon is 23. If yes, then cancel the real bullet damages by calling cancelEvent() To prevent the police officer to shoot more than one shock charge like the original pistol can, you will need to use: setWeaponProperty (on server side) on weapon id 23 to set max ammo in clip to 1 (he will reload after each shot)
-
only if the variable is a global one and is in the same side. server1.lua local localTable = { 1, 2, 3 } globalTable = { 4, 5, 6 } server2.lua for k, i in ipairs (localTable) do --error, table undefined (nil value) outputChatBox(i) end for k, i in ipairs (globalTable) do -- works outputChatBox(i) -- prints 4, 5, 6 end client.lua for k, i in ipairs (localTable) do --error, table undefined (nil value) outputChatBox(i) end for k, i in ipairs (globalTable) do --error, table undefined (nil value) outputChatBox(i) end
-
No problem. Yeah, didn't see but you pasted it like this. I mean it's not my error. Cheers, Citizen
-
- Use double quote (") instead of 2 single quotes (' ') - Use tabs for indentation instead of spaces (spaces are automatically removed on this forum) - You forgot function() at line 96. - This gui will be fine for only one resolution (convert it to use relative positioning and sizing) GUIEditor = { staticimage = {}, label = {}, gridlist = {}, combobox = {}, memo = {} } addEventHandler("onClientResourceStart", resourceRoot, function() wnd = guiCreateWindow(431, 221, 748, 663, "FlyMTA|AirPort", false) guiWindowSetSizable(wnd, false) guiSetAlpha(wnd, 0.83) guiSetProperty(wnd, "CaptionColour", "FF2DB4D1") ls = guiCreateButton(9, 19, 191, 250, "LS", false, wnd) guiSetFont(ls, "default-bold-small") guiSetProperty(ls, "NormalTextColour", "FF89D725") sf = guiCreateButton(9, 281, 191, 327, "SF", false, wnd) guiSetFont(sf, "clear-normal") guiSetProperty(sf, "NormalTextColour", "FF321BDF") lv = guiCreateButton(202, 21, 179, 250, "LV", false, wnd) guiSetFont(lv, "default-small") guiSetProperty(lv, "NormalTextColour", "FF7F9F5C") exit = guiCreateButton(200, 280, 181, 328, "Exit", false, wnd) guiSetFont(exit, "clear-normal") guiSetProperty(exit, "NormalTextColour", "FFF7062E") GUIEditor.gridlist[1] = guiCreateGridList(640, 28, 98, 625, false, wnd) guiGridListAddColumn(GUIEditor.gridlist[1], "AirPort Online", 0.9) guiGridListAddRow(GUIEditor.gridlist[1]) guiGridListSetItemText(GUIEditor.gridlist[1], 0, 1, "SOON", false, false) GUIEditor.label[1] = guiCreateLabel(431, 32, 195, 26, "FlyMTA V.1.0", false, wnd) guiSetFont(GUIEditor.label[1], "clear-normal") guiLabelSetColor(GUIEditor.label[1], 31, 211, 218) GUIEditor.staticimage[1] = guiCreateStaticImage(449, 173, 118, 181, ":guieditor/images/examples/mtalogo.png", false, wnd) guiSetProperty(GUIEditor.staticimage[1], "ImageColours", "tl:FF787E7C tr:FF787E7C bl:FF787E7C br:FF787E7C") GUIEditor.memo[1] = guiCreateMemo(411, 373, 200, 280, "Welcome To FlyMTA !!\n\n--\n\nمرحبا بك في فلاي ام تي اي \nلاول مره في لعبه ..\n\nMTA Plus !\nAirPort Online !\nRate ! \n\n--\n\nBy Mostafa \n\n", false, wnd) guiMemoSetReadOnly(GUIEditor.memo[1], true) GUIEditor.label[2] = guiCreateLabel(413, 89, 126, 15, "Rate :", false, wnd) guiSetFont(GUIEditor.label[2], "clear-normal") guiLabelSetColor(GUIEditor.label[2], 26, 219, 158) GUIEditor.combobox[1] = guiCreateComboBox(545, 91, 91, 61, "", false, wnd) guiSetFont(GUIEditor.combobox[1], "clear-normal") guiComboBoxAddItem(GUIEditor.combobox[1], "Bad") guiComboBoxAddItem(GUIEditor.combobox[1], "Nice") GUIEditor.label[3] = guiCreateLabel(-8, -18, 99, 18, "", false, GUIEditor.combobox[1]) -- dafuq ? GUIEditor.staticimage[2] = guiCreateStaticImage(327, 636, 24, 17, ":guieditor/images/dx_elements/slider_end.png", false, wnd) GUIEditor.staticimage[3] = guiCreateStaticImage(581, 238, 38, 38, ":guieditor/images/plus.png", false, wnd) GUIEditor.label[4] = guiCreateLabel(439, 149, 133, 14, "", false, wnd) GUIEditor.staticimage[4] = guiCreateStaticImage(620, 167, 10, 34, ":dxgui/images/checkboxcheck.png", false, wnd) end) addEventHandler("onClientRender", root, function() dxDrawImage(1378, 331, 124, 187, ":guieditor/images/examples/mtalogo.png", 0, 0, 0, tocolor(255, 255, 255, 255), true) dxDrawText("FlyMTA", 1381, 543, 1595, 578, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, true, false) dxDrawText("FlyMTA", 1381, 541, 1595, 576, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, true, false) dxDrawText("FlyMTA", 1379, 543, 1593, 578, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, true, false) dxDrawText("FlyMTA", 1379, 541, 1593, 576, tocolor(0, 0, 0, 255), 1.00, "pricedown", "left", "top", false, false, true, true, false) dxDrawText("FlyMTA", 1380, 542, 1594, 577, tocolor(58, 233, 11, 255), 1.00, "pricedown", "left", "top", false, false, true, true, false) end) ----------------------------------------------------- addEventHandler("onClientGUIClick", root function () if (source == ls ) setElementPosition ( source, posX, posY, posZ ) outputChatBox("FlyMTA : Welcome To LS City " , source ) guiSetVisble(wnd, false) end end) -------------------------------------------------------- addEventHandler("onClientGUIClick", root function () if (source == sf ) setElementPosition ( source, posX, posY, posZ ) outputChatBox("FlyMTA : Welcome To SF City " , source ) guiSetVisble(wnd, false) end end) ---------------------------------------------------------- addEventHandler("onClientGUIClick", root function () if (source == lv ) setElementPosition ( source, posX, posY, posZ ) outputChatBox("FlyMTA : Welcome To LV City " , source ) guiSetVisble(wnd, false) end end) ------------------------------------------------------------- local Marker1 = createMarker ( x, y, x, "cylinder", 2, 0, 125, 125, 125 ) addEventHandler("onClientMarkerHit", Marker1 function() guiSetVisble(wnd, true) end)
-
Ok try this: -- easier to replace the name if needed local ROLES = { POLICE_OFFICER = "Police Officer", BUS_DRIVER = "Bus Driver" } local roleMarkers = { -- LS Markers {role = ROLES.POLICE_OFFICER, mx=1550.3958740234, my=-1609.7741699219,mz=12.3828125,mr=41,mg=41, mb=247, rz=267.83172607422}, {role = ROLES.POLICE_OFFICER, mx=1578.7170410156,my=-1609.7991943359, mz=12.3828125,mr=41,mg=41, mb=247, rz=178.85244750977}, -- LV Markers {role = ROLES.POLICE_OFFICER, mx=2256.1411132813,my=2444.4133300781,mz=9.8203125,mr=41,mg=41, mb=247, rz=90}, {role = ROLES.POLICE_OFFICER, mx=2256.1884765625,my=2476.5065917969, mz=9.8203125, mr=41,mg=41, mb=247, rz=90}, -- SF Markers {role = ROLES.POLICE_OFFICER, mx=-1593.6441650391, my=652.44372558594,mz=6.1875,mr=41,mg=41, mb=247, rz=0.082412347197533}, {role = ROLES.POLICE_OFFICER, mx=-1616.6040039063,my=651.50634765625,mz=6.1875,mr=41,mg=41, mb=247, rz=0.082412347197533}, -- LS Bus Job {role = ROLES.BUS_DRIVER, mx=1098.8491210938,my=-1766.7958984375, mz=12.350924491882, mr=255, mg=216, mb=0, rz=90.146255493164}, } for i,v in ipairs(roleMarkers) do local marker = createMarker(v.mx, v.my, v.mz, "cylinder", 1.5, v.mr, v.mg, v.mb) setElementData(marker, "role", v.role) addEventHandler("onClientMarkerHit", marker, onRoleMarkerHit) end local button = {} local window = {} window[1] = guiCreatewindow[1](370, 277, 305, 402, "UGC ~ Vehicles Spawner", false) guiSetVisible(window[1], false) guiwindow[1]SetSizable(window[1], false) gridlist = guiCreateGridList(9, 63, 282, 268, false, window[1]) Col1 = guiGridListAddColumn(gridlist, "Vehicles", 0.5) Col2 = guiGridListAddColumn(gridlist, "id", 0.5) button[1] = guiCreateButton(10, 350, 113, 22, "Spawn", false, window[1]) guiSetFont(button[1], "default-bold-small") guiSetProperty(button[1], "NormalTextColour", "FFAAAAAA") button[2] = guiCreateButton(178, 350, 113, 22, "Hide", false, window[1]) guiSetFont(button[2], "default-bold-small") guiSetProperty(button[2], "NormalTextColour", "FFAAAAAA") guiSetVisible(window[1], false) function onRoleMarkerHit( element ) if element ~= localPlayer then return end local markerRole = getElementData(source, "role") local playerRole = getElementData(element, "Occupation") mx, my, mz = getElementPosition(source) if markerRole == ROLES.POLICE_OFFICER and playerRole == ROLE.POLICE_OFFICER then guiSetVisible(window[1], true) showCursor(true) end end
-
client: sWidth, sHeight = guiGetScreenSize() local gui = { edit = {}, button = {}, grid = {} } addEventHandler("onClientResourceStart", resourceRoot, function() -- gui.edit["player"] = guiCreateEdit(sWidth*0.3, sHeight*0.2, sWidth*0.2, sHeight*0.1, "", false) gui.grid["playerlist"] = guiCreateGridList(sWidth*0.3, sHeight*0.25, sWidth*0.4, sHeight*0.4, false) guiGridListSetSelectionMode(gui.grid["playerlist"], 2) gui.edit["money"] = guiCreateEdit(sWidth*0.3, sHeight*0.65, sWidth*0.2, sHeight*0.08, "", false) gui.button["enviar"] = guiCreateButton( sWidth*0.5, sHeight*0.65, sWidth*0.2, sHeight*0.08, "enviar", false) --guiSetVisible(gui.edit["player"], false) guiSetVisible(gui.grid["playerlist"], false) guiSetVisible(gui.edit["money"], false) guiSetVisible(gui.button["enviar"], false) local column = guiGridListAddColumn( gui.grid["playerlist"], "Nombre del Jugador", 0.9 ) if ( column ) then for id, player in ipairs(getElementsByType("player")) do local row = guiGridListAddRow ( gui.grid["playerlist"] ) local playerName = getPlayerName ( player ) guiGridListSetItemText ( gui.grid["playerlist"], row, column, playerName:gsub ( "#%x%x%x%x%x%x", "" ), false, false ) guiGridListSetItemData ( gui.grid["playerlist"], row, column, playerName ) end end addEventHandler( "onClientGUIClick", gui.button["enviar"], givem, false ) end) function givem() local selectedRow = guiGridListGetSelectedItem(gui.grid["playerlist"]) local name = guiGridListGetItemData(gui.grid["playerlist"], selectedRow, 1) local target = getPlayerFromName(name) if target then local getmoney = guiGetText ( gui.edit["money"] ) local money = tonumber ( getmoney ) if ( money ) then triggerServerEvent("onPlayerSendMoney", localPlayer, target, money) else outputChatBox ("#ffBB00Error : La cantidad no es validad !", 225, 255, 255, true) end else outputChatBox ("#ffBB00Error : El nombre del jugador no es validad !", 225, 255, 255, true) end end server: addEvent("onPlayerSendMoney", true) function doSendMoney( target, money ) if (getPlayerMoney (source) >= money) then takePlayerMoney(target, money) givePlayerMoney(target , money) outputChatBox ("#ffffff Dinero enviado Exitosamente a: "..getPlayerName(target), source, 255, 225, 255, true) else outputChatBox ("#ff0000Error dinero insuficiente", 225, 255, 255, true) end end addEventHandler("onPlayerSendMoney", root, doSendMoney) Please learn from this code for your future scripts ! Please use google translate to write in english, because your english is too bad.
-
https://wiki.multitheftauto.com/wiki/Dxscoreboard exports["scoreboard"]:scoreboardAddColumn ( "level", root, 90, "Level") exports["scoreboard"]:scoreboardAddColumn ( "experience_t",root, 90, "Toplam Exp") exports["scoreboard"]:scoreboardAddColumn ( "experience",root, 90, "Exp") exports["scoreboard"]:scoreboardAddColumn ( "experience_r", root, 90, "Gereken EXP") exports["scoreboard"]:scoreboardForceTeamsHidden( true )
-
Because players can buy nitros ? I mean if a player buy 10 nitros, uses 1 nitro, then reconnect later, the player will still have 9 nitros ready to use ? If yes, then yeah you can save the number of nitro the player has in an element data on the player. Save that data in his account when he logs off and load that data to put it in an element data on the player and then use that element data wherever you have to. It will also means that if a player steal his car, he won't get his 9 nitros. (I don't know what your server will be, but if it's based on race gamemode, then ofc no one can steal cars). If it wasn't the reply you expected, then please give me more details about what you want do with the nitros by giving a step by step example.
-
ouaip, c'est "onClientResourceStart" Et il faut aussi noter que getRootElement() (ou la variable prédéfinie root) te renvoit le l'élément racine de ton serveur. Il faut savoir que chaque élément est un sous-élément d'un autre élément. L'élément root étant le seul à ne pas avoir d'éléments au-dessus de lui. Chaque ressource est un sous-élément de l'élément root et sera l'élément racine de tous les éléments que ses scripts créerons. Lorsqu'on supprime un élément, (par exemple en arrêtant une ressource), tous ces sous-éléments seront détruit également. Pour visualiser ce que je viens d'expliquer, voici un schéma: Tout ça pour dire que le getRootElement() n'est pas approprié car tu veux certainement que ta fonction ne soit exécuté que lorsque que ta ressource (celle qui contient ce code) démarre sur le client (joueur). Là tu exécute ta fonction même lorsqu'une autre ressource démarrera. Pour corriger ça, on va dire qu'on n'exécute la fonction weatherzone que lorsque "onClientResourceStart" sera triggered avec la ressource courante en source de cet event: addEventHandler( "onClientResourceStart", getResourceRootElement(getThisResource()), weatherzone ) Mais comme c'est long à écrire et que les codeurs sont paresseux, l'équipe de MTA nous fournit un certains nombre de variables prédéfinies. (Voir la liste: Predefined Variables) On peut donc l'écrire comme ceci: addEventHandler( "onClientResourceStart", getResourceRootElement(resource), weatherzone ) -- ou encore plus rapide addEventHandler( "onClientResourceStart", resourceRoot, weatherzone ) Les 3 addEventHandlers ci-dessus sont exactement pareil. Un autre conseil quand un script ne marche pas, mettre des outputs un peu partout (mais de façon logique quand même). Pour trouver ton erreur, voici ce que j'ai écrit: function weatherzone() outputChatBox("weatherzone function") local ThePlayer = getLocalPlayer() if setElementDimension ( ThePlayer, 4 ) then outputChatBox("set weather") setWeather( 19 ) end end addEventHandler( "onClientResouceStart", resourceRoot, weatherzone ) Mais évidemment, il ne sait rien passé dans la chatbox, ma meta.xml était correcte et je n'avait pas d'erreur dans mon script (une parenthèse oubliée affichera une erreur en utilisant /debugscript 3). J'était donc sûr que ça venait du addEventHandler, j'ai donc relu attentivement "on client resouce ... wtf resouce ?!" J'ai corrigé et retenté. Et là le script marchait et j'avais mes 2 messages dans la chatbox. Les outputChatBox est très utile lorsqu'il s'agit de débuguer un script. J'espère que les explications ont été claires pour toi et que tu retiendras les astuces pour tes futurs scripts.
-
Use this resource to show a fancy colorpicker: https://community.multitheftauto.com/ind ... anddescr=1 And use the onColorPickerOK event to know when the player selected his colour. Then use setElementData "to store it on the player element". Use the event onPlayerLogin to load all the account datas and set the element datas. (I mean copy all account datas to place them as element data) Then use the onPlayerQuit and onPlayerLogout to save the element datas back into his account datas. (I don't know if the event onPlayerLogout is triggered if a player qui the game. It might be logic but well, i don't know. If yes, then you don't even need onPlayerQuit)
-
Are you sure about the resolution ? Because I tried a lot of settings for 1280x1024, and this is the best I got so far: So please check again for which resolution, this script works, and also check in video settings the HUD Match aspect ratio check box (activated or not) and the Aspect Ratio (if it's auto, please select a real one that work, so I can set the same in my settings).
-
Took me 2 minutes to find an anti-spam on the resource community center: https://community.multitheftauto.com/ind ... ls&id=2537 It mute the spammer for 1 minute if the guy sent 2 messages in less that 1 seconde. You can modify it to kick the guy.
-
I wish I had time to build a client with 3D sound updated with the player instead of the camera. I don't even know if it's possible though, but I'll try to do it and give you the link (or the steps to build it yourself if a VirusScan isn't enough for you). I'll try to do it arround july and you will see by yourself.
-
No, it would confuse the brain and would be hard to locate where the sound comes from. It's like that for every 3D games. You probably thought it was always depending on the player's position and rotation, but that's only true when you are playing in 1st person. So the camera is the player's head. In 3rd person, it's still depending on the camera. If you hear something on your right, you will instinctively turn the camera to look on the right without moving the player you are controlling. If you move the camera on the right but still hear it on your right because you didn't rotate the player, then you will be totally confused because what your ears says won't comfirm what your eyes says. And when that happens, you generally become sick and will simply make you want to puke.
-
No, it's just telling if the event can be triggered from the other side. So nothing to do with resources. Yeah exactly. You couldn't use triggerClientEvent(thePlayer, "openGUI", thePlayer) because players are not in the resource tree, but the root tree. (I saw you asked it before you edit your post ^^) Watch the schema here to get a visual idea of the element tree system: https://wiki.multitheftauto.com/wiki/Element_tree
-
First you need to know what concatenation is: outputChatBox("snow".."ball") --prints "snowball" local str = "ball" outputChatBox("snow"..str) --prints "snowball" as well local str = false -- false and true are booleans outputChatBox("snow"..str) -- Error: attempt to concatenate a boolean value You cannot concatenate a boolean value to a string (so true or false) But you can convert this value to a string by using tostring(myValue): local str = false outputChatBox("snow"..tostring(str)) -- prints "snowfalse" According to the wiki page of getTeamName, this function returns false if the 1st argument was not a valid team. So the problem comes from teamName which is not a valid team name. Try to print it to see what you get and if you can fix the problem yourself, please show us the function that triggers that event. You should find something like: triggerEvent("onPlayerChooseTeam", ... (This event might be called from client side, so maybe triggerClientEvent instead.) (Is this event coming from another resource ? If yes, then please give us the link.) I hope my explainations was clear, simple and helpful.
-
As xXMADEXx said, it's not a bug, the sound volume is calculated with the distance between the sound origin position and the camera (so not the player). That's why if you move the camera, the sound volume is changing, even if the player is not moving.
-
Omg ! I just wanted to make it all in one just before posting it, but forgot to make the handler function an anonymous one. *facepalm* You didn't apply the MIKI785's fix correctly This is what he mean't server: addEvent("onClientImageRequest", true) addEventHandler("onClientImageRequest", root, function ( url, id ) fetchRemote( url, function ( datas, errno, player, url ) triggerClientEvent( player, "onClientGotImageResponse", player, url, datas, errno ) end, "", false, client, url ) end )
-
Yeah I didn't see your messages when I posted, because I had that tab already opened and it has no reply yet. (It didn't even warned me about new replies) Ok so here is my script based on the MIKI785 idea: Pre-requisites: As we can't create a static image without giving it an existing image, you need to download this image and put in in your resource folder: http://www.mediafire.com/view/ujgfu7wlt ... oading.png And add it to your meta.xml: <file src="imageloading.png" /> server: addEvent("onClientImageRequest", true) addEventHandler("onClientImageRequest", root, function onClientImageRequest( url, id ) fetchRemote( url, function ( datas, errno, player, url ) triggerClientEvent( player, "onClientGotImageResponse", player, url, datas, errno ) end, "", false, client, url ) end ) client: local _loadingImage = "imageloading.png" local _waitingForImage = {} local _imgsOnCache = {} function isUrl( str ) return string.sub(str, 1, 4) == "http" end function getExtension( str ) return string.match(str, "([^%.]+)$") end local _guiCreateStaticImage = guiCreateStaticImage function guiCreateStaticImage( x, y, width, height, path, relative, parent ) if not isUrl(path) then return _guiCreateStaticImage( x, y, width, height, path, relative, parent ) end local img = _guiCreateStaticImage( x, y, width, height, _loadingImage, relative, parent ) setRemoteImage(img, path) return img end local _guiStaticImageLoadImage = guiStaticImageLoadImage function guiStaticImageLoadImage( elem, path ) if not isUrl(path) then return _guiStaticImageLoadImage( elem, path ) end return setRemoteImage( elem, path ) end function generateTmpFilename( img, path ) local str = tostring(img).."_"..tostring(getTickCount()).."."..tostring(getExtension(path)) str = string.gsub(str, "userdata: ", "") return str end function setRemoteImage( img, path ) local currentPath = getElementData(img, "_url") if path ~= currentPath then setElementData(img, "_url", path) setElementData(img, "_tmpfile", generateTmpFilename(img, path)) table.insert(_waitingForImage, img) return triggerServerEvent("onClientImageRequest", localPlayer, path) end end addEvent("onClientGotImageResponse", true) function onClientGotImageResponse( path, datas, errno ) local img, index = nil, nil for k, simage in ipairs (_waitingForImage) do if getElementData(simage, "_url") == path then img = simage index = k break end end if img and isElement(img) then local filename = getElementData(img, "_tmpfile") imageWriteToFile( filename, datas ) _guiStaticImageLoadImage(img, filename) table.remove(_waitingForImage, index) end end addEventHandler("onClientGotImageResponse", root, onClientGotImageResponse) function imageWriteToFile( filename, datas ) local file = fileExists(filename) and fileOpen(filename) or fileCreate(filename) if file then fileWrite(file, datas) fileClose(file) table.insert(_imgsOnCache, filename) end end function cleanUp () for k, filename in ipairs(_imgsOnCache) do fileDelete( filename ) end end addEventHandler("onClientResourceStop", resourceRoot, cleanUp) So you can now use guiCreateStaticImage and guiStaticImageLoadImage with an url as path.
-
Just to let you know I'm on it, but that's pretty huge because I need to reimplement some basic gui functions (gui(Set/Get)Size, gui(Set/Get)Position etc). Because the only way to do it is to create a texture from image datas and draw it using dxDrawImage. So yeah check this topic later. EDIT: Ah yeah, didn't think about that ! Well I had the idea to store it as a file but thought I would need to reload the resource to get it on the client-side. But not needed at all using ur way. Gonna try it right now.
-
No, just use relative positions and sizes for all of your gui elements. What's the difference between relative and absolute ? The absolute positions and sizes are using pixels of the screen. So if you place a gui at position (960;50) and the player has a 800*600 screen display, then the gui will be placed too much on the right, litterally out of the screen. But relative positions and sizes uses percentages of the current screen (0 = 0% , 0.5 = 50% and 1 = 100%). So it doesn't even care of the number of pixels the current screen has. 50% of your screen will be 50% on every other screens. If you are using the guieditor resource (which I recommend), you can tell it to use relative or absolute values, so make sure everything is set on relative values (there are 2 of them, one for the parent (guis that are directly drawn on the screen) and children (guis that has another gui as parent). If you don't want to recreate your entire gui, then drop your code here, tell me what resolution you were using while making it and I'll convert it for you. Regards, Citizen
-
If you are modifying the acl.xml directly, you have to shutdown the server first. Then add your resource into the Admin group and then start the server again. Cadell please stop ! Stop "helping" people with bad practices. I read only 2 post of you tonight and they are both bad answers.