Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 09/11/12 em %
-
Not Drop Loot
DarkSiders e 6 outros reagiu a SkyLigh por um tópico no fórum
Iae galera hoje venho trazer um script que não dropa loot como um aol so que sem precisar usar amuleto e também não e uma bless então vamos la Em data / talkactions / scripts / e renome algum arquivo.lua para loot e adicione function onSay(cid, words, param) local price = 1000 -- dinheiro que vai custa if getPlayerStorageValue(cid,1254) > 0 or not doPlayerRemoveMoney(cid, price) then doPlayerSendTextMessage(cid, 28, "Você, não tem dinheiro suficiente e/ou já tem Anti Drop.") return true end doPlayerSendTextMessage(cid, 27, "Parabéns você comprou Anti Drop, por " .. price .. " gp's") setPlayerStorageValue(cid, 1254, 1) return true end talkactions.xml <talkaction words="!loot" event="script" value="loot.lua"/> data/creaturescripts/scripts renome algum arquivo pra antidrop e adicione function onDeath(cid, deathList) if getPlayerStorageValue(cid, 1254) > 0 then setPlayerStorageValue(cid, 1254, 0) doCreatureSetDropLoot(cid, false) end return true end em creaturescripts.xml <event type="death" name="noDrop" script="antiDrop.lua"/> em login.lua registerCreatureEvent(cid, "noDrop") Créditos Skyligh (Por Criar E Pela Ideia E Postar) Skyforever (Ajudou Em Alguns Erros) gostou ? rep +7 pontos -
@rj157 mano olha minha sing.. ali mostra como usar spoiler... plz edita teu post e bota em spoiler!!! e ta dando esses erros pq tu tem esses npcs no teu mapa mas n tem na pasta npc/ ... ;x2 pontos
-
cara esse negócio de unique id em itens é uma questão complicada, porque esses ids não são estáticos... pode perceber que quando você usa pega o uid de um item, ele retorna um valor, se você depois for pegar uid de outro item, pode retornar esse mesmo valor... o mesmo item, caso você pegue o uid em tempos diferentes, pode retornar uids diferentes. o único jeito de tornar o uid de um item estático é usando a função doItemSetAttribute(item, "uid", xxxx), ou então colocando algum unique id no item pelo map editor... esse número só tem alcance de 1000 até 65536. se você atribuir um unique id a esse item, por exemplo, 1500, em outra script você pode simplesmente fazer "doRemoveItem(1500)" e o server já vai saber qual item você está falando... por isso que numa script desse jeito: local removeItem = getTileItemById(pos, 1285) addEvent(doRemoveItem, 5000, removeItem.uid) é muito provável que dê erro dizendo que o item não foi encontrado ou então remova até algum outro item. quando você usa qualquer função que retorna uma tabela com o uid/itemid/type do item (getTileItemById, getTileThingFromPos, getPlayerSlotItem são exemplos), esse uid é temporário, ele dura alguns milisegundos antes de serem apagados da memória, como quando alguma script é lida tudo é executado quase que instantaneamente, usar uma dessas funções e já manipular esse item na mesma script não é problema, mas quando você mistura com delay (addEvent), você cria um problema... se exatamente na hora do addEvent ocorrer algum outro item for atribuído temporariamente um uid que foi igual ao do item que utilizei addEvent, as ações do addEvent vão ocorrer nesse outro item... a chance de isso acontecer é extremamente pequena, é como se fosse a chance do seu coração parar ao receber algum impacto no meio de uma contração ventricular (uma contração dura aprox. 0,025 segundos, se nesse intervalo a pessoa receber um impacto com força relativamente alta, o coração pode parar de bater) é algo semelhante, entende? no caso, para corrigir essa script, teria que fazer algo assim: local removeItem = getTileItemById(pos, 1285) local function doRemoveMyItem(pos, id) local i = getTileItemById(pos, id).uid if i.uid > 1 then -- sempre essa averiguada para evitar erros no console doRemoveItem(i.uid) end end addEvent(doRemoveMyItem, 5000, pos, 1285) Mesmo que o addEvent aconteça exatamente no mesmo intervalo de tempo que outra script foi executada, um novo uid será atribuído quando a local function for executada nesse tal item, e após a script ser lida esse uid é apagado da memória. Tem que ser dessa forma, vou pegar um mapa que eu tava fazendo como exemplo: Total number of items: 1255569 o mapa tem apenas 10 mb, imagina um mapa que tem 40 mb (tem mapa por aí que tem muito mais que isso), ainda mais um mapa de tibia, que o pessoal fica colocando lixo no chão, vários detalhes etc etc... vai dar uma quantidade absurda de itens, e se fosse pra atribuir um valor estático a cada um desses itens... já deu pra entender ne2 pontos
-
Premium Points In Game
evolutionsky reagiu a Beeki por um tópico no fórum
Fala galerinha do XTibia, vim aqui postar um sistema de Premium Points inGame, que eu achei muito útil, pois eu estava tendo sérios problemas com o Shop System do Modern AAC, ai vai os sistemas. antes de tudo execute esse comando em seu banco de dados. ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0; [/code] [font=tahoma,geneva,sans-serif][color=#ff0000]#[/color][color=#000000]S[/color]istemas[/font] [font=tahoma,geneva,sans-serif]vá em data/libs e crie um novo arquivo com o nome [i]048-ppoints.lua[/i][/font] [i] function getAccountPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doAccountAddPoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doAccountRemovePoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end [/i] vá em data/talkactions/talkactions.xml e adicione as seguintes tags. <!-- Premium Points System --> <talkaction log="yes" words="!getpoints;/getpoints" access="6" event="script" value="GetPoints.lua" /> <talkaction log="yes" words="!addpoints;/addpoints" access="6" event="script" value="AddPoints.lua" /> <talkaction log="yes" words="!removepoints;/removepoints" access="6" event="script" value="RemovePoints.lua" /> <talkaction words="!points" event="script" value="SelfGetPoints.lua" /> vá em data/talkactions/scripts e crie um novo arquivo com o seguinte nome AddPoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end doAccountAddPoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were added to " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/talkactions/script e crie um arquivo com o seguinte nome GetPoints.lua function onSay(cid, words, param, channel) local pid = 0 if(param == '') then pid = getCreatureTarget(cid) if(pid == 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return TRUE end else pid = getPlayerByNameWildcard(param) end if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if isPlayer(pid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has " .. getAccountPoints(cid) .. " premium points.") return TRUE end return TRUE end vá em data/talkactions/script e crie um arquivo com o seguinte nome RemovePoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) local points = getAccountPoints(cid) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end if (points <= 0) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has 0 premium points.") end doAccountRemovePoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were deleted from " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/creaturescripts/scripts e crie um novo arquivo com o nome SelfGetPoints.lua function onLogin(cid) if isPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your Account has " .. getAccountPoints(cid) .. " premium points.") end return TRUE end declare ele no creaturescripts.xml <event type="login" name="GetPoints" event="script" value="getpoints.lua" /> #Scripts aqui está um exemplo de talkaction para mudar o sexo do personagem usando o sistema de points. local config = { costPremiumDays = 2 } function onSay(cid, words, param, channel) if(getPlayerSex(cid) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot change your gender.") return end if(getAccountPoints(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, not enough Premium Points - changing gender costs " .. config.costPremiumDays .. " Premium Points.") doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) return end if(getAccountPoints(cid) >= config.costPremiumDays) then doRemovePoints(cid, -config.costPremiumDays) end local c = { {3, 1, false, 6, 1}, {3, 2, false, 6, 2}, {6, 1, false, 3, 1}, {6, 2, false, 3, 2} } for i = 1, #c do if canPlayerWearOutfitId(cid, c[i][1], c[i][2]) then doPlayerRemoveOutfitId(cid, c[i][1], c[i][2]) c[i][3] = true end end doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your gender and lost " .. config.costPremiumDays .. " days of premium time.") doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_RED) for i = 1, #c do if c[i][3] == true then doPlayerAddOutfitId(cid, c[i][4], c[i][5]) end end return true end Aqui está um npc ( aconselho usar ele para vender seus itens vips ) 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 bootsid = 1455 local bootscost = 15 local ringid = 2145 local ringcost = 5 local bladeid = 12610 local bladecost = 20 local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'vip boots') or msgcontains(msg, 'boots')) then selfSay('Do you want to buy Vip Boots fo '.. bootscost ..' premium points?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(getAccountPoints(cid) >= bootscost) then if(doAccountRemovePoints(cid, bootscost) == TRUE) then doPlayerAddItem(cid, bootsid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end else selfSay('Sorry, you don\'t have the item.', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'blade of corruption') or msgcontains(msg, 'blade')) then selfSay('Do you want to buy blade of corruption for '.. bladecost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= bladecost) then if(doAccountRemovePoints(cid, bladecost) == TRUE) then doPlayerAddItem(cid, bladeid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough points!.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'expring') or msgcontains(msg, 'ring')) then selfSay('Do you want to buy exp ring for '.. ringcost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= ringcost) then if(doAccountRemovePoints(cid, ringcost) == TRUE) then doPlayerAddItem(cid, ringid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Donator" script="donator.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="131" head="19" body="19" legs="19" feet="19"/> <interaction range="3" idletime="60"> <interact keywords="hi" focus="1"> <keywords>hello</keywords> <response text="Hey there, I sell items only to Donators! To Donate check website or ask Server Staff."> <action name="idle" value="1"/> </response> </interact> <interact keywords="bye" focus="0"> <keywords>farewell</keywords> <response text="Good bye."/> </interact> </interaction> </npc> script made by Vodkart npc por trade say 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 -- ["nome do item"] = {Qntos pontos vao custar, id do item} local t = { ["boots of haste"] = {15, 2195}, -- ["demon helmet"] = {25, 2493}, ["frozen starlight"] = {30, 2361}, ["royal crossbow"] = {20, 8851}, ["solar axe"] = {30, 8925}, ["soft boots"] = {50, 2640}, ["demon armor"] = {100, 2494}, ["firewalker boots"] = {50, 9932}, ["magic plate armor"] = {70, 2472}, ["flame blade"] = {100, 8931} } if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then local str = "" str = str .. "Eu vendo estes items: " for name, pos in pairs(t) do str = str.." {"..name.."} = "..pos[1].." Points/" end str = str .. "." npcHandler:say(str, cid) elseif t[msg] then if (doAccountRemovePoints(cid, t[msg][1]) == TRUE) then doPlayerAddItem(cid,t[msg][2],1) npcHandler:say("Aqui está seu ".. getItemNameById(t[msg][2]) .."!", cid) else npcHandler:say("você não tem "..t[msg][1].." Points", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc por trade 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 shopWindow = {} local t = { [2195] = {price = 15}, [2493] = {price = 25}, [2361] = {price = 30}, [8851] = {price = 20}, [8925] = {price = 30}, [2640] = {price = 50}, [2494] = {price = 100}, [9932] = {price = 50}, [2472] = {price = 70}, [8931] = {price = 48} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getAccountPoints(cid) < t[item].price then selfSay("You dont have "..t[item].price.." points", cid) else doPlayerAddItem(cid, item) doAccountRemovePoints(cid, t[item].price) selfSay("Here is you item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) é só isso! créditos: LucasOlzon Beeki XTibia Vodkart @Edit adicionado scripts by Vodkart.1 ponto -
[Original]Global Compacto Completo 8.60 [I'm Back](Links Atualizados)
rolissobomb reagiu a soldoran por um tópico no fórum
1 ponto -
House Clean
VictorWEBMaster reagiu a Vodkart por um tópico no fórum
Descrição: É para deletar house de players inativos, ou seja, o player que não loga em "X" dias perde a sua house! houseclean.lua function onTimer() local days = 15*24*60*60 doSaveServer() local query = db.getResult("SELECT `owner`,`id` FROM `houses`;") if (query:getID() ~= -1) then while true do local own,houseid = query:getDataInt("owner"),query:getDataInt("id") local qry = db.getResult("SELECT `lastlogin` FROM `players` WHERE `id` = "..own) if(qry:getID() ~= -1) then last = tonumber(qry:getDataInt("lastlogin")) if last < os.time() - days then setHouseOwner(houseid, NO_OWNER_PHRASE,true) end end if not(query:next()) then break end end query:free() end return true end globalevents.xml <globalevent name="HouseClean" time="03:00" event="script" value="houseclean.lua"/> na tag está para executar o script as 3 da manhã se quiser alterar só mudar essa parte: time="03:00" para configurar os dias que o player que não logar em "X" dias É aqui: local days = 15*24*60*60 no caso está para o jogador que não logar em 15 dias perder a house.</globalevent>1 ponto -
Beleza galera,estou aqui postando a nova versão Subwat Kamikaze V23.Agora com muitas coisas novas! ATUALIZAÇÔES SUBWAT KAMIKAZE V23 Novas houses com o teleport no templo. Novas hunts com o telport no templo. Novos monsters. Retirado alguns bugs. Reformado os lugares dos itens no templo. Retirado todo o gelo. Colocado grama na city principal e com mais natureza. Novo piso na área de eventos. Novo piso na Super Vip. Reformado o piso do templo. Novas spells IMAGENS TEMPLO SUPER VIP TELEPORTS NOVOS TELEPORTS DOWNLOAD SEM ERRO: http://www.4shared.com/rar/cfUYHBJD/Subwat_Kamikaze_V23_3.html? SCAN:https://www.virustot...sis/1346091759/ Intão é isso galera,comentem com o que voces acharam,e sempre estou trazedo atualizações!Obrigado,de um rep se puder.Flw.1 ponto
-
Olá olá galere do Ékz. Eu, na necessidade de treinar scripting, fico pensando no que fazer. Pesquisando scripts em lugares, vi um que comprava EXP, mas é daqueles simples que ninguém acha graça que é tipo: Fulano: !buyexp Fulano ganhou 15k de XP. Pesquisei e não achei nenhum mais legal. Então eu fiz um que compra Exp por cada ponto. Exemplo, se você configurar pra cada Exp point ser 2 gold coins, se eu comprar 20, pagarei 40 gold coins. Compreenderam? Vamos ao script. talkactions.xml: <talkaction words="!buyexp" event="script" value="buyexp.lua"/> buyexp.lua: Exemplo: Fulano: !buyexp 100 Você comprou 100 pontos de experiência por 100 gold coins. Obrigado1 ponto
-
Spell "bushido"
marciks reagiu a lovenina12 por um tópico no fórum
Faaala galera so eu dnv, agora vim postar uma magia do antigo Mutacao OTServer, nao podemos deixar o seu legado ficar morto ne? la vai: a magia agora e a antiga magia dos donation "bushido" va na pasta data/spells/scripts/attack copie um arquivo .lua e renomeie para bushido dentro dele bota isso aqui: feche salve. volte a pasta data/spells e abra o arquivo spells.xml caso teja tudo embarassado e junto apenas abra com WordPad la nas "instants" abre um espaco e coloca issake: <instant name="japonese spelling" words="bushido" lvl="120000" mana="100000" range="1" exhaustion="1000" needlearn="0" event="script" value="attack/bushido.lua"> <vocation id="9"/> <vocation id="10"/> <vocation id="11"/> <vocation id="12"/> </instant> Obs:Essa linha e pra caso tenha as novas vocation do mutacao e tbm seja pra HIGH EXP, caso seu server nao tenha vocation nova e seja de xp media deixe assim: <instant name="japonese spelling" words="bushido" lvl="800" mana="800" range="1" exhaustion="1000" needlearn="0" event="script" value="attack/bushido.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> pronto, a magia esta completa e esta PERFEITAMENTE igual a bushido do mutacao. Creditos: 30%: Eu, por postar e arrumar uns detalhe. 70%: Nipz, por me dar o mapa Elfen War que ajudo bagarai. Brigado pela atencao.1 ponto -
Na maioria das vezes, sempre que você vai abrir um mapa novo, a versão dele não é a que você geralmente usa e você tem de redirecionar pelo seu RME.. Então para que você não tenha de ficar toda hora selecionando a versão do patch para abrir o mapa basta você já pré-configurar seu RME, para que ele leia a versão do mapa automaticamente e já abra para você o mesmo. Mas como fazer isto?? Bom é fácil, mas para evitar que você se perca eu fiz o tutorial por foto, caso você não entendeu algo pergunte, se gostou +rep!1 ponto
-
Ola Xtibianos venho aqui para pedir um logo/assinatura para meu server de Poketibia. Quero e que nas assinaturas tenha uma: Universe Pokémon.... Na outra Upoke Download... REP+1 ponto
-
[Coletânea] Super Coletânea ~ Scripts #1
Vitorzinhu reagiu a Newtonnotwen por um tópico no fórum
>>>>>>>>>> SUPER COLETÂNEA ~ Scripts #1 <<<<<<<<<< Está é minha primeira coletânea que reúne todos meus scripts postados nessa areá. Vale a pena conferir!!! Todas foram testadas em TSF 8.6. Spells (Naruto): [Tsukuyomi] 1.0 á 3.0 ~ Sugestões são bem vindas (postar nesse tópico) Tsukuyomi 1.0: Confira na integrá!!! Tsukuyomi 2.0: Confira na integrá!!! Tsukuyomi 3.0: Confira na integrá!!! [Jiraya Prision - Frog] ~ Sugestões são bem vindas (postar nesse tópico) Jiraya Prision - Frog: Confira na integrá!!! [sakura Spirit] ~ Sugestões são bem vindas (postar nesse tópico) Sakura Spirit: Confira na integrá!!! [Juuken] ~ Sugestões são bem vindas (postar nesse tópico) Juuken: Confira na integrá!!! [Chidori And Rasengan] ~ Sugestões são bem vindas (postar nesse tópico) Chidori And Rasengan: Confira na integrá!!! Spells (geral): [battery Power] ~ Sugestões são bem vindas (postar nesse tópico) Battery Power: Confira na integrá!!! [Meteor Spell] ~ Sugestões são bem vindas (postar nesse tópico) Meteor Spell: Confira na integrá!!! [summoning Ultimate Boss] ~ Sugestões são bem vindas (postar nesse tópico) Summoning Ultimate Boss: Confira na integrá!!! Spells (geral (Não é de minha autoria)): [summon Diferente] ~ Sugestões são bem vindas (postar nesse tópico) Summon Diferente: Confira na integrá!!! [summon Diferente] ~ Sugestões são bem vindas (postar nesse tópico) Spells (Runas): [Runas De Holy E Fire] ~ Sugestões são bem vindas (postar nesse tópico) Runas De Holy E Fire: Confira na integrá!!! Creatureevents (Não é de minha autoria): [Ganhe Item Ao Upar] ~ Sugestões são bem vindas (postar nesse tópico) Ganhe Item Ao Upar: Confira na integrá!!! É isso galera, obrigado pela presença e até a próxima, tentarei atualizar aqui ao máximo. Gostaria que comenta-sem, o que acharam dos scripts, se gostaram ou não, se tem alguma sugestão, dúvida, critica ou elogio postem aqui. Fico a espera, flws galera. Obs: Os créditos dos scripts se encontram na integrá de cada.1 ponto -
O server contem as mesmas funções do X-Dream WAR 8.5, sendo elas: ' War com duas team. Azul e Vermelho ' Vocações do X-Dream, Master Sorcerer, Elder Druid, Warlock, Hero, Berserker, Hunter e Sharpshooter ' Troca de mapa a cada 20 minutos ' Citys, Thais, Edron, Fibula, Venore e outras do X-Dream ' Npc espalhados pelo mapa para cada vocação, inclusive Npc Buff ' E tem varias outras funções do X-Dream War. Foi Adicionado novos itens ,tb treiner e muito mais confira Senha do Adm: (god/god) Download: 4shared Scanner: Scan # Creditos: Adriano Flock1 ponto
-
a function onTime() ou onTimer() foi removida dps da versão 8.7+ usa assim o script: function onThink(interval, lastExecution) if tostring(os.date("%X")):sub(1, 5) == "19:00" then doSetStorage(ZE_STATUS, 34370) end return true end e a tag usa assim: <globalevent name="ZombiStart" interval="60" event="script" value="zombie/startevent.lua"/> obs: se o seu OT for em milesegundos muda 60 para 60000 vlw1 ponto
-
Retirando Fast Attack De Runas E Diminuindo Os Hits
ewertonsilva157 reagiu a Newtonnotwen por uma questão
Edita aqui a formula: setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -50, -1, -80, 5, 35, 33, 7) Quando menor o numero menos vai bater, maior mais vai bater, ajuste conforme seu gosto. Aqui é a "Curse" (maldição): addDamageCondition(condition, 1, 500, 700, 1200 -60) Deve ser algo que fique tirando life com o tempo, segue o mesmo raciocínio, menor o numero menos bati e vice-versa.1 ponto -
Ótimo, vai ajudar os players que querem criar um servidor de WAR organizado. Espero que não tenha BUG's. PS: Não gosto muito de vocações editadas. Rep + por trazer o conteudo para o XTibia1 ponto
-
Npc De Missao Diferente
TeteuziiN reagiu a Newtonnotwen por uma questão
http://www.xtibia.com/forum/topic/151636-simple-task-30/1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
LLossavaro reagiu a Slicer por um tópico no fórum
@PkNfan if getPlayerStorageValue(cid, 198234, 1) then o certo eh if getPlayerStorageValue(cid, 198234) == 1 then eh o setPlayerStorageValue(cid, sto, newvalue) q usa o '1' ali no final ^^1 ponto -
@off eh definitivamente sei la pq mais o talkState n ta funcionando ;/ butt.. arrumei os npcs aki.. npc/scripts/Giovanni.lua npc/scripts/Officer Jenny.lua @Stigal esse topico foi aberto em jan, e tem 553 paginas de quase puro flood... pode ficar tranquilo q se n fecharam ate agora, n fecham mais por flood kkk1 ponto
-
Iae galera !! hoje trago um script muito interessante adicionar premium por action ao dar use num item e comprar o item por 1 buyitem então vamos la va em data / talkactions / scripts / e ponha o nome de algum arquivo para premium e ponha isto la dentro function onSay(cid, words, param) local itens = { ["santa doll"] = {id = 6567, preco = 2000, count = 1 }, ["teddy bear"] = {id = 6568, preco = 1000, count = 1 }, ["jester doll"] = {id = 9663, preco = 500, count = 1 } } local param = string.lower(param) if (param == "lista") then local str = "" str = str .. "itens :\n\n" for name, preco in pairs(itens) do str = str..name.."\n" end str = str .. "" doShowTextDialog(cid, 7529, str) return TRUE end if not itens[param] or param == "" or not param then return doPlayerSendCancel(cid,"Desculpe esse item nao existe") end if itens[param] and doPlayerRemoveMoney(cid,itens[param].preco) then doPlayerAddItem(cid,itens[param].id,itens[param].count) doPlayerSendTextMessage(cid,27,"Parabéns Vc comprou 1 item") end return TRUE end <talkaction words="!buy" event="script" value="itens.lua"/> dps em data / actions / scripts / ponha o nome de algum arquivo de premium e adicionar isto la dentro --((Script By Skylight Xtibia.com))-- function onUse(cid, item) if doRemoveItem(item.uid, 1) then end if item.itemid == 6567 then doPlayerAddPremiumDays(cid, 30) doPlayerSendTextMessage(cid, 22, "Parabéns Você Recebeu 30 dias de premium") return true end if item.itemid == 6568 then doPlayerAddPremiumDays(cid, 30) doPlayerSendTextMessage(cid, 22, "Parabéns Você Recebeu 15 dias de premium") return true end if item.itemid == 9693 then doPlayerAddPremiumDays(cid, 30) doPlayerSendTextMessage(cid, 22, "Parabéns Você Recebeu 10 dias de premium") end return true end dps em actions.xml <action itemid="6567" script="premium.lua"/> <action itemid="6568" script="premium.lua"/> <action itemid="9693" script="premium.lua"/> Então e so isso espero que gostem e se puder nao custara 1 rep + Créditos TnTSlin 30 %(Pelo script do buy) SkyLigh 70 % (Pelo Script Do Action E A Ideia E Adicionar A Lista no script do buy)1 ponto
-
Duvida "docreatetile"
eduardo190696 reagiu a brun123 por uma questão
Só lembrando que uma área 10x10 não tem centro... dá pra fazer em 3 linhas de código o que você quer, usando for, exemplo: for x = -5, 5 do for y = -5, 5 do local p = getThingPos(cid) p.x = p.x + x p.y = p.y + y doCreateTile(CONSTRUCTIONS[item.itemid], p) end end Esse código vai criar uma área 11x11 sendo a posição do player o centro1 ponto -
Aqui: Detalhes: 1 - Achei que você quisesse que ao falar yes, o player fosse teleportado para uma certa posição (POS_INICIAL no caso) e aí sim começasse a andar, se não quiser isso, basta remover essa linha: doTeleportThing(cid, config.POS_INICIAL, false) 2 - O POS_FINAL é só se a ROTA_AUTOMATICA estiver true, o player fica andando até alcançar a POS_FINAL e aí ele para de andar. 3 - Se você determinar a ROTA_POR_DIRECTIONS e colocar ROTA_AUTOMATICA como false, ele vai seguir a ROTA_POR_DIRECTION até chegar na última direction especificada e para de andar novamente. No caso: {NORTH, NORTH, EAST, NORTH, EAST}, o player vai andar 1 sqm pro NORTE, depois mais 1 pro NORTE, aí 1 pro LESTE, aí um pro NORTE de novo e outro pro LESTE e vai finalizar a viagem. 4 - adicionado a condição infight pro player não dar logout, adicionado também as configurações ITEM_REMOVIDO e ITEM_COUNT pra configurar um item a ser removido pra poder viajar, e sua quantidade também. As direções são: NORTH /\ (norte, pra cima) EAST > (leste, pra direita) SOUTH \/ (sul, pra baixo) WEST < (oeste, para esquerda) SOUTHWEST (diagonal para baixo/esquerda) SOUTHEAST (diagonal para baixo/direita) NORTHWEST (diagonal para cima/esquerda) NORTHEAST (diagonal para cima/direita) você deve usar as palavras grifadas para completar a tabela de direções, ou então você usa números, sendo: 0 = norte 1 = leste 2 = sul 3 = oeste 4 = sudoeste 5 = sudeste 6 = noroeste 7 = nordeste1 ponto
-
[Sugestão] Ideias, Valorize-As!
Piabeta Kun reagiu a Demonbholder por um tópico no fórum
Não vejo muita diferença entre ideia e um pedido. Se alguém tiver uma ideia nova, este vai pedir na seção de pedidos.1 ponto -
Como Criar Ip Fixo
Yan Oliveira reagiu a rotiicaro por uma questão
olha esse video Link do site: http://www.no-ip.com/ pra cria o ip fixo ajudei ?rep + n custa nada1 ponto -
[Encerrado] [Pokemon] Dúvidas? - Pda
AsMinaPira reagiu a Slicer por um tópico no fórum
@jacksondemais mano o player q perde toda DC pq n tem como 'remover' a party de dois players... soh se um deslogar, ou eles clicarem em Leave Party... e se tu baixar a nova atualizaçao, o duel por party vai 'sumir' ficando soh o por Order... e o Party vai voltar a ser Party, divisao de exp e drop... '-'1 ponto -
Mudar Samples Gesior.
nickissonlobo reagiu a Piabeta Kun por um tópico no fórum
já respondi tudo nesse topico, leia e siga! http://www.xtibia.com/forum/topic/193728-duvida-sobre-vocacoes-novas-no-geisorajuda-please/1 ponto -
Tempo Nesse Script
Demonbholder reagiu a brun123 por uma questão
só mudar: local time = 3 para local time = 3.25 SkyLigh, sua script vai dar um erro porque você deletou a declaração da variável "time" e usou ela no addEvent, vai dar erros. Ele não quer exaust, ele quer mudar o tempo que leva pro player ser teletransportado (com fins de ser removido de algum lugar). O seu script pode causar erros indesejados no console do server, caso o player morra ou dê logout antes do tempo ter passado. Pode ser usadado abusivamente também, caso o player fique pisando várias e várias vezes no mesmo tile onde a ação é executada, você vai criar uma série de addEvents que estão programados para ocorrer, aí se o player logar, todos esses addEvents vão dar erro e vai chover erro no server, pode até travar o servidor por algum tempo. Se vários players fizerem isso ao mesmo tempo, é capaz de criar um freeze tão grande que todos os players do server serão kickados ou pior, o server dá crash, meio improvável mas pode acontecer... Pra evitar abusos/erros, basta utilizar essa script corrigida: local time = 3.25 -- tempo em minutos para o player ser expulso local newpos = {x=125,y=47,z=7} -- local para onde o player será teleportado local events = {} -- não modifique local function doKickPlayer(cid) if not isCreature(cid) then events[cid] = nil return end doTeleportThing(cid, newpos, false) doSendMagicEffect(newpos, 10) end function onStepIn(cid, item, position, fromPosition) if events[cid] then stopEvent(events[cid]) end events[cid] = addEvent(doKickPlayer, time * 60 * 1000, cid) return true end1 ponto -
tem sim, basta mudar pro player ganhar 2 hp por level no vocations.xml e 0 de mana por level... aí você cria um script chamado levelup.lua em data/creaturescripts/scripts e coloca isso dentro: function onAdvance(cid, skill, oldLevel, newLevel) if skill == 8 and newLevel % 3 == 0 then setCreatureMaxMana(cid, getCreatureMaxMana(cid) + 1) end return true end Aí você coloca essa tag no seu creature scripts: <event type="advance" name="IncreaseManaOnLevelUp" event="script" value="levelup.lua"/> agora abra seu login.lua (data/creaturescripts/scripts) e adicione essa linha: registerCreatureEvent(cid, "IncreaseManaOnLevelUp") é só adicionar embaixo das outras vezes que essa função foi utilizada (registerCreatureEvent) Só um detalhe: Essa script faz com que o player ao atiginr level 3, 6, 9, 12, 15... 30... 60... ganha mais 1 de mana (máximo), ou seja, se o player começar no level 8, ao chegar no level 9 ele já ganha a mana extra... se quiser fazer com que o player ganhe a mana nos leveis 11, 14, 17, 20, 23... você tem que modificar essa linha do script: if skill == 8 and newLevel % 3 == 0 then por essa: if skill == 8 and (newLevel + 1) % 3 == 0 then Agora se o player começar no level 1, ele vai ganhar mana no level 3, ou seja, após upar 2 leveis, e só depois começa a ganhar de 3 em 3 leveis, se quiser que ele ganhe apenas no level 4, depois no 7, aí 10, 13, 16 etc... é só modificar aquela mesma linha por essa: if skill == 8 and (newLevel - 1) % 3 == 0 then qualquer dúvida só perguntar1 ponto
-
[Talkaction] Criar Item Em Areá
Newtonnotwen reagiu a brun123 por uma questão
Por isso ele falou que pode te ajudar... Esse tópico pega todas as posições de uma area e lança efeito em cada uma dessas posições. Se você substituir a função doSendMagicEffect por doCreateItem... acho que já entendeu1 ponto -
Npc Que Dá Item E Script De Tile
JulioNakanishi reagiu a brun123 por uma questão
Basta substituir essa linha (1ª): function onStepIn(cid, item, fromPosition) por essa: function onStepIn(cid, item, position, fromPosition)1 ponto -
Fazer Um Item Normal Virar Um Item Múltiplos
Demonbholder reagiu a notle2012 por um tópico no fórum
sim e tibia.spr também mais o mais importante é items.otb do seu ot pq tibia.spr e tibia.dat pode ate usa outros quando meu poketibia tava bugado eu fazia isso pra editar ele mais já editei1 ponto -
vo te explicar va em /data/lib/050-function.lua adicione function doSendAnimatedText(pos, value, color, player) if(not tonumber(value))then return error("arg #2 in doSendAnimatedText is not a number") end if(isPlayer(player))then doPlayerSendTextMessage(player, MESSAGE_EXPERIENCE, "", pos, value, color) else for _, v in ipairs(getSpectators(pos, 7, 5, true)) do if(isPlayer(v))then doPlayerSendTextMessage(v, MESSAGE_EXPERIENCE, "", pos, value, color) end end end end Créditos Spawn do vapus pronto assim agr o script vai funcionar1 ponto
-
Olá Gostaria De Pedir Um Logotipo Para Meu Serve De Pokemon, Estou Precizando Muito E Vou Te Fala Tentei Fazer Mais Ficou um C*, Gostaria De Pedir a VocÊs aki Valendo REP +, Gostaria De Uma Imagem Para o Cliente Tbm: Nome do serve: Univero Pokemon Slogam: Onde Seu Mundo Pokemon Vira Realidade@@@1 ponto
-
Obrigado A Todos Pelos os elogios.1 ponto
-
[Pokemon] Pda By Slicer 1.9/2.9
notFoxTro reagiu a zerefshirou por um tópico no fórum
Ninguem comentou maldade, só acho que devia arrumar a ortografia e etc...1 ponto -
Quero deixar bem claro que o script do npc não é meu é de outro fórum e todos os créditos vão para Gesior. Em config.lua verifique a linha Deixe "yes" Crie um arquivo com nome bank.xml em \data\npc e cole isto: <?xml version="1.0" encoding="UTF-8"?> <npc name="Bank" script="data/npc/scripts/bank.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> </npc> Agora crie um em bloco de notas com nome bank em \data\npc\scripts e adicione este codigo: function getCount(msg) local ret = -1 local b, e = string.find(msg, "%d+") if b ~= nil and e ~= nil then ret = tonumber(string.sub(msg, b, e)) end return ret end function msgcontains(message, keyword) local a, b = string.find(message, keyword) if a == nil or b == nil then return false end return true end function addCoin(cid, itemid, count) if count > 100 then while(count > 100) do cash = doCreateItemEx(itemid, 100) doPlayerAddItemEx(cid, cash, 1) count = count - 100 end end if count > 0 then cash = doCreateItemEx(itemid, count) doPlayerAddItemEx(cid, cash, 1) end end function doPlayerExist(name) local result = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(name)) if (result:getID() ~= -1) then local return_name = result:getDataString("name") result:free() return return_name end return 0 end GOLD_COIN = 2148 PLATINUM_COIN = 2152 CRYSTAL_COIN = 2160 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) talk_state[cid] = 0 npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end npcHandler:setMessage(MESSAGE_GREET, "Greetings |PLAYERNAME|. I'm banker.") talk_state = {} last_count = {} last_name = {} function creatureSayCallback(cid, type, msg) orginal_msg = msg msg = string.lower(msg) if(not npcHandler:isFocused(cid)) then talk_state[cid] = 0 return false end if talk_state[cid] == nil then talk_state[cid] = 0 last_count[cid] = 0 last_name[cid] = "" end -- select action if msgcontains(msg, 'change') and talk_state[cid] ~= 41 then talk_state[cid] = 10 npcHandler:say('We exchange gold, platinum and crystal coins.', cid) elseif msgcontains(msg, 'balance') and talk_state[cid] ~= 41 then talk_state[cid] = 0 local balance = getPlayerBalance(cid) if balance == 0 then npcHandler:say('Your bank account is empty.', cid) elseif balance <= 100000 then npcHandler:say('Your account balance is ' .. balance .. ' gold coins.', cid) elseif balance <= 1000000 then npcHandler:say('Your account balance is ' .. balance .. ' gold coins.', cid) else npcHandler:say('Your account balance is ' .. balance .. ' gold coins.', cid) end elseif msgcontains(msg, 'deposit') and talk_state[cid] ~= 41 then talk_state[cid] = 20 npcHandler:say('How much gold you would like to deposit?', cid) elseif msgcontains(msg, 'withdraw') and talk_state[cid] ~= 41 then talk_state[cid] = 30 npcHandler:say('How much gold you would like to withdraw?', cid) elseif msgcontains(msg, 'transfer') and talk_state[cid] ~= 41 then talk_state[cid] = 40 npcHandler:say('How much gold you would like to transfer?', cid) end -- change if talk_state[cid] == 10 then if msgcontains(msg, 'platinum') then talk_state[cid] = 12 npcHandler:say('Do you want to change your platinum coins to gold or crystal?', cid) elseif msgcontains(msg, 'gold') then talk_state[cid] = 11 npcHandler:say('How many platinum coins do you want to get?', cid) elseif msgcontains(msg, 'crystal') then talk_state[cid] = 13 npcHandler:say('How many crystal coins do you want to change to platinum?', cid) end end if talk_state[cid] >= 11 and talk_state[cid] <= 13 then if talk_state[cid] == 11 and getCount(msg) > 0 then talk_state[cid] = 14 last_count[cid] = getCount(msg) npcHandler:say('So I should change ' .. getCount(msg) * 100 .. ' of your gold coins to ' .. getCount(msg) .. ' platinum coins for you?', cid) elseif talk_state[cid] == 12 then if msgcontains(msg, 'gold') then talk_state[cid] = 15 npcHandler:say('How many platinum coins do you want to change to gold?', cid) elseif msgcontains(msg, 'crystal') then talk_state[cid] = 16 npcHandler:say('How many crystal coins do you want to get?', cid) end elseif talk_state[cid] == 13 and getCount(msg) > 0 then talk_state[cid] = 17 last_count[cid] = getCount(msg) npcHandler:say('So I should change ' .. getCount(msg) .. ' of your crystal coins to ' .. getCount(msg)*100 .. ' platinum coins for you?', cid) end end if talk_state[cid] >= 14 and talk_state[cid] <= 17 then if talk_state[cid] == 14 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then if math.floor(getPlayerItemCount(cid, GOLD_COIN) / 100) >= last_count[cid] then doPlayerRemoveItem(cid, GOLD_COIN, last_count[cid] * 100) addCoin(cid, PLATINUM_COIN, last_count[cid]) npcHandler:say('Here you are.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] * 100 .. ' gold coins.', cid) end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 elseif talk_state[cid] == 15 and getCount(msg) > 0 then talk_state[cid] = 18 last_count[cid] = getCount(msg) npcHandler:say('So I should change ' .. getCount(msg) .. ' of your platinum coins to ' .. getCount(msg) * 100 .. ' gold coins for you?', cid) elseif talk_state[cid] == 16 and getCount(msg) > 0 then talk_state[cid] = 19 last_count[cid] = getCount(msg) npcHandler:say('So I should change ' .. getCount(msg) * 100 .. ' of your platinum coins to ' .. getCount(msg) .. ' crystal coins for you?', cid) elseif talk_state[cid] == 17 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then if getPlayerItemCount(cid, CRYSTAL_COIN) >= last_count[cid] then doPlayerRemoveItem(cid, CRYSTAL_COIN, last_count[cid]) addCoin(cid, PLATINUM_COIN, last_count[cid] * 100) npcHandler:say('Here you are.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] .. ' crystal coins.', cid) end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 end end if talk_state[cid] >= 18 and talk_state[cid] <= 19 then if talk_state[cid] == 18 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then print(2) if getPlayerItemCount(cid, PLATINUM_COIN) >= last_count[cid] then doPlayerRemoveItem(cid, PLATINUM_COIN, last_count[cid]) addCoin(cid, GOLD_COIN, last_count[cid] * 100) npcHandler:say('Here you are.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] .. ' platinum coins.', cid) end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 elseif talk_state[cid] == 19 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then if math.floor(getPlayerItemCount(cid, PLATINUM_COIN) / 100) >= last_count[cid] then doPlayerRemoveItem(cid, PLATINUM_COIN, last_count[cid] * 100) addCoin(cid, CRYSTAL_COIN, last_count[cid]) npcHandler:say('Here you are.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] * 100 .. ' platinum coins.', cid) end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 end end --deposit if talk_state[cid] == 20 and getCount(msg) > 0 then talk_state[cid] = 21 last_count[cid] = getCount(msg) npcHandler:say('Would you really like to deposit ' .. last_count[cid] .. ' gold coins?', cid) elseif talk_state[cid] == 20 and msgcontains(msg, 'all') then if getPlayerMoney(cid) <= 0 then talk_state[cid] = 0 npcHandler:say('You don\'t have any money.', cid) else talk_state[cid] = 21 last_count[cid] = getPlayerMoney(cid) npcHandler:say('Would you really like to deposit your all money, ' .. last_count[cid] .. ' gold coins?', cid) end elseif talk_state[cid] == 21 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then if doPlayerDepositMoney(cid, last_count[cid]) == TRUE then npcHandler:say('You deposited ' .. last_count[cid] .. ' gold coins. Now your account balance is ' .. getPlayerBalance(cid) .. ' gold coins.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] .. ' gold coins.', cid) end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 end --withdraw if talk_state[cid] == 30 and getCount(msg) > 0 then talk_state[cid] = 31 last_count[cid] = getCount(msg) npcHandler:say('Would you really like to withdraw ' .. last_count[cid] .. ' gold coins?', cid) elseif talk_state[cid] == 30 and msgcontains(msg, 'all') then talk_state[cid] = 31 last_count[cid] = getPlayerBalance(cid) npcHandler:say('Would you really like to withdraw your all money, ' .. last_count[cid] .. ' gold coins?', cid) elseif talk_state[cid] == 31 and getCount(msg) <= 0 then if msgcontains(msg, 'yes') then if doPlayerWithdrawMoney(cid, last_count[cid]) == TRUE then npcHandler:say('You withdrawed ' .. last_count[cid] .. ' gold coins. Now your account balance is ' .. getPlayerBalance(cid) .. ' gold coins.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] .. ' gold coins on your account. You account balance is ' .. getPlayerBalance(cid) .. '.', cid) end talk_state[cid] = 0 else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 end -- transfer if talk_state[cid] == 40 and getCount(msg) > 0 then if getPlayerBalance(cid) >= getCount(msg) then talk_state[cid] = 41 last_count[cid] = getCount(msg) npcHandler:say('To who would you like transfer ' .. last_count[cid] .. ' gold coins from your account? Tell me his or her name.', cid) else talk_state[cid] = 0 npcHandler:say('You don\'t have ' .. getCount(msg) .. ' gold coins on your account.', cid) end elseif talk_state[cid] == 41 then local toPlayer = doPlayerExist(msg) if toPlayer ~= 0 then last_name[cid] = toPlayer talk_state[cid] = 42 npcHandler:say('So you would like to transfer ' .. last_count[cid] .. ' gold coins to ' .. last_name[cid] .. '?', cid) else talk_state[cid] = 0 npcHandler:say('I don\'t know player with name ' .. orginal_msg .. '.', cid) end elseif talk_state[cid] == 42 then if msgcontains(msg, 'yes') then if doPlayerTransferMoneyTo(cid, last_name[cid], last_count[cid]) == TRUE then npcHandler:say('You have transfered ' .. last_count[cid] .. ' gold coins to bank account of player ' .. last_name[cid] .. '. Now your account balance is ' .. getPlayerBalance(cid) .. '.', cid) else npcHandler:say('You don\'t have ' .. last_count[cid] .. ' gold coins on your bank account or player with name ' .. last_name[cid] .. ' doesn\'t exist. Money not transfered.', cid) last_name[cid] = "" end else npcHandler:say('Well, can I help you with something else?', cid) end talk_state[cid] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Exemplo de conversa com o npc: Só funciona bem em TFS 0.3b2+ Faça bom uso.1 ponto
-
Como Criar Teleport!
hummberM reagiu a brunohenriq por um tópico no fórum
aff ja vi esse topic.. vc copio dos kara -.- //Malla1 ponto