-
Total de itens
250 -
Registro em
-
Última visita
-
Dias Ganhos
14
Tudo que Kydrai postou
-
Boas recomendações, muito bom os conteúdos. Vocês erraram no título dinovo.
-
Creio que assim funcione: <globalevent name="checkpremmy" interval="1000" event="script" value="checkpremmy.lua"/> function onThink(interval, lastExecution, thinkInterval) local config = { frompos = {x=000,y=00,z=0}, topos = {x=000,y=00,z=0}, teleportto = {x=000,y=00,z=0} } for i, cid in pairs(getPlayersOnline()) do if isPlayer(cid) and not isPremium(cid) and isInArea(getPlayerPosition(cid), config.frompos, config.topos) then doTeleportThing(cid, config.teleportto) end end return TRUE end
-
No otserv.cpp std::cout << STATUS_SERVER_NAME << ", version " << STATUS_SERVER_VERSION << " (" << STATUS_SERVER_CODENAME << ")\n" "Compiled with " << BOOST_COMPILER << " at " << __DATE__ << ", " << __TIME__ << ".\n" "A server developed by Elf, slawkens, Talaturen, Lithium, KaczooH, Kiper, Kornholijo.\n" "Visit our forum for updates, support and resources: http://otland.net.\n"; Tem uns 3 textos desses.
-
Acredito que no primeiro o erro ocorra pq você ta tentando pegar os dias de premium de um monster. Tenta assim: function onStepIn(cid, item, position, fromPosition) local poss = {x=32360, y=31782, z=7} if isPlayer(cid) == TRUE and getPlayerPremiumDays(cid) < 1 and getPlayerAccess(cid) < 3 then doTeleportThing(cid, poss) doPlayerSendTextMessage(cid, 25, "You don't have more premium days.") end return TRUE end
-
Opa, gostei das cores, achei a sign bem legal. Só dei um resize com o photobucket mesmo pra ficar nas regras do xt. Valeu mesmo :smile_positivo: PS: Dps rep pq meu limite foi atingido...
-
Moskitinho Sudowoodo Nicekid
-
O título no tópico ta errado. Jornal XTibia: Edição 15, o certo seria 16 Esses Jornais estão muito bons e cheio de conteúdos interessantes.
-
Eu nem tentei responder por causa da versão do ot, mas acho que da pra fazer, mas só testo no 8.54. Deixa eu ver se entendi. Você quer uma magia que tenha um exhausted válido somente para ela?
-
Pelo que eu to vendo aqui é isso mesmo, os trilhos não podem estar voando, se não, não tem como andar. Outro detalhe é que é bom colocar aqueles quadrados pra descer escadas (id 410), se não, tbm trava.
-
Lembrando que do jeito que ta ele soma a vocação atual com +4. Modifique essas partes: local maxResets = 1 -- máximo de resets local vocs = {1, 2, 3, 4} -- vocações que podem resetar e ganhar nova vocação (1(sorcerer)+4 = 5 master sorcerer) -- SCRIPT FEITO POR YUNIE -- config local minlevel = 500 -- level inical para resetar local price = 10000 -- preço inicial para resetar local newlevel = 8 -- level após reset local newexp = 4200 -- nova experiencia após reset local lvlByReset = 50 -- level acrescentado por reset local priceByReset = 10000 -- preço acrescentado por reset local maxResets = 1 -- máximo de resets local vocs = {1, 2, 3, 4} -- vocações que podem resetar e ganhar nova vocação (1(sorcerer)+4 = 5 master sorcerer) -- end config function addReset(cid) resets = getResets(cid) setPlayerStorageValue(cid,1020,resets+1) return true end function getResets(cid) resets = getPlayerStorageValue(cid,1020) if resets < 0 then resets = 0 end return resets end 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 needlvl = minlevel + (getResets(cid) * lvlByReset) local newPrice = price + (getResets(cid) * priceByReset) if msgcontains(msg, 'reset') then if getResets(cid) < maxResets then selfSay('Voce deseja resetar seu char? Isto custará '..newPrice..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('Você ja alcançou seu limite de resets!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < newPrice then selfSay('É Necessario ter '..newPrice..' gp\'s para resetar!', cid) elseif getPlayerLevel(cid) < needlvl then selfSay('O level minimo para reset é '..needlvl..'!', cid) else doPlayerRemoveMoney(cid,newPrice) if isInArray(vocs, getPlayerVocation(cid)) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) end addReset(cid) playerid = getPlayerGUID(cid) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level`="..newlevel..",`experience`="..newexp.." WHERE `players`.`id`= ".. playerid .."") end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'quant') then selfSay('Voce tem um total de '..getResets(cid)..' reset(s).', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
Você precisa mostrar qual sistema você ta usando nessa competição, se não, não tem como descobrir quem foi derrotado. Mas se quiser saber como ficaria: Coloca a alavanca de itemid 1945, e nela actionid 1050. actions/actions.xml <action actionid="1050" script="guild_alavanca.lua"/> actions/scripts/guild_alavanca.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local guild = getPlayerGuildName(cid) if guild ~= "" then doBroadcastMessage("A Guild "..guild.." ganhou.") end if item.itemid == 1945 then doTransformItem(item.uid, item.itemid+1) else doTransformItem(item.uid, item.itemid-1) end return TRUE end
-
(Npc) Que Manda Msg Para Todos Do Serv
tópico respondeu ao danielbello1 de Kydrai em NPCs, monsters e raids
Por GlobalEvents é mais fácil e melhor. Use arrays que o script fica muito melhor e menor. -
[Arquivado]A Evolução Dos Web Sites De Tibia
tópico respondeu ao Mattew de Kydrai em Noticias - Arquivo
Boa cara, eu lembro como eram os layouts antigos. Além de serem muito simples, muitos tinham um visual muito ruim. Isso mostra como os ots e as comunidades de opentibia evoluíram. A única coisa que não gosto hoje é que quase todo mundo usa o gesior sem nem se preocupar em criar um visual novo. -
Não testei: -- SCRIPT FEITO POR YUNIE -- config minlevel = 500 -- level inical para resetar price = 10000 -- preço inicial para resetar newlevel = 8 -- level após reset newexp = 4200 -- nova experiencia após reset lvlByReset = 50 -- level acrescentado por reset priceByReset = 10000 -- preço acrescentado por reset -- end config function addReset(cid) resets = getResets(cid) setPlayerStorageValue(cid,1020,resets+1) return true end function getResets(cid) resets = getPlayerStorageValue(cid,1020) if resets < 0 then resets = 0 end return resets end 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 needlvl = minlevel + (getResets(cid) * lvlByReset) local newPrice = price + (getResets(cid) * priceByReset) if msgcontains(msg, 'reset') then selfSay('Voce deseja resetar seu char? Isto custará '..newPrice..' gp\'s!', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < newPrice then selfSay('É Necessario ter '..newPrice..' gp\'s para resetar!', cid) elseif getPlayerLevel(cid) < needlvl then selfSay('O level minimo para reset é '..needlvl..'!', cid) else doPlayerRemoveMoney(cid,newPrice) addReset(cid) playerid = getPlayerGUID(cid) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level`="..newlevel..",`experience`="..newexp.." WHERE `players`.`id`= ".. playerid .."") end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'quant') then selfSay('Voce tem um total de '..getResets(cid)..' reset(s).', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
Fiz aqui e deve ta funcionando. Edite essa parte: stages = 4, lvlByStage = 25 -- script by Marcryzius D'evil. -- function onSay(cid, words, param) config = { level=360, -- level necessario pra reseta. RemainingLvl=8, -- level que ficará depois de ser resetado. exper=4200, -- experiencia que ficará depois de ser resetado. pid=getPlayerGUID(cid), -- não mecha skull="yes", -- players com white skull podem resetar? ("yes" or "no"). redskull="no", -- players com red skull podem resetar? ("yes" or "no"). prot="no", -- players precisam estar em protection zone pra resetar? ("yes" or "no"). bat="yes", --players precisam estar sem fight pra resetarem? ("yes" or "no"). stages = 4, lvlByStage = 25 } function getResets(cid) reset = getPlayerStorageValue(cid,1020) if reset < 0 then reset = 0 end return reset end if(config.skull == "no") and (getCreatureSkullType(cid) == 3) then doPlayerSendTextMessage(cid,22,"apenas players sem white skull podem resetar.") return TRUE end if(config.redskull == "no") and (getCreatureSkullType(cid) == 4) then doPlayerSendTextMessage(cid,22,"apenas player sem red skull podem resetar.") return TRUE end if(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid,22,"você precisa estar em protection zone pra poder resetar.") return TRUE end if(config.bat == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"você precisa estar sem battle pra poder resetar.") return TRUE end local needlvl = config.level + (config.lvlByStage * math.floor(getResets(cid)/config.stages)) if getPlayerLevel(cid) >= needlvl then setPlayerStorageValue(cid,1020,getResets(cid)+1) doPlayerSetNameDescription(cid, " Have a "..getResets(cid)+(1).." reset\'s.") doPlayerPopupFYI(cid,"you now was reset, you have "..getResets(cid)+(1).." reset\'s.") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.executeQuery("UPDATE `players` SET `level` = "..config.RemainingLvl..", `experience` = "..config.exper.." WHERE `id` = "..config.pid) else doPlayerSendCancel(cid, "You need to have level "..config.level.." or more you may be reset.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end return TRUE end
-
[Resolvido] [Action] Roller Coaster System Bug.
tópico respondeu ao Soup de Kydrai em Lixeira Pública
actions/actions.xml <action fromid="7131" toid="7132" script="Roller.lua"/> actions/scripts/Roller.lua Coloque essas Actionids No trem: 1001 e 1002, isso indica a direção para qual o trem começa (não lembro qual é). Nos trilhos: 1001 para diminuir e 1002 para aumentar a velocidade quando o trem passa por cima. ----- Já o reset é no nick mesmo ou descrição? Mostra qual o script do reset que vc ta usando. -
Depende da versão do ot. Aqui o script fica na pasta actions/scripts/other/food.lua. La deve ta algo assim: [2362] = {8, "Crunch."}, [itemid] = {food_que_vai_add, "som"},
-
Deu aquele segundo erro pq não coloquei x=, y=, z=. @duduzz O seu ainda tem uns erros. Assim deve dá: - SCRIPT BY: MARKIIN - function onStepIn(cid, item, pos, frompos) local positions = { {x=68, y=409, z=15}, {x=118, y=409, z=15}, {x=98, y=429, z=15}, {x=68, y=439, z=15}, {x=108, y=439, z=15}, {x=88, y=449, z=15}, {x=78, y=459, z=15}, {x=108, y=459, z=15} } local destino = positions[math.random(#positions)] local demons = { {x=destino.x+1, y=destino.y, z=destino.z}, {x=destino.x-1, y=destino.y, z=destino.z}, {x=destino.x, y=destino.y+1, z=destino.z}, {x=destino.x, y=destino.y-1, z=destino.z}, {x=destino.x+1, y=destino.y+1, z=destino.z}, {x=destino.x+1, y=destino.y-1, z=destino.z}, {x=destino.x-1, y=destino.y+1, z=destino.z}, {x=destino.x-1, y=destino.y-1, z=destino.z} } doTeleportThing(cid, destino, true) for i=1, #demons do doSummonCreature("Demon", demons[i]) end doSendMagicEffect(getPlayerPosition(cid), 10) return TRUE end
-
Pelo que entendi, dll não tem nada a ver com oq vc quer. Vc quer q um servidor possa ser jogado pelo cliente 8.54 e 8.55? Se for isso precisa modificar nas sources do ot, se não souber compilar tenta ve um tutorial ai na área de programação.
-
http://www.xtibia.com/forum/topic/125013-854-the-forgotten-server-036pl1-crying-damson/ Ai tem as dlls, é isso mesmo? A área ta errada msm.
-
Acho que assim da: - SCRIPT BY: MARKIIN - function onStepIn(cid, item, pos, frompos) local positions = { {x=68, y=409, z=15}, {x=118, y=409, z=15}, {x=98, y=429, z=15}, {x=68, y=439, z=15}, {x=108, y=439, z=15}, {x=88, y=449, z=15}, {x=78, y=459, z=15}, {x=108, y=459, z=15} } local destino = positions[math.random(#positions)] doTeleportThing(cid, destino, true) for i=0, 7 do doSummonCreature("Demon", getPosByDir(destino, i)) end doSendMagicEffect(getPlayerPosition(cid), 10) end Se não o: for i=0, 7 do doSummonCreature("Demon", getPosByDir(destino, i)) end Pode ser substituído por: doSummonCreature("Demon", {destino.x+1, destino.y, destino.z}) doSummonCreature("Demon", {destino.x-1, destino.y, destino.z}) doSummonCreature("Demon", {destino.x, destino.y+1, destino.z}) ...
-
Vc ta usando o addEvent de forma errada. function onLogin(cid) if (getPlayerVocation(cid) == 304) or (getPlayerVocation(cid) == 304) then addEvent(onThink2, 0, cid) end return TRUE end function onThink1(cid) if isCreature(cid) then doSendMagicEffect(getCreaturePosition(cid), 1) addEvent(onThink2, 3000, cid) end end function onThink2(cid) if isCreature(cid) then doSendMagicEffect(getCreaturePosition(cid), 1) addEvent(onThink1, 3000, cid) end end
-
Da pra fazer pelas sources, se vc tiver ela e souber compilar, eu posso ajudar.
-
Na linha 6 não existe a variável uid. E os outros é porque a variável summon não está sendo usando corretamente. E a forma como utilizou o "doCreatureAddHealth" não garante que o summon irá ficar com a vida cheia. Tenta assim (eu n testei): function onCastSpell(cid, var) ----Player Status local playerpos = getPlayerPosition(cid) local cloth = getCreatureOutfit(cid) local maxhp = getCreatureMaxHealth(cid) ----Clone do Player local summon = doSummonCreature("Clone", playerpos) doConvinceCreature(cid, summon) setCreatureMaxHealth(summon, maxhp) doCreatureAddHealth(summon, maxhp) doSetCreatureOutfit(summon, cloth, -1) doSendMagicEffect(playerpos, 2) return end
-
Essas variáveis são usadas de acordo com a função. Elas facilitam lembrar o nome ou procurar por elas. E também, dependendo da versão do ot, na maioria das vezes o que varia são os números, já as variáveis são as mesmas.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.