Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- --------------------------------------------------------------------------------
- This FilterScript is created by Mongi.
- Release Date: 12-08-2017
- Version: 1 - Beta.
- If you spot any bug, Let me know!
- And please don't remove the credits.
- Currently Bugs: None
- --------------------------------------------------------------------------------
- */
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #include <Dini>
- /* Let's Define Some Colors */
- #define COLOR_YELLOW 0xFFFF00FF
- #define COLOR_RED 0xFF0000FF
- // Defines
- #define MAX_OBJ 500
- // Some Var.
- new ObjectEditing[MAX_PLAYERS] = -1;
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------------");
- print(" Dynamic Object System - Scripted By Mongi ");
- print("--------------------------------------------\n");
- // Loading the objects and updating the currently ID -----------------------
- new s[150];
- for(new obj=0 ; obj <= MAX_OBJ ; obj++)
- {
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", obj);
- if(dini_Exists(s))
- {
- new id;
- id = CreateObject(dini_Int(s, "Object"), floatstr(dini_Get(s, "X")), floatstr(dini_Get(s, "Y")), floatstr(dini_Get(s, "Z")), floatstr(dini_Get(s, "rX")), floatstr(dini_Get(s, "rY")), floatstr(dini_Get(s, "rZ")));
- dini_IntSet(s, "ObjectID", id); // In Game Object ID
- }
- else{
- break; // No more objects.
- }
- }
- print("Objects Loaded!");
- //--------------------------------------------------------------------------
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- ObjectEditing[playerid] = -1;
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
- if(response == EDIT_RESPONSE_FINAL)
- {
- new pName[MAX_PLAYER_NAME], s[150];
- GetPlayerName(playerid, pName, sizeof(pName));
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", ObjectEditing[playerid]);
- dini_Set(s, "EditedBy", pName);
- dini_FloatSet(s, "X", fX);
- dini_FloatSet(s, "Y", fY);
- dini_FloatSet(s, "Z", fZ);
- dini_FloatSet(s, "rX", fRotX);
- dini_FloatSet(s, "rY", fRotY);
- dini_FloatSet(s, "rZ", fRotZ);
- SetObjectPos(objectid, fX, fY, fZ);
- SetObjectRot(objectid, fRotX, fRotY, fRotZ);
- ObjectEditing[playerid] = -1;
- }
- if(response == EDIT_RESPONSE_CANCEL)
- {
- SetObjectPos(objectid, oldX, oldY, oldZ);
- SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
- ObjectEditing[playerid] = -1;
- }
- return 1;
- }
- // Dynamic Objects
- CMD:createobject(playerid, params[])
- {
- new s[150];
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", MAX_OBJ);
- if(dini_Exists(s)) return SendClientMessage(playerid, COLOR_RED, "Error: You've reached the max objects limit!");
- new object;
- if(sscanf(params, "d", object)) return SendClientMessage(playerid, -1, "Use: /createobject [Object ID]");
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x, y, z);
- new id, pName[MAX_PLAYER_NAME];
- id = CreateObject(object, x+10, y+10, z, 0, 0, 0);
- GetPlayerName(playerid, pName, sizeof(pName));
- new day, month, year;
- getdate(year, month, day);
- for(new obj=0 ; obj <= MAX_OBJ ; obj++)
- {
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", obj);
- if(!dini_Exists(s))
- {
- dini_Create(s);
- dini_IntSet(s, "Object", object);
- dini_IntSet(s, "ObjectID", id);
- dini_Set(s, "CreatedBy", pName);
- dini_IntSet(s, "Day", day);
- dini_IntSet(s, "Month", month);
- dini_IntSet(s, "Year", year);
- dini_FloatSet(s, "X", x+10);
- dini_FloatSet(s, "Y", y+10);
- dini_FloatSet(s, "Z", z);
- dini_FloatSet(s, "rX", 0);
- dini_FloatSet(s, "rY", 0);
- dini_FloatSet(s, "rZ", 0);
- SendClientMessage(playerid, COLOR_YELLOW, "Object Added!");
- new string[256];
- format(string, sizeof(string), "Object ID: %d / Object Pos: X - %f . Y - %f . Z - %f", obj, x+10, y+10, z);
- SendClientMessage(playerid, COLOR_YELLOW, string);
- break;
- }
- }
- return 1;
- }
- CMD:delobject(playerid, params[])
- {
- new object;
- if(sscanf(params, "d", object)) return SendClientMessage(playerid, -1, "Use: /delobject [Object ID]");
- new s[150];
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", object);
- if(!dini_Exists(s)) return SendClientMessage(playerid, COLOR_RED, "Error: Invalid Object!");
- DestroyObject(dini_Int(s, "ObjectID"));
- dini_Remove(s);
- new ss[150];
- for(new obj=object ; obj <= MAX_OBJ ; obj++)
- {
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", obj);
- format(ss, sizeof(ss), "ObjectsFile\\obj%d.ini", obj+1); //Next file
- if(dini_Exists(ss))
- {
- dini_Create(s);
- dini_IntSet(s, "Object", dini_Int(ss, "Object") );
- dini_IntSet(s, "ObjectID", dini_Int(ss, "ObjectID"));
- dini_Set(s, "CreatedBy", dini_Get(ss, "CreatedBy"));
- dini_Set(s, "X", dini_Get(ss, "X"));
- dini_Set(s, "Y", dini_Get(ss, "Y"));
- dini_Set(s, "Z", dini_Get(ss, "Z"));
- dini_Set(s, "rX", dini_Get(ss, "rX"));
- dini_Set(s, "rY", dini_Get(ss, "rY"));
- dini_Set(s, "rZ", dini_Get(ss, "rZ"));
- dini_Remove(ss);
- }
- }
- new string[256];
- format(string, sizeof(string), "Removed Object ID: %d.", object);
- SendClientMessage(playerid, COLOR_YELLOW, string);
- return 1;
- }
- CMD:editobject(playerid, params[])
- {
- new object;
- if(sscanf(params, "d", object)) return SendClientMessage(playerid, -1, "Use: /editobject [Object ID]");
- new s[150];
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", object);
- if(!dini_Exists(s)) return SendClientMessage(playerid, COLOR_RED, "Error: Invalid Object!");
- if(ObjectEditing[playerid] != -1) return SendClientMessage(playerid, COLOR_RED, "Error: You are already editing an Object!");
- new string[250];
- format(string, sizeof(string), "You are now editing object %d", object);
- SendClientMessage(playerid, COLOR_YELLOW, string);
- ObjectEditing[playerid] = object;
- EditObject(playerid, dini_Int(s, "ObjectID"));
- return 1;
- }
- CMD:gotoobject(playerid, params[])
- {
- new object;
- if(sscanf(params, "d", object)) return SendClientMessage(playerid, -1, "Use: /gotoobject [Object ID]");
- new s[150];
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", object);
- if(!dini_Exists(s)) return SendClientMessage(playerid, COLOR_RED, "Error: Invalid Object!");
- SetPlayerPos(playerid, floatstr(dini_Get(s, "X"))+10, floatstr(dini_Get(s, "Y"))+10, floatstr(dini_Get(s, "Z")));
- return 1;
- }
- CMD:objectinfo(playerid, params[])
- {
- new object;
- if(sscanf(params, "d", object)) return SendClientMessage(playerid, -1, "Use: /gotoobject [Object ID]");
- new s[150];
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", object);
- if(!dini_Exists(s)) return SendClientMessage(playerid, COLOR_RED, "Error: Invalid Object!");
- SendClientMessage(playerid, COLOR_YELLOW, "Object Information:");
- new string[256];
- format(string, sizeof(string), "Object ID: %d", dini_Int(s, "Object"));
- SendClientMessage(playerid, -1, string);
- format(string, sizeof(string), "Created By: %s", dini_Get(s, "CreatedBy"));
- SendClientMessage(playerid, -1, string);
- format(string, sizeof(string), "Date Of Creation: %d/%d/%d", dini_Int(s, "Day"), dini_Int(s, "Month"), dini_Int(s, "Year"));
- SendClientMessage(playerid, -1, string);
- if(dini_Isset(s, "EditedBy"))
- {
- format(string, sizeof(string), "Edited By: %s", dini_Get(s, "EditedBy"));
- SendClientMessage(playerid, -1, string);
- }
- SendClientMessage(playerid, COLOR_YELLOW, "Object Pos:");
- format(string, sizeof(string), "X: %f - Y: %f - Z: %f", floatstr(dini_Get(s, "X")), floatstr(dini_Get(s, "Y")), floatstr(dini_Get(s, "Z")));
- SendClientMessage(playerid, -1, string);
- SendClientMessage(playerid, COLOR_YELLOW, "Object Rot:");
- format(string, sizeof(string), "rX: %f - rY: %f - rZ: %f", floatstr(dini_Get(s, "rX")), floatstr(dini_Get(s, "rY")), floatstr(dini_Get(s, "rZ")));
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- CMD:oused(playerid, params[])
- {
- new count = 0, s[150];
- for(new obj=0 ; obj <= MAX_OBJ ; obj++)
- {
- format(s, sizeof(s), "ObjectsFile\\obj%d.ini", obj);
- if(dini_Exists(s))
- {
- count++;
- }
- }
- if(!count) return SendClientMessage(playerid, COLOR_RED, "You didn't create any object!");
- new string[256];
- format(string, sizeof(string), "You've created %d object(s).", count);
- SendClientMessage(playerid, COLOR_YELLOW, string);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement