Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6372
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Scripts para el baul "Esposas y Rastreo" Dom 05 Abr 2009, 2:26 pm | |
| Bueno añado por aqui, un par de scripts ya que en el baul de scripts no puedo postear , Espero que os sirva Esposas. (Con este script crearemos un objeto que "obligaremos" a un pj a seguirnos, esto nos servira para llevar a una persona hasta la carcel.) Creamos un objeto de etiqueta 50_objdet y el script lo creamos fuera y en el activateitem ponemos el executescript con el nombre que le hayamos puesto. - Código:
-
#include "x2_inc_switches" void main(){ object oItem = GetItemActivated(); object oTarget = GetItemActivatedTarget(); object oUser = GetItemActivator();
/////////////////////////////////Aqui empieza la declaracion para cuando se usa el objeto de detener PJ's//////////////////////////////////// if (GetTag(oItem) == "50_objdet"){ if(GetIsDM(oTarget)){ return; } if (oTarget == oUser){ SendMessageToPC(oUser, "No puedes detenerte a ti mismo!"); return; } if(GetIsPC(oTarget)){ int iVar = GetLocalInt (oTarget,"50_detenido"); switch (iVar){ case 0:{ if (GetLocalInt(oUser,"50_ocupado") == 1){ SendMessageToPC(oUser,"Sólo puedes llevar un preso."); } SetLocalInt(oTarget,"50_detenido",1); SetLocalInt(oUser,"50_ocupado",1); SetLocalObject(oTarget,"50_guardia",oUser); AssignCommand(oTarget,ClearAllActions()); SendMessageToPC(oUser,"Has detenido a "+GetName(oTarget)+"."); SendMessageToPC(oTarget,"Has sido detenido por "+GetName(oUser)+"."); AssignCommand(oTarget, ActionForceFollowObject(oUser)); DelayCommand(0.2,SetCommandable(FALSE,oTarget)); break; } case 1:{ if (GetLocalObject(oTarget,"50_guardia") != oUser){ SendMessageToPC(oUser,"Tu no has detenido a esta persona."); } else{ DelayCommand(0.2,SetCommandable(TRUE,oTarget)); AssignCommand(oTarget,ClearAllActions()); SetLocalInt(oTarget,"50_detenido",0); AssignCommand(oTarget, ClearAllActions()); SendMessageToPC(oUser,"Has soltado al preso."); SendMessageToPC(oTarget,"Ya no estas detenido."); break; } } } } else{ SendMessageToPC(oUser,"El objetivo no es válido."); } } /////////////////////////////////Aqui acaba la declaracion para cuando se usa el objeto de detener PJ's////////////////////////////////////
if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_scriptS) == TRUE){ SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACTIVATE); int nRet = ExecutescriptAndReturnInt(GetUserDefinedItemEventscriptName(oItem),OBJECT_SELF); if (nRet == X2_EXECUTE_script_END){ return; } }
} Esposas nº 2: Estas esposas lo que hacen es que al usarla te mande directamente a la carcel.(crear un punto de ruta) - Código:
-
#include "x2_inc_switches" void main(){ object oItem = GetItemActivated(); object oTarget = GetItemActivatedTarget(); object oUser = GetItemActivator();
/////////////////////////////////Aqui empieza la declaracion para cuando se usa el objeto de detener PJ's//////////////////////////////////// if (GetTag(oItem) == "50_objdet"){ if(GetIsDM(oTarget)){ return; } if (oTarget == oUser){ SendMessageToPC(oUser, "No puedes detenerte a ti mismo!"); return; } if(GetIsPC(oTarget)){ int iVar = GetLocalInt (oTarget,"50_detenido"); switch (iVar){ case 0:{ if (GetLocalInt(oUser,"50_ocupado") == 1){ SendMessageToPC(oUser,"Sólo puedes llevar un preso."); } SetLocalInt(oTarget,"50_detenido",1); SetLocalInt(oUser,"50_ocupado",1); SetLocalObject(oTarget,"50_guardia",oUser); AssignCommand(oTarget,ClearAllActions()); SendMessageToPC(oUser,"Has detenido a "+GetName(oTarget)+"."); SendMessageToPC(oTarget,"Has sido detenido por "+GetName(oUser)+"."); AssignCommand(oTarget, JumpToObject(GetObjectByTag("tupuntoderutadelacarcel"))); break; } case 1:{ if (GetLocalObject(oTarget,"50_guardia") != oUser){ SendMessageToPC(oUser,"Tu no has detenido a esta persona."); } else{ DelayCommand(0.2,SetCommandable(TRUE,oTarget)); AssignCommand(oTarget,ClearAllActions()); SetLocalInt(oTarget,"50_detenido",0); AssignCommand(oTarget, ClearAllActions()); SendMessageToPC(oUser,"Has soltado al preso."); SendMessageToPC(oTarget,"Ya no estas detenido."); break; } } } } else{ SendMessageToPC(oUser,"El objetivo no es válido."); } } /////////////////////////////////Aqui acaba la declaracion para cuando se usa el objeto de detener PJ's////////////////////////////////////
if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_scriptS) == TRUE){ SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACTIVATE); int nRet = ExecutescriptAndReturnInt(GetUserDefinedItemEventscriptName(oItem),OBJECT_SELF); if (nRet == X2_EXECUTE_script_END){ return; } }
} Rastreo para exploradores, lo mismo ponemos el script fuera y lo linkeamos en activate item :D En el activate item yo lo tengo asi. - Código:
-
if(GetTag(oItem)=="TrackerTool" && GetLevelByClass(CLASS_TYPE_RANGER, oJugador) > 0) { AssignCommand(oJugador, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 1.0, 6.0)); DelayCommand(0.2, SetCommandable(FALSE, oJugador)); DelayCommand(5.8, SetCommandable(TRUE, oJugador)); DelayCommand(6.0, Executescript("hc_track_start", oJugador)); return; } y ahora añado los scripts con estos nombres (aconsejo no cambiarlos porque si no hay tocar algunas cosillas) hc_track_start: - Código:
-
#include "hc_inc_track" #include "hc_text_track"
void main() { int nDC; object oTracker=OBJECT_SELF; object oTrackPlc=GetNearestObjectByTag("Tracker");
if(GetIsObjectValid(oTrackPlc)) nDC=GetWillSavingThrow(oTrackPlc); if(!nDC || !GetIsObjectValid(oTrackPlc)) { SendMessageToPC(oTracker,NOTPOSSIBLE); return; } object oCritter; object oArea=GetArea(oTracker); int nLevel=GetLevelByClass(CLASS_TYPE_RANGER, oTracker); int nCnt=1; float fDistance; int nDCAdj; vector vCritter; oCritter=GetNearestObject(OBJECT_TYPE_CREATURE, oTracker, nCnt); while(GetIsObjectValid(oCritter) && GetArea(oCritter)==oArea) { fDistance=GetDistanceBetween(oCritter, oTracker); nDCAdj=FloatToInt(fDistance/10.0); if((d20()+nLevel) > (nDC+nDCAdj) && (!GetLocalInt(oCritter,"NOTRACK") && !GetHasFeat(FEAT_TRACKLESS_STEP, oCritter))) { vCritter=GetPosition(oCritter); AssignCommand(oTracker,SetFacingPoint (vCritter)); AssignCommand(oTracker,GetDirection(GetFacing(oTracker),oTracker,oCritter)); } nCnt++; oCritter=GetNearestObject(OBJECT_TYPE_CREATURE, oTracker, nCnt); } return; } creamos otro llamado: hc_inc_track - Código:
-
void GetDirection(float fFacing, object oTracker, object oCritter) { //Correct the bug in GetFacing (Thanks Iskander) if (fFacing >= 360.0) fFacing = 720.0 - fFacing; if (fFacing < 0.0) fFacing += (360.0); int iFacing = FloatToInt(fFacing); /* 359 - 2 = E 3 - 45 = ENE 46 - 87 = NNE 88 - 92 = N 93 - 135 = NNW 136 - 177 = WNW 178 - 182 = W 183 - 225 = WSW 226 - 267 = SSW 268 - 272 = S 273 - 315 = SSE 316 - 358 = ESE */ string sDirection = ""; if((iFacing >= 359) && (iFacing <= 2)) sDirection = "E"; if((iFacing >= 3) && (iFacing <= 45)) sDirection = "ENE"; if((iFacing >= 46) && (iFacing <= 87)) sDirection = "NNE"; if((iFacing >= 88) && (iFacing <= 92)) sDirection = "N"; if((iFacing >= 93) && (iFacing <= 135)) sDirection = "NNW"; if((iFacing >= 136) && (iFacing <= 177)) sDirection = "WNW"; if((iFacing >= 178) && (iFacing <= 182)) sDirection = "W"; if((iFacing >= 183) && (iFacing <= 225)) sDirection = "WSW"; if((iFacing >= 226) && (iFacing <= 267)) sDirection = "SSW"; if((iFacing >= 268) && (iFacing <= 272)) sDirection = "S"; if((iFacing >= 273) && (iFacing <= 315)) sDirection = "SSE"; if((iFacing >= 316) && (iFacing <= 358)) sDirection = "ESE"; SendMessageToPC(oTracker,GetName(oCritter)+" is to the "+sDirection); return ; } y por ultimo creamos otro script llamado: hc_text_track - Código:
-
string STOPTRACKING = "Dejas de rastrear tu objetivo."; string NOFOOTPRINTS = "No detectas que rastrear."; string STARTTRACK = "Comienzas a rastrear: "; string CONTTRACK = "Continuas rastreando: "; string NOTPOSSIBLE = "Es imposible clasificar las huellas aqui."; string DCFAIL = "No puedes distinguir huellas."; string DCCONTFAIL = "Has perdido las huellas."; string TRAILGONE = "Las huellas se paran aqui...";
Espero que os sirva ^^ si encuentro alguno mas voy añadiendo ;P Editado by: Xiulito (Definición de Título) 08-08-2009 | |
|
Xiulito Administrador/a
Edad : 44 Localización : Vivo aqui Puntos de Actividad : 6815
Cantidad de envíos : 101 Fecha de inscripción : 22/03/2008
Nº. de Miembro : 1 Respeto por el Foro :
| Tema: Re: Scripts para el baul "Esposas y Rastreo" Dom 05 Abr 2009, 8:03 pm | |
| Muy buenos scripts, los utilizare en mi modulo haber que tal funcionan, gracias por aportar al foro Jastro.
PDTA: Ya he desbloqueado el baúl para que podáis dejar vuestros scripts, muevo este allí. | |
|