Ir para conteúdo

Trocando Posição De Teleport


Posts Recomendados

Quero lhes apresentar um code q a certo tempo o frerety(the.sharpest.horn) fez para mim

Qdo queria fazer aquelas alavancas do tibia q qdo puxadas "concertavam" os teleports

 

Breve postarei umas actions usando ela

Lembrando q quem usa o zorzin ot ja tem ela

+ com outro nome pois o zorzin q fez ela

E pode ser diferente

Essa eu indico para quem usa evolutions,forgotten e outros

 

go code

 

em luascript.cpp nos includes add:

#include "teleport.h"

 

E no meio dos lua register:

//doChangeTeleportPos(uid,newpos)

lua_register(m_luaState, "doChangeTeleportPos", LuaScriptInterface::luaDoChangeTeleportPos);

 

e no final add:

int LuaScriptInterface::luaDoChangeTeleportPos(lua_State *L)

{

//doChangeTeleportPos(uid,newpos)

Position pos;

uint32_t stackpos;

popPosition(L, pos, stackpos);

uint32_t uid = popNumber(L);

 

ScriptEnviroment* env = getScriptEnv();

 

Thing* tmp = env->getThingByUID(uid);

Teleport* tp = NULL;

if(tmp)

tp = tmp->getItem()->getTeleport();

 

if(tp){

tp->setDestPos(pos);

lua_pushnumber(L, LUA_NO_ERROR);

}

else{

reportErrorFunc(getErrorDesc(LUA_ERROR_THING_NOT_FOUND));

lua_pushnumber(L, LUA_ERROR);

}

return 1;

}

 

em luascript.h acima de:

static int luaDoRemoveItem(lua_State *L);

 

add:

static int luaDoChangeTeleportPos(lua_State *L);

 

 

usando:

O jeito correto de se usar é

 

faça um teleport no map editor com as coordenadas um sqm perto (igual no rl qdo num da q é tp pro sqm norte)

Ai faça um script + - menos assim:

 

function onUse(cid, item, frompos, item2, topos)

gatepos = {x=79, y=36, z=7, stackpos=1}

newpos ={x=78, y=36, z=7, stackpos=1}

newpos1 ={x=57, y=31, z=7, stackpos=1}

tp = getThingfromPos(gatepos)

 

if item.uid == 8100 and item.itemid == 1945 then

doChangeTeleportPos(tp.uid,newpos)

doTransformItem(item.uid,item.itemid+1)

elseif item.uid == 8100 and item.itemid == 1946 then

doChangeTeleportPos(tp.uid,newpos1)

doTransformItem(item.uid,item.itemid-1)

else

doPlayerSendCancel(cid,"Sorry, not possible.")

end

return 1

end

 

 

Vc puxa a alavanca com uid e ele checa a pos (vc pode ate fazer pra criar tp) e muda a pos dele :D

 

facil naum ?

 

Depois farei uma estilo tibia rl

qdo se puxa umas 6 alavanca em ordem ele muda o tp :D

 

flws

Editado por tibiaa4e
Link para o comentário
Compartilhar em outros sites

  • 4 months later...

Tem uma parte errada la...

nt LuaScriptInterface::luaDoChangeTeleportPos(lua_State *L)
{
//doChangeTeleportPos(uid,newpos)
Position pos;
uint32_t stackpos;
popPosition(L, pos, stackpos);
uint32_t uid = popNumber(L);

ScriptEnviroment* env = getScriptEnv();

Thing* tmp = env->getThingByUID(uid);
Teleport* tp = NULL;
if(tmp)
tp = tmp->getItem()->getTeleport();

if(tp){
tp->setDestPos(pos);
lua_pushnumber(L, LUA_NO_ERROR);
}
else{
reportErrorFunc(getErrorDesc(LUA_ERROR_THING_NOT_FOUND));
lua_pushnumber(L, LUA_ERROR);
}
return 1;
}

 

O correto é

int LuaScriptInterface::luaDoChangeTeleportPos(lua_State *L)
{
//doChangeTeleportPos(uid,newpos)
Position pos;
uint32_t stackpos;
popPosition(L, pos, stackpos);
uint32_t uid = popNumber(L);

ScriptEnviroment* env = getScriptEnv();

Thing* tmp = env->getThingByUID(uid);
Teleport* tp = NULL;
if(tmp)
tp = tmp->getItem()->getTeleport();

if(tp){
tp->setDestPos(pos);
lua_pushnumber(L, LUA_NO_ERROR);
}
else{
reportErrorFunc(getErrorDesc(LUA_ERROR_THING_NOT_FOUND));
lua_pushnumber(L, LUA_ERROR);
}
return 1;
}

 

Tem so nt

o certo eh int

Editado por GM Volcano
Link para o comentário
Compartilhar em outros sites

  • 3 months later...

LAFnÇAFJÁJFlpAF

!$!@$!#%!#%!, nem me avisou que ia postar :B

hey, para de jogar cs e entra no msn de vez enquando o/

 

#GM Volcano

hey, anda aprendendo C++? o//

parece que existem mais programadores que no começo do ano o/

(:

falta o i mesmo, deve ter sido um erro de copiar/colar :B

 

até mais (:

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...