| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- #include "tstudio\allobjects.pwn"
- #define MIN_GTAOBJECT_LABEL_DIST 5.0
- static bool:ObjectsShown;
- static Text3D:GTAObjectText[SEARCH_DATA_SIZE];
- static bool:GTAObjectDeleted[SEARCH_DATA_SIZE];
- static bool:GTAObjectSwapped[SEARCH_DATA_SIZE];
- static HighLightObject[MAX_PLAYERS] = -1;
- public OnPlayerDisconnect(playerid, reason)
- {
- if(HighLightObject[playerid] > -1)
- {
- DestroyDynamicObject(HighLightObject[playerid]);
- HighLightObject[playerid] = -1;
- }
- #if defined GO_OnPlayerDisconnect
- GO_OnPlayerDisconnect(playerid, reason);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect GO_OnPlayerDisconnect
- #if defined GO_OnPlayerDisconnect
- forward GO_OnPlayerDisconnect(playerid, reason);
- #endif
- ResetGTADeletedObjects()
- {
- for(new i = 0; i < SEARCH_DATA_SIZE; i++) GTAObjectDeleted[i] = false;
- for(new i = 0; i < SEARCH_DATA_SIZE; i++) GTAObjectSwapped[i] = false;
- return 1;
- }
- YCMD:gtaobjects(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Display information on all San Andreas buildings.");
- return 1;
- }
- new Float:colradius;
- sscanf(arg, "F(0)", colradius);
-
- if(ObjectsShown && !colradius)
- {
- for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
- ObjectsShown = false;
- SendClientMessage(playerid, STEALTH_GREEN, "Hiding GTA Objects");
- }
- else
- {
- if(ObjectsShown)
- for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
- new index, model;
- AO_RESULT = db_query(AO_DB, "SELECT * FROM `buildings`");
- do
- {
- index = db_get_field_int(AO_RESULT, 0);
- model = db_get_field_int(AO_RESULT, 1);
- //db_get_field(AO_RESULT, 3, name, sizeof name[]);
-
- if(!colradius)
- {
- colradius = GetColSphereRadius(model);
- if(colradius < MIN_GTAOBJECT_LABEL_DIST) colradius = MIN_GTAOBJECT_LABEL_DIST;
- colradius *= 2;
- }
-
- GTAObjectText[index] = CreateDynamic3DTextLabel(
- sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(model), model),
- (GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xFF345AFF) : 0xFF69B4FF),
- db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6) + db_get_field_float(AO_RESULT, 10), colradius * 2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, colradius
- );
- }
- while(db_next_row(AO_RESULT));
-
- ObjectsShown = true;
- SendClientMessage(playerid, STEALTH_GREEN, "Showing GTA Objects");
- }
- return 1;
- }
- /*YCMD:gtaobjects(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Display information on all San Andreas buildings.");
- return 1;
- }
- if(ObjectsShown)
- {
- for(new i = 0; i < SEARCH_DATA_SIZE; i++) DestroyDynamic3DTextLabel(GTAObjectText[i]);
- ObjectsShown = false;
- SendClientMessage(playerid, STEALTH_GREEN, "Hiding GTA Objects");
- }
- else
- {
- new text[64], Float:colradius;
-
- for(new i = 0; i < SEARCH_DATA_SIZE; i++)
- {
- colradius = GetColSphereRadius(SearchData[i][Search_Model]);
- if(colradius < MIN_GTAOBJECT_LABEL_DIST) colradius = MIN_GTAOBJECT_LABEL_DIST;
- format(text, sizeof(text), "Index: %i\nName: %s\nModelID: %i", i, SearchData[i][Search_Model_Name], SearchData[i][Search_Model]);
- GTAObjectText[i] = CreateDynamic3DTextLabel(text, 0xFF69B4FF, SearchData[i][SearchX], SearchData[i][SearchY], SearchData[i][SearchZ]+SearchData[i][SearchOffset], colradius*2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, colradius*2.0);
- }
- ObjectsShown = true;
- SendClientMessage(playerid, STEALTH_GREEN, "Showing GTA Objects");
- }
- return 1;
- }*/
- YCMD:gtashow(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "\"Highlight\" a San Andreas building.");
- return 1;
- }
- if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to highlight!");
- new line[128], index = strval(arg);
- if(index < 0 || index >= SEARCH_DATA_SIZE)
- {
- format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
- return SendClientMessage(playerid, STEALTH_YELLOW, line);
- }
- if(HighLightObject[playerid] > -1) DestroyDynamicObject(HighLightObject[playerid]);
- HighLightObject[playerid] = CreateDynamicObject(db_get_field_int(AO_RESULT, 1),
- db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6) + 1.0,
- db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9),
- -1, -1, playerid
- );
-
- for(new i = 0; i < 16; i++) SetDynamicObjectMaterial(HighLightObject[playerid], i, -1, "none", "none", 0xFFFF0000);
- return 1;
- }
- YCMD:gtahide(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Hide a \"highlighted\" San Andreas building.");
- return 1;
- }
- if(HighLightObject[playerid] > -1)
- {
- DestroyDynamicObject(HighLightObject[playerid]);
- HighLightObject[playerid] = -1;
- }
- return 1;
- }
- YCMD:remobject(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Destroy a San Andreas building. (CAUTION: Permanent!)");
- return 1;
- }
- MapOpenCheck();
-
- new index;
- if(sscanf(arg, "i", index)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to delete!");
- new line[128];
- if(index < 0 || index >= SEARCH_DATA_SIZE)
- {
- format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
- return SendClientMessage(playerid, STEALTH_YELLOW, line);
- }
- if(GTAObjectDeleted[index] == true) return SendClientMessage(playerid, STEALTH_YELLOW, "That object is already deleted!");
- GTAObjectDeleted[index] = true;
-
- AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
- //db_get_field(AO_RESULT, 3, name, sizeof name[]);
-
- AddRemoveBuilding(db_get_field_int(AO_RESULT, 1), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
- if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
- AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
- UpdateDynamic3DTextLabelText(GTAObjectText[index],
- (GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xF51414FF) : 0xFF69B4FF),
- sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(db_get_field_int(AO_RESULT, 1)), db_get_field_int(AO_RESULT, 1)));
- SendClientMessage(playerid, STEALTH_YELLOW, "Object has been removed!");
-
- return 1;
- }
- YCMD:rremobject(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Destroy all San Andreas buildings of specified model in specific range from your location. (CAUTION: Permanent!)");
- return 1;
- }
- MapOpenCheck();
-
- new model, Float:range;
- if(sscanf(arg, "if", model, range))
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_YELLOW, "Usage: /rremobject <Model> <Range>");
- return 1;
- }
- if(model < 0 || model >= 19999)
- {
- SendClientMessage(playerid, STEALTH_YELLOW, "Model must be between 0 and 19999");
- return 1;
- }
-
- new index, name[50], count, Float:x, Float:y, Float:z;
- strcat(name, GetModelName(model));
-
- if(IsFlyMode(playerid))
- GetFlyModePos(playerid, x, y, z);
- else
- GetPlayerPos(playerid, x, y, z);
-
- AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `Model` = %i", model));
- db_begin_transaction(AO_DB);
- do
- {
- index = db_get_field_int(AO_RESULT, 0);
-
- if(GTAObjectDeleted[index] == true) continue;
- new Float:dbx = db_get_field_float(AO_RESULT, 4), Float:dby = db_get_field_float(AO_RESULT, 5), Float:dbz = db_get_field_float(AO_RESULT, 6);
- new Float:dist = VectorSize(dbx - x, dby - y, dbz - z);
-
- if(dist < range)
- {
- GTAObjectDeleted[index] = true;
-
- //db_get_field(AO_RESULT, 3, name, sizeof name[]);
-
- AddRemoveBuilding(model, dbx, dby, dbz, 0.25, true);
- if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
- AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), dbx, dby, dbz, 0.25, true);
- UpdateDynamic3DTextLabelText(GTAObjectText[index],
- (GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xF51414FF) : 0xFF69B4FF),
- sprintf("Index: %i\nName: %s\nModelID: %i", index, name, model));
-
- count++;
- }
- }
- while(db_next_row(AO_RESULT));
- db_end_transaction(AO_DB);
- SendClientMessage(playerid, STEALTH_YELLOW, sprintf("%i objects have been removed!", count));
-
- return 1;
- }
- YCMD:swapbuilding(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Destroys a San Andreas building and creates a map object in it's place.");
- return 1;
- }
- MapOpenCheck();
- if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to swap!");
- new line[128], index = strval(arg);
- if(index < 0 || index >= SEARCH_DATA_SIZE)
- {
- format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
- return SendClientMessage(playerid, STEALTH_YELLOW, line);
- }
- if(GTAObjectSwapped[index] == true) return SendClientMessage(playerid, STEALTH_YELLOW, "That object is already swapped!");
- AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
- //db_get_field(AO_RESULT, 3, name, sizeof name[]);
-
- new model = db_get_field_int(AO_RESULT, 1);
- if(GTAObjectDeleted[index] == false)
- {
- AddRemoveBuilding(model, db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
- if(db_get_field_int(AO_RESULT, 2) != INVALID_OBJECT_ID)
- AddRemoveBuilding(db_get_field_int(AO_RESULT, 2), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), 0.25, true);
-
- GTAObjectDeleted[index] = true;
- }
- // Swap object
- UpdateObject3DText(AddDynamicObject(model, db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9)), true);
- GTAObjectSwapped[index] = true;
- UpdateDynamic3DTextLabelText(GTAObjectText[index],
- (GTAObjectDeleted[index] ? (GTAObjectSwapped[index] ? 0x5A34FFFF : 0xFF345AFF) : 0xFF69B4FF),
- sprintf("Index: %i\nName: %s\nModelID: %i", index, GetModelName(model), model));
-
- SendClientMessage(playerid, STEALTH_YELLOW, "Object has been swapped!");
- return 1;
- }
- YCMD:clonebuilding(playerid, arg[], help)
- {
- if(help)
- {
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Clones a San Andreas building in it's place.");
- return 1;
- }
- MapOpenCheck();
- EditCheck(playerid);
- NoEditingMode(playerid);
- if(isnull(arg)) return SendClientMessage(playerid, STEALTH_YELLOW, "You must provide an index to clone!");
- new line[128], index = strval(arg);
- if(index < 0 || index >= SEARCH_DATA_SIZE)
- {
- format(line, sizeof(line), "Index must be between 0 and %i", SEARCH_DATA_SIZE-1);
- return SendClientMessage(playerid, STEALTH_YELLOW, line);
- }
-
- AO_RESULT = db_query(AO_DB, sprintf("SELECT * FROM `buildings` WHERE `ID` = %i", index));
- SetCurrObject(playerid, AddDynamicObject(db_get_field_int(AO_RESULT, 1), db_get_field_float(AO_RESULT, 4), db_get_field_float(AO_RESULT, 5), db_get_field_float(AO_RESULT, 6), db_get_field_float(AO_RESULT, 7), db_get_field_float(AO_RESULT, 8), db_get_field_float(AO_RESULT, 9)));
- UpdateObject3DText(CurrObject[playerid], true);
-
- SaveUndoInfo(CurrObject[playerid], UNDO_TYPE_CREATED);
-
- SendClientMessage(playerid, STEALTH_ORANGE, "______________________________________________");
- SendClientMessage(playerid, STEALTH_GREEN, "Cloned your selected object the new object is now your selection");
- return 1;
- }
|