Ir para conteúdo

caotic

Infante
  • Total de itens

    1599
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que caotic postou

  1. Ola galera xtibia. Eu resolvi fazer o Trainer OFF 1.0 o antigo trainer off beta tinha algumas limitações. Segue o link do Trainer off beta: http://www.xtibia.com/forum/topic/199659-trainer-off-sytem-beta-by-caotic/ Como o próprio nome diz e um treinamento quando o player está off. Ele paga uma taxa para treinar uma certa quantidade de horas e depois suas skills são upadas. Na versão superior foi adicionado Vamos ao sistema lets go: Crie um arquivo lua chamado de trainer em talkactions e coloque isto: local Train = { skill = 0, quant = 0, time = 0, vocations = {}, money = 0, player = 0 } local table = { ["fist"] = SKILL_FIST, ["sword"] = SKILL_SWORD, ["axe"] = SKILL_AXE, ["distance"] = SKILL_DISTANCE, ["shild"] = SKILL_SHIELD, ["fishing"] = SKILL_FISHING } local x = {"First Skill", "Sword Skill", "Axe Skill", "Distance Skill", "Shild Skill", "Fishing Skill"} function Train:new(cid, param, vocations, money, quant) local trainer = { vocations = {}, param = param, player = cid, money = tonumber(money), quant = tonumber(quant) } return setmetatable(trainer, {__index = self}) end function Train:start() cid = self.player local t = string.explode(self.param, ",") if not t[1] or not isNumeric(t[1]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o tempo que você quer treinar") and false end self.skill = table[t[2]] self.time = t[1]*36000*1000 self.money = self.money*t[1] self.quant = self.quant*t[1] if not t[2] or not table[t[2]] then str = "Lista de skills(Diga a sua skill)\nPara dizer e só escrever /treiner (tempo do treiner,skill)\n" for i = 1, #x do str = ""..str.."\n"..x[i].."" end doShowTextDialog(cid, 1397, str) return true end if isInArray(self.vocations, getPlayerVocation(cid)) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação não permite o trainer") and false end if self.money >= getPlayerMoney(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..self.money.." de money") and false end if self.time <= 36000*1000 then self.time = 36000*1000 end exhaustion.set(cid, 44226, self.time) doPlayerAddSkill(cid, self.skill, self.quant) doPlayerRemoveMoney(cid, self.money) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Pronto você esta em treinamento") doRemoveCreature(cid) end function onSay(cid, words, param, channel) local voc = {} ---- Vocações QUE NÃO SE PERMITIDAS TRAINER OFF(Se não tiver deixe sem nenhuma) local money = 200000 ----- Quanto de money PARA CADA hora local quant = 4 ------ Quantidade de skill que ele ganha PARA CADA HORA local trainer = Train:new(cid, param, voc, money, quant) trainer:start() return true end Agora vá em talkactions.xml e coloque esta tag: <talkaction words="/treiner" event="script" value="trainer.lua"/> Agora vá em creaturescripts e crie um arquivo lua chamado de treiner e coloque este codigo: function onLogin(cid) if exhaustion.get(cid, 44226) then doPlayerPopupFYI(cid, "Não e permitido logar enquanto esta treinando") return addEvent(doRemoveCreature, 180, cid) end return true end Registre o evento em login.lua colocando isto antes do ultimo return true: registerCreatureEvent(cid, "treiner") E coloque esta tag em creaturescripts.xml: <event type="login" name="treiner" register = "1" event="script" value="treiner.lua"/>
  2. Ola galerinha xtibiana. Eu resolvi fazer uma versão superior do report system usando db. Segue o link da versão demo: http://www.xtibia.com/forum/topic/198470-report-sytem-beta/ Esta versão utiliza banco de dados assim fica mais fácil de manipular e o administrador poderá ver os reports "In-Game" além de que eles serão excluídos apos serem lidos. A lista e ordenada pelo level do player "evitando as vezes você ler primeiros possíveis floods". Vamos a instalação. Vá em lib e crie um arquivo lua chamado de report e coloque isto: function getReportByGuid(guid) local shop = db.getResult("SELECT * FROM `report` WHERE `id` = ".. guid ..";") return shop:getDataString("report") end function doPlayerAddReport(cid, report) db.executeQuery("INSERT INTO `report` (`id`, `report`, `level`) VALUES (" .. getPlayerGUID(cid) .. ", '" .. report .. "', " .. getPlayerLevel(cid) .. ");") return true end function showReports(cid) local rep = db.getResult("SELECT * FROM `report` WHERE `id` ORDER BY `level`") str = "Reports Ativos:\n\n" if rep:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha reports disponiveis!") return true end while true do local list = rep:getDataString("report") local players = rep:getDataInt("id") local name = getPlayerNameByGUID(players) str = str .. list .. " -("..players..")- Name ("..name..")]\n\n" db.executeQuery("DELETE FROM `report` WHERE `id` = ".. players.." and `report` = '".. list .."';") if not rep:next() then doShowTextDialog(cid, 1397, str) break end end end Agora vá em talkactions e crie um arquivo LUA chamado de report e coloque este codigo: function onSay(cid, words, param, channel) local time = 4 ---- Exhaustion cada numeral equivale a 1 hora. if param == "" or not param or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "E necessario escrever o report") and false end if exhaustion.get(cid, 23246) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você atingiu o limite de reports espere o limite sair") and false end if #param <= 4 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O seu report deve conter mais de 4 caracteres") and false end exhaustion.set(cid, 23246, time*36000*1000) doPlayerAddReport(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns seu report foi enviado para nosso banco de dados logo ele sera visto\nA equipe agradece") return true end Agora continue em talkactions e crie um arquivo lua chamado de logreport e coloque isto: function onSay(cid, words, param, channel) showReports(cid) return true end Agora vá em talkactions.xml e coloque esta tags: Dicas:
  3. Que nada. Eu postei para compartilhar. Não ligo para estas coisas.
  4. Ain. Eu nem citei nome . @topic A organização esta razoável como foi dito só falto trabalhar mais nas perguntas
  5. Eehuaheaueh' Agora que vi que tem uma tag com meu nick.
  6. Eu não curto entrevista "arranjadas" que foram feitas a pedidos do usuário. Tem que ser algo "merecedor"
  7. Ehaueheu. O script ja ta bagunçado se ainda quer mais? Eu queria "Pogar" ele um pouco só que não achei nenhuma utilidade para usar o pog.
  8. Estava sem nada para fazer e resolvi fazer este script. A ideia e que quando o player morre ele tem "vidas" e ele volta para a posição de onde estava. Você deve alterar somente a quantidade de vidas que cada player terá. Vá em creaturescripts crie um arquivo lua chamado de checkpoint e coloque isto: function onDeath(cid, corpse, killer) if getPlayerStorageValue(cid, 43242) == -1 then if getPlayerStorageValue(cid, 26124) ~= -1 then doPlayerSetLossSkill(cid, getPlayerStorageValue(cid, 26124)) end return true end function recordPos(cid) local pos = getThingPos(cid) setPlayerStorageValue(cid, 12356, pos.x) setPlayerStorageValue(cid, 12367, pos.y) setPlayerStorageValue(cid, 12378, pos.z) end function noLoseAttr(cid, corpse) setPlayerStorageValue(cid, 26124, getPlayerLossSkill(cid)) doPlayerSetLossSkill(cid, 0) doRemoveItem(corpse.uid) end recordPos(cid) noLoseAttr(cid, corpse) return true end function onLogin(cid) local vidas = 3 ---Quantas vidas o player vai ter function returnCheckPoint(cid) local record_pos = {x=getPlayerStorageValue(cid, 12356), y=getPlayerStorageValue(cid, 12367), z=getPlayerStorageValue(cid, 12378)} doTeleportThing(cid, record_pos) end function sendMens(cid) local vidas = getPlayerStorageValue(cid, 43242) local x = {"Você esta com "..vidas.." vidas","Resta "..vidas.." vidas para você", "Cuidado resta "..vidas.." vidas para você"} return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, x[math.random(1, #x)]) end if getPlayerStorageValue(cid, 43242) == -1 then return setPlayerStorageValue(cid, 43242, vidas) and true end sendMens(cid) returnCheckPoint(cid) setPlayerStorageValue(cid, 43242, getPlayerStorageValue(cid, 43242)-1) return true end Coloque esta tags em creaturescripts.xml: <event type="death" name="check" event="script" value="checkpoint.lua"/> <event type="login" name="record"" event="script" value="checkpoint.lua"/> Registre o evento em login.lua colocando isto antes do ultimo return true:
  9. lerme você acabou de reviver um tópico de 2011. Leia as regras
  10. Ola galera xtibiana!!! O summon system e um sistema de sumonar sistema com algumas novidades. A configuração fica dentro de arquivo xml ficando mais fácil e pratico de modificar. Para sumonar diga /sum(nome do monstro) Para ver a lista de sumons /sumons Então lets go. Dentro de sua pasta "Data" crie um nova pasta chamado de sumon. Depois dentro da pasta sumon crie um novo arquivo XML e coloque isto dentro: <monster name="Demon" mana="3000" level="300" item="2323" health="100" />< <monster name="Bug" mana="2" level="2" item="0" health="0" />< <monster name="Hydra" mana="2000" level="50" item="2323" health="0" />< Esta e minha configuração se quiser pode alterar. Depois vá em talkactions e crie um arquivo lua chamado de sumon e coloque isto: function onSay(cid, words, param, channel) function getSumonInFile() local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="(.-)" ') do table.insert(x, i) end return x end local function getExistSumonInFile(monster) for i = 1, #getSumonInFile() do if monster == getSumonInFile()[i] then return true end end return false end function getSumonRequiresInFile(monster, attr) local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="'..monster..'" (.-)/') do local req = tonumber(i:match(''..attr..'="(.-)" ')) table.insert(x, req) end return x[1] or 0 end local mana,level,item,health = getSumonRequiresInFile(param, "mana"),getSumonRequiresInFile(param, "level"),getSumonRequiresInFile(param, "item"),getSumonRequiresInFile(param, "health") local x = {"Vá "..param.." e derrote estes malditos","Seja bem vindo "..param.."","Váaaaa "..param.."","Eae "..param.." esta pronto?!","Vaii "..param.." você e realmente forte"} if param == "" or not param or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Precisa de dizer o nome do monsto") and false end if not getExistSumonInFile(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este monstro não pode ser sumado") end if getCreatureMana(cid) <= mana then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..mana.."de mana para sumonar") and false end if getPlayerLevel(cid) <= level then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..level.." de level para summonar") and false end if getPlayerItemCount(cid, item) < 0 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem o item "..item.." para summonar") and false end if getCreatureHealth(cid) <= health then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não "..health.."de health para summonar") and false end doSummonMonster(cid, param) doCreatureAddHealth(cid, -health) doCreatureAddMana(cid, -mana) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, x[math.random(1, #x)]) return true end Agora de novo em talkactions crie um arquivo lua chamado de sumons e coloque isto: function onSay(cid, words, param, channel) function getSumonInFile() local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="(.-)" ') do table.insert(x, i) end return x end function getSumonRequiresInFile(monster, attr) local x = {} local events = io.open("data/sumon/sumon.xml", "r") for i in events:read("*a"):gmatch('<monster name="'..monster..'" (.-)/') do local req = tonumber(i:match(''..attr..'="(.-)" ')) table.insert(x, req) end return x[1] or 0 end str = "" for i = 1, #getSumonInFile() do local sum = getSumonInFile()[i] local mana,level,item,health = getSumonRequiresInFile(sum, "mana"),getSumonRequiresInFile(sum, "level"),getSumonRequiresInFile(sum, "item"),getSumonRequiresInFile(sum, "health") str = ""..str.."\n"..getSumonInFile()[i].." Level - "..level.." health - "..health.." mana - "..mana.."" end doPlayerPopupFYI(cid, str) return true end E prontinho vou ensinar a configuração no seu arquivo xml:
  11. caotic

    srlua

    Boa boa. Vou testar aki e ve como funciona. Parabéns.
  12. Vou mover para a área de programação. Movido
  13. Tem certeza que segui o procedimento certo. Crie um arquivo de TEXTO chamado de mensagens na pasta data do seu otserv
  14. Ola galera xtibiana O radio system eu ja tinha feito numa versão "beta" mais estava muito limitado. O link do sistema beta http://www.xtibia.com/forum/topic/190386-radio-sytem/ Então resolvi fazer uma versão superior O radio sytem e um sistema de (channel ou estações). Um player cria uma nova radio e depois outro player "sincroniza" a partir disso o dono da radio pode mandar mensagens a todos os participantes Para procurar uma radio e exibido uma janela que monstra o (Id da radio, dono da radio, radio esta online ou offline) Vamos aos códigos: function getRadPlayer(cid) local rad = db.getResult("SELECT `rad` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) return rad:getID() ~= -1 and rad:getDataInt("rad") or false end function setPlayerRad(cid, rad) db.executeQuery("UPDATE `players` SET `rad` = "..rad.." WHERE `id` = "..getPlayerGUID(cid)) end function createNewRad(cid) db.executeQuery("INSERT INTO `rad` VALUES (".. getPlayerGUID(cid) ..", ".. 1 ..")") db.executeQuery("UPDATE `players` SET `rad` = "..getPlayerGUID(cid).." WHERE `id` = "..getPlayerGUID(cid)) end function getOwnerIdRad(cid) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` = ".. getPlayerGUID(cid) ..";") return rad:getID() ~= -1 and rad:getDataInt("id") or false end function getRadMens(cid) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` = ".. getPlayerGUID(cid) ..";") return rad:getID() ~= -1 and rad:getDataInt("mens") or 0 end function getPlayerOwnerRad(cid) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` = ".. getPlayerGUID(cid) ..";") return rad:getID() ~= -1 and true or false end function getExistRad(id) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` = ".. id ..";") return rad:getID() ~= -1 and true or false end function sendTextForRad(cid, text) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` = ".. getPlayerGUID(cid) ..";") local mens = getRadMens(cid)+1 for i =1, #getPlayersOnline() do if getRadPlayer(getPlayersOnline()[i]) == getPlayerGUID(cid) then doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, text) db.executeQuery("UPDATE `rad` SET `mens` = "..mens.." WHERE `id` = "..getPlayerGUID(cid)) end end end Vá em talkactions e crie um arquivo lua chamado de rad e coloque isto: function onSay(cid, words, param, channel) local t = string.explode(param, ",") if not t[1] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o id da radio para participar dela") and false end if getOwnerIdRad(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode participar de outras radios porque você ja tem uma") and false end if not getExistRad(tonumber(t[1])) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esta radio não existe") and false end setPlayerRad(cid, tonumber(t[1])) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta sincronizado na radio "..t[1].."") return true end Continue em talkactions e crie um arquivo lua chamado de list e coloque isto: function onSay(cid, words, param, channel) local rad = db.getResult("SELECT * FROM `rad` WHERE `id` ORDER BY `mens`") str = "Radio Ons:\n\n" if rad:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha radio online") return true end while true do local id = rad:getDataInt("id") local name = getPlayerByNameWildcard(getPlayerNameByGUID(id)) and getPlayerNameByGUID(id) or "offline" str = str .. id .. " - Dono da Radio - ("..name..")\n\n" if not rad:next() then doShowTextDialog(cid, 1397, str) break end end return true end Depois em talkactions de novo crie um arquivo lua chamado de createrad e coloque isto: function onSay(cid, words, param, channel) local price = 22220 -- Preço para criar a radio (detalhe coloque um preço bem alto para o otserv não ficar com muitas radios) if getPlayerMoney(cid) <= price then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem dinheiro suficiente para criar uma radio") and false end if getPlayerOwnerRad(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja tem uma radio ID "..getOwnerIdRad(cid).."") and false end createNewRad(cid) doPlayerRemoveMoney(cid, price) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua radio foi criado seu ID é "..getOwnerIdRad(cid).." convide suas amigos para participar dela") return true end Terminado na mesma pasta(talkactions) crie um arquivo lua chamado de txt e coloque isto: function onSay(cid, words, param, channel) local t = string.explode(param, ",") if not t[1] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloca a mensagem que deseja enviar para os participantes da sua radio") and false end if not getPlayerOwnerRad(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem radio") and false end if #param < 4 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua mensagem deve ser maior") and false end sendTextForRad(cid, "("..getOwnerIdRad(cid)..") "..getPlayerName(cid).." - "..t[1].." ") return true end Coloque esta tags em talkactions.xml: Para usar e simples:
  15. Terminado o radio system 1.0 bem mais completo u.u
  16. Terminado o radio system 1.0 bem mais completo u.u
  17. Ja que ele repete todas as caracteres da string ele acaba retirando o "O".
  18. Eu curti a função nextHorario. Teve que ate separar os valores do ":" e depois transformar tudo em numero para depois comparar valores numa tabela. E isto ai slicer gostei
  19. E isto ai slicer. Foda-se o processamento da maquina e viva o pog
  20. Boa smix. E uma boa usar módulos. Seria interessante retornar booleanos para ficar mais fácil de manipular.
  21. Ja sabia... Eu fiz ela so para desafiar o sub. Ate mais.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...