Ir para conteúdo

[7.6] Npc Que Vende Bp De Items


Posts Recomendados

HiHo!

Eh... isso daki tava mt paradão intaum resouvi "soltar" um code meu... Essa é uma função para um NPC criar BP de Items... Funciona para YurOTS, não se si funciona para outros OtServers

Disbugado °ºoº° Se o player estiver com a BP cheia o NPC "taca" a BP no tile abaixo do player (antes o server caia)

Npc.Cpp

Procure por:

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

Logo abaixo adicione:

 

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::luaBuyBp(lua_State *L){	int cost = (int)lua_tonumber(L, -1);	int count = (int)lua_tonumber(L, -2);	int type = (int)lua_tonumber(L, -3);	int cid = (int)lua_tonumber(L, -4);	lua_pop(L,4);    Item* newItem;    switch(type)    {               case 2268:                    newItem = Item::CreateItem(2003, count);                    break;               case 2273:                    newItem = Item::CreateItem(2002, count);                    break;               case 2313:                    newItem = Item::CreateItem(2001, count);                    break;               case 2304:                    newItem = Item::CreateItem(2000, count);                    break;               case 2311:                    newItem = Item::CreateItem(1988, count);                    break;               default:                    newItem = Item::CreateItem(3940, count);                    break;    }	if(!newItem)		return true;    Container* container = dynamic_cast<Container*>(newItem);    Item* newrune;    for(int i=0; i<20; i++)    {            newrune = Item::CreateItem(type, count);            container->addItem(newrune);    }    if(!container)    {                  delete newrune;                  return true;    }  	Npc* mynpc = getNpc(L);	Creature* creature = mynpc->game->getCreatureByID(cid);	Player* player = creature? dynamic_cast<Player*>(creature) : NULL;    if (player->getCoins(cost))    {        if (player->removeCoins(cost))        {             if (container->size() < container->capacity())                 player->addItem(newItem);             else                 mynpc->game->addThing(NULL,creature->pos,newItem);             mynpc->doSay("Here you are.");        }    }    else    {        mynpc->doSay("Sorry, you do not have enough money.");    }    return true;}

 

Npc.H

Procure por:

 

static int luaSelfGetPos(lua_State *L);

e logo abaixo adicione:

 

static int NpcScript::luaBuyBp(lua_State *L);

 

Compile e pronto! Agora é só aproveitar...

Como Usar

.: buybp(cid,itemdoitemasercriado,count,preço da BP em GPs)

.: Exemplo

.: buybp(cid,2304,5,2000) -- Vende uma BP de GFB (2304) de 5 cargas cada (5) por 2k (2000 GPs)

OBS .: A função irá retornar 0 se o player comprar a BP e retornará -1 se não comprar (falta de $$)...

FlW

CyA!

Link para o comentário
Compartilhar em outros sites

Parabens tavo precisando disso mesmo mais agora eu estou sem meu dev nao vai da pra compilar -.-....

tem como vc me passar ele zipado pq eue ultilizo o usuario casa do pc ai nao da pra instalar nada

Link para o comentário
Compartilhar em outros sites

Oi, eu também quero.

Porém eu quero q o NPC, venda assim:

1 bp de sd, cada com 1 tiro

1 bp de uh, cada com 1 tiro

1 bp de hmm, cada com 5 tiros

1 bp de gfb, cada com 3 tiros =D

1 bp de explo, cada com 3 tiros

1 bp de ih, cada com 4 tiros

E o resto igual.

Os preços pode deixar que eu mesmo arrumo, to montando um OT 24hrs, tem que estar tudo perfeito.

=D

Grato,

Slayfer~

Link para o comentário
Compartilhar em outros sites

HiHo!

@Slayfer Mythez

Leia acima na seção "COMO USAR"... Você precisará apenas alterar o script do seu npc que vende runas... ^^

Como Usar

.: buybp(cid,itemdoitemasercriado,count,preço da BP em GPs)

.: Exemplo

.: buybp(cid,2304,5,2000) -- Vende uma BP de GFB (2304) de 5 cargas cada (5) por 2k (2000 GPs)

.: buybp(cid,idDAruna,cargas,preçoDAbp)

Se não for isso, pm me...

FlW

CyA!

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

Esse code faz o OT cair, tá bugado.. =P Qdo se n tem Slot free na bp principal, vc compra uma bp, ela some. :D

Ta bugado e faz o server cair.. =)

bye

Link para o comentário
Compartilhar em outros sites

HiHo!

Eh... realmente eu não tinha pensado nisso... agora eu tenho que sair mas agora a mesmo eu estou voltando para disbugar... hj msm eu disbugo...

PS .: Eu irei escrever no post principal que foi disbugado qndo eu tiver arrumado ele...

----- EDITED -----

Disbugado xD... agora se o player estiver com a BP xeia o npc "taca" a bp no chão embaixo do player

----- EDITED -----

FlW

CyA!

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

HiHo!

@Penny

você pode verificar uma coisa pra mim? Veja se na sua classe Container existe as seguintes funções:

size() [retorna quantos items existem no container]
e:
capacity() [retorna a quantidade de items que o container pode ter]
Se não existir, procure funções semelhantes para colocar no code e altere-o...

Espero ter ajudado

FlW

CyA!

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
×
×
  • Criar Novo...