-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
A primeira table é a mytable faça ela com índices numéricos.
-
@DNL291 tente de novo mas agora indexe a primeira table com números.
-
É algum resource interferindo na função giveWeapon. Acontece quando vc dá esse nome pra alguma função. Por isso vc não pode dar qualquer nome pras funções, precisa ser um nome que não é usado pelo MTA. Exemplo de função com nome ilegal: function giveWeapon () -- Faz alguma coisa. end Quando vc encontrar o resource que está causando conflito, nos mostre qual foi.
-
Isso é client-side, amigo. Não existe velocímetro criado server-side. (me referindo aos elementos gráficos)
-
Veículos não sei se é possível. A princípio não tem como. No GTA:SA também não.
-
Desligue todos os resources exceto esse e o painel admin e tente novamente.
-
Acho que não vai funcionar. Já que o createLight não ilumina objetos. Ilumina somente peds, players, pneus e placas de veículos.
-
O fromJSON vai retornar uma table indexada em strings. É uma table normal, mas os índices são strings em vez de números. Exemplo: tableQualquer = {1, 30, 0, "oi"} data = toJSON (tableQualquer) -- data = "[{"1": 1, "4": "oi", "2": 30, "3": 0}]" -- Sim, ele aleatoriza a ordem dos elementos. A não ser que vc force a ordem como eu fiz no código. novaData = fromJSON (data) --[[ novaData = { ["1"] = 1, ["4"] = "oi", ["2"] = 30, ["3"] = 0 } ]] O toJSON também aleatoriza os elementos, caso vc declare a table inteira em vez dos elementos separadamente.
-
Dessa forma, weaponData[ i ] não existe. Pois não existe nenhum elemento com índice numérico. Se converter o valor numérico de i para string, dai existe.
-
@DNL291 sim. Tem que converter pra string pois o JSON sempre indexa a table com índices de string. ["1"], ["2"], ["algumaCoisa"]
-
Cara, isso não é possível. Deve ter algum resource entrando em conflito. Aqui funciona perfeitamente.
-
Ele está verificando se essa data existe. Não é pra dar erro nessa linha. Mesmo que a data não exista. Ele cria essa data ao sair do servidor.
-
Você copiou errado. function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) if not (isGuestAccount (getPlayerAccount (source))) then local accountData = getAccountData (theCurrentAccount, "funmodev2-money") if (accountData) then local playerMoney = getAccountData (theCurrentAccount, "funmodev2-money") local playerSkin = getAccountData (theCurrentAccount, "funmodev2-skin") local playerHealth = getAccountData (theCurrentAccount, "funmodev2-health") local playerArmor = getAccountData (theCurrentAccount, "funmodev2-armor") local playerX = getAccountData (theCurrentAccount, "funmodev2-x") local playerY = getAccountData (theCurrentAccount, "funmodev2-y") local playerZ = getAccountData (theCurrentAccount, "funmodev2-z") local playerInt = getAccountData (theCurrentAccount, "funmodev2-int") local playerDim = getAccountData (theCurrentAccount, "funmodev2-dim") local playerWanted = getAccountData (theCurrentAccount, "funmodev2-wantedlevel") local playerTeam = getAccountData (theCurrentAccount, "funmodev2-Team") spawnPlayer (source, playerX, playerY, playerZ +1, 0, playerSkin, playerInt, playerDim) setPlayerMoney (source, playerMoney) setTimer (setElementHealth, 500, 1, source, playerHealth) setTimer (setPedArmor, 500, 1, source, playerArmor) setTimer (setPlayerWantedLevel, 500, 1, source, playerWanted) if getAccountData (theCurrentAccount, "funmodev2-weapons") then local weaponData = fromJSON (getAccountData (account, "funmodev2-weapons")) -- Converte a string JSON em uma table. for i=1, 46 do -- Para cada ID de arma, faça: (seria do 0 ao 46, mas não precisa obter a mão do jogador) if weaponData[tostring(i)] then -- Se existe o ID "i" de arma na table, então: giveWeapon (source, i, weaponData[tostring(i)]) -- Os índices da table JSON sempre são em string. end end end setCameraTarget (source) fadeCamera (source, true, 2.0) else spawnPlayer (source, 1481.0855712891, -1771.2996826172, 18.795753479004, 0, 78, 0, 0) setPlayerMoney (source, 200) setCameraTarget (source) fadeCamera (source, true, 2.0) end end end addEventHandler ("onPlayerLogin", root, playerLogin) function onLogout () kickPlayer (source, nil, "Logging out is disallowed.") end addEventHandler ("onPlayerLogout", root, onLogout) function onQuit (quitType, reason, responsibleElement) if not (isGuestAccount (getPlayerAccount (source))) then account = getPlayerAccount (source) if (account) then local x, y, z = getElementPosition (source) setAccountData (account, "funmodev2-money", tostring (getPlayerMoney (source))) setAccountData (account, "funmodev2-skin", tostring (getPedSkin (source))) setAccountData (account, "funmodev2-health", tostring (getElementHealth (source))) setAccountData (account, "funmodev2-armor", tostring (getPedArmor (source))) setAccountData (account, "funmodev2-R", r) setAccountData (account, "funmodev2-G", g) setAccountData (account, "funmodev2-B", b) setAccountData (account, "funmodev2-x", x) setAccountData (account, "funmodev2-y", y) setAccountData (account, "funmodev2-z", z) setAccountData (account, "funmodev2-int", getElementInterior (source)) setAccountData (account, "funmodev2-dim", getElementDimension (source)) setAccountData (account, "funmodev2-wantedlevel", getPlayerWantedLevel (source)) local ammo = {} for i=0,12 do --Weapon Slots for k=1,46 do --Weapon IDs (seria do 0 ao 46, mas não precisa obter a mão do jogador, arma 0.) if getPedWeapon (source, i) == k then ammo[k] = getPedTotalAmmo (source, i) end end end setAccountData (account, "funmodev2-weapons", toJSON ( { ammo[1], ammo[2], ammo[3], ammo[4], ammo[5], ammo[6], ammo[7], ammo[8], ammo[9], ammo[10], ammo[11], ammo[12], ammo[13], ammo[14], ammo[15], ammo[16], ammo[17], ammo[18], ammo[19], ammo[20], ammo[21], ammo[22], ammo[23], ammo[24], ammo[25], ammo[26], ammo[27], ammo[28], ammo[29], ammo[30], ammo[31], ammo[32], ammo[33], ammo[34], ammo[35], ammo[36], ammo[37], ammo[38], ammo[39], ammo[40], ammo[41], ammo[42], ammo[43], ammo[44], ammo[45], ammo[46] } )) end end end addEventHandler ("onPlayerQuit", root, onQuit) function onWasted (totalAmmo, killer, killerWeapon, bodypart, stealth) if not (isGuestAccount (getPlayerAccount(source))) then local theWeapon = getPedWeapon (source) local weaponAmmo = getPedTotalAmmo (source) fadeCamera (source, false) setTimer (spawnPlayer, 1000, 1, source, 2036.1735839844, -1413.0563964844, 16.9921875, 0, getPedSkin (source), 0, 0, getPlayerTeam(source)) setTimer (setCameraTarget, 1250, 1, source) setTimer (fadeCamera, 2000, 1, source, true) setTimer (giveWeapon, 2000, 1, source, theWeapon, weaponAmmo, true) end end addEventHandler ("onPlayerWasted", root, onWasted) function setTeam () local account = getPlayerAccount (source) -- gets players account local team = getAccountData (account, "team") -- gets players team if (team) and getTeamFromName (team) then setPlayerTeam (source, getTeamFromName (team)) -- sets players team end end addEventHandler ("onPlayerLogin", root, setTeam) -- sets players team on login function save() local team = getPlayerTeam (source) -- Gets the players team local account = getPlayerAccount (source) if (team) and not isGuestAccount (account) then -- Checks to see if the player is a guest or not setAccountData (account, "team", getTeamName (team)) --saves team end end addEventHandler ("onPlayerQuit", root, save) -- saves team on quit
-
Troque o previousAcc por account
-
Parte do save das armas: (já troquei o nome da data pra ficar parecido com o seu sistema) Acesse o banco de dados antes de qualquer coisa e delete todos os registros das armas e munições do seu save-system. local ammo = {} for i=0,12 do --Weapon Slots for k=1,46 do --Weapon IDs (seria do 0 ao 46, mas não precisa obter a mão do jogador, arma 0.) if getPedWeapon (source, i) == k then ammo[k] = getPedTotalAmmo (source, i) end end end setAccountData (previousAcc, "funmodev2-weapons", toJSON ( { ammo[1], ammo[2], ammo[3], ammo[4], ammo[5], ammo[6], ammo[7], ammo[8], ammo[9], ammo[10], ammo[11], ammo[12], ammo[13], ammo[14], ammo[15], ammo[16], ammo[17], ammo[18], ammo[19], ammo[20], ammo[21], ammo[22], ammo[23], ammo[24], ammo[25], ammo[26], ammo[27], ammo[28], ammo[29], ammo[30], ammo[31], ammo[32], ammo[33], ammo[34], ammo[35], ammo[36], ammo[37], ammo[38], ammo[39], ammo[40], ammo[41], ammo[42], ammo[43], ammo[44], ammo[45], ammo[46] } )) Parte do load das armas: if getAccountData (currentAcc, "funmodev2-weapons") then local weaponData = fromJSON (getAccountData (currentAcc, "funmodev2-weapons")) -- Converte a string JSON em uma table. for i=1, 46 do -- Para cada ID de arma, faça: (seria do 0 ao 46, mas não precisa obter a mão do jogador) if weaponData[tostring(i)] then -- Se existe o ID "i" de arma na table, então: giveWeapon (source, i, weaponData[tostring(i)]) -- Os índices da table JSON sempre são em string. end end end
-
O painel é. E como o sistema faz parte dele, então é também.
-
Testei o save-system que eu fiz junto do painel de login e ele salva todas, sem erro nenhum. A diferença é que ele salva todas as armas e suas munições em uma table JSON e depois passa um loop pela table atribuindo todas no player. Esse sistema aí salva cada arma numa data e cada munição em outra e vai atribuindo uma por uma.
-
Putz... Então temos um problema de script mesmo.
-
Fiz o mesmo aqui e ocorreu o seguinte: Dei essas armas pelo painel e depois reloguei. 0 = socadeira 1 = faca 2 = Colt 45 3 = Shotgun 4 = MP5 5 = AK-47 6 = Sniper 7 = Lança Chamas 8 = Granada 9 = Extintor 10 = Flor 11 = Paraquedas 12 = (não atribui nenhum) Ele setou todas exceto a socadeira, que fica no slot 0. A questão de estar true ou false não fez ele funcionar nem fez as outras deixarem de funcionar. Ou seja, não mudou em nada. Deixei todos em false, continua no mesmo. Deixei todos em true, continua no mesmo. Voltei ao original, só o slot 0 como true e o resto false, continua no mesmo. Deixei só o slot 1 como true e o resto false, continua no mesmo. (só que dai ele nasce com a faca na mão, já que ele muda pro slot 1 por causa do true.) Dando a socadeira via comando admin funciona normalmente. Faça o mesmo teste, dê uma arma de cada slot pra si mesmo. Deixe o script original e teste pra ver se alguma delas aparece.
-
Então volte pro script e troque aqueles false por true. Aquele IF que eu passei no slot 5 vc pode desfazer.
-
Execute o comando de novo pra ver se aumenta pra 20 guardada.
-
Não fica com 20 depois que vc volta pro slot dela?
-
Ela tem 10 de munição, certo? Agora aperte E para trocar pro slot 0 (a arma vai sair da sua mão) e então execute o mesmo comando mas coloque false no lugar de true. Depois volte pro slot da arma e verifique se aumentou a munição.
-
Hum... realmente não setou a arma. Parece que tem um problema com a função giveWeapon. Execute agora esse comando e clique em server: giveWeapon (source, 30, 10, true)
-
Abra o painel Admin, vá na aba Resources, cole esse comando no prompt e clique em server. getPedWeapon (source, 5) Não precisa relogar nem reiniciar o resource do save-system.
