-
Total de itens
361 -
Registro em
-
Última visita
-
Dias Ganhos
10
Tudo que joaohd postou
-
Talvez dê para fazer editando o Module do npc. No momento, estou na sala de aula e não posso ajudar. flw
-
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
-
Announcer(Hora Data E Proximo Release)
tópico respondeu ao Henrique Moura de joaohd em Lixeira Pública
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 -
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
-
Tenta isso: ps: o script é muito antigo e de difícil configuração... flw
-
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
-
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
-
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
-
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
-
Especifique qual o seu sistema de vip para que possa ajudá-lo. flw
-
Ou simplesmente troque a tag no arquivo talkactions.xml para: <talkaction words="WORDS" access="6" event="script" value="NOME.lua"/> flw
-
Agora só preciso que alguém mova =x flw
-
A magia, somente mude em seu spells.xml, onde está: premium="1" para premium="0" flw
-
No config.lua, mude: newPlayerChooseVoc = true para newPlayerChooseVoc = false flw
-
A função doSetCreatureOutfit não deixa trocar o outfit... A não ser quando você sai do jogo, saindo assim o outfit. flw
-
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
-
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
-
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
-
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
-
Acho que o problema pode estar no script. Poste para que verifique. flw
-
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
-
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
-
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
-
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
-
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.