Lista de funciones C++ y guia para hacer taxi
Weno este fin de semana he estado en mi pueblo, por eso eternal wow ha estado off, y decidi coger el svn de scriptdev2 y empezar a "descifrar" funciones de c++ para mangos.
(me estube todo un dia haciendo esto)

Espero que os sirva bastante



/*===================
| LISTA MADE BY BUHO |
====================*/



//////////////////////////////////////////////////////////// /////////////////////////////
////////////////////////////// /////////Funciones/////////////////////////////////////////
/////////////////////////////////////////////////////////// //////////////////////////////
------------------------------------------------------------ -----------------------------
------------------------------ -------FUNCIONES "SET"-------------------------------------
----------------- ------------------------------------------------------------ ------------

p->SetHealth(cantidad) //Cambia la vida de "p" por "cantidad"

player->setlevel(80) //Hace al jugador nivel 80 (por testear)

p->setFaction(14); //Convierte la faccion de "p" en 14

p->SetPower(tipo de poder, cantidad) //Cambia la cantidad de "tipo de poder" por "cantidad"

m_creature->SetFlag(flag, flag) //Igual que remove flag pero no remueve la "flag"

p->SetDisplayId(modelonuevo); //Cambia el modelo de P

p->SetSpeed(MOVE_WALK,X,true); //Cambia la velocidad de moverse, en este caso de andar, por X de p

p->SetHealth(X); //Cambia la vida de p por X

p->setDeathState(estado) //Cambia el estado de muerte (ej: JUST_DIED (acaba de morir))

p->SetVisibility(VISIBILITY_ON) //Hace que p pueda ver (creo; puede ser que p sea visible)

p->SetSpeed(tipomovimiento, velocidad) //Cambia la velocidad de "tipomovimiento" (ej: MOVE_RUN) por "velocidad" (siempre debe terminar con "f")de "p"
pGo->SetGoState(GO_STATE_ACTIVE); //Activa el go, utilizado con el anterior comando

m_creature->SetStandState(tipo); //Cambia el estado de m_creature, Ej: "m_creature->SetStandState(UNIT_STAND_STATE_SLEEP)", este haria que la criatura se pusiera a dormir

SetEquipmentSlots(false, mano_izquierda, mano_derecha, EQUIP_NO_CHANGE)//Equipa mano_izquierda a la mano izquierda del npc y mano_derecha a la mano derecha del npc. Si se usa EQUIP_UNEQUIP se quitan las armas

p->SetLootState(estado) //CAmbia el estado de loteo (ej: "GO_JUST_DEACTIVATED" acabado de lootear") solo funciona con GOs

------------------------------------------------------------ -----------------------------
------------------------------ -------FUNCIONES "GET"-------------------------------------
----------------- ------------------------------------------------------------ ------------

p->getVictim() //Coge el objetivo actual de p

p->GetHealth() //Coge la vida actual de "m_creature"

p->GetMaxHealth() //Coge la vida maxima actual (no de la db, sino la del npc actual)

p->GetPower(tipo de poder) //Coge la cantidad actual de "tipo de poder" de "p"

p->GetMaxPower(tipo de poder) //Coge la cantidad maxima de "tipo de poder" de "p"

Player->GetTeam() //Devuelve la fraccion del jugador (HORDE o ALLIANCE)

Player->GetQuestRewardStatus(id) //Devuelve si ha hecho o no la mision "id"


P->GetPositionX() //Devuelve la coordenada X de P

P->GetPositionY() //Devuelve la coordenada Y de P

P->GetPosition>() //Devuelve la coordenada Z de P

P->GetAngle(U) //Devuelve la orientacion de P respecto U, donde u puede ser m_creature, pGO, player o una variable cualquiera
Player->GetQuestStatus(id) == QUEST_STATUS_INCOMPLETE) //devuelve el estado de la quest "id" por el jugador

p->getFactionTemplateEntry(); //En teoria, devuelve la faccion de P

p->GetEntry() //Devuelve la id de P

p->getFaction() //Devuelve la faccion de P

