-
Total de itens
3402 -
Registro em
-
Última visita
-
Dias Ganhos
36
Tudo que Stigal postou
-
suporte scripts Problema Com Newtype De Mega (Base DXP)
pergunta respondeu ao Boos de Stigal em Resolvidos
Os helds não são removidos apenas em chars da equipe (ADM). Em players efetuei o teste e está normal o sistema. -
Boa noite @Hisoka Fail2, Tente utilizar isso: DELETE FROM players WHERE lastlogin < - 30*24*60*60; *Você pode modificar conforme a sua necessidade: 20 * 24 * 60 * 60 = 20 dias offline. 30 * 24 * 60 * 60 = 30 dias offline.
-
@kamus9629, Esta área e apenas para "Suporte". Para criação de "Scripts" / "Sistemas" utilize o setor de [Pedidos].
-
suporte scripts Problema Com Newtype De Mega (Base DXP)
pergunta respondeu ao Boos de Stigal em Resolvidos
@Boos, Boa noite. Vá até "Pasta do servidor\data\lib" e procure pelo arquivo "107-main tables.lua", lá você poderá modificar tudo do mega. -
[Encerrado] Indicar no nick se o player é premmy [8.60]
tópico respondeu ao Lolksky de Stigal em Tópicos Sem Resposta
# 1° Sistema - Check VIP + Nome VIP : O sistema verifica se o player for Premium e não tiver a Storage ele muda o nome. Créditos: Vodkart. Crie um arquivo com a extensão .lua chamado "checkvip.lua" em "data/creaturescripts/scripts" e adicione o código abaixo: --[[ by vodkart ]]--function onLogin(cid)local pos = {x = 160, y = 54, z = 7} -- Posição do templo.local storage = 99983local tempo = 5if getPlayerStorageValue(cid, storage) <= 0 and getPlayerPremiumDays(cid) >= 1 thendoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Agora você é premium account, você será kickado em 5 segundos parar alterar seu nome!")doSendMagicEffect(getPlayerPosition(cid), 36)db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")setPlayerStorageValue(cid, storage, 1)addEvent(doRemoveCreature, tempo*1000, cid, true)endfunction Vodka(cid)if isPlayer(cid) thendb.executeQuery("UPDATE `players` SET `name` = '"..string.sub(getCreatureName(cid), 7).."' WHERE `id` = "..getPlayerGUID(cid)..";")doRemoveCreature(cid)endendif getPlayerStorageValue(cid, storage) == 1 and getPlayerPremiumDays(cid) < 1 thendoTeleportThing(cid, pos)doPlayerSendTextMessage(cid, 25, "Sua premium account acabou, você será kickado em "..tempo.." segundos para alterar o nome.")setPlayerStorageValue(cid, storage, -1)if string.find(tostring(getCreatureName(cid)),"[[VIP]]") thenaddEvent(Vodka, tempo*1000, cid)endendreturn TRUEend Ainda em creaturescripts, abra o arquivo "creaturescripts.xml" e adicione a seguinte TAG: <event type="login" name="CheckVip" script="checkvip.lua"/> # 2° Sistema - Premium Scroll : (*Somente utilizar se necessário) O sistema irá adicionar 30 dias Premium para quem utilizar. Créditos: Wakon. Crie um arquivo com a extensão .lua chamado "premscroll.lua" em "data/actions/scripts" e adicione o código abaixo : function onUse(cid, item, frompos, item2, topos)local t = {dias = 30, -- Dias para adicionar.storage = 99983, -- Só mexa se essa estiver em uso!tempo = 5, -- Tempo para kickar o personagem após usar o item.pz = false, -- Só usar em protect zone [True/False].}if t.pz == true and getTilePzInfo(getPlayerPosition(cid)) == false thenreturn doPlayerSendTextMessage(cid, 25, "Você não pode usar esse item fora da protection zone.")endif getPlayerStorageValue(cid, t.storage) < 1 thensetPlayerStorageValue(cid, t.storage, 1)doPlayerAddPremiumDays(cid, t.dias)doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você ganhou "..t.dias.." dias de premium account e será kickado em "..t.tempo.." segundos para alterar o nome.")doSendMagicEffect(getPlayerPosition(cid), 36)db.executeQuery("UPDATE `players` SET `name` = '[VIP] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")doRemoveItem(item.uid)addEvent(doRemoveCreature, t.tempo*1000, cid, true)elsedoPlayerAddPremiumDays(cid, t.dias)doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você adicionou mais "..t.dias.." dias de premium account.")doSendMagicEffect(getPlayerPosition(cid), 36)doRemoveItem(item.uid)endreturn trueend Ainda em actions, abra o arquivo "actions.xml" e adicione a seguinte TAG: <action itemid="9901" event="script" value="premscroll.lua"/> -
[Encerrado] Tile que passa com x item
tópico respondeu ao MarcosLeao de Stigal em Tópicos Sem Resposta
Crie um arquivo com a extensão .lua chamado "tilespecial.lua" em "movements/scripts" e adicione o código abaixo : function onStepIn(cid, item, position, fromPosition) local id,amount = 2160,10 if not doPlayerRemoveItem(cid, id, amount) then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, 25, "Você só pode passar se tiver " .. amount .. " " .. getItemNameById(id) .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end return trueend Ainda em movements, abra o arquivo "movements.xml" e adicione a seguinte TAG: <movevent type="StepIn" actionid="1234" event="script" value="tilespecial.lua"/> *Modifique o script conforme a sua necessidade. -
@SillyBoy, tente utilizar esse script: local focus = 0 local max_distance = 10 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 300 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local pokemons = { {name = "Geodude", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Rhydon", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "normal"}, --alterado v1.3 {name = "Machamp", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Onix", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "normal"}, {name = "Golem", optionalLevel = 300, sex = SEX_MALE, nick = "", ball = "normal"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) addEvent(adjustWildPoke, 15, summon, it.optionalLevel) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name --alterado v1.3 doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local a = gymbadges[getCreatureName(this)] + 8 doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1) local b = getPlayerItemById(cid, true, a) if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)])) end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then focus = cid talk_start = os.clock() conv = 1 selfSay("Hello "..getCreatureName(cid)..", my name is Brock and I'm Pewter's Gym Leader. How may I help you?") return true end if isDuelMsg(msg) and conv == 1 and focus == cid then --if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then -- selfSay("You have already won my Boulder Badge, maybe some other day we can fight.") -- focus = 0 --return true --end if not hasPokemon(cid) then selfSay("To battle agains't a gym leader you need pokemons.") return true end selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?") conv = 2 return true end if isConfirmMsg(msg) and conv == 2 and focus == cid then challenger = focus setPlayerStorageValue(cid, 990, 1) selfSay("Yea, let's fight!") talk_start = os.clock() addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end if isNegMsg(msg) and conv == 2 and focus == cid then focus = 0 selfSay("It is better for you to refuse a battle against me!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Bye and do your best trainer!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false function onThink() if focus == 0 then selfTurn(2) fighting = false challenger = 0 challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6 selfAttackCreature(getCreatureSummons(challenger)[1]) challenger_turn = challenger_turn + 1 afk_time = 0 end else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("I have waited too long, come back when you are ready!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Where's your pokemon? Let's fight!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > #pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then selfSay("You lost our duel! Maybe some other time you'll defeat me.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Bye then.") return true end if (os.clock() - talk_start) > 30 then selfSay("Good bye and keep training!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end
-
@Sh4DoW GR, Esta área e apenas para "Suporte". Para criação de "Scripts" / "Sistemas" utilize o setor de [Pedidos].
-
NPC: Spell Seller Créditos: Vodkart Crie um arquivo com a extensão .xml chamado "SpellSeller.xml" em "data\npc" e adicione o código abaixo : <?xml version="1.0"?><npc name="Spell Seller" script="data/npc/scripts/spell_trade.lua" walkinterval="50000" floorchange="0"><health now="100" max="100"/><look type="129" head="95" body="116" legs="121" feet="115" addons="3"/><parameters><parameter key="message_greet" value="Hello |PLAYERNAME|.I have many {spells} to sell for you! {trade}" /></parameters></npc> Crie um arquivo com a extensão .lua chamado "spell_trade.lua" em "data\npc\scripts" e adicione o código abaixo : local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cidlocal shopWindow = {}local spells = {{id=1950, buy = 150, name = "Exana Pox", spell_name = "Andidote", vocations = {1,2,3,4,5,6,7,8}, level = 10},{id=1950, buy = 2500, name = "Exori", spell_name = "Berserk", vocations = {4,8}, level = 35},{id=1950, buy = 80, name = "Exiva", spell_name = "Find Person", vocations = {1,2,3,4,5,6,7,8}, level = 8},{id=2182, buy = 5000, name = "Exori Flam", spell_name = "Flame Strike", vocations = {1,2,5,6}, level = 12},{id=1950, buy = 8000, name = "Utito Tempo", spell_name = "Blood Rage", vocations = {4,8}, level = 60},{id=1950, buy = 2000, name = "Exeta Res", spell_name = "Challenge", vocations = {8}, level = 20},{id=1950, buy = 5000, name = "Exori Gran", spell_name = "Fierce Berserk", vocations = {4,8}, level = 70},{id=1950, buy = 500, name = "Utevo Gran Lux", spell_name = "Great Light", vocations = {1,2,3,4,5,6,7,8}, level = 13},{id=1950, buy = 1500, name = "Exori Mas", spell_name = "Groundshaker", vocations = {4,8}, level = 33},{id=1950, buy = 1500, name = "Exana Mort", spell_name = "Wound Cleansing", vocations = {4,8}, level = 30}}local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)if not getPlayerLearnedInstantSpell(cid, shopWindow[item].Words) thenif getPlayerLevel(cid) >= shopWindow[item].Level thenif isInArray(shopWindow[item].Vocs, getPlayerVocation(cid)) thendoPlayerRemoveMoney(cid, shopWindow[item].Price)doPlayerLearnInstantSpell(cid, shopWindow[item].Words)npcHandler:say("você aprendeu uma nova magia chamada "..shopWindow[item].Words, cid)elsenpcHandler:say("você não tem a vocação para comprar está spell.", cid)endelsenpcHandler:say("você precisa ter level "..shopWindow[item].Level.." ou mais para comprar essa magia.", cid)endelsenpcHandler:say("você já aprendeu essa magia.", cid)endreturn trueendif msgcontains(msg, 'trade') or msgcontains(msg, 'spells') thenfor var, item in pairs(spells) doshopWindow[item.id] = {Level = item.level, Vocs = item.vocations, item_id = item.id, Price = item.buy, subType = 0, Words = item.spell_name, SpellName = item.name}endopenShopWindow(cid, spells, onBuy, onSell)endreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) *Você pode modificar o script conforme a sua necessidade.
-
[Encerrado] respawn de monstro em uma area que andam até outra area quando criados
tópico respondeu ao fefuxd de Stigal em Tópicos Sem Resposta
Crie um arquivo com a extensão .lua chamado "invasion.lua" em "data\globalevents\scripts" e adicione o código abaixo : local i = {["20:14"] = {nome = "The Demon Invasion", pos = {x=32369, y=32167, z=7}, monster = {"50 Demon", "1 The Imperor"}},["14:35"] = {nome = "The Massive Dragon Invasion", pos = {x=32368, y=32188, z=8}, monster = {"200 Dragon"}},}function onThink(interval, lastExecution)hours = tostring(os.date("%X")):sub(1, 5)tb = i[hours]if tb thendoBroadcastMessage(hours .. " - " .. tb.nome .. " iníciou.")for _,x in pairs(tb.monster) dofor s = 1, tonumber(x:match("%d+")) dodoSummonCreature(x:match("%s(.+)"), tb.pos)endendendreturn trueend Ainda em globalevents, abra o arquivo "globalevents.xml" e adicione a seguinte TAG: <globalevent name="invasion" interval="60" event="script" value="invasion.lua"/> # Configurando: 1. ["20:14"] > Horário da invasão. 2. nome = "The Demon Invasion" > Nome da invasão. 3. {x=32369, y=32167, z=7} > Posição que ira iniciar. 4. {"50 Demon", "1 The Imperor"} > Monstros da invasão. # Preview / Créditos: Kamex -
[Encerrado] Itens como moedas não estão stackando sem puxar pra cima
tópico respondeu ao fefuxd de Stigal em Tópicos Sem Resposta
Titulo: Auto Stacking - TFS 0.3.6pl1 Créditos: Fresh (Otland) Versão: 8.6 / 8.7 ... Abra "container.cpp" e modifique: `Cylinder* Container::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t&) Para: Cylinder* Container::__queryDestination(int32_t& index, const Thing* thing, Item** destItem, uint32_t&){ if(index == 254 /*move up*/) { index = INDEX_WHEREEVER; *destItem = NULL; Container* parentContainer = dynamic_cast<Container*>(getParent()); if(parentContainer) return parentContainer; return this; } else if(index == 255 /*add wherever*/){ index = INDEX_WHEREEVER; *destItem = NULL; } else if(index >= (int32_t)capacity()){ /* if you have a container, maximize it to show all 20 slots then you open a bag that is inside the container you will have a bag with 8 slots and a "grey" area where the other 12 slots where from the container if you drop the item on that grey area the client calculates the slot position as if the bag has 20 slots */ index = INDEX_WHEREEVER; *destItem = NULL; } const Item* item = thing->getItem(); if(item == NULL){ return this; } if(item->isStackable()){ if(item->getParent() != this){ //try find a suitable item to stack with uint32_t n = 0; for(ItemList::iterator cit = itemlist.begin(); cit != itemlist.end(); ++cit){ if((*cit) != item && (*cit)->getID() == item->getID() && (*cit)->getItemCount() < 100){ *destItem = (*cit); index = n; return this; } ++n; } } } if(index != INDEX_WHEREEVER){ Thing* destThing = __getThing(index); if(destThing) *destItem = destThing->getItem(); Cylinder* subCylinder = dynamic_cast<Cylinder*>(*destItem); if(subCylinder){ index = INDEX_WHEREEVER; *destItem = NULL; return subCylinder; } } return this;} Abra "container.cpp" e modifique a função: `ReturnValue Container::__queryMaxCount(int32_t index, const Thing* thing, uint32_t count,` Para: ReturnValue Container::__queryMaxCount(int32_t index, const Thing* thing, uint32_t count, uint32_t& maxQueryCount, uint32_t flags) const{ const Item* item = thing->getItem(); if(!item) { maxQueryCount = 0; return RET_NOTPOSSIBLE; } if(((flags & FLAG_NOLIMIT) == FLAG_NOLIMIT)) { maxQueryCount = std::max((uint32_t)1, count); return RET_NOERROR; } int32_t freeSlots = std::max((int32_t)(capacity() - size()), (int32_t)0); if(item->isStackable()) { uint32_t n = 0; if(index != INDEX_WHEREEVER) { const Thing* destThing = __getThing(index); const Item* destItem = NULL; if(destThing) destItem = destThing->getItem(); if(destItem && destItem->getID() == item->getID()) n = 100 - destItem->getItemCount(); } maxQueryCount = freeSlots * 100 + n; if(maxQueryCount < count) return RET_CONTAINERNOTENOUGHROOM; } else { maxQueryCount = freeSlots; if(maxQueryCount == 0) return RET_CONTAINERNOTENOUGHROOM; } return RET_NOERROR;} Abra "container.cpp" e modifique a função: `ReturnValue Container::__queryRemove(const Thing* thing, uint32_t count, uint32_t flags) const` Para: ReturnValue Container::__queryRemove(const Thing* thing, uint32_t count, uint32_t flags) const{ int32_t index = __getIndexOfThing(thing); if(index == -1) return RET_NOTPOSSIBLE; const Item* item = thing->getItem(); if(item == NULL) return RET_NOTPOSSIBLE; if(count == 0 || (item->isStackable() && count > item->getItemCount())) return RET_NOTPOSSIBLE; if(item->isNotMoveable() && !hasBitSet(FLAG_IGNORENOTMOVEABLE, flags)) return RET_NOTMOVEABLE; return RET_NOERROR;} -
suporte otserv [Resolvido] [PEDIDO] Recuperar stamina em x sqm
pergunta respondeu ao Animal Pak de Stigal em Resolvidos
# Instalação - 1° Sistema : Crie um arquivo com a extensão .lua chamado "stamina_tile.lua" em "data/movements/scripts" e adicione o código abaixo : eventsId = {}local function rechargeStamina(cid) if not isPlayer(cid) then eventsId[cid] = nil return end doPlayerSetStamina(cid, getPlayerStamina(cid) + 1) eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid)endfunction onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then eventsId[cid] = addEvent(rechargeStamina, 60 * 1000, cid) end return trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) if isPlayer(cid) then stopEvent(eventsId[cid]) eventsId[cid] = nil end return trueend *Configurar conforme a sua necessidade. Ainda em movements, abra o arquivo "movements.xml" e adicione a seguinte TAG: <movevent event="StepIn" actionid="?????" script="stamina_tile.lua" /><movevent event="StepOut" actionid="?????" script="stamina_tile.lua" /> *Modifique o actionid="?????" com um da sua escolha. # Instalação - 2° Sistema: (*Somente utilizar se o 1° não funcionar) Crie um arquivo com a extensão .lua chamado "tile_stamina.lua" em "data/movements/scripts" e adicione o código abaixo : ---------- Script by: Adriano Swatt --------local maxstamina = 2520 -- quantidade máxima de Stamina (Não sei se é este valor mesmo)local qtdd = 1 -- quantidade de Stamina é adicionadalocal tempo = 5 -- em segundos para cada regeneraçãolocal tileid, action = 412, 12129 -- ID do Piso de Stamina, ActionID usada no Piso----------- FIM DAS CONFIGURAÇÕES -----------function onStepIn(cid, item, position, fromPosition)local getpos = getPlayerPosition(cid)local tilepos = getTileItemById(getpos, tileid).actionidlocal getsta = getPlayerStamina(cid) if getsta < maxstamina and isPlayer(cid) then addEvent(GetStamina, 100, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") endreturn trueendfunction onStepOut(cid, item, position, fromPosition) stopEvent(GetStamina)return trueendfunction GetStamina(cid)local getpos = getPlayerPosition(cid)local tilepos = getTileItemById(getpos, tileid).actionidlocal getsta = getPlayerStamina(cid) if tilepos == action then if getsta < maxstamina and isPlayer(cid) then doPlayerSendCancel(cid, "Sua stamina está subindo.") setPlayerStamina(cid, getsta + qtdd) addEvent(GetStamina, tempo * 1000, cid) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Sua stamina já está cheia.") end endreturn trueend *Configurar conforme a sua necessidade. Ainda em movements, abra o arquivo "movements.xml" e adicione a seguinte TAG: <movevent type="StepIn" actionid="12129" event="script" value="tile_stamina.lua"/><movevent type="StepOut" actionid="12129" event="script" value="tile_stamina.lua"/> -
pedido scripts Menssagem ao Sair de uma Cidade
tópico respondeu ao Marshmello de Stigal em Tópicos Sem Resposta
@BrendoGraphics0, Talvez esse tópico seja útil: -
@Mateus Lagasse, espero que esse script seja útil. Versão testada : 8.5+ Creditos : Comedinhas # Instalação : Crie um arquivo com a extensão .lua chamado "mensagens.lua" em "data/movements/scripts" e adicione o código abaixo : function onStepIn(cid, item, position, fromPosition) local mensagem = { action = item.actionid, [50001] = "Hospedaria do Unicornio Saltitante.", [50002] = "Dorion." } if(not isPlayer(cid)) then return true end if(item.actionid == mensagem.action) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, mensagem[item.actionid]) return true end end Ainda em movements, abra o arquivo "movements.xml" e adicione a seguinte TAG: <movevent type="StepIn" actionid="50001-50075" event="script" value="mensagens.lua"/> Como configurar : Vá em movements/scripts/mensagens.lua O script já está pré configurado, você somente deve configurar o action id e a mensagem. Em "Ex: 50001" é o action id do tile, você deve colocar os actions na sequencia numérica seguinte. (eles podem ir até 50075) Você deve colocar uma "," no final da tag de cima para não ter erro: [50001] = "Hospedaria do Unicornio Saltitante.", [50002] = "Dorion." Para: [50001] = "Hospedaria do Unicornio Saltitante.", [50002] = "Dorion.", [50002] = "NovoAID." Agora é só adicionar os "actions ids" configurados no mapa.
-
[Encerrado] [PEDIDO] Premiação por tempo online
tópico respondeu ao Pablobion de Stigal em Tópicos Sem Resposta
@Pablobion, Tem esse script feito pelo LsM que talvez te ajude. Sistema de recompensa de itens por tempo online é algo muito fácil de ser burlado pela questão dos BOT's, entre tanto, fica a critério do administrador. Nome do script : P Points system v1 Versão testada : TFS 0.4 Creditos : LsM Como funciona : O sistema funciona como uma recompensa ao player por ficar online por um certo tempo. O player, ao ficar online por um certo intervalo de tempo programado no código, receberá uma quantidade de pontos "P" a qual também se pode alterar. O objetivo foi fazer com que os players se sintam incentivados a ficar online por um maior período de tempo para que recebam tais moedas. Essa é, definitivamente, uma forma fácil de se alcançar um número maior de players online, já que a ideia foi retirada de um MMORPG online de grande sucesso. Como utilizar : Como o sistema tem como foco dar uma recompensa ao player, no caso pontos P, estes, podem ser utilizados no comercio, em npcs, ou até mesmo na entrada de locais. Sua sintaxe é muito maleável e se encaixa em quaquer requisito desejado. Instalação : Primeiramente, execute a seguinte QUERY em seu banco de dados : ALTER TABLE `accounts` ADD `p_points` INTEGER NOT NULL DEFAULT 0 Em seguida, crie um arquivo com a extensão .lua chamado "points.lua" em "data/creaturescripts/scripts" e adicione o código abaixo : --[[ P Points System. Version : v1.0 ]]-- function onLogin(cid) doCreatureSetStorage(cid, 1219, os.time()) return true end function onLogout(cid) doCreatureSetStorage(cid, 1219, 0) return true end Ainda em creaturescripts, abra o arquivo "creaturescripts.xml" e adicione a seguinte TAG: <event type="login" name="PlayerAddPointsTimer" event="script" value="points.lua"/> <event type="logout" name="PlayerResetPointsTimer" event="script" value="points.lua"/> Agora, em "data/globalevents/script" crie um arquivo com a extensão .lua também chamado "points.lua" e cole o seguinte código : --[[ P Points System. Version : v1.0 ]]-- local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } local function givePoints(cid, quant) if os.time() - getCreatureStorage(cid, 1219) >= config.p_time then doPlayerSendTextMessage(cid, 19, "Congratulations, you recieved ".. config.p_points .." p points. Now you have ".. config.p_points + getPoints(cid) .." p points in your account. Your timer was reseted.") doPlayerAddPoints(cid, quant) doCreatureSetStorage(cid, 1219, 0) doCreatureSetStorage(cid, 1219, os.time()) end return true end function onThink(interval) for i, v in pairs(getPlayersOnline()) do givePoints(v, config.p_points) end return true end E em "globalevents.xml" cole a seguinte TAG: <globalevent name="points" interval="60" event="script" value="points.lua"/> Em seguida vá em "data/talkactions/scripts", crie um arquivo com extensão .lua chamado "points.lua" e adicione o seguinte código : function onSay(cid, words, param, channel) local getP = getPoints(cid) doPlayerPopupFYI(cid, "You have ".. getP .." P points.") return true end E em "talkactions.xml" adicione a TAG : <talkaction words="!ppoints;/ppoints" event="script" value="points.lua"/> Para finalizar, vá em "data/lib/050-function.lua" e na última linha, adicione as funções abaixo : function getPoints(cid) local res = db.getResult('select `p_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("p_points") res:free() return tonumber(ret) end function doPlayerAddPoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) + quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doPlayerRemovePoints(cid, quant) return db.executeQuery("UPDATE `accounts` SET `p_points` = '".. getPoints(cid) - quant .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end Fim, o sistema está instalado. Como configurar : A parte da configuração é a mais fácil, apenas edite : local config = { p_time = 3600, -- Tempo em segundos para receber os pontos( 3600 = 1hora ) p_points = 1 -- Quantidade de pontos recebida a cada "p_time" } Quer utilizar o sistema em um npc, ou action, ou algum outro sistema e não sabe como? Simples, apenas use as seguintes funções : getPoints(cid) A função retorna a quantidade de pontos do player. doPlayerAddPoints(cid, quant) A função adiciona a quantidade(quant) de pontos ao player. doPlayerRemovePoints(cid, quant) A função remove a quantidade(quant) de pontos do player. Download do sistema -> DOWNLOAD Scan -> Scan -
@Jezao87, por falta de informações é impossível te ajudar. Complete seu tópico com as seguintes informações: Tipo de servidor: (Global / Derivado) Versão: (8.5 / 8.6 / ...) Anexo: Adicione o script em questão no tópico para que possamos analisa-lo. # Tópicos que possa te ajuda: 1. Novo Auto Loot (Global) - 2. Novo Auto Loot (Pokemon) -
-
Relaxa... no meio de tantos erros, já era hora do Gustavo acertar uma.
-
Obrigado por todos esses anos, meu Barzinho.
tópico respondeu ao Jvchequer de Stigal em Barzinho do Éks
Já fiz serviços com a fatos, ei nerd... e acho que por ultimo estava na Tony stark sincero... Mas a page acabou sendo "invadida" por erro de um administrador que não tinha código de segurança habilitado no perfil -.-'' Perdemos uma page que tinha acabado de bater os 500k.... é a vida... kkkk' -
Obrigado por todos esses anos, meu Barzinho.
tópico respondeu ao Jvchequer de Stigal em Barzinho do Éks
Caraca, é bom ver um amigo que conseguiu atingir seus objetivos em algo que gosta... Ir a Blizzcon já e algo sensacional, agora, convidado pela Blizzard... Ta muito patrão kkkk' Até tentei o youtube, mas acabei desanimando pela falta de tempo e tudo mais... Comecei a trabalhar com páginas, criador de conteúdo e tudo mais... Por momento estou na https://www.facebook.com/gamesmaisgamers/ , um tanto inativo, mas as vezes posto algo bom lá rsrs' Mas o importante e estar participando e se der tudo certo ainda volto a fazer umas coisas aqui no fórum. -
Deveria ter um memorial... "colocar um membro que entende de IPB tanto quanto uma cabra como admin.... confia que nem vai dar merda" kkkkkkk' Um belo resumo.
-
Pq a zoeira é infinita, e o universo decidiu te trollar. (ou deve ser porque o antigo adm fez merda e cagou no nick de geral)
-
Obrigado por todos esses anos, meu Barzinho.
tópico respondeu ao Jvchequer de Stigal em Barzinho do Éks
Fala grande, quanto tempo. As maiores modificações foram na equipe, passando de um incompetente para outro... (No quesito administrativo) Agora está pegando o rumo certo com o frenv, a equipe está bem maneira... Tem um pessoal das antigas retornando... só falta você voltar -
Passando aqui para deixar um oi...
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.