Ir para conteúdo

DukeeH

Membro
  • Registro em

  • Última visita

Tudo que DukeeH postou

  1. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Como eu disse, account manager não é algo que você vai achar e alterar facilmente. Se você quer muito trocar teria que trocar a distro, mas sobre criar o char junto da account acredito que todos os account managers façam isso.
  2. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Então procure como diminuir o tempo que o tfs leva para calcular o proximo ataque que é de 500ms por padrão. Se você bloquear o bot como esta dizendo, a attackspeed de todo mundo vai ficar 500, ou menos só quando andarem...
  3. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Isso ai vem direto da distro, você provavelmente não vai conseguir adicionar, só se trocar sua distro por uma que ja vem com ele. Mas acredito que normalmente elas venham com um igual, eu pelo menos nunca precisei criar conta depois char, sempre fiz direto.
  4. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    É 10.1, mas ele ja é compativel com a parte de scripts que falei, apenas usar um executavel 10.90 nesse servidor e vai provavelmente funcionar.
  5. globalevents/scripts/shop.lua -- ### CONFIG ### -- message send to player by script "type" (types you can check in "data/lib/000-constants.lua") SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE -- time (in seconds) between queries to MySQL database by shop script SQL_interval = 30 -- ### END OF CONFIG ### function onThink(interval, lastExecution) 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 = getCreatureByName(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) doItemSetAttribute(new_container, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_container, "tid", id) local iter = 0 while iter ~= container_count do local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) doAddContainerItemEx(new_container, new_item) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", 'Bought by ' .. getCreatureName(cid) .. ' [ID:' .. id .. '].') doItemSetAttribute(new_item, "tid", id) 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.') doPlayerSave(cid) 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 return true end globalevents/globalevents.xml <globalevent name="website_shop_item_delivery" interval="30000" event="script" value="shop.lua"/> Agora compre um item no shop e ele será entregue em até 30 segundos no char escolhido, automaticamente.
  6. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 function delayMoneyRemoval(item, pos) doRemoveItem(getTileItemById(pos, item).uid) return true end local function placeMoney(amount, table_middle_pos) local remain = amount local crystal_coins = 0 local platinum_coins = 0 if (math.floor(amount / 10000) >= 1) then crystal_coins = math.floor(amount / 10000) remain = remain - crystal_coins * 10000 end if ((remain / 100) >= 1) then platinum_coins = remain / 100 end addEvent(doCreateItem, 550, 2152, platinum_coins, table_middle_pos) addEvent(doCreateItem, 600, 2160, crystal_coins, table_middle_pos) end local function rollDice(roll, cc_count, pc_count, table_left_pos, table_middle_pos, npc) local dice_ids = {5792, 5793, 5794, 5795, 5796, 5797} local random_rollval = math.random(1,6) local total_g = (10000 * cc_count) + (100 * pc_count) local prize_percent = 1.0 -- 80% if ((total_g) <= 500000 and (total_g) >= 10000) then doSendMagicEffect(table_left_pos, CONST_ME_CRAPS) for _, itemId in pairs(dice_ids) do if(getTileItemById(table_left_pos, itemId).uid > 0) then doTransformItem(getTileItemById(table_left_pos, itemId).uid, dice_ids[random_rollval]) end end if (roll == 1 and random_rollval <= 3) then placeMoney(total_g + (total_g * prize_percent), table_middle_pos) addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doCreatureSay, 500, npc, "Acertou mizeravi!", TALKTYPE_SAY, false, 0) elseif (roll == 2 and random_rollval >= 4) then placeMoney(total_g + (total_g * prize_percent), table_middle_pos) addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_SOUND_GREEN) addEvent(doCreatureSay, 500, npc, "You win!", TALKTYPE_SAY, false, 0) else addEvent(doSendMagicEffect, 400, table_left_pos, CONST_ME_BLOCKHIT) addEvent(doSendMagicEffect, 700, table_left_pos, CONST_ME_BLOCKHIT) addEvent(doCreatureSay, 500, npc, "Errou mizeravi!", TALKTYPE_SAY, false, 0) end doCreatureSay(npc, string.format("%s rolled a %d.", getCreatureName(npc), random_rollval), TALKTYPE_ORANGE_1, false, 0, table_left_pos) else addEvent(doCreateItem, 100, 2160, cc_count, table_middle_pos) addEvent(doCreateItem, 150, 2152, pc_count, table_middle_pos) doCreatureSay(npc, "The minimum wager is 10K and the maximum wager is 500K.", TALKTYPE_SAY, false, 0) end return true end function creatureSayCallback(cid, type, msg) -- NPC userdata instance local npc = getNpcCid() -- Game table position userdata instances local table_left_pos = {x = 147, y = 57, z = 7} -- Pos da frente do Npc onde gira o dado local table_middle_pos = {x = 148, y = 57, z = 7} -- Pos do meio onde vai o dinheiro -- Search for coins on the left and middle tables and create item userdata instances local table_middle_cc = getTileItemById(table_middle_pos, 2160) local table_middle_pc = getTileItemById(table_middle_pos, 2152) -- Other variables local cc_count = 0 local pc_count = 0 local ROLL, LOW, HIGH = 0, 1, 2 posplayer = {x=149, y=56, z=7} -- Pos onde o player precisa estar local ppos = getPlayerPosition(cid) if ppos.x == posplayer.x and ppos.y == posplayer.y then if isInArray({"H", "HIGH", "high", "h"}, msg) then ROLL = HIGH elseif isInArray({"L", "LOW", "l", "low"}, msg) then ROLL = LOW else return false end if (table_middle_cc.uid ~= 0) then cc_count = table_middle_cc.type doTeleportThing(table_middle_cc.uid, table_left_pos) addEvent(delayMoneyRemoval, 300, 2160, table_left_pos) end if (table_middle_pc.uid ~= 0) then pc_count = table_middle_pc.type doTeleportThing(table_middle_pc.uid, table_left_pos) addEvent(delayMoneyRemoval, 300, 2152, table_left_pos) end addEvent(rollDice, 500, ROLL, cc_count, pc_count, table_left_pos, table_middle_pos, npc) else return false end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  7. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    É bem tranquilo editar o vocations... gainmanaticks="3" = Tempo em segundos para ganhar a mana desejada. gainmanaamount="2" = Mana que vai ganhar a cada vez que der o tempo acima. O mesmo funciona para hp, e lembre-se de editar a promotion também.
  8. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Tecnicamente qualquer versão permite o update... Apenas trocando a distro e tornando os scripts compatíveis.. Mas... O update de 8.6 para 10.9 é BEM complicado. Porque com a mudança do tfs 0.3.6/0.4 para o 1.1, 1.2 (que é o usado no 10.9) a maioria, se não quase todas as funções mudaram, então a maioria dos scripts não vai funcionar. O melhor seria baixar um 10.90 e editar a partir dele, ou usar apenas o seu mapa em um otserv que já é 10.90 e editar a partir dali.
  9. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    O update de 8.6 para 10.9 é BEM complicado. Porque com a mudança do tfs 0.3.6/0.4 para o 1.1, 1.2 (que é o usado no 10.9) a maioria, se não quase todas as funções mudaram, então a maioria dos scripts não vai funcionar. O melhor seria baixar o baiak 10.9 que tem aqui e editar, ou pegar o seu mapa e usar em um global/baiak 10.9 e editar com os itens/chão e paredes novos...
  10. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Ela não fica mais rápida que o configurado, ela fica igual o configurado. O the forgotten só checa se o jogador pode atacar a cada 500ms (2 por segundo), para atacar mais rapido que isso apenas andando ou usando bot (o bot tira e coloca o ataque de novo), então para que o elfbot não funcione bote attackspeed em 500 ou multiplos de 500, assim o elfbot e quem não tiver vão atacar igual.
  11. weapons.xml procure o id da spear e remova o seguinte: action="removecount"
  12. Tenha bastante RAM, baixe um otserv, configure e abra. "Como configura e abre?" http://www.tibiaking.com/forum/forums/forum/123-come%C3%A7ando-seu-servidor/
  13. Vamos tentar... Não tenho como testar, e não adicionei a chance ainda. Se funcionar eu adiciono depois, se não eu arrumo os erros depois adiciono. local config = { receita = { 12326, 12325, 12324 }, positions = { {x = EDITAR, y = EDITAR, z = 7, stackpos = 255}, {x = EDITAR, y = EDITAR, z = 7, stackpos = 255}, {x = EDITAR, y = EDITAR, z = 7, stackpos = 255} }, novoItem = {12327, 1} } function onUse(cid, item, fromPosition, itemEx, toPosition) local items = {} for i = 1, #config.positions do local recipe = getThingFromPos(config.positions) if isInArray(config.receita, recipe.itemid) then table.insert(items, recipe) table.remove(config.receita, table.find(config.receita, recipe.itemid)) else local receitatring = "You need ".. getItemArticleById(config.receita[1]) .." ".. getItemNameById(recipe.itemid) for r = 2, #config.receita do receitatring = receitatring ..", ".. getItemArticleById(config.receita[r]) .." ".. getItemNameById(config.receita[r]) end doPlayerSendTextMessage(cid, 22, receitatring ..".") return FALSE end end doPlayerAddItem(cid, unpack(config.novoItem)) doSendMagicEffect(fromPosition, 14) doPlayerSendTextMessage(cid, 22, "You have found ".. config.novoItem[2] .." ".. getItemArticleById(config.novoItem[1]) .. " " .. getItemNameById(config.novoItem[1]) .. ".") return TRUE end
  14. para a chance ficar 99 é diferente Vou fazer pra você com 50% de chance pra ver. Seguinte, a variavel chance vai receber um valor entre 1 e 100. E embaixo ele vê se essse valor é 1 (1%), então da sucesso, se você mudou pra 50, vai continuar sendo 1%. Colocar mais chance ficaria algo assim: function onUse(cid, item, fromPosition, itemEx, toPosition) local successo = "You got druid addon." --mensagem caso ganhe local falha = "Sorry, you don't got the addon." --mensagem de falha if itemEx.itemid == 5659 then local chance = math.random(1,100) if chance > 50 then doPlayerSendTextMessage(cid, 22, successo) doTransformItem(item.uid, 5937) else doTransformItem(item.uid, 4870) doPlayerSendTextMessage(cid, 22, falha) end doTransformItem(itemEx.uid,5687) end return true end Que ai ele vai sortear um valor entre 1 e 100, e embaixo ele vê se o valor é maior que 50, ai da sucesso, caso o numero seja de 1 a 50 ele da falha.
  15. Não tem muito bem um topico, o melhor a se fazer é baixar direto do github, que ai você vai ter a ultima versão. Tfs: https://github.com/otland/forgottenserver/archive/master.zip Otx: https://github.com/mattyx14/otxserver/archive/otxserv3.zip
  16. The Forgotten Server, sem duvidas. Há algum tempo, se não desde sempre. Uma alternativa seria OTX, que é um fork do TFS com algumas (bastante) edições do Matty.
  17. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    Criar changename.php na pasta www/pages. <?php if(!defined('INITIALIZED')) exit; $changeNameCost = 600; if($logged) { if($account_logged->getCustomField('premium_points') >= $changeNameCost) { if($action == "") { echo '<span style="color:red;font-weight:bold">CHANGE NAME COSTS ' . $changeNameCost . ' PREMIUM POINTS!</span><br />'; echo '<form action="" mathod="post">'; echo '<input type="hidden" name="subtopic" value="changename" />'; echo '<input type="hidden" name="action" value="change" />'; echo '<b>Select player: </b><select name="player_id">'; $account_players = $account_logged->getPlayersList(); foreach($account_players as $player) { echo '<option value="' . $player->getID() . '">' . htmlspecialchars($player->getName()) . '</option>'; } echo '</select><br />'; echo '<b>New name: </b><input type="text" name="new_name" value="" /><br />'; echo '<input type="submit" value="Change name" />'; echo '</form>'; } elseif($action == "change") { $newchar_errors = array(); $newchar_name = ucwords(strtolower(trim($_REQUEST['new_name']))); if(empty($newchar_name)) $newchar_errors[] = 'Please enter a new name for your character!'; if(!check_name_new_char($newchar_name)) $newchar_errors[] = 'This name contains invalid letters, words or format. Please use only a-Z, - , \' and space.'; $check_name_in_database = new Player(); $check_name_in_database->find($newchar_name); if($check_name_in_database->isLoaded()) $newchar_errors[] = 'This name is already used. Please choose another name!'; $charToEdit = new Player($_REQUEST['player_id']); if(!$charToEdit->isLoaded()) $newchar_errors[] = 'This player does not exist.'; if($charToEdit->isOnline()) $newchar_errors[] = 'This player is ONLINE. Logout first.'; elseif($account_logged->getID() != $charToEdit->getAccountID()) $newchar_errors[] = 'This player is not on your account.'; if(empty($newchar_errors)) { echo 'Name of character <b>' . htmlspecialchars($charToEdit->getName()) . '</b> changed to <b>' . htmlspecialchars($newchar_name) . '</b>'; $charToEdit->setName($newchar_name); $charToEdit->save(); $account_logged->setCustomField('premium_points', $account_logged->getCustomField('premium_points') - $changeNameCost); } else { echo 'Some errors occured:<br />'; foreach($newchar_errors as $e) { echo '<li>' . $e . '</li>'; } echo '<br /><a href="?subtopic=changename"><b>BACK</b></a>'; } } } else echo 'You don\'t have premium points. You need ' . $changeNameCost . '.'; } else echo 'You must login first.'; layouts/tibiacom/layout.php copia algum botão e coloca la embaixo em shop e aponta para o arquivo acima.
  18. Como é 10.90 você provavelmente esteja usando site, então você tem que editar o townid no www/config/config.php, os townid estão disponiveis no map editor. Não sei se é necessario também editar a posx, posy e posz dos samples.
  19. Copia o items.xml e items.otb da pasta do seu ot e cola em: C:/arquivos de programas/remeres map editor/data/versão
  20. Hmm, minhas sources são diferentes. Faz o seguinte: if(Position::areInRange<1,1,0>(movingCreature->getPosition(), player->getPosition()) && delay > 0 && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { Alterar para: if(Position::areInRange<1,1,0>(movingCreature->getPosition(), player->getPosition()) && delay > 2000 && !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere)) { (isso são 2 segundos, alterar para 1000 caso queira 1)
  21. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    copia um item do items.xml, da o id e os atributos que quiser. normal
  22. Tem tutorial no forum, é só seguir, por mais que não saiba depois vai ficar muito melhor de fazer tudo, te da a opção de usar site, war system e muito mais facilidade para alterar algo ou resetar a databae.
  23. Tentou deletar com o server off? Não uso sqlite. Também não aconselho sqlite, é horrivel. Se ver qualquer tutorial de uniserver, ou até xampp que é mais usado, você tem um server sql que é 10x melhor.
  24. DukeeH postou uma resposta no tópico em Suporte Tibia OTServer
    qual é o item?

Informação Importante

Confirmação de Termo