Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 07/03/11 em todas áreas

  1. Tutorial Antigo, Mais a eu acho ele bem util xP e ainda uso essas técnicas de iluminação até hoje ;O Vocabulario: Air Round Brush= Aqueles brushs redondos "embaçados"
    4 pontos
  2. Vou postar o tão famoso Guild War System Com Escudos. Vou começar pelo site : Vá em Xampp/Htdocs e crie e um arquivo chamado wars.php,dentro add isto: <?php $main_content = "<h1 align=\"center\">Guild Wars</h1> <script type=\"text/javascript\"><!-- function show_hide(flip) { var tmp = document.getElementById(flip); if(tmp) tmp.style.display = tmp.style.display == 'none' ? '' : 'none'; } --></script> <a onclick=\"show_hide('information'); return false;\" style=\"cursor: pointer;\"><h1><center>» Click to se the commands «<center></h1></a> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\" id=\"information\" style=\"display: none;\";> <tr align=\"center\"><b>You must send this commands in GUILD CHAT.</tr> <tr style=\"background: #512e0b;\"><td align=\"center\" class=\"white\"><b>Command</b></td><td colspan=\"2\" align=\"center\" class=\"white\"><b>Description</b></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war invite, guild name, fraglimit</b></td><td>Sends an invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150<BR></font><B>(Invite a guild to war with 150 frags count.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war invite, guild name, fraglimit, money</b></td><td>Send the invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150, 10000</font><br><B> (Invite a guild to war with 150 frags count and payment of 10000 gold coins <- you need donate to guild to use it.)<B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war accept, guild name</b></td><td>Accepts the invitation to start a war. Example: <font color=red><BR>/war accept, Chickens</font><BR><B>(Accept the war against guild \"Chickens\".)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/war reject, guild name</b></td><td>Rejects the invitation to start a war. Example: <font color=red><BR>/war reject, Chickens</font><BR><B>(Reject a invitation to war from Chickens.)</B></td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/war cancel, guild name</b></td><td>Cancels the invitation. Example: <font color=red><BR>/war cancel, Chickens</font><br><b>(Cancel my guild invitation to war with Chickens.)</b></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance</b></td><td>See the guild balance - balance of money.</td></tr> <tr style=\"background: #F1E0C6;\"><td><b>/balance donate value</b></td><td>Deposits money on the guild's bank account. All players can donate. Example: <font color=red><BR>/balance donate 100000 </font><BR><B>(You will donate 100k to your guild balance.)</B></td></tr> <tr style=\"background: #D4C0A1;\"><td><b>/balance pick value</b></td><td>Withdraws money from the guild's bank account. Can be used only by the guild leader. Example: <font color=red><BR>/balance pick 100000 </font><BR><B>(You will withdraw 100k from your guild balance.)</B></td></tr> </table> <table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\"> <tr> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Aggressor</b></td> <td style=\"background: #512e0b\" class=\"white\"><b>Information</b></td> <td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Enemy</b></td> </tr><tr style=\"background: #F1E0C6;\">"; $count = 0; foreach($SQL->query('SELECT * FROM `guild_wars` WHERE `status` IN (1,4) OR ((`end` >= (UNIX_TIMESTAMP() - 604800) OR `end` = 0) AND `status` IN (0,5));') as $war) { $a = $ots->createObject('Guild'); $a->load($war['guild_id']); if(!$a->isLoaded()) continue; $e = $ots->createObject('Guild'); $e->load($war['enemy_id']); if(!$e->isLoaded()) continue; $alogo = $a->getCustomField('logo_gfx_name'); if(empty($alogo) || !file_exists('guilds/' . $alogo)) $alogo = 'default_logo.gif'; $elogo = $e->getCustomField('logo_gfx_name'); if(empty($elogo) || !file_exists('guilds/' . $elogo)) $elogo = 'default_logo.gif'; $count++; $main_content .= "<tr style=\"background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$a->getId()."\"><img src=\"guilds/".$alogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$a->getName()."</a></td> <td align=\"center\">"; switch($war['status']) { case 0: { $main_content .= "<b>Pending acceptation</b><br />Invited on " . date("M d Y, H:i:s", $war['begin']) . " for " . ($war['end'] > 0 ? (($war['end'] - $war['begin']) / 86400) : "unspecified") . " days. The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.")."<br />Will expire in three days."; break; } case 3: { $main_content .= "<s>Canceled invitation</s><br />Sent invite on " . date("M d Y, H:i:s", $war['begin']) . ", canceled on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 2: { $main_content .= "Rejected invitation<br />Invited on " . date("M d Y, H:i:s", $war['begin']) . ", rejected on " . date("M d Y, H:i:s", $war['end']) . "."; break; } case 1: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred; font-weight: bold;\">On a brutal war</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ($war['end'] > 0 ? ", will end up at " . date("M d Y, H:i:s", $war['end']) : "") . ".<br />The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment."); break; } case 4: { $main_content .= "<font size=\"6\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred;\">Pending end</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", signed armstice on " . date("M d Y, H:i:s", $war['end']) . ".<br />Will expire after reaching " . $war['frags'] . " frags. ".($war['payment'] > 0 ? "The payment is set to " . $war['payment'] . " bronze coins." : "There's no payment set."); break; } case 5: { $main_content .= "<i>Ended</i><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", ended on " . date("M d Y, H:i:s", $war['end']) . ". Frag statistics: <span style=\"color: red;\">" . $war['guild_kills'] . "</span> to <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span>."; break; } default: { $main_content .= "Unknown, please contact with gamemaster."; break; } } $main_content .= "<br /><br /><a onclick=\"show_hide('war-details:" . $war['id'] . "'); return false;\" style=\"cursor: pointer;\">» Details «</a></td> <td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$e->getId()."\"><img src=\"guilds/".$elogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$e->getName()."</a></td> </tr> <tr id=\"war-details:" . $war['id'] . "\" style=\"display: none; background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\"> <td colspan=\"3\">"; if(in_array($war['status'], array(1,4,5))) { $deaths = $SQL->query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level` FROM `guild_kills` gk LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `gk`.`war_id` = ' . $war['id'] . ' AND `p`.`deleted` = 0 ORDER BY `pd`.`date` DESC')->fetchAll(); if(!empty($deaths)) { foreach($deaths as $death) { $killers = $SQL->query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id` WHERE `k`.`death_id` = ' . $death['id'] . ' ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC')->fetchAll(); $count = count($killers); $i = 0; $others = false; $main_content .= date("j M Y, H:i", $death['date']) . " <span style=\"font-weight: bold; color: " . ($death['enemy'] == $war['guild_id'] ? "red" : "lime") . ";\">+</span> <a href=\"index.php?subtopic=characters&name=" . urlencode($death['name']) . "\"><b>".$death['name']."</b></a> "; foreach($killers as $killer) { $i++; if($killer['is_war'] != 0) { if($i == 1) $main_content .= "killed at level <b>".$death['level']."</b> by "; else if($i == $count && $others == false) $main_content .= " and by "; else $main_content .= ", "; if($killer['player_exists'] == 0) $main_content .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">"; $main_content .= $killer['player_name']; if($killer['player_exists'] == 0) $main_content .= "</a>"; } else $others = true; if($i == $count) { if($others == true) $main_content .= " and few others"; $main_content .= ".<br />"; } } } } else $main_content .= "<center>There were no frags on this war so far.</center>"; } else $main_content .= "<center>This war did not began yet.</center>"; $main_content .= "</td> </tr>"; } if($count == 0) $main_content .= "<tr style=\"background: ".$config['site']['darkborder'].";\"> <td colspan=\"3\">Currently there are no active wars.</td> </tr>"; $main_content .= "</table>"; $main_content .= '<div align="right"><small><b>Customized by: <a href="http://www.xtibia.com/forum/user/240289-walef-xavier">Walef Xavier</a></b></small></div><br />'; ?> Agora vá em Xampp/Htdocs/index.php e add o seguinte: case "wars"; $subtopic = "wars"; $topic = "Guild Wars"; include("wars.php"); break; Agora para finalizar a parte do site vá em Xampp/Htdocs/Layout/Tibiacom/layout.php e add o seguinte: <a href='?subtopic=wars'> <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_polls' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'><font color=red>Guild Wars</font></div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> </a> Agora vamos para seu Ot: Va em GlobalEvents/scripts/start.lua e add o seguinte: db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";") db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";") Agora vá em Lib e crie um arquivo .lua chamado 101-war,dentro add o seguinte: WAR_GUILD = 0 WAR_ENEMY = 1 Agora para finalizar vamos colocar os comandos em Talkactions ! Vá em Talkactions/scripts e crie dois arquivos chamados war.lua e balance.lua,dentro add o seguinte: War.lua function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment") _tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end tmp:free() end if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end db.query("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end db.query("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");") doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE) return true end if(not isInArray({"end", "finish"}, t[1])) then return false end local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild) db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free() db.query(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end balance.lua local function isValidMoney(value) if(value == nil) then return false end return (value > 0 and value <= 99999999999999) end function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(guild == 0) then return false end local t = string.explode(param, ' ', 1) if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then if(t[1] == 'pick') then local money = { tonumber(t[2]) } if(not isValidMoney(money[1])) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end money[2] = result:getDataLong('balance') result:free() if(money[1] > money[2]) then doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0) return true end if(not db.query('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then return false end doPlayerAddMoney(cid, money[1]) doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0) else doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0) end elseif(t[1] == 'donate') then local money = tonumber(t[2]) if(not isValidMoney(money)) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end if(getPlayerMoney(cid) < money) then doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0) return true end if(not doPlayerRemoveMoney(cid, money)) then return false end db.query('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;') doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0) else local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0) result:free() end return true end Agora vá em Talkactions/talkactions.xml e add as duas tags: <talkaction words="/war" channel="0" event="script" value="war.lua" desc="(Guild channel command) War management."/> <talkaction words="/balance" channel="0" event="script" value="balance.lua" desc="(Guild channel command) Balance management."/> Pronto,seu Guild War Systema está instalado...mas para funcionar necessitará das tabelas na sua database e do Tfs 0.4 .Vou posta-los abaixo,respectivamente. . Tabelas . Para quem ainda não sabe add tabelas a sua database,vou ensinar: Acesse seu phpmyadmin,digite sua senha (caso tenha),clique no nome da sua database a esquerda,assim que carregar a sua database clique em SQL lá em cima...Aparecerá um espaço em branco lá voce irá add as seguintes tabelas...e depois clicar em Executar. CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB; ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`; CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB; ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0; Pronto o Guild Wars System está totalmente instalado...falta apenas o Tfs 0.4 ! O meu The Forggoten Server 0.4 também comprei do mesmo cara que me vendeu o GWS,tenho um também que comprei na ChaitoSoft,mais conversei com eles por Msn e não permitirão que eu postasse pra ninguem,rsrs. Então vou postar o link do download e o scan: TFS 0.4 DEV Scan Ai está a DEV.... Também será necessario usar o items.xml e items.otb , a não ser que o que vc tenha seja compativel com o distro. Item.xml e otb Scan Obs: Este distro não carrega scripts que tenha a função "dbExecute.query",sempre que tiver mude para "db.query" .Todo o script ja está configurado para funcionar assim,não se preucupe. Só isso,obrigado a todos...que Deus Abençoe voces sempre !
    1 ponto
  3. nyuchiha

    [Aprenda A Fazer Seu Próprio Client]

    [ ~> Fazendo Seu Próprio Client <~ ] Fala Tibianos , Pokemianos , WODBOianos do Xtibia, Hoje estou aqui com o meu primeiro tutorial , com o objetivo de explicar tim tim por tim tim como fazer um Client.. Como eh meu primeiro tutorial estou começando com algo facil , espero que todos gostem: 1° passo , criando o executar do seu client com ip proprio : 2° passo , mudando a Pic do Client: 3° passo , mudando o icone do seu client: 4° passo , traduzindo seu client: 5° passo , criando um instalador para seu client: Link dos Programas usados: Então eh isso pessoal , espero ajudar alguem com esse Tutorial. Fico Devendo Imagens , + logo colocarei para facilitar Thx Edit: Imagens Adicionadas , espero que fique + facil de compreender.
    1 ponto
  4. Olá pessoal do XTibia Apesar de não ter muita experiencia com formatação de tópicos, estou aqui para informar-vos, criadores de Website que estão com problemas na instalação do Gesior, uma solução fácil e rápida desse erro: É o seguinte. Eu descobri que o php.ini ( arquivo que determina extensões , index e etc ) do xampp atualizado ( 1.7x), não está compatível com a linguagem .php dos arquivos do Gesior. Qual a solução ? Simples. Passo 1 Desinstale seu xampp e todos os seus serviços ( mysql, apache e os outros ). Passo 2 Baixe e instale esse xampp v 1.6.5 : Download Passo 3 Siga os passos do video-tutorial: Clique Aqui ! Pronto. Agora é so alegria . Se não deu certo, pode postar suas dúvidas aqui . Dá Rep + aí pessoal . Até mais pessoal, espero que dê certo, pois pra mim deu ! Créditos: Kamykasy ( EU ) Os comentários são o fogo do tópico !
    1 ponto
  5. Bom Galera Do Xtibia,fikei muito tempo sem postar entao to trazendo essa video aula com o tibia.dat e tibia.spr para vcs editarem seus mapas ja tinha feito otra video aula mas exclui entao resolvi faze-la novamente Espero Que Gostem E Comente Obrigado!! Para Melhor Visualização Assista Pelo Youtube De Sua Preferencia Clique Aqui Para Download Dos Arquivos
    1 ponto
  6. Baiakuda

    Powergamers E Most Online

    Vamos resumir isso Powergamers e Most Online são dois ranks que voce adiciona no seu site. Mais pra que server? Simples, ele serve pra ver quando de EXP o player ja pegou e a quanto tempo ele está online. Agora vamos parar de conversar e vamos ao Tutorial.(LEMBRANDO SÓ TESTEI EM Gesior Account Maker para Tfs 0.3+) 1- Como instalar? 1.1- vá na sua database (phpmyadmin)e adicione esse codigo em "SQL" (Se encontra ao canto superior do lado direito da sua tela): ALTER TABLE `players` ADD `exphist_lastexp` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist1` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist2` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist3` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist4` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist5` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist6` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist7` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetimetoday` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime1` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime2` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime3` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime4` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime5` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime6` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime7` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetimeall` BIGINT( 255 ) NOT NULL DEFAULT '0'; Após adicionar esse acima, adicione esse abaixo tambem: UPDATE `players` SET `exphist_lastexp`=`players`.`experience` 2- Criando Codigos .lua 2.1- Abra .../data/globalevents/scripts e crie um arquivo chamado history.lua function onThink(interval, lastExecution) if (tonumber(os.date("%d")) ~= getGlobalStorageValue(23456)) then setGlobalStorageValue(23456, (tonumber(os.date("%d")))) db.executeQuery("UPDATE `players` SET `onlinetime7`=players.onlinetime6, `onlinetime6`=players.onlinetime5, `onlinetime5`=players.onlinetime4, `onlinetime4`=players.onlinetime3, `onlinetime3`=players.onlinetime2, `onlinetime2`=players.onlinetime1, `onlinetime1`=players.onlinetimetoday, `onlinetimetoday`=0;") db.executeQuery("UPDATE `players` SET `exphist7`=players.exphist6, `exphist6`=players.exphist5, `exphist5`=players.exphist4, `exphist4`=players.exphist3, `exphist3`=players.exphist2, `exphist2`=players.exphist1, `exphist1`=players.experience-players.exphist_lastexp, `exphist_lastexp`=players.experience;") end db.executeQuery("UPDATE `players` SET `onlinetimetoday`=players.onlinetimetoday+60, `onlinetimeall`=players.onlinetimeall+60 WHERE `online` = 1;") return TRUE end 2.2- Abra agora .../ data / globalevents globalevents.xml/ e cole esta linha em qualquer lugar: <globalevent name="history" interval="60" event="script" value="history.lua"/> 3- Baixe os arquivos do link abaixo e salve em .../htdocs (Se você não baixar, não funcionará) http://www.speedyshare.com/files/17960064/pro-stats.zip 4- Agora você vai adicionar botões com links para novas páginas: Abra index.php, se encontra em: .../htdocs 4.1- Depois desta linha: case "highscores"; $topic = "Highscores"; $subtopic = "highscores"; include("highscores.php"); break; 4.2- Adicione esse codigo: caso "exphist"; $ Subtópico = "exphist"; $ Assunto = "Powergamers"; include ("exphist.php"); break; 4.3- Após essa linha: case "creatures"; $topic = "Creatures"; $subtopic = "creatures"; include("creatures.php"); break; 4.4- Cole: case "onlinetime"; $topic = "Onlinetime"; $subtopic = "onlinetime"; include("onlinetime.php"); break; 5- Abra .../htdocs /tibiacom/layout.php 5.1- Após: <a href='index.php?subtopic=guilds'> <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Guilds</div> 5.2- Adicione: <a href='index.php?subtopic=exphist'> <div id='submenu_exphist' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_exphist' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Powergamers</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> <a href='index.php?subtopic=onlinetime'> <div id='submenu_onlinetime' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_onlinetime' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Most Online</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div> Esse parte "6" não é obrigatoria, ela serve pra mostrar o quanto de exp voce obteve em um certo tempo na pagina do seu character. 6- Abra .../htdocs/characters.php. 6.1 antes dessa linha: //deaths list; 6.2- Adicione: $main_content .= '</TABLE>'; include "charts.php"; $main_content .= "<table><tr width=\"100%\"><td width='9%'></td><td><center>".InsertChart ( "charts.swf", "charts_library", "charinfo.php?type=exp&uniqueID=" . uniqid(rand(),true) . "&guid=" . $player->getId(), 500, 300 )."</center></td></tr></table>"; $main_content .= "<table><tr width=\"100%\"><td width='9%'></td><td><center>".InsertChart ( "charts.swf", "charts_library", "charinfo.php?type=online&uniqueID=" . uniqid(rand(),true) . "&guid=" . $player->getId(), 500, 300 )."</center></td></tr></table>"; $main_content .= "<table><tr width=\"100%\"><td width='9%'></td><td><center>".InsertChart ( "charts.swf", "charts_library", "charinfo.php?type=expgain&uniqueID=" . uniqid(rand(),true) . "&guid=" . $player->getId(), 500, 300 )."</center></td></tr></table>"; $main_content .= '</TD></TR></TABLE>'; FIM. Se alguem ja postou algo parecido aqui por favor diga. No momento creditos a mim Até mais xtibia.
    1 ponto
  7. Demonbholder

    Função Addevent(Func, Time, Arg)

    Fala pessoal, hoje eu tive um ideia para refazer a função addEvent que é uma função que acompanha somente a biblioteca de OtServers. Pensando nisso, eu resolvi refaze-la em lua pura. Como funciona: A função executa as funções desejadas depois de tantos milisegundos. Função function addEvent(func, time, ...) i = os.time() for a = 1, math.huge do if os.time() - i >= time/1000 then func(...) break end end end Parâmetros: Como primeiro parâmetro, usamos a função desejada, tal como, print, por exemplo. No segundo parâmetro usamos o tempo em milisegundos. Por último, colocamos os argumentos da função usada no primeiro parâmetro. Exemplo de Uso addEvent(print, 5000, "Inicio") addEvent(print, 6000, "Meio") addEvent(print, 7000, "Fim") A seguinte ordem acontecerá: S Palavra 5 > Inicio 6 > Meio 7 > Fim Bom, simples e útil. To sem saco para escrever aqui, abraços.
    1 ponto
  8. Stigal

    [Pokemon] Power Plant

    Ola XTibia, Venho Trazer Minha Power Plant Completa! Contem: 8 Andares Cheio De Pokemons Eletricos 2 Power Plants Praticamente Quase Juntas! Respown De "SHINY ELECTABUZZ" No Ultimo Andar! - Imagens: 1° Andar: http://imageshack.us/f/43/andar1.png/ - 2° Andar: http://imageshack.us/f/836/andar2.png/ - 3° Andar: http://imageshack.us/f/52/andar3.png/ - 4° Andar: http://imageshack.us/f/685/andar4.png/ - 5° Andar: http://imageshack.us/f/848/andar5.png/ - 6° Andar http://imageshack.us/f/194/andar6.png/ - 7° Andar http://imageshack.us/f/88/andar7.png/ - Ultimo Andar: http://imageshack.us...ltimoandar.png/ - Download: - Scan: [VirusTotal] [PowerPlant] Stigal - Creditos: Stigal
    1 ponto
  9. SkyDangerous

    Extreme Baiak Yourots

    Otserv Retirado por SkyDangerous Se quiser o otserv que faça ou procure em outro forum. Até +
    1 ponto
  10. Jeffer000

    Sistema M1-M12 Como Prometido

    Nome do sistema: M1 ~M12 Autor : Editado por min , retiado do server Pokemon EX 2.0 Descrição : Como prometido resolvi postar o meu sistema de move, é o mesmo que vem no pokemon EX 2.0 , porem arrumei a maioria dos bug que encontrei como o de o trainer falar "m7" e a falta de ataque em alguns pokemons, não tive tempo de add pokemons shinys porque estou add pokemons johto no meu OT, mas assim que eu colocar os shinys posto aqui novamente. Alterações feitas: Add magia strafe, metronome,eggbomb e aluma otra que não lembro, enfim que add foi poucas, mas a grande modificação esta na parte de não estar faltano nenhum ataque em nenhum pokemon, como antes q exeggcute so tinha m2. Link para download Aqui Instalação : Extraia os 12 arquivos em sua pasta data\talkactions\scripts e depois na pasta data\talkactions abra o arquivo talkactions.xml e coloque o seguinte : <talkaction words="m1" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="m2" case-sensitive="no" event="script" value="move2.lua"/> <talkaction words="m3" case-sensitive="no" event="script" value="move3.lua"/> <talkaction words="m4" case-sensitive="no" event="script" value="move4.lua"/> <talkaction words="m5" case-sensitive="no" event="script" value="move5.lua"/> <talkaction words="m6" case-sensitive="no" event="script" value="move6.lua"/> <talkaction words="m7" case-sensitive="no" event="script" value="move7.lua"/> <talkaction words="m8" case-sensitive="no" event="script" value="move8.lua"/> <talkaction words="m9" case-sensitive="no" event="script" value="move9.lua"/> <talkaction words="m10" case-sensitive="no" event="script" value="move10.lua"/> <talkaction words="m11" case-sensitive="no" event="script" value="move11.lua"/> <talkaction words="m12" case-sensitive="no" event="script" value="move12.lua"/> Ainda não tive tempo de congirar tambem os CD's e o ataque max e min, então o mais facil fica por parte de vocês ^^ Qualque duvida postem aqui que tentarei ajudalos.Abraços
    1 ponto
  11. Sherman I

    Peça Sua Assinatura Aqui!

    Bom, vou abrir um Topico, de pedidos e entregas, que SO EU vou anteder. Acho que assim vou ajudar a descarregar um pouco o pedidos e entregas, Mas pera ai, como sabem eu trampo, estudo, jogo bola, Intão vai ter algumas regras. SOMENTE SERA ACEITO 1 PEDIDO POR DIA, NÂO È UM DE CADA USUARIO, SO PODE TER UM PEDIDO NO TOPICO POR DIA. SE POSTAR UM PEDIDO E JA TIVER UM DE OUTRO USUARIO DESSE DIA, NÂO IREI ATENDER JAMAIS, NEM QUE POSTE DE NOVO. Resumindo se vc entrar no topico e ja tem um pedido postado na data do dia, esqueça, volte amanha. Outra regra é. VOCÊ TRAZ A IMAGEM, se não souber onde procurar, tente esse site: www.planetrenders.net, e manda o link de la pra eu poder salvar no pc. Se não tiver ideia do que quer, poste a imagem e deixa que eu me viro Bom é isso ai. Yours Sherman, Ta, gostei da sign que você fez, posso fazer algo pra agradecer? -pode sim, rep+ -e sempre visite esta seção, comente nos topicos na galeria, pra ajudar agente a manter a seção movimentada FAQ - posso pedir 1 avatar ou banner? Sim Quantos pedidos no mes? 1 por ussuario
    1 ponto
  12. Galera hj vim explicar como criar novos teleports com poke igual a svke q seria o camando assim h"e o nome da city só q isso será por ultimo pra quem ainda n tem em seu ot sever Pokemon vou postar os scripts explicando tudo.... 1° abra vá até a pasta data\movements\scripts e crie um arquivo.lua com o nome teleport e deixe isso dentro: 2° vá até a pasta data\movements e abra movements.xml e deixe isso la dentro 3° vá até a pasta data\talkactions\scripts em seu ot e crie um arquivo.lua chamado tele e deixe isso dentro: 4° vá até a pasta data\talkactions e abra talkactions.xml e deixe isso dentro: Agora irei explicar como editar e criar um novo local de teleport localize na pasta data\talkactions\scripts a aquivo tele.lua abra e localize: local lugar = { ["vermilion"] = { pos = {x=????, y=????, z=?},level = 5,price = 1000,n="Vermilion"}, o 1° nome ["vermilion"] tem q ser totalmente de letra minuscula e o 2° ["Vermilion"] com a 1° em maiuscula pos = {x=????, y=????, z=?} o pos = claro q siginifica posição la vc põe a posição q vc pretende q os player se teleportem no x = será a posição vertical no z = será a posição horizontal no z = será por exemplo se o local q vc deseja q os player se teleportem seja na terra plana = normal será 7 subsolo = 8 se for terraço será 6 assim por diante localize: str = str .. "Places to go :\n\nHouse\hVermilion esse sera tipo de um livro de quando o player dize /h aparecerá a lista de cidades na qual ele pode se teleportar pronto é só isso por hj ...bye Creditos : 89% Pokemon dash 11% Tiagohells por ter editado alguns bugs Se ajudei REP +++ AE!!! Duvidas Falem ae pessoal !!!..
    1 ponto
  13. Darker

    Tutorial Action Scripts

    Neste tutorial vou explicar como geralmente para trabalhar com os scripts de ação. 1 - Informações úteis (leia-se quando você é novo com isso) 2 - Comandos 3 - Fazer useables 4 - Fazer buscas Todos id item é usado em 3 e 4 são 7,6 ids item! -------------------------------------------------- ------------------ ---- 1 Informações Úteis Ao editar o arquivo. LUA /. Xml o melhor editor de usar é simples bloco de notas. Você também pode utilizar outros editores como o Word. Mas funciona melhor bloco de notas comigo. --- 1,1 Armazenar dados Quando o script em ação ot arquivos que você vai ter que entender o que significa alguma coisa. Uma das coisas importantes são itens nos quais você pode armazenar dados. Aqui vou dar um exemplo: Código: = número 1now o item de armazenamento "número" contém "1". Assim, cada vez vamos chamar o valor de armazenamento "item", teremos a resposta "1". Quando você gostaria de realizar cálculos matemáticos que você pode fazer assim: Código: = número + número 1Now não será adicionado um valor ao número de armazenamento. Você pode substituir com + -, / e alguns sinais mais matemática (havn't tentei todos eles). Se quiser peça para ser um número aleatório, seria assim: Código: math.random número = (1,10) 1,10 é o min / max número aleatório que o init deve receber. Também é possível armazenar texto dentro desses itens Starage. Um exemplo: Código: name = "oi, meu nome é Mindstorm" Agora, o armazenamento de itens "nome" conterá o texto "oi, meu nome é Mindstorm". Nestes dois exemplos que usei o armazenamento de itens "número" e "nome". No entanto, você pode alterá-los para o que quiser! --- 1.2 Se afirmações: E se comunicado diz apenas que um pedaço de código entre o "se" eo "fim" só será realizada quando as linhas de código entre o "se" eo "depois" está correto. Você sempre precisa para fechar um "if" e com "final". Exemplo: Código: Se a Apple == 1 então "Pedaço de código" Código endThis vai realizar o "pedaço de código" somente se o valor de armazenamento "maçã" é 1. Olhe para o "==" parte. Ao usar uma instrução if e você quiser comparar dois fatores que você deve usar o "=" signe duas vezes em vez de uma só vez! Se você deseja que o "if" para comparar múltiplos fatores, em um comunicado que será parecido com este: Código: Se maçã e pêra == 1 == 2 então "Pedaço de código" endNow o "pedaço de código" só será efectuada quando o armazenamento do valor da "maçã" é 1 e "pera" é 2. Claro que você pode colocar como muitos fatores em um if, contanto que você separe-os com um "e". Se você gostaria de realizar "pedaço de código", quando o armazenamento do valor da "maçã" é 1 ou quando o armazenamento do valor "pêra" é simplesmente substituir os dois "e" por um "ou". Digamos que você quer executar "pedaço de code1" quando o armazenamento do valor da "maçã" é 1 e "pedaço de code2" quando o valor de armazenamento "maçã" não é 1. Ela terá para olhar como este: Código: Se a Apple == 1 então "Pedaço de código" mais "Pedaço de code2" endYou simplesmente colocar um "else" entre o "se ... então" e "fim" do. Tudo que está entre o "se .. então" eo "outro" será realizada se o valor de armazenamento de maçãs é 1, tudo que está entre o "outro" e "final" será feita quando e maçã valor de loja é NOT 1 Agora, o que se quiser "pedaço de code1" a ser realizado quando o armazenamento do valor da "maçã" é 1 e "pedaço de code2" quando o armazenamento do valor da "maçã" é 2. Quando a Apple não é nem 1 nem 2 "pedaço de Code3" será realizado. Código: Se a Apple == 1 então "Pedaço de code1" maçã elseif == 2 então "Pedaço de code2" mais "Pedaço de Code3" endNow se o valor de armazenamento "maçã" é um "pedaço de code1" será realizada, mas se o valor de armazenamento "maçã" é de 2 ONLY "pedaço de code2" será realizado! Quando a maçã não é nem vermelho, nem verde "pedaço de código 3" será realizado. Você pode colocar quantas "elseif ... então" 's entre o "se ... então" e do "outro" como você quiser. Se você quiser que nada aconteça quando a maçã não é nem 1 ou 2 simples remover o mais "Pedaço de Code3" Quando você estiver usando "==" entre a Apple e 1 (se a maçã == 1, então) que você está comparando. Então você diz, se o valor de armazenamento de "maçã é um" então .... Quando você usa o "==" o sinal, a parte em frente ao "==" (maçã) na maioria das vezes representa um item de armazenamento. Mas seria bom se pudéssemos fazer outras coisas, em seguida, comparar os fatores! Portanto, podemos colocar algumas coisas diferentes entre o valor de armazenamento e, em seguida, coisa que você quer comparar (ou qualquer outra coisa) que ele. Exemplos: - Se a Apple> 1, então (só será realizado se o valor de armazenamento "maçã" é maior que 1) - Se a Apple <1 então (só será realizado se o valor de armazenamento "maçã" é menor que 1) - Se a Apple ~ = 1 então (só será realizado se o valor de armazenamento "maçã" não é 1) - Se> Apple = então (só será realizado se o valor de armazenamento "maçã" é 1, ou maior, então 1) - Se <= maçã então (só será realizado se o valor de armazenamento "maçã" é 1 ou menor que 1) --- 1.3 Para declarações Para afirmações são completamente diferentes, em seguida, se as declarações. Aqui está um exemplo: Código: 1,10 para a Apple fazer doPlayerSendTextMessage (cid, 18, maçã) "DoPlayerSendTextMessage (cid, 18, maçã)" final é uma função (mais sobre isso depois), que irá enviar uma mensagem para o jogador com um texto. Agora, o texto que será enviado é o contém da "maçã" de armazenamento de item. Neste código para declaração vai criar um loop. Ele irá repetir "doPlayerSendTextMessage (cid, 18, maçã)" até que a maçã valor de armazenamento é de 10. [/ I] para a maçã nr1, nr2 fazer [/ i]. Aqui nr1 é o número inicial, NR2 é o número de acabamento. O laço for vai automaticamente aumentar o valor do depósito item "maçã" cada vez que repete o ciclo. --- 1,4 demonstrações Repetir Repetir declarações vai repetir um trecho de código até que alguma coisa atinge um valor. Exemplo: Código: Repita "Pedaço de código" Até NumberOfApples> NumberOfPearsNow o "pedaço de código" wil ser repetido unstill o valor de armazenamento NumberOfApples é maior que o valor NumberOfPears armazenamento. Claro que você pode mudar NumberOfPears em um número. ---- 2 Comandos Quando a ação de script arquivos existem alguns comandos que são úteis para saber. Aqui vou explicar uma vez que você irá usar mais. "Função onUse (cid, item, frompos, item2, topos)": Isso é o que cada script de ação começa com. O onUse function () apenas significa que você está usando alguma coisa (um item ou outro qualquer). Existem alguns valores de armazenamento que são dadas no Action Script, que você não tem que configurar! Estes valores de armazenamento são: -Cid: A pessoa que usa o item (informação sobre a pessoa que estiver usando). -Item: Informações sobre o item que ele está usando. (Isso se você ctrl-clique sobre uma baga informações arbusto azul muito al sobre esse arbusto azul é armazenado dentro do valor de armazenamento de item). -Frompos: De que posição ele vai usar o item. -Item2: se ele está usando o item em alguma coisa, item2 contém dados desse item. -Topos: a posição que ele está usando para o item. Tenha em mente que onUse fuction () sempre termina com um "fim" - Não funciona "DoPlayerSay (cid," oi ", 2)": Este tipo de função vai um recado para o jogador. Agora, o jogador seria automaticamente dizer oi. "DoPlayerSendTextMessage (cid, 22," Hi .")": Se você digitar isso no seu script de ação que irá enviar a mensagem para Oi Cid. Cid é o jogador que está usando um objeto. 22 é a cor que a mensagem deve ser mostrada dentro (1-22 de trabalho, com certeza, maior que aqueles que eu não sei). numberFor exemplo, se um jogador usa uma alavanca esse script ação será enviar. Código: onUse Função (cid, item, frompos, item2, topos) doPlayerSendTextMessage (cid, 22, "oi") EndNow cada vez que um jogador usa uma alavanca que ele vai receber uma mensagem dizendo "oi" dentro de sua barra de chat. "DoPlayerSendCancel (cid," oi ")": Esta função se parece muito com o doPlayerSendTextMessage () função. A diferença é que você não pode usar as cores ea mensagem não será mostrado dentro do chat bar, mas na parte inferior da tela. (Normalmente, o texto "está esgotado" ou "você não tem mana suficiente" aparecem lá). "DoCreateItem (id, número, topos)": Esta função irá criar um item sobre o título que você usa. Id é o ID do item que deve ser criado, o número é a quantidade do mesmo, topos é a posição onde deve ser criado. Lembra quando você usar um topos item já é o coords "DoDecayItem (item.uid)": Esta função irá decair um item. Isso significa que ele irá retornar ao seu original item.id. (Por exemplo buracos pá voltar a montes de pedra). "DoPlayerAddHealth (cid, 100)": Isso vai acrescentar 100 para a saúde do jogador (CID). Você pode substituir 100 ofcourse por qualquer número que você gostaria! Você também pode fazer o 100 um número negativo, este número será removido da saúde dos jogadores. "DoPlayerAddMana (cid, 100)": Isso vai acrescentar 100 mana para o jogador (CID). (Também pode ser números negativos). "DoPlayerAddSkillTry (cid, 6,1)": Esta função irá adicionar uma habilidade. 6 significa que o tipo de habilidade 1 significa que a quantidade de habilidade para ser adicionado (em% não, ou como um nível, apenas como um número de tentativas). "DoPlayerSetMasterPos (cid, newpos)": Esta função irá definir a posição do novo mestre do jogador. A posição do mestre é a posição onde o jogador irá se ele morrer. "DoPlayerSetVocation (cid, COV)": Esta função irá definir a vocação jogadores. Voc é a vocação como um dígito (0-4). "DoPlayerRemoveMoney (cid, 100)": Esta função irá recolher uma quantidade de dinheiro a partir de mochila do jogador. (Você pode mudar 100 para o que você quiser). "DoPlayerAddItem (cid, quantidade, itemid)": Esta função irá adicionar um item na mochila jogadores. 2400 é o número do item (você pode encontrar os números dos itens no item.xml. 1 representa a quantidade desses itens deve ser dado. Quando 2400 seria um item que você pode entrar em quantidade (moedas de ouro, platina, moedas, runas) será o montante do mesmo. Portanto, se você mandaria (cid, 2152,100), é necessário adicionar 100 moedas de ouro dentro da mochila jogadores. Ao dizer (cid, runeid, 100) você gostaria de acrescentar uma runa do tipo runeid com 100 cargas dentro da mochila jogadores. Quando o ID do item que deseja enviar uma garrafa / caneca caneca de cerveja ou algo igualmente o número vai significar o contém da garrafa / mub / caneca de cerveja. (Para o que está dentro). Por exemplo: doPlayerAddItem (cid, bottleid, 0) daria uma garrafa com sangue no seu interior. "DoPlayerRemoveItem (cid, quantidade, itemid)": Esta função irá remover um item do inventário dos jogadores. "DoRemoveItem (item.uid, item.type)": Esta função seria remover o item que você está usando. "DoSetItemActionId (item.uid, newactionid)": Esta função irá alterar o itemid de um item em uma nova itemid. "DoSetItemText (item.uid," Oi ")": Esta função irá definir o texto de uma leitura (livros, cartas ...). Item.uid é a identificação do item original. "Oi" é o texto que você quer ser no interior do legível. (Vou dar mais explicações sobre isso no "4 - Fazer quests" parte). "DoShowTextWindow (item.uid, 0,0)": Esta função irá mostrar a caixa de texto na tela a partir de uma leitura (livros, cartas ....). Ele não pode colocar no texto que você vai ler! Item.uid é o item que deve ser mostrado pequena em cima. 0,0 é algumas coisas em geral (Você não deve usar essa função para tanto, a maioria dos itens lidos já estão definidos. "DoSendAnimatedText (posição," texto ", 180)": Esta função irá enviar um texto animado para a posição (dano, monstros gritando). A posição é a posição. "Texto" é o texto a ser mostrado (também pode ser um dígito). 180 é a cor. (180 é o vermelho, outros você terá que experimentar). "DoTeleportThing (cid, posição)": Esta função seria teleportar o jogador para uma nova posição. Exemplo Código: onUse Função (cid, item, frompos, item2, topos) posição = {x = 273, y = 433, z = 9} doTeleportThing (cid, posição) ": EndThe valor de armazenamento posição tem multiplicar itens armazenados. Depois de ter definido uma posição de, por exemplo, "posição = {x = 273, y = 433, z = 9}" você sempre pode mudar apenas as coordenadas X assim: Position.x 272 = "DoSendMagicEffect (posição 2)": Esta função simplesmente envia um efeito mágico para uma posição. Os valores de posição podem ser armazenados da mesma forma como no doTeleportThing () função. 2 significa que o efeito mágico. Eu acho que estes podem variar de 1-15 ou algo parecido. Eu não sei o que todos estes efeitos mágicos fazer (2 puf = 12 é bolha teletransporte). "DoTransformItem (item.uid, 1945)": Com esta função você pode alterar um item existente em um outro item. Ao utilizar esta função, o item que você clicou irá mudar para o 1945 itemid (a oeste da alavanca apontando, neste caso). "DoSummonCreature (" guerreiro orc ", a posição)" Esta função irá invocar uma criatura em uma posição que você definiu. (A posição é um valor de armazenamento). "DoPlayerFeed (cid, alimentos)"; Esta função irá alimentar o jogador uma quantidade de alimentos. Eu não sei a quantidade comum para qualquer tipo de alimento embora. Você terá que experimentar com ela. - Obter funções "GetPlayerAcces (cid)": Essa função vai ter o acesso do leitor. Por exemplo: = Acesso getPlayerAcces (CID) O valor de armazenamento de acesso passará a conter o número de acesso do leitor. "GetPlayerGuildId (cid)": Esta função irá fazer os jogadores da guilda id. "GetPlayerHealth (cid)": Essa função vai ficar a saúde dos jogadores. "GetPlayerLevel (cid)": Esta função terá a jogadores do nível atual. "GetPlayerMagLevel (cid)": Esta função irá fazer os jogadores magic level atual. "GetPlayerMana (cid)": Esta função terá a mana jogadores. "GetPlayerMasterPos (cid)": Esta função terá a posição de mestre jogadores (na maioria das vezes o templo spawn posição). "GetPlayerName (cid)": Esta função irá obter o nome dos jogadores. "GetPlayerPosition (cid)": Essa função vai ficar a situação jogadores. "GetPlayerSkill (cid, 6)" Esta função irá obter o nível de perícia dos jogadores. 6 significa que o tipo de habilidade (0 = magia, uma espada = 2 = clube, 3 = ax, 4 = distância, 5 = blindagem, 6 = pesca. Pelo menos se não me engano). Este é o nível da habilidade, e não o número! "GetTilePzInfo (posição)": Essa função vai verificar se o título é uma zona de protecção ou não. Se o resultado for 0, o título vai ser uma zona de protecção. "GetPlayerFood (cid)": Essa função obtém a quantidade de comida que o jogador tem actualmente comido. (Diminui a cada segundo, ele está online ou na cama). A quantidade normal para um jogador estar "cheio" é de 1200. "GetThingfromPos (posição)": Essa função vai ficar tudo em uma posição. Por exemplo: Código: onUse Função (cid, item, frompos, item2, topos) posição = {x = 273, y = 433, z = 9, stackpos = 0} positioninfo = getThingfromPos (posição) EndPositioninfo agora contém informações sobre o título que a posição é. (Porque é stackpos 0) Positioninfo.itemid seria o item.id do título a partir da posição {x = 273, y = 433, z = 9}. Mais informações sobre o stackpos em "4 - Fazer Quests". "GetPlayerStorageValue (cid, o número de armazenamento)": Esta função seria obter um valor de conservação a partir da playersname.xml. Os valores de armazenamento são uma maneira de olhar se o jogador, por exemplo, já fez uma busca. Então, se você gostaria de obter um valor de armazenamento, provavelmente parecido com isto: queststatus = getPlayerStorageValue (cid, 2000) Queststatus que agora contêm um número (na maioria das vezes esse número é -1 se ele não fez a quest, e se ele tiver um). - Outras funções "SetPlayerStorageValue (número, armazenamento cid, 1)" Com esta função você deve definir um valor de armazenamento. Por exemplo: setPlayerStorageValue (cid, 20001) "Print (" oi ", item)": Uma função muito simples de imprimir um texto com um valor dentro da caixa de armazenamento do servidor. Portanto, este será impresso oi 5 (ou qualquer valor item contém). ---- Fazendo utilizáveis A primeira coisa que você teria que fazer é editar o actions.xml. Você pode encontrar esse arquivo dentro do dados / ações / pasta. Este arquivo contém uma grande quantidade de informações. A maioria das linhas se parecem muito com isso: Existem dois tipos diferentes de coisas que você pode adicionar a este arquivo. Quando você insere um itemid =. O script.lua será realizada quando você usa todos os itens com este ID! Ao utilizar o script.lua o uniqueid só será efectuada quando o item que você usa tem uma ID exclusiva "1000" (ou um outro tipo de identificação). Script.lua é o script que será realizada ao usar o item. "Script" pode ser o que quiser. O local de onde o script deve ser-se de dados / ações / ações /. Agora vamos dizer que queremos fazer um arbusto de mirtilo, que você pode realmente usar! Primeiro teríamos que inserir uma linha dentro do actions.xml. Esta linha ficaria assim: Não importa onde essa linha fica contanto que fica entre a ... O roteiro, estamos nos referindo é bush.lua. Então vá para os dados / ações / pasta de ações e criar um novo arquivo chamado bush.lua (quando usando o notepad ser cuidado você não criar um bush.txt). O bush.lua teria que ficar assim: Código: onUse function (cid, item, frompos, item2, topos) se item.itemid == 2785, em seguida, doPlayerFeed (cid, 5) doCreateItem (2677,3, topos) doTransformItem (item.uid, 2786) doDecayItem (item.uid) final endThe if .. olha se o final item.id é igual ao item de id de um arbusto azul. (Na verdade, não necessariamente porque bush.lua só tem de realizar quando se utiliza um arbusto azul. doPlayerFeed (cid, 5) alimentam o leitor doCreateItem (2677,3, topos) cria três bagas azul em cima da bucha. doTransformItem (item.uid, 2786) irá alterar o mato para um arbusto sem bagas azul. Agora salve o arquivo novamente. Quando iniciar o seu servidor e usar um arbusto azul que você vai comer, e 3 bagas azul vai estar em cima da bucha! Eu não descobri como deixar a decadência de Bush para que ele retorne a um arbusto com bagas novamente após algum tempo. Este foi apenas um item simples utilizável. Agora vamos dizer que queremos criar uma alavanca que abriria um "natal" novo para a posição. Esta é uma ação legal quando você tem mais cidades. Você vai para fora do curso precisa adicionar uma linha no actions.xml. A primeira coisa que você tem a fazer é definir a ação id da alavanca que vai usar no editor. Isto é como eu fiz isso: Esta imagem foi redimensionada. Clique nesta barra para ver a imagem completa. A imagem original é 1280x768 261KB de tamanho e pesos. Agora a alavanca no templo tem a ação ID 2000. Teremos de colocar uma linha no actions.xml que dizer que cada vez que alguém usa o item com o ID de um roteiro original 2000 será realizada. Eu adicionei essa linha Agora precisamos fazer uma changehometown.lua que será realizado quando alguém usa a alavanca com a Unique ID 2000. Eu fiz assim: Código: onUse function (cid, item, frompos, item2, topos) se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) newpos = {x = 100, y = 100, z = 7} doPlayerSetMasterPos (cid, newpos) mais doTransformItem (item.uid, 1945) final endThe if ... else ... end vai verificar se a alavanca enfrenta o oeste ou leste. Quando caing oeste do id alavanca será 1945. Quando um jogador puxa a alavanca a sua posição de mestre será mudado para uma posição de novo mestre pus no valor de armazenamento newpos. Quando o ID de item não é 1945, a alavanca está voltada para o leste, e em seguida a alavanca só será mudado a face oeste. Estes dois exemplos onde a calma scripts de ação mais fácil. Mas lembre-se que você pode fazer a maneira mais avançado ou maior uma vez e depois estes! ---- 4 Fazendo quests Aqui vou dar uma aula rápida de como você pode fazer buscas avançadas agradável. Na busca primeiro vou explicar algumas coisas em geral. Primeiro: Elevadores (trabalhar com valores de armazenamento e teleports). Isto é como olha no meu mapa: Esta imagem foi redimensionada. Clique nesta barra para ver a imagem completa. A imagem original é 1280x768 184KB de tamanho e pesos. Este é o 3 º andar. Com um elevador e de manutenção. Quando um jogador quer usar o elevador, mas ele ainda não usou qualquer uma das alavancas que não vai funcionar. Assim, ele terá que usar uma das alavancas, antes que ele será enviado para cima ou para baixo. Esta imagem foi redimensionada. Clique nesta barra para ver a imagem completa. A imagem original é 1280x768 182kb de tamanho e pesos. Este é o 2 º andar. Quando você usa a alavanca no 3 º andar será provável teleportado para o 2 º andar. Esta imagem foi redimensionada. Clique nesta barra para ver a imagem completa. A imagem original é 1280x768 178kb de tamanho e pesos. Este é o 1 º andar. Repare que isso parece um pouco mais "assustador" e depois os outros dois. Isso é porque ele é um chão onde você só será teleportado para se você tiver todas as 4 alavancas de manutenção (primeira imagem) em uma posição correta. Aqui está o lever.lua que usei para este script. Os comentários serão iniciar a codificação com um "--comentário" Código: onUse function (cid, item, frompos, item2, topos) Se a alavanca == 2000 then-Elevador item.uid (screen1) queststatus = getPlayerStorageValue (cid, 2000) - - se ele já usou uma das alavancas na manutenção se queststatus == -1 then - - se ele não tem usado == 1945 se item.itemid texto então alguns simples e movimento da alavanca doTransformItem (item.uid, 1946) doPlayerSendCancel (cid, "happends Nada"). mais doTransformItem (item.uid, 1945) doPlayerSendCancel (cid, "A plataforma que está em pé sobre shakes por um segundo.") final outro - - se ele usou uma das alavancas se item.itemid == 1945 then - - se a alavanca é puxada leste doTransformItem (item.uid, 1946) doPlayerSendCancel (cid, "Você ouve algo se mover ...") outro - - se a alavanca é puxada oeste (happends algo) doTransformItem (item.uid, 1945) queststatus1 = getPlayerStorageValue (cid, 2005) - - valor de armazenamento das 4 alavancas na sala de manutenção. Eu não queria olhar para a posição da alavanca, porque senti que todos tinham de dar a tacada a alavanca na posição correta. queststatus2 = getPlayerStorageValue (cid, 2006) queststatus3 = getPlayerStorageValue (cid, 2007) queststatus4 = getPlayerStorageValue (cid, 2008) se queststatus1 == -1 e queststatus2 == -1 e queststatus3 == 1 e queststatus4 == -1 then - - se a posição das alavancas é assim que você será teleportado para o 1 º andar nplayer1pos = {x = 273, y = 433, z = 11} doSendMagicEffect (cid, 2) doTeleportThing (cid, nplayer1pos) outro - - Não se você será teleportado para o 2 º andar nplayer1pos = {x = 273, y = 433, z = 10} doSendMagicEffect (cid, 2) doTeleportThing (cid, nplayer1pos) final final final elseif item.uid == == item.uid 2001 ou 2002, em seguida, - - o elevador para voltar ao terceiro andar se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) mais doTransformItem (item.uid, 1945) nplayer1pos = {x = 273, y = 433, z = 9} doSendMagicEffect (nplayer1pos, 2) doTeleportThing (cid, nplayer1pos) final elseif item.uid> 2004 e item.uid <2.009 então - chaves para o elevador na sala de manutenção se item.uid == 2005, então se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) setPlayerStorageValue (cid, 2005,1) setPlayerStorageValue (cid, 20001) doPlayerSendCancel (cid, "Você trigered algo.") mais doTransformItem (item.uid, 1945) setPlayerStorageValue (cid, 2005, -1) final elseif item.uid == 2006, em seguida, se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) setPlayerStorageValue (cid, 2006,1) setPlayerStorageValue (cid, 20001) doPlayerSendCancel (cid, "Você trigered algo.") mais doTransformItem (item.uid, 1945) setPlayerStorageValue (cid, 2006, -1) final elseif item.uid == 2007, em seguida, se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) setPlayerStorageValue (cid, 2007,1) setPlayerStorageValue (cid, 20001) doPlayerSendCancel (cid, "Você trigered algo.") mais doTransformItem (item.uid, 1945) setPlayerStorageValue (cid, 2007, -1) final mais se item.itemid == 1945, em seguida, doTransformItem (item.uid, 1946) setPlayerStorageValue (cid, 2008,1) setPlayerStorageValue (cid, 20001) doPlayerSendCancel (cid, "Você trigered algo.") mais doTransformItem (item.uid, 1945) setPlayerStorageValue (cid, 2008, -1) final final retorno 1 endSo com este código que você fez um script elevador tranquila avançado que pode ser parte de uma missão. Agora, para um script segunda busca. Criando buracos escolher! Se uma pessoa usa uma pick que eu fiz o servidor executar o script pick.lua. Este é o script pick.lua. Código: onUse function (cid, item, frompos, item2, topos) se topos.y topos.x == == 209 e 456 e, em seguida, topos.z == 12 - - coordenadas doTransformItem (item2.uid, 383) - - alteração buraco mais return 0 - - retorno 0 significa que você começa a mensagem. Isso não é possível. (Ou algo do mesmo modo) final return 1 - - retornar 1 significa que ele tem trabalhado endThis é um código muito simples de usar buracos escolher! E se você quiser ter mais furos escolher simplesmente um anúncio topos.x elseif == ... e assim por diante. No entanto, eu não descobri como fazer a decadência buraco, por isso vai voltar ao normal após um período de tempo. Alguém me perguntou se é possível fazer legíveis. Sim, é. Eu trabalhei isso uma vez, mas perdi os dados de como. No entanto eu posso dar um bom palpite sobre como vai funcionar. doSetItemText (uid, "texto") Com esta função você pode definir o conteúdo de um livro, por exemplo, letras legíveis rola ou outro. uid é o ID único de um item do qual deseja alterar o texto. O texto é claro é o texto que você deseja colocar dentro Mas eu notei que algumas vezes você só pode colocar em cerca de 255 caracteres e não mais. Não sei se todos os servidores tem como aquele. Também acredito que se você colocar em "\ n" isso seria o mesmo que um Enter (linha seguinte). Gostou +Rep Creditos:Darker(Ediçao),(Traduçao),(e levar ao xtibia.com) Mindstorm(Criador)
    1 ponto
  14. RaizenUrameshi, primeiramente, seu tópico foi criado na seção errada, reportado, a área correta seria Dúvida sobre Websites. Siga os passos abaixo para arrumar o erro! 1) Abra o phpMyAdmin de seu website (Exemplo: http://localhost/phpmyadmin). - No canto esquerdo da tela, você verá todas as databases existentes, clique sobre a database que está sendo usada pelo seu servidor. - Após selecionar a database, você verá um menu chamado SQL no canto superior da página, clique sobre este menu. - Após clicar sobre o menu SQL, você verá um campo em branco, coloque o código abaixo neste campo em branco e clique no botão Executar.
    1 ponto
  15. to com mesmo erro dele ai : / e ja reinstalei o xampp um monte de vez, e ja instalei outras versões, mas não vai e a versão que você me passou, quando instalo ela, abre só o painel, mas é como se eu não tivesse instalado o xampp ;S não tem pasta, e quando vou no painel de controle-adicionar/remover programas, não ta o xampp la ;S Se puder me ajudar agradeço. Valew
    1 ponto
  16. LorDz

    Mophus

    Marcos diz: *--' *não vou entrar mais no xtibia --' *bls? *;* Win, rs *-*
    1 ponto
  17. ADM_Forever, fiz um accountmanagement.php para você, caso você esteja usando um accountmanagement.php personalizado, peço que me envie este arquivo para que eu possa adicionar o conteúdo que bloqueia o Account Manager. Faça o download do arquivo abaixo e substitua seu accountmanagement.php: Download: http://www.speedyshare.com/files/29269330/accountmanagement.php ou http://www.mediafire.com/?e25s315u8joy3p9 Observação: mude o page_access da conta 1(Account Manager) para 0.
    1 ponto
  18. AlexxNica

    Duvida ,+Rep !

    1) xampp é tão facil de ser invadido "hackeado " ?? Não, o XAMPP é bem seguro, o que pode não ser seguro é seu phpMyAdmin. 2) ouvir sobre um arquivo "dosevasive22" diz que protege o xampp de hacker´s " é verdade ? como installar ? Nunca ouvi falar. 3) Gesior x Modern acc ? Bom, o Gesior por ser mais antigo e por não ser atualizado desde 2008 se não me engano, tem algumas falhas de segurança, porém, o próprio Gesior já está trabalhando em um projeto para o Gesior 2011, que melhorará todas as funções do site para ter uma melhor segurança, por outro lado temos o Modern AAC, que é atualizado constantemente e tem menos falhas de seguranças, porém, ele não apoia a ideia de ter um layout igual ao Tibia.com, portanto você só verá layouts diferentes, até existe um ou dois betas do Tibia.com, mas não são realmente bons. 4) Gesior : muito bonito e bem conhecido por todos , porém fiquei sabendo que hacker usam exploids pra hacker o gesior verdade ? Não acho que criaram um exploit para o Gesior, mas ele tem algumas falhas de segurança, poucas pessoas conhecem, ainda mais do Brasil, portanto pode ficar tranquilo (faça backups constantemente ou poderá sofrer depois e criptografe todas as senhas). 5) como evitar hacker no xampp ? Infelizmente não conheço nenhum método. 6) no gesior como evitar que o player não login o "1/1" account manager, pelo site ? http://www.xtibia.com/forum/topic/160207-gesior-socorro-acc-manager/page__view__findpost__p__1056973 7) existe alguma tecnica de segurança no xampp ? Que eu saiba, não, você pode pesquisar no Google para tentar achar alguma proteção adicional ao XAMPP. 8) qual webserver é melhor ? dar uma dica de install? O melhor é baixar o Apache, MySQL e phpMyAdmin(opcional) separadamente.
    1 ponto
  19. Primeiramente o tópico está em área errada. Outra si você procurar você encontra :x http://www.xtibia.com/forum/topic/86776-pet-system-adapted-by-mesenga-perguntas-e-respostas/
    1 ponto
  20. ultimate1996

    [Tutorial]Criando Website Com Xampp

    @Felpx Pra desbloquear a porta 8090, precisa liberar no Firewall e no Modem ou roteador. 1 - Clica no menu Iniciar do Windows, e clique no Painel de Controle. 2 - Clique em Sistema e Segurança, e em seguida, em Windows Firewall. 3 - Na janela da esquerda , deverá aparecer Configurações Avançadas, clique. 4 - Uma grande janela deve ter aparecido.. lá no canto da esquerda, clica em Regras de Entrada. 5 - Agora na janela da direita ( >>> ) , clique em Nova Regra. 6 - Clique em Porta e avance. Agora, deixe marcado em TCP e Portas Especificas , e no campo em branco, coloque 8090. 7 - Clique em Permitir Conexão e avance até o ultimo passo e ponha qualquer Nome com descrição. Pronto a porta 8090 está desbloqueada no Firewall. Mas também é necessário desbloqueá-la em seu modem ou roteador, aí preciso que você saiba qual deles você usa.. e o modelo.
    1 ponto
  21. Existe um PokeTibia assim o Pokemon Arena Site: Pokemon Arena Só que o cliente eh compactado talz e eh chei desses bangs de C++, Mas, Se trabalhar duro no projeto vai bombar eu comessei a fazer um assim tbm soh ke nem mexi mto tava addcendo os outfits Boa Sorte ai!
    1 ponto
  22. Eskylo

    Ajuda Com Runas

    No momento sem ot versão recente comigo, então tente assim, se não der, eu volto aqui depois. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1497) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
    1 ponto
  23. pedrizito15

    Erro "segurança Xampp"

    tbm segui esse tutorial mais da erro tbm la pertinho da ultima parte que tem que substituir uma pasta do xamp por do gensior
    1 ponto
  24. ultimate1996

    [Ajuda]

    Abra a pasta htdocs/config/config.php e abra-o. Logo depois de : <?php Coloque : date_default_timezone_set('America/Sao_Paulo');
    1 ponto
  25. migraxd

    Veronil City

    cidade muito bem feita com casas muito legais mais 13 casas adicionadas *rotworns *catle muito legal * by migraxd * em breve vo lançar meu twitter SCAM-AKI link remvodio, vlden. veronil city.rar
    1 ponto
  26. Antiemoxlr

    Spell (:

    Ola Xtibianos estou aqui para esclarecer duvidas sobre spells.. 1° Você tem a duvida dos Tipos de damage da spell. Vou mostrar Como editar o damage desejado por você. 1 passo dos damages saber o tipo do damage... PHYSICALDAMAGE ENERGYDAMAGE EARTHDAMAGE POISONDAMAGE FIREDAMAGE UNDEFINEDDAMAGE LIFEDRAIN MANADRAIN HEALING DROWNDAMAGE ICEDAMAGE HOLYDAMAGE DEATHDAMAGE 2 passo setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DAMAGE DESEJADO) 1°Sobre Attack’s de Condition e etc. 1 passo as conditions para você saber o tipo da condition POISON FIRE ENERGY LIFEDRAIN HASTE PARALYZE OUTFIT INVISIBLE LIGHT MANASHIELD INFIGHT DRUNK WEAPON FOOD REGENERATION SOUL DROWN MUTED TRADETICKS YELLTICKS ATTRIBUTES FREEZING DAZZLED CURSED COMBAT HEAL 2 passo local condition = createConditionObject(CONDITION_TIPO DESEJADO) 1° Os Tipos de attack’s De Efect. DRAWBLOOD = 0 LOSEENERGY = 1 POFF = 2 BLOCKHIT = 3 EXPLOSIONAREA = 4 EXPLOSIONHIT = 5 FIREAREA = 6 YELLOW_RINGS = 7 GREEN_RINGS = 8 HITAREA = 9 TELEPORT = 10 ENERGYHIT = 11 MAGIC_BLUE = 12 MAGIC_RED = 13 MAGIC_GREEN = 14 HITBYFIRE = 15 HITBYPOISON = 16 MORTAREA = 17 SOUND_GREEN = 18 SOUND_RED = 19 POISONAREA = 20 SOUND_YELLOW = 21 SOUND_PURPLE = 22 SOUND_BLUE = 23 SOUND_WHITE = 24 BUBBLES = 25 CRAPS = 26 GIFT_WRAPS = 27 FIREWORK_YELLOW = 28 FIREWORK_RED = 29 FIREWORK_BLUE = 30 STUN = 31 SLEEP = 32 WATERCREATURE = 33 GROUNDSHAKER = 34 HEARTS = 35 FIREATTACK = 36 ENERGYAREA = 37 SMALLCLOUDS = 38 HOLYDAMAGE = 39 BIGCLOUDS = 40 ICEAREA = 41 ICETORNADO = 42 ICEATTACK = 43 STONES = 44 SMALLPLANTS = 45 CARNIPHILA = 46 PURPLEENERGY = 47 YELLOWENERGY = 48 HOLYAREA = 49 BIGPLANTS = 50 CAKE = 51 GIANTICE = 52 WATERSPLASH = 53 PLANTATTACK = 54 TUTORIALARROW = 55 TUTORIALSQUARE = 56 MIRRORHORIZONTAL = 57 MIRRORVERTICAL = 58 SKULLHORIZONTAL = 59 SKULLVERTICAL = 60 ASSASSIN = 61 STEPSHORIZONTAL = 62 BLOODYSTEPS = 63 STEPSVERTICAL = 64 YALAHARIGHOST = 65 BATS = 66 2 passo setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITDEASEJADO) 1° Sobre os distance effects saiba mais sobre eles SPEAR = 0 BOLT = 1 ARROW = 2 FIRE = 3 ENERGY = 4 POISONARROW = 5 BURSTARROW = 6 THROWINGSTAR = 7 THROWINGKNIFE = 8 SMALLSTONE = 9 DEATH = 10 LARGEROCK = 11 SNOWBALL = 12 POWERBOLT = 13 POISON = 14 INFERNALBOLT = 15 HUNTINGSPEAR = 16 ENCHANTEDSPEAR = 17 REDSTAR = 18 GREENSTAR = 19 ROYALSPEAR = 20 SNIPERARROW = 21 ONYXARROW = 22 PIERCINGBOLT = 23 WHIRLWINDSWORD = 24 WHIRLWINDAXE = 25 WHIRLWINDCLUB = 26 ETHEREALSPEAR = 27 ICE = 28 EARTH = 29 HOLY = 30 SUDDENDEATH = 31 FLASHARROW = 32 FLAMMINGARROW = 33 SHIVERARROW = 34 ENERGYBALL = 35 SMALLICE = 36 SMALLHOLY = 37 SMALLEARTH = 38 EARTHARROW = 39 EXPLOSION = 40 CAKE = 41 AWEAPONTYPE = 254 2 passo setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DISTANCE DESEJADO) 1° Attack de Ml Ou skills e areas setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -00, 0.0, 0) < você pode esolher os Hists que vão ser dados exemplo , 0, -60, 6.0, 0)  aki ela vai Hitar como um exori hur setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.0, -00, -0.0, 0) <você pode escolher os hits que vão ser dados exemplo 1.3, -30, -1.8, 0)  aki ela vai ser como um hit de sd 2 passo as áreas --Waves AREA_WAVE4 = { {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 3, 0, 0} } AREA_SQUAREWAVE5 = { {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {0, 1, 0}, {0, 3, 0} } AREA_WAVE5 = { {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 3, 0, 0} } --Diagonal waves AREADIAGONAL_WAVE4 = { {0, 0, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 0}, {0, 0, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 3} } AREADIAGONAL_SQUAREWAVE5 = { {1, 1, 1, 0, 0}, {1, 1, 1, 0, 0}, {1, 1, 1, 0, 0}, {0, 0, 0, 1, 0}, {0, 0, 0, 0, 3} } AREADIAGONAL_WAVE5 = { {0, 0, 0, 0, 1, 0}, {0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 0, 0}, {1, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 3} } --Beams AREA_BEAM1 = { {3} } AREA_BEAM5 = { {1}, {1}, {1}, {1}, {1}, {3} } AREA_BEAM7 = { {1}, {1}, {1}, {1}, {1}, {1}, {1}, {3} } --Diagonal Beams AREADIAGONAL_BEAM5 = { {1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 3} } AREADIAGONAL_BEAM7 = { {1, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 3} } --Circles AREA_CIRCLE2X2 = { {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} } AREA_CIRCLE3X3 = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } -- Crosses AREA_CROSS1X1 = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } AREA_CROSS5X5 = { {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0} } AREA_CROSS6X6 = { {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0} } --Squares AREA_SQUARE1X1 = { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } -- Walls AREA_WALLFIELD = { {1, 1, 3, 1, 1} } AREADIAGONAL_WALLFIELD = { {0, 0, 0, 0, 1}, {0, 0, 0, 1, 1}, {0, 1, 3, 1, 0}, {1, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, } isto você pode encontrar nas spells pasta lib Bom Já Foi o bastante ne ? Aposto que já aprenderão a editar sua spell sem o spell maker Ate O próximo Post galera xtibiana.
    1 ponto
  27. meubk

    [Talkaction]!online Para Sv De Pokemon

    Boa idéia cara, já já posto certinho. #Edit Pronto Atualizei , como vc deu a idéia.
    1 ponto
  28. abre items.xml e dá ctrl + f e procura por item id="7887" e substitui la por isso: <item id="7887" article="a" name="terra amulet"> <attribute key="weight" value="500" /> <attribute key="slotType" value="necklace" /> <attribute key="maxhealthpoints" value="1000" /> <attribute key="maxmanapoints" value="3000" /> <attribute key="showattributes" value="1" /> </item>
    1 ponto
  29. Alissow, ta bugada a data da atualizaçao para a versao 4.0, ela num foi lançada em fevereiro nao '
    1 ponto
  30. Tiagohells

    Sistema De "trem" By Mock

    -'- :withstupidsmiley: :withstupidsmiley:
    -1 pontos
  31. Tiagohells

    Pokemon Feelings

    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...