GO->GetGoType() //Devuelve el tipo de GO que es "GO"

Player->GetGUID() //Devuelve el GUID del personaje, util para menus de Taxis

player->GetBaseSkillValue(id) //Devuelve el "nivel" de la habilidad "id" que tiene el jugador

pGo = instance->GetGameObject(X) //En la instance, coge el GUID de el go "X" y lo almacena en pGO

m_creature->getStandState() //Devuelve el estado de m_creature

p->GetData64(data) //Devuelve la "data64" (ni idea)

p->GetVisibility() //Devuelve la visibilidad (o si es visible, no se) de "p"

float PosX, PosY, PosZ;
p->GetPosition(PosX, PosY, PosZ) //Devuelve las coordenadas en PosX, PosY y PosZ, de "p"

pCreature->GetUInt32Value(id) //Devuelve el Uint32value de "id" de la criatura.

p->GetAreaId() //Devuelve el area id de p

------------------------------------------------------------ -----------------------------
------------------------------ -------FUNCIONES "IS"--------------------------------------
----------------- ------------------------------------------------------------ ------------
ESTAS FUNCIONES SE USAN EN LAS FUNCIONES if/else/elseif (mas abajo hablo de ellas)

p->isAlive() //Devuelve true si el jugador está a salvo

p->isDead() //Devuelve true si p está muerto

p->isInCombat() //Devuelve true si el jugador está en combate

!m_creature->IsNonMeleeSpellCasted(false) //Devuelve true que m_creature no está casteando

p->IsWithinDist(m_creature->getVictim(),25.0f) //Devuelve true si p está a menos de 25f del objetivo

P->IsHostileTo(U) //Devuelve true si P es hostil a U, donde P puede ser m_creature, pGO, player o una variable cualquiera y donde u puede ser m_creature, pGO, player o una variable cualquiera

Player->isInFlight() //Devuelve true si el "player" está

p->GetMap()->IsHeroic(); //Devuelve true si el mapa donde esta "p" es heroico o no

pCreature->isQuestGiver() //Devuelve true si pCreature es un repartidor de misiones

p->IsInEvadeMode() //Devuelve true si "p" esta evitando los ataques

p->isAttackReady() //Devuelve true si "p" puede atacar

p->isTargetableForAttack() //Devuelve true si "p" puede ser atacado

p->IsBanished //Devuelve true si "p" es invisible

p->IsHostileTo(objetivo) //Devuelve true si "p" es hostil a "objetivo"

------------------------------------------------------------ -----------------------------
------------------------------ -------FUNCIONES "HAS"-------------------------------------
----------------- ------------------------------------------------------------ ------------
ESTAS FUNCIONES SE USAN EN LAS FUNCIONES if/else/elseif (mas abajo hablo de ellas)

Player->HasSkill(id) //Devuelve true si el jugador tiene la habilidad "id"


Player->HasSpell(id) //Devuelve true si el jugador tiene el hechizo "Id"


Player->HasItemCount(item,num,true) //Devuelve true si el jugador tiene "num" cantidad del item "item"

p->HasMonsterMoveFlag(movimiento) //Devuelve 3 si el "movimiento" es el movimiento que usa "P"

------------------------------------------------------------ -----------------------------
------------------------------ -------FUNCIONES DE ACCIONES-------------------------------
-------------------- ------------------------------------------------------------ ---------

p->SelectHostilTarget() //Selecciona un objetivo hostil

DoSpawnCreature(ID, X, Y, 0, 0,despawn, 300000); //Invoca una criatura

m_creature->AttackStart(objetivo) //Empieza el combate con el objetivo

p->RemoveFlag(flag, flag); //Quita una flag (ej: no poder ser seleccionado

p->SelectUnit(SELECT_TARGET_RANDOM,0); //Selecciona una unidad (en este caso una cualquiera)

p->DoCast(objetivo, hechizo); //Caste el "hechizo" en el "objetivo"

m_creature->m_canMove = false; //Hace que la m_creature no se pueda mover (no se si funciona)

