FR

Getplayerpremmy Em Actions

Por frerety, 30 de abr. de 2006 em Linguagens de Programação

script
15
6.3k
freretyF
30 de abril de 2006 às 08:44

Créditos: 20% para Soulblaster -> ajudou a garantir compatibilidade com usuários Neverland;

80% para mim por ter feito a versão original e ajudado a montar a versão para Neverland;

HiHo!

Criei uma função em c++ que será usada nas actions. A função se chama: getPlayerPremmy e é usada: getPlayerPremmy(cid). Ela irá retornar 0 se o player for P.A. e retornar -1 se o player não for P.A. Mãos à obra!

C++

em actions.cpp

ache:

 

	//getPlayerFood(uid)	lua_register(luaState, "getPlayerFood", ActionScript::luaActionGetPlayerFood);

 

acima desse code adicione:

 

	//getPlayerPremmy(uid)	lua_register(luaState, "getPlayerPremmy", ActionScript::luaActionGetPlayerPremmy);

 

Agora no final de actions.cpp adicione: (YurOTS)

 

int ActionScript::luaActionGetPlayerPremmy(lua_State *L){    unsigned int cid = (unsigned int)internalGetNumber(L); //pega u id do player(cid)            ActionScript *action = getActionScript(L); //pega a action	const KnownThing* tmp = action->GetPlayerByUID(cid);	if(tmp)    {  Player *player = (Player*)(tmp->thing);        if(player && player->premiumTicks && player->premiumTicks > 0)        {             lua_pushnumber(L, 0);        }        else        {             lua_pushnumber(L, -1);        }    }	else    {  lua_pushnumber(L, -1);  std::cout << "getPlayerPremmy: player not found" << std::endl;  return 1;	}    return 1;}

 

Agora no final de actions.cpp adicione: (NeverLand 4.2+)

 

int ActionScript::luaActionGetPlayerPremmy(lua_State *L){   unsigned int cid = (unsigned int)internalGetNumber(L); //pega u id do player(cid)          ActionScript *action = getActionScript(L); //pega a actionconst KnownThing* tmp = action->GetPlayerByUID(cid);if(tmp)   { Player *player = (Player*)(tmp->thing);    if(player && player->premmium)       {            lua_pushnumber(L, 0);       }       else       {            lua_pushnumber(L, -1);       }   }else   { lua_pushnumber(L, -1); std::cout << "getPlayerPremmy: player not found" << std::endl; return 1;}   return 1;}

 

Agora em actions.h

procure por:

 

static int luaActionGetPlayerFood(lua_State *L);

 

Em cima disto adicione:

 

static int luaActionGetPlayerPremmy(lua_State *L);

 

Recompile tudo... :bigsmile:

Actions

Crie um script chamado function.lua com esse code:

 

function onUse(cid, item, frompos, item2, topos)teleportlugar = {x=160, y=54, z=7}ppos = getPlayerPosition(cid)if item.itemid == 1945 then	premmy = getPlayerPremmy(cid)	if premmy == 0 then  doTeleportThing(cid,teleportlugar)  doTransformItem(item.uid,item.itemid+1)	else  doSendMagicEffect(ppos,2)  doPlayerSendCancel(cid,"A não! Não sou P.A.!")  doTransformItem(item.uid,item.itemid+1)	endelseif item.itemid == 1946 then	premmy = getPlayerPremmy(cid)	if premmy == 0 then  doTeleportThing(cid,teleportlugar)  doTransformItem(item.uid,item.itemid-1)	else  doSendMagicEffect(ppos,2)  doPlayerSendCancel(cid,"A não! Não sou P.A.!")  doTransformItem(item.uid,item.itemid-1)	endendreturn 1end

 

Adicionar a alavanca e o UID dela pelo mapeditor. Escolha a que você quiser...

Depois vá em data/actions e abra o arquivo actions.xml

No final (antes de </actions>) adicione:

 

<action uniqueid="ID_DA_ALAVANCA_QUE_VOCÊ_COLOCOU_PELO_MAPEDITOR" script="function.lua" />

 

Espero ter ajudado...

FlW

CyA!

Editado Junho 18 por frerety

colexC
30 de abril de 2006 às 09:49

ae

bom code :D

eu tbm tava criandu um com mesmu nome "getPlayerPremmy" mas vc é mais rapido xD

bom trabalho

vlws

AugustoA
30 de abril de 2006 às 15:59

Kara, era isso msm que estava procurando

Valew

soulblasterS
30 de abril de 2006 às 19:52

frerety... na hora q eu fui compilar deu um erro nessa linha:

       if(player && player->premiumTicks && player->premiumTicks > 0)

tenta arruma... ou fui que eu fiz alguma coisa errada o.O

----------------------------------------------------------------------------------

aaaaa é... quase me esqueci... vou aproveitar aqui mesmo...

tipow ta danu uns erros aqui... olha:

1º- cannot find -lobjc

2º- Id returned 1 exit status

3º- ...\Makefile.win [build Error]  [Neverland.exe] Error 1

dai c vc puder me ajudar... =): ... me AJUDE xD~~

------------edited----------------------------------------------------------------

ja arrumei esses erros =]

