Blogia
Rol

¿Que le pasará a esto?

Lo curioso es que no va un script tan sencillo como este, no coge los objetos personalizados.

Código:
void main(){

//Variables de modificacion
string etiqueta = "prueba";

//Codigo
object jugador = GetEnteringObject();
string nombrejugador = GetName(jugador);
if (GetObjectByTag(etiqueta) == GetItemPossessedBy(jugador, etiqueta)) {
SendMessageToPC(jugador, "Bienvenido de nuevo al servidor " + nombrejugador);
}
else{
SendMessageToPC(jugador, "*Detectado un nuevo jugador*");
SendMessageToPC(jugador, "*Equipando al nuevo jugador...*");
CreateItemOnObject(etiqueta, jugador, 1);
SendMessageToPC(jugador, "Bienvenido al servidor " + nombrejugador);
}
}

_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Lun Jul 19, 2004 8:11 pm Asunto: Saludos.

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

Saludos.

Añade antes del void main() este include.

#include "nw_i0_plot"

Ahora si veo un hueco te lo testeo.

Txibi.

Volver arriba


Reox Harpell
Gigante de fuego de Izhar

Registrado: 30 Ene 2004
Mensajes: 529
Ubicación: La Luna Roja
Publicado: Lun Jul 19, 2004 9:11 pm Asunto:

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

Kurioso, tampoco funciona. Seguro que es una chorrada.
_________________
“...Y es que al abrir los ojos todo es de otro color, ahora pienso que cualquier tiempo pasado fué mejor."

Volver arriba


Txibi
Administrador

Registrado: 25 Ene 2004
Mensajes: 1402
Ubicación: Andoain, Gipuzkoa, Euzkadi, España, Europa, Gaia.
Publicado: Lun Jul 19, 2004 9:14 pm Asunto: Saludos.

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

Saludos...

Veamos, si no me lío lo que quieres hacer mejor por el OnClientEnter.

Además usaremos el script de bioware para que "examine todo el inventario"

Con esto en el frontal, no saltamos el include de arriba, ya que al estar implementado en el scritp no hace falta llamada a un recurso externo, si no es muy kilométrico el script, mejor así (por kilométrico cuando pasa de 1.000 líneas).

Veamos el void main.

Código:
int IsInInventory(object oContainer, string sItemTag)
{
object oItem;

if (GetHasInventory(oContainer))
{
oItem = GetFirstItemInInventory(oContainer);
while ( OBJECT_INVALID != oItem )
{
if (GetTag(oItem) == sItemTag)
{ return TRUE; }
oItem = GetNextItemInInventory(oContainer);
} // end while
} // endif
return FALSE;
} // end IsInInventory

void main()
{
object oPC= GetEnteringObject();
string sNombrePJ= GetName(oPC);
if (!IsInInventory(oPC,"prueba"))
{
SendMessageToPC(oPC,"*Detectado un nuevo jugador*");
SendMessageToPC(oPC,"*Equipando al nuevo jugador...*");
CreateItemOnObject("prueba",oPC);
SendMessageToPC(oPC,"Bienvenido al Servidor. " + sNombrePJ);
}
else
{
SendMessageToPC(oPC,"Bienvenido de nuevo al servidor " + sNombrePJ);
}
}

Y listo... evidentemente, puedes tener muchas más cosas en el OnClientEnter... podría ser tal que así o muchisimo más largo...

Código:
int IsInInventory(object oContainer, string sItemTag)
{
object oItem;

if (GetHasInventory(oContainer))
{
oItem = GetFirstItemInInventory(oContainer);
while ( OBJECT_INVALID != oItem )
{
if (GetTag(oItem) == sItemTag)
{ return TRUE; }
oItem = GetNextItemInInventory(oContainer);
} // end while
} // endif
return FALSE;
} // end IsInInventory

void main()
{
object oPC= GetEnteringObject();

// Miramos la vidas que tiene el personaje o se la creamos.
//string sNombrePJ = GetName(oPC) + "_Vidas";
//string sNombreModulo = "Enroth_" + GetPCPlayerName(oPC);
if (GetCampaignInt("Validar_", GetName(oPC))==0)
{
//SetCampaignInt(sNombreModulo, sNombrePJ, 5, oPC);
SetCampaignInt(GetName(oPC), "_Vidas_", 5, oPC);
SetCampaignInt("Validar_", GetName(oPC),1);
//SetCampaignInt(sNombreModulo, sNombrePJ+"_validado", 1);
int vidas = GetCampaignInt(GetName(oPC), "_Vidas_");
SendMessageToPC(oPC,"Inicializando vidas");
}

//Si esta encarcelado, va directamente a la carcel.
if (IsInInventory(oPC,"tx_carcel")) //Si tiene la placa de preso.
{
AssignCommand(oPC, JumpToObject(GetObjectByTag("WP_carcel")));
}

//Anulamos la Vara de emociones.
//if (!IsInInventory(oPC,"EmoteWand"))
//{
// CreateItemOnObject("EmoteWand",oPC);
// SendMessageToPC(oPC,"Se te ha dado una varita de emociones");
//}

//Libro de habilidades.
if (!IsInInventory(oPC,"tx_librohab_1"))
{
CreateItemOnObject("tx_librohab_1",oPC); //Crea el libro en el jugador.
SendMessageToPC(oPC,"Se te ha dado un libro para que uses tus habilidades");
}//fin libro de habilidades.

if(IsInInventory(oPC,"tx_geas")) //Maldiciones y esas cosas... -2 a todo.
{
int iMaldicion;
if(iMaldicion==0)
{
effect eMaldito = EffectCurse(2,2,2,2,2,2);
effect eVisual = EffectVisualEffect(20);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eMaldito, oPC);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVisual, oPC);
int iMaldicion=1;
}
else
{
}
}

//Crucifijo del paladin.
if (GetLevelByClass(CLASS_TYPE_PALADIN, oPC) >= 1)
{
if (!IsInInventory(oPC,"crucifijonodrop"))

{
CreateItemOnObject("crucifijonodrop",oPC);
SendMessageToPC(oPC,"Tienes un crucifijo especial en tu inventario");
}
}
//Reglamento.
if (!IsInInventory(oPC,"0_reglas_2"))
{
CreateItemOnObject("0_reglas_2",oPC);
SendMessageToPC(oPC,"Se te ha dado una copia del Reglamento");
}

//Buscamos los puntos de vida del personaje
// object oPC = GetEnteringObject();
int iVida = GetLocalInt (GetModule(), "PUNTOS_VIDA_" + GetName(oPC));
int iVidaActual = GetMaxHitPoints(oPC);
//Dejamos los puntos de vida del personaje en el valor que tenían antes de que
//saliese del server
if ((iVida>0)(iVida

0 comentarios