p->CastSpell(objetivo,idhechizo,false); //Player castea sobre "objetivo" el hechizo "idhechizo"

m_creature->InterruptNonMeleeSpells(false); //Cancela el actual hechizo que estamos casteando

DoScriptText("text", m_creature, target); //m_creature susurra "text" a "target"

DoMeleeAttackIfReady(); //Ataca cuerpo a cuerpo si está preparado

p->HandleEmoteCommand(emote); //No se si funciona, hace un emote en p

pCreature->Attack(pPlayer, true); //pCreature ataca al jugador

pPlayer->TeleportTo(mapid,x,y,z,o); //Lleva al jugador a mapid,x,y,z,o (x,y,z,o ponerles "f" despues de la coordenada)

pPlayer->AreaExploredOrEventHappens(id); //Descubre en el mapa la zona donde se hace la mision "id"

p->SummonCreature(id, X, Y, Z, O, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); //p invoca la criatura con id "id" en x,y,z,o. (TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000, no se que es )

Player->FailQuest(id) //Falla una quest con id "id"

p->RemoveSpellsCausingAura(idaura); //Elimina los hechizos que probocan el aura con id "idaura" de p, donde P puede ser m_creature, pGO, player o una variable cualquiera
m_creature->SendMonsterMove(X, Y, Z, 0, MONSTER_MOVE_WALK, 1); //Ordena a m_creature moverse a las coordenadas x,y,z,o


DoUseDoorOrButton(GUID); //Utiliza el GO con guid "guid", normalmente combinado con
GUID = go->GetGUID();

m_creature->ForcedDespawn(); //Hace que m_creature se despawnee, desaparezca = que .npc delete

p->RemoveAllAuras(); //Elimina todas las auras de P

Creature->DeleteThreatList(); //Elimina el aggro de "creature"

p->CombatStop(true); //Para el combate de p

p->AddThreat(unidad, 0.0f); //Añade "unidad" a la lista de aggro de "p". 0.0f no se que es, creo que es el aggro

p->canFly() //Usado en ifs: Devuelve true si "p" puede volar

p->DealDamage(objetivo, daño, NULL, como_se_hace_daño, tipo_de_daño, NULL, false);//Hacer daño

p->RemoveCorpse() //Elimina el cuerpo de "p"

p->Respawn() //Respawnea "p"

p->EnterEvadeMode() //Hace que "p" entre en modo de evasion de ataques

PlayerTalkClass- >SendPointOfInterest(x,y,icono,flags,data,nombre de localizacion)//Señala en el minimapa y en el mapa algo


------------------------------------------------------------ -----------------------------
------------------------------ -------------OTRAS-----------------------------------------
----------------------------------------------------------- ------------------------------

#define ALGO ola //define la variable algo con el valor ola ("universalmente"), util para definir ids de hechizos (ej: #define HECHIZO_1 123 // HECHIZO_1 tendria el numero 123 que seria un hechizo, y en lugar de poner en donde tengas que poner la id del hechizo, la id del hechizo, podrás poner HECHIZO_1)

rand() //numero aleatorio

Definir una tabla:

float Variable[2][4]= //2 filas, 4 columnas
{
{-1, -2, -3, -4}, //-1 es el valor variable[1][1],segun tengo entendido y -3 es el valor variable[1][3]
{1, 2, 3, 4} //1 es el valor variable[2][1],segun tengo entendido y 3 es el valor variable[2][3]
}; //atencion, la ultima fila no lleva "," despues del ultimo "}"


Hacer una funcion:

void nombre_de_la_funcion(variables)
{
acciones
}

Llamar una funcion:

nombre_de_la_funcion(variables)

Hacer un comentario de una linia-> //
Hacer un comentario de la extension que quieras-> Al principio -> /* y al final */


************************************************************ ************************************************************
********************************************Hacer un temporizador: ******************************************************

