[7.6] Npc Que Vende House (esse Funfa)

  • 1
  • 2

frerety

DVNO
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/04/06Posts: 133

HiHo!

Com esse code, o NPC antes de vender a house verifica se ela tem dono. Se tiver não vende a casa... ^^

npc.cpp

ache isso:

lua_register(luaState, "selfGetPosition", NpcScript::luaSelfGetPos);

logo abaixo adicione:

 

lua_register(luaState, "checkHouse", NpcScript::luacheckhouse);

 

agora procure:

int NpcScript::luaSelfGetPos(lua_State *L){

lua_pop(L,1);

Npc* mynpc = getNpc(L);

lua_pushnumber(L, mynpc->pos.x);

lua_pushnumber(L, mynpc->pos.y);

lua_pushnumber(L, mynpc->pos.z);

return 3;

}

logo abaixo adicione:

 

int NpcScript::luacheckhouse(lua_State *L){	Npc* mynpc = getNpc(L);    if(mynpc)    {        if(mynpc->docheckhouse(L) == true)             lua_pushnumber(L, 0);        else             lua_pushnumber(L, -1);    }             return 1;}

 

(mais em cima) procure por:

void Npc::doAttack(int id){

attackedCreature = id;

}

logo abaixo add:

 

bool Npc::docheckhouse(lua_State *L){    Npc* mynpc = NpcScript::getNpc(L);    Tile* tile = g_game.getTile(mynpc->pos);	House* house = tile->getHouse();        	if (house)	{        if(house->getOwner() != "")                return false;        else                return true;	}}

 

npc.h

procure por:

void doAttack(int id);

abaixo adicione:

 

bool docheckhouse(lua_State *L);

 

(mais em cima) procure por:

static int luaSelfGetPos(lua_State *L);

logo após adicione:

 

static int luacheckhouse(lua_State *L);

 

OBS: Para usar a função no script do npc, digite checkHouse(). Irá retornar 0 se a house não tiver dono e retornará -1 se ela tiver dono.

Exemplo de NPC

focus = 0

talk_start = 0

target = 0

following = false

attacking = false

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)

end

function onCreatureDisappear(cid, pos)

   if focus == cid then

          selfSay('Good bye then.')

          focus = 0

          talk_start = 0

   end

end

function onCreatureTurn(creature)

end

function msgcontains(txt, str)

   return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

function onCreatureSay(cid, type, msg)

   msg = string.lower(msg)

   if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then

    selfSay('Hello ' .. creatureGetName(cid) .. '! I sell houses.')

    focus = cid

    talk_start = os.clock()

elseif (msgcontains(msg, 'hi') and (focus ~= cid)) and getDistanceToCreature(cid) < 4 then

    selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')    elseif focus == cid then

  talk_start = os.clock()

end

if focus == cid then

  talk_start = os.clock()

  if (msgcontains(msg, 'great street iii')) then -- nome da house em minúsculo

   selfSay('/goto 157 31 7') -- posicao de um sqm qualquer (dentro da house)

   if checkHouse() == 0 then -- checa se a house tem dono(-1) ou não(0)

    if pay(cid,100000) then -- preço da house -> 100 k

     selfSay('/owner ' .. creatureGetName(cid))

     selfSay('/c ' .. creatureGetName(cid))

     selfSay('/goto 160 54 7') -- lugar onde o npc fica

    else

     selfSay('/goto 160 54 7') -- lugar onde o npc fica

     selfSay('Sorry, you don\'t have enough money.')

    end

   else

    selfSay('/goto 160 54 7') -- lugar onde o npc fica

    selfSay('Essa casa já tem dono')

   end

  elseif (msgcontains(msg, 'great street iv')) then -- nome da house em minúsculo

   selfSay('/goto 166 37 7') -- posicao de um sqm qualquer (dentro da house)

   if checkHouse() == 0 then -- checa se a house tem dono(-1) ou não(0)

    if pay(cid,100000) then -- preço da house -> 100 k

     selfSay('/owner ' .. creatureGetName(cid))

     selfSay('/c ' .. creatureGetName(cid))

     selfSay('/goto 160 54 7') -- lugar onde o npc fica

    else

     selfSay('/goto 160 54 7') -- lugar onde o npc fica

     selfSay('Sorry, you don\'t have enough money.')

    end

   else

    selfSay('/goto 160 54 7') -- lugar onde o npc fica

    selfSay('Essa casa já tem dono')

   end

  elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then

   selfSay('Good bye, ' .. creatureGetName(cid) .. '!')

   focus = 0

   talk_start = 0

  end

   end

end

function onCreatureChangeOutfit(creature)

end

function onThink()

   if (os.clock() - talk_start) > 30 then

    if focus > 0 then

     selfSay('Next Please...')

    end

     focus = 0

   end

  if focus ~= 0 then

   if getDistanceToCreature(focus) > 5 then

    selfSay('Good bye then.')

    focus = 0

   end

  end

end

PS .: No exemplo acima, o NPC fica no templo. Caso você queira mudá-lo de lugar, você terá que trocar "/goto 160 54 7" para "/goto + posição que ele irá ficar".

