sábado, 11 de fevereiro de 2012

MAPA

-=-= Quando o player pisar aparecerá (Ver foto a baixo)


Instalando

Crie um novo arquivo:
movements/scripts/mapmarks.lua
Cole isso:
local config = {
storage = 9432,
version = 1,
marks = {
{mark = 5, pos = {x = 166, y = 439, z = 7}, desc = "Main City Temple"},
{mark = 7, pos = {x = 300, y = 200, z = 7}, desc = "NPC with tools!"},
{mark = 1, pos = {x = 666, y = 666, z = 6}}
}
}

local f_addMark = doPlayerAddMapMark
if(not f_addMark) then f_addMark = doAddMapMark end

function onStepIn(cid, item, position, fromPosition)
if(isPlayer(cid) ~= TRUE or getPlayerStorageValue(cid, config.storage) == config.version) then
return
end

for _, m in pairs(config.marks) do
f_addMark(cid, m.pos, m.mark, m.desc ~= nil and m.desc or "")
end
setPlayerStorageValue(cid, config.storage, config.version)
return TRUE
end

Legenda:
version = 1 -> Aumente esse valor após a adição de novas marcas, então o jogador pode entrar novamente e
receber marcas novo no mapa.
mark = X -> Ai será a imagem que aparecerá no mapa (Ver a foto dos ids).
pos = {x = X, y = X, z = X} -> Será a posição aonde aparecerá no mapa.
desc = "Main City Temple" -> Sera a descrição apos passar o mouse em cima.

Depois vá para
movements/movements.xml
E adicione essa linha:


Legenda:
YOUR_ACTION_ID = Coloque a action que ficará no piso.

Segue as lista das opções de imagens que pode existir.

First itens por vocação

Bom, vim aqui trazer um MOD simples, porém muito útil, a função dele é destribuir o First Itens por vocação.

Vá na pasta do seu servidor, abra a pasta mods e edite o arquivo "firstitems.xml" e substitua tudo por isto:
 
xml version="1.0" encoding="UTF-8"?>

name="First Items" version="1.0" author="The Forgotten Server" contact="otland.net" enabled="yes">
name="firstitems_config">
type="login" name="FirstItems" event="script">

quinta-feira, 9 de fevereiro de 2012

Elevador


Elevador

..:: Elevador ::..

Autor: Flatronez
Servidor Testado: TFS 0.3.6 Crying Damson
Descrição: É um elevador, onde o player pode subir/descer em uma área determinada.


Como Instalar

Arquivos:
-- ELEVADOR by FLATRONEZ
-- SE POSTAR EM OUTROS LUGARES, COLOQUE OS CRÉDITOS



-- NÃO ALTERE O CÓDIGO ABAIXO --
function elevador(cid, msg, newPos, i, playerPos, pisoElev, param)
local proxAnd = getTileThingByPos(newPos)
if isInArray(pisoElev, proxAnd.itemid) and i <= tonumber(param[2]) then
doTeleportThing(cid, newPos, true)
elseif proxAnd.itemid ~= pisoElev then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.fimLinha)
end
if i == tonumber(param[2]) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.chegada)
end
end
-- NÃO ALTERE O CÓDIGO ACIMA --


function onSay(cid, words, param)
-- CONFIGURAÇÃO, ALTERE SOMENTE AQUI --
local param = string.explode(param, " ") -- Não altere
local pisoElev = { 406, 407 } -- IDs do piso do elevador
local cmd = {
sobe = "subir",
desce = "descer"
}
local stId = 700
local playerPos = getCreaturePosition(cid)
local areaElev = { -- Área do elevador, deve ser uma área quadrada
ini = {x= 38, y= 66}, -- Primeiro tile do elevador (acima e à direita)
fim = {x= 39, y= 67} -- Último tile do elevador (abaixo e à esquerda)
}
local tempo = 600 -- Delay para subir/descer um andar
local andares = {
maxCima = 0, -- Valor da coordenada Z do andar máximo que se pode subir a partir do ground.
maxBaixo = 7 -- Valor da coordenada Z do andar máximo que se pode descer a partir do ground.
}
local msg = { -- Mensagens que são exibidas para o player
sobe = "Você irá subir em alguns instantes.",
desce = "Você irá descer em alguns instantes.",
fimLinha = "Fim da linha. O elevador não pode subir/descer mais.",
chegada = "Pronto! Você chegou ao seu destino.",
erro = { -- Mensagens de erro
andInv = "O elevador não pode subir/descer a esse andar.",
posErr = "Você não está em um elevador.",
somNum = "Use somente números.",
zero = "É impossível subir/descer 0 andares.",
comInv = "Comando inválido. Para subir, use !elevador " .. cmd.sobe .. " N°. Para descer, use !elevador " .. cmd.desce .. " N°."
}
}

-- NÃO ALTERE O CÓDIGO ABAIXO SE NÃO SOUBER O QUE ESTÁ FAZENDO --
-- Subida
if param ~= nil and param[1] == cmd.sobe and tonumber(param[2]) ~= nil and tonumber(param[2]) > 0 and playerPos.z - tonumber(param[2]) >= 0 and playerPos.x >= areaElev.ini.x and playerPos.x <= areaElev.fim.x and playerPos.y >= areaElev.ini.y and playerPos.y <= areaElev.fim.y then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.sobe)
for i = 1, tonumber(param[2]) do
local playerPos = getCreaturePosition(cid)
local newPos = {x= playerPos.x, y= playerPos.y, z= playerPos.z-i}
addEvent(elevador, i * tempo, cid, msg, newPos, i, playerPos, pisoElev, param)
end
-- Descida
elseif param ~= nil and param[1] == cmd.desce and tonumber(param[2]) ~= nil and tonumber(param[2]) > andares.maxCima and playerPos.z + tonumber(param[2]) <= andares.maxBaixo and playerPos.x >= areaElev.ini.x and playerPos.x <= areaElev.fim.x and playerPos.y >= areaElev.ini.y and playerPos.y <= areaElev.fim.y then
local i = 1
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg.desce)
while i <= tonumber(param[2]) do
local newPos = {x= playerPos.x, y= playerPos.y, z= playerPos.z+i}
addEvent(elevador, i * tempo, cid, msg, newPos, i, playerPos, pisoElev, param)
i = i + 1
end
-- Tratamento de Erros
elseif param == nil or table.find(cmd, param[1]) == nil then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.comInv)
elseif param ~= nil and tonumber(param[2]) == nil then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.somNum)
elseif playerPos.x < areaElev.ini.x or playerPos.x > areaElev.fim.x or playerPos.y < areaElev.ini.y or playerPos.y > areaElev.fim.y then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.posErr)
elseif param ~= nil and ((param[1] == cmd.sobe and playerPos.z - tonumber(param[2]) < andares.maxCima) or (param[1] == cmd.desce and playerPos.z + tonumber(param[2]) > andares.maxBaixo)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.andInv)
elseif param ~= nil and tonumber(param[2]) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg.erro.zero)
end
return true
end

Código:
<talkaction words="!elevador" access="0"  event="script" value="elevador.lua"/>



Pegue o arquivo elevador.lua e o coloque na pasta talkActions/scripts.

Depois abra o arquivo talkActions.xml e adicione a tag.

Depois abra o arquivo elevador.lua e configure a área do elevador.

Flexas saindo da parede


Flexas saindo da Parede.

Nome: Flexas.
Autor: Neon.
Versão Testada: Cliente 8.54 - Servidor TFS 0.3.6


Bom vim aqui no Otnet postar um script que tenho em meu Servidor e acho legal para mapas que têem um grande numero de RPG.

O que vou mostrar hoje se resume na imagem abaixo.




Primeiro passo:
-Vá na pasta Movements de seu servidor e crie um arquivo lua com o seguinte código, e salve com o seguinte nome: arrow.lua

Código PHP:
function onStepIn(cid, item, topos)
frompos = {x=52, y=177, z=9}topos = getPlayerPosition(cid)rand = math.random(10,18)rand2 = math.random(1,7)

if (
isPlayer(cid)) == 1 and rand2 > 2 then
doSendDistanceShoot
(frompos, topos, CONST_ANI_ARROW)
doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -70, -10, CONST_ME_HITAREA)
doSendMagicEffect(topos,0)
doSendAnimatedText(topos,rand,180)
doCreateItem(2019,2,topos)

elseif (
isPlayer(cid)) == 1 and rand2 == 1 then
doSendDistanceShoot
(frompos, topos, CONST_ANI_ARROW)
doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -70, -10, CONST_ME_HITAREA)
doSendMagicEffect(topos,2)

else
doSendDistanceShoot(frompos, topos, CONST_ANI_ARROW)
doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -70, -10, CONST_ME_HITAREA)
doSendMagicEffect(topos,3)

endreturn 1
end
Segundo passo:
- Agora va em Movements.xml e adicione a seguinte tag.

Código PHP:
<movevent type="StepIn" uniqueid="24241" event="script" value="arrow.lua" />
Terceiro passo:
-Adicionar o UniqueId no piso onde voce quer que quando o player passe leve uma flexada.




..:: Configurando ::..

Na seguinte linha, voce coloca o local de onde saira a flexa. X - Y - Z.
Código:
frompos = {x=52, y=177, z=9}
Ja nessa linha, voce configura o tanto de Damage que voce quer que o player leve ao pisar no tile. Voce pode variar, como mostra o script. Ali esta para variar os danos entre '70' e '10'. Configure do seu jeito.
Código:
doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -70, -10, CONST_ME_HITAREA)
E no Movements.xml voce Coloca o Id que ira no UniqueId em seu MapEditor.
Código:
<movevent type="StepIn" uniqueid="24241" event="script" value="arrow.lua" />

ban nick, hora e comentario PERFEITO


/Ban com nick, hora e comentário

