-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
Salva a skin com um setAccountData e getElementModel, depois que ele logar no server, pega de volta com getAccountData e setElementModel. Vai precisar dos eventos onPlayerQuit, onPlayerLogout e onPlayerLogin.
-
Se refere ao entrar no server ou se refere depois de morrer?
-
Só chamar um amigo com notebook pra jogar na sua LAN.
-
Está funcionando agora?
-
Como está seu meta.xml?
-
Tutorial de lógica de programação: Curso de Algoritmos #02 - YouTube
-
[Ajude-Me] Teleporte do veiculo por painel
Lord Henry replied to dener189's topic in Programação em Lua
Bom, dai teria que saber como está seu GM para ver onde está o evento e onde está faltando adicionar o lado server. Sobre o scr-Lib, não sei se ele é obrigatório para o correto funcionamento do resource, eu deixaria como comentário todas as linhas que chamam ele pra ver se continua funcionando. -
No onPlayerLogin. Quando o jogador logar, ele vai verificar se ele tem o status salvo na conta usando getAccountData. Se tiver, seta esses status no jogador com setPedStat.
-
Sua lógica de criação do plantas e colP está errada. Você precisa colocá-los em uma table vazia antes de criá-los. Senão a variável sempre será substituída a cada execução do loop. Isso significa que ao final do loop, você criou vários plantas e vários colP, mas somente o último pode ser acessado pelo script, pois são os únicos que estão nas variáveis plantas e colP, os outros ficaram sem variável para serem chamados. Dessa forma, somente 1 planta e 1 colP funcionam. dff = engineLoadDFF("grassplant01.dff") engineReplaceModel(dff, 3409) addCommandHandler("devmode", function() setDevelopmentMode(true) end ) plantas = { {-1014, -1609.2, 75.36}, {-1010, -1609.242, 75.367}, {-1006, -1609.19, 75.36}, {-1002, -1609.104, 75.36}, {-998, -1609.082, 75.36}, {-994, -1609.037, 75.36}, {-990, -1609.037, 75.36}, {-1014, -1613, 75.36}, {-1010, -1613, 75.367}, {-1006, -1613, 75.36}, {-1002, -1613, 75.36}, {-998, -1613, 75.36}, {-994, -1613, 75.36}, {-990, -1613, 75.36}, {-1014, -1617, 75.36}, {-1010, -1617, 75.367}, {-1006, -1617, 75.36}, {-1002, -1617, 75.36}, {-998, -1617, 75.36}, {-994, -1617, 75.36}, {-990, -1617, 75.36}, {-1014, -1621, 75.36}, {-1010, -1621, 75.367}, {-1006, -1621, 75.36}, {-1002, -1621, 75.36}, {-998, -1621, 75.36}, {-994, -1621, 75.36}, {-990, -1621, 75.36}, } plant = {} colP = {} for i, v in ipairs (plantas) do plant[i] = createObject(3409, v[1],v[2],v[3]) colP[i] = createMarker(v[1],v[2],v[3],"cylinder",2.5,0,0,0,0) end function fcm1 () for i, col in ipairs (colP) do if isElementWithinMarker (localPlayer, col) then setPedAnimation (localPlayer, "INT_HOUSE", "wash_up", 10000, true, false, true, false, 10) setTimer(function () setPedAnimation (localPlayer) givePlayerMoney (math.random (500, 1000)) destroyElement (plant[i]) plant[i] = nil destroyElement (colP[i]) colP[i] = nil end, 10000, 1) break end end end addCommandHandler ("colher", fcm1) Outro problema que percebi, é que você estava criando as plantas na mesma variável da table plantas.
-
Já tentou deixar essa linha 5 fora da função? Solta no script.
-
No seu lugar eu evitaria de mexer no painel admin para não correr risco de ficar sem o painel Admin e destruir o servidor. Em vez disso você pode simplesmente desativar as funções de dar armas e veículos para todos os Staffs por meio da ACL Group e pegar somente com o Freeroam. Dai nas settings do Freeroam você pode bloquear os veículos e armas que não podem ser usados por ID. Se você não estiver usando o Freeroam, crie outro painel específico apenas para dar veículos e armas. Pode ser um painel bem simples onde o usuário digita o ID da arma ou veículo em um editbox e clica em um botão. Dai ao clicar o botão, verifica se o ID está numa table personalizada que você criou (table de armas/veículos permitidos), se não estiver, nada acontece. Se estiver, dá a arma ou veículo pro usuário. Mas caso você realmente queira arriscar, saiba que o painel admin coloca as armas e veículos no painel preenchendo de maneira automática com loop passando pelos IDs. Ele não preenche por meio de arquivo XML como os interiores. Ele faz isso no arquivo client/gui/admin_main.Lua. Mais ou menos na linha 122 (naquele for) e mais ou menos na linha 142 (também um loop for).
- 1 reply
-
- 1
-
-
[Ajude-Me] Teleporte do veiculo por painel
Lord Henry replied to dener189's topic in Programação em Lua
Este erro está dizendo que não foi possível chamar uma função pois o resource no qual ele pertence (scr-Lib) não está ativado no seu servidor. Ative o resource scr-Lib para corrigir este problema. E o problema de cima é do seu Gamemode. O client está tentando ativar o evento "WarpMyVehicle" do servidor mas ele não foi adicionado lá. Acontece por exemplo quando você usa triggerServerEvent no client.Lua com um evento que não existe no server.Lua. -
Normalmente se coloca no onPlayerLogin e no onPlayerLogout.
-
Neste caso, para otimizar daria pra fazer ele simplesmente cancelar tudo antes da parte que interessa, dessa forma: function onWasted (totalAmmo, killer, killerWeapon, bodypart, stealth) local ContaDoPlayer = getPlayerAccount (source) if (isGuestAccount (ContaDoPlayer)) then return end -- Se for guest, cancela a função e não passa daqui. local theWeapon = getPedWeapon (source) local weaponAmmo = getPedTotalAmmo (source) takeAllWeapons (source) setPlayerWantedLevel (source, 0) setTimer (spawnPlayer, 1000, 1, source, 1158.344, -1293.679, 16.445, 0, getElementModel (source), 0, 0, getPlayerTeam(source)) fadeCamera (source, false, 0, 0, 0, 0) setTimer (fadeCamera, 2000, 1, source , true, 0.5) setTimer (setCameraTarget, 1250, 1, source) end addEventHandler ("onPlayerWasted", root, onWasted)
-
@kevincouto6 Vc interpretou errado. Você deve ter ouvido "evite condição de negação no if" isto é, evitar quando possível. Neste caso isolado, a diferença de processamento é irrelevante. Você deve manter do jeito que estava. Por exemplo: function isEvenNumber (thePlayer, cmd, number) local number = tonumber (number) local par = number/2 if (math.floor (par) == par) then outputChatBox ("Número par.", thePlayer) elseif not (math.floor (par) == par) then -- Poderia ser somente else, ou então usar ~= (diferente de) no lugar do == (igual a) outputChatBox ("Número ímpar.", thePlayer) end end addCommandHandler ("par", isEvenNumber)
-
Corrigido, valeu
-
Verifica o level do jogador com getElementData.
-
addCommandHandler - Ativa uma função por comando. setPedArmor - Seta um colete no jogador. Coloque isso dentro da função que será ativada pelo comando acima.
-
Obs: Ative as legendas em português.
-
Você precisará substituir um objeto original do jogo pelo objeto editado. use engineLoadTXD, engineImportTXD, engineLoadDFF e engineReplaceModel.
-
N. Vou dar um exemplo: function pegarGrana (thePlayer, cmd) if isGuestAccount (getPlayerAccount (thePlayer)) then return end -- Se o jogador está deslogado, então cancela essa função e nada acontece. local account = getPlayerAccount (thePlayer) -- 'account' recebe a conta que o jogador que executou o comando está logado. local agora = getRealTime().timestamp -- 'agora' recebe um número bem grande, que é a quantidade de segundos que se passaram desde 01/01/1970 local antes = getAccountData (account, "ultimaGrana") -- 'antes' recebe o que estava salvo na conta do jogador, se não existir essa data, recebe false. (sempre será uma string caso exista, mesmo se você salvar um número) if (antes) then -- Se existe uma data na conta, então: if ((agora - tonumber(antes)) > 86400) then -- Se a diferença de 'agora' e de 'antes' for maior que 86400 segundos (1 dia), então: setAccountData (account, "ultimaGrana", agora) -- Salva o 'agora' na conta do jogador. outputChatBox ("Você pegou o dinheiro. Poderá pegar novamente daqui a 24 horas.", thePlayer) givePlayerMoney (thePlayer, 10000) -- Dá o dinheiro pro jogador. else -- Se a diferença de 'agora' e de 'antes' não for maior que 86400 segundos, significa que não faz 24 horas que o dinheiro foi pego. Então: outputChatBox ("Você precisa esperar mais tempo para poder pegar o dinheiro.", thePlayer) end else -- Se não existe essa data na conta do jogador (ele nunca pegou a grana antes), então: setAccountData (account, "ultimaGrana", agora) -- Salva o 'agora' na conta do jogador. outputChatBox ("Você pegou o dinheiro. Poderá pegar novamente daqui a 24 horas.", thePlayer) givePlayerMoney (thePlayer, 10000) -- Dá o dinheiro pro jogador. end end addCommandHandler ("pegar", pegarGrana) -- Comando pra ativar essa função: /pegar
