-
Matar monstro e pegar mount
Uso o TFS 1.0 e tudo o que eu sabia de programação foi por água a baixo kkkk, na verdade estou com uma dificuldade enorme em aprender esse novo OO da linguagem, mas sem "arrudeios" como dizem.Quero um script de creaturescripts que ao matar o War Wolf, ele verifica se eu tenho o item 5884 e se eu tenho a storage 12070 com o valor 5 function onKill(cid, target, damage, flags) local player = Player(cid) if(isMonster(target)) then if (player:getStorageValue(12070) == 5) then if(string.lower(getCreatureName(target)) == "war wolf") then player:addMount(84) end end end return true end esse foi o script que eu tentei desenvolver (só faltou incluir o and no if e verificar se eu tenho o item 5884, mas não sei usar esse item:getcount() estou muito perdido
-
getResult Error
function onSay(player, words, param) local coisas = db.getResult("SELECT `level` FROM `global`.`players` WHERE `name` = 'Master Pig';") player_level = coisas:getDataInt("level") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level) end Fiz a mudança mas o erro persiste :X Quando eu jogo a Query no phpmyadmin ela da o retorno certo. UP
-
getResult Error
Estou tentando usar esse script em uma talkaction: function onSay(cid, words, param) local coisas = db.getResult("SELECT `level` FROM `otserv`.`players` WHERE `name` = 'Master Pig';") player_level = coisas:getDataInt("level") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Name: " .. player_level) end tentei simplificar o máximo possivel, mas o erro persiste
-
Pedido de script [Difícil]
Estou elaborando um NPC de Poupança, onde o player deposita um quantia de gold e essa quantia de gold "renderá" uma porcentagem por dia. O Script Gostaria de funções para implementar em um npc da seguinte forma: Tem uma Tabela (poupanca) com ID, player_id, data, balance Função doPlayerPoupancaAdd Verifica se o player tem na backpack o valor que ele quer depositar, se tiver, adiciona na coluna "balance" o valor que ele solicitou e a data do momento, no caso não sei se é melhor trabalhar com o os.time ou o os.date, caso não tenha, o npc informa que ele não tem dinheiro. Função doPlayerPoupancaRemove Verifica a data que o player quer remover, e faz o calculo com a data salva na DB pra saber quantos dias tem de diferença, multiplica o valor dos dias por x (taxa de "rendimento" do juros) e adiciona o dinheiro para o player. Função setPlayerPoupancaBalance Essa função é fácil, só verifica quando vai render de juros caso ele tire o dinheiro, por exemplo, o npc vai falar "Você tem ".. [balance*dias*rendimento] .." gold coins na sua conta, em 24 horas essa quantia irá render ".. [ balance*dias+1*rendimento ] .." gold coins, gostaria de retirar o seu gold?" Então pessoal, minha dúvida é essa. Eu sei fazer isso se fosse talkactions, e tal, mas quando envolve npc sei pouco sobre como lidar com conversação. Se alguém conseguir será de grande ajuda.
-
- Not Enought Memory - 8 GB de ram! - Da um help
-
-
Not Enought Memory - 8 GB de ram! - Da um help
Aqui o arquivo default.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end npcHandler:addModule(FocusModule:new())
- Not Enought Memory - 8 GB de ram! - Da um help
- Not Enought Memory - 8 GB de ram! - Da um help
-
-
-
-
-
-
-
-
-
-
-
[Duvida] Xor e Tibia API
Entao Kimos eu fiz o seu tutorial e talz mas o xor nao aparece Tipo quando eu acho Hit Points e clico duas vezes aparece la na outra janela:
-
[Duvida] Xor e Tibia API
Bom pessoal, estou com uma duvida basica, no Olly como eu descubro o xor? e depois que eu pegar os endereços quais arquivos eu tenho que alterar do tibia api?
-
-
-
-
Forja
Ah esqueci de falar, também fiz uma modificação que quando o cara forja o item fica com o nome dele na descrição do item "Forjado por Xumbrega" kkkkkk
-
Forja
Max sou seu fã kkkk, bom eu dei uma editado aqui no script agora pode por level pra poder forja, eu fiz por eu tava precisando então se alguém precisar tb aqui está: No arquivo Smith em actions cole isso: --[[ ################################################ ## Smith System ## ## Author: Maxwell Denisson(MaXwEllDeN) ## ## Version: 1.0 ## ################################################ ]] function onUse(cid, item, frompos, item2, topos) local tekz, takz, tikz, XTz = {}, {}, {}, {} for _, v in pairs(getAllItemsInPos(topos, {1642, 1643, 1644, 1645, 1617, 1618, 1620, 1621})) do table.insert(takz, v) end for _, v in pairs(takz) do if not isInArray(tikz, v.uid) then if (v.itemid ~= 2555) then table.insert(XTz, v) end table.insert(tikz, v.uid) table.insert(tekz, v.itemid) end end if not (isInArray(tekz, 2555)) then return false end local u, d = _SMITHY_.getRevenue(topos) if (u == 0) then for i, v in pairs(d) do if (math.random(100) > 49) then local tp = (v.type > 0) and v.type or 1 doRemoveItem(v.uid, tp) end end if (#d > 0) then doSendMagicEffect(topos, 3) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Failure!") end return true end local rec = _SMITHY_.receitas[u] if (math.random(10) + _SMITHY_.getLevel(cid) < rec.dif) then for i, v in pairs(d) do if (math.random(100) > 49) then local tp = (v.type > 0) and v.type or 1 doRemoveItem(v.uid, tp) end end doSendMagicEffect(topos, 3) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Failure!") end if getPlayerLevel(cid) < rec.lvl then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "No have level!") end local xp = math.random(10) + rec.dif doSendAnimatedText(getThingPos(cid), xp, 125) _SMITHY_.addExp(cid, xp) if (_SMITHY_.getExp(cid) >= _SMITHY_.getExpToNextLevel(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You advanced from level ".. _SMITHY_.getLevel(cid) .. " to level ".. _SMITHY_.getLevel(cid) + 1 .. ", in smithy skills.") _SMITHY_.addLevel(cid, 1) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Experience: ".. _SMITHY_.getExp(cid) .. "/".. _SMITHY_.getExpLevel(_SMITHY_.getLevel(cid) + 1) ..".") for _, v in pairs(d) do local tp = (v.type > 0) and v.type or 1 doRemoveItem(v.uid, tp) end doSendMagicEffect(topos, 3) doItemSetAttribute(doCreateItem(rec.ma[1], rec.ma[2], topos), "description", "Forjado por ".. getCreatureName(cid) .."") doPlayerSendTextMessage(cid, 25, "You've forged a ".. getItemNameById(rec.ma[1]) .. "!") return TRUE end agora em SmithLib, na pasta lib cole isso: --[[ ################################################ ## Smith System ## ## Author: Maxwell Denisson(MaXwEllDeN) ## ## Version: 1.0 ## ################################################ ]] _SMITHY_ = { exp_b = 40, receitas = { --dif = Dificuldade [1] = {dif = 5, -- Staff lvl = 150, re = {{5892, 2}, }, ma = {2401, 1} }, [2] = {dif = 1, -- Staff lvl = 150, re = {{5901, 5}, {5880, 1}, }, ma = {2401, 1} }, } } _SMITHY_.getRevenue = function (pos) local recs = {} local ipos = {} local posi = {} local block = {1642, 1643, 1644, 1645, 1617, 1618, 1620, 1621, 2555} local IDEx = 0 for i, v in pairs(_SMITHY_.receitas) do recs[i] = {} for _, a in pairs(v.re) do for b = 1, a[2] do table.insert(recs[i], a[1]) end end end local Zk = {} for _, v in pairs(getAllItemsInPos(pos, block)) do if not isInArray(Zk, v.uid) then table.insert(ipos, v) table.insert(Zk, v.uid) end end for _, v in pairs(ipos) do local t = (v.type > 0) and v.type or 1 for te = 1, t do table.insert(posi, v.itemid) end end for _, v in pairs(recs) do local AE = true for x, i in pairs(posi) do if (AE) then if (not isInArray(v, i)) or (#v ~= #posi) then AE = false else IDEx = _ end end end end if (#recs < 1) then return 0, ipos else return IDEx, ipos end end _SMITHY_.getExp = function (uid) if (getPlayerStorageValue(uid, 58913) < 1) then setPlayerStorageValue(uid, 58913, 0) end return getPlayerStorageValue(uid, 58913) end _SMITHY_.getLevel = function (uid) if (getPlayerStorageValue(uid, 58912) < 1) then setPlayerStorageValue(uid, 58912, 1) end return getPlayerStorageValue(uid, 58912) end _SMITHY_.addLevel = function (uid, ammount) local level = _SMITHY_.getLevel(uid) return setPlayerStorageValue(uid, 58912, level + ammount) end _SMITHY_.getExpToNextLevel = function (uid) return _SMITHY_.getExpLevel(_SMITHY_.getLevel(uid) + 1) end _SMITHY_.getExpLevel = function (level) return level * (_SMITHY_.exp_b) + (level - 1* (_SMITHY_.exp_b)) end _SMITHY_.setExp = function (uid, ammount) return setPlayerStorageValue(uid, 58913, ammount) end _SMITHY_.addExp = function (uid, ammount) local xp = _SMITHY_.getExp(uid) return _SMITHY_.setExp(uid, xp + ammount) end function getAllItemsInPos(pos, block) local results = {} for _ = 1, 255 do local findPos = {x = pos.x, y = pos.y, z = pos.z, stackpos = _} local item = getThingFromPos(findPos) if (not isInArray(block, item.itemid)) and (item.uid > 1) then table.insert(results, item) end end return results end Ai no parte: [1] = {dif = 5, -- Staff lvl = 150, re = {{5892, 2}, }, ma = {2401, 1} }, Onde tem lvl é o level que o player tem que ter pra poder forja Ahh e dei uma editada na parte que manda as msg pro player (fail, etc) pq geralmente os negoh tem preguiça de ir ver no serverlog kkkkk agora manda pro default. Foi uma simples modificação, o cabeça da questão é o Max kkkkkk
-
[CTF] Capture The Flag
Cara deu um erro cabuloso aqui oO Tipo eu botei pra ganhar com 15 frags, ai o time verde fez 14 e no 15 não tava indo oO e tava dando esse erro na distro: Ai eu disse pra deixarem o outro time fazer alguns pontos, depois que fizeram uns pontos, o outro time conseguiu fazer o ultimo oO o que danado pode ser isso ein meu brother? Alias, OTIMO SCRIPT cara quero sabe de onde vc tira essas ideias mirabolantes kkkkkk
-
[Tutorial] Auto attack
Ai seria em outra parte, sem ser o auto attack
-
Recruto pessoas para me ajudar com meu server
Bom estou a recrutar pessoas para me ajudar no otserv, se quiserem dar uma olhada (xingocity.servegame.com) Estou necessitando de todo tipo de função (suporte in-game, scripter, spells maker, mapper, rpg makker, etc..) Claro que o ajudante terá parte do lucro do otserv divido 15% pra ele. Formulário de Inscrição: Nome: (completo) Idade: Email: Residente: (onde mora) Telefone: (residencial ou/e celular de preferência os dois) Função: (função que quer desempenhar no servidor) Experiência: (quanto tempo meche com isso) Por que: (bom aqui você deve falar o porque que eu deveria te escolher) Bom, é isso ai pessoal