Histórico de Curtidas
-
otskay deu reputação a admkhbr em (Resolvido)[PEDIDO] ACTION - Porta que so passa 1 player por IPOk cara, vamos lá. Como você não me mandou seu contato pra ajudar, criei uma máquina virtual aqui pra fazer os testes. Fiz uns ajustes aqui (coisas da linguagem que eu desconhecia... como eu disse, não sou familiarizado com LUA). Dessa vez funcionou. Inclusive já testei pra você. Vou te mandar um passo-a-passo, por favor, faça exatamente o que eu disser.
Vá na sua pasta /data/actions/scripts e crie dois arquivos: ipevent1.lua e ipevent2.lua
Feito isso, abra o ipevent1.lua e cole o seguinte conteúdo nele:
function onUse(cid, item, frompos, item2, topos) if item.uid == 2929 then queststorage = 2929 queststatus = getPlayerStorageValue(cid,queststorage) if queststatus == -1 then questipdone = 0 playerip = getPlayerIp(cid) file = io.open('data/actions/scripts/ipevent2.lua', 'r') while true do local line = file:read("*l") if line == nil then break end if line == tostring(playerip) then questipdone = 1 end end file:close() if questipdone == 0 then if getPlayerLevel(cid) >= 1 then doCreatureSay(cid, "Voce ganhou 3 items.", TALKTYPE_ORANGE_1) doPlayerAddItem(cid,11217,50) doPlayerAddItem(cid,1746,1) doPlayerAddItem(cid,2160,100) setPlayerStorageValue(cid,queststorage,1) doSendMagicEffect(getPlayerPosition(cid), 30) file = io.open('data/actions/scripts/ipevent2.lua','a') file:write("" .. playerip .. "\n") file:close() else doCreatureSay(cid, "Voce precisa de level 1+ para ganhar.", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end else doCreatureSay(cid, "Por precaução, somente um jogador por PC ganha a recompensa!", TALKTYPE_ORANGE_1) end else doCreatureSay(cid, "Voce ja ganhou sua recompensa.", TALKTYPE_ORANGE_1) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end end end Por outro lado, eu quero que você deixe o ipevent2.lua em branco. Isso mesmo. Deixe ele em branco. Entenda que você DEVE OBRIGATORIAMENTE criar o arquivo ipevent2.lua, mas você não deve escrever nada nele, pois ele servirá para guardar os IPs dos players que participaram do evento.
Apos isso, vá no seu actions.xml e procure pela tag referente ao script do seu evento (isto é, a tag na qual você adicionou aquele script que lhe pedi pra postar). Nessa tag, substitua, no parâmetro value, o seu script antigo pelo ipevent1.lua que acabamos de criar. Não se preocupe, pois o evento irá funcionar da mesma maneira que antigamente. Inclusive, ele só funcionará para itens com a UniqueID 2929, assim como era no script que você me passou. A única diferença é que agora haverá uma checagem de IP antes de conceder o prêmio. Por segurança, mantenha o seu script antigo inalterado para fins de backup.
Bom, feito isso, precisamos acertar só mais um detalhe. O script que fiz pra você funciona criando uma especie de "lista negra". Isso significa que os jogadores com os IPs armazenados não poderão pegar os prêmios. É necessário que você possua uma forma de limpar essa lista negra. Porém, eu não sei exatamente qual a sua necessidade (seu evento ocorre várias vezes ao dia? Um jogador que participou dele uma vez pode participar uma segunda vez, ou, uma vez que o jogador participa, a ideia é que ele nunca mais participe de novo? Seu servidor faz o evento periodicamente, sem você estar online?). Por isso, optei por criar uma talkaction que tem como função limpar a lista negra. Por exemplo, após o término do evento você usa a talkaction a fim de que, da próxima vez que o evento abra, os players que participaram dele da primeira vez possam participar de novo (ou pelo menos os PCs, afinal, nem sempre um mesmo PC significa um mesmo jogador, eu mesmo divido o PC com minha irmã e ambos jogamos OTServ). Independentemente das respostas às perguntas, recomendo que vez ou outra você limpe a lista negra, pois quanto mais gente na lista, maior a tendência de a checagem demorar, pois são mais IPs para verificar.
Enfim, vamos à talkaction... abra sua pasta data/talkactions/scripts e crie um novo arquivo chamado ipevent3.lua e cole o seguinte conteúdo nesse arquivo:
function onSay(cid, words, param) file = io.open('data/actions/scripts/ipevent2.lua', 'w') file:write("") file:close() return true end Obviamente, você pode adaptar o script acima para suas necessidades. Isto é, caso o seu evento ocorra periodicamente de forma automática, você pode transformar a talkaction em um globalevent, ou fazer para que a lista negra seja apagada sempre ao término do evento. Mas como eu disse anteriormente, não conheço com exatidão sua necessidade, então optei por fazer isso na forma de talkaction.
Uma vez criado o arquivo ipevent3.lua, vá no seu talkactions.xml e adicione a seguinte tag:
<talkaction log="yes" words="/eventblclear" access="5" event="script" value="ipevent3.lua"/> De forma que bastará executar o comando /eventblclear para limpar a lista negra do evento.
Agora, caso seu servidor esteja ligado, basta dar um /reload action e um /reload talkaction para que as mudanças surtam efeito. Caso o servidor esteja desligado, da próxima vez que ele for ligado, já estará tudo pronto.
Uma última ressalva: da próxima vez que você pedir ajuda em um fórum e uma pessoa disposta a ajudar te mandar mensagem privada pedindo por sua colaboração, colabore. É o mínimo que você pode fazer. A pessoa está cedendo seu tempo e esforço para algo pra você, sem pedir nada em troca. O mínimo que você pode fazer é auxiliar nisso. Na boa, minha vontade de te ajudar caiu em 90% depois de ver sua falta de prestatividade. Sem ressentimento cara, só dando o toque mesmo, porque eu quase desisti de insistir no teu caso, e é possível que da próxima vez você não dê tanta sorte e a pessoa realmente desista de te ajudar.
Enfim, é isso. Qualquer problema avisa.
Abraço.
-
otskay deu reputação a lenardo88 em Teleportar player
-
otskay deu reputação a lenardo88 em Teleportar playercara então no caso que vc precisa remover o player do negocio e teleporta - lo para tal lugar depois de 15 minutos... desenvolvi um script simples que pode te ajudar ou ajudar uma parte de seus probemas pq pelo que entendi vc quer remover os players depois de 15 minutos de la do lugar ok vamos ao tutorial:
vá em movements e crie um arquivo com o nome de ptstorage.lua e dentro coloque:
aqui no caso o que está acontecendo o portal vai teleportar o player para a posição que vc escolher e vai dar ao player um storage que depois de 15 minutos vai sumir, esse storage é o seguinte ele n vai permitir o player entrar se ele sair do evento por tp ou sei la como só vai poder entrar depois q a hora passar, e depois de 15 minutos vai adicionar o evento para remover o player do lugar e transformar o storage dele no storage normal.
agora em movements.xml coloque essa tag:
agora crie um arquivo chamado arenalogin.lua dentro da pasta creaturescript e coloque esse script:
aqui no caso ele ta falando que se caso ele verificar que a storage e o tempo não estão alocados no player então ele vai ser teleportado para tal lugar
agora vá em creaturescript.xml e adicione a tag
"o script foi testado e funcionando" então se puder dar REP+ agradeço xD
-
otskay deu reputação a Frenesy em (Resolvido)como fazer essa quest dar item e teleportarfunction onUse(cid, item, frompos, item2, topos) local konoha = {x=1026, y=910, z=7} -- Posição para onde o player será teleportado. local bag = doPlayerAddItem(cid, 7343, 1) -- Configure a BAG que vc quer doAddContainerItem(bag, 2457, 1) -- Configure o Item que vai pra dentro da bag doAddContainerItem(bag, 2457, 1) -- Configure o Item que vai pra dentro da bag doTeleportThing(cid, konoha) doPlayerSendTextMessage(cid,20,"VOCÊ PEGOU SEU PREMIO E FOI TELEPORTADO PARA KONOHA.") return TRUE end
-
otskay deu reputação a AgaSsI em [Sistema] Auto Lootcreaturescripts.xml
<event type="login" name="aloot_reg" event="script" value="aloot.lua"/> <event type="kill" name="aloot_kill" event="script" value="aloot.lua"/> creaturescripts/scritps aloot.lua
function onLogin(cid) registerCreatureEvent(cid, "aloot_kill") return true end local stor = 7575 function autoloot(cid, target, pos) local function doStack(cid, itemid, new) local count = getPlayerItemCount(cid, itemid) if (count > 100) then count = count - math.floor(count / 100) * 100 end local newCount = count + new if (count ~= 0) then local find = getPlayerItemById(cid, true, itemid, count).uid if (find > 0) then doRemoveItem(find) else newCount = new end end local item = doCreateItemEx(itemid, newCount) doPlayerAddItemEx(cid, item, true) end local function scanContainer(cid, uid, list) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) if (isInArray(list, tmp.itemid)) then if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then doStack(cid, tmp.itemid, tmp.type) else local item = doCreateItemEx(tmp.itemid, tmp.type) doPlayerAddItemEx(cid, item, true) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.') doRemoveItem(tmp.uid) elseif isContainer(tmp.uid) then scanContainer(cid, tmp.uid, list) end end end local items = {} for i = getTileInfo(pos).items, 1, -1 do pos.stackpos = i table.insert(items, getThingFromPos(pos)) end if (#items == 0) then return end local corpse = -1 for _, item in ipairs(items) do local name = getItemName(item.uid):lower() if name:find(target:lower()) then corpse = item.uid break end end if (corpse ~= -1) and isContainer(corpse) then scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(',')) end end function onKill(cid, target, lastHit) if not isPlayer(target) then local infos = getPlayerStorageValue(cid, stor) if (infos == -1) then return true end local list = tostring(infos):explode(',') if (#list == 0) then return true end addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target)) end return true end talkactios.xml
<talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/> Talkaction/scrips
local stor, limit = 7575, 5 --storage, limit to add. local allow_container = false --empty! not looted with items, atleast for now. function onSay(cid, words, param) local expl = param:explode(':') local action, rst = expl[1], expl[2] if (action:lower() == 'check') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):explode(',') end local txt = 'Autoloot List:\n' if (#list > 0) then for k, id in ipairs(list) do id = id:gsub('_', '') if tonumber(id) then txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '') end end else txt = 'Empty' end doPlayerPopupFYI(cid, txt) elseif (action:lower() == 'add') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not allow_container and isItemContainer(item) then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end local attrs = getItemInfo(item) if not attrs then return doPlayerSendCancel(cid, 'not valid item.') elseif not attrs.movable or not attrs.pickupable then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end if isInArray(list, item) then return doPlayerSendCancel(cid, 'already added.') end table.insert(list, tostring(item)) local new = '' for v, id in ipairs(list) do new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.') elseif (action:lower() == 'remove') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list == 0) then return doPlayerSendCancel(cid, 'You dont have any item added.') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not isInArray(list, item) then return doPlayerSendCancel(cid, 'This item is not in the list.') end local new = '' for v, id in ipairs(list) do if (tonumber(id) ~= item) then new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.') end return true end Usando
/aloot check
Cheka a Lista dos Loots
/aloot add:itemid ou nome do item
Exemplo
/aloot add:worm
/aloot add:2170
16:42 Item >>worm<< has been added to the autoloot list.
Para remover
/aloot remove:worm
/aloot remove:2170
Exemplo Testado:
16:41 Looted 2 gold coin.
16:41 Looted 1 cheese.
CREDITOS: eduardobean
é isso pessoal gosto da + Rep
-
otskay deu reputação a ViitinG em [MOD] Sistema de Auto LootPara quem não sabe como funciona : É um sistema onde o player pode digitar um comando para adicionar ou remover um item ao auto loot,que no caso é para coletar o item automaticamente.
• Adicionando o script •
Em "data/mods/autoloot.xml" :
• Comandos •
• Configurando •
-
otskay deu reputação a Frenesy em [TFS 0.4] EXP por HITAdaptação do Script do membro: @Apocalypse.
Tópico Oficial com instruções de instalação: CLIQUE AQUI.
-- CONFIGURAÇÕES DE EXPERIENCIA -- useStages = false -- Usar sistema de Stages , true/false premiumMultipliqueExp = 2 -- Players Premiums terão exp multiplicada, caso não querer deixe 1. rateExp = 300 -- Exp caso não for usar stages. local stages = { -- ["DELEVEL-ATELEVEL"] = EXP, (OBS: NUNCA REPETIR O MSM NUMERO, SEMPRE COLOCAR UM A MAIS.) ["1-50"] = 300, ["51-100"] = 250, ["101-150"] = 200, ["151-200"] = 150, ["201-250"] = 100, ["251-300"] = 50, ["351-400"] = 25, } ultimateExp = 15 -- exp que vai usar caso o level do player não tiver mais na tabela . -- CONFIGURAÇÕES DA PARTY partyPorcent = 40 -- Quantos Porcento da exp vai para os membros da party levelBlockParty = 1000 -- Diferença Maxima de Level permitida para membro da party ganhar exp. expShareRadiusX = 30 -- Distancia maxima permitida no eixo X para membro da party ganhar exp. expShareRadiusY = 30 -- Distancia maxima permitida no eixo Y para membro da party ganhar exp. expShareRadiusZ = 1 -- Distancia maxima permitida no eixo Z para membro da party ganhar exp. -- CONFIGURAÇÕES DE RINGS -- local rings = { -- [ID DO ANEL] = EXP MULTIPLICADA POR X EXP. [3048] = 2, [3049] = 4, [3050] = 6, } -- FIM DAS CONFIGURAÇÕES -- function CalculeExp(monsterhp, exptotal, hit) hit = hit <= monsterhp and math.ceil(exptotal * hit / monsterhp) or 0 return hit < 0 and 0 or hit end function isSummon(cid) return getCreatureMaster(cid) end function onStatsChange(cid, attacker, type, combat, value) if isPlayer(attacker) and isMonster(cid) then if getCreatureStorage(cid, 50001) ~= 1 then doCreatureSetStorage(cid, 50002, getMonsterInfo(getCreatureName(cid)).experience * rateExp) doCreatureSetStorage(cid, 50001, 1) end end if type == STATSCHANGE_HEALTHLOSS then if isMonster(cid) then if isCreature(attacker) then local _cid = isSummon(attacker) and getCreatureMaster(attacker) or attacker if isPlayer(_cid) then if useStages then for strstage, experience in pairs(stages) do tabstage = string.explode(strstage, "-") if getPlayerLevel(_cid) >= tonumber(tabstage[1]) and getPlayerLevel(_cid) <= tonumber(tabstage[2]) then ultimateExp = experience end end experienceRate = ultimateExp else experienceRate = rateExp end local expgain = CalculeExp(getCreatureMaxHealth(cid), getMonsterInfo(getCreatureName(cid)).experience * experienceRate, value) if getCreatureStorage(cid, 50002) > 0 then if getCreatureStorage(cid, 50002) - expgain < 0 then expgain = getCreatureStorage(cid, 50002) end doCreatureSetStorage(cid, 50002, getCreatureStorage(cid, 50002) - expgain) local ringexp = 1 for idring, expring in pairs(rings) do if getPlayerSlotItem(_cid, 9).itemid == idring then ringexp = expring break end end local premiumMultipliqueExp = isPremium(_cid) and premiumMultipliqueExp or 1 expgain = expgain * ringexp * premiumMultipliqueExp local party = false if isInParty(_cid) then local partyMembers, expParty = getPartyMembers(getPartyLeader(_cid)), expgain / 100 * partyPorcent for indice, partyMember in pairs(partyMembers) do attackerLevel, partyLevel = getPlayerLevel(_cid), getPlayerLevel(partyMember) attackerPos, partyPos = getThingPos(_cid), getThingPos(partyMember) x = false if math.abs(attackerLevel - partyLevel) > levelBlockParty then x = true elseif math.abs(attackerPos.x - partyPos.x) > expShareRadiusX then x = true elseif math.abs(attackerPos.y - partyPos.y) > expShareRadiusY then x = true elseif attackerPos.z ~= partyPos.z then x = true elseif _cid == partyMember then x = true end if x then partyMembers[indice] = nil end end if #partyMembers ~= 0 then expParty = math.ceil(expgain / 100 * partyPorcent) expmember = math.ceil(expParty / #partyMembers) for _, member in pairs(partyMembers) do if member ~= _cid then doPlayerSendTextMessage(member, 12, "You received "..expmember.." party exp.") doPlayerAddExp(member, expmember) end end doPlayerSendTextMessage(_cid, 12, "You gain "..expgain.." exp. (" ..partyPorcent.."% send to party)") doPlayerAddExp(_cid, expgain - expParty) party = true else party = false end end if not party then doPlayerAddExp(_cid, expgain) doSendAnimatedText(getThingPos(_cid), expgain, 215) end end end end end end return true end function onCombat(cid, target) if isMonster(target) and not isSummon(target) and not isPlayer(target) then registerCreatureEvent(target, "ExpGain") end return true end
Créditos:
@Frenesy
@Apocalypse
-
otskay deu reputação a xWhiteWolf em Achievements & Reward Chestnão sei como seu sistema vai funcionar, vcs do tibia tem mania de inventar moda e fazer coisas desnecessárias no código, mas de qualquer forma aqui vai um pseudo-código pra distribuir o loot de um corpse com base numa função heurística(uid)
for (deathlist) do order by heuristic end for itens_in_corpse do order by rarity end for (deathlist) do give count (itens_in_corpse, variety_by_heuristic) if itens_in_corpse[iterator].count > variety_by_heuristic then table.insert(itens_in_corpse, {id, count - variety_by_heuristic}) end table.remove(itens_in_corpse, iterator) end Isso é uma opção bem simples, teria que pesar custo de processamento x benefício, dá pra melhorar muito esse código mas aí depende doque você quer tb né..
Se eu fosse fazer, eu pegaria os pontos atribuidos, dividiria pelo tempo pra matar e multiplicaria por (quantidade de ataques/numero de pessoas) com um limiar pra manter uma heurística decente, feito isso eu organizaria um rank definido pelo próprio xml da chance de cada item, rodaria a deathlist do monstro pra comparar quais players se encaixariam nos critérios e distribuiria o loot pro reward chest com base nisso. Claro que isso poderia ficar pesado se vc fizesse somente em lua, mas dada à quantidade de bosses que aceitam esse sistema acho que até daria pra manter assim. Enfim, nunca vi um reward chest mas pelo que vcs falaram aqui essa seria a maneira que eu pensaria. Talvez até desse pra fazer inteiramente em lua, só com manipulação no banco de dados pra manter o reward chest como um depot.
Meu trabalho tá mais que feito, entro aqui por hobby e olhe lá.. o problema é que quando vocês fazem coisas sozinhas já logo pensam em vender ao invés de distribuir só porque "ai ngm ajudou". Quantas vezes eu pedi ajuda pra vocês da equipe, vcs só ignoraram e mesmo assim eu postei? As vezes até com creditos de vocês. Seilá, acho que os argumentos de vocês tão precisando de uma base.. quem sabe se vc estudasse ao invés de ficar aqui se apresentando como se fosse inteligente.
Não precisa de psicologia nenhuma, só precisa ter caráter.
cara, eu nem mexo com tibia.. eu só to falando pra eles postarem o negócio pra ajudar quem mexe. Eu não preciso de ajuda até porque não é do meu interesse esse sistema. Meu skype ta no meu perfil, quem quiser ter uma conversa mais profunda sobre isso é só vir me chamar lá, vamos parar de floodar o tópico porque não sei se o coordenador sabe mas é contra as regras isso. -
otskay deu reputação a xWhiteWolf em Achievements & Reward Chestcara, só pelas coisas que você falou só comprova a minha teoria.. vcs desenvolveram o bang e querem lucrar com isso. Ninguém vai julgar mas ao menos assume logo e para de dar falsa esperança pros caras daqui. Só imagina que louco se os cara que criaram a internet não liberassem porque não quisessem que os ex-coleguinhas de escola dele usassem.
-
otskay deu reputação a xWhiteWolf em Achievements & Reward Chestup pra lembrar da vergonha, 7X1 FOI POUCO
-
otskay deu reputação a xWhiteWolf em Achievements & Reward Chestmassa ein, já pode enviar o tópico pra lixeira e parar de passar vergonha.. já que seus comentários não contribuiram de nada pra solução, eles não deveriam ser considerados flood? Vou reportar pra moderação tomar as atitudes cabíveis. Sobre o tópico: desiste dessa idéia cara, pelo visto não vai ter ngm disposto a te ajudar aqui
-
otskay deu reputação a Bruno Carvalho em [MoveMent] Mensagem quando o player passa pelo pisoVersão: 1.1
Versão suportada: 9.4+ (funciona em anteriores)
Descrição: Você já jogou aqueles jogos rpg onde você chega na área e aparece a mensagem falando onde você está? Sempre quis ter isso em seu servidor? Agora pode se tornar realidade.
TAG:
<movevent type="StepIn" actionid="50001-50075" event="script" value="mensagens.lua"/>
[/code] [i][b]Script:[/b][/i] [code]
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
Config: Vá em moveevents/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 numerica seguinte. (eles podem ir até 50075) Você deve colocar uma "," no final da tag de cima para não ter erro. [Ex]:
[50001] = "Hospedaria do Unicornio Saltitante.",
[50002] = "Dorion."
[/code] [i]Para:[/i] [code]
[50001] = "Hospedaria do Unicornio Saltitante.",
[50002] = "Dorion.",
[50002] = "NovoAID."
Atenção:
Os mesmos actions ids configurados devem ser colocados no mapa, e por serem action id você pode adicionar mais de uma vez. Como numa área total ou até na subida de uma montanha com várias escadas.
Créditos:
Alissow (Idéia)
Comedinha
-
otskay deu reputação a ViitinG em (Resolvido)Pedido script bônus ao matar outro jogador!"data/creaturescripts/privi.lua" :
local exp = 5000000 ---Quanto de experiencia sera perdido local item,quant = 2152,0 -----Item e a quantidade function onKill(cid, target, damage, flags) if isPlayer(target) then if getPlayerIp(cid) == getPlayerIp(target) then doPlayerAddExp(cid, -exp) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Foi dectado o uso de mc você sera perderá "..exp.." de exp") return true end doPlayerAddItem(cid, item, quant) return true end return true end "data/creaturescripts/creaturescripts.xml" :
<event type="kill" name="privi" event="script" value="privi.lua"/> "data/creaturescripts/login.lua" :
registerCreatureEvent(cid, "privi") -
otskay deu reputação a Yugami em Como Remover Sprites do Meu clientaté onde eu sei quando tentei remove as spriters pelo ObjectBuilder houve uma falha como em qualquer outro programa,pelo que entendi o dono do topico quer remover umas Spriters do meio porexemplo spriters de 1 a 65355 ele quer remover a Spriter 1000 a 1500,e quando remove fica um espaço em branco correto?,isso significa que não pode remover uma spriter até pq se vc remover a spriter que fica ao meio de 1 a 65355 ela iria diminui 1 casa e bugando todos os Items,Effects,Distance,e Outfits,ou seja para remover pelo ObjectBuilder ou o DatEditor precisaria remover do 65355 até a Spriter desejada,mas isso tambem bugaria o Client :'C,simplificando é Impossivel remover uma Spriter do meio entre a spriter 1 até as spriter 65355.
OBS: só colokei a rep doq eu consigui entende
-
otskay deu reputação a eliaszinho em EXCLUSIVO BASE PARECIDA (OtpokemonXY)Muito obrigado arrumei muito ele principalmente os erros agora é só aceitar o tópico
-
otskay deu reputação a eliaszinho em EXCLUSIVO BASE PARECIDA (OtpokemonXY)resolvi postar aqui um servidor editado igual a o OtPokemon
° Sistemas Moves System: 100% Caught System: 100% Go-Back System:100% Portrait System: 100% Heal.lua 100% Ginasios 90%
• ArySoon Araujo Arrumou Os Attakes Dos Pokemons pareçidos com o OtPokémon • Adicionado Boost System • Adicionado Shiny Stone System • Adicionado Vip Por escritura System • Adicionado Quest Burned • Adicionado Quest Pesadelos • Adicionado Quest Mysterios • Adicionado Balada System em Cerulean
Video do Youtube
Downloads do servidor
Download Server+Cliente+Jhoto
http://www.mediafire.com/file/7i8hs31me5ttzmr/Base+XY.rar
Mapa Jhoto: http://www.mediafire.com/file/9tbgtjefyz7a1tz/world.rar
Youtube
================================================
SCAN: https://www.virustotal.com/pt/file/27f637c10ff7dca4b69b8d7846882c65989705d0f64ceb072a3643731d86a4ab/analysis/1478032783/
Se Mostrar virus e por causa das DLL
-
otskay deu reputação a vankk em Alavanca Que Sumona Monstrolocal config = { pos = {x=608, y=602, z=10}, monster = "Demon" reset = 900 -- Seconds (15 minutos = 900 seconds) } local function reset(pos) local thing = getTileItemById(pos, 1946).uid return thing > 0 and doTransformItem(thing, 1945) end function onUse(cid, item, fromPosition, itemEx, toPosition) if(item.itemid == 1945) then doSummonCreature(config.monster, config.pos) addEvent(reset, config.reset * 1000, fromPosition) return TRUE end return FALSE end
-
otskay deu reputação a marcos ADM em erro na funçao getDirectionToWalk ou algo do tipoBoa Noite em primeiro
Estou com um problema no order.lua do meu Poketibia é uma função se eu não me engano.
O pokemon não anda para onde eu mando ao clicar em ordem e tbm não voa.
Toda vez que dou ordem para voar ou mandar ele andar ate um determinado local da o erro na foto.
Algo ligado a getDirectionToWalk
Alguem poderia me ajudar ?
Segue order.lua que fica na lib
@Wakon vooc sabe oq pode ser ?
AJUDA !!!
DOOU REP ++++++++
POR FAVOR
-
otskay deu reputação a marcos ADM em Só para explica como configura esse scriptSE ALGUEM PELO AMOR DE DEUS PODER ME AJUDAR COMO FUNCIONA ESTE SCRIPT EU AGRADEÇO PRECISO SABER COMO FUNCIONA PARA CONFIGURADO !!!
-
otskay deu reputação a 99665577 em Pokemon Dash AdvancedTOMA NO SEUS CU NUNCA POSTAM ND SEUS FDP
-
otskay deu reputação a jenison06 em (Resolvido)[Talkaction]Sistema De Compra de pokemon por diamanteakie esta funfo 100%
http://www.tibiaking.com/forum/topic/8346-talkaction-scripts-para-poketibia/
Rep ++
-
otskay deu reputação a ViitinG em [RME]Problema no editar server poketibia! HELPP!:cColoque o items.otb do seu servidor na pasta do RME.
-
otskay deu reputação a danieuu em [Resolvido] [duvida] poketibiaServer/Sources:
Poketibia Dash Advanced
Server: http://www.4shared.c...by_Ricardo.html
Sources v0.2: http://www.4shared.c..._by_Ricard.html
Sources v0.3: http://www.4shared.c...ources_v03.html
Dev-cpp: http://www.4shared.c...bY/dev-cpp.html
Cliente: http://www.4shared.c..._by_Ricard.html
Agradecimento: RicardoSohn
Sources é o Aplicativo(.exe) do server - aquele que usa para deixar ele online- também conhecido como Distro.
Você usa o Dev(programa) que abre a Source que é um conjunto de arquivos em c++, onde ele compila os arquivos no Distro que você usa para ligar seu server.
Na source fica tudo os 'comandos' que o server precisa para ler os arquivos(scripts) que tem.
Espero ter ajudado
Se ajudei da Rep+ (a flexinha verde é so clicar)
-
otskay deu reputação a Sammy em Distro TFS 0.3.6 (ANTI-DV) (Atualizada 07/06/2013)Olá caro amigos do TibiaKing. Venho aqui apresentar pra vocês no momento a melhor REV 0.3.6 100% works.
Quando eu digo 100% works, são todos os bugs e erros fixados, apresentamos os seguinte conteúdo nessa REV:
- Fix/Patch Hotkey que pode haver lag/freeze no servidor.
- Limite de peso de items no Mailbox 5000oz.
- Anti-Push Enable 1sec.
- PushTime Enable 1sec
- Anti-Divulgação 100% (Não pode enviar links nem com espaço (ex: www .site. com)).
- Anti-Clone items NPC (Hotkey Elfbot Patched/Fixed)
- Proteção para jogador não levar debug.
- Anti-Lag (correções na REV 0.3.6 , 0% de erros ao compilar)
- Fix/Patched server closed connection MySQL.
- Level e Vocação apareçem na tela de Login.
- Auto Attack + Runa + Spells ao mesmo tempo. (Não tem exhaust É UM BUG DA REV 3884 CORRIGIDO POR MIM)
- All hits works 100% players/monsters
Protocolo: 8.60
Tipo de Distro: CONSOLE
E outras coisas que não me lembro por colocar, mais enfim, é a REV 0.3.6 mais segura que eu fiz no momento...
Essa versão é FREE, vou fazer mais atualizações, porém não vou postar, então usem e abusem dessa ultima atualização!
Crio qualquer tipo de Distro com Dual Weapons, ou qualquer outro comando a escolha ( skype: igorp999 )
Download: http://www.sendspace.com/file/natjgw
Download Link 2#: http://www.multiupload.nl/BO902OJG51
Scan: https://www.virustotal.com/pt/file/283dcdd975e21d6e5134f39b8de6c09d537b500005940ad6a4e41b30ccdb0b91/analysis/1370587166/
@TESTEM E COMENTEM & REP ++. Thank you.
Abraços, boa utilidade a todos.
-
otskay deu reputação a Marcio Santos em [Pedido] ObjectBuilder versão 10.82Olá galera da tk, estou precisando muito do ObjectBuilder na versão 10.82 alguém ai tem e pode me passa ele ? agradeço desde já