Ir para conteúdo

Projeto Tutores de Scripting


Killua

Posts Recomendados

Não, você não entendeu minha dúvida.. Tipo, eu sei que o getter e setter eu declaro o metodo lá na classe player.. Mas como eu vou fazer pra, através de uma action em lua, modificar esse multiplicador que tá no objeto player? Vai estar como atributo da meta tabela "cid" que as funções em lua recebem?

e so tu ver la, tem varios parecidos, mas e basicamente pegar o number da pilha do lua_State L e instanciar como player por esse numero

 

int32_t LuaInterface::luaSetPlayerMultiplier(lua_State* L)
{
    //setPlayerMultiplier(cid, type, value)
    float value = popFloatNumber(L);
    int type = popNumber(L);

    ScriptEnviroment* env = getEnv();
    if(Player* player = env->getPlayerByUID(popNumber(L))){
 ///...
Link para o comentário
Compartilhar em outros sites

Entendo.. E o que você acha de eu criar um atributo na classe ITEMS definindo um wandMultiplier e daí modificar a fórmula do dano da wand de acordo com esse multiplicador dentro do objeto do item? Daí em lua eu daria um doItemSetAttribute pra mudar esse multiplicador..

 

Aí com isso eu não vou precisar mudar nada do player, mas sim do item.. Pq aí sim funcionaria da forma que eu quero.. Pq pensa, se o cara usar uma wand que tem 1.2 de multiplicador, e quando ele tirar e colocar outra, vai continuar 1.2... Aí eu teria que fazer um movement pra todas wands/rods pra definir esse multiplicador toda hora que eu retirar/colocar uma wand/rod

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

Entendo.. E o que você acha de eu criar um atributo na classe ITEMS definindo um wandMultiplier e daí modificar a fórmula do dano da wand de acordo com esse multiplicador dentro do objeto do item? Daí em lua eu daria um doItemSetAttribute pra mudar esse multiplicador..

 

Aí com isso eu não vou precisar mudar nada do player, mas sim do item.. Pq aí sim funcionaria da forma que eu quero.. Pq pensa, se o cara usar uma wand que tem 1.2 de multiplicador, e quando ele tirar e colocar outra, vai continuar 1.2... Aí eu teria que fazer um movement pra todas wands/rods pra definir esse multiplicador toda hora que eu retirar/colocar uma wand/rod

Sim perfeito, assim daria. E o bom de fazer assim e que os dados ja ficariam salvos attributes do proprio item, ai ja facilita tudo.

Link para o comentário
Compartilhar em outros sites

Beleza... Amanha eu vou sentar e tentar fazer as modificações na source.. Eu soh vou ter problema pra aprender a usar o visual c++, pq tudo que programei na vida foi usando ou o compilador do linux (g++ ou gcc) no terminal ou então usando o eclipse, quando programo em java...

Não conhece um tutorial de compilação do server pra me ajudar não? TIpo, eu uso a versão que os mexicanos(sei lá, eles falam espanhol) estão desenvolvendo, a partir do cryng damson 0.3.7, que é o OTX Server. Daí eles usam Visual Studio 2013 Ultimate pra compilar.. Mas também usam algumas bibliotecas que são compatíveis com o OTX server da versão que eu tenho.. Tenho o site onde posso fazer o download do visual + libs, então preciso só de uma ajudinha pra compilar mesmo...

 

E tipo, eles usam o boost 1.54 eu acho, mas isso faz com que na hora de fechar o servidor, dá um erro que fala que parou de responder, que não prejudica em nada, mas você sabe como parar de dar esse crash? E oq é exatamente esse boost, sabe me dizer? Obrigado por tudo, tá me esclarecendo bastante coisas =D REP++

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

Beleza... Amanha eu vou sentar e tentar fazer as modificações na source.. Eu soh vou ter problema pra aprender a usar o visual c++, pq tudo que programei na vida foi usando ou o compilador do linux (g++ ou gcc) no terminal ou então usando o eclipse, quando programo em java...

 

Não conhece um tutorial de compilação do server pra me ajudar não? TIpo, eu uso a versão que os mexicanos(sei lá, eles falam espanhol) estão desenvolvendo, a partir do cryng damson 0.3.7, que é o OTX Server. Daí eles usam Visual Studio 2013 Ultimate pra compilar.. Mas também usam algumas bibliotecas que são compatíveis com o OTX server da versão que eu tenho.. Tenho o site onde posso fazer o download do visual + libs, então preciso só de uma ajudinha pra compilar mesmo...

 

E tipo, eles usam o boost 1.54 eu acho, mas isso faz com que na hora de fechar o servidor, dá um erro que fala que parou de responder, que não prejudica em nada, mas você sabe como parar de dar esse crash? E oq é exatamente esse boost, sabe me dizer? Obrigado por tudo, tá me esclarecendo bastante coisas =D REP++

Na otland tu acha as libs pra compilar, e quanto ao boost cara, eu nao vou saber te explicar, ele e uma coisa tao ampla que e complicado, mas resumindo de maneira bem pobre ele e uma biblioteca do c++ que tem como principal meta deixar o codigo mais eficiente e maleavel.

 

Quanto a compilaçao, qual o problema? Nao tem o projeto pronto e isso?

Link para o comentário
Compartilhar em outros sites

Sim, eu nem tenho o visual studio instalado ainda, vou fazer isso amanhã.. Minha net é muito porca, amanha vou estar em uma net de 100Mbits kk

Mas tipo, o servidor vai ficar pior se eu usar um boost 1.44 por exemplo? Acho que li por aí que fazendo isso, o servidor não dá crash quando se compila usando esse boost..

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

Sim, eu nem tenho o visual studio instalado ainda, vou fazer isso amanhã.. Minha net é muito porca, amanha vou estar em uma net de 100Mbits kk

Mas tipo, o servidor vai ficar pior se eu usar um boost 1.44 por exemplo? Acho que li por aí que fazendo isso, o servidor não dá crash quando se compila usando esse boost..

Nao sei dizer, mas pode ser que sim porque as sources sao bem antigas, talvez na epoca que fizeram, os conceitos basicos tenha sido feitos com base nessa versao

Nao sei como ta seu projeto, mas se tiver começando agora, sugiro que faça uso do tfs 1.0, o codigo dele ta muito limpo, bem estavel e atualizado

Link para o comentário
Compartilhar em outros sites

Cara, o meu server já está pronto a anos, eu venho modificando ele a tempos.. Eu mudaria pro tfs 1.0, mas o problema é que já ta tudo feito.. Só venho criando novas coisas de dias pra cá, entende?

 

Fico meses sem mexer e depois volto, e coisas assim.. Poderia me passar um link da versão "original" desse tfs 1.0? Mas tem que ter suporte à versão 8.6, que é a que eu uso e não quero mudar... Quem sabe eu faça uma mudança de distro.. Só espero não dar erro nos meus scrips, pq senão vou ter que fazer bastante coisa pra adequar pro tfs 1.0

Link para o comentário
Compartilhar em outros sites

Cara, o meu server já está pronto a anos, eu venho modificando ele a tempos.. Eu mudaria pro tfs 1.0, mas o problema é que já ta tudo feito.. Só venho criando novas coisas de dias pra cá, entende?

 

Fico meses sem mexer e depois volto, e coisas assim.. Poderia me passar um link da versão "original" desse tfs 1.0? Mas tem que ter suporte à versão 8.6, que é a que eu uso e não quero mudar... Quem sabe eu faça uma mudança de distro.. Só espero não dar erro nos meus scrips, pq senão vou ter que fazer bastante coisa pra adequar pro tfs 1.0

Ah, entao deixa porque ele e pra versoes acima de 10x

Link para o comentário
Compartilhar em outros sites

Entendo... Sei lá cara, talvez um servidor sério na versão atual do tibia seja bom, se alterar as coisas que a cipsoft fudeu com o jogo, tipo o pvp... Mas o meu servidor é da versão que eu gostava de jogar, apesar de a melhor versão ter sido 7.6 (tenho um servidor dessa versão, pra você ter ideia do tempo que brinco com o meu server), mas a 8.6 o tibia ainda tinha coisas boas para oferecer.. E tem bastante servidores 8.6 por ai, então vou deixar assim mesmo kkk

 

Muito obrigado pelas dicas ae, vou ver se baixo o visual studio amanha e começo a mexer nas sources.. Você não respondeu, n sabe de nenhum tutorial por ai não? Qualquer outra dúvida de implementação eu te pergunto aki denovo \o

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

Entendo... Sei lá cara, talvez um servidor sério na versão atual do tibia seja bom, se alterar as coisas que a cipsoft fudeu com o jogo, tipo o pvp... Mas o meu servidor é da versão que eu gostava de jogar, apesar de a melhor versão ter sido 7.6 (tenho um servidor dessa versão, pra você ter ideia do tempo que brinco com o meu server), mas a 8.6 o tibia ainda tinha coisas boas para oferecer.. E tem bastante servidores 8.6 por ai, então vou deixar assim mesmo kkk

 

Muito obrigado pelas dicas ae, vou ver se baixo o visual studio amanha e começo a mexer nas sources.. Você não respondeu, n sabe de nenhum tutorial por ai não? Qualquer outra dúvida de implementação eu te pergunto aki denovo \o

http://otland.net/threads/compiling-msvc-compiling-tfs-under-windows-easy-way.125178/

 

é para 2010, mas acho que deve dar na mesma

Link para o comentário
Compartilhar em outros sites

Cara, salvou demais viu... Muito obrigado ae, se eu fuder tudo ali venho cá pedir socorro kkkkkkkkk Máximo que pode acontecer é perder tempo, mas é assim que aprende programação :D Mt bom esse tópido

 

Vlws!!!!!

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

Galera como que eu faço para descobri a quantidade de um item no chão?

 

Acho que é essa aqui getTileItemById({x = 209, y = 144, z = 6}, item), mas não sei o que coloco para pegar a quantidade. Alguém poderia min dizer?

Link para o comentário
Compartilhar em outros sites

Galera como que eu faço para descobri a quantidade de um item no chão?

 

Acho que é essa aqui getTileItemById({x = 209, y = 144, z = 6}, item), mas não sei o que coloco para pegar a quantidade. Alguém poderia min dizer?

 

Você quer pegar um item e ver a quantidade de stacks que tem? Ou checar vários items separados no chão e contar quantos tem?

 

Se for contar quantos stacks tem de um item no chão (por exemplo pegar um monte de gold e contar quantos tem) você pode simplesmente fazer:

item = getTileItemById({x = 209, y = 144, z = 6}, itemid)
if isItemStackable(item.id) then
   count = item.type
end

Aí você vai conseguir ter a quantidade de stacks.. Mas se você quiser pegar a quantidade de items "não-juntáveis" você vai ter que utilizar um for alterando o stackpos desde STACKPOS_GROUND até STACKPOS_TOP_MOVABLE_ITEM_OR_CREATURE e daí ir utilizando a função getThingFromPos(pos).. E além disso pode usar o .type pra ir pegando a quantidade de cada um desses items..

 

Espero ter ajudado =)

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

Galera como que eu faço para descobri a quantidade de um item no chão?

 

Acho que é essa aqui getTileItemById({x = 209, y = 144, z = 6}, item), mas não sei o que coloco para pegar a quantidade. Alguém poderia min dizer?

getTileInfo(pos).items

 

 

int32_t LuaScriptInterface::luaGetTileInfo(lua_State* L)
{
	//getTileInfo(pos)
	PositionEx pos;
	popPosition(L, pos);
	if(Tile* tile = g_game.getMap()->getTile(pos))
	{
		ScriptEnviroment* env = getEnv();
		pushThing(L, tile->ground, env->addThing(tile->ground));

		setFieldBool(L, "protection", tile->hasFlag(TILESTATE_PROTECTIONZONE));
		setFieldBool(L, "nopvp", tile->hasFlag(TILESTATE_NOPVPZONE));
		setFieldBool(L, "nologout", tile->hasFlag(TILESTATE_NOLOGOUT));
		setFieldBool(L, "pvp", tile->hasFlag(TILESTATE_PVPZONE));
		setFieldBool(L, "refresh", tile->hasFlag(TILESTATE_REFRESH));
		setFieldBool(L, "trashed", tile->hasFlag(TILESTATE_TRASHED));
		setFieldBool(L, "house", tile->hasFlag(TILESTATE_HOUSE));
		setFieldBool(L, "bed", tile->hasFlag(TILESTATE_BED));
		setFieldBool(L, "depot", tile->hasFlag(TILESTATE_DEPOT));

		setField(L, "things", tile->getThingCount());
		setField(L, "creatures", tile->getCreatureCount());
		setField(L, "items", tile->getItemCount());
		setField(L, "topItems", tile->getTopItemCount());
		setField(L, "downItems", tile->getDownItemCount());
	}
	else
	{
		errorEx(getError(LUA_ERROR_TILE_NOT_FOUND));
		lua_pushboolean(L, false);
	}

	return 1;
}

 

 

Cara, salvou demais viu... Muito obrigado ae, se eu fuder tudo ali venho cá pedir socorro kkkkkkkkk Máximo que pode acontecer é perder tempo, mas é assim que aprende programação :D Mt bom esse tópido

 

Vlws!!!!!

faz o seguinte, pra não precisar alterar muita coisa, faz um if quando for usar o valor, se for nil seta como 1

dai quando não tiver o valor do attribute, vai ser 1

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...