FFD Fest Food Delivery
Autor: NetoMalucao | Publicado: 2012-02-09T04:17:00-08:00


Fast&nbsp;Food&nbsp;Delivery&nbsp;(FFD)
Nome:&nbsp;Fast Food&nbsp;Delivery (FFD)
Versão: 1.0 (Caso eu melhore-o, postarei novas versões)

Versão do Tibia: 8.5+ (não&nbsp;testado&nbsp;em versões anteriores)
Teste: TFS cryingdamson

Autor: PeJuGe (97%)

Nível: Iniciante (sou iniciante =D)

Outros Créditos:
2% Skyen Hasus e VConde2 -&gt; Organização e concerto de um erro
1% MotoBoy -&gt; Idéia do Fast Food (http://forums.otserv.com.br/f29/scri...-system-74781/)

Comentário:&nbsp;Este script consiste na entrega de alimento (facilmente adaptável para qualquer item) em um determinado tempo, cobrando na entrega.Olá a todos,&nbsp;este é meu primeiro script (demorei um pouco pra fazer devido&nbsp;encontrar&nbsp;muitos erros). Bom, vi um script parecido hoje (acredite, apesar de ser meu primeiro script não copiei nada), do&nbsp;Notoriouss, mesmo assim postarei, pois o meu é mais completo e acredito ser mais educadito também =D.

Instalação
Script:
Código:--[[ Autror : PeJuGe (2009)
     Outros créditos: 4% Skyen Hasus e VConde2 -&gt; Organização e concerto de um erro
                      1% MotoBoy               -&gt; Idéia do Fast Food
     EXCLUSIVIDADE: OTSERV.COM.BR
     NÃO REMOVA OS CRÉDITOS
]]--

--Configurações
local comidas = {   --&gt; Coloque respectivamente "Nome" e Preço
["Meat"] = 50, 
["Ham"] = 90,
["Fish"] = 150,
["Dragon Ham"] = 200
}
local tempo = 5 --&gt; Tempo da entrega em segundos
local container = "Present"  --&gt; Pacote em que será entrege o item 

local msg = MESSAGE_STATUS_CONSOLE_BLUE  --&gt; Tipo da mensagem
local sat = 350   --&gt; Cor da mensagem animada
-- Fim das Configurações

function onSay(cid, words, param)
  
_, _, param1, param2= param:find("([%s%w]+) ([%s%w%d]+)")
local param2 = tonumber(param2)    
           
   if (param == '') then
       return doPlayerSendTextMessage(cid, msg, "Atendente: Bem vindo ao Fast Food Delivery. \nPara ver nosso cardápio utilize: !food cardapio\nPara fazer o seu pedido utilize: !food Alimento Quantidade (Ex.: !food Meat 5).\nPara cancelar seu pedido utilize: !food cancel")
   elseif (param == 'cardapio') then
          doPlayerSendTextMessage(cid, msg, "Atendente: Aqui no Fast Food Delivery vendemos:")
          for k,v in pairs(comidas) do
              doPlayerSendTextMessage(cid, msg, k.." por "..v.." gold(s) cada.")
          end
          return TRUE
   elseif (param == 'cancel') then
           if getPlayerStorageValue(cid, 2002) ==  1 then
              setPlayerStorageValue(cid, 2002, 0)
              doPlayerSendTextMessage(cid, msg, "Atendente: Sua entrega foi cancelada. Ligue novamente quando desejar.")
              doSendAnimatedText(getCreaturePosition(cid), "Cancelado", 350)
           else doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, não há nenhum pedido registrado em seu nome.")
           end
   return TRUE
   end

   if comidas[param1] ~= nil then
      if getPlayerStorageValue(cid, 2002) ==  0 then
         if param2 ~= nil or param2 == number then
            if param2 &gt; 100 or param2 == 0 then
               return doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, nosso entregador carrega no máximo 100 unidades e no mínimo 1 unidade.")
            else if getPlayerMoney(cid) &gt; comidas[param1] * param2 then
                    doPlayerSendTextMessage(cid, msg, "Atendente: Obrigado por utilizar o Fast Food Delivery. Seu pedido foi registrado e sua entrega chegará dentro de "..tempo.." segundo(s).\nPedido: "..param2.." "..param1.." por "..comidas[param1].." gold(s) cada.\nTotal: "..comidas[param1] * param2.." gold(s).")
                    doSendAnimatedText(getCreaturePosition(cid), "Pedido", sat)
                    setPlayerStorageValue(cid, 2002, 1)
                    stopEvent(onSay) 
                    addEvent(MakeDelivery, 6000, cid, getItemIdByName(param1), comidas[param1],getItemIdByName(container), param2)     
                 else doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, você não tem dinheiro suficiente.")
                 end
            end
         else return doPlayerSendTextMessage(cid, msg, "Atendente: Por favor, informe um número (menor que 100 e maior que 0) com a quantidade desejada.")
         end
      else return doPlayerSendTextMessage(cid, msg, "Atendente: Por favor, aguarde a entrega do seu produto para fazer um novo pedido.\nPara cancelar seu pedido utilize: !food cancel")
      end
   else return doPlayerSendTextMessage(cid, msg, "Atendente: Desculpe, não vendemos este item ou a quantidade determininada é invalida.\nPara mais informações utilize: !food")
   end
   
return TRUE
end                                  

function MakeDelivery(uid, item, price, container, quantity)
      if getPlayerStorageValue(uid, 2002) == 1 then 
         if doPlayerRemoveMoney(uid, price * quantity) == true then
            doAddContainerItem(doPlayerAddItem(uid, container, 1), item, quantity)
            doSendAnimatedText(getCreaturePosition(uid), "Entrega!", sat)
            doSendMagicEffect(getCreaturePosition(uid), 2)
            setPlayerStorageValue(uid, 2002, 0)
         else doPlayerSendTextMessage(uid, msg, "Entregador: Desculpe, a entrega pode ser feita somente mediante o pagamento, ligue novamente quando tiver dinheiro.")
              setPlayerStorageValue(uid, 2002, 0)
         end   
      end
      return TRUE
endAgora surge a pergunta, como instalá-lo? Simples, siga os 3 passos a seguir e você terá seu script totalmente usável&nbsp;


1º Passo:
Crie um arquivo com nome&nbsp;fastfooddelivery&nbsp;(caso não saiba criar arquivos lua vá em Downloads e baixe ou copie um existente e renomeie) na pasta&nbsp;data/talkactions/scripts&nbsp;e copie o conteúdo (ou faça o download abaixo), "OMG, AINDA NÃO FUNCIONA", siga o proximo passo&nbsp;


2º Passo:
Vá a&nbsp;talkactions/talkactions.xml&nbsp;e copie este trecho para o arquivo:
&lt;talkaction log="yes" words="!food" event="script" value="fastfooddelivery.lua"/&gt;"OMG de novo, esse cara de de zuação O.o uhauauh, quando eu entro as vezes fala pra eu mandar !food cancel". Claro, é porque tem que zerar quando o player sai sem pegar o food, siga o 3º Passo.


3º Passo:&nbsp;(opcional)
Último passo, este é opcional, pois é para corrigir um erro, como dito anteriormente, caso não queira instalar o player pode fazer isto manualmente dizendo !food cancel (diga !food quando estiver logado para saber os comandos ou leia o tópico seguinte =D).
Vá até a pasta&nbsp;data/creaturescripts&nbsp;e insira o trecho a seguir logo&nbsp;abaixo de onLogin(cid):
setPlayerStorageValue(cid, 2002, 0)"OMG, ACABOU? YES =D" Pronto, seu script está instalado, agora basta aprender a configurá-lo.[/spoiler]


Configuração
Este script é bastante simples&nbsp;e por isso não requer muitas configurações. Ao final destes passos você saberá perfeitamente utilizar seu script =D. (já sei "OMG, DE NOVO ESSES PASSOS", relax, são menores uhauhauh)


1º Passo:
Configurar os alimentos que serão vendidos: (sugiro que faça o download no final do tópico e acompanhe com as linhas):

-- Linha 9 --
local comidas = { --&gt; Coloque respectivamente "Nome" e Preço
["Meat"] = 50,
["Ham"] = 90,
["Fish"] = 150,
["Dragon Ham"] = 200
}
}Bem simples, basta colocar o nome do alimento que você deseja inserir entre colchetes e posteriores aspas&nbsp;[" "]&nbsp;inserindo então sinal&nbsp;=&nbsp;e agora o valor de cada alimento. Simples né? Sabia que você também acharia&nbsp;.


