Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 25/08/20 in all areas

  1. Grupo = "VIP" function Ativarvip (playerSource, commandName, accountName ) local admName = getAccountName (getPlayerAccount(playerSource )) if not isObjectInACLGroup ("user."..admName, aclGetGroup ( "Admin" ) ) then return outputChatBox ("Comando exclusivo para staffs.", playerSource)end --Verifica se quem está dando o VIP é um Admin if not accountName then return outputChatBox ("Correct syntax: /ativarvip (Nome)", playerSource) end --Se não informar um nome no comando o código para aqui if not getAccount (accountName) then return outputChatBox ("Não existe jogador com esse nome de usuário.", playerSource) end --Se o nome informado não for referente a nenhuma conta cadastrada para aqui aclGroupAddObject (aclGetGroup( Grupo ), "user."..accountName) --Depois de passar pelas verificações, adiciona o player no grupo outputChatBox ("O Jogador "..accountName.." Adquiriu um VIP em nosso Servidor", playerSource) end addCommandHandler = ("ativarvip", Ativarvip) Não testei, veja se vai funcionar. Você cometeu inúmeros erros no seu código, por exemplo: na linha 3 os parâmetros estão na ordem errada na linha 4 o "thePlayer" não fui atribuído nenhum valor em momento algum na linha 4 você declara o "accountname" mas no código todo você usa "accountName", note que são duas variáveis diferentes. na linha 4 você DEFINE um valor pro accountname no lugar da condição. sinceramente não sei se isso funciona, mas definitivamente não é recomendável. Acho que o que você queria fazer é local accountname = getAccountName(getPlayerAccount(thePlayer)) -- mesmo assim estaria errado porque esse thePlayer não existe, o valor é nulo. if accountname then ...... end OU if accountname == getAccountName(getPlayerAccount(thePlayer)) then --assim também está incorreto, só coloquei pra você ver a diferente. == é comparação, como se fosse um "é igual a?" e = vc está atribuindo um valor ...... end
    2 points
  2. Olá. Em Lua, geralmente usa-se metatabelas para criar estruturas orientadas à objetos. Há duas maneiras de criá-las; a primeira, separando métodos e atributos em diferentes partes do código; ou, criar apenas uma tabela, que vamos nomear como se fosse o nome da classe, e nela iremos definir tudo. Irei mostrar a segunda opção, onde você cria uma tabela (classe), e já insere os métodos e atributos. A palavra self é referência do objeto criado, nesse caso, dei o nome de sandwich. Basicamente, o que a função setmetatable faz é indexar a variável-objeto (sandwich) à classe Item. Dessa forma, objeto.método ou objeto:função(), irá executar algo da classe. Sempre use a palavra self como primeiro parâmetro da função, uma vez criada dentro da classe. Também, você pode chamar as funções/métodos dentro da classe. Vejo que você tem conhecimento sobre o assunto, sabe do que estou falando.
    2 points
  3. What is GizmoPack? it is a modular package of objects that extends the mapping capabilities of the MTA. Update List: List of films from updates and presentations: Download link: GizmoPack Latest version Authors: THEGizmo (Modeler, the main originator) i XeN (help with the project, editor of the texture editor)
    1 point
  4. item = {} item.__index = item function newItem(x,y) local self = setmetatable({},item) self.x = x self.y = y return self end function newItem:getX() return self.x end function newItem:setX(x) self.x = x end function newItem:getY() return self.y end function newItem:setY(y) self.y = y end local myItem = newItem(50,50) myItem:getX() myItem:setX(500) Em questão de exportação, é complicado, no meu caso só consegui de duas maneiras: 1. criar um controlador dentro do arquivo da 'classe Item' ou .. 2. exporta a classe inteira para o outro resource que é basicamente copiar o arquivo da 'classe' e colocar no outro resource. *Não tem como instanciar o obj em um resource e exportar ele pra outro resource, esse eo ponto.
    1 point
  5. localPlayer representa o jogador local; ou seja, o jogador local pode ser qualquer um cliente (se você já tem um entendimento sobre client-server vai entender melhor). localPlayer pode ser qualquer um jogador, e aquele código 'pertence' a ele, porque os clientsides executam individualmente. Outros jogadores não existem no ambiente de tal cliente, podem ser acessados apenas como jogadores remotos. Falando sobre a condição: agora que está esclarecido, você deve entender que isso irá verificar se o jogador local é aquele que foi especificado no comando /voice, se não for, a transmissão de voz é desativada.
    1 point
  6. E não se esqueça de configurar as permissões no meta : <aclrequest> <right name="function.aclGroupAddObject" access="true" /> <right name="function.aclGroupRemoveObject" access="true"/> </aclrequest> assim que entrar no server pressione F8 e digite: "aclrequest" e você terá a sintaxe para a liberação das permissões.
    1 point
  7. Esse comando está no lado server, certo? Como o BlackSCR já respondeu, o source é passado como argumento nesse caso, ficando assim: function pos (source, cmd) ............... end Parâmetros do addCommandHandler no server-side: player playerSource, string commandName [, string argumento1, string argumento2, ... ] Parâmetros do addCommandHandler no client-side: string commandName [, string argumento1, string argumento2, ... ] No client side não precisa declarar o source como argumento, ele é o localPlayer! Recomendo que coloque sua função no lado do client. Dá uma estudada melhor na página da wiki, está tudo detalhado aqui: addCommandHandler
    1 point
  8. Just insert the player's element into a table instead of return it immediately. And return this table at the end. -- SHARED function findPlayers(part) local found = {} local players = getElementsByType("player") for i = 1, #players do local player = players[i] if tonumber(part) and getElementData(player, "id") == tonumber(part) and getElementData(player, "loggedIn") then table.insert(found, player) else local part = tostring(part):lower() local name = getPlayerName(player):lower():gsub("#%x%x%x%x%x%x", "") if name:find(part) then table.insert(found, player) end end end return found end
    1 point
  9. Here: addEventHandler("onClientResourceStart", resourceRoot, function ( ) setTimer ( function ( ) refreshList ( ) local file = xmlLoadFile ( '@saving.xml', 'data' ) if file then for i, v in ipairs ( xmlNodeGetChildren( file ) ) do local name = tostring( xmlNodeGetAttribute( v, 'name' ) ) local enabled = toboolean( xmlNodeGetAttribute( v, 'enabled' ) ) if ( getModData(name) and tostring( enabled ):lower ( ) ~= "false" ) then --[[ here ]] end end end end, 500, 1 ) end ) (download + register the name) local immediatelyLoading = {} -- -- onClientResourceStart -- local _, _, dff, txd = getModData(name) dff = 'modlar/' .. dff txd = 'modlar/' .. txd -- set up status local loadingStatus = { value = 2, name = name, dff = dff, txd = txd } -- set up reference to status immediatelyLoading[dff] = loadingStatus immediatelyLoading[txd] = loadingStatus -- -- onClientFileDownloadComplete -- local loadingStatus = immediatelyLoading[file] local value = loadingStatus.value value = value - 1 loadingStatus.value = value if value == 0 then immediatelyLoading[loadingStatus.dff] = nil -- clear immediatelyLoading[loadingStatus.txd] = nil -- clear local name = immediatelyLoading.name -- load model end And also here: function onDownloadFinish (file, success) if ( source == resourceRoot ) then if ( success ) then refreshList() new("Your mod has been successfully downloaded ("..tostring(file)..")", 0, 255, 0) end end end addEventHandler ( "onClientFileDownloadComplete", getRootElement(), onDownloadFinish ) Using registration to load the mod immediately when both files are downloaded.
    1 point
  10. source, tem que ser definido nos parâmetros ali dentro da function
    1 point
  11. Bom, fiz um exemplo (básico, e funcional, onde você pode tirar algum proveito). (Não testado). local table_marker = { } addCommandHandler( "mark", function ( player ) if table_marker[player] then return outputChatBox("Já Existe um Marker em Você!", player, 255,255,255, true) end local x,y,z = getElementPosition(player) table_marker[player] = createMarker ( x, y, z, "cylinder", 2, 255, 255, 0, 170 ) attachElements ( table_marker[player], player, 0, 0, -1) setElementID ( table_marker[player], getPlayerSerial(player) ) end) addEventHandler("onMarkerHit", getRootElement ( ), function ( hitElement, d ) if isElement(hitElement) and getElementType (hitElement) == "player" and d then local player = take_player ( getElementID(source) ) if player then outputChatBox(""..getPlayerName(hitElement).." Colidiu no seu Marker!", player, 255,255,255, true) else outputChatBox("Não Encontrado!") end end end) function take_player ( id ) for i, v in ipairs( getElementsByType ( "player" ) ) do if getPlayerSerial(v) == id then return v end end return false end
    1 point
×
×
  • Create New...