Jump to content

[Problema] Arena De Duelos


Marcos Daniel
 Share

Recommended Posts

Boa tarde, queria vos pedir uma ajuda, tenho um problema na minha Arena de Duelos já mudei de quest's e acontece-me o mesmo problema queria saber se alguém me podia ajudar.. O problema é o seguinte, vou ao NPC, insiro o nome do char que pretendo duelar e depois disso faz loading para o mapa, e quando o faz ambos chars voltam imediantamente para a cidade sem qualquer paragem no mapa entra para o mapa vê-se o mapa mas logo a seguir teleporta-me para a cidade nem chego a ver o char, mas se for Player vs GM o char GM fica no mapa e o player vai para a cidade se for player,vs player ambos vão para a cidade!

 

Eu já vi a quest e penso que não há problema nenhum! Agradecia quem me ajuda-de!

 

Cumprimentos.

Link to comment
Share on other sites

quest arena_manager begin

state start begin

when 20017.chat.gameforge.arena_manager._10_npcChat begin

if game.get_event_flag("arena_close") > 0 then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._30_say)

return

end

 

if not npc.lock() then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._40_say)

return

end

 

local useMinLevel = game.get_event_flag("arena_use_min_level")

 

if useMinLevel == 0 then

useMinLevel = 25 ;

end

 

if pc.get_level() < useMinLevel then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._50_say, useMinLevel))

npc.unlock()

return

else

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._60_say)

 

local sname = input()

 

if sname == "" then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._70_say)

npc.unlock()

return

else

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._80_say, pc.name, sname))

wait("")

 

local opp_vid = find_pc_by_name(sname)

 

if opp_vid == 0 then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._90_say, sname))

npc.unlock()

return

elseif opp_vid == pc.get_vid() then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._100_say)

npc.unlock()

return

end

 

local old = pc.select(opp_vid , opp_vid )

local opp_level = pc.get_level()

pc.select(old , old )

 

if opp_level < useMinLevel then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._110_say, useMinLevel))

npc.unlock()

return

end

if not npc.is_near_vid(opp_vid, 10) then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._120_say, sname))

npc.unlock()

return ;

end

 

local a = arena.is_in_arena(opp_vid)

if a == 0 then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._130_say, sname))

npc.unlock()

return ;

end

say_title(gameforge.arena_manager._140_sayTitle)

say(string.format(gameforge.arena_manager._85_say, pc.name, sname))

local agree = confirm(opp_vid, string.format(gameforge.arena_manager._87_say, sname, pc.name), 30)

if agree!= CONFIRM_OK then

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._150_say, sname))

npc.unlock()

return

end

 

s = arena.start_duel(sname, 3)

 

if s == 0 then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._160_say)

elseif s == 2 then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._170_say)

elseif s == 3 then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._180_say)

end

end

end

npc.unlock()

end

 

when 20017.chat.gameforge.arena_manager._190_npcChat begin

local g = arena.get_duel_list()

local arena_name = {}

local arena_observer = {}

 

table.foreachi(g,

function(n, p)

arena_name[n] = string.format(gameforge.arena_manager._195_say, p[1], p[2])

arena_observer[n] = { p[3], p[4], p[5] }

end

)

 

table.insert(arena_name, gameforge.arena_manager._200_tableInsert)

table.insert(arena_observer, 0)

 

local count = table.getn(g)

if count == 0 then

say_title(gameforge.arena_manager._20_sayTitle)

say(gameforge.arena_manager._210_say)

return ;

else

say_title(gameforge.arena_manager._20_sayTitle)

say(string.format(gameforge.arena_manager._220_say, count))

wait()

end

 

if table.getn(g)!= 0 then

local s = select_table(arena_name)

 

if table.getn(arena_observer) == s then

return ;

end

 

if table.getn(arena_observer) >= s then

arena.add_observer(arena_observer[1], arena_observer[2], arena_observer[3])

end

end

end

end

end

 

 

 

Quest da arena..

Link to comment
Share on other sites

Como observador consegues entrar?

 

Verifica se o id a arena está no mesmo core do que o mapa de onde entras (se entras na cidade 1, se a cidade1 e id da arena estão no map_index do mesmo core do mesmo ch).

Experimenta também colocar o map_id na arena no ch99.

 

Caso nada acima funciona, coloca isto no config dos canais:

