Ir para conteúdo

joaohd

Visconde
  • Total de itens

    361
  • Registro em

  • Última visita

  • Dias Ganhos

    10

Tudo que joaohd postou

  1. Talvez dê para fazer editando o Module do npc. No momento, estou na sala de aula e não posso ajudar. flw
  2. Use o doSummonCreature mesmo. Ou assim: function onStepIn(cid, item, position, fromPosition) if getGlobalStorageValue (2000) >= 1 then doCreateMonster("Demon", {x=281,y=474,z=10}) end return TRUE end flw
  3. Henrique, fiz aqui e precisa testar: Talkaction: Release = { date = "09/08/2010", hour = "13:35" } function Release:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Release:setDate(date) self.date = date end function Release:setHour(hour) self.hour = hour end function Release:getDate() return self.date end function Release:getHour() return self.hour end function onSay(cid, words, param) local t = string.explode(param, ",") if t[1] then if t[2] then Release:setDate(tostring(t[1])) Release:setHour(tostring(t[2])) doPlayerSendTextMessage(cid, 25, "O release foi alterado para " .. Release:getHour() .. " do dia " .. Release:getDate() .. ".") else doPlayerSendCancel(cid, "Você deve informar a hora.") end else doPlayerSendCancel(cid, "Você deve informar a data.") end return TRUE end Tag: <talkaction words="/release" access="5" event="script" value="Release.lua"/> Globalevent: dofile("data/talkactions/scripts/Release.lua") function onThink(interval, lastExecution) return doBroadcastMessage("O próximo release está agendado para o dia " .. Release:getDate() .. " às " .. Release:getHour() .. " horas.", TALKTYPE_ORANGE_1) end Tag: <globalevent name="Release" interval="60000" event="script" value="Release.lua"/> Lembre-se: Caso mude o nome da talkaction ou o diretório, altere o dofile do globalevent para que a lib do Release seja lida. flw
  4. joaohd

    Piso Q Precisa De Iten

    Tente este: function onStepIn(cid, item, pos, frompos) local config = { itemid = 2158, removeOnPass = "yes" } if getPlayerItemCount(cid, config.itemid) >= 1 then doPlayerSendTextMessage(cid, 25, "Welcome!") if config.removeOnPass == "yes" then doPlayerRemoveItem(cid, config.itemid, 1) end else doPlayerSendCancel(cid, "You must have " .. getItemNameById(config.itemid) .. " to pass.") doMoveCreature(cid, frompos) end return TRUE end Edite as configs do jeito que preferir. flw
  5. Tenta isso: ps: o script é muito antigo e de difícil configuração... flw
  6. Tem esse meu e do Mkalo também: ------Script by MatheusMkalo and apocarai------- ------Exclusivo para o Xtibia-------- function onSay(cid, words, param) local a = { [2472] = {price = 160000, countmax = 1}, [2157] = {price = 13000, countmax = 100}, [2466] = {price = 60000, countmax = 1}, [2494] = {price = 150000, countmax = 1} } local b = string.explode(param, ",") if param == "" or b[1] == "" or b[2] == "" then doPlayerSendCancel(cid,"Command param required. Use /buyitens item name, quantity") return TRUE end if a[getItemIdByName(b[1], false)] then if isNumber(b[2]) then if tonumber(b[2]) > 0 then if tonumber(b[2]) <= a[getItemIdByName(b[1], false)].countmax then if getPlayerMoney(cid) >= (a[getItemIdByName(b[1], false)].price*tonumber(b[2])) then doPlayerRemoveMoney(cid,(a[getItemIdByName(b[1], false)].price*tonumber(b[2]))) doPlayerAddItem(cid, getItemIdByName(b[1]),b[2]) doPlayerSendTextMessage(cid,25,"You have bought " .. tonumber(b[2]) .. " " .. getItemNameById(getItemIdByName(b[1])) .. " for " .. (a[getItemIdByName(b[1], false)].price*tonumber(b[2])) .. " gold pieces.") else doPlayerSendCancel(cid,"You have not enough money.") end else doPlayerSendCancel(cid,"You have informed a quantity higher than count max.") end else doPlayerSendCancel(cid,"You have informed a quantity lower than 0") end else doPlayerSendCancel(cid,"Quantity must be a number.") end else doPlayerSendCancel(cid, "Invalid item name.") end return TRUE end flw
  7. joaohd

    Reset System

    Observando o script, eu percebi que não há diferença alguma entre os resets de lvl 350 e os outros... Ou seja, não fará diferença alguma o jogador possuir o lvl necessário pois sempre resetará para o mesmo ponto inicial. Não há motivo para colocar stages sem algum benefício... flw
  8. Tenta isso: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatFormula(combat1, COMBAT_FORMULA_SKILL, 0, -90, 0.7, -50) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA) setCombatFormula(combat2, COMBAT_FORMULA_SKILL, 0, -95, 0.9, -55) local area1 = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat1, area1) local area2 = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat2, area2) function onCastSpell(cid, combat, var) if (getPlayerSlotItem(cid, 9).itemid == 5785) then doCombat(cid, combat2) else doCombat(cid, combat1) end return TRUE end flw
  9. Assim: function onSay(cid, words) local teleport = {x=150, y=52, z=7} if not getCreatureCondition(cid, CONDITION_INFIGHT) then doTeleportThing(cid, teleport) else doPlayerSendTextMessage(cid,22,"teleport se tiver com battle off") end return TRUE end flw
  10. Especifique qual o seu sistema de vip para que possa ajudá-lo. flw
  11. Ou simplesmente troque a tag no arquivo talkactions.xml para: <talkaction words="WORDS" access="6" event="script" value="NOME.lua"/> flw
  12. joaohd

    Luasql

    Agora só preciso que alguém mova =x flw
  13. A magia, somente mude em seu spells.xml, onde está: premium="1" para premium="0" flw
  14. joaohd

    Script

    No config.lua, mude: newPlayerChooseVoc = true para newPlayerChooseVoc = false flw
  15. A função doSetCreatureOutfit não deixa trocar o outfit... A não ser quando você sai do jogo, saindo assim o outfit. flw
  16. Veja se funciona: function onStepIn(cid, item, frompos, item2, topos) local outfit = {lookType = 99, lookHead = 81, lookBody = 114, lookLegs = 114, lookFeet = 81, lookAddons = 3} if item.actionid == 5031 and isPlayer(cid) then doSetCreatureOutfit(cid, outfit, -1) end return true end flw
  17. O tutorial do roller coaster eu não vou dar pois tem no fórum. O erro da spell foi que faltava um "return TRUE" após os addEvent. Isto foi implantado após o update 8.5. flw
  18. A magia: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -3.0, -20, -2.6, -250) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 37) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -3.0, -20, -2.6, -250) arr1 = { {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0}, {1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1}, {1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 2, 1, 1, 1, 0, 1}, {1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1}, {1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1}, {0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, } arr2 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2 } addEvent(onCastSpell1, 1000, parameters) addEvent(onCastSpell2, 2000, parameters) return TRUE end O roller coaster você encontra na seção de actions & movements. flw
  19. Eu ja estou mexendo na nova versão mas tive que reformular todo o script. Surgiram problemas quanto ao botão executar, à colorização das keywords e ainda não consegui implementar a função de busca dos itens mediante o arquivo items.xml. flw
  20. Acho que o problema pode estar no script. Poste para que verifique. flw
  21. Tenta ae: local config = { animationColor = TEXTCOLOR_LIGHTBLUE, --[[Cor da animação | Padrão = Azul Claro]] textType = MESSAGE_INFO_DESCR, --[[Cor do Texto | Padrão = Verde]] expGain = {100000, 200000}, --[[Ganho aleatório de experiência]] removeOnUse = true --[[Remover no uso?]] } function onUse(cid, item, fromPosition, itemEx, toPosition) local gain = math.random(config.expGain[1], config.expGain[2]) doPlayerAddExp(cid, gain) doSendAnimatedText(getThingPosition(cid), gain, config.animationColor) doPlayerSendTextMessage(cid, config.textType, "You received ".. gain .." experience from the Elixir") if removeOnUse == true then doRemoveItem(item.uid, 1) end return true end É o do Oneshot, mas ele esqueceu de colocar uma vírgula. flw
  22. joaohd

    Luasql

    LuaSQL Bom, antes de mais nada queria me desculpar com Won Helder pela demora no tutorial, mas antes tarde que nunca... Vamos ao tutorial. Aviso: As querys que forem usadas como exemplos, bem como o tutorial são voltados à engine MySql, podendo não funcionar em sqlite. Para começarmos a criar nossas próprias querys, devemos conhecer as instruções (nome dado às ações que serão executadas), para depois aplicarmos nas querys: ► ALTER: Este comando é utilizado quando queremos criar uma row (coluna) nova. Sua sintaxe é como mostrada abaixo: ALTER [tipo] [nome da coluna] [instrução] [configurações] Complicado demais? Então vamos à um exemplo prático: ALTER TABLE `players` ADD `tutoriais` integer not null default 0 No caso acima, eu alterei a tabela “players”, adicionando a coluna “tutoriais” com as configurações “Somente números inteiros, não nulos, valor inicial 0”. ► SET: Comando usado para ajustar os valores de uma célula. Observe: UPDATE `players` SET `level` = 8 No exemplo acima, eu alterei o level de todos os jogadores na database para 8. Caso quisesse somente 1 jogador, faria assim: UPDATE `players` SET `level` = 8 WHERE `id` = 1 O comando acima altera o level do jogador número 1 da database para 8. ► SELECT: Comando utilizado para “escolher” algum valor da database. A instrução SELECT não muda os dados no banco de dados. Observe: SELECT `name` FROM `players`WHERE `id` = 1 Neste exemplo, será mostrado o nome do jogador número 1 da database, sem fazer alterações. ► INSERT: Usado para inserir dados em uma célula. Observe: INSERT INTO `accounts` (id, name, password) VALUES (2, “god”, “god”) Como podemos perceber, o INSERT pode ser usado para inserir dados múltiplos à tabela. No exemplo acima, criei uma conta com id = 2, name = “god” e senha = “god”. ► UPDATE: Usado para atualizar a tabela e a coluna que queremos acessar: UPDATE `players` SET `level` = 8 Percebam que quando uso o UPDATE, obrigatoriamente devo usar uma instrução secundária. ► DROP COLUMN: Usado para excluir colunas. Veja: Primeiro vamos criar uma coluna para excluirmos: ALTER TABLE `players` ADD `delete` varchar(255) not null default 0 Agora vamos deletar: ALTER TABLE `players` DROP COLUMN `delete` Sempre que for deletar uma coluna, um aviso será emitido, para que não haja engano na hora de deletar. Observações importantes: ► As configurações da coluna podem ser várias, as mais usadas são: integer not null default 0 varchar(255) not null default 0 A primeira é para colunas numéricas, com valor inicial zero. A segunda é para colunas que contenham textos ou palavras. Aplicando nos scripts Muitas vezes, precisamos fazer uso da database em alguns scripts. E várias são as funções de manipulação de database em LUA. Porém, usaremos somente uma delas: db.executeQuery(query) Bem simples. Observe um exemplo de uso em script de reset: function onSay(cid, words) local pid = getCreatureGUID(cid) doRemoveCreature(cid, true) db.executeQuery("UPDATE `players` SET `level` = 8, `experience` = ".. getExperienceForLevel(8) .." WHERE `id` = ".. pid ..";") return TRUE end Este script, apesar de ser bem simples, é muito utilizado e muito buscado. Sua função é mudar o level e a experiência do jogador. Bom, é isso! Tutorial feito por mim (apocarai) flw
  23. Muito mais fácil especificar na tag xml o percentual de mana a ser retirado que especificar no script Simplesmente adicionando isto à tag de sua spell: manapercent="75" flw
  24. Caso seu ot seja sqlite, tem que abrir o sqlite editor e criar a tabela rep com as configurações: ALTER TABLE "players" ADD "rep" INT( 11 ) NOT NULL DEFAULT "0"; Caso tenha alguma opção de executar query, coloque a query acima e execute. Caso seu ot seja mysql, entre no localhost pelo site: http://localhost/phpmyadmin e selecione sua database à direita. Vá em sql, cole a query abaixo e clique em executar: ALTER TABLE `players` ADD `rep` INT( 11 ) NOT NULL DEFAULT '0'; flw
  25. Não existe a coluna na database. Execute a query de acordo com o tipo de sua database: MySQL: ALTER TABLE `players` ADD `rep` INT( 11 ) NOT NULL DEFAULT '0'; SQlite: ALTER TABLE "players" ADD "rep" INT( 11 ) NOT NULL DEFAULT "0"; flw
  • Quem Está Navegando   0 membros estão online

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