Search the Community

Showing results for tags 'tutorial'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Multi Theft Auto: San Andreas 1.x
    • Support for MTA:SA 1.x
    • Open Source Contributors
    • Suggestions
    • Ban appeals
  • General MTA
    • News
    • Media
    • Site/Forum/Discord/Mantis/Wiki related
    • MTA Chat
    • Other languages
  • community.mtasa.com
    • Scripting
    • Maps
    • Resources
    • Other Creations & GTA modding
    • Competitive gameplay
    • Servers
  • Other
    • General
    • Multi Theft Auto 0.5r2
    • Third party GTA mods
  • Archive
    • Archived Items
    • Trash
  • Private Bugtracker

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Gang


Location


Occupation


Interests

Found 14 results

  1. Callum

    FREE Scripting Lessons!

    I have launched a new, entirely free service that offers personal tutoring to anybody who wants to learn new MTA skills, including: Setting up an MTA Server Resources / scripts / meta.xml Writing Lua code MTA concepts such as events, timers, client-side interfaces, etc. SQL and other data storage methods I've been in the MTA community for coming up to 11 years now, and have worked with many of the 'big servers' that exist today, so the information will be delivered by people (including myself) with plenty of experience. The few students I'm already tutoring are well on their way to writing some basic MTA scripts already, after only a few days (totaling 4-5 hours). If you want to get involved, be sure to join the Discord server. You can also click here to see the recommended syllabus. If you know of anybody else who wants to learn to script, be sure to let them know of this great offer!
  2. O que é? Pra que serve? Um banco de dados é onde ficam salvos diversos tipos de dados que são usados entre as sessões dos jogadores e do servidor, isto significa que mesmo se o jogador relogar no servidor ou até mesmo o servidor reiniciar, os dados salvos no banco de dados não são perdidos. (se o script que salvou lá foi feito corretamente). O que posso salvar neles? O MTA já cria 2 bancos de dados padrão quando vc cria seu servidor, são eles: internal.db - Onde são salvos todos os dados das contas dos jogadores, login, senha, grana do bolso, posição do jogador quando deslogou, vida, colete, skin, armas, munição, etc. registry.db - Onde são salvos todos os dados que são utilizados pelos resources, como por exemplo melhores pontuações das corridas (race gamemode), proprietários das casas, dados bancários dos jogadores, saldo bancário dos jogadores, carros comprados pelos jogadores, roupas compradas pelos jogadores, empresas adquiridas pelos jogadores, etc. Onde eles estão? Estes dois bancos de dados estão na pasta deathmatch do seu servidor, estão na linguagem SQLite. Você ainda pode criar outros bancos de dados externos, para serem usados pelos resources, mas na minha opinião isso não é recomendável, uma vez que vc usaria MySQL, que é mais complexo e exige certos cuidados de acesso e domínio, mas alguns servidores profissionais precisam fazer assim pois fizeram os bancos de dados ficarem fora do servidor em outro IP por segurança, dai é necessário ter bancos de dados externos. Nesse tutorial vamos tratar somente dos bancos de dados nativos do MTA, por serem mais fáceis de entender. Como mexo neles? Para salvar alguma coisa na conta do jogador, isto é, no internal.db, você usa setAccountData, e para obter esses dados depois, use getAccountData. É extremamente simples, funciona da mesma forma que um setElementData, mas em vez de salvar uma data temporária em um elemento, salva uma data permanente numa conta. Porém, para salvar alguma coisa no registry.db, é um pouco mais complicado, uma vez que vc vai precisar criar uma tabela nova para cada resource. Por exemplo, vc acabou de criar um resource de ranking por kills/deaths e você deseja salvar esse ranking no banco de dados para que ao reiniciar o resource ou o servidor, o ranking não seja perdido. Para isso vc vai precisar primeiramente criar uma tabela no banco de dados registry.db, essa tabela será acessada pelo resource, que irá salvar os dados dele lá. Para fazer qualquer coisa neste banco de dados (criar tabelas, inserir, alterar, remover, deletar, inserir colunas em determinada tabela, etc) vc vai precisar usar isso: executeSQLQuery. Aqui, será necessário conhecimento em SQL para fazer isso, mas é mais fácil do que aprender uma linguagem de programação nova, pois suas opções e sintaxes são menores do que uma linguagem inteira de programação, você não vai inventar nenhum sistema novo aqui, apenas criar e gerenciar tabelas e dados. Criar tabela nova no banco de dados: (o Caps Lock não é uma regra, mas é melhor para entender o que é código e o que é nome) [Os seguintes códigos só funcionam server-side] executeSQLQuery ("CREATE TABLE IF NOT EXISTS nomedatabela (nomecoluna1 TEXT, nomecoluna2 REAL, nomecoluna3 INTEGER)") TEXT = Valores desta coluna serão textos. Podem ter símbolos, números e espaços. REAL = Valores desta coluna serão numéricos reais. (números decimais, positivos, negativos e 0.0) INTEGER = Valores desta coluna serão numéricos inteiros. (positivos, negativos e 0) (não existe tipo BOOLEAN, use TEXT e insira valor "false" ou "true") (existe valor NULL, é diferente de vazio e diferente de 0. NULL significa ausência de dados. O NULL aparece quando você cria uma linha ou coluna nova sem atribuir valores a elas.) Deletar tabela do banco de dados: executeSQLQuery ("DROP TABLE nomedatabela") Todas as linhas, colunas, células e valores desta tabela são deletados junto. Deletar linhas da tabela: (as células não ficarão NULL) executeSQLQuery ("DELETE FROM nomedatabela WHERE colunaespecífica=?", valorDaCelulaEspecifica) O ? indica que o valor está após a declaração do SQL. Você poderia colocar o valor direto no lugar do ?. Mas por alguma razão, as vezes isso gera erro. Além disso, se o valor da célula estiver em uma variável no seu script, você não pode declarar a variável no lugar do ?. Ali só pode ser o valor direto, pois a declaração SQL inteira se trata de uma string. Por isso o uso do ?, que está recebendo o valor da variável que está depois da vírgula. Obs: Para verificar se uma célula tem valor nulo, não se usa os operadores lógicos de ==, <= >=. Para isso, usa-se IS NULL ou IS NOT NULL. Ex: executeSQLQuery ("DELETE nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3 IS NULL") Isso vai deletar todas as células da coluna 1 e coluna 2 onde a coluna 3 tem uma célula de valor NULL. Se a coluna 3 não tiver nenhuma célula de valor NULL, nada acontece. Inserir nova linha de valores: (ele vai criar automaticamente uma nova linha com novas células) executeSQLQuery ("INSERT INTO nomedatabela(nomecoluna1,nomecoluna2,nomecoluna3) VALUES(?,?,?)", valorCelulaColuna1, valorCelulaColuna2, valorCelulaColuna3) Neste caso, ele está inserindo 3 novos valores, cada valor em uma coluna. Se você não declarar os nomes das colunas, ele vai preencher na ordem das colunas automaticamente. Você pode deixar de declarar uma coluna se não quiser atribuir valor na célula daquela coluna. Se o tipo de valor da variável não for do tipo de dado daquela coluna, dará erro. Atualizar valores de células que já existem em uma tabela: (não é possível alterar os tipos de valores, é necessário editar o tipo da coluna se quiser fazer isso) executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2=?,nomecoluna3=? WHERE nomecoluna1=?", valorCelulaColuna2, valorCelulaColuna3, valorCelulaColuna1) No caso acima, ele vai atualizar as células das colunas 2 e 3 onde o valor da célula da coluna 1 for igual ao valor de valorColunaCelula1. OBS: Nada impede que você coloque as primeiras variáveis junto à declaração SQL, mas para fazer isso você deve "cortar" a string, inserir as variáveis e depois continuar a string, Ex: executeSQLQuery ("UPDATE nomedatabela SET nomecoluna2= '".. valorCelulaColuna2 .."',nomecoluna3='".. valorCelulaColuna2 .."' WHERE nomecoluna1=?", valorCelulaColuna1) Lembrando que o valor destas variáveis também são strings na declaração, portanto use aspas simples antes e depois de cada corte para transformar os valores em string. Os dois pontos (..) significam que estes valores fazem parte do argumento SQL. Da mesma forma, se vc usar "1" .. "1", será igual a "11". (Por isso acho muito mais fácil deixar tudo ? na declaração SQL e colocar as variáveis todas após a string.) Selecionar determinadas células da tabela: (usado geralmente para obter os valores destas células para usar no script, você pode selecionar somente 1 célula ou várias) executeSQLQuery ("SELECT nomecoluna1,nomecoluna2 FROM nomedatabela WHERE nomecoluna3=?", valorCelulaColuna3) Neste exemplo, ele vai selecionar a célula da coluna 1 e a célula da coluna 2, na linha onde a célula da coluna 3 for igual a valorCelulaColuna3. Alterar a tabela (adicionar coluna nova) [SQLite não suporta deletar coluna nem editar tipo de coluna] executeSQLQuery ("ALTER TABLE nomedatabela ADD nomecoluna4 REAL") Devido a limitações do SQLite, ALTER TABLE não pode ser usado para deletar uma coluna nem para editar seu tipo. Para fazer isso é necessário recriar a tabela inteira com as novas alterações. No exemplo acima, ele vai adicionar uma nova coluna chamada "nomecoluna4". Tá, mas como ficaria tudo isso dentro de um script? Fiz um código com vários testes de banco de dados. Cada comando faz alguma coisa. É possível mexer em um banco de dados manualmente sem usar scripts? Sim, é possível. Eu mesmo costumo fazer isso para corrigir algumas coisas rápidas sem precisar programar mais nada. Para poder abrir os bancos de dados (internal.db e registry.db) você deve usar um programa chamado DB Browser for SQLite. Um programa gratuito, leve e bem fácil de entender. Nele você consegue acessar todas as tabelas do banco de dados e editar os valores como se fosse em uma planilha do Excel. Basta ir na aba Navegar dados, selecionar a tabela que deseja modificar, clicar em cima da célula cujo valor deseja atualizar, digitar o novo valor, clicar em Aplicar e depois clicar em Escrever modificações (salvar banco de dados). Pronto! E tem mais! Se você já tiver conhecimento avançado com a linguagem SQL, você também pode fazer alterações avançadas via código dentro do programa. Basta acessar a aba Executar SQL, escrever o comando SQL corretamente e depois clicar no botão de Play. Espero ter ajudado.
  3. Olá pessoal. Fiz um vídeo bem detalhado sobre os painéis CEGUI, abordando algumas das principais dúvidas e também algumas propriedades que podem ajudar muito na hora de criar um painel GUI. Recomendo que assistam com fones de ouvido, ou então que ativem as legendas no YouTube. Críticas, sugestões, opiniões, perguntas relacionadas ao vídeo, podem fazer por aqui ou então deixar nos comentários do vídeo. (Deu muitíssimo trabalho de produzir o vídeo, deixe seu like neste post e no vídeo. Se puder, se inscreva no canal e acompanhe a página Lord Henry Entertainment no facebook.) Links e funções que aparecem no vídeo em ordem de aparição: http://static.cegui.org.uk/docs/0.8.7/ guiGetScreenSize guiCreateWindow guiCreateButton http://static.cegui.org.uk/static/WindowsLookProperties.html guiSetProperty http://static.cegui.org.uk/static/WindowsLookProperties.html#FrameWindow http://static.cegui.org.uk/static/WindowsLookProperties.html#Button isMouseOnGUICloseButton Standard_GUI_Font_Names guiSetEnabled guiSetAlpha guiEditSetReadOnly guiEditSetMasked Tenham todos uma boa semana.
  4. Yesterday evening, I started my apprenticeship with db, I always wanted to learn, because with it, I can do mods, which I could not do without. My introduction with Database was done by adapting a System ID to the DB in the login panel. I did this using the server-side of my login panel. The first thing we do, is to use dbConnect (Wiki), which will make the connection to the db file. local db = dbConnect("sqlite", "db/royalusers.db") It will create the "db" folder, in the resource files, and inside the folder, the "royalusers.db" file. After that, we create a table using the SQL functions. local newTable = dbExec(db, "CREATE TABLE IF NOT EXISTS RoyalUsers (id INT, name TEXT, login TEXT, pass TEXT, serial TEXT)") RoyalUsers - Table-name id INT, name TEXT, login TEXT, pass TEXT, serial TEXT - columns of the table. INT - INTERNAL NUMBER Now the part of using the table defined in the database. function registerPlayer(user, pass, conf) if user == "" then outputLoginMsg(source, "Preencha todos os campos!", "error") else if pass == "" then outputLoginMsg(source, "Preencha todos os campos!", "error") else if conf == "" then outputLoginMsg(source, "Preencha todos os campos!", "error") else if conf == pass then addAccount(tostring(user),tostring(pass)) triggerClientEvent(source, "onRoyalRegister", source) local query = dbPoll(dbQuery(db, "SELECT * FROM RoyalUsers WHERE login=?", user),-1) if #query == 0 then dbExec(db, "INSERT INTO RoyalUsers VALUES (?, ?, ?, ?, ?)", countIDs(), getPlayerName(source), user, pass, getPlayerSerial(source)) end outputLoginMsg(source, "Conta criada com sucesso! Aguarde...", "success") if not getAccount(user, pass) then outputLoginMsg(source, "Esta conta já está sendo utilizada!", "error") end else outputLoginMsg(source, "As senhas não estão iguais.", "error") end end end end end addEvent("onPlayerRequestRegister", true) addEventHandler("onPlayerRequestRegister", root, registerPlayer) function countIDs() local table = dbPoll(dbQuery(db, "SELECT * FROM RoyalUsers"), -1) local count = 1 for i, result in pairs(table) do count = count + 1 end return count end The login variable returns a table, it selects (SELECT) all the columns of the table, and checks if the login defined in the function does not exist in it, if it does not exist, it will add those information, the columns of the table RoyalUsers (INSERT INTO). VALUES (?, ?, ?, ?, ?) - "?" It is the amount of arguments that will be used to insert into the column. countIDs() - Function that returns the number of IDs in the table, and adds one more. getPlayerName(source) - Gets the player's name, and adds the "name" column of the table. user - Adds the user defined in the function, the column "login". pass - Adds the password set in the function, the "pass" column. getPlayerSerial(source) - Gets the player's serial, and adds the "serial" column of the table. Having the part in which the data that the player registers, are saved in the database, this part is ready. Now, just set the ID added to the database login, when the player logs in. function loginPlayer(source, user, pass) if user == "" then outputLoginMsg(source, "Preencha todos os campos!", "error") else if pass == "" then outputLoginMsg(source, "Preencha todos os campos!", "error") else local account = getAccount(user, pass) if account then logIn(source, account, pass) local queryTable = dbPoll(dbQuery(db, "SELECT * FROM RoyalUsers WHERE login='"..getAccountName(getPlayerAccount(source)).."'"), -1) for i, id in pairs(queryTable) do setElementData(source, "ID", id["id"]) end setTimer(setCameraTarget, 3000, 1, source, source) setTimer(triggerClientEvent, 14000, 1, source, "renderRoyalID", source) triggerClientEvent(source, "onRoyalLogin", source) outputLoginMsg(source, "Logado com sucesso! Aguarde...", "success") else outputLoginMsg(source, "Usuário ou senha incorretos!", "error") end end end end addEvent("onPlayerRequestLogin", true) The queryTable gets all the columns of the table, where the login = login of the player. After that, we loop the tables returned by the queryTable, and set the date "ID" to the player, according to the ID returned from the table defined in the loop. I want to make it clear that the tutorial did not go well explained, I just want to share, what I learned yesterday, and if I did something wrong, please let me know. ❤️
  5. blanco

    [Tut] Skin UVW Mapping

    Hello, in this video i'll show you guys the easiest way of UVW Mapping. You can use this method on skins or objects. Make sure that the textures that you'll use are 64 * 64, 128 * 128, 64 * 128 etc. Let me know in the comments if you want more 3DS Max tutorials like this in the near future. I hope I could help!
  6. É um script de proteção de bases! Tipo, apenas quem está na acl ''MARINHA'' pode ir para a base da marinha brasileira, como faço pra mais de uma acl poder ir para essa base? SCRIPT: RestricLocation = {} TeleportLocation = {} EnabledAlarm = true ColCuboid = false --------------------------------------- CONFIGS -------------------------------------------- RestricLocation["location1"] = {-264.21362304688,3335.7004394531,1.1062507629395} -- Local 1 RestricLocation["location2"] = {775.92932128906,2741.86544785156,150.10624694824} -- Local 2 TeleportLocation = {1976.0953369141,-1924.1055908203,13.546875} -- Local de TP GroupName = "MARINHA" -- Nome da Gang ou Grupo ACL GroupNameBy = 2 -- 1 para Gang, e 2 para ACL MsgInvasao = "Base da MARINHA! Você não pode entrar aqui!" EnableVehicleGodMode = true -- Habilitar HabilitarAdmin = false -- Todos admins vao poder entrar na base GodMode = false -- Ao entrar na área protegida, habilita GodMode NaoAtirar = false -- Ao entrar na área protegida, não podera atirar --------------------------------------- CONFIGS -------------------------------------------- function sendMsg(iplayer,msg) outputChatBox ( msg, iplayer, 255, 0, 0, true ) end function EnterPlace ( theElement ) local veh = getPedOccupiedVehicle(theElement) local accName = getAccountName(getPlayerAccount(theElement)) if HabilitarAdmin == true then if ( isObjectInACLGroup ("user."..accName, aclGetGroup ( "Admin" ) ) ) then return end end if (getElementType ( theElement ) == "player") and (PlayerHaveLevel (theElement) == false) then sendMsg(theElement,MsgInvasao) if veh then setElementPosition( veh, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) else setElementPosition( theElement, TeleportLocation[1], TeleportLocation[2], TeleportLocation[3]) end sendMsgOwners(theElement) elseif getElementType ( theElement ) == "vehicle" then SetVehicleGodMode(theElement,true) end end function ExitPlace ( theElement ) if GodMode == true then setElementData(theElement,"blood",12000) end if NaoAtirar == true then toggleControl(theElement, "fire", true) toggleControl(theElement, "vehicle_fire", true) toggleControl(theElement, "vehicle_secondary_fire", true) toggleControl(theElement, "aim_weapon", true) end if getElementType ( theElement ) == "vehicle" then SetVehicleGodMode(theElement,false) end end function PlayerHaveLevel( PlayerID ) if GroupNameBy == 1 then if ( getElementData ( PlayerID , "gang" ) == GroupName ) then if GodMode == true then setElementData(PlayerID,"blood",999999999999999) end if NaoAtirar == true then toggleControl (PlayerID, "fire", false) toggleControl (PlayerID, "vehicle_fire", false) toggleControl (PlayerID, "vehicle_secondary_fire", false) toggleControl (PlayerID, "aim_weapon", false) end return true else return false end else local accName = getAccountName ( getPlayerAccount ( PlayerID ) ) if ( isObjectInACLGroup ("user."..accName, aclGetGroup ( GroupName ) ) ) then if GodMode == true then setElementData(PlayerID,"blood",999999999999999) end if NaoAtirar == true then toggleControl (PlayerID, "fire", false) toggleControl (PlayerID, "vehicle_fire", false) toggleControl (PlayerID, "vehicle_secondary_fire", false) toggleControl (PlayerID, "aim_weapon", false) end return true else return false end end end function ResourceStart( ) LoadLocations() CreateCollision() end addEventHandler( "onResourceStart", getResourceRootElement( getThisResource() ),ResourceStart) function LoadLocations() local RX, RY, RZ, WRX, WRX, WRX if(RestricLocation["location1"][1] > RestricLocation["location2"][1]) then RestricLocation["maxx"] = RestricLocation["location1"][1] RestricLocation["minx"] = RestricLocation["location2"][1] else RestricLocation["maxx"] = RestricLocation["location2"][1] RestricLocation["minx"] = RestricLocation["location1"][1] end if(RestricLocation["location1"][2] > RestricLocation["location2"][2]) then RestricLocation["maxy"] = RestricLocation["location1"][2] RestricLocation["miny"] = RestricLocation["location2"][2] else RestricLocation["maxy"] = RestricLocation["location2"][2] RestricLocation["miny"] = RestricLocation["location1"][2] end if(RestricLocation["location1"][3] > RestricLocation["location2"][3]) then RestricLocation["maxz"] = RestricLocation["location1"][3] RestricLocation["minz"] = RestricLocation["location2"][3] else RestricLocation["maxz"] = RestricLocation["location2"][3] RestricLocation["minz"] = RestricLocation["location1"][3] end end function CreateCollision() RX = RestricLocation["minx"] WRX = RestricLocation["maxx"] - RestricLocation["minx"] RY = RestricLocation["miny"] WRY = RestricLocation["maxy"] - RestricLocation["miny"] RZ = RestricLocation["minz"] WRZ = RestricLocation["maxz"] - RestricLocation["minz"] ColCuboid = createColCuboid ( RX, RY, RZ, WRX, WRY, WRZ ) if ColCuboid then addEventHandler ( "onColShapeHit", ColCuboid, EnterPlace ) addEventHandler ( "onColShapeLeave", ColCuboid, ExitPlace ) else outputDebugString("Erro, verifique: location1 e location2") end end function ResourceStop( ) destroyElement ( ColCuboid ) end addEventHandler( "onResourceStop", getResourceRootElement( getThisResource() ),ResourceStop) function sendMsgOwners( PlayerID ) local connectedPlayers = getElementsByType ( "player" ) for i, aPlayer in ipairs(connectedPlayers) do if(PlayerHaveLevel (aPlayer) == true) then sendMsg(aPlayer," O Jogador " ..getPlayerName ( PlayerID ) .." esta tentando invadir a sua BASE !") end end end function SetVehicleGodMode( VehicleID, godEoD ) if EnableVehicleGodMode == true then setElementData(VehicleID, "godmode", godEoD) setVehicleDamageProof (VehicleID, godEoD ) end end
  7. QUERO TROCAR A OPÇÃO 'PERDER A CABEÇA'' PELO MODO SUPERMAN ( VOAR ) SERVER: function showPanel(thePlayer) accountname = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user." .. accountname, aclGetGroup("VIP DIAMANTE")) then triggerClientEvent(thePlayer, "abrirVip", getRootElement()) end end function onResStart() for index, player in ipairs(getElementsByType("player")) do bindKey(player, "o", "down", showPanel) end end addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), onResStart) function onPlayerJoin() bindKey(source, "o", "down", showPanel) end addEventHandler("onPlayerJoin", getRootElement(), onPlayerJoin) function cleanAll(player) for index, player in ipairs(getElementsByType("player")) do unbindKey(player, "o", "down", showPanel) end end addEventHandler("onResourceStop", getResourceRootElement(getThisResource()), cleanAll) function skinVip1() setElementModel(source, 0) displayServerMessage(source, "Você Pegou Skin VIP", "confirm") end addEvent("skinVip1", true) addEventHandler("skinVip1", getRootElement(), skinVip1) function skinVip2() setElementModel(source, 123) displayServerMessage(source, "Você Pegou Skin VIP 2", "confirm") end addEvent("skinVip2", true) addEventHandler("skinVip2", getRootElement(), skinVip2) function vidacolete() setPedStat(source, 24, 999) setElementHealth(source, 200) setPedArmor(source, 100) displayServerMessage(source, "Vida 200% e Colete completo", "confirm") end addEvent("vidacolete", true) addEventHandler("vidacolete", getRootElement(), vidacolete) function kitarmas1() giveWeapon(source, 1, 2000) giveWeapon(source, 2, 2000) giveWeapon(source, 10, 2000) giveWeapon(source, 23, 2000) giveWeapon(source, 26, 2000) giveWeapon(source, 28, 2000) giveWeapon(source, 31, 2000) giveWeapon(source, 34, 2000) giveWeapon(source, 37, 2000) giveWeapon(source, 39, 2000) giveWeapon(source, 43, 2000) giveWeapon(source, 46, 2000) displayServerMessage(source, "Você Pegou Kit Armas 1", "confirm") end addEvent("kitarmas1", true) addEventHandler("kitarmas1", getRootElement(), kitarmas1) function kitarmas2() giveWeapon(source, 1, 2000) giveWeapon(source, 6, 2000) giveWeapon(source, 10, 2000) giveWeapon(source, 22, 2000) giveWeapon(source, 25, 2000) giveWeapon(source, 29, 2000) giveWeapon(source, 31, 2000) giveWeapon(source, 34, 2000) giveWeapon(source, 37, 2000) giveWeapon(source, 39, 2000) giveWeapon(source, 43, 2000) giveWeapon(source, 46, 2000) displayServerMessage(source, "Você Pegou Kit Armas 2", "confirm") end addEvent("kitarmas2", true) addEventHandler("kitarmas2", getRootElement(), kitarmas2) function habilidades() setPedStat(source, 69, 1000) setPedStat(source, 70, 1000) setPedStat(source, 71, 1000) setPedStat(source, 72, 1000) setPedStat(source, 73, 1000) setPedStat(source, 74, 1000) setPedStat(source, 75, 1000) setPedStat(source, 76, 1000) setPedStat(source, 77, 1000) setPedStat(source, 78, 1000) setPedStat(source, 79, 1000) displayServerMessage(source, "Você Pegou Todas Habilidades", "confirm") end addEvent("habilidades", true) addEventHandler("habilidades", getRootElement(), habilidades) function jetpack1() if getPedOccupiedVehicle(source) then displayServerMessage(source, "Saia do Veiculo Primeiro", "warning") return end givePedJetPack(source) displayServerMessage(source, "Jetpack Ativado", "confirm") end addEvent("jetpack1", true) addEventHandler("jetpack1", getRootElement(), jetpack1) function jetpack2() if getPedOccupiedVehicle(source) then displayServerMessage(source, "Saia do Veiculo Primeiro", "warning") return end removePedJetPack(source) displayServerMessage(source, "Jetpack Desativado", "warning") end addEvent("jetpack2", true) addEventHandler("jetpack2", getRootElement(), jetpack2) function invisivel1() if getElementAlpha(source) == 255 then setElementAlpha(source, 0) setPlayerNametagShowing(source, false) displayServerMessage(source, "Skin Invisivel Ativado", "confirm") end end addEvent("invisivel1", true) addEventHandler("invisivel1", getRootElement(), invisivel1) function invisivel2() if getElementAlpha(source) == 0 then setElementAlpha(source, 255) setPlayerNametagShowing(source, true) displayServerMessage(source, "Skin Invisivel Desativado", "warning") end end addEvent("invisivel2", true) addEventHandler("invisivel2", getRootElement(), invisivel2) function velocidade1() displayServerMessage(source, "Sua Velocidade Esta Lenta", "confirm") end addEvent("velocidade1", true) addEventHandler("velocidade1", getRootElement(), velocidade1) function velocidade2() displayServerMessage(source, "Sua Velocidade Esta Rapida", "confirm") end addEvent("velocidade2", true) addEventHandler("velocidade2", getRootElement(), velocidade2) function velocidade3() displayServerMessage(source, "Sua Velocidade Esta Normal", "confirm") end addEvent("velocidade3", true) addEventHandler("velocidade3", getRootElement(), velocidade3) function proVeiculo1() if isPedInVehicle(source) then if isVehicleDamageProof(getPedOccupiedVehicle(source)) == false then setVehicleDamageProof(getPedOccupiedVehicle(source), true) displayServerMessage(source, "Proteção Veiculo Ativado", "confirm") end else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("proVeiculo1", true) addEventHandler("proVeiculo1", getRootElement(), proVeiculo1) function proVeiculo2() if isPedInVehicle(source) then if isVehicleDamageProof(getPedOccupiedVehicle(source)) == true then setVehicleDamageProof(getPedOccupiedVehicle(source), false) displayServerMessage(source, "Proteção Veiculo Desativado", "warning") end else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("proVeiculo2", true) addEventHandler("proVeiculo2", getRootElement(), proVeiculo2) function veiculoInvisivel1() if isPedInVehicle(source) then if getElementAlpha(getPedOccupiedVehicle(source)) == 255 then setElementAlpha(getPedOccupiedVehicle(source), 0) displayServerMessage(source, "Veiculo Invisivel Ativado", "confirm") end else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("veiculoInvisivel1", true) addEventHandler("veiculoInvisivel1", getRootElement(), veiculoInvisivel1) function veiculoInvisivel2() if isPedInVehicle(source) then if getElementAlpha(getPedOccupiedVehicle(source)) == 0 then setElementAlpha(getPedOccupiedVehicle(source), 255) displayServerMessage(source, "Veiculo Invisivel Desativado", "warning") end else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("veiculoInvisivel2", true) addEventHandler("veiculoInvisivel2", getRootElement(), veiculoInvisivel2) function agua1() if isPedInVehicle(source) then triggerClientEvent(source, "aguaTrue", getRootElement()) displayServerMessage(source, "Dirigir Sobre Água Ativado", "confirm") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("agua1", true) addEventHandler("agua1", getRootElement(), agua1) function agua2() if isPedInVehicle(source) then triggerClientEvent(source, "aguaFalse", getRootElement()) displayServerMessage(source, "Dirigir Sobre Água Desativado", "warning") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("agua2", true) addEventHandler("agua2", getRootElement(), agua2) function fly1() if isPedInVehicle(source) then triggerClientEvent(source, "flyTrue", getRootElement()) displayServerMessage(source, "Voar Com o Carro Ativado", "confirm") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("fly1", true) addEventHandler("fly1", getRootElement(), fly1) function fly2() if isPedInVehicle(source) then triggerClientEvent(source, "flyFalse", getRootElement()) displayServerMessage(source, "Voar Com o Carro Desativado", "warning") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("fly2", true) addEventHandler("fly2", getRootElement(), fly2) function cabeca1() setPedHeadless(source, true) displayServerMessage(source, "Você Tirou Sua Cabeça", "confirm") end addEvent("cabeca1", true) addEventHandler("cabeca1", getRootElement(), cabeca1) function cabeca2() setPedHeadless(source, false) displayServerMessage(source, "Você Colocou Sua Cabeça", "warning") end addEvent("cabeca2", true) addEventHandler("cabeca2", getRootElement(), cabeca2) function andar1() setPedWalkingStyle(source, 126) displayServerMessage(source, "Estilo Andar 1 Ativado", "confirm") end addEvent("andar1", true) addEventHandler("andar1", getRootElement(), andar1) function andar2() setPedWalkingStyle(source, 122) displayServerMessage(source, "Estilo Andar 2 Ativado", "confirm") end addEvent("andar2", true) addEventHandler("andar2", getRootElement(), andar2) function andar3() setPedWalkingStyle(source, 0) displayServerMessage(source, "Estilo Andar Desativado", "warning") end addEvent("andar3", true) addEventHandler("andar3", getRootElement(), andar3) function jump1() if isPedInVehicle(source) then triggerClientEvent(source, "jumpStart", getRootElement()) displayServerMessage(source, "Pular Com o Veiculo Ativado", "confirm") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("jump1", true) addEventHandler("jump1", getRootElement(), jump1) function jump2() if isPedInVehicle(source) then triggerClientEvent(source, "jumpStop", getRootElement()) displayServerMessage(source, "Pular Com o Veiculo Desativado", "warning") else displayServerMessage(source, "Você Deve Estar Em Um Veiculo Para Definir Isto", "warning") end end addEvent("jump2", true) addEventHandler("jump2", getRootElement(), jump2) veiculo = {} function carro() if getPedOccupiedVehicle(source) then displayServerMessage(source, "Saia Do Veiculo Primeiro", "warning") return end if veiculo[source] and isElement(veiculo[source]) then destroyElement(veiculo[source]) end local x, y, z = getElementPosition(source) veiculo[source] = createVehicle(411, x, y, z) warpPedIntoVehicle(source, veiculo[source]) displayServerMessage(source, "Você Pegou Carro VIP", "confirm") end addEvent("carro", true) addEventHandler("carro", getRootElement(), carro) veiculo = {} function moto() if getPedOccupiedVehicle(source) then displayServerMessage(source, "Saia Do Veiculo Primeiro", "warning") return end if veiculo[source] and isElement(veiculo[source]) then destroyElement(veiculo[source]) end local x, y, z = getElementPosition(source) veiculo[source] = createVehicle(522, x, y, z) warpPedIntoVehicle(source, veiculo[source]) displayServerMessage(source, "Você Pegou Moto Vip", "confirm") end addEvent("moto", true) addEventHandler("moto", getRootElement(), moto) -- //#Mensages function displayServerMessage(source, message, type) triggerClientEvent(source, "servermessages", getRootElement(), message, type) end -- //#Status addEvent("callServerAccountName", true) addEventHandler("callServerAccountName", root, function (thePlayer) if thePlayer then local account = getPlayerAccount(thePlayer) if account then if isGuestAccount(account) then setElementData(thePlayer,"account-name", "Não logado") else local accountName = getAccountName(account) setElementData(thePlayer, "account-name", accountName) end end end end ) addEventHandler("onPlayerLogin", root, function() local accountName = getAccountName(getPlayerAccount(source)) setElementData(source, "account-name", accountName) end ) addEventHandler("onPlayerLogout", root, function() setElementData(source, "account-name", "Não logado") end ) function Events() if eventName == "onResourceStart" then for k,v in ipairs(getElementsByType("player")) do setElementData(v, "IP", getPlayerIP(v)) end elseif eventName == "onPlayerJoin" then setElementData(source, "IP", getPlayerIP(source)) end end addEventHandler("onResourceStart", resourceRoot, Events) addEventHandler("onPlayerJoin", root, Events) addEvent("online", true) addEventHandler("online", getRootElement(), function() setElementData(source,"maxPlayers",getMaxPlayers(source)) setElementData(source,"numPlayers",getPlayerCount(source)) end) CLIENT: local screenH, screenW = guiGetScreenSize() local x, y = (screenH/1366), (screenW/768) local Font_1 = dxCreateFont("font/font.ttf", 14) local Font_2 = dxCreateFont("font/font.ttf", 9) local Font_3 = dxCreateFont("font/font.ttf", 13) local Font_4 = dxCreateFont("font/font.ttf", 14) local Font_5 = dxCreateFont("font/font.ttf", 11) local movertexto = 0 cor = {} vip1 = false function dxPainelVip1() dxDrawRectangle(x*423, y*184, x*520, y*500, tocolor(0, 0, 0, 111), false) dxDrawRectangle(x*425, y*186, x*516, y*35, tocolor(0, 111, 255, 255), false) dxDrawText("VIP DIAMANTE", x*425, y*186, x*941, y*221, tocolor(255, 255, 255, 255), x*1.00, Font_1, "center", "center", false, false, false, false, false) local seconds = getTickCount() / 1000 local angle = math.sin(seconds) * 10 dxDrawImage(x*486, y*186, x*192, y*138, "img/jogador.png", angle, 0, -40, tocolor(255, 255, 255, 255), false) dxDrawImage(x*685, y*186, x*192, y*138, "img/veiculo.png", angle, 0, -40, tocolor(255, 255, 255, 255), false) cor[1] = tocolor(0, 0, 0, 111) cor[2] = tocolor(0, 0, 0, 111) if cursorPosition(x*820, y*247, x*104, y*25) then cor[1] = tocolor(0, 111, 255, 255) end if cursorPosition(x*443, y*247, x*104, y*25) then cor[2] = tocolor(0, 111, 255, 255) end dxDrawRectangle(x*820, y*247, x*104, y*25, cor[1], false) dxDrawRectangle(x*443, y*247, x*104, y*25, cor[2], false) dxDrawText("Veiculo", x*820, y*247, x*924, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) dxDrawText("Jogador", x*443, y*247, x*547, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) dxDrawLine(x*427, y*223, x*936, y*223, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*427, y*289, x*937, y*289, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*427, y*644, x*937, y*644, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*681, y*298, x*681, y*634, tocolor(255, 255, 255, 255), x*1, false) movertexto = movertexto + 0.999*3 local movertexto1, movertexto2 = interpolateBetween (x*430, y*653, 0, x*630, y*653, 0, movertexto, "SineCurve") dxDrawRectangle(x*425, y*647, x*516, y*35, tocolor(0, 111, 255, 255), false) dxDrawText("Brasil Vida de Playboy", movertexto1, movertexto2, x, y, tocolor(255, 255, 255, 255), x*1.00, Font_3, "left", "top", false, false, false, false, false) cor[3] = tocolor(0, 0, 0, 111) cor[4] = tocolor(0, 0, 0, 111) cor[5] = tocolor(0, 0, 0, 111) cor[6] = tocolor(0, 0, 0, 111) cor[7] = tocolor(0, 0, 0, 111) cor[8] = tocolor(0, 0, 0, 111) cor[9] = tocolor(0, 0, 0, 111) cor[10] = tocolor(0, 0, 0, 111) cor[11] = tocolor(0, 0, 0, 111) cor[12] = tocolor(0, 0, 0, 111) cor[13] = tocolor(0, 0, 0, 111) cor[14] = tocolor(0, 0, 0, 111) cor[15] = tocolor(0, 0, 0, 111) cor[16] = tocolor(0, 0, 0, 111) cor[17] = tocolor(0, 0, 0, 111) cor[18] = tocolor(0, 0, 0, 111) cor[19] = tocolor(0, 0, 0, 111) cor[20] = tocolor(0, 0, 0, 111) if cursorPosition(x*465, y*328, x*180, y*26) then cor[3] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*358, x*180, y*26) then cor[4] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*421, x*180, y*26) then cor[5] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*451, x*180, y*26) then cor[6] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*482, x*180, y*26) then cor[7] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*328, x*180, y*26) then cor[8] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*388, x*84, y*26) then cor[9] = tocolor(0, 111, 255, 255) end if cursorPosition(x*816, y*388, x*84, y*26) then cor[10] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*544, x*180, y*26) then cor[11] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*574, x*180, y*26) then cor[12] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*604, x*180, y*26) then cor[13] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*451, x*84, y*26) then cor[14] = tocolor(0, 111, 255, 255) end if cursorPosition(x*816, y*451, x*84, y*26) then cor[15] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*513, x*84, y*26) then cor[16] = tocolor(0, 111, 255, 255) end if cursorPosition(x*816, y*513, x*84, y*26) then cor[17] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*574, x*84, y*26) then cor[18] = tocolor(0, 111, 255, 255) end if cursorPosition(x*816, y*574, x*84, y*26) then cor[19] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*604, x*180, y*26) then cor[20] = tocolor(0, 111, 255, 255) end dxDrawText("Skins", x*465, y*303, x*645, y*324, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*328, x*180, y*26, cor[3], false) dxDrawRectangle(x*465, y*358, x*180, y*26, cor[4], false) dxDrawText("Skin VIP 1", x*465, y*328, x*645, y*354, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Skin VIP 2", x*465, y*358, x*645, y*384, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Armas", x*465, y*394, x*645, y*417, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*421, x*180, y*26, cor[5], false) dxDrawRectangle(x*465, y*451, x*180, y*26, cor[6], false) dxDrawRectangle(x*465, y*482, x*180, y*26, cor[7], false) dxDrawText("Kit 1", x*465, y*421, x*645, y*447, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Kit 2", x*465, y*451, x*645, y*477, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Habilidade", x*465, y*482, x*645, y*508, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Vida Colete", x*720, y*303, x*900, y*324, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*328, x*180, y*26, cor[8], false) dxDrawText("Vida Colete", x*720, y*328, x*900, y*354, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Jet Pack", x*720, y*364, x*900, y*385, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*388, x*84, y*26, cor[9], false) dxDrawRectangle(x*816, y*388, x*84, y*26, cor[10], false) dxDrawText("Pegar", x*720, y*388, x*804, y*414, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Tirar", x*816, y*388, x*900, y*414, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Velocidade do Jogo", x*465, y*518, x*645, y*539, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*544, x*180, y*26, cor[11], false) dxDrawRectangle(x*465, y*574, x*180, y*26, cor[12], false) dxDrawRectangle(x*465, y*604, x*180, y*26, cor[13], false) dxDrawText("Lento", x*465, y*544, x*645, y*570, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Rapido 3x", x*465, y*574, x*645, y*600, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Normal", x*465, y*604, x*645, y*630, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Invisibilidade", x*720, y*426, x*900, y*447, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*451, x*84, y*26, cor[14], false) dxDrawRectangle(x*816, y*451, x*84, y*26, cor[15], false) dxDrawText("Ativar", x*720, y*451, x*804, y*477, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*816, y*451, x*900, y*477, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Perder Cabeça", x*720, y*487, x*900, y*508, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*513, x*84, y*26, cor[16], false) dxDrawRectangle(x*816, y*513, x*84, y*26, cor[17], false) dxDrawText("Tirar", x*720, y*513, x*804, y*539, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Colocar", x*816, y*513, x*900, y*539, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Estilo De Andar", x*720, y*549, x*900, y*570, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*574, x*84, y*26, cor[18], false) dxDrawRectangle(x*816, y*574, x*84, y*26, cor[19], false) dxDrawRectangle(x*720, y*604, x*180, y*26, cor[20], false) dxDrawText("Stylo 1", x*720, y*574, x*804, y*600, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Stylo 2", x*816, y*574, x*900, y*600, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Andar Normal", x*720, y*604, x*900, y*630, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) cor[19] = tocolor(0, 0, 0, 111) if cursorPosition(x*630, y*247, x*104, y*25) then cor[19] = tocolor(0, 111, 255, 255) end dxDrawRectangle(x*630, y*247, x*104, y*25, cor[19], false) dxDrawText("Status", x*630, y*247, x*734, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) end vip2 = false function dxPainelVip2() dxDrawRectangle(x*423, y*184, x*520, y*500, tocolor(0, 0, 0, 111), false) dxDrawRectangle(x*425, y*186, x*516, y*35, tocolor(0, 111, 255, 255), false) dxDrawText("VIP DIAMANTE", x*425, y*186, x*941, y*221, tocolor(255, 255, 255, 255), x*1.00, Font_1, "center", "center", false, false, false, false, false) local seconds = getTickCount() / 1000 local angle = math.sin(seconds) * 10 dxDrawImage(x*486, y*186, x*192, y*138, "img/jogador.png", angle, 0, -30 , tocolor(255, 255, 255, 255), false) dxDrawImage(x*685, y*186, x*192, y*138, "img/veiculo.png", angle, 0, -30 , tocolor(255, 255, 255, 255), false) cor[1] = tocolor(0, 0, 0, 111) cor[2] = tocolor(0, 0, 0, 111) if cursorPosition(x*820, y*247, x*104, y*25) then cor[1] = tocolor(0, 111, 255, 255) end if cursorPosition(x*443, y*247, x*104, y*25) then cor[2] = tocolor(0, 111, 255, 255) end dxDrawRectangle(x*820, y*247, x*104, y*25, cor[1], false) dxDrawRectangle(x*443, y*247, x*104, y*25, cor[2], false) dxDrawText("Veiculo", x*820, y*247, x*924, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) dxDrawText("Jogador", x*443, y*247, x*547, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) dxDrawLine(x*427, y*223, x*936, y*223, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*427, y*289, x*937, y*289, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*427, y*644, x*937, y*644, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*681, y*298, x*681, y*634, tocolor(255, 255, 255, 255), x*1, false) movertexto = movertexto + 0.999*3 local movertexto1, movertexto2 = interpolateBetween (x*430, y*653, 0, x*630, y*653, 0, movertexto, "SineCurve") dxDrawRectangle(x*425, y*647, x*516, y*35, tocolor(0, 111, 255, 255), false) dxDrawText("Brasil Vida de Playboy", movertexto1, movertexto2, x, y, tocolor(255, 255, 255, 255), x*1.00, Font_3, "left", "top", false, false, false, false, false) cor[3] = tocolor(0, 0, 0, 111) cor[4] = tocolor(0, 0, 0, 111) cor[5] = tocolor(0, 0, 0, 111) cor[6] = tocolor(0, 0, 0, 111) cor[7] = tocolor(0, 0, 0, 111) cor[8] = tocolor(0, 0, 0, 111) cor[9] = tocolor(0, 0, 0, 111) cor[10] = tocolor(0, 0, 0, 111) cor[11] = tocolor(0, 0, 0, 111) cor[12] = tocolor(0, 0, 0, 111) cor[13] = tocolor(0, 0, 0, 111) cor[14] = tocolor(0, 0, 0, 111) cor[15] = tocolor(0, 0, 0, 111) cor[16] = tocolor(0, 0, 0, 111) cor[17] = tocolor(0, 0, 0, 111) cor[18] = tocolor(0, 0, 0, 111) if cursorPosition(x*465, y*328, x*180, y*26) then cor[3] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*358, x*180, y*26) then cor[4] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*421, x*180, y*26) then cor[5] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*451, x*180, y*26) then cor[6] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*328, x*180, y*26) then cor[7] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*358, x*180, y*26) then cor[8] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*512, x*180, y*26) then cor[9] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*542, x*180, y*26) then cor[10] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*421, x*180, y*26) then cor[11] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*451, x*180, y*26) then cor[12] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*512, x*180, y*26) then cor[13] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*542, x*180, y*26) then cor[14] = tocolor(0, 111, 255, 255) end if cursorPosition(x*465, y*602, x*84, y*26) then cor[15] = tocolor(0, 111, 255, 255) end if cursorPosition(x*561, y*602, x*84, y*26) then cor[16] = tocolor(0, 111, 255, 255) end if cursorPosition(x*720, y*602, x*84, y*26) then cor[17] = tocolor(0, 111, 255, 255) end if cursorPosition(x*816, y*602, x*84, y*26) then cor[18] = tocolor(0, 111, 255, 255) end dxDrawText("Veiculos", x*465, y*303, x*645, y*324, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*328, x*180, y*26, cor[3], false) dxDrawRectangle(x*465, y*358, x*180, y*26, cor[4], false) dxDrawText("Moto", x*465, y*328, x*645, y*354, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Carro", x*465, y*358, x*645, y*384, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Indestrutivel", x*465, y*394, x*645, y*417, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*421, x*180, y*26, cor[5], false) dxDrawRectangle(x*465, y*451, x*180, y*26, cor[6], false) dxDrawText("Ativar", x*465, y*421, x*645, y*447, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*465, y*451, x*645, y*477, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Colorido 'Rainbow'", x*720, y*303, x*900, y*324, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*328, x*180, y*26, cor[7], false) dxDrawRectangle(x*720, y*358, x*180, y*26, cor[8], false) dxDrawText("Ativar", x*720, y*328, x*900, y*354, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*720, y*358, x*900, y*384, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Invisivel", x*465, y*487, x*645, y*508, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*512, x*180, y*26, cor[9], false) dxDrawRectangle(x*465, y*542, x*180, y*26, cor[10], false) dxDrawText("Ativar", x*465, y*512, x*645, y*538, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*465, y*542, x*645, y*568, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Farol Colorido 'Rainbow'", x*720, y*394, x*900, y*415, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*421, x*180, y*26, cor[11], false) dxDrawRectangle(x*720, y*451, x*180, y*26, cor[12], false) dxDrawText("Ativar", x*720, y*421, x*900, y*447, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*720, y*451, x*900, y*477, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Pular 'Jum Car'", x*720, y*487, x*900, y*508, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*512, x*180, y*26, cor[13], false) dxDrawRectangle(x*720, y*542, x*180, y*26, cor[14], false) dxDrawText("Ativar", x*720, y*513, x*900, y*538, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*720, y*543, x*900, y*568, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Andar Na Agua", x*465, y*578, x*645, y*599, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*465, y*602, x*84, y*26, cor[15], false) dxDrawRectangle(x*561, y*602, x*84, y*26, cor[16], false) dxDrawText("Ativar", x*465, y*602, x*549, y*627, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*561, y*602, x*645, y*627, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Voar", x*720, y*578, x*900, y*599, tocolor(255, 255, 255, 255), x*1.00, Font_4, "center", "center", false, false, false, false, false) dxDrawRectangle(x*720, y*602, x*84, y*26, cor[17], false) dxDrawRectangle(x*816, y*602, x*84, y*26, cor[18], false) dxDrawText("Ativar", x*720, y*602, x*804, y*627, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) dxDrawText("Desativar", x*816, y*603, x*900, y*628, tocolor(255, 255, 255, 255), x*1.00, Font_5, "center", "center", false, false, false, false, false) cor[19] = tocolor(0, 0, 0, 111) if cursorPosition(x*630, y*247, x*104, y*25) then cor[19] = tocolor(0, 111, 255, 255) end dxDrawRectangle(x*630, y*247, x*104, y*25, cor[19], false) dxDrawText("Status", x*630, y*247, x*734, y*272, tocolor(255, 255, 255, 255), x*1.00, Font_2, "center", "center", false, false, false, false, false) end vip3 = false function dxPainelVip3() setTimer(function() triggerServerEvent("online",getLocalPlayer()) end, 100, 1, true) local nome = getPlayerName(getLocalPlayer()) local vida = math.floor(getElementHealth(getLocalPlayer())) local colete = math.floor(getPedArmor(getLocalPlayer())) local oxigenio = math.floor(getPedOxygenLevel(getLocalPlayer())) local ip = getElementData(getLocalPlayer(), "IP") local ping = getPlayerPing (getLocalPlayer()) local skin = getElementModel (getLocalPlayer()) local weaponAmmo = getPedTotalAmmo (getLocalPlayer()) local weaponID = getPedWeapon(getLocalPlayer()) local weaponName = getWeaponNameFromID(weaponID) local time = getRealTime() local hours = time.hour local minutes = time.minute local seconds = time.second if (hours >= 0 and hours < 10) then hours = "0"..time.hour end if (minutes >= 0 and minutes < 10) then minutes = "0"..time.minute end if (seconds >= 0 and seconds < 10) then seconds = "0"..time.second end local meses = {"Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"} local dias = {"Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sabado"} local dia = ("%02d"):format(time.monthday) local ano = ("%02d"):format(time.year + 1900) local diaa = dias[time.weekday + 1] local mes = meses[time.month + 1] local num = getElementData (getLocalPlayer(), "numPlayers") local max = getElementData (getLocalPlayer(), "maxPlayers") dxDrawRectangle(x*423, y*32, x*520, y*144, tocolor(0, 0, 0, 111), false) dxDrawRectangle(x*425, y*34, x*516, y*35, tocolor(0, 111, 255, 255), false) dxDrawText("Status", x*425, y*34, x*941, y*69, tocolor(255, 255, 255, 255), x*1.00, Font_1, "center", "center", false, false, false, false, false) dxDrawLine(x*427, y*69, x*937, y*69, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*427, y*169, x*937, y*169, tocolor(255, 255, 255, 255), x*1, false) dxDrawLine(x*681, y*75, x*681, y*165, tocolor(255, 255, 255, 255), x*1, false) dxDrawColorText("Nome: "..nome, x*440, y*79, x*655, y*93, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Conta: #006FFF"..tostring(getElementData(getLocalPlayer(), "account-name")), x*440, y*93, x*655, y*107, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Vida: #006FFF"..vida.."#FFFFFF% | Colete: #006FFF"..colete.."#FFFFFF% | Oxigenio: #006FFF"..oxigenio.."#FFFFFF%", x*440, y*107, x*655, y*121, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Ip: #006FFF"..(ip or "N/A"), x*440, y*121, x*655, y*135, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) if getElementData(getLocalPlayer(),"FPS") then playerFPS = getElementData(getLocalPlayer(),"FPS") else playerFPS = 0 end dxDrawColorText("PING: #006FFF"..ping.." #FFFFFF|#FFFFFF FPS: #006FFF"..playerFPS, x*440, y*135, x*655, y*149, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Skin: #006FFF"..skin, x*440, y*149, x*655, y*163, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Arma: #006FFF"..weaponName.." #FFFFFF(#FFFFFFId: #006FFF"..weaponID.."#FFFFFF) (#FFFFFFMunicao: #006FFF"..weaponAmmo.."#FFFFFF)", x*695, y*79, x*910, y*93, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Hora: #006FFF"..hours.." #FFFFFF: #006FFF"..minutes.." #FFFFFF: #006FFF"..seconds, x*695, y*93, x*910, y*107, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Data: #006FFF"..dia.." #FFFFFF/ #006FFF"..mes.." #FFFFFF/ #006FFF"..ano, x*695, y*107, x*910, y*121, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) dxDrawColorText("Dia Da Semana: #006FFF"..diaa, x*695, y*121, x*910, y*135, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) local veh = getPedOccupiedVehicle(getLocalPlayer()) if veh then local veiculo = getVehicleName(veh, getLocalPlayer()) local vehiclehealth = math.floor(getElementHealth(veh)/10) dxDrawColorText("Veiculo: #006FFF"..veiculo.." #FFFFFF| #FFFFFFDanos: #006FFF"..vehiclehealth.."%", x*695, y*135, x*910, y*149, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) else dxDrawColorText("Veiculo: #006FFFN#FFFFFF/#006FFFA", x*695, y*135, x*910, y*149, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) end dxDrawColorText("Jogadores Online: #006FFF"..tostring(num).." #FFFFFF/ #006FFF"..tostring(max), x*695, y*149, x*910, y*163, tocolor(255, 255, 255, 255), x*1.00, Font_2, "left", "center", false, false, false, false, false) end function clickVip1(button, state) if vip1 == true and vip2 == false and button == "left" and state == "down" then if cursorPosition(x*820, y*247, x*104, y*25) then playSoundFrontEnd(3) vip1 = false vip2 = true addEventHandler("onClientRender", getRootElement(), dxPainelVip2) removeEventHandler("onClientRender", getRootElement(), dxPainelVip1) end end if vip1 == true and vip3 == false and button == "left" and state == "down" then if cursorPosition(x*630, y*247, x*104, y*25) then playSoundFrontEnd(3) vip3 = true addEventHandler("onClientRender", getRootElement(), dxPainelVip3) end end if vip2 == true and vip1 == false and button == "left" and state == "down" then if cursorPosition(x*443, y*247, x*104, y*25) then playSoundFrontEnd(3) vip2 = false vip1 = true addEventHandler("onClientRender", getRootElement(), dxPainelVip1) removeEventHandler("onClientRender", getRootElement(), dxPainelVip2) end end if vip2 == true and vip3 == false and button == "left" and state == "down" then if cursorPosition(x*630, y*247, x*104, y*25) then playSoundFrontEnd(3) vip3 = true addEventHandler("onClientRender", getRootElement(), dxPainelVip3) end end if vip1 and button == "left" and state == "down" then if cursorPosition(x*465, y*328, x*180, y*26) then triggerServerEvent("skinVip1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*358, x*180, y*26) then triggerServerEvent("skinVip2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*328, x*180, y*26) then triggerServerEvent("vidacolete", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*421, x*180, y*26) then triggerServerEvent("kitarmas1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*451, x*180, y*26) then triggerServerEvent("kitarmas2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*481, x*180, y*26) then triggerServerEvent("habilidades", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*388, x*84, y*26) then triggerServerEvent("jetpack1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*816, y*388, x*84, y*26) then triggerServerEvent("jetpack2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*451, x*84, y*26) then triggerServerEvent("invisivel1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*574, x*84, y*26) then triggerServerEvent("andar1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*816, y*574, x*84, y*26) then triggerServerEvent("andar2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*604, x*180, y*26) then triggerServerEvent("andar3", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*720, y*513, x*84, y*26) then triggerServerEvent("cabeca1", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*816, y*513, x*84, y*26) then triggerServerEvent("cabeca2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*816, y*451, x*84, y*26) then triggerServerEvent("invisivel2", getLocalPlayer()) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*544, x*180, y*26) then triggerServerEvent("velocidade1", getLocalPlayer()) setGameSpeed(0.5) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*574, x*180, y*26) then triggerServerEvent("velocidade2", getLocalPlayer()) setGameSpeed(5) playSoundFrontEnd(1) elseif cursorPosition(x*465, y*604, x*180, y*26) then triggerServerEvent("velocidade3", getLocalPlayer()) setGameSpeed(1) playSoundFrontEnd(1) end end if vip2 and button == "left" and state == "down" then if cursorPosition(x*465, y*358, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("carro", getLocalPlayer()) elseif cursorPosition(x*465, y*328, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("moto", getLocalPlayer()) elseif cursorPosition(x*465, y*602, x*84, y*26) then playSoundFrontEnd(1) triggerServerEvent("agua1", getLocalPlayer()) elseif cursorPosition(x*561, y*602, x*84, y*26) then playSoundFrontEnd(1) triggerServerEvent("agua2", getLocalPlayer()) elseif cursorPosition(x*720, y*512, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("jump1", getLocalPlayer()) elseif cursorPosition(x*720, y*542, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("jump2", getLocalPlayer()) elseif cursorPosition(x*720, y*602, x*84, y*26) then playSoundFrontEnd(1) triggerServerEvent("fly1", getLocalPlayer()) elseif cursorPosition(x*816, y*602, x*84, y*26) then playSoundFrontEnd(1) triggerServerEvent("fly2", getLocalPlayer()) elseif cursorPosition(x*465, y*421, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("proVeiculo1", getLocalPlayer()) elseif cursorPosition(x*465, y*451, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("proVeiculo2", getLocalPlayer()) elseif cursorPosition(x*465, y*512, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("veiculoInvisivel1", getLocalPlayer()) elseif cursorPosition(x*465, y*542, x*180, y*26) then playSoundFrontEnd(1) triggerServerEvent("veiculoInvisivel2", getLocalPlayer()) elseif cursorPosition(x*720, y*328, x*180, y*26) then playSoundFrontEnd(1) setElementData(getLocalPlayer(), "rainbowEnabled", true) servermessages("Rainbow car ativado", "confirm") elseif cursorPosition(x*720, y*358, x*180, y*26) then playSoundFrontEnd(1) setElementData(getLocalPlayer(), "rainbowEnabled", false) servermessages("Rainbow car desativado", "warning") elseif cursorPosition(x*720, y*421, x*180, y*26) then playSoundFrontEnd(1) setElementData(getLocalPlayer(), "rainbowHeadlights", true) servermessages("Rainbow luzes ativado", "confirm") elseif cursorPosition(x*720, y*451, x*180, y*26) then playSoundFrontEnd(1) setElementData(getLocalPlayer(), "rainbowHeadlights", false) servermessages("Rainbow luzes desativado", "warning") end end end addEventHandler("onClientClick", getRootElement(), clickVip1) function abrirVip() if vip1 == false then if not fontScale then fontScale = screenW/40 end showCursor(true) vip1 = true addEventHandler("onClientRender", getRootElement(), dxPainelVip1) else showCursor(false) vip1 = false vip2 = false vip3 = false removeEventHandler("onClientRender", getRootElement(), dxPainelVip1) removeEventHandler("onClientRender", getRootElement(), dxPainelVip2) removeEventHandler("onClientRender", getRootElement(), dxPainelVip3) end end addEvent("abrirVip", true) addEventHandler("abrirVip", getRootElement(), abrirVip) function fecharVip() if (vip1 and vip2 == true) then removeEventHandler("onClientRender", getRootElement(), dxPainelVip1) removeEventHandler("onClientRender", getRootElement(), dxPainelVip2) removeEventHandler("onClientRender", getRootElement(), dxPainelVip3) showCursor(false) vip1 = false vip2 = false vip3 = false end end bindKey("O", "down", fecharVip) addEvent("abrirVip", true) addEventHandler("abrirVip", getRootElement(), fecharVip) function cursorPosition(x, y, w, h) if (not isCursorShowing()) then return false end local mx, my = getCursorPosition() local fullx, fully = guiGetScreenSize() cursorx, cursory = mx*fullx, my*fully if cursorx > x and cursorx < x + w and cursory > y and cursory < y + h then return true else return false end end -- //#FPS local counter = 0 local starttick local currenttick addEventHandler("onClientRender", getRootElement(), function() if not starttick then starttick = getTickCount() end counter = counter + 1 currenttick = getTickCount() if currenttick - starttick >= 1000 then setElementData(getLocalPlayer(), "FPS", counter) counter = 0 starttick = false end end ) -- //#Texto Cor function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY) bx, by, color, scale, font = bx or ax, by or ay, color or tocolor(255,255,255,255), scale or 1, font or Font_5 if alignX then if alignX == "center" then ax = ax + (bx - ax - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font))/2 elseif alignX == "right" then ax = bx - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font) end end if alignY then if alignY == "center" then ay = ay + (by - ay - dxGetFontHeight(scale, font))/2 elseif alignY == "bottom" then ay = by - dxGetFontHeight(scale, font) end end local clip = false if dxGetTextWidth(str:gsub("#%x%x%x%x%x%x","")) > bx then clip = true end local alpha = string.format("%08X", color):sub(1,2) local pat = "(.-)#(%x%x%x%x%x%x)" local s, e, cap, col = str:find(pat, 1) local last = 1 local text = "" local broke = false while s do if cap == "" and col then color = tocolor(getColorFromString("#"..col..alpha)) end if s ~= 1 or cap ~= "" then local w = dxGetTextWidth(cap, scale, font) if clip then local text_ = "" for i = 1,string.len(cap) do if dxGetTextWidth(text,scale,font) < bx then text = text..""..string.sub(cap,i,i) text_ = text_..""..string.sub(cap,i,i) else broke = true break end end cap = text_ end dxDrawText(cap, ax, ay, ax + w, by, color, scale, font) ax = ax + w color = tocolor(getColorFromString("#"..col..alpha)) end last = e + 1 s, e, cap, col = str:find(pat, last) end if last <= #str and not broke then cap = str:sub(last) if clip then local text_ = "" for i = 1,string.len(cap) do if dxGetTextWidth(text,scale,font) < bx then text = text..""..string.sub(cap,i,i) text_ = text_..""..string.sub(cap,i,i) else broke = true break end end cap = text_ end dxDrawText(cap, ax, ay, ax + dxGetTextWidth(cap, scale, font), by, color, scale, font) end end -- //#Dirigir Sobre Água function aguaTrue() setWorldSpecialPropertyEnabled("hovercars", true) end addEvent("aguaTrue", true) addEventHandler("aguaTrue", getRootElement(), aguaTrue) function aguaFalse() setWorldSpecialPropertyEnabled("hovercars", false) end addEvent("aguaFalse", true) addEventHandler("aguaFalse", getRootElement(), aguaFalse) -- //#Fly Car function flyTrue() setWorldSpecialPropertyEnabled("aircars", true) end addEvent("flyTrue", true) addEventHandler("flyTrue", getRootElement(), flyTrue) function flyFalse() setWorldSpecialPropertyEnabled("aircars", false) end addEvent("flyFalse", true) addEventHandler("flyFalse", getRootElement(), flyFalse) -- //#Laser [Vip] local dots = {} CMD_LASERCOLOR = "laser" laserWidth = 0.5 dotSize = .05 picklasercolor = 0 colorPickerInitialized = 0 color = {r=255, g=0, b=0, a=255} function onClientStartLaser(res) if res == getThisResource() then setLaserEnabled(getLocalPlayer(), false) setLaserColor(getLocalPlayer(), color.r, color.g, color.b, color.a) if colorPickerInitialized == 0 then initColorPicker() end elseif res == getResourceFromName("colorpicker") then if colorPickerInitialized == 0 then initColorPicker() end end end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), onClientStartLaser) function onClientStopLaser(res) if res == getThisResource() then setLaserEnabled(getLocalPlayer(), false) end end addEventHandler("onClientResourceStop", getRootElement(), onClientStopLaser) function onElementDataChange(dataName, oldValue) if getElementType(source) == "player" and source == getLocalPlayer() and dataName == "laser.on" then local newValue = getElementData(source, dataName) if oldValue == true and newValue == false then unbindKey("aim_weapon", "both", aimKeyPressed) elseif oldValue == false and newValue == true then bindKey("aim_weapon", "both", aimKeyPressed) end end end addEventHandler("onClientElementDataChange", getLocalPlayer(), onElementDataChange) function renderLaser() for _, player in ipairs(getElementsByType("player")) do if getElementData(player, "laser.on") then drawLaser(player) end end end addEventHandler("onClientRender", getRootElement(), renderLaser) function aimKeyPressed(key, state) if state == "down" then setElementData(getLocalPlayer(), "laser.aim", true, true) elseif state == "up" then setElementData(getLocalPlayer(), "laser.aim", false, true) end end function drawLaser(player) if getElementData(player, "laser.on") then local targetself = getPedTarget(player) if targetself and targetself == player then targetself = true else targetself = false end if getElementData(player, "laser.aim") and isPlayerWeaponValidForLaser(player) == true and targetself == false then local x, y, z = getPedWeaponMuzzlePosition(player) if not x then outputDebugString("getPedWeaponMuzzlePosition failed") x, y, z = getPedTargetStart(player) end local x2, y2, z2 = getPedTargetEnd(player) if not x2 then return end local x3, y3, z3 = getPedTargetCollision(player) local r, g, b, a = getLaserColor(player) if x3 then dxDrawLine3D(x, y, z, x3, y3, z3, tocolor(r, g, b, a), laserWidth) drawLaserDot(player, x3, y3, z3) else dxDrawLine3D(x, y, z, x2, y2, z2, tocolor(r, g, b, a), laserWidth) destroyLaserDot(player) end else destroyLaserDot(player) end else destroyLaserDot(player) end end function drawLaserDot(player, x, y, z) if not dots[player] then dots[player] = createMarker(x, y, z, "corona", .02, getLaserColor(player)) else setElementPosition(dots[player], x, y, z) end end function destroyLaserDot(player) if dots[player] and isElement(dots[player]) then destroyElement(dots[player]) dots[player] = nil end end function setLaserColor(player, r, g, b, a) setElementData(player, "laser.red", r) setElementData(player, "laser.green", g) setElementData(player, "laser.blue", b) setElementData(player, "laser.alpha", a) return true end function getLaserColor(player) r = getElementData(player, "laser.red") g = getElementData(player, "laser.green") b = getElementData(player, "laser.blue") a = getElementData(player, "laser.alpha") return r, g, b, a end function isPlayerWeaponValidForLaser(player) local weapon = getPedWeapon(player) if weapon and weapon > 21 and weapon < 39 and weapon ~= 35 and weapon ~= 36 then return true end return false end function setLaserEnabled(player, state) if not player or isElement(player) == false then return false end if getElementType(player) ~= "player" then return false end if state == nil then return false end if state == true then setElementData(player, "laser.on", true, true) setElementData(player, "laser.aim", false, true) return true elseif state == false then setElementData(player, "laser.on", false, true) setElementData(player, "laser.aim", false, true) return true end return false end function isLaserEnabled(player) if getElementData(player, "laser.on") == true then return true else return false end end function toggleLaserEnabled(cmd) if isLaserEnabled(getLocalPlayer()) == false then setLaserEnabled(getLocalPlayer(), true) end end addEvent("toggleLaserEnabled", true) addEventHandler("toggleLaserEnabled", getRootElement(), toggleLaserEnabled) function toggleLaserDisabled(cmd) if isLaserEnabled(getLocalPlayer()) == true then setLaserEnabled(getLocalPlayer(), false) end end addEvent("toggleLaserDisabled", true) addEventHandler("toggleLaserDisabled", getRootElement(), toggleLaserDisabled) function changeLaserColor(cmd, r, g, b, a) local getVip = getElementData(getLocalPlayer(), "vip:expire") if getVip then if colorPickerInitialized == 1 and getResourceFromName("colorpicker") then color.r, color.g, color.b, color.a = getLaserColor(getLocalPlayer()) picklasercolor = 1 if exports.colorpicker:requestPickColor(true, true, "Escolha o Laser Color", color.r, color.g, color.b, color.a) == false then exports.colorpicker:cancelPickColor() return false end return true else if r and g and b and a then r, g, b, a = tonumber(r), tonumber(g), tonumber(b), tonumber(a) if r and g and b and a then if r < 0 or g < 0 or b < 0 or a < 0 or r > 255 or g > 255 or b > 255 or a > 255 then servermessages("sintaxe: /laser r g b a", "confirm") return false else servermessages("Cor do laser: "..r.." "..g.." "..b.." "..a.."", "confirm") setLaserColor(getLocalPlayer(), r, g, b, a) return true end end end end servermessages("sintaxe: /laser r g b a", "confirm") return false else outputChatBox("#030303[#B30A0AComandos#030303] #FFFFFFVocê não tem acesso ao comandos #00AFF0/laser", 255, 255, 255, true) end end addCommandHandler("laser", changeLaserColor) function initColorPicker() if getResourceFromName("colorpicker") == false then return false end addEventHandler("onClientPickedColor", getLocalPlayer(), function(r, g, b, a) if picklasercolor == 1 then setLaserColor(source, r, g, b, a) end end) addEventHandler("onClientCancelColorPick", getLocalPlayer(), function() if picklasercolor == 1 then setLaserColor(source, color.r, color.g, color.b, color.a) picklasercolor = 0 end end) colorPickerInitialized = 1 return true end -- //#Rainbow Car rainbow = {} function rainbowCar() for _, player in pairs(getElementsByType("player")) do if getElementData(player, "rainbowEnabled") then local vehicle = getPedOccupiedVehicle(player) if vehicle then if not rainbow[player] then rainbow[player] = 0 return end local r, g, b = getVehicleColor(vehicle, true) if rainbow[player] == 0 then if r < 250 then r = r + 3 if r > 255 then r = 250 end else rainbow[player] = 1 end end if rainbow[player] == 1 then if g < 250 then g = g + 3 else rainbow[player] = 2 end elseif rainbow[player] == 2 then if b < 255 then if r > 0 then r = r - 3 else r = 0 end b = b + 3 if b > 255 then b = 255 end else rainbow[player] = 3 end elseif rainbow[player] == 3 then if g > 0 then if r > 0 then r = r - 3 else r = 0 end g = g - 3 if g < 0 then g = 0 end else rainbow[player] = 4 end elseif rainbow[player] == 4 then if b > 0 then b = b - 3 if b < 0 then b = 0 end else b = 0 rainbow[player] = 0 end end setVehicleColor(vehicle, r, g, b) end end end end addEventHandler("onClientPreRender", getRootElement(), rainbowCar) -- //#Rainbow Luzes rainbowHeadlights = {} function rainbowLuzes() for _, player in pairs(getElementsByType("player")) do if getElementData(player, "rainbowHeadlights") then local vehicle = getPedOccupiedVehicle(player) if vehicle then if not rainbowHeadlights[player] then rainbowHeadlights[player] = 0 return end local r, g, b = getVehicleHeadLightColor(vehicle) if rainbowHeadlights[player] == 0 then if r < 250 then r = r + 3 if r > 255 then r = 250 end else rainbowHeadlights[player] = 1 end end if rainbowHeadlights[player] == 1 then if g < 250 then g = g + 3 else rainbowHeadlights[player] = 2 end elseif rainbowHeadlights[player] == 2 then if b < 255 then if r > 0 then r = r - 3 else r = 0 end b = b + 3 if b > 255 then b = 255 end else rainbowHeadlights[player] = 3 end elseif rainbowHeadlights[player] == 3 then if g > 0 then if r > 0 then r = r - 3 else r = 0 end g = g - 3 if g < 0 then g = 0 end else rainbowHeadlights[player] = 4 end elseif rainbowHeadlights[player] == 4 then if b > 0 then b = b - 3 if b < 0 then b = 0 end else b = 0 rainbowHeadlights[player] = 0 end end setVehicleHeadLightColor(vehicle, r, g, b) end end end end addEventHandler("onClientPreRender", getRootElement(), rainbowLuzes) -- //#Jump Car function jumCar() local veiculo = getPedOccupiedVehicle(getLocalPlayer()) if not veiculo then return end if (isVehicleOnGround(veiculo) == true) then local v1, v2, v3 = getElementVelocity (veiculo) setElementVelocity(veiculo, v1, v2, v3 + 0.25) end end addEvent("jumCar", true) addEventHandler("jumCar", getRootElement(), jumCar) function jumpStart() bindKey("lshift", "down", jumCar) end addEvent("jumpStart", true) addEventHandler("jumpStart", getRootElement(), jumpStart) function jumpStop() unbindKey("lshift", "down", jumCar) end addEvent("jumpStop", true) addEventHandler("jumpStop", getRootElement(), jumpStop) -- //#Mensages mensages = {} messagetick = 0 function servermessages(message, type) table.insert(mensages, {message, type or "confirm", getTickCount(), dxGetTextWidth(message, fontScale*0.06, Font_1) + screenH*0.01, 0, 0, 0}) messagetick = getTickCount() end addEvent("servermessages", true) addEventHandler("servermessages", getRootElement(), servermessages) function renderMensages() local msgd = mensages if #msgd ~= 0 then local startY = screenW*0.5 local i = 1 repeat mData = msgd[i] local drawThis = true if i~= 1 then startY = startY + screenW*0.0425 end if mData[5] == 0 and mData[6] == 0 then mData[5] = - mData[4] - screenH*0.015 mData[6] = startY mData[7] = startY end local tick = getTickCount() - mData[3] local posX, posY, alpha if tick < 1000 then local progress = math.min(tick/1000,1) mData[5] = interpolateBetween(mData[5], 0, 0, 0, 0, 0, progress, "Linear") elseif tick >= 1000 and tick <= 7000 then mData[5] = 0 elseif tick > 7000 then local progress = math.min((tick - 7000)/1000,1) mData[5] = interpolateBetween(mData[5], 0, 0, - mData[4] - mData[4] - screenH*0.015, 0, 0, progress, "Linear") if progress >= 1 then table.remove(msgd, i) drawThis = false messagetick = getTickCount() end end local globalTick = getTickCount() - messagetick if drawThis then mData[7] = startY mData[6] = interpolateBetween(mData[6], 0, 0, mData[7], 0, 0, math.min(globalTick/1000,1), "Linear") posX = mData[5] posY = mData[6] alpha = 255 dxDrawRectangle(posX, posY, mData[4], screenW*0.04, tocolor(0, 0, 0, alpha*0.75), true) local r, g, b = 0, 255, 0 if mData[2] == "warning" then r, g, b = 255, 0, 0 end dxDrawRectangle(posX + mData[4], posY, screenH*0.010, screenW*0.04, tocolor(r, g, b, alpha*0.85), true) dxDrawText(mData[1], posX, posY, posX + mData[4], posY + screenW*0.04, tocolor(255, 255, 255, alpha), fontScale*0.05, Font_1, "center", "center", false, false, true, false, false) end i = i + 1 until i > #msgd mensages = msgd end end addEventHandler("onClientRender", getRootElement(), renderMensages)
  8. Hola! Desde hace un tiempo, he comenzado a subir vídeo tutoriales de manera esporádica en mi canal de YouTube, en respuesta a consultas que me hacen algunos usuarios tanto por aquí como por mi pagina de facebook. El dia de hoy, traigo un tutorial de "Nivel Medio". Que trata sobre, Como obtener una imagen de una URL y usarla en MTA. Espero les guste y les ayude un poco ¡Un saludo! Cualquier otro tutorial que deseen que haga, me dicen ya sea por este foro (mensaje privado) o por mi pagina de facebook. O directamente en los vídeos de YouTube.
  9. Hola, el dia de hoy traigo un aporte algo sencillo, trata de un tutorial de como proteger tus recursos de una forma básica, para evitar robos de tus scripts. Espero os ayude mucho! Subo este vídeo, en respuesta a varias personas que han pedido agregar un medio de seguridad para que el recurso no funcione fuera de su servidor.
  10. olá pessoal tudo bem? então hoje estou aqui para ensinar para novatos(como eu) como fazer um teleporte simples apenas usando funções básicas,é bem fácil de aprender. Antes de começar quero especificar e mostrar algumas funções que vou usar nesse script; setElementInterior coloca o elemento especificado em um interior. setElementDimension coloca o elemento especificado em uma dimenção. setElemenPosition coloca o elemento especificado em uma posição. Primeiro script,ele vai te colocar na posição quando digitar /tp. function tele (source) setElementPosition(source, 2434.6015625, -1670.6728515625, 13.574823379517) --cordenadas da posição pra onde você vai ser teletransportado. end addCommandHandler("tp",tele) Esse vai te colocar em uma dimenção e uma posição quando digitar /tp. function tele (source) setElementDimension(source, 69) --dimenção pra onde você vai ser teletransportado. setElementPosition(source, 2434.6015625, -1670.6728515625, 13.574823379517) --cordenadas da posição pra onde você vai ser teletransportado. end addCommandHandler("tp",tele) E esse vai te colocar em uma dimenção,interior e uma posição no mesmo. function tele (source) setElementDimension(source, 54) --dimenção pra onde vai. setElementInterior(source, 5) --interior pra onde vai. setElementPosition(source, 220.7998046875, 150.158203125, 1003.0234375) --posição pra onde vai dentro do interior. end addCommandHandler("tp",tele) para mais tutoriais como esse pode encontrar nesse canal do youtube(que não é meu): https://www.youtube.com/channel/UCSUVTVl3JRWwltBraVV34ow/videos
  11. Hello MTA Community! I'm happy to announce the start of 'Writing a Roleplay Gamemode From Scratch' chapters in my youtube channel. The first chapter is already released, check it out below! Don't forget to subscribe in order to be notified when new content is uploaded and also let a comment with your opinion and aspects that should be improved!
  12. Hello any1 knows how to add more guns on server? I have dayz server and i would like to get some help. Just tell me here or contact me if you know how to script.
  13. Hello guys, i recently setuped up my own dayz server, but i need to add like more vehicles i have some vehicles.lua and there are cars adn ther x,y,z i guess its spawn how can i add more? or can some1 just give me some pre-scripted vehicles.lua so i dont have to type it or something? i want more cars on my server basicaly , which players can find and get
  14. </Mr.Tn6eL>

    MTA Events

    بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته اليوم سأشرح لكم الأحداث ماهي الأحداث؟ الأحداث هي نظام تم برمجة لتشغيل الوظائف عندما يحدث شيء مثل دخول الاعب الماركر او دخول الاعب السيرفر والخ... يتم ربط هذا النظام في نظام الالمنت كيفية استخدام هذا النظام؟ addEventHandler لكي تقوم باستخدام هذا النظام عليك اولا ربط الوظيفة في الاعب عند طريق وعند القيام بذلك سوف تقوم الوظيفة بعملها على الالمنت المربوط بالوظيفة children, parent لكن عندما يكون الالمنت لديه صلة بالمنت اخر سواء كان سوف اشرح هذه الصلة في درس اخر عند استقبال حدث ما يتم تعريف متغيرات مخفية وهذه هي قائمة المتغيرات source : مصدر الحدث وهو الالمنت الذي تم ربط الحدث به eventName : (onPlayerQuit)اسم الحدث مثل this : الالمنت الذي تم ربطه بالوظيفة المستقبلة للحدث جميع الوظائف أعلاه بجانب السيرفر والكلنت وهناك ايضا متغير مخفي فقط في السيرفر client : هو الاعب الذي تم ارسال الحدث من جهته انتهينا من المتغيرات المخفية الآن ننتقل الى العوامل في الوظيفة المستقبلة ليس هناك نوع محدد من العوامل لكن لكل وظيفة عوامله الخاصة إذا كيف اقوم بمعرفة العوامل في الحدث paramaters اذهب إلى صفحة الويكي الخاصة بالحدث وقم بإيجاد قسم كما بالصورة التالية بالصورة تجد العوامل محددة بالمربع الأحمر ملاحظة : قد لا يوجد عوامل في بعض الاحداث لذا راجع الويكي لكي تعرف الوظيفة إذا لننتقل إلى المرحلة التالية هناك نوعين من الأحداث نوع مخصص مسبقا اي انه لا داعي لتشغيله - نوع يتم تخصيصه برمجياً اي أنه يتم تشغيه - كيفية استخدام النوع الأول أولا عليك معرفة الحدث اللي تريد استخدامه والذي خصصه فريق ام تي اي للاستخدام تجدها هنا https://wiki.multitheftauto.com/wiki/Client_Scripting_Events https://wiki.multitheftauto.com/wiki/Server_Scripting_Events النوع الأول مخصص للكلنت والنوع الثاني مخصص للسيرفر الآن سنشرح كيف تقوم باستقبال حدث addEventHandlerلكي نقوم بإستقبال حدث ما علينا استخدام علينا ان نشرح كيف نقوم بتركيب الجملة لدى هذه الوظيفة bool addEventHandler ( string eventName, element attachedTo, function handlerFunction, [ bool getPropagated = true, string priority = "normal" ] ) الارقمنات المطلوبة eventName: اسم الحدث المراد استقباله attachedTo: الالمنت المراد ربطه باستقبال هذا الحدث مثلا اذا كنت تريد للاعب محدد دخول ماركر يجب عليك وضعه هنا لكي يقوم باستقبال (root)الحدث لدى هذا الاعب فقط واذا كنت تريد لجميع الاعب استخدم الالمنت العام handlerFunction: الوظيفة المراد تشغيلها عند استقبال هذا الحدث الارقمنات الاختيارية getPropagated: اذا كنت تريد تشغيل هذا الحدث لدى جميع فروع هذا الالمنت ضعها قيمة صحيحة واذا كنت تريد ضعها خاطئة سأشرحها في درس أخر priority : أولية استقبال هذا الحدث اذا كان هناك حدث تريد استقباله بنفس الطريقة وتريد ان يبدا مثلا باستقبال هذا اولاً وهكذا هناك قيم عليك وضعها ولكل منها عمل خاص "high" "normal" "low" ويمكن وضعها بارقام مثلا low-999 high-999 low+999 اي قيمة رقم لكن يجب ان تكون ال- او + لاغير والآن شرحنا كيفية تركيب الجملة وهكذا onPlayerQuitلنختار حدث (هذا الحدث يقوم بالعمل اذا الاعب خرج من السيرفر(اي لاعب لكي نقوم باستقبال هذا الحدث ومعرفة من خرج من السيرفر يجب استخدام وظيفة addEventHandler("onPlayerQuit", root, function(quitType, reason, responsibleElement) outputChatBox(getPlayerName(source)) -- نقوم بكتابة اسم الاعب اللي خرج -- outputChatBox : اخراج نص بالشات -- getPlayerName : احضار اسم لاعب ما -- source : مصدر الحدث وهو الاعب الذي خرج من السيرفر outputChatBox(quitType) -- كتابة سبب الخروج بالشات if reason then -- نقوم بالتحقق ان هناك سبب outputChatBox(reason) -- كتابة سبب الخروج بالشات -- reason : هو سبب اعطاء الكيك او الباند، سوف يعطيك قيمة فولس اذا كان نوع الخروج ليس باند او كيك end if isElement(responsibleElement) and getElementType(responsibleElement) == "player" then -- نتحقق ان الالمنت اللذي قام بإعطاء كيك او باند لاعب ان نوعه هو لاعب outputChatBox(responsibleElement) --(الشاشة السوداء او اف 8) كتابة الاعب الذي قام بإعطاء الاعب كيك او باند قد يكون كونسل -- لكن نحن تحققنا مسبقاً انه لاعب end end) الآن شرحنا كيفية استخدام النوع الأول الآن النوع الثاني مالفائدة من النوع الأول؟ الفائدة تكمن اذا كنت تريد ارسال حدث خاص بك الى السيرفر او الكلنت او الجهة نفسها اللي تم ارسالها منها ولك مثال مشهور جدا وهو لوحة التسجيل لكي تقوم بعمل لوحة تسجيل عليك استخدام لوحة بالكلنت وتسجيل الدخول بالسيرفركيف اقوم بالربط؟ نعم نعم هذه هي الفائدة منها كيف الاستخدام؟ لكي تقوم بارسال حدث يجب عليك استخدام الوظائف الثانية triggerServerEvent : وظيفة تقوم بتشغيل الحدث من جهة الكلنت الى السيرفر اي لايمكن استخدامها الا بالكلنت bool triggerServerEvent ( string event, element theElement, [arguments...] ) الارقمنات المطلوبة event : اسم الحدث المراد تشغيله theElement : الالمنت هو مصدر الحدث(السورس) الارقمنات الاختيارية arguments : العوامل المراد ارفاقه مع الحدث انظر الشرح فوق لتفهم triggerClientEvent : وظيفة تقوم بتشغيل الحدث من السيرفر الى الكلنت وايضا هي وظيفة سيرفر اي لايمكن تشغيلها الا بالسيرفر bool triggerClientEvent ( [table/element sendTo=getRootElement()], string name, element sourceElement, [arguments...] ) sendTo: القيمة الافتراضية لهذا الارقمنت هو الروت واذا كنت تريد لاعب محدد ترسل اليه الترايقر ضع هذا الاعب وهكذا واذا كنت تريد وضع لاعبين محددين ضع جدول به الاعب وضعه بهذا الارقمنت (ارقمنت اختياري طبعاً) name : اسم الحدث المراد تشغيله بالكلنت sourceElement : مصدر او سورس هذا الحدث arguments : العوامل المراد ارفاقه مع الحدث انظر الشرح فوق لتفهم اختيارية طبعاً triggerEvent : تقوم هذه الوظيفة بتشغيل حدث من الجهة نفسها اي انه اذا تم تشغيلها ممن السيرفر يتم استقبالها بالسيرفر وههكذا ويعني انها وظيفة بكلها الجانبين سيرفر والكلنت لكن الاستقبال بنفس الجهة bool triggerEvent ( string eventName, element baseElement, [ var argument1, ... ] ) eventName : اسم الحدث المراد تشغيله baseElement : مصدر او سورس هذا الحدث , [ var argument1, ... ] : العوامل المراد ارفاقه مع الحدث انظر الشرح فوق لتفهم اختيارية طبعاً الآن نريد ان نعطيك مثال مثلا نريد ان نرسل حدث يقوم بالتأكد أن اي مود انتهى تحميله او لا اولا يجب وضع الكود الذي يقوم بارسال هذا الحدث الى السيرفر addEventHandler("onClientResourceStart", root, function(res) -- استقبال حدث اذا المود اشتغل triggerServerEvent("onPlayerClientResourceLoaded", localPlayer, res) -- ارسال حدث حدث ليتم استقباله بالسيرفر end) الآن نستقبله جانب السيرفر لكن لم اشرح كيف اقوم بتسجيل هذا الحدث بقائمة الأحداث طبعا سنحتاج وظيفة addEvent يتبع...