Ir para conteúdo

caotic

Infante
  • Total de itens

    1599
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que caotic postou

  1. Esta terceira fiko epica. Insertar todas as caracteres para depois comparar todas. Gostei ehauehauehaueh'
  2. caotic

    Pedido de Script

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  3. Tópico movido para a seção de dúvidas e pedidos resolvidos.
  4. MANO, SÓ DIGO UMA COISA PRA VC: string.rep("HUE",math.huge) e eu acho q devia parar de tentar pogar, querendo ou nao isso ainda deixa o script 1 bosta e desnecessariamente complicado flw Po cara e meu jeito de programar e isto ai. Ninguém muda isto não. Mais ....
  5. corujinha11 cuidado com o flood. Flood são todos os post desnecessário ao tópico. Favor ler as regras.
  6. Banir o oneshot era demais o que precisa era só chamar a atenção. E como a área de scripting vai andar sem uns dos melhores coord. do xtibia? Ele só expôs a opinião dele. (Eu digo isto sendo uma pessoa que mais tive intriga com o oneshot)
  7. Acredito em 8.x para cima. E claro o items.xml não deve ter erros grandes.
  8. Ola galera xtibiana. As vezes precisamos ler arquivos mais nem sempre eles são organizados e fáceis de ler um exemplo e a xml items do seu otserv. Ler um arquivo grande e com informações que muitas das vezes você não ira precisar no momento se torna uma tarefa árdua e cansativa. Pensando nisso desenvolvi um código que lé seu arquivo items.xml e procura informações crucias organizando tudo em apenas um documento. Além disso você pode colocar anotações e modificar livremente o arquivo gerado. Quando estiver procurando algum item em especial ficará muito mais fácil acha - lo e descobrir de maneira pratica suas informações. O código e pequeno e simples basta executar uma vez a talkaction. Vamos a instalação. Crie um arquivo de texto chamado de log na pasta raiz do seu otserv onde fica seu arquivo config.lua. Depois vá em talkactions e crie um arquivo lua chamado de itens e coloque isto: function onSay(cid, words, param, channel) function getItensAndAttrItens() local dir = "data/items/items.xml" local item = io.open(dir, "r") str = "Itens Disponiveis no Otserv\n" for i in item:read("*a"):gmatch('</item>(.-)</item>') do local itemid = tonumber(i:match('item id="(.-)"')) or tonumber(i:match('toid="(.-)"')) local name = tostring(i:match('name="(.-)"')) local desc = tostring(i:match('<attribute key="description" value="(.-)" />')) str = ""..str.."\n-"..itemid.."-Nome do item = "..name.." - Desc = "..desc.."" io.close() end return str end local file = io.open("./log.txt", "a") file:write(getItensAndAttrItens()) file:close() return true end Agora vá em talkactions.xml e coloque isto: <talkaction words="/item" event="script" value="itens.lua"/>
  9. caotic

    storage

    Tópico movido para a seção de dúvidas e pedidos resolvidos.
  10. Existe este bug. E porque o player desloga e ele não executa a função. Tanto que ele ficará com a storage da tv. Você precisar resolver seus erros de crash
  11. Ola galera venho trazer a função string.explode ela ja existe mais resolvi fazer com os encantos do pog. A função separa uma string por um carácter e depois ele e insertado numa table podendo assim manipular cada parte. function string.explode(str, char) k = 1 x = {} i = 1 str = ""..str..""..char.."" while #str > k do local t = string.sub(str, k, k) if t == char then table.insert(x, string.sub(str, i, k-1)) k = k+1 i = k end k = k+1 end return x end str = "Ola,Oi,Sua,Vida,Taste, oi" for i=1, #string.explode(str, ",") do print(string.explode(str, ",")[i]) end
  12. Se você quer action coloque esta tag: <movevent type="StepIn" actionid="2324" event="script" value="vocs.lua"/> Depois e so pegar o id 2324 e colocar no seu piso não esqueça de adicionar o script.
  13. Vá em moveements e crie um arquivo lua chamado de vocs e coloque isto: function onStepIn(cid, item, pos, fromPosition) local vocs = {5,6,7,8} --- Vocações permitidas if not isInArray(vocs, getPlayerVocation(cid)) then doTeleportThing(cid, fromPosition, true) str = "Vocações permitidas" for i = 1,#vocs do str = ""..str.."\n"..vocs[i].."" end doShowTextDialog(cid, 1397, str) return true end return true end Vá em moveements.xml e coloque esta tag: <movevent type="StepIn" itemid="293" event="script" value="vocs.lua"/>
  14. Se você pelo menos tivesse a vontade de ler as regras e pelo postar o tópico em área correta Eu poderia te ajudar ao invez de mover seu tópico.
  15. Não gosto de identar. Como eu disse não vejo necessidade nem e preguissa.
  16. Claro que não conseguira ajuda. Você postou em área incorreta. Estarei movendo mais espero que leia as regras.
  17. local itens = { ["staff fire"] = {staff = 2334}, ------ Primeiro e o nome da nova staff e depois o id da staff que ele precisa ["staff ice"] = {staff = 2336}, } function onSay(cid, words, param, channel) if param == " " or param == "" then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o nome da staff que você quer") and false end local item = itens[param] if not item then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe esta staff") and false end local item = getItemIdByName(item) if getPlayerItemCount(cid, itens[param].staff) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..getItemNameById(itens[param].staff).."") and false end doPlayerRemoveItem(cid, item.staff) doPlayerAddItem(cid, item) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você obteve a nova staff") return true end
  18. No meu ponto de vista o fórum esta perfeito. Só mudaria a forma que a equipe trata os membros(Estou decepcionado nesta questão) Mais concursos para os novinhos(Para a entrada na equipe). Daria mais "importância" ao conteúdos postado no fórum. E claro atualizaria o fórum(Que faz um tempinho que estou cobrando isto)
  19. Eita. Os cristãos ligando para encher a pança de dinheiro da band principalmente para o datena. Dinheiro e foda msn ;D.
  20. E chato fazer sem c++ Mais ta ai o exemplo que pode ser melhorado. Afinal. Da para fazer muita coisa com Lua.
  21. doCreatureSetHideHealth(cid, hide) Seria um função nativa de Lua nunca ouvi falar(a não ser em pokemon) A função doCreatureSetNoMove estarei adicionando. Obrigado pela sugestão.
  22. Erro do forum. Ja to fazendo o upload do vídeo(357 mb pqp). Eu to revendo o script para retirar bugs. Protinho o vídeo foi adicionado ao tópico
  23. Não acho um bom critério avaliar se o script tem identação ou não para ir para o portal. Mais e você que manda meu caro coordenador. Abraços.
  24. . Esqueci da lib no tópico me desculpe. Foi adicionado. Estarei fazendo o video
  25. Ola galera xtibiaaana!. Então meus amigos resolvi fazer um TV system aquele famoso sistema que o player cria uma channel(canal) e outros players poderão ver ele batalhando. Estou retirando o máximo de bugs possíveis se você viu um bug não deixe de falar. Vamos as explicações: Primeiro o player cria uma channel usando o comando /tv(nome da channel) depois outro player ve sua channel na lista usando o comando /channel(list) logo ele quer entrar em sua channel então ele fala /channel(nome da channel). Logo apos ele falar ele entra e começa a assistir mais depois ele quer sair então ele "desloga" e ele volta ao tempo. Vamos a instalação. Execute este comandos na sua database: CREATE TABLE "tv" ( "name" Text NOT NULL, "player" INT NOT NULL, "conec" INT NOT NULL ) Vá em lib e crie um arquivo lua chamado de tv e coloque isto: function createTv(cid, name) db.executeQuery("INSERT INTO `tv` (`name`, `player`, `conec`, `watch`) VALUES ('" .. name .. "', " .. getPlayerGUID(cid) .. ", 1, 0);") setPlayerStorageValue(cid, 23423, 1) doPlayerSave(cid) end function isTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getID() ~= -1 and true or false end function getChannelPlayer(cid) return getPlayerStorageValue(cid, 23423) == 1 and true or getPlayerStorageValue(cid, 23423) == -1 and false end function getWatchingNameChannel(cid) return getPlayerStorageValue(cid, 44670) end local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local conditi = createConditionObject(CONDITION_MUTED) setConditionParam(conditi, CONDITION_PARAM_TICKS, 10000*10000) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) function enterInTv(cid, name) local function comparePos(pos, post) local pos = getThingPos(pos) local post = getThingPos(post) return pos.x == pos.x or pos.y == pos.y or pos.z == pos.z and false or true end local function fallowPlayer(cid, player) if not isPlayer(cid) or getPlayerStorageValue(cid, 44670) == -1 then return true end if comparePos(cid, player) then doTeleportThing(cid, getThingPos(player)) doAddCondition(cid, condition) doAddCondition(cid, conditi) setCombatCondition(combat, condition) end return addEvent(fallowPlayer, 1800, cid, player) and doPlayerSave(cid) end setPlayerStorageValue(cid, 44670, name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") local guid = tv:getDataInt("player") local player = getPlayerByNameWildcard(getPlayerNameByGUID(guid)) return fallowPlayer(cid, player) end function exitChannel(cid) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_MUTED) doRemoveCondition(cid, COMBAT_PARAM_AGGRESSIVE) doTeleportThing(cid, getPlayerMasterPos(cid)) setPlayerStorageValue(cid, 44670, -1) doPlayerSave(cid) end function doShowListChannel(cid) local tv = db.getResult("SELECT * FROM `tv` WHERE `player` ORDER BY `conec`") str = "Channel Disponiveis:\n\n" if tv:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha channel disponiveis") return true end while true do local conect = tv:getDataInt("conec") local player = tv:getDataInt("player") local channel = tv:getDataString("name") local players = getPlayerNameByGUID(player) str = str .. channel .. " -("..players..")\n\n" if not tv:next() then doShowTextDialog(cid, 1397, str) break end end end function getConectTv(name) local tv = db.getResult("SELECT * FROM `tv` WHERE `name` = '".. name .."';") return tv:getDataInt("conec") == 1 and true or tv:getDataInt("conec") == 0 and false end function setStatusTv(cid, on) if on == "on" then return db.executeQuery("UPDATE `tv` SET `conec` = 1 WHERE `player` = "..getPlayerGUID(cid)) end if on == "off" or on ~= "on" then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end end end Vá em talkactions crie um arquivo Lua chamado de tv coloque isto: function onSay(cid, words, param, channel) local item = 1949 ----Item que você precisa local bloqued = {"sair", "list", "on", "off"} ----- Nomes de channel que não pode ser usado if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o nome da channel que você quer") and false end if param == "on" or param == "off" then return setStatusTv(cid, param) end for i = 1, #bloqued do str = "Nomes não podem ser ultlizados" str = ""..str.."\n"..bloqued[i].."" if param == bloqued[i] then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este nome não pode ser ultilizado porque e um comando do sistema") and false end end if #param <= 4 and #param >= 10 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O nome da sua channel deve ser maior que 4 caracteres e menor que 10 caracters") and false end if getPlayerItemCount(cid, item) < 1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de um "..getItemNameById(item).."") and false end if getChannelPlayer(cid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ja tem uma channel") and false end createTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns sua channel "..param.." foi criada") return true end Vá em talkactions e crie um arquivo lua chamado de channel e coloque isto: function onSay(cid, words, param, channel) if param == "" or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga /channel(nome da channel para se conectar)\n/channel(list) Lista das channels\n/channel(sair para sair da channel)") and false end if param ~= "list" and param ~= "sair" then if not isTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não existe esta channel") and false end if not (getTilePzInfo(getCreaturePosition(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você so pode entrar em uma channel quando estiver em pz") return true end if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode entrar uma tv porque você ja tem uma") return true end if getWatchingNameChannel(cid) ~= -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta conectado a uma channel") return true end if not getConectTv(param) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Esta channel esta desativada") and false end enterInTv(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você esta assitindo a channel "..param.."") return true end if param == "list" then return doShowListChannel(cid) end if param == "sair" then if getChannelPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode sair de sua propria tv use o comando /tv off para desativar sua channel") return true end if getWatchingNameChannel(cid) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não esta conectado a uma channel") return true end exitChannel(cid) return true end return true end Vá em talkactions.xml e coloque estas tags: Vá em creaturescripts e crie um arquivo lua chamado tv e coloque isto: function onLogout(cid) if getChannelPlayer(cid) then local tv = db.getResult("SELECT * FROM `tv` WHERE `player` = '".. getPlayerGUID(cid) .."';") local channel = tv:getDataString("name") db.executeQuery("UPDATE `tv` SET `conec` = 0 WHERE `player` = "..getPlayerGUID(cid)) for i =1, #getPlayersOnline() do if getWatchingNameChannel(getPlayersOnline()[i]) == channel and getPlayersOnline()[i] ~= cid then exitChannel(getPlayersOnline()[i]) doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "A channel foi desligada") end end doPlayerSendTextMessage(getPlayersOnline()[i], MESSAGE_INFO_DESCR, "Sua channel foi desativado ao você logar religue dizendo /tv on") return true end if getWatchingNameChannel(cid) ~= -1 then exitChannel(cid) return true end return true end function onAttack(cid, target) if getWatchingNameChannel(cid) ~= 1 then return false end return true end Registre o evento colocando isto antes do ultimo return true: Coloque esta tags em creaturescripts.xml: Configurações Midia: Ajude o tv system dizendo ideias e bugs para o sistema. Estarei optimizando o sistema e retirandos bugs.
  • Quem Está Navegando   0 membros estão online

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