Jump to content
Close

Marco Oliveira

Member
  • Content Count

    67
  • Joined

  • Last visited

3 Followers

About Marco Oliveira

  • Rank
    Blacksmith

Profile Information

  • Gender
    Masculino
  • Localization
    Monte Azul - MG
  • I am
    Tibiano

Recent Profile Visitors

1368 profile views
  1. Substitua sua função por: function Creature:onTargetCombat(target) if not self then return true end if not __picif[target.uid] then if target:isMonster() then target:registerEvent("RewardSystemSlogan") __picif[target.uid] = {} end end if target:isPlayer() then if self:isMonster() then local protectionStorage = target:getStorageValue(Storage.combatProtectionStorage) if target:getIp() == 0 then -- If player is disconnected, monster shall ignore to attack the player if target:isPzLocked() then end if protectionStorage <= 0 then addEvent(removeCombatProtection, 30 * 1000, target.uid) target:setStorageValue(Storage.combatProtectionStorage, 1) elseif protectionStorage == 1 then self:searchTarget() return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end return true end if protectionStorage >= os.time() then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end if ((target:isMonster() and self:isPlayer() and target:getType():isPet() and target:getMaster() == self) or (self:isMonster() and target:isPlayer() and self:getType():isPet() and self:getMaster() == target)) then return RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE end if PARTY_PROTECTION ~= 0 then if self:isPlayer() and target:isPlayer() then local party = self:getParty() if party then local targetParty = target:getParty() if targetParty and targetParty == party then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end end if ADVANCED_SECURE_MODE ~= 0 then if self:isPlayer() and target:isPlayer() then if self:hasSecureMode() then return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER end end end if self:isPlayer() then if target and target:getName() == staminaBonus.target then local name = self:getName() if not staminaBonus.events[name] then staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name) end end end return true end
  2. na pasta raiz do seu site crie um arquivo chamado login.php e dentro dele adicione o seguinte código: <?php $_GET['subtopic'] = 'login'; $_REQUEST['subtopic'] = 'login'; include('index.php'); na pasta pages crie outro arquivo chamado login.php e adicione o seguinte código: <?php header('Content-Type: application/json'); if(!defined('INITIALIZED')) exit; function sendError($msg){ $ret = []; $ret["errorCode"] = 3; $ret["errorMessage"] = $msg; die(json_encode($ret)); } $request = file_get_contents('php://input'); $result = json_decode($request); $action = isset($result->type) ? $result->type : ''; switch ($action) { case 'cacheinfo': die(json_encode([ 'playersonline' => $status['players'], 'twitchstreams' => 0, 'twitchviewer' => 0, 'gamingyoutubestreams' => 0, 'gamingyoutubeviewer' => 0 ])); break; case 'eventschedule': die(json_encode([ 'eventlist' => [] ])); break; case 'boostedcreature': die(json_encode([ 'boostedcreature' => false, ])); break; case 'login': $port = Website::getServerConfig()->getValue('gameProtocolPort'); $world = [ 'id' => 0, 'name' => Website::getServerConfig()->getValue('serverName'), 'externaladdressprotected' => Website::getServerConfig()->getValue('ip'), 'externalportprotected' => $port, 'externaladdressunprotected' => Website::getServerConfig()->getValue('ip'), 'externalportunprotected' => $port, 'previewstate' => 0, 'location' => 'BRA', 'anticheatprotection' => false, 'pvptype' => array_search(Website::getServerConfig()->getValue('worldType'), ['pvp', 'no-pvp', 'pvp-enforced']), 'istournamentworld' => false, 'restrictedstore' => false, 'currenttournamentphase' => 2 ]; $characters = []; $account = null; $columns = 'name, level, sex, vocation, looktype, lookhead, lookbody, looklegs, lookfeet, lookaddons, deleted, lastlogin'; $account = new Account(); $account->loadByName($result->accountname); $current_password = Website::encryptPassword($result->password); if (!$account->isLoaded() || !$account->isValidPassword($result->password)) { sendError('Account name or password is not correct.'); } $players = $SQL->query("select {$columns} from players where account_id = " . $account->getId() . " order by name asc")->fetchAll(); foreach ($players as $player) { $characters[] = create_char($player); } $worlds = [$world]; $playdata = compact('worlds', 'characters'); $session = [ 'sessionkey' => "$result->accountname\n$result->password", 'lastlogintime' => (!$account) ? 0 : $account->getLastLogin(), 'ispremium' => (!$account) ? true : $account->isPremium(), 'premiumuntil' => (!$account) ? 0 : (time() + ($account->getPremDays() * 86400)), 'status' => 'active', 'returnernotification' => false, 'showrewardnews' => true, 'isreturner' => true, 'fpstracking' => false, 'optiontracking' => false, 'tournamentticketpurchasestate' => 0, 'emailcoderequest' => false ]; die(json_encode(compact('session', 'playdata'))); break; default: sendError("Unrecognized event {$action}."); break; } function create_char($player) { return [ 'worldid' => 0, 'name' => $player['name'], 'ismale' => intval($player['sex']) === 1, 'tutorial' => false, 'level' => intval($player['level']), 'vocation' => Website::getVocationName($player['vocation']), 'outfitid' => intval($player['looktype']), 'headcolor' => intval($player['lookhead']), 'torsocolor' => intval($player['lookbody']), 'legscolor' => intval($player['looklegs']), 'detailcolor' => intval($player['lookfeet']), 'addonsflags' => intval($player['lookaddons']), 'ishidden' => intval($player['deletion']) === 1, 'istournamentparticipant' => false, 'remainingdailytournamentplaytime' => 0 ]; }
  3. function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Attack the Monk and you will win 1 of stamina every 2 minutes training here.') return true end
  4. Em data/events/scripts/creature.lua procure por function Creature:onTargetCombat(target), a cima adicione o seguinte codigo: -- Increase Stamina when Attacking Trainer local staminaBonus = { target = 'Training Monk', period = 120000, -- time on miliseconds bonus = 1, -- gain stamina events = {} } local function addStamina(name) local player = Player(name) if not player then staminaBonus.events[name] = nil else local target = player:getTarget() if not target or target:getName() ~= staminaBonus.target then staminaBonus.events[name] = nil else player:setStamina(player:getStamina() + staminaBonus.bonus) staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name) end end end No mesmo arquivo procure por function Creature:onTargetCombat(target) e adicione o seguinte codigo a cima de return true if self:isPlayer() then if target and target:getName() == staminaBonus.target then local name = self:getName() if not staminaBonus.events[name] then staminaBonus.events[name] = addEvent(addStamina, staminaBonus.period, name) end end end
  5. A mensagem está localizada em houses.cpp dentro de void House::updateDoorDescription() const
  6. Tente utilizar o comando SET GLOBAL sql_mode='';
  7. Ative o ssl do xampp ou ignore o error!
  8. Correções recentes: Fixado SQL Inject em paginas. Fixado SQL Inject em Ajax. Fixado redirecionamento de URLS. Varias correções em layout e php. Melhor organização nas pasta layouts. Nova pagina de characters.php, agora com outfits e items (bootstrap style). Outfits agora são independentes, ultima versão tibia 12. Entre muitas outras correções.
  9. Poderia postar uma screenshot?
  10. Vá em file > import > map e salve o arquivo novamente.
  11. Mude as positions do templo na town da cidade principal, simples.
  12. Olá tudo bem? então, o error a seguir indica que o otb não é compatível com o servidor, você pode alterar isso nas sources ou se preferir mudar sua base (que é oque recomendo). Seu datapack é bem antigo pra ser sincero. Utilize o otx2 do mattyx, possui cast e muitas features, sem contar que é atualizado quase que diariamente. https://github.com/mattyx14/otxserver/tree/otxserv2

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...