fui... :bye:

Editado Junho 18 por soulblaster

freretyF
01 de maio de 2006 às 14:12

@soublaster

Kra... soh uma coizinha... esses erros taum dando dpois ki vc arrumou o code ou já estava dandu antes? Ah... E teria como vc colocar o log completo do compilador? tnkz... ^^

FlW

CyA!

frerety... na hora q eu fui compilar deu um erro nessa linha:

tenta arruma... ou fui que eu fiz alguma coisa errada  o.O

aaaaa é... quase me esqueci... vou aproveitar aqui mesmo...

tipow ta danu uns erros aqui... olha:

dai c vc puder me ajudar...  =): ... me AJUDE xD~~

fui... :bye:

 

 

 

1 mês depois...
drakullaD
01 de junho de 2006 às 07:01

num tem q botar alguma coisa no commands.cpp ou commands.h ??

Grato.

Drakulla

drakullaD
01 de junho de 2006 às 11:00

Ei Pq O Meu Sempre da erro na hora de compilar??

Da Isso Oia:

----------------------------------------------------------------------------------

Unidade: c:\Documents and Settings\...\neverland 7.6 sources\Makefile.win |

Mensagem: [build Error] [Neverland.exe] Error 1

----------------------------------------------------------------------------------

ajuda plx mano!

Grato.

Drakulla

drakullaD
01 de junho de 2006 às 11:10

O Que Aconteceu com o kara ai a cima aconteceu cmg tbm pow!!!

deu igualzinhu ao meu !!!

Atenciosamente.

Drakulla

Editado Junho 1 por drakulla

freretyF
02 de junho de 2006 às 15:27

HiHo!

@soulblaster e drakulla

provavelmente o neverland têm uma incompatibilidade com o script... vou verificar e arrumar... Vai ser editado no post acima qndo eu conseguir arrumar...

FlW

CyA!

Editado Junho 2 por frerety

soulblasterS
02 de junho de 2006 às 16:48

frerety ja descubri pq num da no neverland...

no arquivo player.xml nao aparece c o player é premmy ou num... (premiumticks="1")

num dando pra usar

if(player && player->premiumTicks && player->premiumTicks > 0)
freretyF
02 de junho de 2006 às 17:08
frerety ja descubri pq num da no neverland...

no arquivo player.xml nao aparece c o player é premmy ou num... (premiumticks="1")

num dando pra usar

 

 

 

hey... vc pode mi flar ond fika se o player eh premmy ow naum? Ty

FlW

CyA!

2 semanas depois...
soulblasterS
11 de junho de 2006 às 12:45

claro q posso... =P

fika nas acc... olha:

sem premmy...

<?xml version="1.0"?>

<account pass="lol" type="1" premDays="0" lastsaveday="161">

<characters>

<character name="testando"/>

</characters>

</account>

com premmy...

<?xml version="1.0"?>

<account pass="lol" type="1" premDays="90" lastsaveday="161">

<characters>

<character name="testando"/>

</characters>

</account>

Flws....

cya... :bye:

Editado Junho 11 por soulblaster

freretyF
11 de junho de 2006 às 13:17

HiHo!

----- EDITANDO -----

Já está disponivel a versão que garante compatibilidade com NeverLand... Observem o Tópico Principal (o primeiro =p)

----- EDITANDO -----

FlW

CyA!

Editado Agosto 7 por frerety

4 meses depois...
aiolaA
17 de outubro de 2006 às 17:31

bem grande mas so pega em neverland o meu e map global :(

byetcha

2 meses depois...
Perfect MapperP
24 de dezembro de 2006 às 00:50

aew boaaa

vlws pela ajuda

flw