-
Total de itens
273 -
Registro em
-
Última visita
-
Dias Ganhos
4
Tudo que bepokemon postou
-
local ranks = { ['fist'] = {0, itemid}, ['club'] = {1, itemid}, ['sword'] = {2, itemid}, ['axe'] = {3, itemid}, ['distance'] = {4, itemid}, ['shield'] = {5, itemid}, ['fish'] = {6, itemid}, ['magic'] = {7, itemid}, ['level'] = {8, itemid}, } function onSay(cid, words, param) local msg = string.lower(param) if ranks[msg] ~= nil then str = getHighscoreString((ranks[msg][1])) else str = getHighscoreString((8)) end doShowTextDialog(cid,(ranks[msg][2]), str) return TRUE end Altere itemid para os IDs dos items que deseja que apareçam.
-
Ele serve para >= 400 (qualquer level maior ou igual a 400): if getPlayerLevel(cid) >= 400 then Só pode usar UMA vez (pois ele checa o storage value): if getPlayerStorageValue(cid, 12351) < 1 then
-
Para uma pessoa é: doPlayerSendTextMessage(cid, 18, 'mensagem') Para broadcasts (todos online) é: doBroadcastMessage('mensagem', 18)
-
Onde Encontrar Um Dat Editor 8.70, Valendo Rep +
tópico respondeu ao sabrina9292 de bepokemon em Lixeira Pública
Edit: Desculpe-me por este post, acho que eu troquei os tópicos sem querer .. Meu XTibia está travando direto. -
Vá em data/actions/scripts/liquids/containers.lua e procure por esta linha: function onUse(cid, item, fromPosition, itemEx, toPosition) Adicione, então, isto logo abaixo: if(itemEx.itemid == getItemIdByName('arrow') and item.type == TYPE_SLIME) then doTransformThing(itemEx.uid, getItemIdByName('earth arrow')) return true end Boa sorte o/
-
Erro Ao Separar Funções Em Diferentes Scripts
tópico respondeu ao luishg de bepokemon em Lixeira Pública
Você pode tentar criar uma LIB para as mesmas em data/lib/xxx-standspells.lua com o seguinte conteúdo: function startSpell(cid) doSendMagicEffect(getCreaturePosition(cid), 2) doCreatureChangeOutfit(cid, {lookType = 28}) end function stopSpell(cid) setPlayerStorageValue(cid, 11000, 0) doRemoveCondition(cid, CONDITION_OUTFIT) doCreatureChangeOutfit(cid, {lookType = 29}) end function drainSpell(cid) if isPlayer(cid) then if getPlayerStorageValue(cid, 11000) == 1 and getPlayerMana(cid) > 0 then doPlayerAddMana(cid, -1) addEvent(drainSpell, 3000, cid) elseif getPlayerMana(cid) == 0 then doSendMagicEffect(getCreaturePosition(cid), 2) stopSpell(cid) doPlayerSendCancel(cid, "Spell has been interrupted. You're out of mana.") end end end E colocar na primeira linha (de preferência) do arquivo que quiser usar tais funções isto: dofile("./data/lib/xxx-standspells.lua")- 4 respostas
-
- script error attempt to call
- spell
- (e 4 mais)
-
Pode ser erro em alguma creaturescript onCombat, onAttack ou onStatsChange. Veja se nenhum erro aparece no console.
-
Como Fazer Uma Nova Vocação Aparecer No Account Manager?
tópico respondeu ao pvjf de bepokemon em Lixeira Pública
Só colocar no arquivo data/xml/vocations.xml o fromvoc="X" igual à vocation id. Ex: No caso do Sorcerer (vocationid="1") você deve colocar fromvoc="1". -
[Vip] Antes Do Nome, Comando Tile Vip
tópico respondeu ao DuuhCarvalho de bepokemon em Lixeira Pública
local function setPlayerVipTag(cid) local n = getCreatureName(cid) doRemoveCreature(cid) return db.executeQuery("ALTER TABLE `players` SET `name` = '[VIP] "..n.."' WHERE `name` = '"..n.."';") end function onSay(cid, words, param) local price = 5000000 if doPlayerRemoveMoney(cid, price) == TRUE then local days = 30 local s = 29000 local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, s) local timenow = os.time() if getPlayerStorageValue(cid, s) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, s, time) local quantity = math.floor((getPlayerStorageValue(cid, s) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 5kk para colocar vip.") end return TRUE setPlayerVipTag(cid) end Substitui oque você tem nas talkactions por isso. -
[Vip] Antes Do Nome, Comando Tile Vip
tópico respondeu ao DuuhCarvalho de bepokemon em Lixeira Pública
function setPlayerVipTag(cid) local n = getCreatureName(cid) doRemoveCreature(cid) return db.executeQuery("ALTER TABLE `players` SET `name` = '[VIP] "..n.."' WHERE `name` = '"..n.."';") end Só declarar a função dentro de um script e usar. Extra: function removePlayerVipTag(cid) if not string.find(getCreatureName(cid), '[VIP]') then return false end local n = getCreatureName(cid) local nn = string.gsub(getCreatureName(cid), 4,string.length(getCreatureName(cid))) doRemoveCreature(cid) return db.executeQuery("ALTER TABLE `players` SET `name` = '"..nn.."' WHERE `name` = '"..n.."';") end Não testei nenhuma das duas. -
@Topic Faltou um 'end' no meu script ¬¬' As pessoas que testaram poderiam em vez de fazer escândalo falar qual foi o erro que tiveram ao utilizar o script!
-
Preciso De Um Script De Um Item Que Quando Clique Vire Os Itens Que Eu Quero
pergunta respondeu ao StyflerDrunou de bepokemon em Scripts
local items = { -- {itemid, count}, {2160,50}, } function onUse(cid, item, fromPos, itemEx, toPos) local i = math.random(#items) local countOrArt = items[i][2] == 1 and getItemArticleById(items[i][1]) or items[i][2] doPlayerSendTextMessage(cid, 'You\'ve been awarded with '..countOrArt..' '..getItemNameById(items[i][1])..'.') return doPlayerAddItem(cid, items[i][1], items[i][2]) end Acho que o próprio script se explica ._.' Anyways .. Coloca o script dentro de data/actions/scripts/ com um nome. (Ex: teste.lua) e adicione esta Tag dentro de data/actions/actions.xml: <action itemid="itemid" event="script" value="teste.lua"/> Lembrando que itemid é o ID do(s) item(s) que você quer que sirvam como "caixas de presente" e que teste.lua é só um exemplo. OBS: Você pode adicionar multiplos items para este mesmo scripts separando-os com ;. (Ex: itemid="itemid;itemid2") -
Mudar De Sqlite Para Mysql Sem Formatar
tópico respondeu ao Menoxcide de bepokemon em Lixeira Pública
Não sei se funciona: - Mantenha o OT aberto com a database SQLite. - Vá no config.lua e troque a database para MySql. - Dê /reload config (pelo console ou in-game). - De save e vê se dá em algo. Senão nem sei =/ Só se exportar a database SQLITE e arranjar algo que traduza para MySql. -
Assim que ele atingir level 400 automaticamente 2 dias VIPs (segundo o sistema que você usa) serão adicionados ao char dele. A instalação está bem clara no tópico, só sinto aos que não puderam instalar o script, sigam um tutorial qualquer aí porque não adianta pedir um sistema se você não souber instalá-lo. Ok, antes de você copiar algo de alguém sem ter a mínima idéia do que isso faz aprende o mínimo de scripting, tá? Isso só vai dar uma Item X ao player que pegar level 400, ele pediu dias X vips ao player que atingir o level 400. =)
-
Vá para data/actions/scripts/other/doors e procure por esta linha: if(isInArray(keys, item.itemid) == TRUE) then Substitua por completo isto: if(isInArray(keys, item.itemid) == TRUE) then if(itemEx.actionid > 0) then if(item.actionid == itemEx.actionid and doors[itemEx.itemid] ~= nil) then doTransformItem(itemEx.uid, doors[itemEx.itemid]) return TRUE end doPlayerSendCancel(cid, "The key does not match.") return TRUE end return FALSE end Por isto: if(isInArray(keys, item.itemid) == TRUE) then if(itemEx.actionid > 0) then if((item.actionid == itemEx.actionid or item.actionid == 9999) and doors[itemEx.itemid] ~= nil) then doTransformItem(itemEx.uid, doors[itemEx.itemid]) return TRUE end doPlayerSendCancel(cid, "The key does not match.") return TRUE end return FALSE end Salve e fale /reload actions. Para pegar a chave mestra pegue uma chave qualquer e fale /attr aid 9999 olhando para ela. (Ela jogada no chão na sua frente). Sem querer ser grosso, se você não conseguiu desista e arranje outro cérebro. =)
- 5 respostas
-
- dou rep+++
- script
-
(e 1 mais)
Tags:
-
Algumas coisas que podem te ajudar: getPlayerSlotItem(cid, slot) CONST_SLOT_RING getPlayerSlotItem(cid, CONST_SLOT_RING).itemid Boa sorte.
-
Eu achei um tópico seu falando sobre os "presentes" do global wars, como eu não tenho a função "onAdvance" na cabeça fui procurar .. =P
-
function onCastSpell(cid, var) for x=1,3 do if not isWalkable(getPlayerLookPos(cid)) then break end doSendMagicEffect(getThingPos(cid), 2) doMoveCreature(cid,getPlayerLookDir(cid)) end return TRUE end
-
crie um arquivo chamado freeVIP.lua dentro de data/creaturescripts/scripts: function onAdvance(cid, oldLevel, newLevel) if getPlayerStorageValue(cid, 12423) < 1 and getPlayerLevel(cid) >= 400 then setPlayerStorageValue(cid, 13540, 2 * 24 * 60 * 60) setPlayerStorageValue(cid, 12423, 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have been awarded with 2 days of free VIP.") end return TRUE end depois na creaturescript.xml coloque a tag. <event type="advance" name="freeVIP" event="script" value="freeVIP.lua"/> logo em seguida registra o evento no login.lua registerCreatureEvent(cid, "freeVIP") Créditos: SkyDangerous por me poupar tempo ¬¬'
-
Troca pra for i=#promos,1 do pra ir de traz pra frente e começar da primeira em diante.
-
Caralho, que falta de paciencia em ajudar em galera. Algo simples assim ... Nos dois scripts existem as funções globais startEvent(...) logo elas entram em conflito SIM. À duas formas de concertar isso: 1- Troque startEvent por startZombie ou startTeamWar em uma das duas, ou nas duas. 2- Transforme em duas funções locais. (local startEvent(...)) * Não sei se funciona mas teoria acho que sim. Boa sorte. LEIA APENAS APÓS TENTAR RESOLVER SOZINHO:
-
Ok, a parte do "pessoas passarem por cima de noobs" é na parte de Programação aqui. Já a parte de ser teleportado você pode usar um comando simples: function onSay(cid, words, param) local maxLevelToTeleport = getConfigValue('protectionLevel') or 20 if getPlayerLevel(cid) < maxLevelToTeleport and not exhaustion.get(cid, "tp") then exhaustion.set(cid, "tp", 120) return doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)) else doSendMagicEffect(getThingPos(cid), 2) doPlayerSendCancel(cid, "Sorry, not possible.") end return true end
- 2 respostas
-
- ajuda plix
- otserv
-
(e 2 mais)
Tags:
-
Passando Um Otserv Para 8.60
tópico respondeu ao comedinhasss de bepokemon em Tutoriais de Programação
Eu sei que estou revivendo um topico bem velho, mas isso nao esta errado? Pode dar problemas a muitas pessoas .. -
Isto NAO eh um tutorial. Voce deveria ensinar oque cada coisa faz para as pessoas que querem começar a aprender a fazer scripts, e nao simplesmente adiciona-los ao OT. Alem de que seu code tem muitas coisas desnescessarias. == -1: -1 eh o padrao de todos os storages, pois sigifica um valor 'boolean', falso. Ou seja, inexistente. storage: Este sera o numero a qual sera guardado o valor recebido na quest, no caso: -1 (padrao) para nunca fez, e valor para feita. valor: Este eh o valor que reconhecido pelo script dira se o player recebera ou nao o item. No caso, qualquer numero diferente de -1 (que eh o padrao de todos os storages) tipo da mensagem: O tipo da mensagem recebida pelo player (branca, laranja, azul, verde). Alguns exemplos: 22 = MESSAGE_INFO_DESCR = Verde na tela. 18 = MESSAGE_CONSOLE_RED = Vermelha no chat 27 = MESSAGE_STATUS_CONSOLE_BLUE = Azul no chat Mensagem ao receber!: Esta eh a mensagem que aparecera para o player ao abrir a caixa pela primeira vez. O padrao do tibia eh 'You found 10 crystal coins.' (no caso desta quest). Mensagem ao tentar abrir uma segunda vez.: Esta aparecera caso o player ja tenha feito a quest, o padrao do tibia eh 'It is empty.'. itemId: Este eh o ID que sera adicionado ao player, voce pode utilizar esta funçao para colocar o nome: getItemIdByName('nome do item'). itemCount: Este eh o numero de items que o player recebera, no caso desta quest 10, para 10 crystal coins. else: Isto dira ao comando oque acontecera caso a primeira opçao nao seja verdadeira (storage == 1), neste caso, se o player ja tiver aberto a caixa alguma outra vez. OBS: Os end acompanham: if, function, e for .. Todos estes devem ser fechados por ends. O return true significa que a açao sera feita, de abrir a caixa. Por exemplo em outro script, ao usar uma comida, se o player estiver 'full' voce colocara return FALSE, que fara com que ele NAO utilize a comida. Se voce quiser pode usar as informaçoes do meu Post no seu topico.
-
Acho que nao esqueci de nada, nao testei: local config = { removeItems = true, -- se vai remover items ou nao [true/false] itemTab = {{2160,3}}, -- lista de items a serem removidos {itemid, quantidade} needLevel = 200, -- se precisa de level [false/numero] needStorage = true, -- se precisa de algum storage value [true/false] storageTab = {{7777,1}}, -- lista de storages nescessarios {storage, value} onlyOnce = false, -- se soh vai poder entrar uma vez [true/false] storageQuest = 12345 } function onUse(cid, item, frompos, item2, topos) local haveItems, haveStorages = false, false if config.removeItems then for i,v in ipairs(config.itemTab) do if getPlayerItemCount(cid, v[1]) >= v[2] then if i == #config.itemTab then haveItems = true end else itemsText = v[2]..' '..v[1] end end end if config.needStorage then for i,v in ipairs(config.storageTab) do if getPlayerStorageValue(cid, v[1]) == v[2] then if i == #config.storageTab then haveStorages = true end end end end if config.needLevel ~= false then if getPlayerLevel(cid) < config.needLevel then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You need at least level '..config.needLevel..' to get inside.') return false end elseif getPlayerStorageValue(cid, config.storageQuest) == 1 and config.onlyOnce then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You may not enter this quest again.') return false elseif not haveItems then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You need at least '..itemsText..'(s) to get inside.') return false elseif not haveStorages then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'This door seem to be sealed against unwanted intruders.') return false else if getPlayerStorageValue(cid, config.storageQuest) == -1 then for _,v in ipairs(config.itemTab) do doPlayerRemoveItem(cid, v[1], v[2]) end setPlayerStorageValue(cid, config.storageQuest, 2) if config.onlyOnce then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Once you finish the quest you can\'t get inside anymore.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You\'re now allowed to pass this door wheneven you want.') end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Welcome back.') end return true end return true end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.