
Tudo que xWhiteWolf postou
-
(Resolvido)Script de Passiva para Players
Isso dai tá com erro.. olha só function onStatsChange(cid, attacker, type, combat, value) --- função local chance = 10 ------ chance = 10 if isPlayer(attacker) then --- se for player o atacante então return true -------- cancelar o script end if type == STATSCHANGE_HEALTHLOSS and == true and isPlayer(cid) and isPlayer(attacker) then --- se o tipo de status ao ser mudado for perca de vida e o seu valor ----- seja true e eu for player e o atacante for player então: if math.random(1, 10) <= chance then --- se um numero aleatório entre 1 e 10 for menor ou igual a 10 então doSendMagicEffect(getPlayerPosition(attacker), 13) --- mandar efeito 13 na posição do atacante end end return --- return oque?? Tem que retornar algo end
- (Resolvido)Script de Passiva para Players
-
(Resolvido)Account manager e escolher vocação ao clicar na estatua
muito louco mas oq que aconteceria se eu teleportasse e saisse correndo? o addEvent ia dar erro, né?
-
(Resolvido)Account manager e escolher vocação ao clicar na estatua
wow, essa função addDialog é nova.. que versão foi implementado isso daí, vc saberia me dizer?
-
Erro Stack e Bueiros.
qual o id da ladder e do hole? adiciona eles na table ali em cima e os respectivos itemid's na actions que nao vejo porque não funcionaria
-
(Resolvido)Como criar storage de exp?
só colocar no movements com algum action ou unique id e colocar esse mesmo action/unique id no chão da porta e no teleporte... esse script possui bugs que tendem ao infinito mas to confiando em você pra pensar numa solução e postar o script completo. Dica: um dos bugs é caso o player entre na quest e saia, a exp vai ficar pra sempre com ele kkk o outro é se ele entrar, pisar no tile e vai ganhar exp, ele sai do tile pra frente, volta pra trás pra perder a exp e vai pra frente em direção a quest.. daí ele termina tudo e quando sair no teleporte ele vai ganhar a exp a mais e ficar com ela pra sempre auhauhauh se vc n conseguir eu resolvo pra ti dps local storage = 77788 local value = 1.25 -- 1x exp normal +25% function onStepIn(cid, item, position, fromPosition) if (getPlayerStorageValue(cid, storage) < 1) then setPlayerStorageValue(cid, storage, 1) doPlayerSetExtraExpRate(cid, value) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Now you're with "..value.."x of experience!") elseif (getPlayerStorageValue(cid, storage) == 1) then doPlayerSetExtraExpRate(cid, -value) setPlayerStorageValue(cid, storage, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You're no longer with "..value.."x experience!") end return true end
-
Dúvida Skull system em OT de WAR
as restrições de red e black são pela source se não me engano, não adianta mudar esse mod aí.
-
[spells] monstro sumonado não morre.
não precisa criar nada, posta o script que vc mexeu e eu dou uma olhada pra ver se consigo curar o outro sintoma haha
- (Resolvido)Magia de Buff para :Life, Skill, e mana
-
(Resolvido)Account manager e escolher vocação ao clicar na estatua
só não resolvo sua dúvida porque to no aguarde do Max resolver e eu vou conseguir aprender alguma coisa kkkk se for pra fazer clicando teria que fazer uma estátua pra cada vocação (a menos que seu server tenha 1 vocação só)
-
Erro Stack e Bueiros.
calma jovem gafanhoto, tenha paciência com aqueles que tentam te ajudar. O /i use o do meu server funciona, tenta usar ele (mesmo o meu server sendo 8.54 pode ser que pegue) function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then id = getItemIdByName(t[1], false) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else ret = doPlayerAddItemEx(cid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end return true end sobre o problema da ladder, procura pelo id dela em actions.xml e vê se tá associado a algum script, se não tiver.. procura algum item que esteja e dps vai ser só adicionar o ID da ladder e do bueiro lá. Se não resolver comenta aqui que a gente tenta resolver de outra maneira, mas mantenha a paciencia.
-
[spells] monstro sumonado não morre.
alguma função onKill ou onDeath no seu servidor tá causando isso, dá uma fuçada no creaturescripts e tenta ver oque é. Provavel algum script q tenha isPlayer ou isMonster e não tá incluindo os summons, daí eles morrem e não morrem pq a função não engloba eles.
-
(Resolvido)Como criar storage de exp?
não sei se dá pra remover a exp bonus, vou procurar umas funções aqui e se eu achar eu faço pra ti.
- Dodge System 8.54+
-
(Resolvido)[AJUDA] New player área.
o jeito de fazer o script do Viitin é muito bom também, fica a seu critério escolher qual vc acha mais fácil fazer
-
(Resolvido)[AJUDA] New player área.
coloca em login.lua em creaturescripts.. se X storage for <0 entao teleporte pro trem e set X storage como sendo 1. Daí vc edita o account manager no sql editor e adiciona esse storage X com valor 1 nele pra q ele n seja teleportado. Ou se preferir entra nele e manda ele pro templo que ele vai ganhar o storage e a proxima vez que logar ja n vai mais teleportar
-
(Resolvido)como colocar uma magia pra healar por magic level?
tem várias maneiras, uma delas é fazer por função (e não por comando de spell normal) function onCastSpell (cid, var) local life = ((getPlayerMagLevel(cid)) * 100) doCreatureAddHealth(cid, life) local pos = getCreaturePosition(cid) doSendMagicEffect(pos, 12) return true end outra maneira é setar um combat callback pra fazer as fórmulas e acho que se fizer a fórmula certinha dá pra fazer do jeito que vc citou também, só que não vou conseguir te ajudar.
-
Dodge System
espero que isso seja oque vcs queriam: http://www.tibiaking.com/forum/topic/33545-dodge-system-854/
-
Dodge System 8.54+
Ae galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim: Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano Sem mais delongas, vamos ao script: Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele: agora adicione essa linha no creaturescripts.xml: <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true: registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui: <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser. em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim: <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele: local config = { minlevel = 150, --- level que precisa pra comprar o livro price = 10000, --- preço do livro itemid = 1950 --- ID DO LIVRO } --- end config function getDodgeSkill(cid) dodgeskill = getPlayerStorageValue(cid, 48902) return dodgeskill end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start 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 -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'skill book') then if getDodgeSkill(cid) == dodgeskill then selfSay('You want to buy Skill Book [DODGE]? It will cost '..config.price..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('I couldnt acess your data bank!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < config.price then selfSay('Its necessary to have at least '..config.price..' gp\'s in order to buy the Skill Book!', cid) elseif getPlayerLevel(cid) < config.minlevel then selfSay('The minimum level for buying this skill book is '..config.minlevel..'!', cid) else doPlayerRemoveMoney(cid,config.price) doPlayerAddItem(cid, config.itemid, 1, TRUE) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'level') then selfSay('You have Leveled your Dodge Skill to ['..getDodgeSkill(cid)..'/100].', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) lembrando que no começo vc pode editar o preço, o level que precisa pra comprar a skill e o ID do livro que será usado (USE O MESMO ID NO ITEMS.XML E NO ACTIONS.) agora crie o npc dodgeseller.xml e coloque isso nele: <npc name="Dodge Skill Seller" script="data/npc/scripts/bookseller.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I've been waiting for you to come.. Say 'skill book' or 'level'" /> <parameter key="message_farewell" value="Cya folk." /> <parameter key="message_walkaway" value="How Rude!" /> </parameters> </npc> Explanações gerais: O sistema é bem simples (muito simples mesmo), ele pega o valor do storage do cara e multiplica por 3.. se isso for maior que um numero aleatório criado entre 0 e 1000 ele dá dodge e solta os efeitinhos lá do creaturescripts. Note que no nivel máximo o cara vai ter 100 de storagevalue e isso será multiplicado por 3 resultando em 300. Se 300 for maior que um valor aleatorio entre 0 e 1000 (30% de chance) você vai tomar apenas metade do dano. Vc pode editar a vontade e melhorar ele da forma que quiser, se vc quiser que todos os danos do player sejam passíveis de serem esquivados mude aqui: if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) then apenas retirando esse and isCreature(attacker), daí até dano de firefield vai dar pra dar dodge. Se você quiser adicionar classes que poderão usar (só knights e paladins por exemplo) só colocar isInArray({3,4,7,8}, getPlayerVocation(cid)) como condição na action. E se vc quiser que mago possa dar dodge mesmo com utamo vita (OQUE NÃO FAZ MUITO SENTIDO JÁ QUE O ESCUDO DE MANA FICA EM VOLTA DO PLAYER TEORICAMENTE, MAS TUDO BEM) é só colocar if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS and isCreature(attacker) then Se você quiser que só ataques de Players sejam desviados ou só ataques de monstros é só trocar isCreature(attacker) por isMonster(attacker) ou isPlayer(attacker). Bom, isso é tudo, espero que vcs tenham curtido e qualquer coisa é só comentar ou me dar um Rep que ajuda pra caralho. Um abraço pra vocês. EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.
-
ALGUNS ERROS E DUVIDAS BESTAS
não faço a mínima ideia, nem sei oque é PDA. Nao estou a par desses servers variados de Tibia :/
-
Como tirar flood de skill
/\ isso no config.lua (pra caso vc n saiba)
-
[Ajuda] Adc mento de evento e war system
Mano, só dar uma procurada no search ou ir na parte de sistemas no fórum que vc acha tudo isso fácil, se vc não conseguiu instalar é porque você foi desatento, dá uma lida nos comentários pra ver se tem alguém com o mesmo problema e se alguém já colocou uma resposta.. caso contrário verifique as versões do seu OT e a versão em que foi feita o script, pois estas devem ser compatíveis pra que dê certo. Se mesmo assim não conseguir, vá no google e digite oque você quer +"otserv" que é bem provável que vc ache
-
Glacier Set dando conditions em área
nunca nem se quer olhei a source de alguma versão do tibia, sou scripter, não programmer :/ Só sei que é só vc pegar a source do 8.6, procurar a pasta referente aos creaturescripts, abrir o arquivo e copiar a função pro mesmo arquivo do 8.4.. Procura uns tutoriais no google que acho q vc consegue de boa, dificil mesmo é pegar a source do 0 e compilar ela porque isso pode acabar estragando muitas outras coisas do seu servidor. Como eu disse anteriormente, não sou programmer, eu apenas arquiteto oque me é fornecido da maneira que convém
-
Zombie event tem como passar por cima da magic wall?
remove as runas ou coloca nos scripts delas que se o global Storage for X então return false e vê qual é o global storage do zombie event (se não tiver vc adiciona)
-
ALGUNS ERROS E DUVIDAS BESTAS
1) aumenta o rate (é a multiplicidade das skills) 3) vá atras da lib das suas spells ou a do seu próprio server e procure a função docastspell, ela tá como um arranjo de funções e uma delas é a getThingFromPos, provavel que o stackpos esteja errado ou pra algumas spells esse getThingFromPos seja inválido