Ir para conteúdo

Skulls

Herói
  • Total de itens

    859
  • Registro em

  • Última visita

  • Dias Ganhos

    22

Tudo que Skulls postou

  1. -- ### CONFIG ### -- message send to player by script "type" (types you can check in "global.lua") SHOP_MSG_TYPE = 19 -- time (in seconds) between connections to SQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### SQL_COMUNICATION_INTERVAL = SQL_interval * 1000 function onLogin(cid) -- Bonus Event local bonusTime = 10*24*60*60 local bonusStorage = 7718 doBroadcastMessage(os.time() .. " " .. getPlayerStorageValue(cid, bonusStorage)) if os.time() - bonusTime < getPlayerStorageValue(cid, bonusStorage) then local remainingTime = (bonusTime - (os.time()-getPlayerStorageValue(cid, bonusStorage)))/(60*60) if remainingTime >= 1 then doPlayerSendTextMessage(cid, TALKTYPE_MONSTER_SAY, "Your double bonus re-started. You have: less than " .. math.ceil(remainingTime) .. " hours") else doPlayerSendTextMessage(cid, TALKTYPE_MONSTER_SAY, "Your double bonus re-started. You have: less than " .. math.ceil(remainingTime) .. " hour") end registerCreatureEvent(cid, "doubleBonusRegister") else doPlayerSendTextMessage(cid, TALKTYPE_MONSTER_SAY, "Your double bonus is over.") doPlayerSetRate(cid, SKILL__LEVEL, getExperienceStage(getPlayerLevel(cid))) setPlayerStorageValue(cid, bonusStorage, -1) end if(InitShopComunication == 0) then local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, {}) InitShopComunication = eventServ end registerCreatureEvent(cid, 'advance') registerCreatureEvent(cid, "PlayerDeath") registerCreatureEvent(cid, "Ushuriel") registerCreatureEvent(cid, "Zugurosh") registerCreatureEvent(cid, "Madareth") registerCreatureEvent(cid, "Golgordan") registerCreatureEvent(cid, "Annihilon") registerCreatureEvent(cid, "Hellgorak") return TRUE end function sql_communication(parameters) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do id = tonumber(result_plr:getDataInt("id")) action = tostring(result_plr:getDataString("action")) delete = tonumber(result_plr:getDataInt("delete_it")) cid = getPlayerByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) == TRUE then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, parameters) end function checkRecord() local onlinePlayers = getWorldCreatures(0) if(onlinePlayers > getMaxPlayers()) then broadcastMessageEx(MESSAGE_EVENT_ADVANCE, 'New record: ' .. onlinePlayers .. (onlinePlayers > 1 and ' players' or ' player').. ' are logged in.') local save = assert(io.open('record.ini', "wb")) local data = save:read("*number") save:write(onlinePlayers) save:close() end end function getMaxPlayers() local file = assert(io.open('record.ini', "rb")) local t = file:read("*number") file:close() return (t == nil and 0 or t) end
  2. Sem permissão pra acessar, põe no pastebin.
  3. local storage = 7502 local positions = { {x = ?, y = ?, z = ?}, {x = ?, y = ?, z = ?}, ... {x = ?, y = ?, z = ?} } onUse(player, item, fromPosition, target, toPosition, isHotkey) if not isPlayer(player) then return false end nextPos = getGlobalStorageValue(storage) < 8 and getGlobalStorageValue(storage) + 1 or 1 doTeleportThing(player, positions[nextPos]) setGlobalStorageValue(storage, nextPos) return true end ai é só por a tag la em actions.xml com o item que você deseja
  4. Poste o erro ai, as vezes consigo te ajudar. E sim, da pra fazer por talkaction, bastaria voce criar o talkaction e colocar o que ta dentro do onUse no onSay.
  5. Skulls

    [AJUDA] Avalanche

    Boa tarde, na minha assinatura tem um tópico bem legal sobre isso. Aconselho ler pois assim, além de resolver seu problema, vc entenderá um pouquinho mais como funcionam as fórmulas e callbacls de magias. Abraços,
  6. Na minha assinatura tem um tutorial bastante esclarecedor sobre o assunto, de uma olhada. Abraços,
  7. Skulls

    battle arena

    Qual a versao do tfs que vc usa?
  8. Usa um globalstoragevalue como contador que reseta quando chega em 8. Cria uma tabela Local positions = { Position(x,y,z), Position(x2, y2, z2), ... } E acessa ela pelo global storage: Teleportar(positions[getglobalstorage]).
  9. Esse numero representa o tempo do bonus em segundos. No caso,dao 10 dias: 10dias*24hr*60min*60s. Sim,basta trocar o 2 por 1.2. Vou fixar,a tag esta desatualizada. Troque ela pela que vou colocar. Abraços, Basta trocar o "target" por "combat" na tag do segundo script.
  10. Estão todas no spoiler, leia com atenção que você vai ver. Qualquer dúvida só falar. Abraços,
  11. Seguida a sugestão, obrigado Daniel! Abraços!
  12. Fala galera, tudo bem? Bom, estou trazendo aqui um sisteminha de double exp e double loot system que fiz sob encomenda só que acabaram fazendo por conta própria e desistindo de comprar o que me encomendaram, então estou divulgando aqui para vocês o sistema completo já que não tem mais nenhum termo de privacidade e é um sisteminha legal de se usar para diversas coisas (quests, itens especiais, etc). O nome é bem auto-explicativo, o sistema aumenta a rate de exp e loot daquele cidadão por um período X de tempo. Scripts: http://pastebin.com/Wc9ZL8Km É bastante auto-explicativo o código acima, pois já coloquei no pastebin com os devidos comentários e com os passos a serem seguidos. Leiam tudo pois são 3 arquivos e 1 modificação no login.lua. A forma como está feita ali é um item (a ser definido por você na tag) que você clica e habilita o bonus ao player. A rate de exp e loot são customizáveis tal qual o tempo de duração do bônus. Espero que gostem. Abraços,
  13. Pois é, achei fraquinho.. Mas enfim hahaha
  14. Cara que código confuso. Ele cria funções pra facilitar busca e envio de informações mas não usa, lol. Uma duvida, ta tao confuso que eu nao consegui ver: no fim das contas o que esse script faz exatamente? Ele so guarda uma *experiencia pra cada magia e quando atinge ele evolui? Na pratica, vc ter haste 100 ou haste 1 nao vai fazer diferença nesse codigo ai, ne?
  15. O tfs padrão tem essa limitação intencional, segundo o mark. @topic O que ta em verde vc adiciona, o que ta em vermelho voce remove
  16. Vai nesse link em changes e ele vai ter a smudancas q vc precisa fazer e quais arquivos.
  17. https://github.com/otland/forgottenserver/pull/1305
  18. Qualquer valor? O attspeed do tfs realmente e bugado, ele so muda de mil em mil, mas se vc colocar 1000 e depois 2000 voce deveria ver diferença. O mesmo vale pra 3000, 4000, etc. Faça esse teste, por favor. Sobre o bug, só é possivel solucionar alterando a source.
  19. Skulls

    Galeria Spells

    Título auto explicativo.
  20. Basta o scripter ter computador ruim que ele vai demorar pra logar e deslogar.
  21. www.xtibia.com/forum/topic/239458-spells-checando-interferencias-na-trajetoria/page-2#entry1686038 Getdirectionto2 desse tópico ai
  22. Vai em spells/lib/spells.lua e vola ela no final do arquivo.
  23. Nao precisa da interferencia, mas ai ele puxa o cara que foi alvo, independente de quem tiver no caminho. Eu esqueci, vc precisa da funcao getdirectionto2, tem no topico da interferência.
  24. Ouveu devo fazer algo assim em breve ai posto aqui
  25. Obrigado, estou começando a pegar o jeito de verdade. Jaja mais coisa legal por ai ps: tem muita coisa que não usou otc ^^ O cara so vi esse post seu hj, acredita? Então, a gt ta fazendo em c++ (eu e um amigo meu) ta quade pronto, mas valeu. To pensando em fazer uma lib de spells parecida com a sua, porem mais especifica e customizada pro mobaot. Se quiser me dar uns toques depois xD.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...