-
Total de itens
702 -
Registro em
-
Última visita
-
Dias Ganhos
5
Tudo que BananaFight postou
-
não entendi "groupBox" ? seriam varias caixinhas para marca-las ?
-
Bom, mais foi isso que eu tentei me referir, ele vai executar o que estiver programado não necessariamente precisa ser uma mensagem.
-
vamos esperar novas ideias, caso sejam interessantes eu posso estar fazendo.
-
Opa, boa ideia vou dar um destaque e as melhores ideias postadas aqui posso correr atras e tentar faze-las.
-
Bom, sobre a 1° parte era só um exemplo de uso. E na 2° parte eu só dei um exemplo simples de como registrar o valor do opcode que como no exemplo ele era chamado de "test". do mesmo modo que se eu tentar fazer print(test) ele me retorna "received something from server!", Agora quando eu registro o opcode 100, o que eu estou registrando é "received something from server!", então quando eu retornar o opcode 100 vou ter esse resultado "received something from server!" certo ?
-
Extended Opcodes (OtClient)
tópico respondeu ao BananaFight de BananaFight em Linguagens de Programação
Área do otclient please *-* -
function onExtendedOpcode(cid, opcode, buffer) if opcode == OPCODE_LANGUAGE then -- otclient language if buffer == 'en' or buffer == 'pt' then -- example, setting player language, because otclient is multi-language... --doCreatureSetStorage(cid, CREATURE_STORAGE_LANGUAGE, buffer) end elseif opcode == OPCODE_PRINT then print(buffer) else -- other opcodes can be ignored, and the server will just work fine... end end quando a função "onExtendedOpcode(cid, opcode, buffer)" for usada ele vai te que ter os 2 valores preenchidos opcode, buffer opcode, seria como o id da mensagem que você esta reçebendo/enviando, e buffer é o valor dessa mensagem como nesse exemplo : local function test(protocol, opcode, buffer) print('received something from server!') end ProtocolGame.registerExtendedOpcode(100, test) o valor do "ID" do opcode é 100, e "test" é a mensagem que estamos enviando, sendo assim quando o opcode numero 100 for usado ele vai retornar o que a função test esta armazenando.
-
Extended Opcodes (OtClient)
tópico respondeu ao BananaFight de BananaFight em Linguagens de Programação
Luck, você poderia postar suas adaptações para ajudar o pessoal ? -
Adaptei para talkaction e arrumei alguns bugs, adicionei para remover mana, e só com vocation poder usar : local min, max = 100, 200 function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function posIgual(pos1, pos2) return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z and true or false end effect = 62 distance = 31 damage = COMBAT_DEATHDAMAGE evilspirit = { walk = function (cid, min, max, pos, rounds, ultimapos) if rounds == 0 then return true end if not isCreature(cid) then return true end posdisp = {} for _, dir in pairs({1, 5, 7, 3}) do if isWalkable(getPosDirs(pos, dir)) and not posIgual(getPosDirs(pos, dir), getThingPos(cid)) and not posIgual(getPosDirs(pos, dir), ultimapos) then table.insert(posdisp, getPosDirs(pos, dir)) end end if #posdisp < 1 then return true end posesc = posdisp[math.random(1, #posdisp)] ultimapos = pos doSendDistanceShoot(pos, posesc, distance) doAreaCombatHealth(cid, damage, posesc, 0, -1000, -2000, effect) addEvent(evilspirit.walk, 140, cid, -min, -max, posesc, rounds - 1, ultimapos) end } function onSay(cid,item,item2,frompos,pos,topos) local config = { s = 11548, exhau = 60 } if (getPlayerStorageValue(cid, config.s) <= os.time()) then doPlayerSendCancel(cid, "Você tem que esperar " .. config.exhau .. " segundos para usar novamente.") setPlayerStorageValue(cid,config.s,os.time()+config.exhau) return true end if getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then evilspirit.walk(cid, 10, 20, getThingPos(cid), 40, {x=1, y=1, z=1}) for i = 1, 13 do addEvent(evilspirit.walk, i * math.random(300, 500), cid, min, max, getThingPos(cid), 40, {x=1, y=1, z=1}) end setPlayerStorageValue(cid,config.s,os.time()+config.exhau) doCreatureAddMana(cid, -1300) else doPlayerSendCancel(cid, "FK YOU NOOB, THIS SPELL IS NOT FOR YOU") end return true end Editando : doAreaCombatHealth(cid, damage, posesc, 0, -1000, -2000, effect) -1000 = Minimo, -2000 = Maximo Vocações que podem usar if getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 5 then Quanto de mana vai remover doCreatureAddMana(cid, -1300) mensagem que vai enviar quando tiver exausted doPlayerSendCancel(cid, "Você tem que esperar " .. config.exhau .. " segundos para usar novamente." Tempo da exausted exhau = 60 Acho que é isso, qualquer duvida só perguntar.
-
kk', esqueci de remover uma parte dentro do lua você procura por isso : function toggle() if checkServerMod() == 'yes' then if ThunderButton:isOn() then ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end end e deixa assim: function toggle() if ThunderButton:isOn() then ThunderWindow:hide() ThunderButton:setOn(false) else ThunderWindow:show() ThunderButton:setOn(true) end end
- 14 respostas
-
- thunder mods
- otserv
-
(e 1 mais)
Tags:
-
Bom, eu não sei porque deu isso, POREM, é mais simples você remover os botões da seleção de runas da hotkey, eu já fiz isso e funciona bem.
-
[Arquivado]OtClient 0.6.2 - 09/04/2013
tópico respondeu ao BananaFight de BananaFight em Noticias - Arquivo
Não sei quando sai a versão 9.83, e o dash fica em Options. -
Use [/code ] sem o espaço para deixar mas organizado seu script teste assim [code] local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end 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 = string.lower(msg) local promote = { ["vip"] = {level = 300, price = 0, promotion = 2, premium = true} } if promote[msg] then if promote[msg].premium == true and not isPremium(cid) then npcHandler:say('You need a premium account in order to get promoted', cid) return true end if getPlayerPromotionLevel(cid) < promote[msg].promotion then if getPlayerLevel(cid) >= promote[msg].level then if doPlayerRemoveItem(cid, 2157, 400) then setPlayerPromotionLevel(cid, promote[msg].promotion) npcHandler:say('Congratulations! You are now promoted!', cid) if getPlayerVocation(cid) == 9 then -- epic sorcerer local newmana = getPlayerLevel(cid) * 38 - getCreatureMaxMana(cid) setCreatureMaxMana(cid, newmana) local newhp = getPlayerLevel(cid) * 10 - getCreatureMaxHealth(cid) setCreatureMaxHealth(cid, newhp) elseif getPlayerVocation(cid) == 10 then -- epic druid local newmana = getPlayerLevel(cid) * 38 - getCreatureMaxMana(cid) setCreatureMaxMana(cid, newmana) local newhp = getPlayerLevel(cid) * 10 - getCreatureMaxHealth(cid) setCreatureMaxHealth(cid, newhp) elseif getPlayerVocation(cid) == 11 then -- epic paladin local newmana = getPlayerLevel(cid) * 15 - getCreatureMaxMana(cid) setCreatureMaxMana(cid, newmana) local newhp = getPlayerLevel(cid) * 15 - getCreatureMaxHealth(cid) setCreatureMaxHealth(cid, newhp) elseif getPlayerVocation(cid) == 12 then -- epic knight local newmana = getPlayerLevel(cid) * 7 - getCreatureMaxMana(cid) setCreatureMaxMana(cid, newmana) local newhp = getPlayerLevel(cid) * 35 - getCreatureMaxHealth(cid) setCreatureMaxHealth(cid, newhp) end else npcHandler:say('You need 200 epic Coins to buy this promotion.', cid) end else npcHandler:say('I am sorry, but I can only promote you once you have reached level '..promote[msg].level, cid) end else npcHandler:say('You are already promoted!', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
dúvida Erro em script de Creature script
pergunta respondeu ao PsyMcKenzie de BananaFight em Scripts
Adicione o script aqui para que eu possa entender o erro e tentar ajuda-lo. -
Você deve realizar uma operação de multiplicação, multiplicando o quanto de mana ele vai ganhar por level * level do player e depois diminuir da mana total do player local newmana = getPlayerLevel(cid) * 15 - getCreatureMaxMana(cid) setCreatureMaxMana(cid, newmana) Vamos supor que no level 200 um player tenha 2450 de mana, agora ele se transforma em epic, e começa a ganhar 15 de mana por level * 200 = 3000 de mana, o script vai fazer essa conta de level * novo ganho de mana e diminuir da mana atual do player 3000-2450 = 550, agora ele vai pegar essa diferença e vai somar a mana do player 2450 + 550 = 3000. Você pode usar a mesma formula com cap, hp e o que quiser. Essa conta você adiciona dentro do npc que da a promotion e na parte em que ele adiciona ela.
-
NN, pegue essa spr, e transforme no que quiser seguindo os requisitos, se quiser adicionar assas, rabo chifres, refazer a cabeça, qualquer mudança pode ser feita nele.
-
Vamo dar continuidade na spr que Insaend fez : Sprites Prontas : by: Insaned
-
Existe uma área especifica para o OtClient, http://www.xtibia.com/forum/forum/917-open-tibia-client-forum-oficial-brasileiro/, tente melhorar um pouco seu tópico ele esta meio bagunçado e ruim de entender, também ja existem novas versões muito mais sofisticadas do que essa que você postou
- 16 respostas
-
- super client vbeta.
- tibia
-
(e 1 mais)
Tags:
-
Muito bom Dalvo, bem pratico e alto explicativo, muito obrigador por estar sempre ajudando nessa parte.
-
Realmente muito bom, esse sistema é um ótimo modo de se proteger, Podia por para mudar a senha da acc quando não for autorizado deixando para uma pré determinada.
-
Snowks você confundiu as coisas, o pessoal vem reclamando da falta de conteúdo e esse tópico é para dizerem o que esta faltando e não pedir conteúdo para si mesmo, não seja egoísta.
-
@Dark, seu script só funciona para quem instalou isso com os opcodes.
-
Muito bom, isso ajuda muito na criação de novos npcs e possíveis monsters.
-
[Arquivado]Entrevista com o Co-Fundador do Open Tibia Client Project!
tópico respondeu ao Administrador de BananaFight em Noticias - Arquivo
Henrique vem me ajudando muito respondendo minhas duvidas e me ensinando muitas coisas boas. Ele é um cara Muito legal e inteligente, Realmente ele merece tudo de bom, Não só ele mais todos que participaram e participam do projeto OtClient, pois é uma das maiores revoluções no mundo open tibia. Se bem que ja que estamos chegando em um ponto que não dependemos de nada da CipSoft, Vamos ter que mudar de Open Tibia, para Open Server, ou algo do gênero hehehe. -
Isso, eu não vou saber te responder, mais creio que se você adiciona dentro de algum module que seja iniciado quando o player vai logar, para enviar um opcode pro servidor, e dentro da função onLogin você fizer ela receber esse opcode você deve conseguir fácil.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.