-
Total de itens
3181 -
Registro em
-
Última visita
-
Dias Ganhos
26
Histórico de Curtidas
-
-
Wakon recebeu reputação de kiinho em Erro Player Not Found
@kiinho, adicione um check na função potion para retornar caso não encontre o player:
if (not isPlayer(cid)) then return false end
-
Wakon recebeu reputação de Zazeros em Erro em Combat Spells
@Zazeros, não entendo essa formula o suficiente pra conseguir explicar pra você como funciona certinho, você pode utilizar essa outra formula que é utilizada nas novas versões, ela é bem mais fácil de entender:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) function onGetFormulaValues(cid, level, maglevel) local min = (level / 5) + (maglevel * 0.3) + 3 local max = (level / 5) + (maglevel * 0.8) + 6 return -min, -max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local area = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat, area) function onCastSpell(cid, var) if exhaustion.get(cid, 61260) then doPlayerSendCancel(cid, "Cooldown[" .. exhaustion.get(cid, 61260) .."]") return false end for i = 0, 2000, 500 do addEvent(function(cid) if not isPlayer(cid) then return end return doCombat(cid, combat, var) end, i, cid) end exhaustion.set(cid, 61260, 0) return false end
-
Wakon recebeu reputação de yamislayer em Retirando Bug Do Rme 8.60
@Dornellas, não lembro se baixei esse cliente no site do RME mas ele funciona perfeitamente aqui, testa ai:
https://www.mediafire.com/?lvz8c12b8e0y09k
-
-
Wakon recebeu reputação de mallagoli em Ajuda no tempo
@mallagoli, o tempo é em milissegundos:
1 segundo = 1000 <!------------------------------------------> 1 minuto = 60000 (60 * 1000) <!------------------------------------------> 1 hora = 3600000 (60 * 60000) <!------------------------------------------> 3 horas = 10800000 (3 * 3600000)
-
Wakon deu reputação a zipter98 em [PEDIDO] Bike System - Efeito ao andar
Acredito que a forma mais limpa e eficiente de se escrever este pequeno sistema seria em C++, ao invés de usarmos em Lua uma função recursiva.
Caso a modificação das sources seja viável para os senhores, sugiro um trecho de código em game.cpp, no escopo de:
ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) Não confunda com o escopo da outra função de mesmo nome (C++ apresenta sobrecarga de funções).
O trecho de código responsável pelo efeito ficará acima desta linha:
return ret;
Como não temos uma estrutura tão versátil quanto as arrays de Lua em C++ para configurar os valores, trabalharemos com eles diretamente na estrutura condicional:
if(Player* player = creature->getPlayer()) { uint32_t effect = 255; uint16_t playerLookType = (player->getCurrentOutfit()).lookType; if(playerLookType == BIKE_LOOK_TYPE_1) effect = EFFECT_BIKE_LOOK_TYPE_1; else if(playerLookType == BIKE_LOOK_TYPE_2) effect = EFFECT_BIKE_LOOK_TYPE_2; else if(playerLookType == BIKE_LOOK_TYPE_3) effect = EFFECT_BIKE_LOOK_TYPE_3; if(effect != 255) addMagicEffect(currentPos, effect); } Substitua BIKE_LOOK_TYPE_X pelo look type da bike em questão e EFFECT_BIKE_LOOK_TYPE_X pelo respectivo efeito. Para adicionar mais opções, basta continuar com os else if.
Não tive a oportunidade de testar o código, mas acredito que funcionará como deve. Não esqueça de compilar o projeto e substituir o executável (por questão de DLLs).
Naturalmente, caso prefira uma solução em Lua o código do Vodkart é mais que o suficiente.
-
Wakon recebeu reputação de poko360 em (Resolvido)nao dar trade se tiver tal storage
Fiz na correria aq pra vc, se faltar algo, me avisa:
creaturescripts/scripts/blocktrade.lua:
local t = { storage = 6000, blockRequest = true, -- vai bloquear apenas o jogador com a storage de mandar trade pra outro jogador blockReceive = true -- esse vai bloquear de outro jogador dar trade caso o player tenha a storage } function onTradeRequest(cid, target, item) if (t.blockRequest and getPlayerStorageValue(cid, t.storage) > 0) then return doPlayerSendCancel(cid, "Trade blocked.") and doSendMagicEffect(cid, CONST_ME_POFF) and false elseif (t.blockReceive and getPlayerStorageValue(target, t.storage) > 0) then return doPlayerSendCancel(cid, "This player has trade blocked.") and doSendMagicEffect(cid, CONST_ME_POFF) and false end return true end creaturescripts.xml:
<event type="traderequest" name="BlockTrade" event="script" value="blocktrade.lua"/> login.lua:
registerCreatureEvent(cid, "BlockTrade")
@poko360
-
Wakon recebeu reputação de Vodkart em (Resolvido)nao dar trade se tiver tal storage
Fiz na correria aq pra vc, se faltar algo, me avisa:
creaturescripts/scripts/blocktrade.lua:
local t = { storage = 6000, blockRequest = true, -- vai bloquear apenas o jogador com a storage de mandar trade pra outro jogador blockReceive = true -- esse vai bloquear de outro jogador dar trade caso o player tenha a storage } function onTradeRequest(cid, target, item) if (t.blockRequest and getPlayerStorageValue(cid, t.storage) > 0) then return doPlayerSendCancel(cid, "Trade blocked.") and doSendMagicEffect(cid, CONST_ME_POFF) and false elseif (t.blockReceive and getPlayerStorageValue(target, t.storage) > 0) then return doPlayerSendCancel(cid, "This player has trade blocked.") and doSendMagicEffect(cid, CONST_ME_POFF) and false end return true end creaturescripts.xml:
<event type="traderequest" name="BlockTrade" event="script" value="blocktrade.lua"/> login.lua:
registerCreatureEvent(cid, "BlockTrade")
@poko360
-
Wakon recebeu reputação de Apache em (Resolvido)Como Criar Evento Por Comando
Em "Data/talkactions/scripts", copie dois arquivos.lua e renomei-os para enterevent.lua e openevent.lua, apague tudo neles e cole:
No arquivo enterevent.lua:
local t = { gStorage = 25252, -- Só mexa se necessário. msgoff = "O evento de backpack não está aberto no momento.", -- Mensagem caso não esteja aberto. effect = CONST_ME_TELEPORT, -- Efeito ao teleportar. pos = {x = 160, y = 54, z = 7} -- Posição que o comando irá levar. } function onSay(cid, words, param) if getGlobalStorageValue(t.gStorage) >= 1 then if getCreatureCondition(cid, CONDITION_INFIGHT) == false then if getTilePzInfo(getPlayerPosition(cid)) == true then doTeleportThing(cid, t.pos) doSendMagicEffect(getPlayerPosition(cid), t.effect) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vá até uma zona de proteção para usar o comando.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode usar o comando em batalha.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, t.msgoff) end return true end No arquivo openevent.lua:
local t = { gStorage = 25252, msgoff = "O evento de backpack terminou.", msg = "O evento backpack foi aberto, para entrar digite !evento em uma zona de proteção!" } function onSay(cid, words, param) if param == nil then return doPlayerSendCancel(cid, "Commands param required.") end if param == "open" then if getGlobalStorageValue(t.gStorage) <= 0 then setGlobalStorageValue(t.gStorage, 1) doBroadcastMessage(t.msg) else doPlayerSendCancel(cid, "O evento já está aberto.") end elseif param == "close" then if getGlobalStorageValue(t.gStorage) >= 1 then setGlobalStorageValue(t.gStorage, 0) doBroadcastMessage(t.msgoff) else doPlayerSendCancel(cid, "O evento não está aberto.") end end return true end Agora em "Data/talkactions", abra o arquivo talkactions.xml e adicione:
<talkaction words="!evento" event="script" value="enterevent.lua"/> <talkaction log="yes" words="/event" access="5" event="script" value="openevent.lua"/> Comandos: /event open | /event close | !evento
O tópico foi movido para a área correta, preste mais atenção da próxima vez!
Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680
Este tópico foi movido:
De: "OTServ → Scripting → Tutoriais de Scripting"
Para: "OTServ → Suporte OTServ → Suporte de Scripts"
-
Wakon recebeu reputação de ceesar90 em (Resolvido)Como por acentos em scripts .lua?
Tem que salvar com codificação em ANSI, só sei como salvar pelo notepad que é clicando em Formatar no menu horizontal e selecionando a codificação em ANSI.
-
Wakon deu reputação a thelifeofpbion em Script de faca (diferente)
Bom, uns tempo atras ai eu tava fazendo um OT Hunger games e tal e fiz varios sisteminhas, para o OT e um deles era uma faca que cortava peixe, galinha e mato kkkkk que quero o que eu precisava...
vou postar aqui porque vai que ajuda alguém no futuro, É isso.
GIF
Código
actions/script/faca.lua
-
Wakon deu reputação a thelifeofpbion em Action de "casulos" de bixos
Basicamente são itens do tibia que diz "spider eggs" e você clica e nasce o bixo ou um bat do tronco etc...
<action itemid="7537" script="other/spideregg.lua" />
<action itemid="5677" script="other/tortoisegg.lua" />
<action itemid="4189" script="other/bategg.lua" />
-
Wakon deu reputação a Lyu em Legendary Lever (Alavanca de Itens Lendários)
Fala clã, há um tempo soltei um sistema privado meu no grupo do TK no Discord e hoje resolvi soltar aqui no Fórum também, abaixo irei explicar um pouquinho sobre esse sistema.
O que é Legendary Lever?
É um sistema de alavancas que vendem itens (aleatórios), similar à uma surprise bag, porém cada item possui x porcento de chances de dropar ao jogador que estiver pagando para tentar a sorte.
Qual o objetivo afinal?
Bom, na época que desenvolvi esse sistema, era para um cliente meu que acabou desistindo da compra quando eu estava prestes a começar a desenvolver. O objetivo do cara era criar 5 alavancas, onde cada alavanca teria pelo menos 1 item lendário com 3% de chance de dropar ao jogador que estivesse puxando a alavanca, e cada alavanca teria entre 5 a 7 itens ao todo (a maioria itens simples). Mas a ideia por trás de tudo era lucrar com isso, fazer jogadores donatarem mais para poder tentar pegar esses itens lendários (claro, o cara ia ter que gastar muito pra isso). Terminou que resolvi desenvolver esse sistema com proteção contra duplo click, exaustão, logs de ações, etc.
Em qual versão posso utilizar esse sistema?
Esse sistema foi programado para rodar em TFS 1.x. Se vocês quiserem, em breve posso converter para 0.4 e trazer ao Fórum, mas aí vai depender do feedback
Sem mais delongas, vamos ao sistema!
antes de tudo, crie uma pasta chamada legendarylever em data/actions/scripts, e dentro da legendarylever crie outra pasta chamada lib.
data/actions/scripts/legendarylever/lib/lib.lua :
agora abra data/lib/lib.lua e inclua esta linha :
dofile('data/actions/scripts/legendarylever/lib/lib.lua')
Feito isso, você já pode começar a criar os arquivos das alavancas. Vamos então criar a nossa primeira alavanca!
data/actions/scripts/legendarylever/royalcrossbow.lua :
data/actions/actions.xml :
<action actionid="3370" script="legendarylever/royalcrossbow.lua"/>
E por fim, adicione a actionid 3370 em uma alavanca no Remere's Map Editor! ?
Para criar novas alavancas, você já deve saber o que se fazer. Sim! CTRL + C CTRL + V no arquivo royalcrossbow.lua, renomea o nome, edite a tabela de itens, preços, premium etc e adicione a tag no XML com uma nova actionid (a actionid põe em uma nova alavanca no Remere's).
A configuração não preciso nem explicar né! A única dica que dou, é deixar brodacast = true apenas nos itens mais difíceis de dropar, ou seja, os lendários. Porque isso irá anunciar ao servidor todo que aquele player conseguiu o danado do item haha ?
Então é isso, espero que tenham gostado!
*Edit: Para salvar log de ações, crie uma pasta chamada randomitems em data/logs.
Créditos: Lyu (isme)
-
Wakon deu reputação a Thalles Vitor em Clientes Semelhantes ao OTPokemon
Bom eu vim liberar uns clientes meus,semelhantes ao OTPokemon,bom não ficaram muito bons
Motivo de eu estar postando eles: Bom eu enjuei de ficar copiando otPokemon,ai eu migrei pra um client semelhante a PXG!
Bom uso!
Equipe otPokémon XYZ
1° Cliente: http://www.mediafire.com/file/q2ceu9524643a1u/otPokemon_XY_%26_Z_-_Cliente.exe/file
Scan do 1° Cliente: https://www.virustotal.com/pt/file/6918e5944d8f5d4b8fb3840c3d8b0d23231a80f899ad58ec43d11b9d3b830cd7/analysis/1536097909/ (CORRIGIDO)
2° CLIENT RETIRADO!! MOTIVO: GRANDE DEMAIS PARA SER ESCANEADO
POR FAVOR SE FOR USAR DEIXAR CREDITOS PARA NÓS DA EQUIPE DO OTPOKÉMON XY&Z (XYZ)
CREDITOS: OTPOKEMON PELAS IMAGENS
THALLES VITOR ( EU QUE MODIFIQUEI OS ARQUIVOS DO OTCLIENT )
OTPOKESILVER ( PELA POKE INFO )
+ NÃO ESQUEÇA DO REP+ VAI ME AJUDAR MUITO!
-
Wakon deu reputação a thelifeofpbion em AUTO TP Depois de matar boss.
Existem alguns scripts que depois de matar boss abri tp para os players entrarem em uma sala de recompensa, porém (não sei se já existe) vou postar 2 scripts:
1º Script: Todos players que der algum dano no boss é teleportado
2º Script: Depois que o Boss for derrotado todos players de uma sala são teleportados.
É Basicamente isso, tava ajudando no suporte quando pediram isso e resolvi postar para ficar mais facil de achar (e depois pra eu achar também).
Agradeço o vodkart por ter disponibilizado a parte do script onde seleciona todos players de uma area (retirei de algum post do forum),
e Xagah que copiei descaradamente as imagens de tópico porque achei bonito
Ajudei de alguma Forma? REP+.
-
Wakon deu reputação a Vodkart em [8.6] Teleport System!
Descrição do Arquivo
*Sobre o Sistema*
Resolvi postar este sistema por ser simples, já que estou desenvolvendo sistemas para guild e focar em evento de PVP para comércio aqui no TibiaKing, sem mais deslongas;
O sistema é simples, basta você ativar um comando e você será teleportado para o local depois de "X" segundos, como mostra na imagem!
Exemplo do uso de comando:
!tp templo
!tp depot
!tp baiak city
-----
Função que leva você para as houses! Pode ser sua house ou a house que seu amigo te invitou!
!tp casa,1
ou
!tp house,1
*Features*
[+] O Jogador que ativar o comando e entrar em combate, automaticamente o teleport é desativado!
[+] Fácil configuração!
[+] Você pode configurar para que determinados locais sejam acessados só por premium account!
[+] Nova função que fará que você seja levado para sua house ou house de amigos que tenham te invitado... e também irá mostrar a lista de houses disponíveis para ir!
*Versão Testada*
Versão Tibia 8.6
TFS 0.3.6
TFS 0.4
*Código*
tp_system.lua
--[[ Teleport System Desenvolvido por Vodkart Exclusivo TibiaKing Versão : 1.0 ]]-- --[[ Configuração ]]-- local time = 5 -- tempo que demora para ser teleportado local premium_teleport_houses = true -- se para teleportar para as houses precisa ser premium local teleports = { -- ["nome do lugar"] que poderá ir ["depot"] = {pos = {x=129, y=54, z=6}, premium = false}, -- posição que irá e se precisa de premium para ir! ["templo"] = {pos = {x=160, y=54, z=7}, premium = false}, ["arena"] = {pos = {x=125, y=351, z=9}, premium = false}, ["baiak city"] = {pos = {x=1028, y=1034, z=7}, premium = false} } --[[ Functions ]]-- function doTeleportWithDelay(cid, pos, delay) -- by vodkart if not isCreature(cid) then return LUA_ERROR end if delay > 0 then if getCreatureCondition(cid, CONDITION_INFIGHT) then setPlayerStorageValue(cid, 548745, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} O teletransporte foi desativado pois você entrou em estado de combate.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} "..delay.." segundos para se teletransportar.") addEvent(doTeleportWithDelay, 1000, cid, pos, delay-1) else doTeleportThing(cid, pos) doSendMagicEffect(getPlayerPosition(cid), 10) end end function getHouseInvite(cid) -- by vodkart local t = {} local qry = db.getResult("SELECT `house_id`,`list` FROM `house_lists`;") if (qry:getID() ~= -1) then repeat local lista = qry:getDataString("list") if string.find(lista, getCreatureName(cid)) then local id = qry:getDataInt("house_id") if not isInArray(t, id) then t[#t+1] = id end end until not qry:next() qry:free() end return t end function onSay(cid, words, param) local z = string.explode(param:lower(), ",") if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Este comando só pode ser usado fora de combate.") return true elseif getPlayerStorageValue(cid, 548745) - os.time() > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} aguarde, você está em processo de teletransporte.") return true end if z[1] == "casa" or z[1] == "house" then local t,invite,str = {},getHouseInvite(cid),'{Teleport} As casas disponíveis para você se teletransportar são:\n' if premium_teleport_houses == true and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você precisa ser premium account para teleportar para houses.") return true end if getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil then t[#t+1] = getHouseByPlayerGUID(getPlayerGUID(cid)) end if #invite ~= 0 then for i = 1,#invite do t[#t+1] = invite[i] end end if #t == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} você não tem nenhuma house para ir.") return true end if not tonumber(z[2]) or tonumber(z[2]) > #t then for i = 1, table.maxn(t) do local h = getHouseInfo(t[i]) local hname, htown = getHouseName(t[i]),getTownName(h.town) str = str .. i .. ') '..hname..' [' .. htown..']' str = i ~= table.maxn(t) and str .. ', ' or str .. '.' end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Você deve especificar uma das casas para se teletransportar usando !tp house,numeroDoIndice") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str) return true end setPlayerStorageValue(cid, 548745, os.time()+time) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") doTeleportWithDelay(cid, getHouseEntry(t[tonumber(z[2])]), time) return true end if not teleports[z[1]] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, este lugar não existe, lugares disponíveis: house, depot, templo, arena, baiak city.") return true elseif teleports[z[1]].premium == true and not isPremium(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Desculpe, você precisa ser premium para ir para este lugar.") return true end setPlayerStorageValue(cid, 548745, os.time()+time) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "{Teleport} Ativado.") doTeleportWithDelay(cid, teleports[z[1]].pos, time) return true end
TAG
<talkaction words="!tp;/tp" script="tp_system.lua"/>
-
Wakon recebeu reputação de DarkRed em Addon System FUNCIONAL 2015/2016
Tópico aprovado, obrigado por compartilhar.
Você recebeu um REP pela contribuição.
-
Wakon recebeu reputação de darlandm em (Resolvido)Clicar na estatua e teleportar
Em "OT/Data/actions", script.lua:
local cfg = { failpos = {x = 161, y = 55, z = 7}, -- Posição caso não tenha um dos requerimentos. pos = {x = 160, y = 54, z = 7}, -- Posição caso tenha todos os requerimentos. vocations = {1, 8}, -- ID's das vocations, separe por vírgulas! item = {2160, 10}, -- ID/count. level = 50 -- Level necessário. } function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray(cfg.vocations, getPlayerVocation(cid)) then if getPlayerLevel(cid) >= cfg.level then if doPlayerRemoveItem(cid, cfg.item[1], cfg.item[2]) then doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, cfg.pos) else doSendMagicEffect(getThingPos(item.uid), CONST_ME_MAGIC_RED) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você não tem os items necessários, consiga '.. cfg.item[2] ..' '.. getItemNameById(cfg.item[1]) ..' para passar.') doTeleportThing(cid, cfg.failpos) end else doSendMagicEffect(getThingPos(item.uid), CONST_ME_MAGIC_RED) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Você precisa ser level '.. cfg.level ..' para passar.') doTeleportThing(cid, cfg.failpos) end else doSendMagicEffect(getThingPos(item.uid), CONST_ME_MAGIC_RED) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Apenas jogadores da vocação X ou X podem passar.') doTeleportThing(cid, cfg.failpos) end return true end Em actions.xml, adicione a tag:
<action uniqueid="XXXX" script="script.lua"/> Coloque o uniqueid XXXX na estatua e configure o script, caso dê algum erro, me avise :).
-
Wakon recebeu reputação de darlandm em (Resolvido)Clicar na estatua e teleportar
@darlandm, qual a versão da distro?
Testa com essa tag:
<action uniqueid="XXXX" event="script" value="script.lua"/>
-
Wakon deu reputação a Zanrix em Como saber se e null
Em lua a palavra chave é nil
getPlayerStorageValue(cid, 9999) == nil Edit:
@Dedo
Se você quiser que um valor do banco tenha um valor padrão em vez de null, é só usar a palavra default
Por exemplo:
ALTER TABLE players ADD COLUMN idade INT DEFAULT 0; Vai criar uma coluna no banco que em vez de null, ela recebe 0 por padrão.
-
Wakon deu reputação a NetoKain em [Projeto] Mapping Art - Nature
Salve galera do TK, estarei revivendo um projeto antigo de tutorial sobre mapping e espero ter ajuda para dar continuidade.
Esse post inicialmente será feito como introdução MAS NETO QUE PORR@ É ESSA? Basicamente jovem estarei trazendo um pouco de experiência na área de mapping, de várias pessoas, estilos diferentes, afinal cada mapper tem um estilo e isso muda muita coisa, entre um e outro, então a ideia é trazer uma variedade de conteúdo para que vocês possam observar como trabalhamos e criar seu próprio estilo fazendo mapas bonitos.
Regras:
1 - Eu vou criar um tutorial, ao final irei indicar um mapper, ele irá fazer outro tutorial sobre outro estilo e no final ele vai indicar outro mapper, e assim sucessivamente.
2 - Usar meu tutorial como referência, ou seja, sendo bem detalhado nos quesitos que vão abordar e trazer imagens.
3 - Se não quiser participar, por qualquer motivo, comenta que não pode e será escolhido outro.
4 - Titular o tópico com "[Projeto] Mapping Art - (Nome do tema)" (ex: [Projeto] Mapping Art - Cidades)".
No caso convido o @Daniel para dar continuidade (o tipo do mapa fica a escolha do mapper, só peço para que não seja repetido).
Vou falar um pouco sobre nature, que é o básico!
Tutorial 1: NetoKain - Nature
Nature - Complemento.
Vou passar uma breve explicação de como eu geralmente faço para montar a nature com arvores e arbustos, acho que ficou meio vago na explicação anterior, nesse caso vamos iniciar com o ground já feito.
Após seguir os passos e caso tenha entendido o tutorial deixe sua imaginação andar junto com um bom planejamento e coerência.
Bom mapping a todos, espero o tutorial do @Daniel!
-
Wakon deu reputação a Dwarfer em (Resolvido)Bau inteligente
@Navegante
Em actions/scripts crie um arquivo.lua e cole isto dentro:
No actions.xml, coloque a tag como o exemplo abaixo, inserindo um actionid no lugar do XXXX e o mesmo valor para o actionid do baú.
<action actionid="XXXX" script="NOMEDOSEUARQUIVO.lua"/>
-
Wakon recebeu reputação de baiakuda em (Resolvido)[ACTION] OFFLINE TRAINING
@baiakuda:
local statue = { [1444] = SKILL_SWORD, [1449] = SKILL_AXE, [3705] = SKILL_CLUB, [3739] = SKILL_DISTANCE, [1448] = SKILL__MAGLEVEL } function onUse(cid, item, fromPosition, itemEx, toPosition) if isPlayerPzLocked(cid) then return false end if item.actionid == 1000 then doPlayerSetOfflineTrainingSkill(cid, statue[item.itemid]) doRemoveCreature(cid) end return true end
-
Wakon recebeu reputação de baiakuda em (Resolvido)[ACTION] OFFLINE TRAINING
@baiakuda, algum erro na distro? Tudo que eu fiz foi remover a checagem de premium "and getPlayerPremiumDays(cid) > 0".
Se não der nenhum erro na distro, verifique a actionid(tem que ser 1000) da estátua que você testou.