Postado Março 8, 2012 13 anos Eu criei um sistema assim... Você precisará criar uma Sala para o NPC, nesta sala só entrará quem tiver o cartão de débito (um item id em sua backpack)... 1º Passo' Vamos criar o NPC' 1º Passo Vá na pasta "Data / NPC", crie um arquivo com o nome de "Banker.xml", abra o arquivo criado e cole isto dentro. Obs: O nome do arquivo pode ser o que desejar, só o que está em azul, ou seja, a extensão, que não pode ser alterada' <?xml version="1.0" encoding="UTF-8"?> <npc name="Banker" script="bank.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. Eu sou seu banqueiro por aqui!"/> </parameters> </npc> 2º Passo Dentro da pasta "Scripts", crie um arquivo chamado "bank.lua" e dentro do mesmo cole o código abaixo: 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 if(msgcontains(msg, 'bank') or msgcontains(msg, 'help')) then selfSay('Ola amigo oque deseja fazer? {deposit} ou {depositar} para depositar, {withdraw} ou {sacar} para sacar dinheiro ou {balance} para ver seu saldo!', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'balance') or msgcontains(msg, 'BALANCE') and talkState[talkUser] == 1 then local balance = getPlayerBalance(cid) selfSay('Voce possui ' .. balance .. ' gps no banco', cid) elseif msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar') and talkState[talkUser] == 1 then selfSay('Digite o valor que voce deseja depositar.', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then n = getNumber(msg) if(msg == 'all' and doPlayerDepositAllMoney(cid)) then selfSay('Depositado com sucesso!', cid) talkState[talkUser] = 1 end if n <= 0 then selfSay('escolha um valor acima de 0!', cid) talkState[talkUser] = 1 end if n and doPlayerDepositMoney(cid, n) then selfSay('Depositado com sucesso!', cid) talkState[talkUser] = 1 else selfSay('Voce nao tem o valor informado', cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar') and talkState[talkUser] == 1 then selfSay('Digite o valor que voce deseja retirar.', cid) talkState[talkUser] = 3 elseif talkState[talkUser] == 3 then n = getNumber(msg) local balance = getPlayerBalance(cid) if(msg == 'all' and doPlayerWithdrawAllMoney(cid)) then selfSay('Retirado ' .. balance .. ' gps da sua conta!', cid) talkState[talkUser] = 1 end if (n ~= 0 and doPlayerWithdrawMoney(cid, n)) then selfSay('Retirado ' .. n .. ' gps da sua conta!', cid) talkState[talkUser] = 1 else selfSay('Voce nao pode retirar esse valor!', cid) talkState[talkUser] = 1 end elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end Salve e feche o arquivo. 2º Passo' Vamos criar o Tile Verificar de ITEM' Isso vai em Movements.xml' <movevent type="StepIn" actionid="10205" event="script" value="bank_room.lua"/> Agora crie um arquivo chamado "bank_room.lua" em Scripts. function onStepIn(cid, item, pos) if (item.actionid == 10205) then if (getPlayerItemCount(cid, ITEM_ID) ~= 1) then doTeleportThing(cid, {x=31623, y=31856, z=4}) else doTeleportThing(cid, {x=31725, y=31888, z=4}) end end end No Map Editor você poe a "ActionID", que está em Laranja, no piso que verificará se o player tem o ITEM' E edite as coordenadas, lembrando que a que está em vermelha é pra onde o player será teleportado caso tenha o item, e a segunda é o oposto' (pra onde irá se não possuir o item) Espero ter ajudado, Tive que sair correndo e não deu pra deixar melhor explicado... Abraços' Editado Março 8, 2012 13 anos por Adriano SwaTT (veja o histórico de edições) Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Março 8, 2012 13 anos ja que vc postou isso ai vou dar uma editada fis esse npc \/ 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 ITEM = aki vc coloca o id do item if(msgcontains(msg, 'bank') or msgcontains(msg, 'help')) then selfSay('Ola amigo oque deseja fazer? {deposit} ou {depositar} para depositar, {withdraw} ou {sacar} para sacar dinheiro ou {balance} para ver seu saldo!', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'balance') or msgcontains(msg, 'BALANCE') and talkState[talkUser] == 1 then local balance = getPlayerBalance(cid) selfSay('Voce possui ' .. balance .. ' gps no banco', cid) elseif msgcontains(msg, 'deposit') or msgcontains(msg, 'depositar') and talkState[talkUser] == 1 then selfSay('Digite o valor que voce deseja depositar.', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then n = getNumber(msg) if(msg == 'all' and doPlayerDepositAllMoney(cid)) then selfSay('Depositado com sucesso!', cid) talkState[talkUser] = 1 end if n <= 0 then selfSay('escolha um valor acima de 0!', cid) talkState[talkUser] = 1 end if(msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar')) then local withdraw = if (getPlayerItemCount(cid, ITEM) ~= 1) then local sacar = if (getPlayerItemCount(cid, ITEM) ~= 1) then selfSay('Você não tem o cartão de debito para retirar dinheiro!', cid) talkState[talkUser] = 1 end end end if n and doPlayerDepositMoney(cid, n) then selfSay('Depositado com sucesso!', cid) talkState[talkUser] = 1 else selfSay('Voce nao tem o valor informado', cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'withdraw') or msgcontains(msg, 'sacar') and talkState[talkUser] == 1 then selfSay('Digite o valor que voce deseja retirar.', cid) talkState[talkUser] = 3 elseif talkState[talkUser] == 3 then n = getNumber(msg) local balance = getPlayerBalance(cid) if(msg == 'all' and doPlayerWithdrawAllMoney(cid)) then selfSay('Retirado ' .. balance .. ' gps da sua conta!', cid) talkState[talkUser] = 1 end if (n ~= 0 and doPlayerWithdrawMoney(cid, n)) then selfSay('Retirado ' .. n .. ' gps da sua conta!', cid) talkState[talkUser] = 1 else selfSay('Voce nao pode retirar esse valor!', cid) talkState[talkUser] = 1 end elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Then not", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end Obs:não testado Editado Março 8, 2012 13 anos por 1215171 (veja o histórico de edições) Ae ajudei? Rep+
Postado Março 8, 2012 13 anos Autor ou 1215171 eu nao consigo abrir sua spoiler =/ e Valeu adriano aki funcionou do geito que voce disse mais so que voce sabe como eu posso depositar um dinheiro na conta dele ? tipo em firma la voce trabalha e ganha por mes e e o dono que deposita como eu faço pro meu char god depositar dinheiro na conta dele ?
Postado Março 8, 2012 13 anos <p>o npc vou por em code sem spolier então e pra vc deposita grana na conta do player vc vai no npc hi transfer ou transferir e dps digita a quantia e dis yes <strong> 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 Editado Março 8, 2012 13 anos por 1215171 (veja o histórico de edições) Ae ajudei? Rep+
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.