2º Passo:
Configurar o tempo da entrega (caso sinta necessidade poste no tópico pedindo para colocar variação, por exemplo, se colocar para demorar 5 segundos, demorar de 1 a 5, no momento ele entrega no segundo determinado sempre, particularmente não acho necessidade de variação para não pois pesa o script) e o container (backpack, bag, present, ou qualquer outro), veja a seguir:
-- Linha 15 --
local tempo = 5 --&gt; Tempo da entrega em segundos
local container = "Present" --&gt; Pacote em que será entrege o itemEste também é simples, basta colocar em&nbsp;tempo&nbsp;o tempo desejado. lembrando sempre que é&nbsp;em segundos, em&nbsp;container&nbsp;coloque o nome do container desejado.


3º Passo:&nbsp;(opcional)
-- Linha 18 --
Este passo é para configuração da cor das mensagens e mensagens animadas, caso tenha dificuldade neste passo pode pulá-lo, não mudará em nada, já está uma gracinha&nbsp;&nbsp;(que gay uhahuauha, mas ta rox&nbsp;).
local msg = MESSAGE_STATUS_CONSOLE_BLUE --&gt; Tipo da mensagem
local sat = 350 --&gt; Cor da mensagem animadaEm&nbsp;msg&nbsp;(no caso MESSAGE_STATUS_CONSOLE_BLUE) coloque o tipo de mensagem desejada e o tipo de mensagem animada em&nbsp;sat(no caso 350). Pronto, está configurado seu script =D. Qualquer outra informação você pode ver mais facilmente pelo jogo, o qual já é bastante explicativo, basta utilizar&nbsp;!food, não se esqueça de reiniciar o servidor ao instalar.


Download(s)
Script organizado:&nbsp;http://www.mediafire.com/?alwnwroommn


...Obrigado a todos que leram esse monte de coisa&nbsp;&nbsp;uhahuah, este é meu primeiro script e qualquer dúvida ou pedido de complemento poste aqui no tópico.&nbsp;Se possível fazer sugestões quanto ao function MakeDelivery quando o player faz o pedido e da log out, pois não deveria enviar a mensagem de erro:"luaGetPlayerStorageValue(). Player not found" no console :/)

Espero que se divirtam e não deixem de comentar em&nbsp;

Agradecimentos:&nbsp;(não são créditos, agradecimentos huauha)
Skyen Hasus por postar maravilhosos tutoriais =D (todos os outros também, mas é que ele posta mais uahuahua)
Todos que postam script e enriquecem este fórum com bons scriptsEdit 28/11 -&gt; Podem esperar a versão 2.0&nbsp;, novas opções vem aí hehe (assim que eu aprender algumas coisas uhahua)