FlW

CyA!

It's the hunger; the hunger for an alternative and the refusal to accept a life of unhappiness.


bruxo

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/12/05Posts: 45

Extremamente bom ^^.

Adeus !buyhouse? Infelizmente não =/.

É dificil configurar um NPC pra tantas casas hehe, mas dar pra colocar esse npc pra casas especiais ^^, só tendo um pouco de criatividade ^^.

~~Mundo de Mirage, online

Para mais informações: www.mundodemirage.com

Kélvyn

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/07/05Posts: 9

hehe bom code, soh q eu ainda axo o !buyhouse melhor ^^ mais vlw pelo code irmão

user posted image

favorefty

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/10/05Posts: 82

um cod que ajudara a muitos.

2 perguntas.

esse cod eh seu??/

vc eh compiller???

se vc for compiller e nao

tiver equipe, o convite esta feito

na minha assinatua tem o link

do poster,...

da uma olhada e ve se vc quer entra

flw...

Abraços,

Favorefty.

Ajudando a Organizar o Fórum.
Meu Fã ? use :)
favoreftyfansl7.jpg
Sou:
Mapper.gif
70%
ServerAdmin.gif
100%

colex

Serviços Prestados a Comunidade
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/05Posts: 301Gênero: Masculino

aew

ta ficando cada vez melhor na programção de otserv

nota 10

continue postando seus codes

cya~~ :bye:

frerety

DVNO
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/04/06Posts: 133

HiHo!

@favorefty

1º -> Sim, esse code eh meu

2º -> Sou compiler sim ^^

3º -> Neim sei ainda si tenhu ow naum ekipe... Jah fui convidado pra 3 (fora essa) soh ki duas jah eh ctz q neim vai dar certu... hAUHAuahU :S

FlW

CyA!

It's the hunger; the hunger for an alternative and the refusal to accept a life of unhappiness.


ScarFace

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/04/06Posts: 51

mt bom esse cod ^^

Issu aew kd vez melhor ^^

user posted image

 

[ASSINATURA EDITADA POR FAZER PROPAGANDAS. CASO CONTINUE SERÁ ALERTADO]

adoidad0

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 07/12/05Posts: 1

este code foi criado e desenvolvido por ReX o dono da HOtserv

e vc pego esses codes nas sources dele

nem vem roubar creditos do kra

ScarFace

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/04/06Posts: 51

@adoidad0

Axo que isso nao foi robado nao...

Voce tem como provar?

Kem falo que ele nao copio?

user posted image

 

[ASSINATURA EDITADA POR FAZER PROPAGANDAS. CASO CONTINUE SERÁ ALERTADO]

Haryy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/06/06Posts: 6

Nussa parece ser otimo mais nao intendendo disso + vo por no meu ot vlws

Tyy

frerety

DVNO
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/04/06Posts: 133

HiHo!

@adoidad0

Primeiro, eu só tenho as sources do YurOTS 0.9.4 no meu pc... nunca neim vi as sources de neverland, muito menos Hotserv. Esse script pode ser PARECIDO com o do criador do hotserv, mas não é do hotserv. Faço meus scripts para ESTUDO PRÓPRIO... e você pode perguntar para qualquer um daqui do xTibia, nunca copiei nenhum script sem colocar os devidos créditos.

Sem mais

FlW

CyA!

It's the hunger; the hunger for an alternative and the refusal to accept a life of unhappiness.


maca_vi

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 06/12/05Posts: 39
@frerety  cara  coloquei o seu code la de velocidade de players funciono rox a lot to colocando esse agora vo testar vlw brow  vo usar esse npc so pra guild halls e algumas casas grandes que fiz xD tyy

esse erro ai do nil value foi qnd eu disse pra ele o nome da casa olha isso o erro que deu ele foi la msm mas n falo nda de vende o compra a casa se tinha o n o dono

issoerro9xj.pngs

Angel Of Ilusions

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 11/12/05Posts: 108

aew cara..

eitaaa nois codigo mto bom o.O

nunk tinha visto esse ae e nem fazia ideia q existia cara o.O:bigsmile:

vlws

flws ae

fuiz!!

frerety

DVNO
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/04/06Posts: 133

HiHo!

@Maca_vi

tente refazer seu npc.lua e reposte se der erro (poste tbm seu script do npc.lua novamente [o q vc me mandou por pm])

Espero ter ajudado

FlW

CyA!

It's the hunger; the hunger for an alternative and the refusal to accept a life of unhappiness.


Heitorzin

Ex-Coordenador XTibia
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 23/10/05Posts: 233Char no Tibia: Inp

Frerety ,

Poxa cara valeu ein ,

Agora no meu mapa global não vai trava com o comando !buyhouse acabei de tirar e vou por esse npc ,

Se não fosse por vc :D

Abraços ai

Continue assim

Nota 10 !

@adoidad0

Eu conheço o Frerety já vai fazer um tempao , ele faz parte de uma equipe ROX a JV Server , ele faz seus próprios codes sim , pede qualquer um a ele que ele faz .

Anteciosamente,

Heitorzin


Ex-Coordenador XTibia.com

  • 1
  • 2