void UpdateAI(const uint32 diff)
{
if (Temporizador < diff) //diff creo que viene definido por scriptdev2 y es igual a 1
{
acciones
Temporizador = 500; //En segundos, creo (recomendado hacer esto para restablecer el temporizador
}else Temporizador -= diff; //Restar a temporizador, diff y almacenar el valor en temporizador, si temporizador no es menor que diff
}

************************************************************ ************************************************************ *
*******************Hacer un si es "tal" hacer "eso", sino, hacer "eso otro" modo corto:**********************************

si es tal ? hacer esto : sino hacer esto otro, //: seria "sino"
Ej:
m_bIsHeroicMode ? H_SPELL_ARCANE_EXPLOSION : SPELL_ARCANE_EXPLOSION //si el modo es heroico, haer el hechizo H_SPELL_ARCANE_EXPLOSION, sino, hacer el hechizo SPELL_ARCANE_EXPLOSION


************************************************************ ************************************************************ **
*****************************************Dar un objeto a un jugador: ******************************************************

Item* item = pPlayer->StoreNewItem(dest,23614,true);
if (item)
pPlayer->SendNewItem(item,1,false,true);

************************************************************ ************************************************************ **
***************************Hacer que una criatura acabada de invocar ataque a alguien:***********************************

Summoned = DoSpawnCreature(id, X, RandY, 0, 0, nosequees, nosequees);
if (Summoned)
((CreatureAI*)Summoned->AI())->AttackStart(victim);

//////////////////////////////////////////////////////////// /////////////////////////////
////////////////////////////// //DEFINIR TIPOS DE VARIABLES///////////////////////////////
/////////////////// //////////////////////////////////////////////////////////// //////////

uint64 variable //Unit64
uint32 variable //Uint32
int variable //Integer
bool variable //Booleano



//////////////////////////////////////////////////////////// /////////////////////////////
////////////////////////////// /////////OPERADORES////////////////////////////////////////
/////////////////////////////////////////////////////////// //////////////////////////////

numb1 -= numb2 //Resta numb2 a numb1 y el nuevo valor es almacenado en numb1
numb1 += numb2 //Suma numb2 y numb1 y el nuevo valor es almacenado en numb1
numb0 = numb1*numb2 //Multiplica numb1 por numb2 y almacena el valor en numb0 (probar numb1 *= numb2)
numb0 = numb1/numb2 //Divide numb1 entre numb2 y almacena el valor en numb0 (probar numb1 /= numb2)
numb0 = numb1+numb2 //Suma numb1 y numb2 uy almacena el valor en numb0


************************************************************ ************************************************************
*********************************************************Sw itch/Case: ***************************************************

Coge una variable y va "mirando" su valor, y si su valor es uno de los señalados en un "case" se ejecutan las acciones de ese "case"

switch(variable o funcion)
{
case valor_de_la_variable_o_de_la_funcion:
acciones
break;
case otro_valor_de_la_variable_o_de_la_funcion:
acciones
breaK;
}

************************************************************ ************************************************************
********************************************************If/ else/elseif: *************************************************

If es igual a "si" else es igual a "sino"
Entonces:
Si(condicion_es_cierta)
{
hacer acciones
}
sinoesciertapero(otra_condicion_es_cierta)
{
hacer acciones
}
sino
{
hacer otras acciones
}

If (condicion){
acciones
}
elseif (condicion){
acciones
}
else {
acciones
}

NOTA: Else y elseif son opcionales




//////////////////////////////////////////////////////////// /////////////////////////////
////////////////////////////// /////////TAXI!!!!!!////////////////////////////////////////
/////////////////////////////////////////////////////////// //////////////////////////////

MENU DE TAXI:

Opciones:
player->ADD_GOSSIP_ITEM(id_icono, "texto que lee el jugador" , GOSSIP_SENDER_MAIN, action); //action es el "id" de lUA

Enviar el menu al jugador:
player- >SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature- >GetGUID());

Para que salga X cosa al clicar una opcion:

switch(action)
{
case 1: //1 es la "action" que se indica en ADD_GOSSIP_ITEM
acciones
break;
case 2: //2 es la "action que se indica en ADD_GOSSIP_ITEM
break;
}