TEST_SERVER: 1 e coloca aqui os .txt do ch.

Link to comment
Share on other sites

 

Como observador consegues entrar?

 

Verifica se o id a arena está no mesmo core do que o mapa de onde entras (se entras na cidade 1, se a cidade1 e id da arena estão no map_index do mesmo core do mesmo ch).

Experimenta também colocar o map_id na arena no ch99.

 

Caso nada acima funciona, coloca isto no config dos canais:

TEST_SERVER: 1 e coloca aqui os .txt do ch.

 

Vou fazer isso, não consigo observar porque o duelo não aparece na lista .. mas ja tinha inserido no map_allow o id do mapa ate no ch99 ja tem mas vou fazer a do test_server e digo algo
Link to comment
Share on other sites

Deveria criar um ficheiro chamado

DEV_LOG.log

 

Elimina syserr e syslog do ch onde está o mapa da arena.

De seguida volta a entrar com o char lá, quando ele for teleportado para a cidade faz download do syserr e syslog e coloca aqui.

Por vezes o syserr não contem nada mas o syslog contem informação útil.

Caso não tenhas o DEV_LOG.log com o modo TEST_SERVER:1 nos config (tens de reiniciar as files para entrar em efeito) o mesmo poderá estar desativo, ignora nesse caso.

Link to comment
Share on other sites

Estava com problemas ao criar spoilers então decidi fazer upload do dev_log.txt e do syslog e syserr do game 99 aqui está Tierri : https://mega.nz/#!l0NylARI!PWYBPHsGIcAjv9tGpM74uYzWUxMf1VW51Gws3o1Ma5Y

 

 

Tinha apagado o dev_log e os syserr e syslog isso que ai tem é a partir do momento que liguei o servidor e entrei na arena, os char's com TESTE_SERVER ligado não vão para a cidade ficam no mapa, mas não ativa a cena de duelarem, apenas ficam lá como dois do mesmo reino...

Link to comment
Share on other sites

SYSERR: Dec 22 12:27:32 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'hint' at row 1 (query: INSERT DELAYED INTO log (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), 1, 856400, 10100, 0, 'LOGIN', '25.22.96.198 995327026 99 112 200000', '25.22.96.198') errno: 1406)

SYSERR: Dec 22 12:39:40 :: OnClick: [DEV]MHz.OnClickFailure(ArenaTest) - target is PC

 

Tens aqui o teu erro.. Passa por algo que envolve a AsyncSQL

Link to comment
Share on other sites

 

 

SYSERR: Dec 22 12:27:32 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'hint' at row 1 (query: INSERT DELAYED INTO log (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), 1, 856400, 10100, 0, 'LOGIN', '25.22.96.198 995327026 99 112 200000', '25.22.96.198') errno: 1406)

SYSERR: Dec 22 12:39:40 :: OnClick: [DEV]MHz.OnClickFailure(ArenaTest) - target is PC

 

Tens aqui o teu erro.. Passa por algo que envolve a AsyncSQL

 

 

Sim e o que pode ser será que me podes ajudar? Não sei o que é AsyncSQL :|
Link to comment
Share on other sites

Isso não sei bem, mas se procurares no google existem muitos links com os mesmos problemas que os teus, portanto se procurares um pouco deves encontrar solução concreta.

Só não partilho contigo os Links porque são de outras comunidades, mas se escreveres no google: "ChildLoop: AsyncSQL: query failed: Data too long for column 'hint' at row 1 (query: INSERT DELAYED INTO log" encontras vários links

Link to comment
Share on other sites

Ainda não li os syserr, no entanto o do hint é apenas um aviso. Isto deverá eliminar:


SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `new_log`;
CREATE TABLE `new_log` (
 `vnum` varchar(25) COLLATE latin1_bin DEFAULT NULL,
 `ID` int(25) DEFAULT NULL,
 `type` varchar(25) COLLATE latin1_bin DEFAULT NULL,
 `time` time DEFAULT NULL,
 `who` int(25) DEFAULT NULL,
 `x` int(25) DEFAULT NULL,
 `y` int(25) DEFAULT NULL,
 `what` int(25) DEFAULT NULL,
 `how` text COLLATE latin1_bin,
 `hint` text COLLATE latin1_bin,
 `ip` varchar(50) COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin;

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...