-
Posts
3,875 -
Joined
-
Days Won
67
Everything posted by DNL291
-
No seu primeiro código o erro era a coluna que não foi criada pra segunda gridList (isso foi até dito pelo MaligNos). Pode ser que isso seja da própria gridlist que não suporta mais de uma lista ao mesmo tempo; Seria útil se você mostrasse qual é esse script de classes de DX. Obs: use resourceRoot em vez de root no evento "onClientResourceStart", da forma que está, vai ser criadas outras gridlists se outros script forem iniciados.
-
Como foi mencionado use o evento do lado client, nele você pode detectar se usou arma e cancelar o dano com cancelEvent. Tente este código: function Sistema_de_Cinto_AirNewSCR( attacker, weapon, loss ) local Jogador = getVehicleOccupant ( source ) if Jogador and weapon and getPlayerName ( Jogador ) == "AirNewSCR" then if getVehicleType ( source ) == "Automobile" and getElementData ( Jogador, "AirNewSCR_Cinto" ) ~= "Sim" then cancelEvent() local Vida_Jogador = getElementHealth ( Jogador ) local Perca = tonumber(loss) / 2 outputChatBox ( "Sua vida: "..tostring(Vida_Jogador).."; Perca: "..tonumber(Perca), Jogador ) setElementHealth ( Jogador, Vida_Jogador - Perca ) end end end addEventHandler( "onClientVehicleDamage", root, Sistema_de_Cinto_AirNewSCR )
-
Verifica se é o jogador local: function abrirMenu(player, dim) if player == localPlayer and dim then abrirPainel() end end addEventHandler("onClientMarkerHit", mercado, abrirMenu) Próxima vez lembre-se de postar na seção Portuguese / Português
- 1 reply
-
- 1
-
Não me lembro bem mas o certo é o jogador perder a arma quando ele renasce. Se sim então isso deve ser algum script salvando as armas, procure ele e remova.
-
Seria bom se você descrevesse como o script funciona pra quem for ajudar ao menos entender a lógica sem ter que tentar entender olhando pelo código. Debugscript mostra erros? Tentou rebocar o veículo sem o ped estar dentro? Não sei se entendi bem aqui, mas o certo é o script funcionar apenas para o client/dono do veículo. E a variável GuinchoPed é melhor deixá-la numa tabela também. Creio que estas funções serão úteis pra você: getVehicleTowedByVehicle getVehicleTowingVehicle
-
Tem alguns erros aí. Código: function Start_Id ( _, acc ) if eventName == "onPlayerLogin" then setElementData ( source, "ID", getAccountID(acc) or "N/A" ) outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffID: #00ff00( "..(getAccountID(acc) or "N/A") .." )", root, 255,255,255,true) elseif eventName == "onPlayerLogout" then removeElementData( source, "ID" ) outputChatBox ( "#00ff00✘ #ffffffLOGIN #00ff00✘➺ #ffffffNick: #00ff00 ( ".. getPlayerName(source) .." #00ff00) #ffffffDeslogou.", root, 255,255,255,true) elseif eventName == "onResourceStart" then for _, player in pairs(getElementsByType("player")) do local acc = getPlayerAccount(player) if not isGuestAccount(acc) then setElementData( source, "ID", getAccountID(acc) or "N/A" ) end end end end addEventHandler("onResourceStart", resourceRoot, Start_Id) addEventHandler("onPlayerLogout", root, Start_Id) addEventHandler("onPlayerLogin", root, Start_Id) Exemplo no lado client: addCommandHandler("contaid", function() local id = getElementData( localPlayer, "ID" ) or false if id then outputChatBox( "O ID da sua conta é: "..(tostring(id) or "Erro desconhecido"), 0,230,0 ) else outputChatBox( "Você está deslogado!" ) end end )
- 20 replies
-
- 1
-
- sistema de id
- id system
-
(and 3 more)
Tagged with:
-
E não vai depender de pessoas com bom coração para te dar coisas de graça. Pra mim, você tem duas opções: aprende a programar e faz tudo sem precisar de alguém, faz tudo aquilo que tiver no papel já que tem o conhecimento. Ou: Pague para que um programador faça o código. Dependendo do resource, você pode encontrá-lo em algum lugar, não tem só o site de resources do MTA, tem também sites/locais de terceiros e muitos gamemodes prontos que você encontra bons scripts.
-
Este código verifica os todos slots de arma do jogador e salva as armas e a munição na tabela: local wepsTable = {} for i=0, 12 do local weapon = getPedWeapon(player, i) local weaponAmmo = getPedTotalAmmo(player, i) if tonumber(weaponAmmo) > 0 then wepsTable[weapon] = weaponAmmo end end Pra verificar um slot específico então seria: local weapon = getPedWeapon(player, 4) local weaponAmmo = getPedTotalAmmo(player, 4) if weapon and weapon ~= 0 and weaponAmmo > 0 then outputChatBox( "(Slot 4) Arma: "..tostring(weapon).."; Munição: "..tostring(weaponAmmo) ) elseif weapon and weapon ~= 0 and weaponAmmo == 0 then outputChatBox( "(Slot 4) Arma: "..tostring(weapon).."; Sem munição!" ) elseif weapon and weapon == 0 then outputChatBox( "(Slot 4) Nenhuma arma nesse slot!" ) end
-
O código não faz muito sentido na verdade. E o setElementData por si só já vai sincronizar, não tem necessidade de verificar continuamente e mandar o ID pro client já que ele não muda. Você pode fazer isso quando o jogador entrar na conta (onPlayerLogin), obtém o ID da conta (getAccountID) e usa setElementData pra salvar o ID da conta. No client então, você só vai utilizar getElementData. O mesmo pode ser feito pra saber se o jogador tá logado ou não. onPlayerLogin > setElementData, onPlayerLogout > setElementData
- 20 replies
-
- 1
-
- sistema de id
- id system
-
(and 3 more)
Tagged with:
-
Comece aprendendo Lua, para então saber como criar o script. Te recomendo também pesquisar por resources, no site community.multitheftauto.com pode ter o que você procura, e também tem alguns gamemodes disponíveis que já tem scripts desse tipo. Sobre as funções, você vai precisar destas basicamente: createMarker addCommandHandler isPedInVehicle getPedOccupiedVehicle "onMarkerHit" givePlayerMoney setElementData --salvamento "onPlayerQuit" "onResourceStop" "onPlayerLogout" getElementData setAccountData --carregamento "onPlayerLogin" "onResourceStart" getAccountData setElementData
-
addCommandHandler("t",onChat) Deve ser: addCommandHandler("Say",onChat) Código: chat_range=100 addEventHandler("onPlayerJoin",getRootElement(), function () bindKey(source,"t","down","chatbox","Say") end) addEventHandler("onResourceStart",getResourceRootElement(getThisResource()), function () for index, player in pairs(getElementsByType("player")) do bindKey(player,"t","down","chatbox","Say") end end) function isPlayerInRangeOfPoint(player,x,y,z,range) local px,py,pz=getElementPosition(player) return ((x-px)^2+(y-py)^2+(z-pz)^2)^0.5<=range end function onChat(player,_,msg) local px,py,pz=getElementPosition(player) local nick=getPlayerName(player) for _,v in ipairs(getElementsByType("player")) do if isPlayerInRangeOfPoint(v,px,py,pz,chat_range) then outputChatBox("#BEBEBELocal* #FFFAFA"..nick..": #DCDCDC"..msg,v,30,30,200,true) end end end addCommandHandler("Say",onChat)
-
community.multitheftauto.com
-
Não sei se entendi bem... Ele morre e nasce com a arma de outro jogador ou continua com com a arma que estava quando renasce?
-
Sim, use nos eventos "onVehicleExplode" e "onPlayerWasted", e também na função addEndMissionTimer. Igual o outro setElementData, mas sem o false no final.
-
Pode usar triggerClientEvent ou também setElementData pra armazenar no jogador e o valor estará no lado server e client. Verifique antes se o jogador tá logado na conta com isGuestAccount: function id (thePlayer) local account = getPlayerAccount ( thePlayer ) if not isGuestAccount(account) then local ID = getAccountID (account) exports.Scripts_Dxmessages:outputDx(thePlayer,""..ID.."", "warning") end end addCommandHandler("id", id )
- 20 replies
-
- sistema de id
- id system
-
(and 3 more)
Tagged with:
-
Tenta: "onClientVehicleDamage" getElementHealth cancelEvent setElementHealth
-
Só o onClientMarkerHit não funcionou? Encontrei o problema nele, o parâmetro é hitPlayer e eu tinha verificado se é o veículo. Corrigido: function finalCarMission6 ( veh6 ) Mfim6 = createMarker (213.45134, 1908.39001, 17.64063 -1, "cylinder", 2, 0 ,255 ,0, 255) Bfim6 = createBlipAttachedTo ( Mfim6, 19 ) function finalmission6 (hitPlayer, md) local playerVeh = getPedOccupiedVehicle(hitPlayer) if hitPlayer == localPlayer and playerVeh and getElementData(playerVeh, "Owner") == hitPlayer and md then outputChatBox ("funcionado") end end addEventHandler("onClientMarkerHit", Mfim6, finalmission6) end addEvent ("final6car", true) addEventHandler ("final6car", getRootElement(), finalCarMission6)
-
Eu acho que essa função setElementVisibleTo acaba complicando ainda mais pra fazer o script, principalmente quem tem um nível iniciante em script. Vai ser uma só função que vai exigir o uso vários vezes: quando o jogador entrar no trabalho, quando sair e quando o elemento for criado. Quando cria um elemento, pegando este código como exemplo: StopEmprego02 = createMarker (1135.3686523438, -2004.0344238281, 69.0078125 , "cylinder", 7, 0 ,26 ,255, 95) -- Local Onde Finaliza O Emprego setElementVisibleTo ( StopEmprego02, root, false ) Isso é uma maneira errada de fazer isso e o elemento poderá ser visto por uma fração de tempo no radar (cerca de 50 ms. Se for um blip por exemplo). Qual seria a forma mais eficiente de fazer isso então? R: Usando resourceRoot em vez de root. Outra coisa a se prestar atenção, é o último argumento. Em createMarker e createBlip tem o argumento visibleTo que é o último: createMarker ( float x, float y, float z [, string theType = "checkpoint", float size = 4.0, int r = 0, int g = 0, int b = 255, int a = 255, visibleTo = getRootElement( ) ] ) Então basta utilizar ele quando se cria o elemento. Então resumindo, a forma correta de criar o blip/marker e ocultá-lo: StopEmprego02 = createMarker (1135.3686523438, -2004.0344238281, 69.0078125 , "cylinder", 7, 0 ,26 ,255, 95, resourceRoot) -- Local Onde Finaliza O Emprego Nesse caso não será visto por ninguém já que nenhum jogador é um filho de resourceRoot. Leia: https://wiki.multitheftauto.com/wiki/Visibility
-
@#Horus Já avisei antes, e você já deveria saber disso. Por que você não cria o tópico que é relacionado a scripting no local correto? Crie aqui da próxima vez: https://forum.multitheftauto.com/forum/127-programação-em-lua/
-
Digite /debugscript 3 e veja qual erro mostra, veja qual o script e mostre aqui o código.
-
Olha eu nem sei ao certo pra falar a verdade. Mas eu sempre uso essas funções sem declarar nada no meta.xml, o mais importante acho que é definir a versão miníma que o servidor permite (para os jogadores). Deve funcionar sem problemas se usar a função sem declarar a versão miníma, não é obrigatório.
- 20 replies
-
- sistema de id
- id system
-
(and 3 more)
Tagged with:
-
getAccountID ( account theAccount ) Claro que não vai funcionar passando o jogador em vez da conta. Obs: essa função só vai funcionar a partir da versão 1.5.5, release 12217
- 20 replies
-
- sistema de id
- id system
-
(and 3 more)
Tagged with: