vou verificar tdo isso, ja edito aqui 
 
  
@Edit  
  
Verifiquei tdo  n achei nada de "Errado" em relação aos nomes dos arquivos. olhem os scripts aew: 
  
Arquivo do NPC (Vocation.xml) 
  
 
<?xml version="1.0" encoding="UTF-8"?>
<npc name="ZK Recruter" script="data/npc/scripts/vocation.lua" floorchange="0" access="5" level="1" maglevel="1">
<health now="150" max="150"/>
<look type="128" head="20" body="100" legs="50" feet="99" corpse="2212"/>
<parameters>
	<parameter key="message_greet" value="Ola |PLAYERNAME|. voce gostaria de entrar para a guild {ZK} por 10 Gold Coins?" />
</parameters>
</npc>
 
  
Script do arquivo.lua (vocation.lua) 
  
 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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
local talkState = {}
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 cfg = {
  itemid = 2157, --Substitua 'xxxx' pelo ID do item usado na Promotion
  qnt = 10 --Substitua 'xx' pela quantidade do item requerido
}
       if msgcontains(msg, "zk") then
               selfSay("Voce realmente quer entrar na guild por 10 GC ({Gold Coins})?", cid)
               talkState[talkUser] = 1
       elseif(msgcontains(msg, "yes") and talkState[talkUser] == 1)then
               if doPlayerRemoveItem(cid, cfg.itemid, cfg.qnt) then
                       selfSay('From now, you are promoted!', cid)
                       setPlayerPromotionLevel(cid, 1)
                       talkState[talkUser] = 0
                       npcHandler:releaseFocus(cid)
               else
                       selfSay('voce nao possui '.. cfg.qnt ..' '.. getItemNameById(cfg.itemid) .. Mate mais zombies e volte a falar comigo., cid)
                       talkState[talkUser] = 0
                       npcHandler:releaseFocus(cid)
               end
       elseif msg == "no" and talkState[talkUser] == 1 then
               selfSay("Okay, Volte se mudar de ideia. ", cid)
               talkState[talkUser] = 0
               npcHandler:releaseFocus(cid)
       end
      return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
  
 
  
 
Acho que é isso  
 eu n sei nada de script então tentem ser o mais especifico o possivel nas respostas ^^