
azzouks
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
azzouks recebeu reputação de thokitox em [ERRO] Column not found: 1054 Unknown column 'blocked' in 'field list'' in ...Erro
consulta SQL:
INSERT INTO accounts( blocked BOOLEAN NOT NULL DEFAULTFALSE )
Mensagens do MySQL :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOOLEAN NOT NULL
DEFAULT FALSE
)' at line 1
quando tento entrar no "localhost" aparece
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bought' in 'order clause'' in C:\xampp\htdocs\latestnews.php:13 Stack trace: #0 C:\xampp\htdocs\latestnews.php(13): PDO->query('SELECT * FROM `...') #1 C:\xampp\htdocs\index.php(63): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\latestnews.php on line 13
-
azzouks recebeu reputação de Nerivalhs em [ERRO] Column not found: 1054 Unknown column 'blocked' in 'field list'' in ...Erro
consulta SQL:
INSERT INTO accounts( blocked BOOLEAN NOT NULL DEFAULTFALSE )
Mensagens do MySQL :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOOLEAN NOT NULL
DEFAULT FALSE
)' at line 1
quando tento entrar no "localhost" aparece
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bought' in 'order clause'' in C:\xampp\htdocs\latestnews.php:13 Stack trace: #0 C:\xampp\htdocs\latestnews.php(13): PDO->query('SELECT * FROM `...') #1 C:\xampp\htdocs\index.php(63): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\latestnews.php on line 13
-
azzouks recebeu reputação de poko360 em (Resolvido)[PEDIDO] Como deixar uma runa infinita.Se eu colocar false vai remover de todas as runas
E so colocar charges 0
Topico resolvido, pode fechar
-
azzouks recebeu reputação de Martim Tiburcio em [Pedido] Potions Novas para Curar Manavc quer fazer tipo uma Health Potion ?
se for ta ai o script:
ta ai, essa potion heala entre 5%HP TOTAL+300 e 9%HP total+500 (voce pode configurar como quiser)
agora em actions.xml coloque:
<action itemid="11514" script="liquids/large health potion.lua"/>
coloque o ID da beserk potion, mas antes procure pra ver se nao tem nenhuma tag com o id dela..
Ajudei? REP+
-
azzouks recebeu reputação de rngomes em {Pedido} Ringscara, faz o anel, como qualquer outro.. no itens.xml voce adiciona os attributos ao anel ..
Magic Level = <attribute key="increaseMagicPercent" value="105"/> --> adiciona 5% de dano magico, se voce colocar apenas value="5" vai diminuir os danos, e o player hitara apenas 5% do total que ele hitaria sem o ring.
meele = nao sei quais funções vc tem no seu servidor, mas pode ser :
attribute key="hitChance" value="130"
ou
attribute key="increasePhysicalPercent" value="130"
NÃO ESTOU AFIRMANDO QUE NO SEU SERVIDOR SEJA ESSAS FUNÇÕES.. se voce tiver suas sources, procure nos itens la os attributos que vc tenha..
no meu servidor tem todos esses tres.. e eu os uso perfeitamente.
no terceiro ring, coloque os dois attributos no ring, que nao tem conflito.
Ajudei? deixa um Rep+ ai
meu blessed so da skills e magic
<item id="13688" name="blessed ring"> <attribute key="description" value="It's a blessed ring. [Inc.Magic 10%,Abs.all 10% Regen.Life 150/1, Regen.Mana 50/1, Skills +15]"/> <attribute key="decayTo" value="0"/> <attribute key="weight" value="100"/> <attribute key="transformDeEquipTo" value="13689"/> <attribute key="healthGain" value="150"/> <attribute key="healthTicks" value="1"/> <attribute key="manaGain" value="50"/> <attribute key="manaTicks" value="1"/> <attribute key="skillClub" value="15"/> <attribute key="skillAxe" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="skillSword" value="15"/> <attribute key="skillFist" value="1"/> <attribute key="skillDist" value="15"/> <attribute key="skillFish" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="speed" value="400"/> <attribute key="increaseMagicPercent" value="10"/> <attribute keu="absorbPercentAll" value="10"/> <attribute key="slotType" value="ring"/> <attribute key="showduration" value="1"/> <attribute key="duration" value="1800"/> -
azzouks deu reputação a Hona em Criando instalador para ClientCriando instalador para Client
Download:
baixaki,mediafire,4shared
Abra o aplicativo [ Install Creator ].
Depois você vera uma tela em cima do aplicativo.
Click em avançar.
Agora escolha os arquivos lembrando elis devem estar em uma pasta.
(o programa ira copiar tudo que estiver dentro da pasta)
Depois de escolher os arquivos.
Escolha o idioma de sua preferencia.
Escolha o nome do programa.
Depois click em avançar.
Agora vc escolhe se seu instalador sera full (tela cheia)ou small (pequeno).
Depois click em avançar.
Olhe a imagem abaixo e façam o ki estar nela.
Depois de configurar click em avançar.
Agora coloque tudo sobre o aplicativo que vc quer criar.
Depois click em avançar.
Agora coloque a descrição da sua licença.
Depois click em avançar.
Agora escolha o local a onde o seu jogo sera salvo depois de instalado no pc do jogador.
Depois click em avançar.
Agora vamos criar um atalho para seu arquivo.
Procure seu arquivo .exe na pasta.
Agora coloque o nome do seu atalho.
Depois marque a caixa que diz: Add desktop shortcut
Agora click em avançar.
Aki deixe em branco.
Agora click em avançar
Agora selecione se quer ou não uninstaller.
Depois click em avançar.
Agora marque a caixa que diz do not build the install program
Agora clique em concluir.
Agora click em Build.
Agora escolha onde vai salvar o instalador.
Depois inicie o teste se ficou como vc queria.
Creditos: Adriano C
-
azzouks recebeu reputação de Wiz Khalifa em [Pagseguro Automático] 100% e com Double Points OPCIONALOk, Obrigado!
conseguiu? q q tava fazendo de errado?
-
azzouks recebeu reputação de NathanAmaro em {Pedido} Ringscara, faz o anel, como qualquer outro.. no itens.xml voce adiciona os attributos ao anel ..
Magic Level = <attribute key="increaseMagicPercent" value="105"/> --> adiciona 5% de dano magico, se voce colocar apenas value="5" vai diminuir os danos, e o player hitara apenas 5% do total que ele hitaria sem o ring.
meele = nao sei quais funções vc tem no seu servidor, mas pode ser :
attribute key="hitChance" value="130"
ou
attribute key="increasePhysicalPercent" value="130"
NÃO ESTOU AFIRMANDO QUE NO SEU SERVIDOR SEJA ESSAS FUNÇÕES.. se voce tiver suas sources, procure nos itens la os attributos que vc tenha..
no meu servidor tem todos esses tres.. e eu os uso perfeitamente.
no terceiro ring, coloque os dois attributos no ring, que nao tem conflito.
Ajudei? deixa um Rep+ ai
meu blessed so da skills e magic
<item id="13688" name="blessed ring"> <attribute key="description" value="It's a blessed ring. [Inc.Magic 10%,Abs.all 10% Regen.Life 150/1, Regen.Mana 50/1, Skills +15]"/> <attribute key="decayTo" value="0"/> <attribute key="weight" value="100"/> <attribute key="transformDeEquipTo" value="13689"/> <attribute key="healthGain" value="150"/> <attribute key="healthTicks" value="1"/> <attribute key="manaGain" value="50"/> <attribute key="manaTicks" value="1"/> <attribute key="skillClub" value="15"/> <attribute key="skillAxe" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="skillSword" value="15"/> <attribute key="skillFist" value="1"/> <attribute key="skillDist" value="15"/> <attribute key="skillFish" value="15"/> <attribute key="skillShield" value="15"/> <attribute key="speed" value="400"/> <attribute key="increaseMagicPercent" value="10"/> <attribute keu="absorbPercentAll" value="10"/> <attribute key="slotType" value="ring"/> <attribute key="showduration" value="1"/> <attribute key="duration" value="1800"/> -
azzouks recebeu reputação de loreal em item que reala por hit!vai em weapons, crie 1 script pra cada item que vc quer que heale 10%
vai em Weapons.xml e adicione a tag:
<distance id="2352" level="60" unproperly="1" event="script" value="distances/cristal arrow.lua"><vocation id="3"/><vocation id="7" showInDescription="0"/></distance> feito isso crie uma pasta dentro de weapons/script com o nome "distances"
vá em weapons/script/distances e crie um arquivo : cristal arrow.lua e dentro coloque isto:
<!-- Script Criado por GM Azzouks --> local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,4) min = -((skill*7)+level) max = -((skill*7)+(level*2)) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_INFERNALBOLT) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,4) min = -((skill*9)+(level*2)) max = -((skill*12)+(level*2)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) rand = math.random(1,100) if rand >= 3 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doCreatureAddHealth(cid, regenhp) doCombat(cid, combat1, var) end rand = math.random(1,100) if rand <= 2 then doPlayerSay(cid, "Fell my fury!?",16) local regenhp = (getCreatureMaxHealth(cid) / 100) * 15 doCreatureAddHealth(cid, regenhp) doCombat(cid, combat2, var) end end Explicação
la em cima no Combat1, serão os hit's "normais" baseados em skills e level, tudo configurável.
já no combat2, é como se fosse um dano 'critico', também baseado em skills e level, e novamente tudo configurável.
la em baixo eu fiz 98% de chance de hits normais e 2% de chance de dar hit critico..
nos hits normais ele healará 10% do HP total, e nos criticos Healará 15% do HP total..
voce pode modela-lo como quiser, só nao tire os créditos por favor :3
qualquer duvida mande pra gente que nós resolvemos TUDO
Ajudei? Rep+ nao machuca ninguem : )
-
azzouks recebeu reputação de Wiz Khalifa em [Pagseguro Automático] 100% e com Double Points OPCIONALAbsolute, como eu configuro pra cada 10 reais dar 100 PP e acima de 50 reais ser double ?
nao consigo configurar a URL de retorno, meu servidor tem :8090, como eu faço ?
Ja foi sanado a duvida
-
azzouks deu reputação a Absolute em [Clean House] Remover casas de quem não logaOlá Galera do TK, venho hoje rapidamente trazer um sistema muito útil e pedido em meu tópico do !eject system: http://www.tibiaking.com/forum/topic/35060-eject-system-expulsar-player-inativo-da-house/
Explicação:
Sabe aqueles players chatos que compram as melhores casas e não logam no servidor e enche a desgrama da casa de item só para os novos players não comprar? Pois é, isto não existirá mais! =D
Este script é apenas um arquivo que você colocará em sua pasta mods e ele executará toda vez que o servidor for reiniciado, ou seja: Quando o servidor ligar ele irá verificar os players que não logam a X dias (configurável) e então expulsa-los da casa movendo seus items para o depot deixando a casa sem dono.
Vamos ao que interessa; Na pasta principal do servidor, onde fica a distro que roda o servidor e tudo mais, entre na pasta MODS e crie um arquivo com o nome de cleanhouses.xml e dentro coloque o seguinte: <?xml version="1.0" encoding="UTF-8"?> <mod name="Cleanhouses" version="1.03" author="nsanee" contact="tibiaking.com" enabled="yes"> <description> v.1.03 - Added 'onlyNonPremium' configurable. Removed modlib, since the script is run once anyway we don't need it loaded at all times. It shouldn't now stop execution when a house is nameless. v.1.02 - now uses only one sql query, removed multiworld configurable since it's not needed anymore v.1.01 - small fixes, optimized query + multiworld support. This mod will clean houses of inactive players and move their items to the depot. config explained: days - If the player hasn't logged in for this number of days his house will be freed. log - true/false, whether to enable logging of which houses have been cleaned. file - path to the log file, where logs will be stored. Ignored if 'log' set to false onlyNonPremium - if set to 'true', the script will clean only the houses of players who don't have any pacc days left. other notes: DO NOT remove doSaveServer() at the end, otherwise if your server happens to crash before the nearest server save you will regret it =) </description> <globalevent name="cleanhouses" type="start" event="buffer"><![CDATA[ local config = { days = 3, log = true, file = getDataDir() .. "/logs/cleanhouses.txt", onlyNonPremium = true } local ns_query =[[ SELECT houses.owner, houses.id as hid, houses.name as house_name ,players.name FROM houses LEFT JOIN players ON players.id=houses.owner LEFT JOIN accounts ON players.account_id=accounts.id WHERE players.lastlogin < (UNIX_TIMESTAMP() - ]] ..config.days.. [[*24*60*60) ]] ..(config.onlyNonPremium and ' AND accounts.premdays=0 ' or '')..[[ AND players.world_id =]] .. getConfigValue("worldId") local house = db.getResult(ns_query) local logs = " :: Houses cleaned:\n\n" if house:getID() ~= -1 then repeat logs = logs .. house:getDataString('house_name') ..", owned by " .. house:getDataString('name') .. "\n" setHouseOwner(house:getDataInt('hid'), 0) until not house:next() house:free() else logs = logs .. "There were no houses to clean." end if config.log then doWriteLogFile(config.file, logs) end addEvent(doSaveServer, 1000) ]]></globalevent> </mod> Pronto, salve e feche.
Toda vez que o servidor iniciar irá expulsar os players que não logam aos dias configuráveis.
Como configurar:
days = 3 * É o número em DIAS que o player terá que ficar sem logar para perder a casa.
Configure apenas isto, o resto aconselho não mexer, caso queira aprimorar o sistema aconselho ser avançado na área para não causar erros no mesmo.
O Mesmo foi testado hoje por mim e está em funcionalidade a todas as versões de TFS.
Créditos:
Absolute
nsanee (otland)
Demais dúvidas deixe-me saber!
Até o próximo
-
azzouks deu reputação a xWhiteWolf em Dodge System (Por Item)Fala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips.
Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano.
Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-*
Sem mais delongas vamos ao script:
Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele:
Configurando:
Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui:
em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam.
em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5)
em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20.
Feito isso vá em data\lib\function.lua e adicione essas linhas
function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item)
e a doPlayerAddDodgeItem(cid, itemid, percent).
Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge:
Espero que gostem!
EDITADO:
Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system.
function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then return true end return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition) level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock uid = uid or 0 if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then return true end return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end
Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso.
e no xml coloque:
<action itemid="8306" script=upgraderock.lua"/> -
azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido] Dodge System 8.54vou dar uma olhada pra ver oque eu consigo fazer.. to seguindo o tópico, caso eu consiga eu posto aqui
-
azzouks deu reputação a Drafenous em (Resolvido)Players de acesso (tutor, gm, god e etc...) falando em laranja ou vermelho no chatopa, quem quiser pode fechar o tópico... segue solução:
O groups.xml deve estar assim:
<?xml version="1.0" encoding="UTF-8"?> <groups> <group id="1" name="Player"/> <group id="2" name="Tutor" flags="16809984" customFlags="2" access="1"/> <group id="3" name="Senior Tutor" flags="68736352256" customFlags="14" access="2" maxVips="200"/> <group id="4" name="Gamemaster" flags="3808558964575" customFlags="257215" access="3" depotLimit="3000" maxVips="300" outfit="75"/> <group id="5" name="Community Manager" flags="3840774348794" customFlags="781823" access="4" depotLimit="4000" maxVips="400" outfit="266"/> <group id="6" name="God" flags="3845069447162" customFlags="50331647" access="5" depotLimit="5000" maxVips="500" outfit="302"/> </groups> E o channels.xml deve estar assim:
<?xml version="1.0" encoding="UTF-8"?> <channels> <!-- README: 0 - dynamic, reserved for guilds 1 - always acts as Party channel, only "name" tag available 6 - acts as Help channel- clientsided message 65535 - DO NOT CHANGE THE ID- only "name", "enabled", "active" and "logged" tags available --> <channel id="1" name="Party"/> <channel id="2" name="Counselor" access="1"/> <channel id="3" name="World Chat" level="2"/> <channel id="4" name="Staff" access="3"/> <channel id="5" name="Advertising" level="8" muted="120" conditionId="2" conditionMessage="You may only place one offer in two minutes."> <vocation id="1-8"/> </channel> <channel id="6" name="Advertising-Rookgaard" level="2" muted="120" conditionId="3" conditionMessage="You may only place one offer in two minutes."> <vocation id="0"/> </channel> <channel id="7" name="Help" logged="yes"/> <channel id="8" name="English Chat" level="2"/> <!-- <channel id="9" name="My Custom Channel"/> --> <channel id="65535" name="Private Chat Channel"/> </channels> Obrigado a todos que tentaram ajudar!
-
azzouks deu reputação a Absolute em [City War Event] Luta pela sobrevivênciaFala galerinha linda do TK, hoje estou trazendo um evento que andei modificando e otimizando, é o evento City WAR, este evento tem no servidor globalwar e outros.
A autoria vem de um membro da otland, portante havia o mesmo aqui em um datapack e decidi otimizar este evento para vocês do TK.
Observação: É um pouco parecido com o evento do meu amigo e scripter DuH, porém com mais funções e regras, mas o objetivo é praticamente o mesmo.
Como funciona:
Vamos lá;
Primeiramente, em sua pasta data/lib crie um arquivo com o nome de city war.lua e dentro do mesmo coloque:
configCW = {timetostart = 500, -- tempo para iniciar o evento em segundos by Absolute telpos = {x=32340, y=32213, z=7}, -- onde aparecerá o teleport stats = 201201201701, kill = 201201201702, death = 201201201703, ostime = 201201201704, evttime = 20, -- quanto tempo irá rolar o evento topleftPos = {x=32722, y=31336, z=6}, -- canto esquerdo superior botrightPos = {x=32791, y=31384, z=6}, -- canto direito inferior templepos = {x=32369, y=32241, z=7}, -- posição do templo principal arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- posição dos 4 tronos times = 8, -- não precisa mexer finaltime = 300 -- não precisa mexer } function configCW:new() local newevt = {} setmetatable(newevt, self) self.__index = self doBroadcastMessage("The City War will be open in " .. self.timetostart .. " seconds.") setGlobalStorageValue(self.stats, 0) addEvent(function () newevt:start() end, self.timetostart*1000) end function configCW:start() if getGlobalStorageValue(self.stats) == 0 then setGlobalStorageValue(self.ostime, os.time()) local teleport = doCreateItem(1387, self.telpos) doItemSetAttribute(teleport, "aid", 5540) setGlobalStorageValue(self.stats, 1) doBroadcastMessage("The City War is starting...") for _, posi in pairs(self.arenapos) do local item = getTileItemById(posi, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end addEvent(function () self:preclose() end, self.evttime*1000*60) addEvent(function () self:announce(0) end, (self.evttime/self.times)*1000*60) end end function configCW:announce(times) if times < self.times then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("Top City War fraggers: " .. self:getTopFrags()) end addEvent(function () self:announce(times+1) end, (self.evttime/self.times)*1000*60) end end function configCW:preclose() if getGlobalStorageValue(self.stats) == 1 then setGlobalStorageValue(self.stats, 2) doBroadcastMessage("The City War will end in " .. self.finaltime .. " seconds.") addEvent(function () self:close() end, self.finaltime*1000) local item = getTileItemById(self.telpos, 1387) if(item.uid ~= 0) then doRemoveItem(item.uid) end end end function configCW:close() if getGlobalStorageValue(self.stats) == 2 then if #self:getTopFrags(true) >= 1 then doBroadcastMessage("The City War has ended. The winners are: " .. self:getTopFrags()) else doBroadcastMessage("The City War has ended. There were no winners.") end doRemovePlayersFromArea(self.topleftPos, self.botrightPos, self.templepos) for _, posi in pairs(self.arenapos) do doCreateTeleport(1387, self.templepos, posi) end for place, info in ipairs(self:getTopFrags(true)) do if place > 5 then break end local cid = getPlayerByName(info) doPlayerSendTextMessage(cid, 4, "Congratulations, you were the " .. place .. "º place in the City War.") doPlayerAddItem(cid, 6571, 1) end setGlobalStorageValue(self.stats, -1) end end function configCW:isPlayerInEvent(cid) if getPlayerStorageValue(cid, self.stats) == -1 or getPlayerStorageValue(cid, self.stats) - os.time() <= -5 or getGlobalStorageValue(self.stats) < 1 then return false end return true end function configCW:getTopFrags(tab) local frag = {} for _, pid in pairs(getPlayersOnline()) do if (getPlayerStorageValue(pid, self.kill) ~= -1 or getPlayerStorageValue(pid, self.death) ~= -1) and self:isPlayerInEvent(pid) then local kill = getPlayerStorageValue(pid, self.kill)+1 local death = getPlayerStorageValue(pid, self.death)+1 print(getCreatureName(pid), kill-death) table.insert(frag, {getCreatureName(pid), kill-death}) end end print(#frag) local frag, str, n = doOrderTab(frag, 0), nil, 5 print(#frag) if tab then return frag else if #frag < 5 then n = #frag end for i = 1, n do local cid = getPlayerByName(frag[i]) local kill = getPlayerStorageValue(cid, self.kill)+1 local death = getPlayerStorageValue(cid, self.death)+1 str = str and str .. ", " .. frag[i] .. "[" .. kill .. "/" .. death .. "]" or frag[i] .. "[" .. kill .. "/" .. death .. "]" end end return str end function doOrderTab(tabela, value) local max, index = {}, nil for i = 1, #tabela do valor = value for a, b in ipairs(tabela) do if b[2] > valor then valor = b[2] valor2 = b[1] index = a end end table.remove(tabela, index) if valor ~= value then table.insert(max, valor2) end end return max end Configuração do arquivo:
telpos = {x=32340, y=32213, z=7}, -- POSIÇÃO ONDE NASCE O TP DO EVENTO!
topleftPos = {x=32722, y=31336, z=6}, -- AQUI COLOQUE A POSIÇÃO DO CANTO ESQUERDO LA EM CIMA DO MAPA botrightPos = {x=32791, y=31384, z=6}, -- AQUI A POSIÇÃO DO CANTO DIREITO EM BAIXO DO MAPA templepos = {x=32369, y=32241, z=7}, -- POSIÇÃO DO TEMPLO ONDE OS JOGADORES NASCERAM PÓS A MORTE arenapos = {{x=32722, y=31340, z=6}, {x=32786, y=31336, z=6}, {x=32722, y=31380, z=6}, {x=32783, y=31374, z=6}}, -- ATENÇÃO, NO MAPA QUE ESTAREI DISPONIBILIZANDO VISIVELMENTE TERÁ 4 BASES, VOCÊ TERA QUE COLOCAR A POSIÇÃO DAS BASES AÍ NESSES 3 LUGARES. doPlayerAddItem(cid, 6571, 1) -- AQUI VOCÊ COLOCARÁ O PRÊMIO DO GANHADOR, NO CASO QUEIRA ADICIONAR POR EXEMPLO 1kk, COLOQUE 2160,1 - Primeiro ID depois quantia. Segundo passo, crie um arquivo com o nome de citywarCreature.lua e coloque dentro da pasta creaturescripts/scripts com o seguinte conteúdo: function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInRange(getCreaturePosition(cid), configCW.topleftPos, configCW.botrightPos) then setPlayerStorageValue(cid, configCW.death, getPlayerStorageValue(cid, configCW.death) +1) setPlayerStorageValue(lastHitKiller[1], configCW.kill, getPlayerStorageValue(lastHitKiller[1], configCW.kill) +1) end return true end E adicione em creaturescripts.xml a seguinte tag
<event type="preparedeath" name="CityWar" event="script" value="citywarCreature.lua"/> Terceiro passo, crie um arquivo em movements/scripts com o nome de citywarMovements.lua com o seguinte conteúdo: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition) if isPlayer(cid) and getGlobalStorageValue(configCW.stats) == 1 then doTeleportThing(cid, configCW.arenapos[math.random(1, #configCW.arenapos)]) doSendMagicEffect(getPlayerPosition(cid), 28) if not(configCW:isPlayerInEvent(cid)) then setPlayerStorageValue(cid, configCW.stats, getGlobalStorageValue(configCW.ostime) + configCW.evttime*60 + configCW.finaltime) setPlayerStorageValue(cid, configCW.kill, -1) setPlayerStorageValue(cid, configCW.death, -1) end else doTeleportThing(cid, fromPosition) end return true end Em Movements.xml adicione a seguinte linha: <movevent type="StepIn" actionid="5540" event="script" value="citywarMovements.lua"/> Quarto e último passo, em talkactions/scripts crie um arquivo com o nome de citywarTalkactions.lua e coloque o seguinte conteúdo:
function onSay(cid, words, param) if getGlobalStorageValue(configCW.stats) == -1 then configCW:new() else doPlayerSendCancel(cid, "The event is already running.") end return true end Em talkactions/talkactions.xml adicione a seguinte linha:
<talkaction log="yes" words="/citywar" access="3" event="script" value="citywarTalkactions.lua"/> E por fim, estou disponibilizando o world do evento, vocês usam se quiser, tentei adapta-lo para 8.6 mas ficou meio slá, o Viiting estava ocupado e não pode me ajudar, enfim segue a imagem e download do world.otbm:
Lembrando que ninguém além do Collocorpusek da otland tem direito de pedir remoção do script, pois a base é dele.
Créditos:
Absolute
Collocor Gringo Lindo.
-
azzouks deu reputação a luanluciano93 em (Resolvido)Erro ao clicar em 'my account'Use o comando no phpmyadmin:
ALTER TABLE `bans` ADD `reason` INT UNSIGNED NOT NULL DEFAULT 0; -
azzouks deu reputação a warlens em {pedido} accountmanagement.php que bloqueie o acesso do account manager ao websiteEntre em "accountmanagement.php", procure por essa linha.
$account_location = $account_logged->getLocation();
Logo abaixo coloque isso e salve!.
$acc_id = $account_logged->getId();
if($acc_id == 1) die("Está conta está BLOQUEADA.");
-
azzouks deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsDEV C++, aprenda a compila uma source TFS!
Downloads(Baixe de acordo as configurações do seu windows):
DEV C++ CONFIGURADO PARA 32BITS
DEV C++ CONFIGURADO PARA 64BITS
REV 3884 TFS 0.4
Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
======================================
Abra o DEV C++:
======================================
======================================
Abra a Source:
======================================
======================================
Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
======================================
=============================================================
======================================
Aguarde carregar todos os arquivos:
======================================
======================================
Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
======================================
======================================
Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
======================================
======================================
Se der tudo certo em Log vai estar como mostra a imagem abaixo:
======================================
======================================
Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
======================================
===========================================
Só isso galera tutorial rápido resumido e útil!
Créditos Natanael Beckman!
===========================================
Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
Abra o DEV-C++, clique em File> New> Project:
Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
-D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
-lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
Clica aqui \/ -
azzouks deu reputação a grafit em Tirar Battle ao entrar em PZDesculpa estar revivendo o post mas pode ser dúvida de outras pessoas..
Nas versões novas ele não aceita o comando
doRemoveCondition(cid, CONDITION_INFIGHT)
Ele só aceita assim:
doRemoveConditions(cid, CONDITION_INFIGHT)
Então o código fica assim:
function onThink(cid, interval) if(getTilePzInfo(getCreaturePosition(cid))) then doRemoveConditions(cid, CONDITION_INFIGHT) end end
com um S no condition
-
azzouks deu reputação a Victor Fanly em [ajuda] preciso converter a versao do meu mapaCreio que pra converter um mapa você precisa ir em File>Import>Import Map, o RME vai importar o mapa pra versão dele.
-
azzouks deu reputação a Jamison Collins em Critical hit com Regen LifeTente isso :
local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*52)+(level*2)) max = -((skill*55)+(level*2)) return min, max end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*55)+(level*3)) max = -((skill*60)+(level*4)) return min, max end setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_EFFECT, 31) setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, maglevel) skill = getPlayerSkill(cid,3) min = -((skill*59)+(level*4)) max = -((skill*66)+(level*5)) return min, max end setCombatCallback(combat3, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local condition = createConditionObject(CONDITION_EMO) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 100, 3000, -607) setCombatCondition(combat2, condition) local condition = createConditionObject(CONDITION_EMO) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, 100, 3000, -607) setCombatCondition(combat3, condition) function onUseWeapon(cid, var) Critical = math.random(1,100) if Critical > 80 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doPlayerAddHealth(cid, regenhp) doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_LIGHTGREY) doCombat(cid, combat2, var) end Critical = math.random(1,100) if Critical < 2 then local regenhp = (getCreatureMaxHealth(cid) / 100) * 10 doPlayerAddHealth(cid, regenhp) doPlayerSay(cid,"For Honor!",16) doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_LIGHTGREY) doCombat(cid, combat3, var) else doCombat(cid, combat1, var) end end Não testei.
@edit
Vi que se script tem um bug...
Não existe a função: 'getCreatureHealthMax'
O correto é: 'getCreatureMaxHealth'
Então, você tem a opção de usar o script acima, ou de apenas alterar a função errada para função certa no seu script.
-
azzouks deu reputação a Adriano SwaTT em [Tutorial] Criando Mana RuneÉ, todos conhecem a "Mana Rune", então nem tenho muito o que fala...
Então vamos lá..
A Imagem da Runa que será a "Mana Rune" está no spoiler abaixo.
1º Passo
2º Passo
3º Passo
Apague o que está codificado e adicione o código abaixo em seu lugar.
<item id="2281" article="a" name="Mana Rune"> <attribute key="weight" value="120" /> </item>
É, eu acho que é isso...Espero que funcione.
Créditos pelo Script: Miter (Outro Forum)
Script Editado por: AdrianoSwaTT
TUTORIAL feito por: AdrianoSwaTT
Abraços galera -
azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido Duplo] NPC que reseta e Nova Moeda@Lyon @azzouks o script funcinou até na parte de editar as skills? é que eu nunca havia mexido com npc antes, foi realmente um "desafio".
-
azzouks deu reputação a Adriano SwaTT em ajuda com funçoesAlgumas funções funcionam em quaisquer versões.
Se der sorte, basta seguir normalmente o tutorial da versão 8.6 na versão 7.92.
Agora tem pequenos detalhes que podem ser diferente, como a colocação da palavra de função (ex: 8.60 "doPlayerAddItem" e em 7.92 "doPlayerAddItemCount", tipo isso [meramente exemplo]) mas se for só isso é pouca coisa a se arrumar.
-
azzouks deu reputação a xWhiteWolf em (Resolvido)[Pedido Duplo] NPC que reseta e Nova Moedacomente alguma coisa.... funcionou? não funcionou? eu dediquei muito tempo fazendo isso pra você e eu gostaria de um feedback.