Advertisement
Tuzyk

PawnWoker by Тузик v0.1

Jul 28th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 16.06 KB | None | 0 0
  1. #include <a_samp>
  2. #include <zcmd>
  3. #include <sscanf2>
  4.  
  5. enum
  6. {
  7.     D_PICKUPTYPE,
  8.     D_PU_GIVE,
  9. };
  10. new cFraction[MAX_PLAYERS];
  11.  
  12. new weapon, health, armour;
  13.  
  14. new fraction_vehicles[50], maxvehicleid;
  15.  
  16. new aVehicle[MAX_PLAYERS] = -1, lostvehicle;
  17.  
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n--------------------------------------");
  22.     print("        PawnWoker v1.0 by Тузик");
  23.     print("       Специально для pro-pawn.ru");
  24.     print("--------------------------------------");
  25.  
  26.     maxvehicleid = LoadVehiclesFromFile();
  27.  
  28.     printf("       Загруженно транспорта: %d", maxvehicleid);
  29.     print("--------------------------------------\n\n\n\n");
  30.  
  31.     return 1;
  32. }
  33.  
  34. public OnFilterScriptExit()
  35. {
  36.     for(new vehicleid; vehicleid <= maxvehicleid; vehicleid++)
  37.     {
  38.         DestroyVehicle(fraction_vehicles[vehicleid]);
  39.     }
  40.     DestroyVehicle(lostvehicle);
  41.     return 1;
  42. }
  43.  
  44. public OnPlayerRequestClass(playerid, classid)
  45. {
  46.     SpawnPlayer(playerid);
  47.     return 1;
  48. }
  49.  
  50. public OnPlayerConnect(playerid)
  51. {
  52.     return 1;
  53. }
  54.  
  55. public OnPlayerDisconnect(playerid, reason)
  56. {
  57.     return 1;
  58. }
  59.  
  60. public OnPlayerSpawn(playerid)
  61. {
  62.     SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  63.     return 1;
  64. }
  65.  
  66. public OnPlayerDeath(playerid, killerid, reason)
  67. {
  68.     SpawnPlayer(playerid);
  69.     return 1;
  70. }
  71.  
  72. public OnPlayerText(playerid, text[])
  73. {
  74.     return 1;
  75. }
  76.  
  77. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  78. {
  79.     if(fraction_vehicles[0] <= vehicleid <= fraction_vehicles[maxvehicleid])
  80.     {
  81.         if(!cFraction[playerid])
  82.         {
  83.             SendClientMessage(playerid, -1, "Вы не состоите в организации");
  84.             ClearAnimations(playerid);
  85.         }
  86.         else return 1;
  87.     }
  88.     return 1;
  89. }
  90.  
  91. public OnPlayerStateChange(playerid, newstate, oldstate)
  92. {
  93.     return 1;
  94. }
  95.  
  96. public OnPlayerEnterCheckpoint(playerid)
  97. {
  98.     return 1;
  99. }
  100.  
  101. public OnPlayerLeaveCheckpoint(playerid)
  102. {
  103.     return 1;
  104. }
  105.  
  106. public OnPlayerPickUpPickup(playerid, pickupid)
  107. {
  108.     return 1;
  109. }
  110.  
  111. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  112. {
  113.     return 1;
  114. }
  115.  
  116. public OnPlayerUpdate(playerid)
  117. {
  118.     return 1;
  119. }
  120.  
  121. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  122. {
  123.     new pg_string[150], string[129];
  124.     new Float:X,Float:Y,Float:Z;
  125.  
  126.     GetPlayerPos(playerid, X,Y,Z);
  127.  
  128.     switch(dialogid)
  129.     {
  130.         case D_PICKUPTYPE:
  131.         {
  132.             if(response)
  133.             {
  134.                 switch(listitem)
  135.                 {
  136.                     case 0:
  137.                     {
  138.  
  139.                         SetPVarFloat(playerid, "PW_CreatePickup_X",X);
  140.                         SetPVarFloat(playerid, "PW_CreatePickup_Y",Y);
  141.                         SetPVarFloat(playerid, "PW_CreatePickup_Z",Z);
  142.                         SendClientMessage(playerid, -1, "Точка телепорта виртуально сохранена.");
  143.  
  144.                         SetPVarInt(playerid, "PW_CreatePickup", 1);
  145.                         SendClientMessage(playerid, -1, "Выберите место с точкой появления (для этого введите в нужном месте /savepos pickup)");
  146.                         return 1;
  147.                     }
  148.                     case 1:
  149.                     {
  150.                         format(pg_string, sizeof(pg_string),
  151.                             "Выберите что хотите выдавать игроку:\n\
  152.                             [1] %s оружие\n\
  153.                             [2] %s здоровье\n\
  154.                             [3] %s броню\n\
  155.                             [4] Создать Pickup",
  156.                         weapon == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
  157.                         health == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
  158.                         armour == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"));
  159.                         ShowPlayerDialog(playerid, D_PU_GIVE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'a", pg_string, "Далее", "Выход");
  160.                     }
  161.                 }
  162.             }
  163.         }
  164.         case D_PU_GIVE:
  165.         {
  166.             if(response)
  167.             {
  168.                 switch(listitem)
  169.                 {
  170.                     case 0:
  171.                     {
  172.                         if(weapon) weapon = 0, format(string, sizeof(string), "не выдавать");
  173.                         else weapon = 1, format(string, sizeof(string), "выдавать");
  174.                         format(string, sizeof(string), "[1] Вы выбрали %s агрумент weapon.", string);
  175.                     }
  176.                     case 1:
  177.                     {
  178.                         if(health) health = 0, format(string, sizeof(string), "не выдавать");
  179.                         else health = 1, format(string, sizeof(string), "выдавать");
  180.                         format(string, sizeof(string), "[2] Вы выбрали %s агрумент health.", string);
  181.                     }
  182.                     case 2:
  183.                     {
  184.                         if(armour) armour = 0, format(string, sizeof(string), "не выдавать");
  185.                         else armour = 1, format(string, sizeof(string), "выдавать");
  186.                         format(string, sizeof(string), "[3] Вы выбрали %s агрумент armour.", string);
  187.                     }
  188.                     case 3:
  189.                     {
  190.                         new File:file_ptr, pickupid = LoadLastIDFromFile("Pickups.txt"),
  191.                         modelid = GetPVarInt(playerid, "PW_CreatePickup_PM"), pickuptype = GetPVarInt(playerid, "PW_CreatePickup_PT");
  192.  
  193.                         file_ptr = fopen("Pickups.txt",filemode:io_append);
  194.                         if(file_ptr != File:0)
  195.                         {
  196.                             format(string, sizeof(string), "%d,1,%d,%d,%d,%d,%d,%.4f,%.4f,%.4f,0.0; \r\n", pickupid+1, modelid, pickuptype, weapon, health, armour, X,Y,Z);
  197.                             fwrite(file_ptr, string);
  198.                         }
  199.                         fclose(file_ptr);
  200.  
  201.                         file_ptr = fopen("Code.txt",filemode:io_append);
  202.                         if(file_ptr != File:0)
  203.                         {
  204.                             format(string, sizeof(string), "CreatePickup(%d, %d, %.4f,%.4f,%.4f); \r\n", modelid, pickuptype, X,Y,Z);
  205.                             fwrite(file_ptr, string);
  206.                             if(weapon)
  207.                             {
  208.                                 fwrite(file_ptr, "GivePlayerWeapon(playerid, 24, 50); \r\n");
  209.                             }
  210.                             if(health)
  211.                             {
  212.                                 fwrite(file_ptr, "SetPlayerHealth(playerid, 100.0); \r\n");
  213.                             }
  214.                             if(armour)
  215.                             {
  216.                                 fwrite(file_ptr, "SetPlayerArmour(playerid, 100.0); \r\n");
  217.                             }
  218.                             fwrite(file_ptr, "\r\n");
  219.                         }
  220.                         fclose(file_ptr);
  221.  
  222.                         DeletePVar(playerid, "PW_CreatePickup_PM");
  223.                         DeletePVar(playerid, "PW_CreatePickup_PT");
  224.  
  225.                         SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Pickups.txt)");
  226.  
  227.                         weapon = 0, health = 0, armour = 0;
  228.                         return 1;
  229.                     }
  230.                 }
  231.                 format(pg_string, sizeof(pg_string),
  232.                     "Выберите что хотите выдавать игроку:\n\
  233.                     [1] %s оружие\n\
  234.                     [2] %s здоровье\n\
  235.                     [3] %s броню\n\
  236.                     [4] Создать Pickup",
  237.                 weapon == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
  238.                 health == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
  239.                 armour == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"));
  240.  
  241.                 ShowPlayerDialog(playerid, D_PU_GIVE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'a", pg_string, "Далее", "Выход");
  242.                 SendClientMessage(playerid, -1, string);
  243.             }
  244.             else weapon = 0, health = 0, armour = 0;
  245.         }
  246.     }
  247.     return 1;
  248. }
  249.  
  250. CMD:savepos(playerid, params[])
  251. {
  252.     new File:file_ptr, string[120];
  253.  
  254.     new Float:X,Float:Y,Float:Z, Float:R, interiorid = GetPlayerInterior(playerid), condition[8], value1 = -1, value2 = -1;
  255.     sscanf(params, "s[8]dd", condition, value1, value2);
  256.  
  257.     if(!strcmp(condition, "vehicle", true) && condition[0] != 0 || IsPlayerInAnyVehicle(playerid))
  258.     {
  259.         new vehicleid = GetPlayerVehicleID(playerid), modelid = GetVehicleModel(vehicleid);
  260.  
  261.         if(!IsPlayerInAnyVehicle(playerid))
  262.         {
  263.             SendClientMessage(playerid, -1, "Ошибка: для использования этого условия нужно находится в машине.");
  264.             SendClientMessage(playerid, -1, "Примечание: также доступно сохранения цвета. Пример использования: /savepos vehicle 6 0.");
  265.             return 1;
  266.         }
  267.         GetVehiclePos(vehicleid, X,Y,Z);
  268.         GetVehicleZAngle(vehicleid, R);
  269.  
  270.         file_ptr = fopen("Vehicles.txt",filemode:io_append);
  271.         if(file_ptr != File:0)
  272.         {
  273.             format(string, sizeof(string), "%d,%d,%.4f,%.4f,%.4f,%.4f,%d,%d; \r\n", interiorid, modelid, X,Y,Z, R, value1, value2);
  274.             fwrite(file_ptr, string);
  275.         }
  276.         fclose(file_ptr);
  277.  
  278.         file_ptr = fopen("Code.txt",filemode:io_append);
  279.         if(file_ptr != File:0)
  280.         {
  281.             format(string, sizeof(string), "CreateVehicle(%d, %.4f,%.4f,%.4f, %.4f, %d,%d, 60000); \r\n", modelid, X,Y,Z, R, value1, value2);
  282.             fwrite(file_ptr, string);
  283.             format(string, sizeof(string), "LinkVehicleToInterior(vehicleid, %d); \r\n\r\n", interiorid);
  284.             fwrite(file_ptr, string);
  285.         }
  286.         fclose(file_ptr);
  287.         SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Vehicles.txt)");
  288.         return 1;
  289.     }
  290.     else if(!strcmp(condition, "pickup", true) && condition[0] != 0)
  291.     {
  292.         if(GetPVarInt(playerid, "PW_CreatePickup") == 1)
  293.         {
  294.             new pickupid = LoadLastIDFromFile("Pickups.txt");
  295.  
  296.             X = GetPVarFloat(playerid, "PW_CreatePickup_X");
  297.             Y = GetPVarFloat(playerid, "PW_CreatePickup_Y");
  298.             Z = GetPVarFloat(playerid, "PW_CreatePickup_Z");
  299.             GetPlayerFacingAngle(playerid, R);
  300.  
  301.             value1 = GetPVarInt(playerid, "PW_CreatePickup_PM");
  302.             value2 = GetPVarInt(playerid, "PW_CreatePickup_PT");
  303.  
  304.             file_ptr = fopen("Pickups.txt",filemode:io_append);
  305.             if(file_ptr != File:0)
  306.             {
  307.                 format(string, sizeof(string), "%d,0,%d,%d,0,0,0,%.4f,%.4f,%.4f,0.0; \r\n", pickupid+1, value1, value2, X,Y,Z);
  308.                 fwrite(file_ptr, string);
  309.  
  310.                 GetPlayerPos(playerid, X,Y,Z);
  311.                 format(string, sizeof(string), "%d,0,%d,%d,0,0,0,%.4f,%.4f,%.4f,%.4f; \r\n", pickupid+1, value1, value2, X,Y,Z, R);
  312.                 fwrite(file_ptr, string);
  313.             }
  314.             fclose(file_ptr);
  315.  
  316.             file_ptr = fopen("Code.txt",filemode:io_append);
  317.             if(file_ptr != File:0)
  318.             {
  319.                 format(string, sizeof(string), "CreatePickup(%d, %d, %.4f,%.4f,%.4f); \r\n", value1, value2,
  320.                     GetPVarFloat(playerid, "PW_CreatePickup_X"), GetPVarFloat(playerid, "PW_CreatePickup_Y"), GetPVarFloat(playerid, "PW_CreatePickup_Z"));
  321.                 fwrite(file_ptr, string);
  322.                 format(string, sizeof(string), "SetPlayerPos(playerid, %.4f,%.4f,%.4f); \r\n", X,Y,Z);
  323.                 fwrite(file_ptr, string);
  324.                 format(string, sizeof(string), "SetPlayerFacingAngle(playerid, %.4f); \r\n\r\n", R);
  325.                 fwrite(file_ptr, string);
  326.             }
  327.             fclose(file_ptr);
  328.  
  329.             DeletePVar(playerid, "PW_CreatePickup");
  330.  
  331.             DeletePVar(playerid, "PW_CreatePickup_X");
  332.             DeletePVar(playerid, "PW_CreatePickup_Y");
  333.             DeletePVar(playerid, "PW_CreatePickup_Z");
  334.  
  335.             DeletePVar(playerid, "PW_CreatePickup_PM");
  336.             DeletePVar(playerid, "PW_CreatePickup_PT");
  337.  
  338.             SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Pickups.txt)");
  339.         }
  340.         else
  341.         {
  342.             if(value1 == -1 && value2 == -1) return SendClientMessage(playerid, -1, "Используйте: /savepos pickup [modelid] [pickuptype]");
  343.             if(!(0 <= value2 <= 23) && value2 != -1) return SendClientMessage(playerid, -1, "Ошибка: аругмент [pickuptype] не может быть меньше 0 или больше 23!");
  344.  
  345.             SetPVarInt(playerid, "PW_CreatePickup_PM", value1);
  346.             SetPVarInt(playerid, "PW_CreatePickup_PT", value2);
  347.  
  348.             ShowPlayerDialog(playerid, D_PICKUPTYPE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'а",
  349.             "Для создания выберите тип пикапу:\n\
  350.              [1] Телепорт\n\
  351.              [2] Выдача чего-либо", "Далее", "Отмена");
  352.         }
  353.         return 1;
  354.     }
  355.     else
  356.     {
  357.         if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Ошибка: для использования этого условия нужно выйти из машины.");
  358.         GetPlayerPos(playerid, X,Y,Z);
  359.         GetPlayerFacingAngle(playerid, R);
  360.  
  361.         file_ptr = fopen("Positions.txt",filemode:io_append);
  362.         if(file_ptr != File:0)
  363.         {
  364.             format(string, sizeof(string), "%.4f,%.4f,%.4f,%.4f,%d; \r\n", X,Y,Z, R, interiorid);
  365.             fwrite(file_ptr, string);
  366.         }
  367.         fclose(file_ptr);
  368.  
  369.         file_ptr = fopen("Code.txt",filemode:io_append);
  370.         if(file_ptr != File:0)
  371.         {
  372.             format(string, sizeof(string), "SetPlayerInterior(playerid, %d); \r\n\r\n", interiorid);
  373.             fwrite(file_ptr, string);
  374.             format(string, sizeof(string), "SetPlayerPos(playerid, %.4f,%.4f,%.4f); \r\n", X,Y,Z);
  375.             fwrite(file_ptr, string);
  376.             format(string, sizeof(string), "SetPlayerFacingAngle(playerid, %.4f); \r\n", R);
  377.             fwrite(file_ptr, string);
  378.         }
  379.         fclose(file_ptr);
  380.         SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Positions.txt)");
  381.         return 1;
  382.     }
  383. }
  384.  
  385. stock LoadLastIDFromFile(const filename[])
  386. {
  387.     new File:file_ptr, loadinfo[70], id;
  388.  
  389.     file_ptr = fopen(filename, filemode:io_read);
  390.     if(!file_ptr) return 0;
  391.  
  392.     while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
  393.     {
  394.         if(sscanf(loadinfo, "p<,>i", id))
  395.         {
  396.             continue;
  397.         }
  398.     }
  399.     return id;
  400. }
  401.  
  402. stock LoadVehiclesFromFile()
  403. {
  404.     new File:file_ptr, vehicle_load, loadinfo[60];
  405.     new interiorid, vehiclemodel, Float:X,Float:Y,Float:Z, Float:R, color1, color2;
  406.  
  407.     file_ptr = fopen("Vehicles.txt",filemode:io_read);
  408.     if(!file_ptr) return 0;
  409.  
  410.     while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
  411.     {
  412.         if(sscanf(loadinfo, "p<,>iiffffip<;>i", interiorid, vehiclemodel, X,Y,Z, R, color1, color2))
  413.         {
  414.             continue;
  415.         }
  416.         if(color1 == -1) color1 = random(366);
  417.         if(color2 == -1) color2 = random(366);
  418.  
  419.         fraction_vehicles[vehicle_load] = CreateVehicle(vehiclemodel, X,Y,Z, R, color1, color2, 60000);
  420.         LinkVehicleToInterior(fraction_vehicles[vehicle_load], interiorid);
  421.  
  422.         vehicle_load++;
  423.     }
  424.     vehicle_load--;
  425.     return vehicle_load;
  426. }
  427.  
  428. CMD:vehicle(playerid, params[])
  429. {
  430.     new modelid, color[2], Float:X, Float:Y, Float:Z, Float:R;
  431.     GetPlayerPos(playerid, X,Y,Z);
  432.     sscanf(params, "ddd", modelid, color[0], color[1]);
  433.     if(modelid == 0 && color[0] == 0 && color[1] == 0)
  434.     {
  435.         if(!IsPlayerInAnyVehicle(playerid) && aVehicle[playerid] == -1) return SendClientMessage(playerid, -1, "(( Используйте: /vehicle [modelid] [color1] [color2] ))");
  436.         else if(GetPlayerVehicleSeat(playerid) == 0)
  437.         {
  438.             if(GetPlayerVehicleID(playerid) == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]), aVehicle[playerid] = -1;
  439.             SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  440.         }
  441.         else if(aVehicle[playerid] != -1)
  442.         {
  443.             DestroyVehicle(aVehicle[playerid]);
  444.             aVehicle[playerid] = -1;
  445.         }
  446.         SendClientMessage(playerid, -1, "(( Ваш транспорт был успешно удален ))");
  447.     }
  448.     else
  449.     {
  450.         if(aVehicle[playerid] != -1 && GetPlayerVehicleID(playerid) != aVehicle[playerid]) return SendClientMessage(playerid, -1, "(( Вы уже создавали транспорт. Для удаление введите: /vehicle ))");
  451.         if(!(400 <= modelid <= 611)) return SendClientMessage(playerid, -1, "(( Модель не может быть меньше 400 или больше 611! ))");
  452.         if(!(0 <= color[0] <= 255) || !(0 <= color[1] <= 255))
  453.             return SendClientMessage(playerid, -1, "(( Цвет не может быть меньше 0 или больше 255! ))");
  454.         if(GetPlayerVehicleSeat(playerid) == 0)
  455.         {
  456.             GetVehicleZAngle(GetPlayerVehicleID(playerid), R);
  457.             if(GetPlayerVehicleID(playerid) == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]);
  458.             else SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  459.             SendClientMessage(playerid, -1, "(( Вы успешно пересоздали транспорт ))");
  460.         }
  461.         else if(!IsPlayerInAnyVehicle(playerid)) GetPlayerFacingAngle(playerid, R), SendClientMessage(playerid, -1, "(( Вы успешно создали транспорт ))");
  462.         aVehicle[playerid] = CreateVehicle(modelid, X,Y,Z,R, color[0], color[1], 60000);
  463.         PutPlayerInVehicle(playerid, aVehicle[playerid], 0);
  464.     }
  465.     lostvehicle = aVehicle[playerid];
  466.     return 1;
  467. }
  468.  
  469. CMD:test(playerid, params[]) return cFraction[playerid] = strval(params);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement