Ir para conteúdo

igorlabanca

Membro
  • Registro em

  • Última visita

Tudo que igorlabanca postou

  1. Bom nesse script, o player que pisar nessa area, todos do servidor ganham yellow skull, porém eu gostaria que apenas quem tivesse na area ganhasse o yellow skull. function onThink(player, interval, item, position, lastPosition, fromPosition, toPosition) for posx = 1251,1259 do for posy = 716,724 do local pos = Position (posx, posy, 6) local creature = getTopCreature(pos).uid if isPlayer(creature) then player:setSkull(SKULL_YELLOW) return true end end end end Valeu Galera
  2. Manda msg sim !
  3. Bom eu gostaria de converter esse codigo de tfs 0.4 para 1.2. Já procurei alguns scripts semelhantes, porém não encontrei nada parecido for posx = 1252,1258 do -- checar posição X, começo e final da sala for posy = 705,705 do -- checar posicao Y, começo e final da sala local pos = {x=posx, y=posy, z=6, stackpos=253} -- posição que ira verificar se existe creatures (stackpos = 253) local creature = getTopCreature(pos).uid -- pega informações da creature da posição if isMonster(creature) then -- verifica se é um monster
  4. faz assim: em globalevents/scripts adicone um serversave.lua local shutdownAtServerSave = false -- deixe true se você quer desligar o servidor local cleanMapAtServerSave = false -- deixe true se quiser limpar o mapa local function serverSave() if shutdownAtServerSave then Game.setGameState(GAME_STATE_SHUTDOWN) else Game.setGameState(GAME_STATE_NORMAL) end if cleanMapAtServerSave then cleanMap() end saveServer() end local function secondServerSaveWarning() Game.broadcastMessage('Server is saving game in one minute. Please go to a safe place.', MESSAGE_STATUS_WARNING) addEvent(serverSave, 60000) end local function firstServerSaveWarning() Game.broadcastMessage('Server is saving game in 3 minutes. Please go to a safe place.', MESSAGE_STATUS_WARNING) addEvent(secondServerSaveWarning, 120000) end function onTime(interval) Game.broadcastMessage('Server is saving game in 5 minutes. Please go to a safe place.', MESSAGE_STATUS_WARNING) Game.setGameState(GAME_STATE_STARTUP) addEvent(firstServerSaveWarning, 120000) return not shutdownAtServerSave end em globalevents.xml <globalevent name="ServerSave" interval="1800000" script="serversave.lua" /> caso você ative a opção de desligar o servidor no lugar de interval="1800000" coloca time="04:55:00" O script não é de minha autoria, achei na base do meu servidor.
  5. Beleza @Kemmlly, se precisar do tópico original está aqui: Tópico Original Obrigado Mesmo, fico no aguardo !
  6. Pessoal eu tenho um servidor tfs 0.4 e estou passando para 1.2. Tenho um script que utiliza a função doStartTrade(cid, target, item). Aqui ela está em C++ e gostaria de colocar para TFS 1.2 pode ser tanto em C++ quanto em LUA. Obrigado !! int32_t LuaInterface::luaDoStartTrade(lua_State* L) { ScriptEnviroment* env = getEnv(); Item* item = env->getItemByUID(popNumber(L)); if(!item) { errorEx(getError(LUA_ERROR_ITEM_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* target = env->getPlayerByUID(popNumber(L)); Player* player = env->getPlayerByUID(popNumber(L)); if(!player || !target) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } if(g_game.internalStartTrade(player, target, item)) { lua_pushboolean(L, true); return 1; } return 1; }
  7. Tudo bem pessoal ? então... estou precisando muito que me ajudem a achar onde está o erro nesse codigo, existem três novas funções que foram criadas getInfo, getWarIds, getWars. Entretanto não estão funcionando, por causa de algum erro bobo de sintax, é o mesmo erro nas 3. Por favor preciso muito que alguem me ajude, pois só falta essa parte para concluir o site do meu servidor Quando a pagina de Guilds vai carregar aparece o seguinte erro Parse error: syntax error, unexpected '[' in C:\xampp\htdocs\classes\guild.php on line 277 Abaixo segue o código <?php if(!defined('INITIALIZED')) exit; class Guild extends ObjectData { const LOADTYPE_ID = 'id'; const LOADTYPE_NAME = 'name'; const LEVEL_NOT_IN_GUILD = 0; const LEVEL_MEMBER = 1; const LEVEL_VICE = 2; const LEVEL_LEADER = 3; const LEVEL_OWNER = 4; public static $table = 'guilds'; public $data = array('name' => null, 'ownerid' => null, 'creationdata' => null, 'motd' => null, 'description' => null, 'create_ip' => null, 'guild_logo' => null); public static $fields = array('id', 'name', 'ownerid', 'creationdata', 'motd', 'description', 'create_ip', 'guild_logo'); public $invitedPlayers; public $ranks; public $owner; public function __construct($search_text = null, $search_by = self::LOADTYPE_ID) { if($search_text != null) $this->load($search_text, $search_by); } public function load($search_text, $search_by = self::LOADTYPE_ID) { if(in_array($search_by, self::$fields)) $search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text); else new Error_Critic('', 'Wrong guild search_by type.'); $fieldsArray = array(); foreach(self::$fields as $fieldName) $fieldsArray[] = $this->getDatabaseHandler()->fieldName($fieldName); $this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch(); } public function loadById($id) { return $this->load($id, self::LOADTYPE_ID); } public function loadByName($name) { return $this->load($name, self::LOADTYPE_NAME); } public function save($forceInsert = false) { if(!isset($this->data['id']) || $forceInsert) { $keys = array(); $values = array(); foreach(self::$fields as $key) if($key != 'id') { $keys[] = $this->getDatabaseHandler()->fieldName($key); $values[] = $this->getDatabaseHandler()->quote($this->data[$key]); } $this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName(self::$table) . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $values) . ')'); $this->setID($this->getDatabaseHandler()->lastInsertId()); } else { $updates = array(); foreach(self::$fields as $key) $updates[] = $this->getDatabaseHandler()->fieldName($key) . ' = ' . $this->getDatabaseHandler()->quote($this->data[$key]); $this->getDatabaseHandler()->query('UPDATE ' . $this->getDatabaseHandler()->tableName(self::$table) . ' SET ' . implode(', ', $updates) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); } } public function delete() { if($this->isLoaded()) { foreach($this->getRanks(true) as $rank) { $rank->delete(); } $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); $_tmp = new self(); $this->data = $_tmp->data; $this->invitedPlayers = $_tmp->invitedPlayers; $this->ranks = $_tmp->ranks; $this->owner = $_tmp->owner; unset($_tmp); } else new Error_Critic('', __METHOD__ . '() - cannot delete, guild not loaded'); } public function kickPlayer($playerId) { if($playerId == $this->getOwnerID()) $this->delete(); else { $player = new Player($playerId); if($player->isLoaded()) { $player->setRank(); $player->save(); } } } public function getInvitedPlayers($forceReload = false) { return $this->getInvitations($forceReload); } public function getInvitations($forceReload = false) { if(!isset($this->invitedPlayers) || $forceReload) { $invitedPlayers = new DatabaseList('Player'); $filterGuild = new SQL_Filter(new SQL_Field('guild_id', 'guild_invites'), SQL_Filter::EQUAL, $this->getID()); $filterPlayer = new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'guild_invites')); $invitedPlayers->setFilter(new SQL_Filter($filterGuild, SQL_Filter::CRITERIUM_AND, $filterPlayer)); $invitedPlayers->addOrder(new SQL_Order(new SQL_Field('name', 'players'))); $this->invitedPlayers = $invitedPlayers; } return $this->invitedPlayers; } public function addInvitation($playerId, $reloadInvites = false) { $this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName('guild_invites') . ' (' . $this->getDatabaseHandler()->fieldName('player_id') . ', ' . $this->getDatabaseHandler()->fieldName('guild_id') . ') VALUES (' . $this->getDatabaseHandler()->quote($playerId) . ', ' . $this->getDatabaseHandler()->quote($this->getID()) . ')'); if($reloadInvites) $this->getInvitations(true); } public function removeInvitation($playerId) { $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName('guild_invites') . ' WHERE ' . $this->getDatabaseHandler()->fieldName('player_id') . ' = ' . $this->getDatabaseHandler()->quote($playerId) . ' AND ' . $this->getDatabaseHandler()->fieldName('guild_id') . ' = ' . $this->getDatabaseHandler()->quote($this->getID())); } public function isInvited($playerId, $forceReload = false) { foreach($this->getInvitations($forceReload) as $invitedPlayer) if($invitedPlayer->getID() == $playerId) return true; return false; } public function getRanks($forceReload = false) { if(!isset($this->ranks) || $forceReload) { $ranks = new DatabaseList('GuildRank'); $ranks->setFilter(new SQL_Filter(new SQL_Field('guild_id'), SQL_Filter::EQUAL, $this->getID())); $ranks->addOrder(new SQL_Order(new SQL_Field('level'), SQL_Order::DESC)); $this->ranks = $ranks; } return $this->ranks; } public function getOwner($forceReload = false) { if(!isset($this->owner) || $forceReload) $this->owner = new Player($this->getOwnerID()); return $this->owner; } public function setOwner($owner) { $this->owner = $owner; $this->setOwnerID($owner->getID()); } public function getGuildLogoLink() { return 'guild_image.php?id=' . $this->getID(); } public function getID(){return $this->data['id'];} public function setID($value){$this->data['id'] = $value;} public function getName(){return $this->data['name'];} public function setName($value){$this->data['name'] = $value;} public function getOwnerID(){return $this->data['ownerid'];} public function setOwnerID($value){$this->data['ownerid'] = $value;} public function getCreationData(){return $this->data['creationdata'];} public function setCreationData($value){$this->data['creationdata'] = $value;} public function getMOTD(){return $this->data['motd'];} public function setMOTD($value){$this->data['motd'] = $value;} /* * Custom AAC fields * create_ip , INT, default 0 * description , TEXT, default '' * guild_logo, MEDIUMBLOB, default NULL */ public function setCreateIP($value){$this->data['create_ip'] = $value;} public function getCreateIP(){return $this->data['create_ip'];} public function getDescription(){return $this->data['description'];} public function setDescription($value){$this->data['description'] = $value;} public function getGuildLogo() { return $this->data['guild_logo']; } public function setGuildLogo($mimeType, $fileData) { $this->data['guild_logo'] = time() . ';data:' . $mimeType . ';base64,' . base64_encode($fileData); } /* * for compability with old scripts */ public function setCreateDate($value){$this->data['creationdata'] = $value;} public function getCreateDate(){return $this->data['creationdata'];} public function getGuildRanksList(){return $this->getRanks();} public function getGuildRanks(){return $this->getRanks();} public function listInvites(){return $this->getInvitations();} public function invite($player){$this->addInvitation($player->getID());} public function deleteInvite($player){$this->removeInvitation($player->getID());} public function acceptInvite($player) { $ranks = new DatabaseList('GuildRank'); $ranks->setFilter(new SQL_Filter(new SQL_Field('guild_id'), SQL_Filter::EQUAL, $this->getID())); $ranks->addOrder(new SQL_Order(new SQL_Field('level'), SQL_Order::ASC)); // load rank with lowest access level if($rank = $ranks->getResult(0)) { $player->setRank($rank); $player->save(); $player->removeGuildInvitations(); } else new Error_Critic('', 'There is no rank in guild <b>' . htmlspecialchars($guild->getName()) . '</b>, cannot add player <b>' . htmlspecialchars($player->getName()) . '</b> to guild.'); } public function hasInvited($name) { foreach ($this->getInvitations() as $invite) { if ($invite->getName() == $name) { return true; } } return false; } public function find($name){$this->loadByName($name);} public function getInfo() { $members = 0; $totallevels = 0; $highestname = ''; $highestlevel = 0; $lowestname = ''; $lowestlevel = 1000; $online = 0; foreach ($this->getDatabaseHandler()->query("SELECT p.id, p.level, p.name FROM players AS p LEFT JOIN guild_membership AS gm ON gm.player_id = p.id WHERE gm.guild_id = " . self::getID() . " ORDER BY gm.rank_id, p.name;") as $player) { $members++; $totallevels += $player['level']; if ($player['level'] > $highestlevel) { $highestlevel = $player['level']; $highestname = $player['name']; } if ($player['level'] < $lowestlevel) { $lowestlevel = $player['level']; $lowestname = $player['name']; } $isOnline = $this->getDatabaseHandler()->query("SELECT `player_id` FROM `players_online` WHERE `player_id`= ".$player['id']." LIMIT 1;")->fetchAll(); $online = $isOnline ? $online + 1 : $online + 0; } return [ 'avg' => (int) ($totallevels / $members), 'total' => (int) $totallevels, 'highest' => [ 'level' => (int) $highestlevel, 'name' => $highestname ], 'lowest' => [ 'level' => (int) $lowestlevel, 'name' => $lowestname ], 'online' => (int) $online, 'members' => (int) $members ]; } public function getWarIds() { $warIds = []; foreach ($this->getDatabaseHandler()->query("SELECT `id` FROM `guild_wars` WHERE (`guild1` = " . $this->getID() . " OR `guild2` = " . $this->getID() . ")") as $war) { $warIds[] = $war['id']; } return $warIds; } public function getWars() { $tmpWars = []; $tmpWars['active'] = []; $tmpWars['declared'] = []; $tmpWars['history'] = []; $guildId = self::getID(); foreach ($this->getDatabaseHandler()->query("SELECT `guild_wars`.*, (SELECT COUNT(1) FROM `guildwar_kills` WHERE `guildwar_kills`.`warid` = `guild_wars`.`id` AND `guildwar_kills`.`killerguild` = `guild_wars`.`guild1`) guild1_kills, (SELECT COUNT(1) FROM `guildwar_kills` WHERE `guildwar_kills`.`warid` = `guild_wars`.`id` AND `guildwar_kills`.`killerguild` = `guild_wars`.`guild2`) guild2_kills FROM `guild_wars` LEFT JOIN `guilds` AS `g` ON `g`.`id` = `guild_wars`.`guild1` LEFT JOIN `guilds` AS `e` ON `e`.`id` = `guild_wars`.`guild2` WHERE (`guild1` = " . $guildId . " OR `guild2` = " . $guildId . ")") as $war) { switch($war['status']) { case 0: { array_push($tmpWars['declared'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], ] ); break; } case 1: { array_push($tmpWars['active'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], ] ); break; } case 4: { array_push($tmpWars['history'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], 'ended' => $war['ended'], ] ); break; } default: { break; } } } return $tmpWars; } } <?php if(!defined('INITIALIZED')) exit; class Guild extends ObjectData { const LOADTYPE_ID = 'id'; const LOADTYPE_NAME = 'name'; const LEVEL_NOT_IN_GUILD = 0; const LEVEL_MEMBER = 1; const LEVEL_VICE = 2; const LEVEL_LEADER = 3; const LEVEL_OWNER = 4; public static $table = 'guilds'; public $data = array('name' => null, 'ownerid' => null, 'creationdata' => null, 'motd' => null, 'description' => null, 'create_ip' => null, 'guild_logo' => null); public static $fields = array('id', 'name', 'ownerid', 'creationdata', 'motd', 'description', 'create_ip', 'guild_logo'); public $invitedPlayers; public $ranks; public $owner; public function __construct($search_text = null, $search_by = self::LOADTYPE_ID) { if($search_text != null) $this->load($search_text, $search_by); } public function load($search_text, $search_by = self::LOADTYPE_ID) { if(in_array($search_by, self::$fields)) $search_string = $this->getDatabaseHandler()->fieldName($search_by) . ' = ' . $this->getDatabaseHandler()->quote($search_text); else new Error_Critic('', 'Wrong guild search_by type.'); $fieldsArray = array(); foreach(self::$fields as $fieldName) $fieldsArray[] = $this->getDatabaseHandler()->fieldName($fieldName); $this->data = $this->getDatabaseHandler()->query('SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $search_string)->fetch(); } public function loadById($id) { return $this->load($id, self::LOADTYPE_ID); } public function loadByName($name) { return $this->load($name, self::LOADTYPE_NAME); } public function save($forceInsert = false) { if(!isset($this->data['id']) || $forceInsert) { $keys = array(); $values = array(); foreach(self::$fields as $key) if($key != 'id') { $keys[] = $this->getDatabaseHandler()->fieldName($key); $values[] = $this->getDatabaseHandler()->quote($this->data[$key]); } $this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName(self::$table) . ' (' . implode(', ', $keys) . ') VALUES (' . implode(', ', $values) . ')'); $this->setID($this->getDatabaseHandler()->lastInsertId()); } else { $updates = array(); foreach(self::$fields as $key) $updates[] = $this->getDatabaseHandler()->fieldName($key) . ' = ' . $this->getDatabaseHandler()->quote($this->data[$key]); $this->getDatabaseHandler()->query('UPDATE ' . $this->getDatabaseHandler()->tableName(self::$table) . ' SET ' . implode(', ', $updates) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); } } public function delete() { if($this->isLoaded()) { foreach($this->getRanks(true) as $rank) { $rank->delete(); } $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName(self::$table) . ' WHERE ' . $this->getDatabaseHandler()->fieldName('id') . ' = ' . $this->getDatabaseHandler()->quote($this->data['id'])); $_tmp = new self(); $this->data = $_tmp->data; $this->invitedPlayers = $_tmp->invitedPlayers; $this->ranks = $_tmp->ranks; $this->owner = $_tmp->owner; unset($_tmp); } else new Error_Critic('', __METHOD__ . '() - cannot delete, guild not loaded'); } public function kickPlayer($playerId) { if($playerId == $this->getOwnerID()) $this->delete(); else { $player = new Player($playerId); if($player->isLoaded()) { $player->setRank(); $player->save(); } } } public function getInvitedPlayers($forceReload = false) { return $this->getInvitations($forceReload); } public function getInvitations($forceReload = false) { if(!isset($this->invitedPlayers) || $forceReload) { $invitedPlayers = new DatabaseList('Player'); $filterGuild = new SQL_Filter(new SQL_Field('guild_id', 'guild_invites'), SQL_Filter::EQUAL, $this->getID()); $filterPlayer = new SQL_Filter(new SQL_Field('id', 'players'), SQL_Filter::EQUAL, new SQL_Field('player_id', 'guild_invites')); $invitedPlayers->setFilter(new SQL_Filter($filterGuild, SQL_Filter::CRITERIUM_AND, $filterPlayer)); $invitedPlayers->addOrder(new SQL_Order(new SQL_Field('name', 'players'))); $this->invitedPlayers = $invitedPlayers; } return $this->invitedPlayers; } public function addInvitation($playerId, $reloadInvites = false) { $this->getDatabaseHandler()->query('INSERT INTO ' . $this->getDatabaseHandler()->tableName('guild_invites') . ' (' . $this->getDatabaseHandler()->fieldName('player_id') . ', ' . $this->getDatabaseHandler()->fieldName('guild_id') . ') VALUES (' . $this->getDatabaseHandler()->quote($playerId) . ', ' . $this->getDatabaseHandler()->quote($this->getID()) . ')'); if($reloadInvites) $this->getInvitations(true); } public function removeInvitation($playerId) { $this->getDatabaseHandler()->query('DELETE FROM ' . $this->getDatabaseHandler()->tableName('guild_invites') . ' WHERE ' . $this->getDatabaseHandler()->fieldName('player_id') . ' = ' . $this->getDatabaseHandler()->quote($playerId) . ' AND ' . $this->getDatabaseHandler()->fieldName('guild_id') . ' = ' . $this->getDatabaseHandler()->quote($this->getID())); } public function isInvited($playerId, $forceReload = false) { foreach($this->getInvitations($forceReload) as $invitedPlayer) if($invitedPlayer->getID() == $playerId) return true; return false; } public function getRanks($forceReload = false) { if(!isset($this->ranks) || $forceReload) { $ranks = new DatabaseList('GuildRank'); $ranks->setFilter(new SQL_Filter(new SQL_Field('guild_id'), SQL_Filter::EQUAL, $this->getID())); $ranks->addOrder(new SQL_Order(new SQL_Field('level'), SQL_Order::DESC)); $this->ranks = $ranks; } return $this->ranks; } public function getOwner($forceReload = false) { if(!isset($this->owner) || $forceReload) $this->owner = new Player($this->getOwnerID()); return $this->owner; } public function setOwner($owner) { $this->owner = $owner; $this->setOwnerID($owner->getID()); } public function getGuildLogoLink() { return 'guild_image.php?id=' . $this->getID(); } public function getID(){return $this->data['id'];} public function setID($value){$this->data['id'] = $value;} public function getName(){return $this->data['name'];} public function setName($value){$this->data['name'] = $value;} public function getOwnerID(){return $this->data['ownerid'];} public function setOwnerID($value){$this->data['ownerid'] = $value;} public function getCreationData(){return $this->data['creationdata'];} public function setCreationData($value){$this->data['creationdata'] = $value;} public function getMOTD(){return $this->data['motd'];} public function setMOTD($value){$this->data['motd'] = $value;} /* * Custom AAC fields * create_ip , INT, default 0 * description , TEXT, default '' * guild_logo, MEDIUMBLOB, default NULL */ public function setCreateIP($value){$this->data['create_ip'] = $value;} public function getCreateIP(){return $this->data['create_ip'];} public function getDescription(){return $this->data['description'];} public function setDescription($value){$this->data['description'] = $value;} public function getGuildLogo() { return $this->data['guild_logo']; } public function setGuildLogo($mimeType, $fileData) { $this->data['guild_logo'] = time() . ';data:' . $mimeType . ';base64,' . base64_encode($fileData); } /* * for compability with old scripts */ public function setCreateDate($value){$this->data['creationdata'] = $value;} public function getCreateDate(){return $this->data['creationdata'];} public function getGuildRanksList(){return $this->getRanks();} public function getGuildRanks(){return $this->getRanks();} public function listInvites(){return $this->getInvitations();} public function invite($player){$this->addInvitation($player->getID());} public function deleteInvite($player){$this->removeInvitation($player->getID());} public function acceptInvite($player) { $ranks = new DatabaseList('GuildRank'); $ranks->setFilter(new SQL_Filter(new SQL_Field('guild_id'), SQL_Filter::EQUAL, $this->getID())); $ranks->addOrder(new SQL_Order(new SQL_Field('level'), SQL_Order::ASC)); // load rank with lowest access level if($rank = $ranks->getResult(0)) { $player->setRank($rank); $player->save(); $player->removeGuildInvitations(); } else new Error_Critic('', 'There is no rank in guild <b>' . htmlspecialchars($guild->getName()) . '</b>, cannot add player <b>' . htmlspecialchars($player->getName()) . '</b> to guild.'); } public function hasInvited($name) { foreach ($this->getInvitations() as $invite) { if ($invite->getName() == $name) { return true; } } return false; } public function find($name){$this->loadByName($name);} public function getInfo() { $members = 0; $totallevels = 0; $highestname = ''; $highestlevel = 0; $lowestname = ''; $lowestlevel = 1000; $online = 0; foreach ($this->getDatabaseHandler()->query("SELECT p.id, p.level, p.name FROM players AS p LEFT JOIN guild_membership AS gm ON gm.player_id = p.id WHERE gm.guild_id = " . self::getID() . " ORDER BY gm.rank_id, p.name;") as $player) { $members++; $totallevels += $player['level']; if ($player['level'] > $highestlevel) { $highestlevel = $player['level']; $highestname = $player['name']; } if ($player['level'] < $lowestlevel) { $lowestlevel = $player['level']; $lowestname = $player['name']; } $isOnline = $this->getDatabaseHandler()->query("SELECT `player_id` FROM `players_online` WHERE `player_id`= ".$player['id']." LIMIT 1;")->fetchAll(); $online = $isOnline ? $online + 1 : $online + 0; } return [ 'avg' => (int) ($totallevels / $members), 'total' => (int) $totallevels, 'highest' => [ 'level' => (int) $highestlevel, 'name' => $highestname ], 'lowest' => [ 'level' => (int) $lowestlevel, 'name' => $lowestname ], 'online' => (int) $online, 'members' => (int) $members ]; } public function getWarIds() { $warIds = []; foreach ($this->getDatabaseHandler()->query("SELECT `id` FROM `guild_wars` WHERE (`guild1` = " . $this->getID() . " OR `guild2` = " . $this->getID() . ")") as $war) { $warIds[] = $war['id']; } return $warIds; } public function getWars() { $tmpWars = []; $tmpWars['active'] = []; $tmpWars['declared'] = []; $tmpWars['history'] = []; $guildId = self::getID(); foreach ($this->getDatabaseHandler()->query("SELECT `guild_wars`.*, (SELECT COUNT(1) FROM `guildwar_kills` WHERE `guildwar_kills`.`warid` = `guild_wars`.`id` AND `guildwar_kills`.`killerguild` = `guild_wars`.`guild1`) guild1_kills, (SELECT COUNT(1) FROM `guildwar_kills` WHERE `guildwar_kills`.`warid` = `guild_wars`.`id` AND `guildwar_kills`.`killerguild` = `guild_wars`.`guild2`) guild2_kills FROM `guild_wars` LEFT JOIN `guilds` AS `g` ON `g`.`id` = `guild_wars`.`guild1` LEFT JOIN `guilds` AS `e` ON `e`.`id` = `guild_wars`.`guild2` WHERE (`guild1` = " . $guildId . " OR `guild2` = " . $guildId . ")") as $war) { switch($war['status']) { case 0: { array_push($tmpWars['declared'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], ] ); break; } case 1: { array_push($tmpWars['active'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], ] ); break; } case 4: { array_push($tmpWars['history'], [ 'id' => $war['id'], 'name1' => $war['name1'], 'name2' => $war['name2'], 'guild1Kills' => $war['guild1_kills'], 'guild2Kills' => $war['guild2_kills'], 'started' => $war['started'], 'ended' => $war['ended'], ] ); break; } default: { break; } } } return $tmpWars; } }
  8. Lembrando que essa datapack contem erros criticos, um deles é a permissão do store inbox, e reawed system poder arrastar os itens pra dentro. Com isso o player que ficar red skull é so botar os itens lá dentro e não perder nada. A solução que eu encontrei foi adicionar em events/scripts/players.lua function Player:onMoveItem(item, count, fromPosition, toPosition, fromCylinder, toCylinder) if item:getActionId() == NOT_MOVEABLE_ACTION then self:sendCancelMessage('Sorry, not possible.') return false end if toPosition.x == CONTAINER_POSITION and toCylinder and toCylinder:getId() == 26052 then self:sendCancelMessage(RETURNVALUE_NOTPOSSIBLE) return false end if toPosition.x ~= CONTAINER_POSITION then return true end if item:getTopParent() == self and bit.band(toPosition.y, 0x40) == 0 then local itemType, moveItem = ItemType(item:getId()) if bit.band(itemType:getSlotPosition(), SLOTP_TWO_HAND) ~= 0 and toPosition.y == CONST_SLOT_LEFT then moveItem = self:getSlotItem(CONST_SLOT_RIGHT) elseif itemType:getWeaponType() == WEAPON_SHIELD and toPosition.y == CONST_SLOT_RIGHT then moveItem = self:getSlotItem(CONST_SLOT_LEFT) if moveItem and bit.band(ItemType(moveItem:getId()):getSlotPosition(), SLOTP_TWO_HAND) == 0 then return true end end if moveItem then local parent = item:getParent() if parent:getSize() == parent:getCapacity() then self:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_CONTAINERNOTENOUGHROOM)) return false else return moveItem:moveTo(parent) end end end if toPosition.x == CONTAINER_POSITION then local containerId = toPosition.y - 64 local container = self:getContainerById(containerId) if not container then return true end -- Do not let the player insert items into either the Reward Container or the Reward Chest local itemId = container:getId() if itemId == ITEM_REWARD_CONTAINER or itemId == ITEM_REWARD_CHEST then self:sendCancelMessage('Sorry, not possible.') return false end -- The player also shouldn't be able to insert items into the boss corpse local tile = Tile(container:getPosition()) for _, item in ipairs(tile:getItems()) do if item:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2^31 - 1 and item:getName() == container:getName() then self:sendCancelMessage('Sorry, not possible.') return false end end end -- Do not let the player move the boss corpse. if item:getAttribute(ITEM_ATTRIBUTE_CORPSEOWNER) == 2^31 - 1 then self:sendCancelMessage('Sorry, not possible.') return false end return true end
  9. Bom eu tenho esse script e gostaria de converte-lo para tfs 1.2 ele não apresenta nenhum erro na distro. O script funciona da seguinte maneira, o player usa a chave com um certo action id na estatua que possui um certo unique id e é teleportado. O problema é que não apresenta nenhum erro na distro e não acontece nada. eu creio que deve ser algo relacionado a itemEx.uid, pois ele não passa dessa linha. function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 2091 and item.actionid == 666 and itemEx.uid == 1300 then local posit = {x=516,y=544,z=8} doTeleportThing(cid, posit, FALSE) doSendMagicEffect(posit,CONST_ME_SMALLCLOUDS) return true end if itemEx.uid == 1400 then local posit = {x=1574,y=478,z=7} if getPlayerPremiumDays(cid) > 0 then doTeleportThing(cid, posit, FALSE) doSendMagicEffect(posit,CONST_ME_SMALLCLOUDS) return true else doPlayerSendCancel(cid,"Somente jogadores VIP podem entrar aqui.") return true end end --joga pro andar de cima if item.itemid == 2091 and item.actionid == 3050 and itemEx.uid == 1410 then doRemoveItem(item.uid) local posit = {x=toPosition.x, y=toPosition.y, z=(toPosition.z-1)} doTeleportThing(cid, posit, FALSE) doSendMagicEffect(posit,CONST_ME_SMALLCLOUDS) return true end if item.itemid == 2091 and item.actionid == 3070 and itemEx.uid == 6109 then doRemoveItem(item.uid) local posit = {x=1305, y=1359, z=1} doTeleportThing(cid, posit, FALSE) doSendMagicEffect(posit,CONST_ME_SMALLCLOUDS) return true end return true end
  10. O sistema de Pvp Expert não está funcionando. Lua Script Error: [Modules Interface] data/modules/scripts/expertpvp/fightmodes.lua:onRecvbyte data/modules/scripts/expertpvp/fightmodes.lua:5: attempt to call method 'getPvpMode' (a nil value) stack traceback: [C]: in function 'getPvpMode' data/modules/scripts/expertpvp/fightmodes.lua:5: in function <data/modules/scripts/expertpvp/fightmodes.lua:1>
  11. Bom não sei se é possivel, porém eu tive a ideia de fazer uma proteção para cada vocação, funcionaria da seguinte maneira. quando o player logar o player ganha uma storage, que vai verificar se ele for druid vai adicionar os elementos de druid como proteção. se for sorcerer vai adicionar os elementos de sorc como proteção se for um druid 5% contra ice e tera. se for sorcerer 5% contra death e fire. Gostaria de saber se é possivel fazer isso.. Obrigado, fico no aguardo.
  12. O que é o Old Revolution? Old Revolution é um servidor de RPG com rates baixas que luta pelos jogadores que querem aquele sentimento único de jogar um servidor medieval, mantendo os elementos mais importantes do Tibia O servidor é baseado na historia do senhor do anéis e hobbit, desde a monstros, itens, vocações e o mapa das cidades. Índice Cliente: Cliente Próprio Versão: 10.37 Website: http://www.oldrevolution.com Experiência: 10x (por etapas) Treino de Habilidade: 5x Treino de Habilidade Mágica: 4x Nível de Proteção: 50 Sistemas totalmente exclusivos. Novas Classes Itens Balanceados e exclusivos. Doações não influenciam na dinâmica. Servidor dedicado 24/7 sem lag. Vocações Orc Uma raça deformada e forte, que combate contra as forças do bem. É recomendado que Orc's utilizem machados, pois dominam bastante essa habilidade. Por serem caçadores de extrema habilidade e força, os Orcs deixam de lado sua defesa e montarias para acertarem golpes poderosos. Elf Uma raça mística. São mais rápidos e habilidosos que os humanos. Há quem diga que são Semideuses e Imortais. Devido a sua grande destreza, eles não necessitam de montaria, elfos se especializaram na arte do arco e flecha, causando danos rápidos a quem se atreva a aproximar-se. Miner Os mineiros são humanos, são descendentes diretos dos primeiros anões guerreiros. Desde os primórdios desenvolveram habilidades com clavas para sobreviver ao mundo perigoso. Além da grande força da clava, eles possuem a sabedoria antiga da forja, podendo assim refinar equipamentos com muito mais força e resistencia pra suas batalhas. Archer Os Arqueiros surgiram quando os humanos tiveram seu primeiro contato amigável com os Elfs, que ensinaram como manobrar um arco. Com o passar do tempo e treinamento, os arqueiros evoluíram para armas mais pesadas, devido a seu rigoroso treinamento, aprenderam a dar golpes certeiros com palestras (crossbow) e a manobrar lanças e escudos pesados para sobreviver. Knight A muralha! Knights são treinados desde os primeiros anos de vida a se defender, defender suas tropas e cidades! Quando possuem maestria e harmonia com sua espada e escudo são duríssimos adversário, conseguindo se proteger de um bom numero de adversário e ainda assim desferir poderosos golpes. Com sua alta resistência, poderosa armadura e escudo, são grandes obstáculos para quem tentar derrotá-los. Druid Druidas são mestiços de Elfos e Humanos, que herdaram parte da essência de cada raça. Druidas são sacerdotes dedicados ao zelo a vida e a natureza. Graças a sua forte ligação com os poderes da natureza, eles aprenderam a usar feitiços de magia branca para ajudar o próximo, a natureza e a se defender dos perigos do mundo perdido. Controlam os elementos terra e gelo, sendo capazes de dar assistência para sobrevivência e ainda causar danos poderosos, nunca subestime um druida em seu habitat. Sorcerer Há quem diga que o primeiro sorcerer foi um homem ambicioso que vendeu sua alma pro próprio demônio, em troca de um poder de destruição sem limites, com um alto custo, servir as trevas para toda eternidade. Com o passar do tempo, ele precisou repassar seus ensinamentos obscuros a novos discípulos, controlando os elementos morte, fogo e eletricidade. Poucos foram os que escaparam para contar a história após cruzarem com um temível mago, apesar de sua baixa resistência ele é capaz de acabar com exércitos com um único encantamento. Quests O servidor possui mais de 100 quests. Também City quests, cada cidade e cada nível é possível fazer uma city quest em grupo ou solo, dependendo no nível e da cidade. Comando (/ir) O comando /ir, permite o jogador se teleportar para cidades e hunt's. Para saber as cidades e hunts que você pode acessar, basta digitar "/ir". ex: /ir edoras. Treinadores As cidades de Minas Tirith e Dunedain, possui treinadores exclusivos. A cada 30 minutos os jogadores que estão nos treinadores são kikados automaticamente. Caso você tenha uma house pode optar pelo treinamento offline na sua cama. Bosses A cada 30 minutos um boss é sorteado para nascer. O servidor Possui mais de 30 bosses, fora as raids. TradeVIP Você pode vender dias de VIP para outros jogadores usando o comando !tradevip ex: !tradevip ciclano, 2 Refinamento Permite aprimorar as armas e armaduras. Para aprimorar as armas é necessário ser um miner, ter os itens Iron Hammer e iron Ore. Mas cuidado, você pode quebrar o item. Iron Ore você adquire nas montanhas , basta usar uma pick sobre elas. Guild House Localizada em Dol Guldur a guild house só pode ser dominada entre as 22:00 e 23:00. Ela tem como objetivo oferecer proteção fora desse horario para escapatórias e um campo imenso de blueberrys. além de 30k diário para jogadores de level 80+. Vale salientar que para dominar a guild house é necessário ter uma guild. e jogadores não fragam quando estão em combate na Guild House Blueberry Você pode colher Blueberrys nos campos de dol, belfallas e no subterraneo da guild house. E trocar nos npcs por mana potion, que estão localizados em condado ou argond. Mapa O mapa conta com: 16 cidades e vilarejos. 560 casas 1200 monstros Dimensão do Mapa: 2000 x 1600 Jogue agora! Acesse agora nosso site e crie sua conta: www.oldrevolution.com Facebook.com/oldrevolutionServer
  13. Infelizmente eu perdi a source do meu ot, eu acredito que no comando /r deve ter alguma função que remova os itens...
  14. Bom no meu servidor existe uma alavanca e os player ficam jogando itens em cima da alavanca para os players não puxarem. Preciso de um script que remova os itens que ficam sobre dessa alavanca, de 5 em 5 segundos. Obrigado.
  15. Pessoal estou precisando de um script que funcione da seguinte maneira: No meu servidor possui um castelo, e uma certa guild domina esse castelo. O que eu preciso é de um npc que faça um warsystem (escudos) sem que a guild que domina o castelo precise aceitar (quem domina o castelo tem um globalstorage 123123). obs: Só quem pode pedir a warsystem é o leader da outra guild (que não domina o castelo). obs²: o pedido de war só pode ser feito entre as 22:00 - 23:00 obs³: quando der 23:00 a war system é cancelada.
  16. Pessoal estou precisando de um script que funcione da seguinte maneira: No meu servidor possui um castelo, e uma certa guild domina esse castelo. O que eu preciso é de um npc que faça um warsystem (escudos) sem que a guild que domina o castelo precise aceitar (quem domina o castelo tem um globalstorage 123123). obs: Só quem pode pedir a warsystem é o leader da outra guild (que não domina o castelo). obs²: o pedido de war só pode ser feito entre as 22:00 - 23:00 obs³: quando der 23:00 a war system é cancelada.
  17. Funiconou Cara valeu :D
  18. Bom o script vai fazer o seguinte, vai checar se tem alguém nos sqm's e caso tenha, vai mandar uma msg. Fiz um desse porém não funcionou, não deu nenhum erro na distro, mas tbm n mandou nenhuma msg pro player, quando estava no sqm function onThink(cid, interval) for posx = 1252,1264 do -- checar posição X, começo e final da sala for posy = 716,720 do -- checar posicao Y, começo e final da sala local pos = {x=posx, y=posy, z=6, stackpos=253} -- posição que ira verificar se existe um player local playerpos = getThingfromPos(pos) -- pega informações da creature da posição if isPlayer(playerpos.cid) then -- verifica se é um player doPlayerSendTextMessage(cid,18,"Test") end end end end
  19. Fala galera, tou voltando com um servidor e preciso de um script urgente o script vai funcionar da seguinte maneira. checar se o player possui tal item na bp se ele possuir o item o script vai remover o item e dar uma montaria x .
  20. Será que alguém poderia arrumar a source ? ela da debug quando loga pela primeira vez o personagem...

Informação Importante

Confirmação de Termo