Para que se cierre el menu:
player->CLOSE_GOSSIP_MENU();


/ ***********************************************
============ ====================================

AL COMIENZO DEL SCRIPT DEBEIS PONER:

#include "sc_gossip.h"
#include "GossipDef.h"
#include "Player.h"
#include "precompiled.h"

bool GossipHello_nombre_del_script(Player *player, Creature *_Creature) //cambiar nombre_del_script
{
player->SetTaxiCheater(true);
opciones del menu
return true;
}


=================================================

DESPUES DEL MENU PRINCIPAL DEBEIS PONER:

void SendDefaultMenu_nombre_del_script(Player *player, Creature *_Creature, uint32 action )//cambiar nombre_del_script
{
y las acciones

return true;
}


==================================================
========= =========================================

AL FINAL DEL SCRIPT DEBEIS PONER:


void AddSC_nombre_del_script()
{
Script *newscript;

newscript = new Script;
newscript->Name="nombre_del_script";
newscript- >pGossipHello = &GossipHello_nombre_del_script;
newscript->pGossipSelect = &GossipSelect_nombre_del_script;
newscript->RegisterSelf();
}


============================================================ ==
========================================================= =====

EJEMPLO:


#include "sc_gossip.h"
#include "GossipDef.h"
#include "Player.h"
#include "precompiled.h"

bool GossipHello_Taxi(Player *player, Creature *_Creature)
{
player->SetTaxiCheater(true);
player- >ADD_GOSSIP_ITEM(5, "Bienvenido" , GOSSIP_SENDER_MAIN, 1);
player->ADD_GOSSIP_ITEM(5, "Convierteme" , GOSSIP_SENDER_MAIN, 2);
player->CLOSE_GOSSIP_MENU();
return true;
}

void SendDefaultMenu_Taxi(Player *player, Creature *_Creature, uint32 action)
{
switch(action)
{
case 1: //1 es la "action" que se indica en ADD_GOSSIP_ITEM, mirar en "bienvenido"
player->CLOSE_GOSSIP_MENU();
player- >TeleportTo(0, 1819.71f, 238.79f, 63.5321f, 0.0f); //Teletransporta el jugador a Entrañas
break;

case 2: //2 es la "action que se indica en ADD_GOSSIP_ITEM, mirar en "convierteme"
player->SetDisplayId(123)
break;
}
return true;
}
void AddSC_Taxi()
{
Script *newscript;

newscript = new Script;
newscript->Name="Taxi";
newscript->pGossipHello = &GossipHello_Taxi;
newscript->pGossipSelect = &GossipSelect_Taxi;
newscript->RegisterSelf();
}


============================================================ ==
========================================================= =====

NOTA: PARA QUE OS FUNCIONEN LOS SCRIPTS DE NPCS, GOs O ITEMS, AL FINAL DE LAS TABLAS DE item_plates, creature_templates, **_templates... hay una columna que pone "scriptname" pues ahi poneis el nombre del script que se indica aqui:

void AddSC_Taxi()
{
Script *newscript;

newscript = new Script;
newscript->Name="Taxi"; <----------------------------NOMBRE DEL SCRIPT!!!!
newscript->pGossipHello = &GossipHello_Taxi;
newscript->pGossipSelect = &GossipSelect_Taxi;
newscript->RegisterSelf();
}


y en el principio del script:

#include "precompiled.h"

Espero que os haya servido esta guia/lista de comandos.
Si es asi, darle al boton "gracias"

Creditos:
-A Buho de gratis wow (yo), por haber buscado por todos los scripts de scriptdev2 todos los comandos, haberlos traducido y recopilado, por haber hecho el ejemplo del taxi y la guia

-A scriptdev2 por hacer este maravilloso scriptin
 
Reloj
 
musika
 


MusicPlaylist
Music Playlist at MixPod.com

Contador
 
 
Hoy habia 76 visitantes (81 clics a subpáginas) ¡Aqui en esta página!
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis