Ir para conteúdo
Entre para seguir isso  
Pivizz

doSendParcel, doSendLetter

Recommended Posts

Pivizz    1
Pivizz

Primeiramente gostaria de avisar-lhes que não fui o criador destas duas funções, apenas editei-as levemente.

Os créditos são todos de AGS, de um fórum gringo bastante conhecido e de Kinight que lhe deu a idéia, também do fórum gringo.

 

Eu estava tentando criar a função doDepotAddItems(), mas isso foi o mais perto que consegui chegar (ou melhor, achar).

 

Seguindo os padrões de postagem:

Sintaxe: doSendParcel(name, town, items)

Descrição: Função para enviar parcel a jogadores.

Requerimentos: TFS 0.3 b3 (onde foi testado)

 

Função:

function doSendParcel(name, town, items)
   if getPlayerGUIDByName(name) ~= 0 then
       if type(town) == 'number' then
           town = TOWN_NAMES[town]
       end
       local parcel = doCreateItemEx(2595)
       local label = doAddContainerItem(parcel, 2599)
       doSetItemText(label,name.."\n"..town)
       for i = 1, #items do
           if type(items[i]) == 'table' then
               local tempitem = doAddContainerItem(parcel,items[i].id,items[i].count or 1)
               doSetItemText(tempitem,items[i].text or "")
               doSetItemSpecialDescription(tempitem,items[i].desc or "")               
               if items[i].aid ~= nil then
                   doSetItemActionId(tempitem,items[i].aid)
               end
           else
               doAddContainerItem(parcel, items[i], 1)
           end
       end
       doTileAddItemEx(MAILBOX_POS,parcel)
   else
       debugPrint("doSendParcel: Jogador não encontrado.")
   end
end

Sintaxe: doSendLetter(name, town, text)

Descrição: Função para enviar letter a jogadores.

Requerimentos: TFS 0.3 b3 (onde foi testado)

 

Função:

function doSendLetter(name, town, text)
   if getPlayerGUIDByName(name) ~= 0 then
       if type(town) == 'number' then
           town = getTownName(town)
       end
       local letter = doCreateItemEx(2597)
       doSetItemText(letter,name.."\n"..town.."\n\n"..text)
       doTileAddItemEx(MAILBOX_POS,letter)
   else
       debugPrint("doSendLetter: Jogador não encontrado.")
   end
end

Comentários adicionais: adicione as duas funções ao function.lua (ou global.lua, como preferir) e a seguinte variável a constant.lua

 

MAILBOX_POS = {x=[b]x[/b], y=[b]y[/b], z=[b]z[/b]}

Aqui vai um exemplo de como usar a função:

local texto = "Esta é uma função criada por AGS e não por Pivigu!"
local nome_cidade = "Cidadovski"

doSendLetter(getCreatureName(cid), nome_cidade, texto)
doSendParcel(getCreatureName(cid), nome_cidade, {{id = 2152, count = 15}, {id = 2671, count = 20}, 2175})

Simples, não?

Qualquer dúvida, pergunte!

Abraços a todos.

 

Lembrando: Os créditos são todos de AGS.

 

 

Editado:

Ah sim, desculpa.. Esqueci de explicar a variável.

Em:

 MAILBOX_POS = {x=[b]x[/b], y=[b]y[/b], z=[b]z[/b]} 

Você poe as cordenadas de um Mailbox (local onde se envia os parcels)

Editado por Pivizz

Compartilhar este post


Link para o post
Mock    32
Mock

gostei de como vc fez pra mandar o parcel, criando um em uma mail box xDDD

dava pra fazer usando a DB mysql porem se u player tivesse usando o DP na hora podia dar problemas x.x'

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

Eu não sei como posso fazer isso em DB :x

E esse script parou de funcionar aqui, não entendi o pq também :/

Compartilhar este post


Link para o post
Ruquan    2
Ruquan

hj to sem tempo pra testa amanha eu vejo;

 

soh passei o olho... Parabens, bem organizado ^^

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×