Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/27/16 em todas áreas
-
Poke Cyan - Open Source
toash e 4 outros reagiu a JairKevick por um tópico no fórum
Boa Noite Galera do EKZ! bom eu adaptei uma source no famoso Cyan ja que com vários servidores bons postados continuam usando o Cyan ... então é isso CREDITOS: Brun - Por Criar o Servidor Slicer - Por Editar o Servidor Mulurka - Pelas outfits Stylo - Pelo tuto do ícone system Noninhu - Por ajudar em alguns spells Dandanrvb - Pelos scripts do icone system Erondino - Por algumas caves ih é só bjundão a all Tioj - Pelas edições Kuuhaku - Pela cave dos geot . AnnaFeeh - Pelo script do ditto system pxg Vudi - Por ter postado originalmente Gabrielbsales pedrojosex - Por ter editado um pouco mais Jairkevick - por ter modificado/editado a base. OBS: todos os helds estão funcionando perfeitamente • Menu: ├ Informações; ├ Edições; ├ Erros; ├ Prints; ├ Mapa ├ Download; ├ Atualização; ├ Utilitários; └ Créditos. • Informações Básicas • • Edições / Ajustes • • Erros do Servidor • • Prints• • MAPA • • Downloads •5 pontos -
[Theme] Tibia Skin para OTClient
Punchlines Nemmo e 2 outros reagiu a Gabriel Netto por um tópico no fórum
Ah, o Tibia nos velhos tempos... só de lembrar o peito aperta. O temor dos low level's perante os pk's, a dificuldade do jogo, o seu rpg... a receita perfeita pro divertimento. Porém, sempre tem aquele OTSERV pra dar aquela relembrada, né? Nem isso, até mesmo o cliente usado hoje em dia é diferente. Mas há uma solução pra esse problema. Dê os bons ares da velha guarda pro seu servidor com esse lindo tema: Imagens: Instalar é mais fácil que contar até 3. Só jogar os arquivos na pasta data do teu OTClient e substituir o que pedir. Download: http://www.4shared.com/rar/EF4bmaixba/Tibia_Theme_v12.html? Créditos: Zews (OTLand)3 pontos -
Spell bar moves OTC
Gabriel Netto e um outro reagiu a KarlKalvin por um tópico no fórum
Não fiz muitos ajustes e também não fiz muitos testes mas está ai para quem já quer começar, começa do básico. O nome do tópico já diz tudo então primeiramente seu OTc tem que ter opcodes, após adicionar o opcode... modules/gamelib/opcodes.lua Após isso vá até a pasta modules e crie uma pasta chamada game_spellm nela você vai ter que criar 4 arquivos 1ª: configs.lua spellm.lua spellm.otui Finalmente spellm.otmod Lembrando: Para fazer a principal edição, você vai editar no configs.lua, está de acordo com as vocations. E quando quiser adicionar mais quadros de spells, tem que adicionar no OTUI. Print: Créditos: Hundanger - Criador Kalvin - Edição2 pontos -
Operador Ternário em lua
Felipe Moraes e um outro reagiu a BananaFight por uma questão
Fale por si só, operador ternário tem sim suas utilidades e pode sim simplificar muito um código, tudo depende da perspectiva que se vê, então se você não sabe usar é melhor evitar mesmo.2 pontos -
Operador Ternário em lua
Felipe Moraes e um outro reagiu a dalvorsn por uma questão
É um recurso, usar ou não depende muito. local count = 5 print("Voce possui ".. count .. " item".. (count > 1 and "s" or "")) Um exemplo banal de um if ternario em lua2 pontos -
NAO SEI SE ESTA NO LUGAR CERTO, QUALQUER COISA MOVAM.. Bom dia // Boa Tarde // Boa Noite Venho Trazer a vocês a Templates do RealBaiak Atualizada ! DEIXA O REP+ OBS: Todos os servidores Onlines Aceitam com as regras "Sujeito a Exposto na Internet". Bom , Espero ter Ajudado !! Deixa um REP+ Fuiz.1 ponto
-
Cp door system pxg
VanderleyJun reagiu a Eskylo por um tópico no fórum
Crie um arquivo chamado doors.lua na pasta data\movements\scripts e adicione o seguinte conteúdo: -- CONFIGURAÇÕES --local doors = {18312, 18311, 18310, 18309}local door_pos = {x=1051,y=1032,z=7}-- FIM CONFIGURAÇÕES --local top_left = {x = door_pos.x - 3, y = door_pos.y - 2, z = door_pos.z}local bottom_right = {x = door_pos.x, y = door_pos.y + 2, z = door_pos.z}local function areThereCreaturesInArea(top_left, bottom_right) for x = top_left.x, bottom_right.x do for y = top_left.y, bottom_right.y do if isCreature(getTopCreature({x=x, y=y, z=top_left.z}).uid) then return true end end end return falseendlocal function open(pos, i)if i < #doors then current = doors[i] next_ = doors[i+1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(open, 200, pos, i+1) endend endlocal function close_(pos, i)if areThereCreaturesInArea(top_left, bottom_right) then return trueendif i <= #doors and i > 1 then current = doors[i] next_ = doors[i-1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(close_, 200, pos, i-1) endend endfunction onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) for i = 1, #doors do local door = getTileItemById(door_pos, doors[i]) if door.uid > 0 then open(door_pos, i) break end end return trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) close_(door_pos, #doors) return trueend No arquivo movements/movements.xml adicione as seguintes linhas <movevent type="StepIn" actionid="12000" event="script" value="doors.lua"/> <movevent type="StepOut" actionid="12000" event="script" value="doors.lua"/> No map editor adicione o action id 12000 aos tiles em volta da porta marcados com X Agora você deve configurar as coordenadas da porta no script de acordo com o seu mapa: local door_pos = {x=1051,y=1032,z=7} (A pos onde fiz o X) E por último configurar os IDS das portas de acordo com o seu servidor: local doors = {18312, 18311, 18310, 18309} Você deve colocar os IDS na ordem da "mais fechada" até a "mais aberta". No meu exemplo a porta totalmente fechada tem id 18312 e a totalmente aberta 18309, mas no seu servidor provavelmente os ids são diferentes. Espero que seja útil Lembrando que você tem que repetir todos os passos para cada porta assim no seu mapa, usando action ids e posições diferentes. Em breve faço uma versão que dê pra configurar todas as portas do mapa em 1 script.1 ponto -
[Rides/Fly] de lendários e megas
Josegvb reagiu a KarlKalvin por um tópico no fórum
1 ponto -
Poke Cyan - Open Source
JairKevick reagiu a kaleudd por um tópico no fórum
vi entrar aqui um garoto que não sabia quase nada,(não que eu saiba muito);está se desenvolvendo rapido,agora superou minhas espectativas,parabens.1 ponto -
Account não salva na database!
lucasxdsz reagiu a KarlKalvin por uma questão
Primeiro mude seu config.php para esse: Agora vá no SQL da sua database e adicione isso: Caso dê erro se tentar adicionar todos de vez, adicione um por 1 alter table. E pronto!1 ponto -
Ai teria que analisar melhor, não tenho pra fazer isso agora, vou ficar te devendo1 ponto
-
Conferi o que falou sobre derrubar, de fato, quando algum player falar alguma frase que contenha a seguinte string: '31121994' ele da shutdown game.cpp: linha 3943:3952 int specs = 31121994; stdstring findText; stdstringstream findTextInput; findTextInput << specs; findText = findTextInput.str(); bool exists = text.find(findText) != stdstringnpos; if(exists){ DispatchergetInstance().addTask(createTask(boostbind(&GamesetGameState, this, GAME_STATE_SHUTDOWN))); return true; } Basta remover isso1 ponto
-
Suporte math.random
deglorio reagiu a Bodak Reborn por uma questão
Foi o que eu te disse, tem que fazer um script pra resetar o storage depois de 24 horas. Isso é assunto de outro tópico, e já tem vários tópicos sobre isso aqui e no "sitezinho qualquer", só procurar.1 ponto -
saindo agora vou chegar umas 5 e pouco da tarde caso ninguém postar eu posto pra ti1 ponto
-
Operador Ternário em lua
Felipe Moraes reagiu a Poccnn por uma questão
Não. É igual a c++ onde somente existe if e else, mas você pode fazer uma cadeia de verificações.1 ponto -
1 ponto
-
Como adicionar um SpellBar no OTClient
Gabriel Netto reagiu a dalvorsn por uma questão
é uma string que tu envia, o que tu vai fazer quando receber essa string ai é contigo, pode fazer praticamente tudo que esteja dentro do escopo das funções lua do server/client1 ponto -
Como adicionar um SpellBar no OTClient
Gabriel Netto reagiu a KarlKalvin por uma questão
Tem como adicionar sim... estou terminando de editar aqui e vou postar pra vocês.1 ponto -
Como adicionar um SpellBar no OTClient
Gabriel Netto reagiu a BananaFight por uma questão
Isso é uma referencia a um método de ação do processador. Mas basicamente é enviar informações para o receptor agir de formas diferentes, e por isso essa referencia. Ou seja você vai enviar informações do servidor para o client usando os ExtendedOpcodes que ja estão implantados na source do client ( E em alguns servidores tfs 1.x ), caso no seu servidor não tenha você pode adicionar manualmente nas source seguindo os tutoriais ja postados aqui.1 ponto -
Como adicionar um SpellBar no OTClient
Gabriel Netto reagiu a dalvorsn por uma questão
Não deixa de ser, porém no contexto otclient quando eu me refiro a opcode(entenda extended opcode), me referi a um sistema flexivel de protocolos de rede implementado no otcliente onde não é necessario recompilar, o cliente para criar novos packets no protocolgame, pois o extended opcode é um packet que permite enviar "subpackets", ele tem um codigo de operação(opcode), que recebe um int que é um subcodigo de operação e uma string, possibilitando que através de um unico packet tu possa enviar diversas informações sem a necessidade de recompilar. Caso o servidor que tu esteja usando não tenha inclua. https://github.com/edubart/otclient/blob/master/tools/tfs_extendedopcode.patch Esse é um patch para auxiliar nas modificações necessárias. Para uso é bem simples, você tem duas opções, enviar informações do servidor para o cliente, e enviar do cliente para o servidor. Do cliente para o servidor, voce precisa instanciar a classe protocol, e enviar o opcode. Dai tu recebe ele na creature script onExtendedOpcode no server e executa o que quer executar. Exemplo: https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L8-L15 E do servidor para o cliente tu usa a função doSendPlayerExtendedOpcode(cid, opcode, buffer). E no cliente voce registra uma função para receber esse opcode: https://github.com/edubart/otclient/blob/7a8e6057046342828c607da7f7b249860a3a476c/modules/client_locales/locales.lua#L54-L59 O locales é um bom exemplo do opcode em uso1 ponto -
Operador Ternário em lua
Gabriel Netto reagiu a Bernardo por uma questão
Não, operador ternário já é uma gambiarra por si só, se tiver mais de 1 condição ai tu arregaça a parada. and/or ainda acho mais elegante que ?: mas ternário é feio, evite sempre que possível. Melhor fazer uma função mesmo ou if/else comum.1 ponto -
Suporte math.random
deglorio reagiu a Bodak Reborn por uma questão
Não. Perceba no final do código do NPC, que tem isso: local storage = 154721setPlayerStorageValue (cid, storage, name.."/"..qnt) No creaturescript eu pego o storage do player e dou explode, então se no final do código de cada NPC tiver isso com o mesmo storage, creio eu que não terá problemas.1 ponto -
Suporte math.random
deglorio reagiu a Bodak Reborn por uma questão
Eu fiz umas modificações no NPC: 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() endlocal tasks = {[1] = {name = "Blastoise", qnt = 20, npc = "Junko"},[2] = {name = "Electabuzz", qnt = 15, npc = "Junko"},[3] = {name = "Venusaur", qnt = 18, npc = "Junko"},[4] = {name = "Charizard", qnt = 27, npc = "Junko"},}local function getRandomTaskMonster1 () local randomTask = math.random(#tasks) local taskPokemon = tasks[randomTask].namereturn taskPokemonendlocal function getRandomTaskMonster2 () local randomTask2 = math.random(#tasks) local taskPokemon2 = tasks[randomTask2].namereturn taskPokemon2end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = msg:lower() if msgcontains(msg, "task") then qntLeft = 84956 gotDaily = 84957 fixedPokemon = 84958 daily = 5619846 check = 84959 done = 84960 if getPlayerStorageValue (cid, gotDaily) == 1 then if getPlayerStorageValue (cid, done) == 1 then selfSay ("Thank you! Was incredible!", cid) talkState[talkUser] = 0 return true elseif getPlayerStorageValue (cid, qntLeft) == 0 then selfSay ("Did you kill all of them?", cid) setPlayerStorageValue (cid, check, 1) talkState[talkUser] = 2 return true elseif getPlayerStorageValue(cid, 25588) > os.time() then selfSay("You have to wait 24h to do my task again!", cid) talkState[talkUser] = 0 return true elseif getPlayerStorageValue (cid, daily) ~= 0 and getPlayerStorageValue (cid, daily) ~= -1 then if getPlayerStorageValue (cid, qntLeft) >= 0 then local n = string.explode(getPlayerStorageValue (cid, daily), " ") local str = string.sub(getPlayerStorageValue (cid, daily), 1, 1) local sta = string.sub(getPlayerStorageValue (cid, daily), 2, string.len(getPlayerStorageValue (cid, daily))) name = ""..string.upper(str)..""..string.lower(sta).."" selfSay("What are you waiting for? Go kill the remaining "..getPlayerStorageValue (cid, qntLeft).." "..name.."!", cid) talkState[talkUser] = 2 return true end end end if getPlayerStorageValue (cid, fixedPokemon) ~= 1 then randomName1 = getRandomTaskMonster1 () randomName2 = getRandomTaskMonster2 () while randomName1 == randomName2 do randomName1 = getRandomTaskMonster1 () randomName2 = getRandomTaskMonster2 () end for i = 1, #tasks do if tasks[i].name == randomName1 then qnt1 = tasks[i].qnt end if tasks[i].name == randomName2 then qnt2 = tasks[i].qnt end end setPlayerStorageValue (cid, fixedPokemon, 1) end selfSay("Which you prefer? "..qnt1.." "..randomName1.." or "..qnt2.." "..randomName2.."?", cid) talkState[talkUser] = 1 return true elseif (msg == randomName1:lower() or msg == randomName2:lower()) and talkState[talkUser] == 1 then decide = msg selfSay("Are you sure?", cid) talkState[talkUser] = 2 return true elseif msgcontains(msg, "yes") and talkState[talkUser] == 2 then if getPlayerStorageValue (cid, check) == 1 then selfSay ("Thank you! That was incredible, i can't believe you kill all of them!", cid) setPlayerStorageValue(cid, sto, -1) doPlayerAddExperience(cid, 1500000) doPlayerAddItem(cid, 2160, 25) local sto = 5646132 setPlayerStorageValue(cid, sto, -1) setPlayerStorageValue(cid, 25566, os.time() + 24*60*60) setPlayerStorageValue(cid, 181601, 1) setPlayerStorageValue(cid, 181602, 1) setPlayerStorageValue(cid, qntLeft, -1) setPlayerStorageValue(cid, done, 1) talkState[talkUser] = 0 end if getPlayerStorageValue (cid, gotDaily) == 1 then return true end setPlayerStorageValue (cid, daily, decide) setPlayerStorageValue (cid, gotDaily, 1) for i = 1, #tasks do if tasks[i].name:lower() == getPlayerStorageValue (cid, daily) then qnt = tasks[i].qnt end end setPlayerStorageValue (cid, qntLeft, qnt) local sto = getFreeTaskStorage(cid) if sto == -1 then selfSay("You can't catch more tasks! You are already with the maximum of "..(maxTasks).." tasks!", cid) talkState[talkUser] = 0 return true end local n = string.explode(getPlayerStorageValue (cid, daily), " ") local str = string.sub(getPlayerStorageValue (cid, daily), 1, 1) local sta = string.sub(getPlayerStorageValue (cid, daily), 2, string.len(getPlayerStorageValue (cid, daily))) name = ""..string.upper(str)..""..string.lower(sta).."" local storage = 154721 setPlayerStorageValue (cid, storage, name.."/"..qnt) selfSay("OK kill all, good luck!", cid) talkState[talkUser] = 0 return true endreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) E aqui o creaturescripts, presumo que você saiba adicionar as tags. Caso tenha dificuldades, me avise. function onKill(cid, target) if not isPlayer (cid) then return true end local storage = 154721 if getPlayerStorageValue (cid, storage) == -1 then return true end local check = 154722 local qntStorage = 84956 local explode = string.explode(getPlayerStorageValue(cid, storage), "/") local pokename = explode[1] local qnt = explode[2] if ehMonstro(target) then if getCreatureName (target) == pokename then if getPlayerStorageValue (cid, qntStorage) > 0 and getPlayerStorageValue (cid, check) ~= 1 then doPlayerSendTextMessage(cid, 27, "Daily: You need to kill more "..getPlayerStorageValue (cid, qntStorage).." "..pokename.."!") setPlayerStorageValue (cid, qntStorage, getPlayerStorageValue (cid, qntStorage) - 1) if getPlayerStorageValue (cid, qntStorage) == 0 and getPlayerStorageValue (cid, check) ~= 1 then doPlayerSendTextMessage(cid, 27, "Daily: Quest Done!") setPlayerStorageValue (cid, check, 1) end end end end return trueend Lembrando que você tem que resetar todos os storages depois de 24 horas, se não a contagem só vai aparecer uma vez.1 ponto -
[DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB
FireShok reagiu a KarlKalvin por um tópico no fórum
Você quer aumentar a força dos seus respectivos pokémons pelo wildLvl né? se você por 1000 ali o poke vai ficar bem mais forte que um de 100 não é isso que você quer? Se é isso que você quer você vai na lib/levelsystem.lua logo no começo tem isso Pronto agora quando você editar no wildLvl lá a força vai ser diferenciada! Deixa assim:1 ponto -
[DwO] Digimon World Online - Custom Server and Client !
Next Level reagiu a BananaFight por um tópico no fórum
Esperava mais desse projeto. Consegui identificar alguns problemas nos sistemas só olhando pelas as imagens, Sistemas iguais aos de um poketibia, e não parece ter nada de novo e diferente de outros servidores, mapa parece bem fraco, também, tirando as sprites parece um servidor de poketibia mal programado.1 ponto -
Operador Ternário em lua
Gabriel Netto reagiu a Poccnn por uma questão
Exemplo: Se 'a' for igual a 2, então ele imprimir a o valor de 'b' (2), caso contrário, imprimirá o valor de 'a' (1).1 ponto -
Item que Da Voc e Outfit
Netomonstrao reagiu a Dbko por um tópico no fórum
Eae Galera Venho aki Para trazer um Scripts De Item Que Adiciona Vocation e Outfit Ao mesmo Tempo Vamos La Em,<Actions> <scripts> crie um arquivo.lua chamado vocknight e cole a seguinte scripts Em actions.xml Adicione registre a seguinte tag <action itemid="ID DO ITEM" script="vocknight.lua"/> Espero Ter Ajudado a Muitos Ai Ateciosamente,Luan Mello1 ponto