Pulse Control+D para no olvidar este enlace. |
|
| Acción segun palabra mágica. | |
| | Autor | Mensaje |
---|
Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Acción segun palabra mágica. Vie 10 Abr 2009, 10:03 pm | |
| Buenas señores, llevo dias sufriendo para sacar esto a flote, lo comparto con ustedes para si a alguien le interesa ¿Que hace este script? Haremos que cuando nos acerquemos a un npc, le digamos una palabra clave y al decirla, ejecutara un script. son varios scripts, en la criatura en cuestión. # Guiones ; #Nombre script - Onperception; js_percibe - Onspawn; js_clave - Userdefined; js_defined ###sin lugar; js_included Deberia quedar asi: Script: js_percibe - Código:
-
#include "nw_i0_plot" void main() { object oPC=GetNearestPC();
} Script: js_clave - Código:
-
#include "NW_O2_CONINCLUDE" #include "NW_I0_GENERIC" #include "js_include"
void main() { SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT);
//donde pone manolo cambiarlo por la palabra clave en cuestion, yo he puesto manolo para probar ^^ SetKeyword(OBJECT_SELF, "**manolo**", "Mensaje que dira el npc tras oir la palabra", 0, 0, "nombrescript");//poned el nombre del script que querais que ejecute cuando diga la palabra magica. ponerlo con las "" SetListening(OBJECT_SELF,TRUE); } script: js_include - Código:
-
int SetKeyword(object oNPC, string sPattern, string sResponse, int iPreAnim = 0, int iPostAnim = 0, string sScript = "", string sMoveTo = "", string sMisc = "", int iMisc = 0);
int SetKeywordShell(object oNPC, string sPattern);
int SetKeywordConditional(object oNPC, int iPattern, string sVarObject, string sVariable, int iValue, string sResponse, int iPreAnim=0, int iPostAnim=0, string sScript="", string sMoveTo="", string sMisc="", int iMisc=0);
void DisableKeyword(object oNPC, int iPattern);
void EnableKeyword(object oNPC, int iPattern);
int SetKeyword(object oNPC, string sPattern, string sResponse, int iPreAnim = 0, int iPostAnim = 0, string sScript = "", string sMoveTo = "", string sMisc = "", int iMisc = 0)
{
int iPattern=GetLocalInt(oNPC, "KCS_PATTERNCOUNT");
if (iPattern==0) { iPattern=5000; } else { iPattern++; }
string sPatNum = IntToString(iPattern);
SetListenPattern(oNPC, sPattern, iPattern);
SetLocalString(oNPC, "KCS_RESP" + sPatNum, sResponse);
if (iPreAnim) { SetLocalInt(oNPC, "KCS_PREA" + sPatNum, iPreAnim); }
if (iPostAnim) { SetLocalInt(oNPC, "KCS_POSTA" + sPatNum, iPostAnim); }
if (!(sScript=="")) { SetLocalString(oNPC, "KCS_SCRIPT" + sPatNum, sScript); }
if (!(sMoveTo=="")) { SetLocalString(oNPC, "KCS_MOVETO" + sPatNum, sMoveTo); }
if (!(sMisc=="")) { SetLocalString(oNPC, "KCS_SMISC" + sPatNum, sMisc); }
if (iMisc) { SetLocalInt(oNPC, "KCS_IMISC" + sPatNum, iMisc); }
SetLocalInt(oNPC, "KCS_PATTERNCOUNT", iPattern);
return iPattern; }
int SetKeywordShell(object oNPC, string sPattern) { int iPattern=GetLocalInt(oNPC, "KCS_PATTERNCOUNT");
if (iPattern==0) { iPattern=5000; } else { iPattern++; }
string sPatNum = IntToString(iPattern);
SetListenPattern(oNPC, sPattern, iPattern); SetLocalInt(oNPC, "KCS_TYPE" + sPatNum, 1);
SetLocalInt(oNPC, "KCS_PATTERNCOUNT", iPattern);
return iPattern; }
int SetKeywordConditional(object oNPC, int iPattern, string sVarObject, string sVariable, int iValue, string sResponse, int iPreAnim=0, int iPostAnim=0, string sScript="", string sMoveTo="", string sMisc="", int iMisc=0) { string sPattern = IntToString(iPattern); int iOptCount = GetLocalInt(oNPC, "KCS_OPT" + sPattern); iOptCount++; string sOptCount = IntToString(iOptCount); SetLocalInt(oNPC, "KCS_OPT" + sPattern, iOptCount); SetLocalString(oNPC, "KCS_OPT" + sPattern + "OBJ" + sOptCount, sVarObject); SetLocalString(oNPC, "KCS_OPT" + sPattern + "VAR" + sOptCount, sVariable); SetLocalString(oNPC, "KCS_OPT" + sPattern + "RES" + sOptCount, sResponse); SetLocalInt(oNPC, "KCS_OPT" + sPattern + "VAL" + sOptCount, iValue); if (iPreAnim) { SetLocalInt(oNPC, "KCS_OPT" + sPattern + "PRE" + sOptCount, iPreAnim); }
if (iPostAnim) { SetLocalInt(oNPC, "KCS_OPT" + sPattern + "PST" + sOptCount, iPostAnim); }
if (!(sScript=="")) { SetLocalString(oNPC, "KCS_OPT" + sPattern + "SCR" + sOptCount, sScript); }
if (!(sMoveTo=="")) { SetLocalString(oNPC, "KCS_OPT" + sPattern + "MOV" + sOptCount, sMoveTo); }
if (!(sMisc=="")) { SetLocalString(oNPC, "KCS_OPT" + sPattern + "SMI" + sOptCount, sMisc); }
if (iMisc) { SetLocalInt(oNPC, "KCS_OPT" + sPattern + "IMI" + sOptCount, iMisc); }
return iOptCount; }
void DisableKeyword(object oNPC, int iPattern) { SetLocalInt(oNPC, "KCS_DISABLE" + IntToString(iPattern), 1); }
void EnableKeyword(object oNPC, int iPattern) { DeleteLocalInt(oNPC, "KCS_DISABLE" + IntToString(iPattern)); } | |
| | | Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Re: Acción segun palabra mágica. Vie 10 Abr 2009, 10:26 pm | |
| Lo pongo en otro post porque decia que el mensaje era mu largo :S aqui esta el que falta script: js_defined - Código:
-
//este script aunque tiene js delante (es para tenerlo localizado) esta creado por Devil^^ string PreString(string sString, string sSubStr) { string sResult;
if (!((sSubStr=="") || (sString==""))) { int iPos = FindSubString(sString,sSubStr);
if (iPos >= 0) { sResult = GetSubString(sString,0,iPos); } else { sResult = sString; } return sResult; } else { return sString; } }
string PostString(string sString, string sSubStr) {
string sResult;
if (!((sSubStr=="") || (sString==""))) { int iPos = FindSubString(sString, sSubStr); int iLen = GetStringLength(sString); int iSubLen = GetStringLength(sSubStr);
if (iPos >= 0) { sResult = GetSubString(sString, iPos+iSubLen, iLen-(iPos+iSubLen)); } else { sResult = ""; } return sResult; } else { return sString; } }
string ReplaceString(string sString, string sToReplace, string sNewSubStr) { if (sToReplace == "") return sString;
string sResult = sString;
while ((FindSubString(sResult, sToReplace)) >= 0) { sResult = PreString(sResult, sToReplace) + sNewSubStr + PostString(sResult, sToReplace); }
return sResult; }
string ReplaceTokens(string sString, object oPC) {
string sResult = sString;
sResult = ReplaceString(sResult, "&N", PreString(GetName(oPC)," ")); sResult = ReplaceString(sResult, "&F", GetName(oPC)); int iTime=GetTimeHour(); if (iTime < 12) { sResult = ReplaceString(sResult, "&T", "morning"); } if (iTime >=12 && iTime <17) { sResult = ReplaceString(sResult, "&T", "afternoon"); } if (iTime >=17) { sResult = ReplaceString(sResult, "&T", "evening"); }
if (GetGender(oPC)==GENDER_MALE) { sResult = ReplaceString(sResult, "&L", "Lord"); sResult = ReplaceString(sResult, "&l", "lord"); sResult = ReplaceString(sResult, "&S", "Sir"); sResult = ReplaceString(sResult, "&s", "sir"); sResult = ReplaceString(sResult, "&G", "Man"); sResult = ReplaceString(sResult, "&g", "man"); } else { sResult = ReplaceString(sResult, "&L", "Lady"); sResult = ReplaceString(sResult, "&l", "lady"); sResult = ReplaceString(sResult, "&S", "Madam"); sResult = ReplaceString(sResult, "&s", "madam"); sResult = ReplaceString(sResult, "&G", "Woman"); sResult = ReplaceString(sResult, "&g", "woman"); }
string sRace, sRace2, sRace3, sRace4, sRace5, sRace6; switch (GetRacialType(oPC)) { case RACIAL_TYPE_DWARF: sRace="Dwarf"; sRace2="dwarf"; sRace3="Dwarven"; sRace4="dwarven"; sRace5="Dwarves"; sRace6="dwarves"; break; case RACIAL_TYPE_ELF: sRace="Elf"; sRace2="elf"; sRace3="Elven"; sRace4="elven"; sRace5="Elves"; sRace6="elves"; break; case RACIAL_TYPE_GNOME: sRace="Gnome"; sRace2="gnome"; sRace3="Gnomish"; sRace4="gnomish"; sRace5="Gnomes"; sRace6="gnomes"; break; case RACIAL_TYPE_HALFELF: sRace="Half elf"; sRace2="half elf"; sRace3="Half elven"; sRace4="half elven"; sRace5="Half elves"; sRace6="half elves"; break; case RACIAL_TYPE_HALFLING: sRace="Halfling"; sRace2="halfling"; sRace3="Halfling"; sRace4="halfling"; sRace5="Halflings"; sRace6="halflings"; break; case RACIAL_TYPE_HALFORC: sRace="Half orc"; sRace2="half orc"; sRace3="Half orcish"; sRace4="half orcish"; sRace5="Half orcs"; sRace6="half orcs"; break; case RACIAL_TYPE_HUMAN: sRace="Human"; sRace2="human"; sRace3="Human"; sRace4="human"; sRace5="Humans"; sRace6="humans"; break; }
sResult = ReplaceString(sResult, "&Rs", sRace); sResult = ReplaceString(sResult, "&rs", sRace2); sResult = ReplaceString(sResult, "&Rn", sRace3); sResult = ReplaceString(sResult, "&rn", sRace4); sResult = ReplaceString(sResult, "&Rp", sRace5); sResult = ReplaceString(sResult, "&rp", sRace6);
return sResult; }
void main() {
if (GetUserDefinedEventNumber() == 1004) {
if (GetIsListening(OBJECT_SELF)) {
int iOkToListen=FALSE; object oPC = GetLastSpeaker(); if (GetLocalInt(OBJECT_SELF, "KCS_LISTENTONPCS")) { if (GetLocalString(OBJECT_SELF, "KCS_NPCLISTENTAG")=="") { iOkToListen=TRUE; } else { iOkToListen=(GetTag(oPC)==GetLocalString(OBJECT_SELF, "KCS_NPCLISTENTAG")); } } if (GetIsPC(oPC)) { iOkToListen=TRUE; } if (iOkToListen) {
if (GetDistanceToObject(oPC) <= 60.0f) {
int iPattern = GetListenPatternNumber();
if (iPattern==-1) { iPattern=GetLocalInt(OBJECT_SELF, "KCS_DEFAULT"); }
string sPattern = IntToString(iPattern);
if (GetLocalInt(OBJECT_SELF, "KCS_DISABLE" + sPattern)==0) {
int iPreAnim, iPostAnim, iMisc; string sResponse, sMoveTo, sscript, sMisc;
int iKeywordType = GetLocalInt(OBJECT_SELF, "KCS_TYPE" + sPattern);
if (iKeywordType==0) {
iPreAnim = GetLocalInt(OBJECT_SELF, "KCS_PREA" + sPattern); iPostAnim = GetLocalInt(OBJECT_SELF, "KCS_POSTA" + sPattern); sResponse = GetLocalString(OBJECT_SELF, "KCS_RESP" + sPattern); sMoveTo = GetLocalString(OBJECT_SELF, "KCS_MOVETO" + sPattern); sscript = GetLocalString(OBJECT_SELF, "KCS_script" + sPattern); sMisc = GetLocalString(OBJECT_SELF, "KCS_SMISC" + sPattern); iMisc = GetLocalInt(OBJECT_SELF, "KCS_IMISC" + sPattern); }
if (iKeywordType==1) {
int iOptCount, iCount, iVal, iUseOpt=0; string sObj, sVar, sOpt; object oObj;
iOptCount = GetLocalInt(OBJECT_SELF, "KCS_OPT" + sPattern);
iCount=1; while (iCount <= iOptCount) { sOpt = IntToString(iCount); sObj = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "OBJ" + sOpt); if (GetStringLeft(sObj,4)=="KCS_") { if (sObj == "KCS_OBJECT_SELF") { oObj = OBJECT_SELF; } if (sObj == "KCS_PCSPEAKER") { oObj = oPC; } if (sObj == "KCS_MODULE") { oObj = GetModule(); } if (sObj == "KCS_AREA") { oObj = GetArea(OBJECT_SELF); } } else { oObj = GetObjectByTag(sObj); } if (GetIsObjectValid(oObj)) { sVar = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "VAR" + sOpt); iVal = GetLocalInt(OBJECT_SELF, "KCS_OPT" + sPattern + "VAL" + sOpt); if (GetStringLeft(sVar, 4)=="KCS_") { int iAbility=-1; if (GetStringLeft(sVar,7)=="KCS_STR") { iAbility=ABILITY_STRENGTH; } if (GetStringLeft(sVar,7)=="KCS_INT") { iAbility=ABILITY_INTELLIGENCE; } if (GetStringLeft(sVar,7)=="KCS_WIS") { iAbility=ABILITY_WISDOM; } if (GetStringLeft(sVar,7)=="KCS_CON") { iAbility=ABILITY_CONSTITUTION; } if (GetStringLeft(sVar,7)=="KCS_DEX") { iAbility=ABILITY_DEXTERITY; } if (GetStringLeft(sVar,7)=="KCS_CHA") { iAbility=ABILITY_CHARISMA; } if (iAbility>=0) { if (GetStringRight(sVar,5)=="ABOVE") { if (GetAbilityScore(oPC, iAbility) > iVal) { iUseOpt=iCount; } } else { if (GetStringRight(sVar,5)=="BELOW") { if (GetAbilityScore(oPC, iAbility) < iVal) { iUseOpt=iCount; } } else { if (GetAbilityScore(oPC, iAbility) == iVal) { iUseOpt=iCount; } } } } if ((sVar=="KCS_GOLD_ABOVE") || (sVar=="KCS_GOLD")) { if (GetGold(oPC) > iVal) { iUseOpt=iCount; } }
if (sVar=="KCS_GOLD_BELOW") { if (GetGold(oPC) < iVal) { iUseOpt=iCount; } }
if (sVar=="KCS_HITDICE_ABOVE") { if (GetHitDice(oPC) > iVal) { iUseOpt=iCount; } } if (sVar=="KCS_HITDICE_BELOW") { if (GetHitDice(oPC) < iVal) { iUseOpt=iCount; } } if (sVar=="KCS_ALIGNGE") { if (GetAlignmentGoodEvil(oPC)==iVal) { iUseOpt=iCount; } } if (sVar=="KCS_ALIGNLC") { if (GetAlignmentLawChaos(oPC)==iVal) { iUseOpt=iCount; } } } else { if (GetLocalInt(oObj, sVar) == iVal) { iUseOpt=iCount; } } } iCount++; } if (iUseOpt>0) { sOpt = IntToString(iUseOpt); iPreAnim = GetLocalInt(OBJECT_SELF, "KCS_OPT" + sPattern + "PRE" + sOpt); iPostAnim = GetLocalInt(OBJECT_SELF, "KCS_OPT" + sPattern + "PST" + sOpt); sResponse = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "RES" + sOpt); sMoveTo = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "MOV" + sOpt); sscript = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "SCR" + sOpt); sMisc = GetLocalString(OBJECT_SELF, "KCS_OPT" + sPattern + "SMI" + sOpt); iMisc = GetLocalInt(OBJECT_SELF, "KCS_OPT" + sPattern + "IMI" + sOpt); } }
SetFacingPoint(GetPosition(oPC));
if (iPreAnim) { ActionPlayAnimation(iPreAnim); }
if (!(sResponse=="")) { sResponse = ReplaceTokens(sResponse, oPC); ActionSpeakString(sResponse); }
if (!(sMoveTo=="")) { ActionMoveToLocation(GetLocation(GetWaypointByTag(sMoveTo))); }
if (!(sscript=="")) { SetLocalObject(OBJECT_SELF, "KCS_PCSPEAKER", oPC); if (!(iMisc==0)) { SetLocalInt(OBJECT_SELF, "KCS_IMISC", iMisc); } if (!(sMisc=="")) { SetLocalString(OBJECT_SELF, "KCS_SMISC", sMisc); } SetLocalInt(OBJECT_SELF, "KCS_LASTPATTERN", iPattern); AssignCommand(OBJECT_SELF, Executescript(sscript, OBJECT_SELF)); AssignCommand(OBJECT_SELF, DeleteLocalObject(OBJECT_SELF, "KCS_PCSPEAKER")); if (!(iMisc==0)) { AssignCommand(OBJECT_SELF, DeleteLocalInt(OBJECT_SELF, "KCS_IMISC")); } if (!(sMisc=="")) { AssignCommand(OBJECT_SELF, DeleteLocalString(OBJECT_SELF, "KCS_SMISC")); } }
if (iPostAnim) { ActionPlayAnimation(iPostAnim); } } } } } } }
Espero que esto os sirva, he sufrido mucho para hacerlo funcionar xD Un saludo | |
| | | Tolkien Ex-Moderador/a
Edad : 42 Puntos de Actividad : 6363
Cantidad de envíos : 37 Fecha de inscripción : 22/03/2008
Nº. de Miembro : 2 Respeto por el Foro :
| Tema: Re: Acción segun palabra mágica. Sáb 11 Abr 2009, 6:05 pm | |
| Gracias Jastro por aportar al Foro, muy bueno este script y un buen trabajo, te he dado dos puntos de reputacion, desde ahora puedes votar los post.
Salud para tod@s. | |
| | | Jastro Aprendiz
Edad : 38 Localización : Islas Canarias ¿Que me Gusta? : Todo y Nada Puntos de Actividad : 6374
Cantidad de envíos : 40 Fecha de inscripción : 11/08/2008
Nº. de Miembro : 11 Respeto por el Foro :
| Tema: Re: Acción segun palabra mágica. Sáb 11 Abr 2009, 6:28 pm | |
| Un placer ayudar, por ahi tengo scripts tb interesantes, que no hay en otros lados, ya lo pondre por aqui ^^
Un saludo y gracias :D | |
| | | Ender Patos@
Edad : 32 Puntos de Actividad : 5672
Cantidad de envíos : 11 Fecha de inscripción : 31/08/2009
Nº. de Miembro : 100 Respeto por el Foro :
| Tema: Re: Acción segun palabra mágica. Lun 31 Ago 2009, 3:02 am | |
| ¿No es demasiado extenso? Excepto que hayas metido otras condicionales como raza, alineamiento y diferentes palabras. Pero con usar el listening y un executescript es más que suficiente, y todo en un sólo guión. | |
| | | Contenido patrocinado
| Tema: Re: Acción segun palabra mágica. | |
| |
| | | | Acción segun palabra mágica. | |
|
Temas similares | |
|
Temas similares | |
| |
| Permisos de este foro: | No puedes responder a temas en este foro.
| |
| |
| |
|