Nome:(Um Novo Modo De Banir... )
.Versão: (tfs 0.3.4+).
Tipo do script: (talkactions.xml(talkaction.).
Servidor Testado: (tfs 0.3.4+)

Creditos: (Gesior.Pl) .
Comentario: Como Ele Funciona...
/ban Nick - Banir O jogador de tempo predefinido
/ban Nick,12 - Banir O jogador por 12 horas
/ban Nick,35,AFK BOT - Banir jogador de 35 horas com o comentário "AFK BOT"

Você pode Banir O Player offline jogadores!
Adicone Isto


talkactions.xml
Código:
<talkaction log="yes" words="/ban" access="3" event="script" value="ban.lua"/>


Crie O Nome Do Arquivo
ban.lua

Código:
local default_comment = ""
local default_lenght = 1 -- ban time in hours

function onSay(cid, words, param)
local parametres = string.explode(param, ",")
if(
parametres[1] ~= nil) then
local accId
= getAccountIdByName(parametres[1])
if(
accId > 0) then
local lenght
= default_lenght
local comment
= default_comment
if(parametres[2] ~= nil and tonumber(parametres[2]) > 0) then
lenght
= tonumber(parametres[2])
end
if(parametres[3] ~= nil) then
comment
= parametres[3]
end
doAddBanishment
(accId, lenght * 3600, 23, ACTION_BANISHMENT, comment, getPlayerGUID(cid), comment)
local player = getPlayerByNameWildcard(parametres[1])
if(
isPlayer(player) == TRUE) then
doRemoveCreature
(player)
end
else
doPlayerSendCancel(cid, "Player with name " .. parametres[1] .. " doesn't exist.")
end
else
doPlayerSendCancel(cid, "You must enter name.")
end
return true
end
Caso o 1º Script Não Funcione Use Esse... Por: Hermes

Código:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="/ban command" version="1.0" author="Gesior.pl & modded by Hermes" contact="otland.net" enabled="yes">
<description>
This mod will add new command for server staff - /ban.
Usage:
/ban Nick - ban player for default time (set in config)
/ban Nick,12 - ban player for 12 hours
/ban Nick,35,AFK BOT - ban player for 35 hours with comment "AFK BOT"
</description>
<config name="banishment_config"><![CDATA[
banconfig = {
default_comment = ""
default_lenght = 1 -- ban time in hours
}
]]></config>
<talkaction log="yes" words="/ban" access="3" event="buffer"><![CDATA[
domodlib('banishment_config')
function onSay(cid, words, param)
local parametres = string.explode(param, ",")
if(parametres[1] ~= nil) then
local accId = getAccountIdByName(parametres[1])
if(accId > 0) then
local lenght = banconfig.default_lenght
local comment = banconfig.default_comment
if(parametres[2] ~= nil and tonumber(parametres[2]) > 0) then
lenght = tonumber(parametres[2])
end

if(parametres[3] ~= nil) then
comment = parametres[3]
end
doAddBanishment(accId, lenght * 3600, 23, ACTION_BANISHMENT, comment, getPlayerGUID(cid), comment)
local player = getPlayerByNameWildcard(parametres[1])

if(isPlayer(player) == TRUE) then
doRemoveCreature(player)
end
else
doPlayerSendCancel(cid, "Player with name " .. parametres[1] .. " doesn't exist.")
end
else
doPlayerSendCancel(cid, "You must enter name.")
end
return true
end
]]></talkaction>
</mod>
De
local default_lenght = 1 -- ban time in hours
Para
local default_lenght = 24 -- ban time in hours

Se você quiser mudá-lo de "horas" para "dia" (como padrão 1 dia e / ban Nick, 2, botting ban por 2 dias), você deve mudar:
doAddBanishment(accId, lenght * 3600, 23, ACTION_BANISHMENT, comment, getPlayerGUID(cid), comment)
doAddBanishment(accId, lenght * 3600 * 24, 23, ACTION_BANISHMENT, comment, getPlayerGUID(cid), comment)
Se Você Muda
local default_lenght = 24 -- ban time in hours



Por Mock.
local default_lenght = 1 -- ban time in hours

function onSay(cid, words, param)
local parametres = string.explode(param, ",")
if(parametres[1] ~= nil) then
local accId = getAccountIdByName(parametres[1])
if(accId > 0) then
local lenght = default_lenght
local comment = default_comment
if(parametres[2] ~= nil and tonumber(parametres[2]) > 0) then
lenght = tonumber(parametres[2])
end
if(parametres[3] ~= nil) then
comment = parametres[3]
end
doAddBanishment(accId, lenght * 3600, 23, ACTION_BANISHMENT, comment, getPlayerGUID(cid), comment)
local player = getPlayerByNameWildcard(parametres[1])
if(isPlayer(player) == TRUE) then
doRemoveCreature(player)
end
else
doPlayerSendCancel(cid, "Player with name " .. parametres[1] .. " doesn't exist.")
end
else
doPlayerSendCancel(cid, "You must enter name.")
end
return true
end
]=]
}
Thanks, Mock
Como Usa Essa Função.
/ban Nick - ban player for default time
/ban Nick,12 - ban player for 12 hours
/ban Nick,35,AFK BOT - ban player for 35 hours with comment "AFK BOT"
/ban Nick,0.02,1 minute ban - dont spam!



Caso De Erros Poste Aqui.
http://forums.otserv.com.br/f13/

Aviso Não Flood Usem O Thanks...

Sistema AFK

Olá, estou criando esse tutorial mostrando como fazer o Sistema de AFK em seu OTServ, Então vamos lá 

Vá Na Pasta De Seu OTServ / Data / Talkactions / Scripts - Copie qualquer arquivo .lua que está lá, tire tudo que a dentro dele e renomeie como 'afk'
Coloque isso :



local time = 5 -- 1 = 1 sec, 2 = 2 sec, ...

local say_events = {}
local function SayText(cid)
if isPlayer(cid) == TRUE then
if say_events[getPlayerGUID(cid)] ~= nil then
if isPlayer(cid) == TRUE then
doSendAnimatedText(getPlayerPosition(cid),"Ausente !", math.random(01,255))
end
say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 100 / 2, cid)
end
end
return TRUE
end
function onSay(cid, words, param, channel)
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return true
end
if param == "on" then
if isPlayer(cid) == TRUE then
doSendAnimatedText(getPlayerPosition(cid),"Ausente !", math.random(01,255))
end
say_events[getPlayerGUID(cid)] = addEvent(SayText, time * 1000, cid)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING ,"You Now Stated you are (afk).")
elseif param == "off" then
stopEvent(say_events[getPlayerGUID(cid)])
say_events[getPlayerGUID(cid)] = nil
doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING ,"You Now stated your are not (afk).")
end
return TRUE
end



Depois vá em Pasta De Seu OTServ / Data / Talkactions / Talkactions.XML
Procure A Parte dos Players
Bote Isso :


<talkaction words="!afk on" event="script" value="afk.lua"/>


Obs : falando !afk off acaba com !afk on começa!

Gente então é isso salve feche e use

Abraços,
Victor Morin
 

FFD Fest Food Delivery


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

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

Autor: PeJuGe (97%)

Nível: Iniciante (sou iniciante =D)

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

Comentário: Este script consiste na entrega de alimento (facilmente adaptável para qualquer item) em um determinado tempo, cobrando na entrega.
Olá a todos, este é meu primeiro script (demorei um pouco pra fazer devido encontrar muitos erros). Bom, vi um script parecido hoje (acredite, apesar de ser meu primeiro script não copiei nada), do 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 -> Organização e concerto de um erro
1% MotoBoy -> Idéia do Fast Food
EXCLUSIVIDADE: OTSERV.COM.BR
NÃO REMOVA OS CRÉDITOS
]]--

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

local msg = MESSAGE_STATUS_CONSOLE_BLUE --> Tipo da mensagem
local sat = 350 --> 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 > 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) > 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
end
Agora surge a pergunta, como instalá-lo? Simples, siga os 3 passos a seguir e você terá seu script totalmente usável


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


2º Passo:
Vá a talkactions/talkactions.xml e copie este trecho para o arquivo:
<talkaction log="yes" words="!food" event="script" value="fastfooddelivery.lua"/>
"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: (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 data/creaturescripts e insira o trecho a seguir logo 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 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 = { --> 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 [" "] inserindo então sinal = e agora o valor de cada alimento. Simples né? Sabia que você também acharia .


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 --> Tempo da entrega em segundos
local container = "Present" --> Pacote em que será entrege o item
Este também é simples, basta colocar em tempo o tempo desejado. lembrando sempre que é em segundos, em container coloque o nome do container desejado.


3º Passo: (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 (que gay uhahuauha, mas ta rox ).
local msg = MESSAGE_STATUS_CONSOLE_BLUE --> Tipo da mensagem
local sat = 350 --> Cor da mensagem animada
Em msg (no caso MESSAGE_STATUS_CONSOLE_BLUE) coloque o tipo de mensagem desejada e o tipo de mensagem animada em 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 !food, não se esqueça de reiniciar o servidor ao instalar.


Download(s)

Script organizado: http://www.mediafire.com/?alwnwroommn


...
Obrigado a todos que leram esse monte de coisa uhahuah, este é meu primeiro script e qualquer dúvida ou pedido de complemento poste aqui no tópico. 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

Agradecimentos: (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 scripts


Edit 28/11 -> Podem esperar a versão 2.0 , novas opções vem aí hehe (assim que eu aprender algumas coisas uhahua)