Advertisement
EnzoMetlc

[FilterScript] Funciones del A_RNPC. (v0.1).

Oct 21st, 2013
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 41.46 KB | None | 0 0
  1. /*
  2.     Respetar los créditos del autor si le ha servido esta GM.
  3.    
  4.     Post Forum SA-MP: http://forum.sa-mp.com/showthread.php?p=2750460#post2750460
  5.                       asdasd
  6.     Descargas:
  7.                MEGA: https://mega.co.nz/#!6MwQFKoY!GJGp41HA-8eCgT-cgQPwyFb-cudgnUVa0rCNJImDDRQ
  8.                MediaFire: http://www.mediafire.com/download/h9vvj1emfikscvw/A_RNPC.zip
  9. */
  10.  
  11.  
  12.  
  13. #include <a_samp>
  14. #include <zcmd>
  15. #include <sscanf2>
  16. #include <a_rnpc>
  17.  
  18.  
  19. #define ROJO                    0xF10000FF
  20.  
  21. new Float:SavePos_SetRNPCPos[3];
  22. new Float:SavePos_MoveRNPC[4];
  23. new Save_SetRNPCSkillLevel[2];
  24. new Float:SavePos_RNPCWalkTo[3];
  25. new Float:SavePos_RNPCRunTo[3];
  26. new Float:SavePos_RNPCSprinTo[3];
  27. new Float:SavePos_RNPCAimAt[2];
  28. new Float:SavePos_RNPCShotAt[2];
  29.  
  30. new Npc[1];
  31. new VehicleID;
  32. new PlayerText:TextDrawPos;
  33.  
  34.  
  35. new Grabando[MAX_PLAYERS];
  36. new YaGrabo[MAX_PLAYERS];
  37.  
  38.  
  39.  
  40. #define PRESSED(%0) \
  41.     (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  42.  
  43.  
  44. //========================================================
  45. #define NPC_GENERAL 0
  46.     #define NPC_GENERAL_GetRNPCID 1
  47.     #define NPC_GENERAL_GetRNPCState 2
  48.     #define NPC_GENERAL_GetRNPCName 3
  49.     #define NPC_GENERAL_GetRNPCVirtualWorld 4
  50.  
  51. //=============
  52.     #define NPC_GENERAL_SetRNPCVirtualWorld 5
  53.         #define NPC_GENERAL_SetRNPCVirtualWorld_WORLDID 6
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. //========================================================
  62. #define NPC_VEHICULO 7
  63.     #define NPC_VEHICULO_PutRNPCInVehicle 8
  64.     #define NPC_VEHICULO_RemoveRNPCFromVehicle 9
  65.     #define NPC_VEHICULO_SetRNPCVehicleSiren 10
  66.     #define NPC_VEHICULO_GetRNPCVehicleSiren 11
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. //========================================================
  75. #define NPC_PIE 12
  76.     #define NPC_PIE_SetRNPCSkin 13
  77.  
  78. //=============
  79.     #define NPC_PIE_SetRNPCPos 14
  80.         #define SetRNPCPos_PosX 15
  81.         #define SetRNPCPos_PosY 16
  82.         #define SetRNPCPos_PosZ 17
  83.  
  84.     #define NPC_PIE_GetRNPCPos 18
  85.  
  86. //=============
  87.     #define NPC_PIE_MoveRNPC 19
  88.         #define MoveRNPC_PosX 20
  89.         #define MoveRNPC_PosY 21
  90.         #define MoveRNPC_PosZ 22
  91.         #define MoveRNPC_Speed 23
  92.         #define MoveRNPC_Speed2 24
  93.  
  94. //=============
  95.     #define NPC_PIE_SetRNPCFacingAngle 25
  96.     #define NPC_PIE_SetRNPCHealth 26
  97.     #define NPC_PIE_GetRNPCHealth 27
  98.     #define NPC_PIE_SetRNPCArmour 28
  99.     #define NPC_PIE_SetRNPCWeapon 29
  100.     #define NPC_PIE_GetRNPCWeapon 30
  101.  
  102. //=============
  103.     #define NPC_PIE_SetRNPCSkillLevel 31
  104.         #define NPC_PIE_SetRNPCSkillLevel2 32
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112. //========================================================
  113. #define NPC_ACCIONES 33
  114.     #define NPC_ACCIONES_RNPCWalkTo 34
  115.         #define WalkTo_PosX 35
  116.         #define WalkTo_PosY 36
  117.         #define WalkTo_PosZ 37
  118.  
  119. //=============
  120.     #define NPC_ACCIONES_RNPCRunTo 38
  121.         #define RNPCRunTo_PosX 39
  122.         #define RNPCRunTo_PosY 40
  123.         #define RNPCRunTo_PosZ 41
  124.    
  125. //=============
  126.     #define NPC_ACCIONES_RNPCSprintTo 42
  127.         #define RNPCSprintTo_PosX 43
  128.         #define RNPCSprintTo_PosY 44
  129.         #define RNPCSprintTo_PosZ 45
  130.  
  131. //=============
  132.     #define NPC_ACCIONES_RNPCAimAt 46
  133.         #define RNPCAimAt_PosX 47
  134.         #define RNPCAimAt_PosY 48
  135.  
  136. //=============
  137.     #define NPC_ACCIONES_RNPCShotAt 49
  138.         #define RNPCShotAt_PosX 50
  139.         #define RNPCShotAt_PosY 51
  140.  
  141. //=============
  142.     #define NPC_ACCIONES_RNPCStopUseWeapon 52
  143.  
  144. //=============
  145.     #define NPC_ACCIONES_RNPCDriveTo 53
  146.         #define RNPCDriveTo_PosX 54
  147.         #define RNPCDriveTo_PosY 55
  148.         #define RNPCDriveTo_PosZ 56
  149.         #define RNPCDriveTo_Speed 57
  150.  
  151. //=============
  152.     #define NPC_ACCIONES_RNPCFollowPlayer 58
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. //========================================================
  160. /*#define NPC_REC 29
  161.     #define NPC_REC_RNPC_StartPlayback 60
  162.     #define NPC_REC_RNPC_StopPlayback 61
  163.     #define NPC_REC_RNPC_StartBuildPlayback 62
  164. */
  165.  
  166.  
  167.  
  168. main()
  169. {
  170.     Npc[0] = CreateRNPC("[NPC]EnzoMetlc");
  171. }
  172.  
  173. public OnGameModeInit()
  174. {
  175.     SetGameModeText("Testeando Npc's");
  176.     SendRconCommand("hostname RNPC Funciones - EnzoMetlc");
  177.     for(new i = 0; i < 299; i++)
  178.     {
  179.         AddPlayerClass(i, 0.00, 0.00, 0.00, 0.00, 1, 2, 3, 4, 5, 2);
  180.     }
  181.     return 1;
  182. }
  183.  
  184.  
  185.  
  186. //========================================================== CALLBACK'S PARA JUGADORES ==========================================================//
  187. public OnPlayerRequestClass(playerid, classid)
  188. {
  189.     SetupPlayerForClassSelection(playerid);
  190.     return 1;
  191. }
  192.  
  193. forward SetupPlayerForClassSelection(playerid);
  194. public SetupPlayerForClassSelection(playerid)
  195. {
  196.     SetPlayerWeather(playerid, 4);
  197.     SetPlayerCameraPos(playerid, -1714.123657, 751.862609, 24.742170);
  198.     SetPlayerCameraLookAt(playerid, -1714.245727, 756.106506, 24.734375);
  199.     SetPlayerFacingAngle(playerid, 180.135635);
  200.     SetPlayerPos(playerid, -1714.245727, 756.106506, 24.734375);
  201.     return 1;
  202. }
  203.  
  204. public OnPlayerConnect(playerid)
  205. {
  206.     Grabando[playerid] = 0;
  207.     YaGrabo[playerid] = 0;
  208.  
  209.     TextDrawPos = CreatePlayerTextDraw(playerid,220.000000, 426.000000, "Pos: -1585.121459, 729.420776, 8.132681");
  210.     PlayerTextDrawBackgroundColor(playerid, TextDrawPos, 255);
  211.     PlayerTextDrawFont(playerid, TextDrawPos, 2);
  212.     PlayerTextDrawLetterSize(playerid, TextDrawPos, 0.230000, 1.700000);
  213.     PlayerTextDrawColor(playerid, TextDrawPos, -16776961);
  214.     PlayerTextDrawSetOutline(playerid, TextDrawPos, 0);
  215.     PlayerTextDrawSetProportional(playerid, TextDrawPos, 1);
  216.     PlayerTextDrawSetShadow(playerid, TextDrawPos, 1);
  217.     PlayerTextDrawSetSelectable(playerid, TextDrawPos, 0);
  218.     return 1;
  219. }
  220.    
  221. public OnPlayerSpawn(playerid)
  222. {
  223.     PlayerTextDrawShow(playerid, TextDrawPos);
  224.  
  225.     SendClientMessage(playerid, -1, "{00FF00}[INFO] Utilize (/Npc) para ver los comandos para controlar al Npc.");
  226.     SendClientMessage(playerid, -1, "{00FF00}[INFO] Cree un Vehículo con el Comando (/Car [ID de Vehículo]).");
  227.  
  228.     SetTimerEx("ActualizarPos", 150, true, "d", playerid);
  229.     SetRNPCPos(Npc[0], -1680.5272, 705.6332, 30.6016);
  230.  
  231.     GivePlayerWeapon(playerid, 5, 1000);
  232.     GivePlayerWeapon(playerid, 24, 1000);
  233.     GivePlayerWeapon(playerid, 27, 1000);
  234.     GivePlayerWeapon(playerid, 29, 1000);
  235.     GivePlayerWeapon(playerid, 31, 1000);
  236.     GivePlayerWeapon(playerid, 36, 1000);
  237.     SetPlayerTime(playerid, 12, 5);
  238.     SetPlayerPos(playerid, -1682.5272, 705.6332, 30.6016);
  239.     return 1;
  240. }
  241.  
  242. forward ActualizarPos(playerid);
  243. public ActualizarPos(playerid)
  244. {
  245.     new Float:Pos[3];
  246.     new string[100];
  247.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  248.     format(string, 100, "~w~Pos: ~r~%f~w~, ~r~%f~w~, ~r~%f~w~.", Pos[0], Pos[1], Pos[2]);
  249.     PlayerTextDrawSetString(playerid, TextDrawPos, string);
  250.     return 1;
  251. }
  252.  
  253.  
  254.  
  255. //========================================================== CALLBACK'S PARA EL NPC ==========================================================//
  256.  
  257. public OnRNPCCreated(npcid)
  258. {
  259.     print("Un Npc se ha creado en el Servidor. :D");
  260.     return 1;
  261. }
  262.  
  263. public OnRNPCDestroyed(npcid)
  264. {
  265.     print("Un NPC ha sido destruido. :(");
  266.     return 1;
  267. }
  268.  
  269. public OnRNPCSpawn(npcid)
  270. {
  271.     print("Un NPC ha spawneado en el Servidor");
  272.     return 1;
  273. }
  274.  
  275. public OnRNPCPlaybackFinished(npcid)
  276. {
  277.     print("Un NPC terminó su grabación.");
  278.     return 1;
  279. }
  280.  
  281. public OnRNPCDeath(npcid)
  282. {
  283.     print("Es raro que esta callback sea llamado...");
  284.     print("... Pero un NPC ha muerto ._.");
  285.     return 1;
  286. }
  287.  
  288.  
  289.  
  290. //=======================================================================================================================================================================//
  291.  
  292. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  293. {
  294.     switch(dialogid)
  295.     {
  296.         case NPC_GENERAL:
  297.         {
  298.             if(response)
  299.             {
  300.                 switch(listitem)
  301.                 {
  302.                     case 0:
  303.                     {
  304.                         new string[40];
  305.                         format(string, sizeof(string), "*** La ID del NPC es: {F11515}%d{FFFFFF}.", GetRNPCID(Npc[0]));
  306.                         SendClientMessage(playerid, -1, string);
  307.                     }
  308.                     case 1:
  309.                     {
  310.                         new string[60];
  311.                         format(string, sizeof(string), "El estado del NPC es: {F11515}%i{FFFFFF}.", GetRNPCState(Npc[0]));
  312.                         SendClientMessage(playerid, -1, string);
  313.                     }
  314.                     case 2:
  315.                     {
  316.                         new string[60];
  317.                         format(string, sizeof(string), "El Nick del NPC es: {F11515}%s{FFFFFF}.", GetRNPCName(Npc[0]));
  318.                         SendClientMessage(playerid, -1, string);
  319.                     }
  320.                     case 3:
  321.                     {
  322.                         new string[100];
  323.                         format(string, sizeof(string), "*** El Mundo Virtual del NPC es: {F11515}%i{FFFFFF}.", GetRNPCVirtualWorld(Npc[0]));
  324.                         SendClientMessage(playerid, -1, string);
  325.                     }
  326.                     case 4:
  327.                     {
  328.                         ShowPlayerDialog(playerid, NPC_GENERAL_SetRNPCVirtualWorld_WORLDID, DIALOG_STYLE_INPUT, "{00FFFF}Introducir NPC a Mundo Virtual.", \
  329.                         "Escriba la ID del Mundo Virtua que desea meter al NPC.", "Continuar", "Cancelar");
  330.                     }
  331.                 }
  332.             }
  333.         }
  334.  
  335.         case NPC_GENERAL_SetRNPCVirtualWorld_WORLDID:
  336.         {
  337.             if(!response) return Dialog_NPC_GENERAL(playerid);
  338.             SetRNPCVirtualWorld(Npc[0], strval(inputtext));
  339.             new string[100];
  340.             format(string, sizeof(string), "*** Metiste al NPC al Mundo Virtual número: %i", strval(inputtext));
  341.             return SendClientMessage(playerid, -1, string);
  342.         }
  343.  
  344.  
  345.  
  346.  
  347. //=======================================================================================================================================================================//
  348.  
  349.         case NPC_VEHICULO:
  350.         {
  351.             if(response)
  352.             {
  353.                 switch(listitem)
  354.                 {
  355.                     case 0:
  356.                     {
  357.                         if(IsPlayerInAnyVehicle(playerid))
  358.                         {
  359.                             VehicleID = GetPlayerVehicleID(playerid);
  360.                             PutRNPCInVehicle(Npc[0], VehicleID, 0);
  361.                         }
  362.                         else {
  363.                             SendClientMessage(playerid, ROJO, "[<!>] Usted debe estar en un Vehículo.");
  364.                         }
  365.                     }
  366.                     case 1:
  367.                     {
  368.                         if(IsPlayerInAnyVehicle(Npc[0]))
  369.                         {
  370.                             RemoveRNPCFromVehicle(Npc[0]);
  371.                             SendClientMessage(playerid, -1, "[INFO] Usted quitó a NPC de su Vehículo.");
  372.                         }
  373.                         else {
  374.                             SendClientMessage(playerid, ROJO, "[<!>] El NPC no está en un Vehículo.");
  375.                         }
  376.                     }
  377.                     case 2:
  378.                     {
  379.                         if(IsPlayerInAnyVehicle(Npc[0]))
  380.                         {
  381.                             ShowPlayerDialog(playerid, NPC_VEHICULO_SetRNPCVehicleSiren, DIALOG_STYLE_INPUT, \
  382.                             "{00FFFF}Seleccione al RNPC para hacer la acción.", "Coloque el estado de la Sirena para poner al NPC.", "Seleccionar", "Cancelar");
  383.                         }
  384.                         else {
  385.                             SendClientMessage(playerid, ROJO, "[<!>] El NPC no está en un Vehículo.");
  386.                         }
  387.                     }
  388.                     case 3:
  389.                     {
  390.                         new string[120];
  391.                         format(string, sizeof(string), "*** Sirena deL npc: %i.", GetRNPCVehicleSiren(Npc[0]));
  392.                         SendClientMessage(playerid, -1, string);
  393.                     }
  394.                 }
  395.             }
  396.         }
  397.  
  398.  
  399.  
  400.         case NPC_VEHICULO_SetRNPCVehicleSiren:
  401.         {
  402.             if(!response) return Dialog_NPC_VEHICULO(playerid);
  403.             new string[120];
  404.             SetRNPCVehicleSiren(Npc[0], strval(inputtext));
  405.             format(string, sizeof(string), "*** Usted puso el estado de la sirena del NPC en: %i.", strval(inputtext));
  406.             return SendClientMessage(playerid, -1, string);
  407.         }
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415. //=======================================================================================================================================================================//
  416.    
  417.         case NPC_PIE:
  418.         {
  419.             if(response)
  420.             {
  421.                 switch(listitem)
  422.                 {
  423.                     case 0:
  424.                     {
  425.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCSkin, DIALOG_STYLE_INPUT, \
  426.                         "{00FFFF}SetRNPCSkin", "Introduzca la ID del Skin para poner al NPC.", "Continuar", "Cancelar");
  427.                     }
  428.                     case 1:
  429.                     {
  430.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCPos, DIALOG_STYLE_LIST, "{00FFFF}SetRNPCPos", "Traer a mi posición.\nEscribir posición X, Y, Z.", "Aceptar", "Cancelar");
  431.                     }
  432.                     case 2:
  433.                     {
  434.                         new Float:Pos[3], string[125];
  435.                         GetRNPCPos(Npc[0], Pos[0], Pos[1], Pos[2]);
  436.                         format(string, sizeof(string), "*** La posición del NPC es: {F11515}X: %f{FFFFFF}, {F11515}Y: %f{FFFFFF}, {F11515}Z: %f{FFFFFF}.", Pos[0], Pos[1], Pos[2]);
  437.                         SendClientMessage(playerid, -1, string);
  438.                     }
  439.                     case 3:
  440.                     {
  441.                         ShowPlayerDialog(playerid, NPC_PIE_MoveRNPC, DIALOG_STYLE_LIST, \
  442.                         "{00FFFF}MoveRNPC.", "Traer a mi posición.\nEscribir los parámetros: X, Y, Z, Speed.", "Seleccionar", "Cancelar");
  443.                     }
  444.                     case 4:
  445.                     {
  446.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCFacingAngle, DIALOG_STYLE_INPUT, \
  447.                         "{00FFFF}SetRNPCFacingAngle.", "{FFFFFF}Escriba el ángulo que dese a poner al NPC.\nNorte: 0.| Sur: 180.| Este: 270.| Oeste: 90.", "Continuar", "Cancelar");
  448.                     }
  449.                     case 5:
  450.                     {
  451.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCHealth, DIALOG_STYLE_INPUT, \
  452.                         "{00FFFF}SetRNPCHealth.", "{FFFFFF}Introduzca la cantidad de vida que desea poner al NPC.", "Continuar", "Cancelar");
  453.                     }
  454.                     case 6:
  455.                     {
  456.                         new string[30];
  457.                         format(string, sizeof(string), "*** La vida del NPC es: %i", GetRNPCHealth(Npc[0]));
  458.                         SendClientMessage(playerid, -1, string);
  459.                     }
  460.                     case 7:
  461.                     {
  462.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCArmour, DIALOG_STYLE_INPUT, \
  463.                         "{00FFFF}SetRNPCWeapon.", "{FFFFFF}Introduzca la cantidad de Armadura que le desea dar al NPC.", "Continuar", "Cancelar");
  464.                     }
  465.                     case 8:
  466.                     {
  467.                         new string[35];
  468.                         format(string, sizeof(string), "*** La armadura del NPC es: %i", GetRNPCArmour(Npc[0]));
  469.                         SendClientMessage(playerid, -1, string);
  470.                     }
  471.                     case 9:
  472.                     {
  473.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCWeapon, DIALOG_STYLE_INPUT, \
  474.                         "{00FFFF}SetRNPCWeapon.", "{FFFFFF}Introduzca la ID del arma que le desea dar al NPC.", "Continuar", "Cancelar");
  475.                     }
  476.                     case 10:
  477.                     {
  478.                         new string[30];
  479.                         format(string, sizeof(string), "*** El arma del NPC es: %i", GetRNPCWeapon(Npc[0]));
  480.                         SendClientMessage(playerid, -1, string);
  481.                     }
  482.                     case 11:
  483.                     {
  484.                         ShowPlayerDialog(playerid, NPC_PIE_SetRNPCSkillLevel, DIALOG_STYLE_INPUT, \
  485.                         "{00FFFF}SetRNPCSkillLevel.", "Introduzca la ID del arma que desea dar la habilidad al NPC.", "Seleccionar", "Cancelar");
  486.                     }
  487.                 }
  488.             }
  489.         }
  490.  
  491.  
  492.  
  493.  
  494. //====================================== SetRNPCSkin ======================================//
  495.  
  496.         case NPC_PIE_SetRNPCSkin:
  497.         {
  498.             if(!response) return Dialog_NPC_PIE(playerid);
  499.             new string[60];
  500.             SetRNPCSkin(Npc[0], strval(inputtext));
  501.             format(string, sizeof(string), "*** Le pusiste al NPC el Skin: %i.", strval(inputtext));
  502.             return SendClientMessage(playerid, -1, string);
  503.         }
  504.  
  505.         case NPC_PIE_SetRNPCPos:
  506.         {
  507.             if(!response) return Dialog_NPC_PIE(playerid);
  508.             switch(listitem)
  509.             {
  510.                 case 0:
  511.                 {
  512.                     new Float:Pos[3];
  513.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  514.                     SetRNPCPos(Npc[0], Pos[0]-2.0, Pos[1], Pos[2]);
  515.                     SendClientMessage(playerid, -1, "*** NPC llevado a su Posición.");
  516.                 }
  517.                 case 1:
  518.                 {
  519.                     ShowPlayerDialog(playerid, SetRNPCPos_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCPos: {F11515}PosX{FFFFFF}.", \
  520.                     "Escribe la posicion X a la que desea llevar al NPC.", "Aceptar", "Cancelar");
  521.                 }
  522.             }
  523.         }
  524.  
  525.  
  526.  
  527.  
  528. //====================================== SetRNPCPos ======================================//
  529.  
  530.         case SetRNPCPos_PosX:
  531.         {
  532.             if(!response) return ShowPlayerDialog(playerid, NPC_PIE_SetRNPCPos, DIALOG_STYLE_LIST, "{00FFFF}SetRNPCPos", "Traer a mi posición.\nEscribir posición X, Y, Z.", "Aceptar", "Cancelar");
  533.             SavePos_SetRNPCPos[0] = floatstr(inputtext);
  534.             ShowPlayerDialog(playerid, SetRNPCPos_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCPos: {F11515}PosY{FFFFFF}.", "Escribe la posicion Y a la que desea llevar al NPC.", "Aceptar", "Cancelar");
  535.         }
  536.  
  537.         case SetRNPCPos_PosY:
  538.         {
  539.             if(!response) return ShowPlayerDialog(playerid, SetRNPCPos_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCPos: {F11515}PosX{FFFFFF}.", "Escribe la posicion X a la que desea llevar al NPC.", "Aceptar", "Cancelar");
  540.             SavePos_SetRNPCPos[1] = floatstr(inputtext);
  541.             ShowPlayerDialog(playerid, SetRNPCPos_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCPos: {F11515}PosZ{FFFFFF}.", "Escribe la posicion Z a la que desea llevar al NPC.", "Aceptar", "Cancelar");
  542.         }
  543.  
  544.         case SetRNPCPos_PosZ:
  545.         {
  546.             if(!response) return ShowPlayerDialog(playerid, SetRNPCPos_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCPos: {F11515}PosY{FFFFFF}.", "Escribe la posicion Y a la que desea llevar al NPC.", "Aceptar", "Cancelar");
  547.             SavePos_SetRNPCPos[2] = floatstr(inputtext);
  548.             SetRNPCPos(Npc[0], SavePos_SetRNPCPos[0], SavePos_SetRNPCPos[1], SavePos_SetRNPCPos[2]);
  549.         }
  550.  
  551.  
  552.  
  553.  
  554.  
  555. //====================================== MoveRNPC ======================================//
  556.  
  557.         case NPC_PIE_MoveRNPC:
  558.         {
  559.             if(!response) return Dialog_NPC_PIE(playerid);
  560.             switch(listitem)
  561.             {
  562.                 case 0:
  563.                 {
  564.                     ShowPlayerDialog(playerid, MoveRNPC_Speed2, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}Speed{FFFFFF}.", \
  565.                     "{FFFFFF}Escribe la velocidad a la que desea mover al NPC {F11515}({FFFFFF}'0.006' es el valor normal{F11515}){FFFFFF}.", "Aceptar", "Cancelar");
  566.                 }
  567.                 case 1:
  568.                 {
  569.                     ShowPlayerDialog(playerid, MoveRNPC_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}PosX{FFFFFF}.", \
  570.                     "Escribe la posicion X a la que desea mover al NPC.", "Aceptar", "Cancelar");
  571.                 }
  572.             }
  573.         }
  574.  
  575.  
  576.         case MoveRNPC_Speed2:
  577.         {
  578.             if(!response) return ShowPlayerDialog(playerid, NPC_PIE_MoveRNPC, DIALOG_STYLE_LIST, "{00FFFF}MoveRNPC.", "Traer a mi posición.\nEscribir los parámetros: X, Y, Z, Speed.", "Seleccionar", "Cancelar");
  579.             new string[80];
  580.             new Float:Pos[3];
  581.             GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  582.             MoveRNPC(Npc[0], Pos[0], Pos[1], Pos[2], floatstr(inputtext));
  583.             format(string, sizeof(string), "*** NPC movido a su Posición con la velocidad: %0.3f.", floatstr(inputtext));
  584.             SendClientMessage(playerid, -1, string);
  585.         }
  586.  
  587.  
  588.  
  589.  
  590.  
  591.         case MoveRNPC_PosX:
  592.         {
  593.             if(!response) return ShowPlayerDialog(playerid, NPC_PIE_MoveRNPC, DIALOG_STYLE_LIST, "{00FFFF}MoveRNPC", "Traer a mi posición.\nEscribir parámetros: X, Y, Z, Speed.", "Aceptar", "Cancelar");
  594.             SavePos_MoveRNPC[0] = floatstr(inputtext);
  595.             ShowPlayerDialog(playerid, MoveRNPC_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}PosY{FFFFFF}.", "Escribe la posicion Y a la que desea mover al NPC.", "Aceptar", "Cancelar");
  596.         }
  597.  
  598.         case MoveRNPC_PosY:
  599.         {
  600.             if(!response) return ShowPlayerDialog(playerid, MoveRNPC_PosX, DIALOG_STYLE_INPUT, "{00FF00}MoveRNPC: {F11515}PosX{FFFFFF}.", "Escribe la posicion X a la que desea mover al NPC.", "Aceptar", "Cancelar");
  601.             SavePos_MoveRNPC[1] = floatstr(inputtext);
  602.             ShowPlayerDialog(playerid, MoveRNPC_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}PosZ{FFFFFF}.", "Escribe la posicion Z a la que desea mover al NPC.", "Aceptar", "Cancelar");
  603.         }
  604.  
  605.         case MoveRNPC_PosZ:
  606.         {
  607.             if(!response) return ShowPlayerDialog(playerid, SetRNPCPos_PosY, DIALOG_STYLE_INPUT, "{00FF00}MoveRNPC: {F11515}PosY{FFFFFF}.", "Escribe la posicion Y a la que desea mover al NPC.", "Aceptar", "Cancelar");
  608.             SavePos_MoveRNPC[2] = floatstr(inputtext);
  609.             ShowPlayerDialog(playerid, MoveRNPC_Speed, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}Speed{FFFFFF}.", "{FFFFFF}Escribe la velocidad a la que desea mover al NPC {F11515}({FFFFFF}'0.006' es el valor normal{F11515}){FFFFFF}.", "Aceptar", "Cancelar");
  610.         }
  611.  
  612.         case MoveRNPC_Speed:
  613.         {
  614.             if(!response) return ShowPlayerDialog(playerid, SetRNPCPos_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}MoveRNPC: {F11515}PosZ{FFFFFF}.", "Escribe la posicion Z a la que desea mover al NPC.", "Aceptar", "Cancelar");
  615.             SavePos_MoveRNPC[3] = floatstr(inputtext);
  616.             new string[150];
  617.             MoveRNPC(Npc[0], SavePos_MoveRNPC[0], SavePos_MoveRNPC[1], SavePos_MoveRNPC[2], SavePos_MoveRNPC[3]);
  618.             format(string, sizeof(string), "PosX: {F11515}%f{FFFFFF}, PosY: {F11515}%f{FFFFFF}, PosZ: {F11515}%f{FFFFFF}, Speed: {F11515}%f{FFFFFF}.", SavePos_MoveRNPC[0], SavePos_MoveRNPC[1], SavePos_MoveRNPC[2], SavePos_MoveRNPC[3]);
  619.             SendClientMessage(playerid, -1, string);
  620.         }
  621.  
  622.  
  623.  
  624.  
  625.  
  626. //====================================== SetRNPCFacingAngle ======================================//
  627.  
  628.         case NPC_PIE_SetRNPCFacingAngle:
  629.         {
  630.             if(!response) return Dialog_NPC_PIE(playerid);
  631.             new string[70];
  632.             SetRNPCFacingAngle(Npc[0], floatstr(inputtext));
  633.             format(string, sizeof(string), "*** Ángulo puesto: º%0.0f.", floatstr(inputtext));
  634.             SendClientMessage(playerid, -1, string);
  635.         }
  636.  
  637.  
  638.  
  639.         case NPC_PIE_SetRNPCHealth:
  640.         {
  641.             if(!response) return Dialog_NPC_PIE(playerid);
  642.             new string[50];
  643.             SetRNPCHealth(Npc[0], strval(inputtext));
  644.             format(string, sizeof(string), "*** Le pusiste 'º%i' de vida al NPC.", strval(inputtext));
  645.             SendClientMessage(playerid, -1, string);
  646.         }
  647.  
  648.  
  649.         case NPC_PIE_SetRNPCArmour:
  650.         {
  651.             if(!response) return Dialog_NPC_PIE(playerid);
  652.             new string[100];
  653.             SetRNPCArmour(Npc[0], strval(inputtext));
  654.             format(string, 100, "*** Le pusiste 'º%i' de armadura al NPC.", strval(inputtext));
  655.             SendClientMessage(playerid, -1, string);
  656.         }
  657.        
  658.        
  659.         case NPC_PIE_SetRNPCWeapon:
  660.         {
  661.             if(!response) return Dialog_NPC_PIE(playerid);
  662.             new string[100];
  663.             SetRNPCWeapon(Npc[0], strval(inputtext));
  664.             format(string, 100, "*** Le pusiste el arma número '%i' al NPC.", strval(inputtext));
  665.             SendClientMessage(playerid, -1, string);
  666.         }
  667.  
  668.  
  669.  
  670.  
  671.  
  672. //====================================== SetRNPCSkillLevel ======================================//
  673.         case NPC_PIE_SetRNPCSkillLevel:
  674.         {
  675.             if(!response) return Dialog_NPC_PIE(playerid);
  676.             Save_SetRNPCSkillLevel[0] = strval(inputtext);
  677.             ShowPlayerDialog(playerid, NPC_PIE_SetRNPCSkillLevel2, DIALOG_STYLE_INPUT, "{FFFFFF}SetRNPCSkillLevel: {F11515}SkillLevel{FFFFFF}.", \
  678.             "Introduzca la cantidad de habilidad que le desea dar al NPC.", "Continuar", "Cancelar");
  679.         }
  680.  
  681.         case NPC_PIE_SetRNPCSkillLevel2:
  682.         {
  683.             if(!response) return ShowPlayerDialog(playerid, NPC_PIE_SetRNPCSkillLevel, DIALOG_STYLE_INPUT, "{00FFFF}SetRNPCSkillLevel.", "Introduzca la ID del arma que desea dar la habilidad al NPC.", "Seleccionar", "Cancelar");
  684.             new string[90];
  685.             Save_SetRNPCSkillLevel[1] = strval(inputtext);
  686.             SetRNPCSkillLevel(Npc[0], Save_SetRNPCSkillLevel[0], Save_SetRNPCSkillLevel[1]);
  687.             format(string, sizeof(string), "ID de Arma: {F11515}%i{FFFFFF}. | Cantidad de habilidad: {F11515}%i{FFFFFF}.", Save_SetRNPCSkillLevel[0], Save_SetRNPCSkillLevel[1]);
  688.             SendClientMessage(playerid, -1, string);
  689.         }
  690.  
  691.  
  692.  
  693.  
  694.  
  695. //=======================================================================================================================================================================//
  696.  
  697.         case NPC_ACCIONES:
  698.         {
  699.             if(response)
  700.             {
  701.                 switch(listitem)
  702.                 {
  703.                     case 0:
  704.                     {
  705.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCWalkTo, DIALOG_STYLE_LIST, \
  706.                         "{00FFFF}RNPCWalkTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  707.                     }
  708.                     case 1:
  709.                     {
  710.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCRunTo, DIALOG_STYLE_LIST, \
  711.                         "{00FFFF}RNPCRunTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  712.                     }
  713.                     case 2:
  714.                     {
  715.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCSprintTo, DIALOG_STYLE_LIST, \
  716.                         "{00FFFF}RNPCSprintTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  717.                     }
  718.                     case 3:
  719.                     {
  720.                         new Armas = GetPlayerWeapon(Npc[0]);
  721.                         if(Armas < 17)
  722.                         {
  723.                             SendClientMessage(playerid, ROJO, "[<!>] El NPC debe tener un arma de fuego.");
  724.                         }
  725.                         else {
  726.                             ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCAimAt, DIALOG_STYLE_LIST, \
  727.                             "{00FFFF}RNPCAimAt.", "Hacer que el NPC apunte a mí.\nHacer apuntar al NPC a la posición X, Y.", "Seleccionar", "Cancelar");
  728.                         }
  729.                     }
  730.                     case 4:
  731.                     {
  732.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCShotAt, DIALOG_STYLE_LIST, \
  733.                         "{00FFFF}RNPCShotAt.", "Hacer que el NPC dispare hacia mi posición.\nEscribir las posición X, Y.", "Seleccionar", "Cancelar");
  734.                     }
  735.                     case 5:
  736.                     {
  737.                         RNPCStopUseWeapon(Npc[0]);
  738.                         SendClientMessage(playerid, -1, "*** El NPC dejó de disparar.");
  739.                     }
  740.                     case 6:
  741.                     {
  742.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCDriveTo, DIALOG_STYLE_LIST, \
  743.                         "{00FFFF}RNPCDriveTo.", "[NPC]SA.MP1 \n[NPC]SA.MP2 \n[NPC]SA.MP3 \n[NPC]SA.MP4 \n[NPC]SA.MP5", "Seleccionar", "Cancelar");
  744.                     }
  745.                     case 7:
  746.                     {
  747.                         //RNPCFollowPlayer(Npc[0], playerid, RNPC_SPEED_SPRINT);
  748.                         //SendClientMessage(playerid, -1, "*** El NPC lo perseguirá hasta la muerte.");
  749.                         ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCFollowPlayer, DIALOG_STYLE_LIST, \
  750.                         "{00FFFF}RNPCFollowPlayer.", "RNPC_SPEED_SPRINT. \nRNPC_SPEED_RUN. \nRNPC_SPEED_WALK. \nRNPC_SPEED_FASTWALK.", "Seleccionar", "Cancelar");
  751.                     }
  752.                 }
  753.             }
  754.         }
  755.  
  756.  
  757.         case NPC_ACCIONES_RNPCWalkTo:
  758.         {
  759.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  760.             switch(listitem)
  761.             {
  762.                 case 0:
  763.                 {
  764.                     new Float:Pos[3];
  765.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  766.                     RNPCWalkTo(Npc[0], Pos[0], Pos[1], Pos[2]);
  767.                     SendClientMessage(playerid, -1, "*** NPC caminado hasta su posición.");
  768.                 }
  769.                 case 1:
  770.                 {
  771.                     ShowPlayerDialog(playerid, WalkTo_PosX, DIALOG_STYLE_INPUT, \
  772.                     "{FFFFFF}RNPCWalkTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X.", "Seleccionar", "Cancelar");
  773.                 }
  774.             }
  775.         }
  776.                        
  777.                        
  778.         case WalkTo_PosX:
  779.         {
  780.             if(!response) return ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCWalkTo, DIALOG_STYLE_LIST, "{00FFFF}RNPCWalkTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  781.             SavePos_RNPCWalkTo[0] = floatstr(inputtext);
  782.             ShowPlayerDialog(playerid, WalkTo_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCWalkTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y a la que desea mover al NPC.", "Aceptar", "Cancelar");
  783.         }
  784.  
  785.         case WalkTo_PosY:
  786.         {
  787.             if(!response) return ShowPlayerDialog(playerid, WalkTo_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCWalkTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X.", "Seleccionar", "Cancelar");
  788.             SavePos_RNPCWalkTo[1] = floatstr(inputtext);
  789.             ShowPlayerDialog(playerid, WalkTo_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCWalkTo: {F11515}PosZ{FFFFFF}.", "{FFFFFF}Escribe la posicion Z a la que desea mover al NPC.", "Aceptar", "Cancelar");
  790.         }
  791.  
  792.         case WalkTo_PosZ:
  793.         {
  794.             if(!response) return ShowPlayerDialog(playerid, MoveRNPC_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCWalkTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y a la que desea mover al NPC.", "Aceptar", "Cancelar");
  795.             new string[125];
  796.             SavePos_RNPCWalkTo[2] = floatstr(inputtext);
  797.             RNPCWalkTo(Npc[0], SavePos_RNPCWalkTo[0], SavePos_RNPCWalkTo[1], SavePos_RNPCWalkTo[2]);
  798.             format(string, 125, "PosX: {F11515}%f{FFFFFF}, PosY: {F11515}%f{FFFFFF}, PosZ: {F11515}%f{FFFFFF}.", SavePos_RNPCWalkTo[0], SavePos_RNPCWalkTo[1], SavePos_RNPCWalkTo[2]);
  799.             SendClientMessage(playerid, -1, string);
  800.         }
  801.        
  802.        
  803.        
  804.        
  805.        
  806.        
  807.         case NPC_ACCIONES_RNPCRunTo:
  808.         {
  809.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  810.             switch(listitem)
  811.             {
  812.                 case 0:
  813.                 {
  814.                     new Float:Pos[3];
  815.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  816.                     RNPCRunTo(Npc[0], Pos[0], Pos[1], Pos[2]);
  817.                     SendClientMessage(playerid, -1, "*** NPC trotando hasta su posición.");
  818.                 }
  819.                 case 1:
  820.                 {
  821.                     ShowPlayerDialog(playerid, RNPCRunTo_PosX, DIALOG_STYLE_INPUT, \
  822.                     "{FFFFFF}RNPCRunTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer caminar al NPC.", "Seleccionar", "Cancelar");
  823.                 }
  824.             }
  825.         }
  826.  
  827.  
  828.         case RNPCRunTo_PosX:
  829.         {
  830.             if(!response) return ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCRunTo, DIALOG_STYLE_LIST, "{00FFFF}RNPCRunTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  831.             SavePos_RNPCRunTo[0] = floatstr(inputtext);
  832.             ShowPlayerDialog(playerid, RNPCRunTo_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer trotar al NPC.", "Aceptar", "Cancelar");
  833.         }
  834.  
  835.         case RNPCRunTo_PosY:
  836.         {
  837.             if(!response) return ShowPlayerDialog(playerid, RNPCRunTo_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer trotar al NPC.", "Seleccionar", "Cancelar");
  838.             SavePos_RNPCRunTo[1] = floatstr(inputtext);
  839.             ShowPlayerDialog(playerid, RNPCRunTo_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosZ{FFFFFF}.", "{FFFFFF}Escribe la posicion Z para hacer trotar al NPC.", "Aceptar", "Cancelar");
  840.         }
  841.  
  842.         case RNPCRunTo_PosZ:
  843.         {
  844.             if(!response) return ShowPlayerDialog(playerid, RNPCRunTo_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer trotar al NPC.", "Aceptar", "Cancelar");
  845.             new string[125];
  846.             SavePos_RNPCRunTo[2] = floatstr(inputtext);
  847.             RNPCRunTo(Npc[0], SavePos_RNPCRunTo[0], SavePos_RNPCRunTo[1], SavePos_RNPCRunTo[2]);
  848.             format(string, 125, "PosX: {F11515}%f{FFFFFF}, PosY: {F11515}%f{FFFFFF}, PosZ: {F11515}%f{FFFFFF}.", SavePos_RNPCRunTo[0], SavePos_RNPCRunTo[1], SavePos_RNPCRunTo[2]);
  849.             SendClientMessage(playerid, -1, string);
  850.         }
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.         case NPC_ACCIONES_RNPCSprintTo:
  859.         {
  860.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  861.             switch(listitem)
  862.             {
  863.                 case 0:
  864.                 {
  865.                     new Float:Pos[3];
  866.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  867.                     RNPCSprintTo(Npc[0], Pos[0], Pos[1], Pos[2]);
  868.                     SendClientMessage(playerid, -1, "*** NPC corriendo hasta su posición.");
  869.                 }
  870.                 case 1:
  871.                 {
  872.                     ShowPlayerDialog(playerid, RNPCSprintTo_PosX, DIALOG_STYLE_INPUT, \
  873.                     "{FFFFFF}RNPCRunTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer correr al NPC.", "Seleccionar", "Cancelar");
  874.                 }
  875.             }
  876.         }
  877.  
  878.  
  879.         case RNPCSprintTo_PosX:
  880.         {
  881.             if(!response) return ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCSprintTo, DIALOG_STYLE_LIST, "{00FFFF}RNPCSprintTo.", "Traer NPC a mi posición.\nEscribir posición X, Y, Z.", "Seleccionar", "Cancelar");
  882.             SavePos_RNPCSprinTo[0] = floatstr(inputtext);
  883.             ShowPlayerDialog(playerid, RNPCSprintTo_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer correr al NPC.", "Aceptar", "Cancelar");
  884.         }
  885.  
  886.         case RNPCSprintTo_PosY:
  887.         {
  888.             if(!response) return ShowPlayerDialog(playerid, RNPCRunTo_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer correr al NPC.", "Seleccionar", "Cancelar");
  889.             SavePos_RNPCSprinTo[1] = floatstr(inputtext);
  890.             ShowPlayerDialog(playerid, RNPCSprintTo_PosZ, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosZ{FFFFFF}.", "{FFFFFF}Escribe la posicion Z para hacer correr al NPC.", "Aceptar", "Cancelar");
  891.         }
  892.  
  893.         case RNPCSprintTo_PosZ:
  894.         {
  895.             if(!response) return ShowPlayerDialog(playerid, RNPCRunTo_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCRunTo: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer correr al NPC.", "Aceptar", "Cancelar");
  896.             new string[125];
  897.             SavePos_RNPCSprinTo[2] = floatstr(inputtext);
  898.             RNPCSprintTo(Npc[0], SavePos_RNPCSprinTo[0], SavePos_RNPCSprinTo[1], SavePos_RNPCSprinTo[2]);
  899.             format(string, 125, "PosX: {F11515}%f{FFFFFF}, PosY: {F11515}%f{FFFFFF}, PosZ: {F11515}%f{FFFFFF}.", SavePos_RNPCSprinTo[0], SavePos_RNPCSprinTo[1], SavePos_RNPCSprinTo[2]);
  900.             SendClientMessage(playerid, -1, string);
  901.         }
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.         case NPC_ACCIONES_RNPCAimAt:
  911.         {
  912.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  913.             switch(listitem)
  914.             {
  915.                 case 0:
  916.                 {
  917.                     new Float:Pos[3];
  918.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  919.                     RNPCAimAt(Npc[0], Pos[0], Pos[1]);
  920.                     SendClientMessage(playerid, -1, "*** El NPC lo está apuntando.");
  921.                 }
  922.                 case 1:
  923.                 {
  924.                     ShowPlayerDialog(playerid, RNPCAimAt_PosX, DIALOG_STYLE_INPUT, \
  925.                     "{FFFFFF}RNPCAimAt: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer apuntar al NPC.", "Seleccionar", "Cancelar");
  926.                 }
  927.             }
  928.         }
  929.  
  930.  
  931.         case RNPCAimAt_PosX:
  932.         {
  933.             if(!response) return ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCShotAt, DIALOG_STYLE_LIST, "{00FFFF}RNPCShotAt.", "Hacer que el NPC dispare hacia mi posición.\nEscribir las posición X, Y.", "Seleccionar", "Cancelar");
  934.             SavePos_RNPCAimAt[0] = floatstr(inputtext);
  935.             ShowPlayerDialog(playerid, RNPCAimAt_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCAimAt: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer diparar al NPC.", "Aceptar", "Cancelar");
  936.         }
  937.  
  938.         case RNPCAimAt_PosY:
  939.         {
  940.             if(!response) return ShowPlayerDialog(playerid, RNPCAimAt_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCAimAt: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer apuntar al NPC.", "Seleccionar", "Cancelar");
  941.             SavePos_RNPCAimAt[1] = floatstr(inputtext);
  942.             new string[125];
  943.             RNPCAimAt(Npc[0], SavePos_RNPCAimAt[0], SavePos_RNPCAimAt[1]);
  944.             format(string, 60, "X: {F11515}%f{FFFFFF}. Z: {F11515}%f{FFFFFF}.", SavePos_RNPCAimAt[0], SavePos_RNPCAimAt[1]);
  945.             SendClientMessage(playerid, -1, string);
  946.         }
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.         case NPC_ACCIONES_RNPCShotAt:
  955.         {
  956.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  957.             switch(listitem)
  958.             {
  959.                 case 0:
  960.                 {
  961.                     new Float:Pos[3];
  962.                     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  963.                     RNPCShotAt(Npc[0], Pos[0], Pos[1]);
  964.                     SendClientMessage(playerid, -1, "*** El NPC le está disparando.");
  965.                 }
  966.                 case 1:
  967.                 {
  968.                     ShowPlayerDialog(playerid, RNPCAimAt_PosX, DIALOG_STYLE_INPUT, \
  969.                     "{FFFFFF}RNPCAimAt: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escribir la posición X para hacer disparar al NPC.", "Seleccionar", "Cancelar");
  970.                 }
  971.             }
  972.         }
  973.  
  974.  
  975.         case RNPCShotAt_PosX:
  976.         {
  977.             if(!response) return ShowPlayerDialog(playerid, NPC_ACCIONES_RNPCAimAt, DIALOG_STYLE_LIST, "{00FFFF}RNPCAimAt.", "Hacer que el NPC apunte a mí.\nHacer apuntar al NPC a la posición X, Y.", "Seleccionar", "Cancelar");
  978.             SavePos_RNPCShotAt[0] = floatstr(inputtext);
  979.             ShowPlayerDialog(playerid, RNPCAimAt_PosY, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCAimAt: {F11515}PosY{FFFFFF}.", "{FFFFFF}Escribe la posicion Y para hacer apuntar al NPC.", "Aceptar", "Cancelar");
  980.         }
  981.  
  982.         case RNPCShotAt_PosY:
  983.         {
  984.             if(!response) return ShowPlayerDialog(playerid, RNPCRunTo_PosX, DIALOG_STYLE_INPUT, "{FFFFFF}RNPCAimAt: {F11515}PosX{FFFFFF}.", "{FFFFFF}Escriba la posición X para hacer apuntar al NPC.", "Seleccionar", "Cancelar");
  985.             SavePos_RNPCShotAt[1] = floatstr(inputtext);
  986.             new string[125];
  987.             RNPCShotAt(Npc[0], SavePos_RNPCShotAt[0], SavePos_RNPCShotAt[1]);
  988.             format(string, 125, "X: {F11515}%f{FFFFFF}. Z: {F11515}%f{FFFFFF}.", SavePos_RNPCShotAt[0], SavePos_RNPCShotAt[1]);
  989.             SendClientMessage(playerid, -1, string);
  990.         }
  991.  
  992.  
  993.         case NPC_ACCIONES_RNPCFollowPlayer:
  994.         {
  995.             if(!response) return Dialog_NPC_ACCIONES(playerid);
  996.             switch(listitem)
  997.             {
  998.                 case 0:
  999.                 {
  1000.                     RNPCFollowPlayer(Npc[0], playerid, RNPC_SPEED_SPRINT);
  1001.                 }
  1002.                 case 1:
  1003.                 {
  1004.                     RNPCFollowPlayer(Npc[0], playerid, RNPC_SPEED_RUN);
  1005.                 }
  1006.                 case 2:
  1007.                 {
  1008.                     RNPCFollowPlayer(Npc[0], playerid, RNPC_SPEED_WALK);
  1009.                 }
  1010.                 case 3:
  1011.                 {
  1012.                     RNPCFollowPlayer(Npc[0], playerid, RNPC_SPEED_FASTWALK);
  1013.                 }
  1014.             }
  1015.         }
  1016. //=======================================================================================================================================================================//
  1017. /*
  1018.         case NPC_REC:
  1019.         {
  1020.             if(response)
  1021.             {
  1022.                 switch(listitem)
  1023.                 {
  1024.                     case 0:
  1025.                     {
  1026.                         if(Grabando[playerid] == 0)
  1027.                         {
  1028.                             YaGrabo[playerid] = 0;
  1029.                             ShowPlayerDialog(playerid, NPC_REC_RNPC_StartPlayback, DIALOG_STYLE_INPUT, \
  1030.                             "{00FFFF}RNPC_StartPlayback.", "Introduzca el Nombre que desea darle a la grabación.", "Seleccionar", "Cancelar");
  1031.                         }
  1032.                         else
  1033.                         {
  1034.                             SendClientMessage(playerid, ROJO, "[<!>] Termine la grabación del NPC antes de comenzar otra.");
  1035.                         }
  1036.                     }
  1037.                     case 1:
  1038.                     {
  1039.                         if(Grabando[playerid] == 1)
  1040.                         {
  1041.                             RNPC_StopPlayback(Npc[0]);
  1042.                             SendClientMessage(playerid, -1, "[NOTA] Grabación del NPC terminada.");
  1043.                             YaGrabo[playerid] = 1;
  1044.                         }
  1045.                         else
  1046.                         {
  1047.                             SendClientMessage(playerid, ROJO, "[<!>] Usted no estaba grabando.");
  1048.                         }
  1049.                     }
  1050.                     case 2:
  1051.                     {
  1052.                         if(YaGrabo[playerid] == 1)
  1053.                         {
  1054.                             RNPC_StartBuildPlayback(Npc[0], 0, 0);
  1055.                         }
  1056.                         else {
  1057.                             SendClientMessage(playerid, ROJO, "[<!>] Usted no grabó nada.");
  1058.                         }
  1059.                     }
  1060.                 }
  1061.             }
  1062.         }
  1063.        
  1064.        
  1065.         case NPC_REC_RNPC_StartPlayback:
  1066.         {
  1067.             if(!response) return Dialog_NPC_REC(playerid);
  1068.             new string[125];
  1069.             RNPC_StartPlayback(Npc[0], inputtext);
  1070.             Grabando[playerid] = 1;
  1071.             format(string, sizeof(string), "*** El Nombre de la grabación será: {F11515}%s{FFFFFF}.", inputtext);
  1072.             SendClientMessage(playerid, -1, string);
  1073.         }
  1074. */
  1075.     }
  1076.     return 1;
  1077. }
  1078.  
  1079.  
  1080.  
  1081.  
  1082. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  1083. {
  1084.     if(!success)
  1085.     {
  1086.         SendClientMessage(playerid, 0xF10000FF, "[<!>] Comando inexistente.");
  1087.     }
  1088.     return 1;
  1089. }
  1090.  
  1091.  
  1092. CMD:npcgeneral(playerid, params[])
  1093. {
  1094.     Dialog_NPC_GENERAL(playerid);
  1095.     return 1;
  1096. }
  1097.  
  1098.  
  1099. CMD:npcvehiculo(playerid, params[])
  1100. {
  1101.     Dialog_NPC_VEHICULO(playerid);
  1102.     return 1;
  1103. }
  1104.  
  1105.  
  1106. CMD:npcpie(playerid, params[])
  1107. {
  1108.     Dialog_NPC_PIE(playerid);
  1109.     return 1;
  1110. }
  1111.  
  1112.  
  1113. CMD:npc(playerid, params[])
  1114. {
  1115.     ShowPlayerDialog(playerid, 120, DIALOG_STYLE_MSGBOX, "{00FFFF}Comandos RNPC'S.", "{FFFFFF}(/NpcGeneral).\n(/NpcVehiculo).\n(/NpcPie).\n(/NpcAcciones).\n(/NpcRec) (Opción quitada).", "Gracias", "");
  1116.     return 1;
  1117. }
  1118.  
  1119.  
  1120. CMD:npcacciones(playerid, params[])
  1121. {
  1122.     Dialog_NPC_ACCIONES(playerid);
  1123.     return 1;
  1124. }
  1125.  
  1126.  
  1127. /*
  1128. CMD:npcrec(playerid, params[])
  1129. {
  1130.     Dialog_NPC_REC(playerid);
  1131.     return 1;
  1132. }
  1133. */
  1134.  
  1135.  
  1136. CMD:car(playerid, params[])
  1137. {
  1138.     new Carro;
  1139.     if(sscanf(params, "i", Carro))
  1140.     {
  1141.         SendClientMessage(playerid, ROJO, "[INFO] (/Car [ID de Carro]).");
  1142.     } else {
  1143.         new Float:Pos[3], Float:Angle;
  1144.         GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  1145.         GetPlayerFacingAngle(playerid, Angle);
  1146.         CreateVehicle(Carro, Pos[0], Pos[1]+2.0, Pos[2], Angle, random(128), random(128), 10*60*1000);
  1147.     }
  1148.     return 1;
  1149. }
  1150.  
  1151.  
  1152.  
  1153. //=============================================================================== STOCK'S ===============================================================================//
  1154. stock Dialog_NPC_GENERAL(playerid)
  1155. {
  1156.     ShowPlayerDialog(playerid, NPC_GENERAL, DIALOG_STYLE_LIST, "{00FFFF}Funciones del RNPC.", \
  1157.     "{00FF00}GetRNPCID. \n\
  1158.      {FFFFFF}GetRNPCState. \n\
  1159.      {00FF00}GetRNPCName. \n\
  1160.      {FFFFFF}GetRNPCVirtualWorld. \n\
  1161.      {00FF00}SetRNPCVirtualWorld.", \
  1162.      "Seleccionar", "Cancelar");
  1163.     return 1;
  1164. }
  1165.  
  1166. stock Dialog_NPC_VEHICULO(playerid)
  1167. {
  1168.     ShowPlayerDialog(playerid, NPC_VEHICULO, DIALOG_STYLE_LIST, "{00FFFF}Funciones del RNPC.", \
  1169.     "{FFFFFF}PutRNPCInVehicle. \n\
  1170.      {00FF00}RemoveRNPCFromVehicle. \n\
  1171.      {FFFFFF}SetRNPCVehicleSiren. \n\
  1172.      {00FF00}GetRNPCVehicleSiren.", \
  1173.     "Seleccionar", "Cancelar");
  1174.     return 1;
  1175. }
  1176.  
  1177.  
  1178.  
  1179. stock Dialog_NPC_PIE(playerid)
  1180. {
  1181.     new string[280];
  1182.     strcat(string, "{FFFFFF}SetRNPCSkin. \n");
  1183.     strcat(string, "{00FF00}SetRNPCPos.\n");
  1184.     strcat(string, "{FFFFFF}GetRNPCPos. \n");
  1185.     strcat(string, "{00FF00}MoveRNPC. \n");
  1186.     strcat(string, "{FFFFFF}SetRNPCFacingAngle. \n");
  1187.     strcat(string, "{00FF00}SetRNPCHealth. \n");
  1188.     strcat(string, "{FFFFFF}GetRNPCHealth. \n");
  1189.     strcat(string, "{00FF00}SetRNPCArmour. \n");
  1190.     strcat(string, "{FFFFFF}GetRNPCArmour. \n");
  1191.     strcat(string, "{00FF00}SetRNPCWeapon. \n");
  1192.     strcat(string, "{FFFFFF}GetRNPCWeapon. \n");
  1193.     strcat(string, "{00FF00}SetRNPCSkillLevel. \n");
  1194.     ShowPlayerDialog(playerid, NPC_PIE, DIALOG_STYLE_LIST, "{00FFFF}Funciones del RNPC.", string, "Seleccionar", "Cancelar");
  1195.     return 1;
  1196. }
  1197.  
  1198. stock Dialog_NPC_ACCIONES(playerid)
  1199. {
  1200.     new string[250];
  1201.     strcat(string, "{FFFFFF}RNPCWalkTo. \n");
  1202.     strcat(string, "{00FF00}RNPCRunTo. \n");
  1203.     strcat(string, "{FFFFFF}RNPCSprintTo. \n");
  1204.     strcat(string, "{00FF00}RNPCAimAt. \n");
  1205.     strcat(string, "{FFFFFF}RNPCShotAt. \n");
  1206.     strcat(string, "{00FF00}RNPCStopUseWeapon. \n");
  1207.     strcat(string, "{FFFFFF}RNPCDriveTo. \n");
  1208.     strcat(string, "{00FF00}RNPCFollowPlayer. \n");
  1209.     ShowPlayerDialog(playerid, NPC_ACCIONES, DIALOG_STYLE_LIST, "{00FFFF}Funciones del RNPC.", string, "Aceptar", "Cancelar");
  1210.     return 1;
  1211. }
  1212.  
  1213. /*
  1214. stock Dialog_NPC_REC(playerid)
  1215. {
  1216.     new string[70];
  1217.     strcat(string, "{FFFFFF}RNPC_StartPlayback. \n");
  1218.     strcat(string, "{00FF00}RNPC_StopPlayback. \n");
  1219.     strcat(string, "{FFFFFF}RNPC_StartBuildPlayback.");
  1220.     ShowPlayerDialog(playerid, NPC_REC, DIALOG_STYLE_LIST, "{00FFFF}Funciones del RNPC.", string, "Seleccionar", "Cancelar");
  1221.     return 1;
  1222. }
  1223. */
  1224. //=======================================================================================================================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement