Histórico de Curtidas
-
ewerton157 recebeu reputação de eskylo em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de Diego Rulez em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de marcos205 em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de ferra em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de slid em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de brendoonh em Styller Yourots para ser TERMINADOOlá pessoal, tem um bom tempo que eu não posto e que não jogo Tibia, portanto, quero deixar com vocês um mapa que eu fiquei cerca de 1 ano, editando 2~3 horas por dia, as vezes chegava a virar a noite bolando novas hunts ou fazendo um CTRL+C-V dos mapas globais e fazia uma leve adaptação para o Styller.
Estava perdido aqui em meu Pendrive, guardei com muito carinho, cheguei até deixar on-line mas por falta de dinheiro e de conhecimento, acabaram nukando o servidor e hackearam o site principal. Chegou a ficar On por 15 dias, na primeira semana o servidor já começou a lotar e dar lag (cerca de 40 pessoas jogando direto)
Espero que façam um bom proveito do server, como há muito tempo que eu não mexo, não posso falar tudo o que há no server, mas garanto que tem bastante coisa diferente dos demais, na época eu fiz com muito carinho e dedicação para ter um server único, com quests únicas e hunts bem feitas mas, o tempo me planejou outras coisas :D
Resumão rápido do que eu lembro:
Poi, Inqui, Demon Oak, Arena, DH, iguais ao Global.
Algumas quests novas como: Mermaid Comb, Koshei's Ancient Amulet, Dragon Scale legs e Blessed Shield (inacabada, falta os monstros e alguns scripts), Yalahar quest (Falta alguns scripts mas já tem o local da quest), Elemental Spheres (funcionava 90%, até onde eu me lembro)
Tinha invasão de Orshabaal, Ghazbaran e outros bosses, os TPS apareciam na sala principal de hunts.
Tem muita, muita, muita, muitas opções de hunts com novos lugares, o problema é que na época eu era meio retardado e só colocava monstros meio random, coisa que enjoava em 1h e favorecia só botters, então, é necessário inovar nisso ai. Vai da sua responsa.
Os addons eram por itens, o jogador teria de pegar um por um para concluir o addon, até onde lembro, eu estava terminado esta parte ai, porque faltavam alguns monstros para fazer todos os addons, mas já está mais da metade concluída, acredito que mais de 70%.
Link do Download: http://www.4shared.com/rar/19DAPkcrce/Otserv.html
Link do Scan: https://www.virustotal.com/pt/file/825b6e53c9c212fa540910280e2466e4df10b37871b8ca70ee4363e1c108cf53/analysis/1450766752/
Tema da cidade principal: Yalahar
Algumas áreas para caçar,
A
-
ewerton157 recebeu reputação de greed01 em Gostaria da opinião de vocêsOlha.. a maioria hoje em dia, curte exp alta e fast attack.. coisas que deixam as vocações desbalanceadas..
se você for fazer um ot, pensando 100% no que as pessoas querem.. sei não em.. acho que não vira..
Se eu fosse você, testaria qual a melhor exp..
Pois meu ot é um styller que eu editei, e que venho modificando coisas para ele.. e do jeito que eu fiz e testei, primeiro coloquei lvl 300+ e outro lvl 700. bom.. com o lvl 700 não teve graça nenhuma.. e com o tempo não vai tendo coisas para fazer..
Já com o lvl 300 foi outra coisa.. os bixos me batiam mais.. eu apanhava bastante.. não dava hs nos bixos.. as quests ficaram mais difíceis tendo que precisar de 2~5~7~10 pessoas..
Então tipo, se tu for fazer um ot com exp alta, faça com que as hunts, as magias, as quests sejam foda por causa do level do char..
sobre attack fast.. bom.. sinceramente abaixo de 1500 eu não chego nem perto.. pois geralmente tem um paladin ou knight regaçando geral..
então é isso cara.. faz do jeito que o seu otserv pede.. não exagere..
-
ewerton157 recebeu reputação de 157kolosso em Criticas por favor ?Fiquei um tempinho off..
Mas voltando ai com novidades !
Como eu já tinha falado antes..
Aqui ta a nova montanha dos cyc :>
~~Antes~~
~~Agora~~
Agora com sombra.. para que possa visualizar os andares..
E agora.. a antiga parte sul.. que tinha amazons.. e etc..
Dei uma reformulada.. e tentei deixar parecido com yalahar.. Não ficou lá essas coisas.. mas como eu sou novo em mapper.. o que eu consegui fazer foi isso..
Bom.. Pratiquei um pouco e fiz uma cave de dwarfs..
é isso ai.. avaliem pfv
-
ewerton157 deu reputação a Vodkart em (Resolvido)[Pedido] NPC Task SystemMods:
Task Kill.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Task Kill" version="1.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="KillM_func"><![CDATA[ tsk = { storages = {68754,68755}, task = {"dragon", 10}, -- nome do bixo e quantidade exp = 200, item = {2123,1} } ]]></config> <event type="login" name="AreKill" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "CountTask") return true end]]></event> <event type="kill" name="CountTask" event="script"><![CDATA[ domodlib('KillM_func') function onKill(cid, target) if isMonster(target) then local n = string.lower(getCreatureName(target)) if n == tsk.task[1] and getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then local contagem = getPlayerStorageValue(cid, tsk.storages[1]) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > tsk.task[2] then return true end setPlayerStorageValue(cid, tsk.storages[1], contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == tsk.task[2] and "Congratulations! You finished the task of "..n.."." or "defeated. Total [" .. contagem .. "/" .. tsk.task[2] .. "] " .. n .. ".").."") end end return true end]]></event> </mod> npc: domodlib('KillM_func') local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"task","mission","missao"}, msg) then if not tonumber(getPlayerStorageValue(cid, tsk.storages[1])) then npcHandler:say("Você já terminou a task!", cid) elseif getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then npcHandler:say("Você já matou "..tsk.task[2].." "..tsk.task[1].."? {yes}", cid) talkState[talkUser] = 2 else npcHandler:say("Você deseja fazer uma missão de matar "..tsk.task[2].." "..tsk.task[1].." e receber "..tsk.exp.." de experience e "..tsk.item[2].." "..getItemNameById(tsk.item[1]).."? {yes}", cid) talkState[talkUser] = 1 end elseif isInArray({"yes","sim"}, msg) and talkState[talkUser] > 0 then if talkState[talkUser] == 1 then npcHandler:say("Parabéns! Agora você está participando da task, volte quanto tiver terminado!", cid) setPlayerStorageValue(cid, tsk.storages[2], 1) else if getPlayerStorageValue(cid, tsk.storages[1]) >= tsk.task[2] then npcHandler:say("Obrigado guerreiro, aqui está sua recompensa!", cid) setPlayerStorageValue(cid, tsk.storages[1], "Finished") doPlayerAddExp(cid, tsk.exp) doPlayerAddItem(cid, tsk.item[1], tsk.item[2]) else npcHandler:say("Você ainda não terminou a sua task!", cid) end end talkState[talkUser] = 0 elseif msg == "no" then selfSay("Tudo bem então", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
ewerton157 deu reputação a WalaceBz em [Resolvido]Error no gesiorCREATE TABLE `tiles` ( `id` INT UNSIGNED NOT NULL, `world_id` TINYINT(2) UNSIGNED NOT NULL DEFAULT 0, `house_id` INT UNSIGNED NOT NULL, `x` INT(5) UNSIGNED NOT NULL, `y` INT(5) UNSIGNED NOT NULL, `z` TINYINT(2) UNSIGNED NOT NULL, UNIQUE (`id`, `world_id`), KEY (`x`, `y`, `z`), FOREIGN KEY (`house_id`, `world_id`) REFERENCES `houses`(`id`, `world_id`) ON DELETE CASCADE ) ENGINE = InnoDB;
-
ewerton157 deu reputação a WarW0lf em [Resolvido]Error no gesiorExecute essas querys.
-
ewerton157 recebeu reputação de Kozzz em [Gesior ACC] TK GesiorPara add fotos no shop, vá ao tibiawiki e procure o item desejado, clique com o botao direito do mouse e vá em (copiar endereço de link) vá ao seu hoster, cole o link e salve a imagem na pasta /htdocs/imagem/itens. salve a foto da seguinte maneira: No nome troque para o id do item. exemplo, '2160.gif' <-- só foi um exemplo. Então após salvar, vá ao seu localhost/phpmyadmin vá a sua data base e procure por shop offer.. geralmente fica no final, procure o item que voce colocou a venda. e vai ta lá o id de chegada. pode ser de 1,2,3,4,5,6,7,8,9 etc. isso depende de quantos itens voce adicionou no shop. Então vamos a outro exemplo, no caso o primeiro item que eu adicionei foi o crystal coin, então o id de chegada dele é 1, troque o número 1 e coloque o id da foto. exemplo 2160. então salve e vá ao shop e atualize.
-
ewerton157 recebeu reputação de thiagobji em [Gesior ACC] TK GesiorPara add fotos no shop, vá ao tibiawiki e procure o item desejado, clique com o botao direito do mouse e vá em (copiar endereço de link) vá ao seu hoster, cole o link e salve a imagem na pasta /htdocs/imagem/itens. salve a foto da seguinte maneira: No nome troque para o id do item. exemplo, '2160.gif' <-- só foi um exemplo. Então após salvar, vá ao seu localhost/phpmyadmin vá a sua data base e procure por shop offer.. geralmente fica no final, procure o item que voce colocou a venda. e vai ta lá o id de chegada. pode ser de 1,2,3,4,5,6,7,8,9 etc. isso depende de quantos itens voce adicionou no shop. Então vamos a outro exemplo, no caso o primeiro item que eu adicionei foi o crystal coin, então o id de chegada dele é 1, troque o número 1 e coloque o id da foto. exemplo 2160. então salve e vá ao shop e atualize.
-
ewerton157 recebeu reputação de WalaceBz em [Resolvido]Error no gesiorFala rapaziada
Bom, a uns dias atrás eu estava com algumas duvidas e consegui solucionar as mais tenso..
desses dias pra cá, instalei outro Gesior, más veio com algumas tags do localhost/phpmyadmin faltando.
como assim faltando ? simplesmente não existe.. algumas eu consegui pegar, até procurei, procurei, procurei e procurei mais ainda este tag e não axei, tinha tópicos que foram resolvidos com este mesmo problema más o propio dono não postou como que solucionou, simplesmente mandou fechar e avisou que conseguiu, bom. vamos parar de enrrolar..
O erro o corria antes quando eu entrava no login, colocava a senha e ele redirecionava para uma pagina em branco com uns erros de ban, ai o walace(daqui do TK) me deu uma dica do que seria, então eu procurei e consegui retirar executando o seguinte:
CREATE TABLE `bans`
(
`id` INT UNSIGNED NOT NULL auto_increment,
`type` TINYINT(1) NOT NULL COMMENT '1 - ip banishment, 2 - namelock, 3 - account banishment, 4 - notation, 5 - deletion',
`value` INT UNSIGNED NOT NULL COMMENT 'ip address (integer), player guid or account number',
`param` INT UNSIGNED NOT NULL DEFAULT 4294967295 COMMENT 'used only for ip banishment mask (integer)',
`active` TINYINT(1) NOT NULL DEFAULT TRUE,
`expires` INT NOT NULL,
`added` INT UNSIGNED NOT NULL,
`admin_id` INT UNSIGNED NOT NULL DEFAULT 0,
`comment` TEXT NOT NULL,
`reason` INT UNSIGNED NOT NULL DEFAULT 0,
`action` INT UNSIGNED NOT NULL DEFAULT 0,
`statement` VARCHAR(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `type` (`type`, `value`),
KEY `active` (`active`)
) ENGINE = InnoDB;
Agora o erro ocorre quando eu crio um character, e clico em continue. ai envez de voltar pra acc ele vai para uma página em branco com este error:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 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 'WHERE `player_id` = 18 AND `skillid` = 0' at line 1' in C:\xampp\htdocs\pot\OTS_Player.php:195 Stack trace: #0 C:\xampp\htdocs\pot\OTS_Player.php(195): PDO->query('UPDATE `player_...') #1 C:\xampp\htdocs\accountmanagement.php(859): OTS_Player->save() #2 C:\xampp\htdocs\index.php(131): include('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\pot\OTS_Player.php on line 195
em trans. history, também esta dando este erro.
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'extreme.pagsegurotransacoes' doesn't exist' in C:\xampp\htdocs\history.php:43 Stack trace: #0 C:\xampp\htdocs\history.php(43): PDO->query('SELECT * FROM `...') #1 C:\xampp\htdocs\index.php(94): include('C:\xampp\htdocs...') #2 {main} thrown in C:\xampp\htdocs\history.php on line 43
View Shop Admin edit/delete
Warning: simplexml_load_file() [function.simplexml-load-file]: file:///C:/Documents%20and%20Settings/Administrador/Desktop/%5B8.60%5D%20New%20Styller%20Yourots%200.9//data/items/items.xml:17321: parser error : error parsing attribute name in C:\xampp\htdocs\shopadmin.php on line 118
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in C:\xampp\htdocs\shopadmin.php on line 118
e mais uma renca de erro igual ao de cima
Resolvi. Resetei o itens.xml, mais tive que editar tudo denovo... coisa de menos
Apareceu outro erro:
Agora quando o player morre, não perde lvl,magic etc. pode até aparecer que perdeu, mais quando o player reloga aparece o seguinte error
O player morre, perde a bp, mais quando ele loga no templo perde o que ele perdeu na morte volta tudo denovo.
Entao exemplo: plate set + bp, ele perde isso na morte, quando ele loga no templo volta tudo denovo. se ele for no loot, o set + bp que ele perdeu estará lá !!!
deve esta faltando alguma query..
Deve está faltando alguma QUERY, daquelas que executa no localhost/phpmyadmin/sql.
se alguém tiver este mesmo problema, ou teve e se lembra da tag por favor, me ajuda
-
ewerton157 deu reputação a Kimoszin em Bug no gesior ajuda '-'Não existe a tabela bans no seu database.
Execute no db:
CREATE TABLE `bans` ( `id` INT UNSIGNED NOT NULL auto_increment, `type` TINYINT(1) NOT NULL COMMENT '1 - ip banishment, 2 - namelock, 3 - account banishment, 4 - notation, 5 - deletion', `value` INT UNSIGNED NOT NULL COMMENT 'ip address (integer), player guid or account number', `param` INT UNSIGNED NOT NULL DEFAULT 4294967295 COMMENT 'used only for ip banishment mask (integer)', `active` TINYINT(1) NOT NULL DEFAULT TRUE, `expires` INT NOT NULL, `added` INT UNSIGNED NOT NULL, `admin_id` INT UNSIGNED NOT NULL DEFAULT 0, `comment` TEXT NOT NULL, `reason` INT UNSIGNED NOT NULL DEFAULT 0, `action` INT UNSIGNED NOT NULL DEFAULT 0, `statement` VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `type` (`type`, `value`), KEY `active` (`active`) ) ENGINE = InnoDB;
-
ewerton157 deu reputação a WalaceBz em [Resolvido] Ajuda em GesiorVou tentar ajudalo
1º PagSeguro = Vai Em Config/Config.php procure $config['pagseguro']['email'] = ''; e adiciona o email do pagseguro lah lembrando que você tem que ta com o email confirmado pelo pagseguro, geralmente esses gesior já vem com o sistema do pagamento automatico
2ºDeath List = Veja se a case do killstatistics esta no index.php se não adcione
E Veja se resolve
3º Shop = Veja se o id da imagem que você colocou esta presente no local htdocs\images\items caso não esteja procure adiciona-la
4ºO Logo Veja em algum outro gesior se possuir e pegue a imagem tibia-logo-artwork-top que fica em \layouts\tibiacom\images\header pegue-o e adicione na sua atual gesior
5º Os Features isso você edita fácil apenas vá em latestnews.php e procure as features atuais no control+F e edita
-
ewerton157 deu reputação a Sociopata em Adicionar PagSeguro em Seu Site(Gesior Acc)Bem esse é um tutorial simples de como add PagSeguro automático no seu site pq essa é uma duvida que tive e possivelmente outros tem, com isso o PagSeguro entrega os points automaticamente sem necessidade de confirmação , bem vamos lá
No Seu Htdocs va em Config/config.php e coloque isso no final:
// Sistema automatico Pagseguro by tatu_hunter // Seu email cadastrado no pagseguro $config['pagseguro']['email'] = 'seu e-mail'; // Valor unitario do produto ou seja valor de cada ponto // Exemplo de valores // 100 = R$ 1,00 // 235 = R$ 2,35 // 4254 = R$ 42,54 $config['pagseguro']['produtoValor'] = '100'; // Token gerado no painel do pagseguro $config['pagseguro']['token'] = 'SEU TOKEN PAGSEGURO AQUI'; crie um arquivo chamado retPagseguro.php nas pasta htdocs Dentro adicione isso: <?php include('config-and-functions.php'); define('TOKEN', $config['pagseguro']['token']); // Incluindo o arquivo da biblioteca include('retorno.php'); // Função que captura os dados do retorno function retorno_automatico ( $VendedorEmail, $TransacaoID, $Referencia, $TipoFrete, $ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento, $StatusTransacao, $CliNome, $CliEmail, $CliEndereco, $CliNumero, $CliComplemento, $CliBairro, $CliCidade, $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens) { global $config; if(strtolower($StatusTransacao) == 'aprovado') { $account_logged = $ots->createObject('Account'); $account_logged->find($Referencia); if($account_logged->isLoaded()) { $pontos = $account_logged->getCustomField("premium_points"); $account_logged->setCustomField("premium_points", $pontos + $produtos[0]['ProdQuantidade']); $nome = $Referencia.'-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; if(file_exists('logsPagseguro/'.$nome)) $nome = $Referencia.'-2-'.date('d-m-Y',$_SERVER['REQUEST_TIME']).'.txt'; $arquivo = fopen('logsPagseguro/'.$nome, "w+"); $dados = "Conta: ".$Referencia."\n"; $dados = "Email: ".$CliEmail."\n"; $dados .= "Total de Points: ".$produtos[0]['ProdQuantidade']."\n"; $dados .= "Hora da Transação: ". date('d-m-Y H:i:s', $_SERVER['REQUEST_TIME']).""; fwrite($arquivo, $dados); fclose($arquivo); } } } // A partir daqui, é só HTML: ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <h1>Pedido em processamento</h1> <p>Recebemos seu pedido e estamos aguardando pela confirmação do pagamento. Obrigado por comprar conosco.</p> </body> </html> Depois crie um arquivo chamado retorno.php e adicione isso: <?php if (!defined('TOKEN')) define ('TOKEN', ''); /** * RetornoPagSeguro * * Classe de manipulação para o retorno do post do pagseguro * * @package PagSeguro */ class RetornoPagSeguro { /** * _preparaDados * * Prepara os dados vindos do post e converte-os para url, adicionando * o token do usuario quando necessario. * * @internal é usado pela {@see RetornoPAgSeguro::verifica} para gerar os, * dados que serão enviados pelo PagSeguro * * @access private * * @param array $post Array contendo os posts do pagseguro * @param bool $confirmacao Controlando a adicao do token no post * @return string */ function _preparaDados($post, $confirmacao=true) { if ('array' !== gettype($post)) $post=array(); if ($confirmacao) { $post['Comando'] = 'validar'; $post['Token'] = TOKEN; } $retorno=array(); foreach ($post as $key=>$value){ if('string'!==gettype($value)) $post[$key]=''; $value=urlencode(stripslashes($value)); $retorno[]="{$key}={$value}"; } return implode('&', $retorno); } /** * _tipoEnvio * * Checa qual será a conexao de acordo com a versao do PHP * preferencialmente em CURL ou via socket * * em CURL o retorno será: * <code> array ('curl','https://pagseguro.uol.com.br/Security/NPI/Default.aspx') </code> * já em socket o retorno será: * <code> array ('fsocket', '/Security/NPI/Default.aspx', $objeto-de-conexao) </code> * se não encontrar nenhum nem outro: * <code> array ('','') </code> * * @access private * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @return array Array com as configurações * */ function _tipoEnvio() { //Prefira utilizar a função CURL do PHP //Leia mais sobre CURL em: http://us3.php.net/curl global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if (function_exists('curl_exec')) return array('curl', 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); elseif ((PHP_VERSION >= 4.3) && ($fp = @fsockopen('ssl://pagseguro.uol.com.br', 443, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30))) return array('fsocket', '/Security/NPI/Default.aspx', $fp); elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $_retPagSeguroErrNo, $_retPagSeguroErrStr, 30)) return array('fsocket', '/Security/NPI/Default.aspx', $fp); return array ('', ''); } /** * not_null * * Extraido de OScommerce 2.2 com base no original do pagseguro, * Checa se o valor e nulo * * @access public * * @param mixed $value Variável a ser checada se é nula * @return bool */ function not_null($value) { if (is_array($value)) { if (sizeof($value) > 0) { return true; } else { return false; } } else { if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) { return true; } else { return false; } } } /** * verifica * * Verifica o tipo de conexão aberta e envia os dados vindos * do post * * @access public * * @use RetornoPagSeguro::_tipoenvio() * @global string $_retPagSeguroErrNo Numero de erro do pagseguro * @global string $_retPagSeguroErrStr Texto descritivo do erro do pagseguro * @param array $post Array contendo os posts do pagseguro * @param bool $tipoEnvio (opcional) Verifica o tipo de envio do post * @return bool */ function verifica($post, $tipoEnvio=false) { global $_retPagSeguroErrNo, $_retPagSeguroErrStr; if ('array' !== gettype($tipoEnvio)) $tipoEnvio = RetornoPagSeguro::_tipoEnvio(); $spost=RetornoPagSeguro::_preparaDados($post); if (!in_array($tipoEnvio[0], array('curl', 'fsocket'))) return false; $confirma = false; if ($tipoEnvio[0] === 'curl') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $spost); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($ch); if (!RetornoPagSeguro::not_null($resp)) { curl_setopt($ch, CURLOPT_URL, $tipoEnvio[1]); $resp = curl_exec($ch); } curl_close($ch); $confirma = (strcmp ($resp, 'VERIFICADO') == 0); } elseif ($tipoEnvio[0] === 'fsocket') { if (!$tipoEnvio[2]) { die ("{$_retPagSeguroErrStr} ($_retPagSeguroErrNo)"); } else { $cabecalho = "POST {$tipoEnvio[1]} HTTP/1.0\r\n"; $cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $cabecalho .= "Content-Length: " . strlen($spost) . "\r\n\r\n"; $resp = ''; fwrite ($tipoEnvio[2], "{$cabecalho}{$spost}"); while (!feof($tipoEnvio[2])) { $resp = fgets ($tipoEnvio[2], 1024); if (strcmp ($resp, 'VERIFICADO') == 0) { $confirma = (strcmp ($resp, 'VERIFICADO') == 0); $confirma=true; break; } } fclose ($tipoEnvio[2]); } } if ($confirma && function_exists('retorno_automatico')) { $itens = array ( 'VendedorEmail', 'TransacaoID', 'Referencia', 'TipoFrete', 'ValorFrete', 'Anotacao', 'DataTransacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', ); foreach ($itens as $item) { if (!isset($post[$item])) $post[$item] = ''; if ($item=='ValorFrete') $post[$item] = str_replace(',', '.', $post[$item]); } $produtos = array (); for ($i=1;isset($post["ProdID_{$i}"]);$i++) { $produtos[] = array ( 'ProdID' => $post["ProdID_{$i}"], 'ProdDescricao' => $post["ProdDescricao_{$i}"], 'ProdValor' => (double) (str_replace(',', '.', $post["ProdValor_{$i}"])), 'ProdQuantidade' => $post["ProdQuantidade_{$i}"], 'ProdFrete' => (double) (str_replace(',', '.', $post["ProdFrete_{$i}"])), 'ProdExtras' => (double) (str_replace(',', '.', $post["ProdExtras_{$i}"])), ); } retorno_automatico ( $post['VendedorEmail'], $post['TransacaoID'], $post['Referencia'], $post['TipoFrete'], $post['ValorFrete'], $post['Anotacao'], $post['DataTransacao'], $post['TipoPagamento'], $post['StatusTransacao'], $post['CliNome'], $post['CliEmail'], $post['CliEndereco'], $post['CliNumero'], $post['CliComplemento'], $post['CliBairro'], $post['CliCidade'], $post['CliEstado'], $post['CliCEP'], $post['CliTelefone'], $produtos, $post['NumItens'] ); } return $confirma; } } if ($_POST) { RetornoPagSeguro::verifica($_POST); die(); } ?> No seu buypoints.php,basta colocar isso: <?php if(!$logged) if($action == "logout") $main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>'; else $main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>'; else { $main_content .= ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'"> <input type="hidden" name="item_valor_1" value="'. $config['pagseguro']['produtoValor'] .'"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'"> <table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody> <tr bgcolor="#505050" class="white"> <th colspan="2"><strong>Escolha a quantidade de pontos que deseja comprar</strong></th> </tr> <tr> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr> <td width="10%">Pontos</td> <td> <input name="item_quant_1" type="text" value="1" size="5" maxlength="5"> </td> </tr> <tr> <td colspan="2"> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" /> </td> </tr> </tbody></table></form>'; } ?> Para finalizar: Adicione no seu phpmyadmin,na parte SQL,a seguinte database: CREATE TABLE `retorno_automatico` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) default NULL, `TipoFrete` char(2) default NULL, `ValorFrete` decimal(10,2) default NULL, `Extras` decimal(10,2) default NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) default NULL, `CliComplemento` varchar(100) default NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) default NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; E essa outra aqui : CREATE TABLE `PagSeguroTransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) default NULL, `TipoFrete` char(2) default NULL, `ValorFrete` decimal(10,2) default NULL, `Extras` decimal(10,2) default NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) default NULL, `CliComplemento` varchar(100) default NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) default NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CRéDITOS:
Walef Xavier
Sociopata
-
ewerton157 deu reputação a AgaSsI em [Gesior Acc] Guild War System Com EscudosVou 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.tibiaking.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: 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 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!
Creditos: Walef Xavier
sei que o topico ta ruim maiis ta aii o war system