Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- enum
- {
- D_PICKUPTYPE,
- D_PU_GIVE,
- };
- new cFraction[MAX_PLAYERS];
- new weapon, health, armour;
- new fraction_vehicles[50], maxvehicleid;
- new aVehicle[MAX_PLAYERS] = -1, lostvehicle;
- public OnFilterScriptInit()
- {
- print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n--------------------------------------");
- print(" PawnWoker v1.0 by Тузик");
- print(" Специально для pro-pawn.ru");
- print("--------------------------------------");
- maxvehicleid = LoadVehiclesFromFile();
- printf(" Загруженно транспорта: %d", maxvehicleid);
- print("--------------------------------------\n\n\n\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new vehicleid; vehicleid <= maxvehicleid; vehicleid++)
- {
- DestroyVehicle(fraction_vehicles[vehicleid]);
- }
- DestroyVehicle(lostvehicle);
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SpawnPlayer(playerid);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- SpawnPlayer(playerid);
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- if(fraction_vehicles[0] <= vehicleid <= fraction_vehicles[maxvehicleid])
- {
- if(!cFraction[playerid])
- {
- SendClientMessage(playerid, -1, "Вы не состоите в организации");
- ClearAnimations(playerid);
- }
- else return 1;
- }
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new pg_string[150], string[129];
- new Float:X,Float:Y,Float:Z;
- GetPlayerPos(playerid, X,Y,Z);
- switch(dialogid)
- {
- case D_PICKUPTYPE:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- SetPVarFloat(playerid, "PW_CreatePickup_X",X);
- SetPVarFloat(playerid, "PW_CreatePickup_Y",Y);
- SetPVarFloat(playerid, "PW_CreatePickup_Z",Z);
- SendClientMessage(playerid, -1, "Точка телепорта виртуально сохранена.");
- SetPVarInt(playerid, "PW_CreatePickup", 1);
- SendClientMessage(playerid, -1, "Выберите место с точкой появления (для этого введите в нужном месте /savepos pickup)");
- return 1;
- }
- case 1:
- {
- format(pg_string, sizeof(pg_string),
- "Выберите что хотите выдавать игроку:\n\
- [1] %s оружие\n\
- [2] %s здоровье\n\
- [3] %s броню\n\
- [4] Создать Pickup",
- weapon == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
- health == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
- armour == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"));
- ShowPlayerDialog(playerid, D_PU_GIVE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'a", pg_string, "Далее", "Выход");
- }
- }
- }
- }
- case D_PU_GIVE:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- if(weapon) weapon = 0, format(string, sizeof(string), "не выдавать");
- else weapon = 1, format(string, sizeof(string), "выдавать");
- format(string, sizeof(string), "[1] Вы выбрали %s агрумент weapon.", string);
- }
- case 1:
- {
- if(health) health = 0, format(string, sizeof(string), "не выдавать");
- else health = 1, format(string, sizeof(string), "выдавать");
- format(string, sizeof(string), "[2] Вы выбрали %s агрумент health.", string);
- }
- case 2:
- {
- if(armour) armour = 0, format(string, sizeof(string), "не выдавать");
- else armour = 1, format(string, sizeof(string), "выдавать");
- format(string, sizeof(string), "[3] Вы выбрали %s агрумент armour.", string);
- }
- case 3:
- {
- new File:file_ptr, pickupid = LoadLastIDFromFile("Pickups.txt"),
- modelid = GetPVarInt(playerid, "PW_CreatePickup_PM"), pickuptype = GetPVarInt(playerid, "PW_CreatePickup_PT");
- file_ptr = fopen("Pickups.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- 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);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- file_ptr = fopen("Code.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "CreatePickup(%d, %d, %.4f,%.4f,%.4f); \r\n", modelid, pickuptype, X,Y,Z);
- fwrite(file_ptr, string);
- if(weapon)
- {
- fwrite(file_ptr, "GivePlayerWeapon(playerid, 24, 50); \r\n");
- }
- if(health)
- {
- fwrite(file_ptr, "SetPlayerHealth(playerid, 100.0); \r\n");
- }
- if(armour)
- {
- fwrite(file_ptr, "SetPlayerArmour(playerid, 100.0); \r\n");
- }
- fwrite(file_ptr, "\r\n");
- }
- fclose(file_ptr);
- DeletePVar(playerid, "PW_CreatePickup_PM");
- DeletePVar(playerid, "PW_CreatePickup_PT");
- SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Pickups.txt)");
- weapon = 0, health = 0, armour = 0;
- return 1;
- }
- }
- format(pg_string, sizeof(pg_string),
- "Выберите что хотите выдавать игроку:\n\
- [1] %s оружие\n\
- [2] %s здоровье\n\
- [3] %s броню\n\
- [4] Создать Pickup",
- weapon == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
- health == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
- armour == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"));
- ShowPlayerDialog(playerid, D_PU_GIVE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'a", pg_string, "Далее", "Выход");
- SendClientMessage(playerid, -1, string);
- }
- else weapon = 0, health = 0, armour = 0;
- }
- }
- return 1;
- }
- CMD:savepos(playerid, params[])
- {
- new File:file_ptr, string[120];
- new Float:X,Float:Y,Float:Z, Float:R, interiorid = GetPlayerInterior(playerid), condition[8], value1 = -1, value2 = -1;
- sscanf(params, "s[8]dd", condition, value1, value2);
- if(!strcmp(condition, "vehicle", true) && condition[0] != 0 || IsPlayerInAnyVehicle(playerid))
- {
- new vehicleid = GetPlayerVehicleID(playerid), modelid = GetVehicleModel(vehicleid);
- if(!IsPlayerInAnyVehicle(playerid))
- {
- SendClientMessage(playerid, -1, "Ошибка: для использования этого условия нужно находится в машине.");
- SendClientMessage(playerid, -1, "Примечание: также доступно сохранения цвета. Пример использования: /savepos vehicle 6 0.");
- return 1;
- }
- GetVehiclePos(vehicleid, X,Y,Z);
- GetVehicleZAngle(vehicleid, R);
- file_ptr = fopen("Vehicles.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "%d,%d,%.4f,%.4f,%.4f,%.4f,%d,%d; \r\n", interiorid, modelid, X,Y,Z, R, value1, value2);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- file_ptr = fopen("Code.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "CreateVehicle(%d, %.4f,%.4f,%.4f, %.4f, %d,%d, 60000); \r\n", modelid, X,Y,Z, R, value1, value2);
- fwrite(file_ptr, string);
- format(string, sizeof(string), "LinkVehicleToInterior(vehicleid, %d); \r\n\r\n", interiorid);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Vehicles.txt)");
- return 1;
- }
- else if(!strcmp(condition, "pickup", true) && condition[0] != 0)
- {
- if(GetPVarInt(playerid, "PW_CreatePickup") == 1)
- {
- new pickupid = LoadLastIDFromFile("Pickups.txt");
- X = GetPVarFloat(playerid, "PW_CreatePickup_X");
- Y = GetPVarFloat(playerid, "PW_CreatePickup_Y");
- Z = GetPVarFloat(playerid, "PW_CreatePickup_Z");
- GetPlayerFacingAngle(playerid, R);
- value1 = GetPVarInt(playerid, "PW_CreatePickup_PM");
- value2 = GetPVarInt(playerid, "PW_CreatePickup_PT");
- file_ptr = fopen("Pickups.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- 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);
- fwrite(file_ptr, string);
- GetPlayerPos(playerid, X,Y,Z);
- 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);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- file_ptr = fopen("Code.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "CreatePickup(%d, %d, %.4f,%.4f,%.4f); \r\n", value1, value2,
- GetPVarFloat(playerid, "PW_CreatePickup_X"), GetPVarFloat(playerid, "PW_CreatePickup_Y"), GetPVarFloat(playerid, "PW_CreatePickup_Z"));
- fwrite(file_ptr, string);
- format(string, sizeof(string), "SetPlayerPos(playerid, %.4f,%.4f,%.4f); \r\n", X,Y,Z);
- fwrite(file_ptr, string);
- format(string, sizeof(string), "SetPlayerFacingAngle(playerid, %.4f); \r\n\r\n", R);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- DeletePVar(playerid, "PW_CreatePickup");
- DeletePVar(playerid, "PW_CreatePickup_X");
- DeletePVar(playerid, "PW_CreatePickup_Y");
- DeletePVar(playerid, "PW_CreatePickup_Z");
- DeletePVar(playerid, "PW_CreatePickup_PM");
- DeletePVar(playerid, "PW_CreatePickup_PT");
- SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Pickups.txt)");
- }
- else
- {
- if(value1 == -1 && value2 == -1) return SendClientMessage(playerid, -1, "Используйте: /savepos pickup [modelid] [pickuptype]");
- if(!(0 <= value2 <= 23) && value2 != -1) return SendClientMessage(playerid, -1, "Ошибка: аругмент [pickuptype] не может быть меньше 0 или больше 23!");
- SetPVarInt(playerid, "PW_CreatePickup_PM", value1);
- SetPVarInt(playerid, "PW_CreatePickup_PT", value2);
- ShowPlayerDialog(playerid, D_PICKUPTYPE, DIALOG_STYLE_TABLIST_HEADERS, "Создание Pickup'а",
- "Для создания выберите тип пикапу:\n\
- [1] Телепорт\n\
- [2] Выдача чего-либо", "Далее", "Отмена");
- }
- return 1;
- }
- else
- {
- if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "Ошибка: для использования этого условия нужно выйти из машины.");
- GetPlayerPos(playerid, X,Y,Z);
- GetPlayerFacingAngle(playerid, R);
- file_ptr = fopen("Positions.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "%.4f,%.4f,%.4f,%.4f,%d; \r\n", X,Y,Z, R, interiorid);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- file_ptr = fopen("Code.txt",filemode:io_append);
- if(file_ptr != File:0)
- {
- format(string, sizeof(string), "SetPlayerInterior(playerid, %d); \r\n\r\n", interiorid);
- fwrite(file_ptr, string);
- format(string, sizeof(string), "SetPlayerPos(playerid, %.4f,%.4f,%.4f); \r\n", X,Y,Z);
- fwrite(file_ptr, string);
- format(string, sizeof(string), "SetPlayerFacingAngle(playerid, %.4f); \r\n", R);
- fwrite(file_ptr, string);
- }
- fclose(file_ptr);
- SendClientMessage(playerid, -1, "Вы записали координаты! (Файл Positions.txt)");
- return 1;
- }
- }
- stock LoadLastIDFromFile(const filename[])
- {
- new File:file_ptr, loadinfo[70], id;
- file_ptr = fopen(filename, filemode:io_read);
- if(!file_ptr) return 0;
- while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
- {
- if(sscanf(loadinfo, "p<,>i", id))
- {
- continue;
- }
- }
- return id;
- }
- stock LoadVehiclesFromFile()
- {
- new File:file_ptr, vehicle_load, loadinfo[60];
- new interiorid, vehiclemodel, Float:X,Float:Y,Float:Z, Float:R, color1, color2;
- file_ptr = fopen("Vehicles.txt",filemode:io_read);
- if(!file_ptr) return 0;
- while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
- {
- if(sscanf(loadinfo, "p<,>iiffffip<;>i", interiorid, vehiclemodel, X,Y,Z, R, color1, color2))
- {
- continue;
- }
- if(color1 == -1) color1 = random(366);
- if(color2 == -1) color2 = random(366);
- fraction_vehicles[vehicle_load] = CreateVehicle(vehiclemodel, X,Y,Z, R, color1, color2, 60000);
- LinkVehicleToInterior(fraction_vehicles[vehicle_load], interiorid);
- vehicle_load++;
- }
- vehicle_load--;
- return vehicle_load;
- }
- CMD:vehicle(playerid, params[])
- {
- new modelid, color[2], Float:X, Float:Y, Float:Z, Float:R;
- GetPlayerPos(playerid, X,Y,Z);
- sscanf(params, "ddd", modelid, color[0], color[1]);
- if(modelid == 0 && color[0] == 0 && color[1] == 0)
- {
- if(!IsPlayerInAnyVehicle(playerid) && aVehicle[playerid] == -1) return SendClientMessage(playerid, -1, "(( Используйте: /vehicle [modelid] [color1] [color2] ))");
- else if(GetPlayerVehicleSeat(playerid) == 0)
- {
- if(GetPlayerVehicleID(playerid) == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]), aVehicle[playerid] = -1;
- SetVehicleToRespawn(GetPlayerVehicleID(playerid));
- }
- else if(aVehicle[playerid] != -1)
- {
- DestroyVehicle(aVehicle[playerid]);
- aVehicle[playerid] = -1;
- }
- SendClientMessage(playerid, -1, "(( Ваш транспорт был успешно удален ))");
- }
- else
- {
- if(aVehicle[playerid] != -1 && GetPlayerVehicleID(playerid) != aVehicle[playerid]) return SendClientMessage(playerid, -1, "(( Вы уже создавали транспорт. Для удаление введите: /vehicle ))");
- if(!(400 <= modelid <= 611)) return SendClientMessage(playerid, -1, "(( Модель не может быть меньше 400 или больше 611! ))");
- if(!(0 <= color[0] <= 255) || !(0 <= color[1] <= 255))
- return SendClientMessage(playerid, -1, "(( Цвет не может быть меньше 0 или больше 255! ))");
- if(GetPlayerVehicleSeat(playerid) == 0)
- {
- GetVehicleZAngle(GetPlayerVehicleID(playerid), R);
- if(GetPlayerVehicleID(playerid) == aVehicle[playerid]) DestroyVehicle(aVehicle[playerid]);
- else SetVehicleToRespawn(GetPlayerVehicleID(playerid));
- SendClientMessage(playerid, -1, "(( Вы успешно пересоздали транспорт ))");
- }
- else if(!IsPlayerInAnyVehicle(playerid)) GetPlayerFacingAngle(playerid, R), SendClientMessage(playerid, -1, "(( Вы успешно создали транспорт ))");
- aVehicle[playerid] = CreateVehicle(modelid, X,Y,Z,R, color[0], color[1], 60000);
- PutPlayerInVehicle(playerid, aVehicle[playerid], 0);
- }
- lostvehicle = aVehicle[playerid];
- return 1;
- }
- CMD:test(playerid, params[]) return cFraction[playerid] = strval(params);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement