Created
November 9, 2018 18:16
-
-
Save Dayrion/9d81f0bc021fcbe8ba047186b2fd4381 to your computer and use it in GitHub Desktop.
Biz system for SA:MP multiplayer servers.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// =========================================================================================================================================================================================== | |
// Dynamic Biz System - Dayrion - v2.3 | |
// =========================================================================================================================================================================================== | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
#define FILTERSCRIPT | |
#include <a_samp> | |
#include <a_mysql> | |
#include <izcmd> | |
#include <sscanf2> | |
#include <YSI_data\y_foreach> | |
#include <YSI\y_va> | |
#include <easyDialog> | |
#tryinclude <streamer> | |
#if defined STREAMER_TYPE_PICKUP && defined STREAMER_TYPE_3D_TEXT_LABEL && defined STREAMER_TYPE_OBJECT | |
#define Streamer_Plugin true | |
#else | |
#define Streamer_Plugin false | |
#endif | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
#define RED 0xFF0000FF | |
#define WHITE 0xFFFFFFFF | |
#define BLUE 0x99CCFFFF | |
#define LBLUE 0x99D6FFFF | |
#define GREEN 0x008000FF | |
#define BROWN 0x9E3E3EFF | |
#define RED_U "{FF0000}" | |
#define WHITE_U "{FFFFFF}" | |
#define BLUE_U "{66A3FF}" | |
#define LBLUE_U "{99D6FF}" | |
#define GREEN_U "{39AC39}" | |
#define BROWN_U "{9E3E3E}" | |
#define LGOLD_U "{ffc34d}" | |
#define X11_CORNSILK_2 0xEEE8CDFF | |
#define X11_PEACH_PUFF_2 0xEECBADFF | |
#define X11_NAVAJO_WHITE_2 0xEECFA1FF | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
#define MAX_BIZ 100 // Number of biz | |
#define MAX_INTERIOR 50 | |
#define MAX_BALANCE 1000000 // Max amount of money in a biz | |
#define MAX_OBJECTS_PER_BIZ 50 | |
#define MAX_BIZ_NAME MAX_PLAYER_NAME*2 // The max lengh of a biz's name | |
#define INVALID_BIZ_ID (MAX_BIZ+10)*2 // Don't change this | |
/* Recommanded pickup ID : | |
» 19523 - 19524 - 1275 - 1247 - 1273 - 19132 - 19522*/ | |
#define ICON_BIZ_LOCKED 19133 | |
#define ICON_BIZ_OPEN 1318 | |
#define ICON_BIZ_PENDING_OPEN 1272 | |
#define ICON_BIZ_PENDING_CLOSED 19523 | |
#define ICON_BIZ_INTERIOR 1239 | |
#define VERSION_FS "2.3" | |
#define PUBLIC:%0(%1) forward %0(%1); public %0(%1) | |
#define FPRINT "[FS - BIZ] " | |
#define INVALID_BIZ_MSG "Invalid biz ID!" | |
#define PLAYER_HAVE_BIZ "You have already a biz." | |
#define PLAYER_HAVE_NOT_BIZ "You don't have already a biz." | |
#define NOT_NEAR_A_BIZ "You are not near a biz." | |
#define NOT_INSIDE_A_BIZ "You are not inside the biz." | |
#define MYSQL_HOST "localhost" | |
#define MYSQL_USER "root" | |
#define MYSQL_DATABASE "myserver" | |
#define MYSQL_PASSWORD "" | |
#define SQL_TABLE_OBJECTS "Biz_Object" | |
#define SQL_TABLE_DATA "Biz_Data" | |
#define SQL_TABLE_INVESTOR "Biz_Investor" | |
#define SQL_TABLE_INTERIOR "Biz_CustomInterior" | |
#define DIALOG(%0) Dialog:%0(playerid, response, listitem, inputtext[]) | |
#define IsValidBiz(%0) Iter_Contains(It_Biz, %0) | |
#define IsValidInvestor(%0) Iter_Contains(It_Investor, %0) | |
#define IsValidInterior(%0) Iter_Contains(It_Interior, %0) | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
//Please, don't remove/change this. | |
#if MAX_BIZ_NAME < 12 | |
#error "MAX_BIZ_NAME is too short. [Min 12]" | |
#endif | |
#if MAX_BALANCE < 1 | |
#error "MAX_BALANCE need to be higher than 1$" | |
#endif | |
#if MAX_BIZ < 1 | |
#error "MAX_BIZ need to be higher than 0" | |
#endif | |
#if !Streamer_Plugin && MAX_OBJECTS_PER_BIZ > 1000 | |
#error "You can't have more than 1000 objects if you don't use a streamer plugin." | |
#endif | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// Redefining strval(string[]) - Credits : Dayrion | |
strval_(const source[]) | |
{ | |
new | |
i, | |
number, | |
secondNumber, | |
bool: negative; | |
if (source[0] == '-') | |
{ | |
negative = true; | |
i = 1; | |
} | |
for (new length = strlen(source); i < length; i++) | |
{ | |
if (!('0' <= source[i] <= '9')) | |
return 0; | |
secondNumber = (number*10) + source[i] - '0'; | |
if(cellmax - number <= secondNumber <= 0 || secondNumber <= 0) | |
return 0; | |
else number = (number*10) + source[i] - '0'; | |
} | |
return negative ? -number : number; | |
} | |
#if defined _ALS_strval | |
#undef strval | |
#else | |
#define _ALS_strval | |
#endif | |
#define strval strval_ | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// =========================================================================================================================================================================================== | |
// Variables | |
// =========================================================================================================================================================================================== | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
enum E_BIZ_VALUES | |
{ | |
bSQLID, | |
bPickupID, | |
bPickupEnter, | |
bType, | |
bInterior, | |
bLevel, | |
bPrice, | |
bVW, | |
bEVW, | |
bEInt, | |
bSafe, | |
bObjects, | |
bEnterPrice, | |
bool:bOpen, | |
bool:bBought, | |
bool:bInvestor, | |
bool:bCreated, | |
Float:bX, | |
Float:bY, | |
Float:bZ, | |
Float:beX, | |
Float:beY, | |
Float:beZ, | |
bOwner[MAX_PLAYER_NAME], | |
bName[MAX_BIZ_NAME], | |
Text3D:bLabelID, | |
Text3D:bLabelEnterID | |
}; | |
enum E_INVESTOR_VALUES | |
{ | |
iSQLID, | |
iName[MAX_PLAYER_NAME], | |
bool:iInves, | |
bool:iSafe, | |
bool:iLock, | |
bool:iEnterPrice, | |
bool:iRename, | |
bool:iDeposit, | |
bool:iWithdraw | |
}; | |
enum E_BIZ_INTERIOR_TYPE | |
{ | |
Float:X, | |
Float:Y, | |
Float:Z, | |
Interior, | |
Name[50], | |
Type | |
}; | |
enum E_CUSTOM_INTERIOR | |
{ | |
i_SQLID, | |
Float:i_X, | |
Float:i_Y, | |
Float:i_Z, | |
i_Interior, | |
i_Name[50] | |
}; | |
enum E_OBJECTS | |
{ | |
oSQLID, | |
oBiz, | |
oID, | |
oSID, | |
oInterior, | |
oVirtualWorld, | |
Float:oX, | |
Float:oY, | |
Float:oZ, | |
Float:oRX, | |
Float:oRY, | |
Float:oRZ, | |
Float:oDrawDistance | |
} | |
enum E_PLAYER_VARS | |
{ | |
BizCreating, | |
InteriorCreating, | |
ObjectEditing, | |
LastBizVisited | |
} | |
// ============================================================================================================================================================================================ | |
static const BizData[][E_BIZ_INTERIOR_TYPE] = | |
{ | |
// {x, y, z, interiorid, name, type} -> to know what each type is, check InteriorName - You can also add type with name - IF YOU ADD A TYPE; CHANGE LINE 505 | |
{772.111999,-3.898649,1000.728820, 5, "LS Gym", 1}, | |
{774.213989,-48.924297,1000.585937, 6, "SF Gym", 1}, | |
{773.579956,-77.096694,1000.655029, 7, "LV Gym", 1}, | |
{-25.884498,-185.868988,1003.546875, 17, "24/7 1 - (Need mapping)", 2}, | |
{6.091179,-29.271898,1003.549438, 10, "24/7 2 - (Need mapping)", 2}, | |
{-30.946699,-89.609596,1003.546875, 18, "24/7 3 - (Need mapping)", 2}, | |
{-25.132598,-139.066986,1003.546875, 16, "24/7 4", 2}, | |
{-27.312299,-29.277599,1003.557250, 4, "24/7 5 - (Need a bit of mapping)", 2}, | |
{-26.691598,-55.714897,1003.546875, 6, "24/7 6", 2}, | |
{286.148986,-40.644397,1001.515625, 1, "Ammunation 1", 3}, | |
{286.800994,-82.547599,1001.515625, 4, "Ammunation 2", 3}, | |
{296.6996,-110.8405,1001.5156, 6, "Ammunation 3", 3}, | |
{316.524993,-167.706985,999.593750, 6, "Ammunation 4", 3}, | |
{-100.4078,-24.5987,1000.7188, 3, "Sex Shop", 4}, | |
{963.418762,2108.292480,1011.030273, 1, "Meat Factory", 4}, | |
{-2240.468505,137.060440,1035.414062, 6, "Zero's RC Shop", 4}, | |
{207.737991,-109.019996,1005.132812, 15, "Binco", 5}, | |
{204.332992,-166.694992,1000.523437, 14, "Didier Sachs", 5}, | |
{207.054992,-138.804992,1003.507812, 3, "Prolaps", 5}, | |
{203.777999,-48.492397,1001.804687, 1, "Suburban", 5}, | |
{226.293991,-7.431529,1002.210937, 5, "Victim", 5}, | |
{161.391006,-93.159156,1001.804687, 18, "Zip", 5}, | |
{501.980987,-69.150199,998.757812, 11, "Bar", 6}, | |
{-227.027999,1401.229980,27.765625, 18, "Lil' probe inn", 6}, | |
{457.304748,-88.428497,999.554687, 4, "Jay's diner", 6}, | |
{363.4929,-74.7067,1001.5078, 10, "Burger Shot", 6}, | |
{364.9168,-11.0500,1001.8516, 9, "Clukin' Bell", 6}, | |
{372.3154,-132.9696,1001.4922, 5, "Well Stacked pizza", 6}, | |
{377.3160,-192.9741,1000.6401, 17, "Rusty Browns donuts", 6} | |
}; | |
static const InteriorName[][] = | |
{ | |
"Custom Interior", | |
"Sport", | |
"24/7", | |
"Ammunation", | |
"Shop", | |
"Clothes Shop", | |
"Food Chain" | |
}; | |
static const OpenFormatBiz[][] = | |
{ | |
"Closed", | |
"Open" | |
}; | |
// ============================================================================================================================================================================================ | |
new | |
CurrentMaxBizID, | |
CurrentMaxCustomInterior, | |
NumberOfInterior, | |
CurrentMaxObjects, | |
BizVW = 214799999, | |
BizInfo[MAX_BIZ][E_BIZ_VALUES], | |
BizInv[MAX_BIZ][E_INVESTOR_VALUES], | |
BizInterior[MAX_INTERIOR][E_CUSTOM_INTERIOR], | |
BizObjects[MAX_OBJECTS][E_OBJECTS], | |
p_Biz[MAX_PLAYERS][E_PLAYER_VARS], | |
MySQL:MySQL, | |
Iterator:It_Biz<MAX_BIZ>, | |
Iterator:It_Investor<MAX_BIZ>, | |
Iterator:It_Interior<MAX_INTERIOR>, | |
Iterator:It_Objects<MAX_OBJECTS>; | |
forward bool:PlayerHasABiz(playerid); | |
forward bool:IsValidObjectModel(modelid); | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// =========================================================================================================================================================================================== | |
// Callback | |
// =========================================================================================================================================================================================== | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
public OnFilterScriptInit() | |
{ | |
print("\n=================================="); | |
print("» Biz FilterScript [Version "VERSION_FS"] «"); | |
print("==================================\n"); | |
mysql_global_options(DUPLICATE_CONNECTIONS, true); | |
MySQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE); | |
if(MySQL == MYSQL_INVALID_HANDLE || mysql_errno(MySQL) != 0) | |
{ | |
print("\n=================================="); | |
print("[FS - ERROR] Unable to connect to MYSQL."); | |
print("[FS - ERROR] Host: "MYSQL_HOST" | Database: "MYSQL_DATABASE" | User: "MYSQL_USER" | Password: Hidden"); | |
print("[FS - ERROR] Please, to avoid any MySQL Errors or involuntary crashs; unload this filterscript. (Biz FilterScript [Version "VERSION_FS"])"); | |
print("\n=================================="); | |
return 1; | |
} | |
for(new i; i < MAX_BIZ; i++) | |
{ | |
BizInfo[i][bPickupID] = | |
BizInfo[i][bPickupEnter] = | |
_:BizInfo[i][bLabelID] = | |
_:BizInfo[i][bLabelEnterID] = -1; | |
} | |
foreach(new i : Player) | |
{ | |
p_Biz[i][LastBizVisited] = INVALID_BIZ_ID; | |
p_Biz[i][BizCreating] = | |
p_Biz[i][InteriorCreating] = | |
p_Biz[i][ObjectEditing] = -1; | |
} | |
new query[1200]; | |
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_TABLE_DATA"` (`SQLID` INTEGER PRIMARY KEY AUTO_INCREMENT, `Type` SMALLINT NOT NULL DEFAULT '0', `Interior` INT NOT NULL DEFAULT '0', `Level` INT NOT NULL DEFAULT '0', `Price` INT NOT NULL DEFAULT '0',"); | |
strcat(query, " `Safe` SMALLINT NOT NULL DEFAULT '0', `EnterPrice` INT NOT NULL DEFAULT '0', `VW` INT NOT NULL DEFAULT '0', `Bought` TINYINT NOT NULL DEFAULT '0', `Open` TINYINT NOT NULL DEFAULT '0', `Investor` SMALLINT NOT NULL DEFAULT '0', `Objects` SMALLINT NOT NULL DEFAULT '0',"); | |
strcat(query, " `X` FLOAT NOT NULL DEFAULT '0.0', `Y` FLOAT NOT NULL DEFAULT '0.0', `Z` FLOAT NOT NULL DEFAULT '0.0', `eX` FLOAT NOT NULL DEFAULT '0.0', `eY` FLOAT NOT NULL DEFAULT '0.0', `eZ` FLOAT NOT NULL DEFAULT '0.0', `eVW` INT NOT NULL DEFAULT '0', `eInter` SMALLINT NOT NULL DEFAULT '0',"); | |
strcat(query, " `Owner` VARCHAR(25) NOT NULL DEFAULT 'None', `BizName` VARCHAR(50) NOT NULL DEFAULT 'None')"); | |
mysql_pquery(MySQL, query); | |
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_TABLE_INVESTOR"` (`SQLID` INTEGER PRIMARY KEY, `Safe` SMALLINT NOT NULL DEFAULT '0', `Lock` SMALLINT NOT NULL DEFAULT '0', `EnterPrice` SMALLINT NOT NULL DEFAULT '0', `Rename` SMALLINT NOT NULL DEFAULT '0', `Deposit` SMALLINT NOT NULL DEFAULT '0',"); | |
strcat(query, " `Withdraw` SMALLINT NOT NULL DEFAULT '0', `Name` VARCHAR(25) NOT NULL DEFAULT '')"); | |
mysql_pquery(MySQL, query); | |
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_TABLE_INTERIOR"` (`SQLID` INTEGER PRIMARY KEY AUTO_INCREMENT, `X` FLOAT NOT NULL DEFAULT '0.0', `Y` FLOAT NOT NULL DEFAULT '0.0', `Z` FLOAT NOT NULL DEFAULT '0.0', `InteriorID` INT NOT NULL DEFAULT '0', `Name` VARCHAR(50) NOT NULL DEFAULT 'NoName')"); | |
mysql_pquery(MySQL, query); | |
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `"SQL_TABLE_OBJECTS"` (`SQLID` INTEGER PRIMARY KEY AUTO_INCREMENT, `X` FLOAT NOT NULL DEFAULT '0.0', `Y` FLOAT NOT NULL DEFAULT '0.0', `Z` FLOAT NOT NULL DEFAULT '0.0', `rX` FLOAT NOT NULL DEFAULT '0.0', `rY` FLOAT NOT NULL DEFAULT '0.0', `rZ` FLOAT NOT NULL DEFAULT '0.0', \ | |
`DrawDistance` FLOAT NOT NULL DEFAULT '0.0', `Biz` SMALLINT NOT NULL DEFAULT '0', `ID` SMALLINT NOT NULL DEFAULT '0', `Interior` SMALLINT NOT NULL DEFAULT '0', `VirtualWorld` INT NOT NULL DEFAULT '0')"); | |
mysql_pquery(MySQL, query); | |
print(FPRINT"MYSQL Tables sucessfuly created if needed."); | |
mysql_tquery(MySQL, "SELECT * FROM "SQL_TABLE_DATA" ORDER BY SQLID", "OnBizsLoading"); | |
mysql_tquery(MySQL, "SELECT * FROM "SQL_TABLE_INVESTOR" ORDER BY SQLID", "OnInvestorsLoading"); | |
mysql_tquery(MySQL, "SELECT * FROM "SQL_TABLE_INTERIOR" ORDER BY SQLID", "OnCustomInteriorLoading"); | |
mysql_tquery(MySQL, "SELECT * FROM "SQL_TABLE_OBJECTS" ORDER BY SQLID", "OnObjectsLoading"); | |
print(FPRINT"MYSQL Tables sucessfuly loaded."); | |
print(FPRINT"Filterscript sucessfuly loaded"); | |
return 1; | |
} | |
public OnPlayerConnect(playerid) | |
{ | |
p_Biz[playerid][LastBizVisited] = INVALID_BIZ_ID; | |
p_Biz[playerid][BizCreating] = | |
p_Biz[playerid][InteriorCreating] = | |
p_Biz[playerid][ObjectEditing] = -1; | |
return 1; | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
PUBLIC:OnBizsLoading() | |
{ | |
new temporaire, | |
number, | |
nbBiz = cache_num_rows(); | |
if(!nbBiz) | |
return print(FPRINT"No bizs loaded."); | |
for(new i; i != nbBiz; i++) | |
{ | |
cache_get_value_int(i, "SQLID", temporaire); // SQLID | |
BizInfo[temporaire][bSQLID] = CurrentMaxBizID = temporaire; | |
cache_get_value_int(i, "Type", BizInfo[temporaire][bType]); | |
cache_get_value_int(i, "Level", BizInfo[temporaire][bLevel]); | |
cache_get_value_int(i, "Price", BizInfo[temporaire][bPrice]); | |
cache_get_value_int(i, "Safe", BizInfo[temporaire][bSafe]); | |
cache_get_value_int(i, "EnterPrice", BizInfo[temporaire][bEnterPrice]); | |
cache_get_value_int(i, "VW", BizInfo[temporaire][bVW]); | |
cache_get_value_int(i, "Interior", BizInfo[temporaire][bInterior]); | |
cache_get_value_int(i, "Objects", BizInfo[temporaire][bObjects]); | |
cache_get_value_int(i, "eVW", BizInfo[temporaire][bEVW]); | |
cache_get_value_int(i, "eInter", BizInfo[temporaire][bEInt]); | |
cache_get_value_float(i, "X", BizInfo[temporaire][bX]); | |
cache_get_value_float(i, "Y", BizInfo[temporaire][bY]); | |
cache_get_value_float(i, "Z", BizInfo[temporaire][bZ]); | |
cache_get_value_float(i, "eX", BizInfo[temporaire][beX]); | |
cache_get_value_float(i, "eY", BizInfo[temporaire][beY]); | |
cache_get_value_float(i, "eZ", BizInfo[temporaire][beZ]); | |
cache_get_value_int(i, "Bought", bool:BizInfo[temporaire][bBought]); | |
cache_get_value_int(i, "Open", bool:BizInfo[temporaire][bOpen]); | |
cache_get_value_int(i, "Investor", bool:BizInfo[temporaire][bInvestor]); | |
BizInfo[temporaire][bCreated] = true; | |
Iter_Add(It_Biz, temporaire); | |
cache_get_value(i, "Owner", BizInfo[temporaire][bOwner], MAX_PLAYER_NAME); | |
cache_get_value(i, "BizName", BizInfo[temporaire][bName], MAX_BIZ_NAME); | |
if(BizInfo[temporaire][bEnterPrice] != 0 && !BizInfo[temporaire][bBought]) | |
BizInfo[temporaire][bEnterPrice] = 0, printf(FPRINT"Loading... | Biz %i | Price enter resetted"); | |
number++; | |
} | |
BizVW = BizInfo[CurrentMaxBizID][bVW]; | |
printf(FPRINT"%i bizs loaded (max ID: %i)", number, CurrentMaxBizID); | |
return 1; | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
PUBLIC:OnInvestorsLoading() | |
{ | |
new temporaire; | |
for(new i, j = cache_num_rows(); i != j; i++) | |
{ | |
cache_get_value_int(i, "SQLID", temporaire); | |
BizInv[temporaire][iSQLID] = temporaire; | |
BizInv[temporaire][iInves] = true; | |
cache_get_value_int(i, "Safe", bool:BizInv[temporaire][iSafe]); | |
cache_get_value_int(i, "Lock", bool:BizInv[temporaire][iLock]); | |
cache_get_value_int(i, "EnterPrice", bool:BizInv[temporaire][iEnterPrice]); | |
cache_get_value_int(i, "Rename", bool:BizInv[temporaire][iRename]); | |
cache_get_value_int(i, "Deposit", bool:BizInv[temporaire][iDeposit]); | |
cache_get_value_int(i, "Withdraw", bool:BizInv[temporaire][iWithdraw]); | |
cache_get_value(i, "Name", BizInv[temporaire][iName], MAX_PLAYER_NAME); | |
Iter_Add(It_Investor, temporaire); | |
SetBizInfos(temporaire, false, true, true, true, true); | |
} | |
print(FPRINT"Investors's data loaded"); | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
PUBLIC:OnCustomInteriorLoading() | |
{ | |
new temporaire; | |
for(new i, j = cache_num_rows(); i != j; i++) | |
{ | |
cache_get_value_int(i, "SQLID", temporaire); | |
BizInterior[temporaire][i_SQLID] = CurrentMaxCustomInterior = temporaire; | |
cache_get_value_float(i, "X", BizInterior[temporaire][i_X]); | |
cache_get_value_float(i, "Y", BizInterior[temporaire][i_Y]); | |
cache_get_value_float(i, "Z", BizInterior[temporaire][i_Z]); | |
cache_get_value_int(i, "InteriorID", BizInterior[temporaire][i_Interior]); | |
cache_get_value(i, "Name", BizInterior[temporaire][i_Name], MAX_BIZ_NAME); | |
NumberOfInterior++; | |
Iter_Add(It_Interior, temporaire); | |
} | |
printf(FPRINT"Custom interiors loaded (maxID: %i)!", CurrentMaxCustomInterior); | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
PUBLIC:OnObjectsLoading() | |
{ | |
new temporaire[E_OBJECTS], | |
index; | |
for(new i, j = cache_num_rows(); i != j; i++) | |
{ | |
cache_get_value_int(i, "SQLID", temporaire[oSQLID]); | |
cache_get_value_int(i, "Biz", temporaire[oBiz]); | |
cache_get_value_int(i, "ID", temporaire[oID]); | |
cache_get_value_int(i, "Interior", temporaire[oInterior]); | |
cache_get_value_int(i, "VirtualWorld", temporaire[oVirtualWorld]); | |
cache_get_value_float(i, "X", temporaire[oX]); | |
cache_get_value_float(i, "Y", temporaire[oY]); | |
cache_get_value_float(i, "Z", temporaire[oZ]); | |
cache_get_value_float(i, "rX", temporaire[oRX]); | |
cache_get_value_float(i, "rY", temporaire[oRY]); | |
cache_get_value_float(i, "rZ", temporaire[oRZ]); | |
cache_get_value_float(i, "DrawDistance", temporaire[oDrawDistance]); | |
#if !Streamer_Plugin | |
temporaire[oSID] = CreateObject(temporaire[oID], temporaire[oX], temporaire[oY], temporaire[oZ], temporaire[oRX], temporaire[oRX], temporaire[oRX], temporaire[oDrawDistance]); | |
#else | |
temporaire[oSID] = CreateDynamicObject(temporaire[oID], temporaire[oX], temporaire[oY], temporaire[oZ], temporaire[oRX], temporaire[oRY], temporaire[oRZ], temporaire[oVirtualWorld], temporaire[oInterior], .drawdistance = temporaire[oDrawDistance]); | |
#endif | |
index = temporaire[oSID]; | |
BizObjects[index] = temporaire; | |
BizObjects[index][oSQLID] = CurrentMaxObjects = temporaire[oSQLID]; | |
Iter_Add(It_Objects, index); | |
} | |
printf(FPRINT"Objects on mapping loaded (number of objects: %i)!", CurrentMaxObjects); | |
} | |
// ============================================================================================================================================================================================ | |
public OnFilterScriptExit() | |
{ | |
foreach(new i : It_Biz) | |
{ | |
#if !Streamer_Plugin | |
Delete3DTextLabel(BizInfo[i][bLabelID]); | |
Delete3DTextLabel(BizInfo[i][bLabelEnterID]); | |
DestroyPickup(BizInfo[i][bPickupID]); | |
DestroyPickup(BizInfo[i][bPickupEnter]); | |
#else | |
DestroyDynamic3DTextLabel(BizInfo[i][bLabelID]); | |
DestroyDynamic3DTextLabel(BizInfo[i][bLabelEnterID]); | |
DestroyDynamicPickup(BizInfo[i][bPickupID]); | |
DestroyDynamicPickup(BizInfo[i][bPickupEnter]); | |
#endif | |
SaveBizData(i); | |
SaveInvestorData(i); | |
} | |
new query[200]; | |
foreach(new i : It_Interior) | |
{ | |
mysql_format(MySQL, query, sizeof(query), "UPDATE `"SQL_TABLE_INTERIOR"` SET `X` = '%f', `Y` = '%f', `Z` = '%f', `InteriorID` = '%i', `Name` = '%e' WHERE `SQLID` = '%i'", | |
BizInterior[i][i_X], BizInterior[i][i_Y], BizInterior[i][i_Z], BizInterior[i][i_Interior], BizInterior[i][i_Name], BizInterior[i][i_SQLID]); | |
mysql_pquery(MySQL, query); | |
} | |
foreach(new i : Player) | |
{ | |
if(p_Biz[i][LastBizVisited] != INVALID_BIZ_ID) | |
{ | |
if(!IsValidBiz(p_Biz[i][LastBizVisited])) | |
continue; | |
SetPlayerPos(i, BizInfo[p_Biz[i][LastBizVisited]][bX], BizInfo[p_Biz[i][LastBizVisited]][bY], BizInfo[p_Biz[i][LastBizVisited]][bZ]); | |
#if Streamer_Plugin | |
SetPlayerInterior(i, BizInfo[p_Biz[i][LastBizVisited]][bEInt]); | |
SetPlayerVirtualWorld(i, BizInfo[p_Biz[i][LastBizVisited]][bEVW]); | |
#else | |
SetPlayerInterior(i, 0); | |
SetPlayerVirtualWorld(i, 0); | |
#endif | |
ErrorMsg(i, "An administrator has unloaded the filterscript, you have been teleported out of the biz."); | |
printf(FPRINT"Unloading ... | Player %s | Teleported out of a biz (ID:%i)", GetName(i, true), p_Biz[i][LastBizVisited]); | |
} | |
} | |
foreach(new i : It_Objects) | |
{ | |
#if Streamer_Plugin | |
DestroyDynamicObject(i); | |
#else | |
DestroyObject(i); | |
#endif | |
SaveObject(i); | |
ResetObjectData(i); | |
} | |
mysql_close(MySQL); | |
print(FPRINT"Filterscript sucessfuly unloaded"); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
public OnObjectMoved(objectid) | |
{ | |
return 1; | |
} | |
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) | |
{ | |
return 0; | |
} | |
// ============================================================================================================================================================================================ | |
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) | |
{ | |
if(p_Biz[playerid][LastBizVisited] != INVALID_BIZ_ID && newinteriorid == 0) | |
{ | |
SetTimerEx("TeleChecking", 1000, false, "i", playerid); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) | |
{ | |
if((newkeys == KEY_SECONDARY_ATTACK) && (oldkeys == 0) && IsNearABiz(playerid)) | |
{ | |
new bizid = GetNearestBiz(playerid), | |
pBiz = GetPlayerBiz(playerid); | |
if(pBiz != bizid && !IsPlayerAdmin(playerid) && !BizInfo[bizid][bBought]) | |
return ErrorMsg(playerid, "This biz is closed."); | |
if(BizInfo[bizid][bEnterPrice] > GetPlayerMoney(playerid) && pBiz != bizid) | |
return ErrorMsg(playerid, "You don't have enough money to enter in this biz."); | |
EnterInABiz(playerid, bizid); | |
if(!BizInfo[bizid][bBought] || pBiz == bizid || BizInfo[bizid][bEnterPrice] == 0) | |
return 1; | |
SetMoneyGameText(playerid, -BizInfo[bizid][bEnterPrice]); | |
GivePlayerMoney(playerid, -BizInfo[bizid][bEnterPrice]); | |
BizInfo[bizid][bSafe] += BizInfo[bizid][bEnterPrice]; | |
} | |
if((newkeys == KEY_SECONDARY_ATTACK) && (oldkeys == 0) && p_Biz[playerid][LastBizVisited] != INVALID_BIZ_ID && IsPlayerInRangeOfPoint(playerid, 3, BizInfo[p_Biz[playerid][LastBizVisited]][beX], BizInfo[p_Biz[playerid][LastBizVisited]][beY], BizInfo[p_Biz[playerid][LastBizVisited]][beZ])) | |
{ | |
ExitABiz(playerid, p_Biz[playerid][LastBizVisited]); | |
} | |
return 1; | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// =========================================================================================================================================================================================== | |
// Commands | |
// =========================================================================================================================================================================================== | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
CMD:createbiz(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new price, | |
level, | |
interior, | |
Float:x, | |
Float:y, | |
Float:z, | |
str[451 + EOS], | |
str1[100]; | |
if(sscanf(params,"iii", interior, level, price)) | |
{ | |
SCM(playerid, LBLUE, "[USE] /createbiz [type] [level] [price]"); | |
format(str, sizeof(str), "{33adff}[USE] "LBLUE_U"/createbiz [type] [level] [price]\n\ | |
"LGOLD_U"type: "LBLUE_U"Which type of buisness it will be\n\ | |
"LGOLD_U"level: "LBLUE_U"Level (score) required to buy this biz\n\ | |
"LGOLD_U"price: "LBLUE_U"Money required to buy this biz.\n\nSort of type (biz):"); | |
for(new i; i < sizeof(InteriorName); i++) | |
{ | |
format(str1, sizeof(str1), LGOLD_U"\nType %i : "WHITE_U"%s", i, InteriorName[i]); | |
strcat(str, str1); | |
} | |
Dialog_Show(playerid, createbizhelp, DIALOG_STYLE_MSGBOX, "Help for /createbiz", str, "Ok", ""); | |
return 1; | |
} | |
if(GetNearestBiz(playerid) != INVALID_BIZ_ID) | |
return ErrorMsg(playerid, "The biz is too close to another. (Nearest Biz -> ID:%i)", GetNearestBiz(playerid)); | |
if(!(0 <= interior <= 6)) | |
return ErrorMsg(playerid, "Wrong interior ID (%i). [only 0-6]", interior); // Change 6 if you added more type! | |
if(!interior && !NumberOfInterior) | |
return ErrorMsg(playerid, "There is no custom interior available. You need to create one at least."); | |
if(price < 10) | |
return ErrorMsg(playerid, "The price need to be at least 10$."); | |
if(level < 1) | |
return ErrorMsg(playerid, "The level need to be at least 1."); | |
new query[250]; | |
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `"SQL_TABLE_DATA"` (`X`, `Y`, `Z`, `Type`) VALUES ('%f', '%f', '%f', '%i')", x, y, z, interior); | |
mysql_tquery(MySQL, query, "OnBizCreated", "iiiifff", playerid, price, level, interior, x, y, z); | |
return 1; | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
PUBLIC:OnBizCreated(playerid, price, level, interior, Float:x, Float:y, Float:z) | |
{ | |
GetPlayerPos(playerid, x, y, z); | |
CurrentMaxBizID = cache_insert_id(); | |
new str[200], | |
str1[200]; | |
BizVW++; | |
BizInfo[CurrentMaxBizID][bX] = x; | |
BizInfo[CurrentMaxBizID][bY] = y; | |
BizInfo[CurrentMaxBizID][bZ] = z; | |
BizInfo[CurrentMaxBizID][bOpen] = | |
BizInfo[CurrentMaxBizID][bCreated] = true; | |
BizInfo[CurrentMaxBizID][bPrice] = price; | |
BizInfo[CurrentMaxBizID][bSQLID] = CurrentMaxBizID; | |
BizInfo[CurrentMaxBizID][bType] = interior; | |
BizInfo[CurrentMaxBizID][bLevel] = level; | |
BizInfo[CurrentMaxBizID][bVW] = BizVW; | |
BizInfo[CurrentMaxBizID][bEVW] = GetPlayerVirtualWorld(playerid); | |
BizInfo[CurrentMaxBizID][bEInt] = GetPlayerInterior(playerid); | |
format(BizInfo[CurrentMaxBizID][bOwner], MAX_PLAYER_NAME, "None"); | |
format(BizInfo[CurrentMaxBizID][bName], MAX_BIZ_NAME, "%s", InteriorName[interior]); | |
p_Biz[playerid][BizCreating] = CurrentMaxBizID; | |
AnnonceMsg(playerid, "You have creeated a biz ! Biz ID: %i - Price : %i$ - Level required %i", CurrentMaxBizID, price, level); | |
mysql_format(MySQL, str, sizeof(str), "INSERT INTO `"SQL_TABLE_INVESTOR"` (`SQLID`, `Name`) VALUES ('%i', '%e')", (BizInv[CurrentMaxBizID][iSQLID] = CurrentMaxBizID), "None"); | |
mysql_pquery(MySQL, str); | |
ResetInvestorData(CurrentMaxBizID); | |
if(interior) | |
{ | |
for(new i, j = sizeof(BizData); i < j; i++) | |
{ | |
if(BizData[i][Type] != interior) | |
continue; | |
format(str, sizeof(str), "\n%i - %s", i, BizData[i][Name]); | |
strcat(str1, str); | |
} | |
} | |
else | |
{ | |
foreach(new i : It_Interior) | |
{ | |
format(str, sizeof(str), "\n%i - %s", i, BizInterior[i][i_Name]); | |
strcat(str1, str); | |
} | |
} | |
Dialog_Show(playerid, DIALOG_CREATEBIZ, DIALOG_STYLE_LIST, InteriorName[interior], str1, "Choose", "Cancel"); | |
return 1; | |
} | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
DIALOG(DIALOG_CREATEBIZ) | |
{ | |
if(!response) | |
{ | |
goto failed; | |
failed: | |
{ | |
ResetBizData(p_Biz[playerid][BizCreating], false); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
} | |
if(BizInfo[p_Biz[playerid][BizCreating]][bType]) | |
{ | |
listitem += FirstIntID(BizInfo[p_Biz[playerid][BizCreating]][bType]); | |
if(BizInfo[p_Biz[playerid][BizCreating]][bInterior] >= INVALID_BIZ_ID) | |
{ | |
printf(FPRINT"Error during choosing an interior! (Biz ID: %i & Player: %s)", p_Biz[playerid][BizCreating], GetName(playerid, true)); | |
goto failed; | |
return 1; | |
} | |
BizInfo[p_Biz[playerid][BizCreating]][bInterior] = listitem; | |
BizInfo[p_Biz[playerid][BizCreating]][beX] = BizData[listitem][X]; | |
BizInfo[p_Biz[playerid][BizCreating]][beY] = BizData[listitem][Y]; | |
BizInfo[p_Biz[playerid][BizCreating]][beZ] = BizData[listitem][Z]; | |
} | |
else | |
{ | |
listitem++; | |
new a; | |
foreach(new i : It_Interior) | |
{ | |
a++; | |
if(a == listitem) | |
{ | |
BizInfo[p_Biz[playerid][BizCreating]][bInterior] = BizInterior[i][i_SQLID]; | |
BizInfo[p_Biz[playerid][BizCreating]][beX] = BizInterior[i][i_X]; | |
BizInfo[p_Biz[playerid][BizCreating]][beY] = BizInterior[i][i_Y]; | |
BizInfo[p_Biz[playerid][BizCreating]][beZ] = BizInterior[i][i_Z]; | |
format(BizInfo[p_Biz[playerid][BizCreating]][bName], MAX_BIZ_NAME, "%s", BizInterior[i][i_Name]); | |
break; | |
} | |
} | |
} | |
DestroyPickup(BizInfo[p_Biz[playerid][BizCreating]][bPickupID]); | |
SetBizInfos(p_Biz[playerid][BizCreating], true, true, true, true, true); | |
SaveBizData(p_Biz[playerid][BizCreating]); | |
EnterInABiz(playerid, p_Biz[playerid][BizCreating]); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:destroybiz(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new bizid; | |
if(sscanf(params, "i", bizid)) | |
return SCM(playerid, LBLUE, "[USE] /destroybiz [bizid] [-1: ALL]"); | |
if(!IsValidBiz(bizid) && bizid != -1) | |
return ErrorMsg(playerid, INVALID_BIZ_MSG); | |
if(bizid != -1) | |
{ | |
foreach(new i : Player) | |
{ | |
if(p_Biz[i][LastBizVisited] == bizid) | |
{ | |
SetPlayerPos(i, BizInfo[p_Biz[i][LastBizVisited]][bX], BizInfo[p_Biz[i][LastBizVisited]][bY], BizInfo[p_Biz[i][LastBizVisited]][bZ]); | |
SetPlayerInterior(i, 0); | |
SetPlayerVirtualWorld(i, 0); | |
ErrorMsg(i, "An administrator has destroyed the biz, you have been teleported out of the biz."); | |
printf(FPRINT"Admin | Player: %s | Teleported out of a biz (ID:%i) - Biz destroyed", GetName(i, true), p_Biz[i][LastBizVisited]); | |
} | |
} | |
ResetBizData(bizid); | |
AdminMsg(playerid, "You have destroyed the biz ID %i!", bizid); | |
} | |
else | |
{ | |
foreach(new i : It_Biz) | |
{ | |
foreach(new j : Player) | |
{ | |
if(p_Biz[j][LastBizVisited] == i) | |
{ | |
SetPlayerPos(j, BizInfo[p_Biz[j][LastBizVisited]][bX], BizInfo[p_Biz[j][LastBizVisited]][bY], BizInfo[p_Biz[j][LastBizVisited]][bZ]); | |
SetPlayerInterior(j, 0); | |
SetPlayerVirtualWorld(j, 0); | |
ErrorMsg(j, "An administrator has destroyed the biz, you have been teleported out of the biz."); | |
printf(FPRINT"Admin | Player: %s | Teleported out of a biz (ID:%i)", GetName(j, true), p_Biz[j][LastBizVisited]); | |
} | |
} | |
ResetBizData(i); | |
} | |
CurrentMaxBizID = 0; | |
AdminMsg(playerid, "You have destroyed all biz."); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:buybiz(playerid, params[]) | |
{ | |
if(PlayerHasABiz(playerid)) | |
return ErrorMsg(playerid, PLAYER_HAVE_BIZ); | |
new bizid = GetNearestBiz(playerid); | |
if(bizid == INVALID_BIZ_ID) | |
return ErrorMsg(playerid, NOT_NEAR_A_BIZ); | |
if(BizInfo[bizid][bBought]) | |
return ErrorMsg(playerid, "This biz have a owner."); | |
if(GetPlayerMoney(playerid) < BizInfo[bizid][bPrice]) | |
return ErrorMsg(playerid, "You need %i$ for buy this biz (Missing money: "RED_U"%i${CC0000})", BizInfo[bizid][bPrice], BizInfo[bizid][bPrice]-GetPlayerMoney(playerid)); | |
if(GetPlayerScore(playerid) < BizInfo[bizid][bLevel]) | |
return ErrorMsg(playerid, "You need to be at least level %i", BizInfo[bizid][bLevel]); | |
format(BizInfo[bizid][bOwner], MAX_PLAYER_NAME, "%s", GetName(playerid)); | |
BizInfo[bizid][bOpen] = | |
BizInfo[bizid][bBought] = true; | |
ResetInvestorData(bizid); | |
SetBizInfos(bizid, true, true, false, true); | |
GivePlayerMoney(playerid, -BizInfo[bizid][bPrice]); | |
if(BizInfo[bizid][bType]) | |
AnnonceMsg(playerid, "You have bought this biz! It cost %i$ and it's a the shop is: %s", BizInfo[bizid][bPrice], InteriorName[BizInfo[bizid][bType]][0]); | |
else | |
AnnonceMsg(playerid, "You have bought this biz! It cost %i$ and it's a the shop is: %s", BizInfo[bizid][bPrice], BizInterior[BizInfo[bizid][bInterior]][i_Name]); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:managebiz(playerid) | |
{ | |
// if(!PlayerHasABiz(playerid)) | |
// return 1; | |
return !PlayerHasABiz(playerid) ? ErrorMsg(playerid, PLAYER_HAVE_NOT_BIZ) : Dialog_Show(playerid, DIALOG_INFO_BIZ, DIALOG_STYLE_TABLIST, "Info", "View informations of your biz\nChange the enter price \t\t%i$\nOpen/Lock your biz\t\t%s\nDeposit money\nWithdraw money\nRename your biz", "Choose", "Cancel", BizInfo[GetPlayerBiz(playerid)][bEnterPrice], OpenFormatBiz[BizInfo[GetPlayerBiz(playerid)][bOpen]][0]); | |
} | |
DIALOG(DIALOG_INFO_BIZ) | |
{ | |
if(!response) | |
return 1; | |
new bizid = GetPlayerBiz(playerid); | |
if(bizid == INVALID_BIZ_ID) return Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 03", "Ok", ""); | |
switch(listitem) | |
{ | |
case 0: | |
{ | |
new str[550]; | |
format(str, sizeof(str), | |
LGOLD_U"- Biz ID: "WHITE_U"%i\n\ | |
"LGOLD_U"- Owner: "WHITE_U"%s\n\ | |
"LGOLD_U"- Door: "WHITE_U"%s\n\ | |
"LGOLD_U"- Resale price: "WHITE_U"%i$\n\ | |
"LGOLD_U"- Safe: "WHITE_U"%i$\n\ | |
"LGOLD_U"- Name: "WHITE_U"%s\n\ | |
"LGOLD_U"- Investor: "WHITE_U"%s\n\ | |
"LGOLD_U"- Object(s): "WHITE_U"%i", BizInfo[bizid][bSQLID], BizInfo[bizid][bOwner], OpenFormatBiz[BizInfo[bizid][bOpen]], floatround(BizInfo[bizid][bPrice]/2, floatround_round), BizInfo[bizid][bSafe], BizInfo[bizid][bName], BizInv[bizid][iName], BizInfo[bizid][bObjects]); | |
Dialog_Show(playerid, DIALOG_INFO1, DIALOG_STYLE_MSGBOX, "Info biz", str, "Ok", ""); | |
} | |
case 1: | |
{ | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_PRICECHANGER, DIALOG_STYLE_INPUT, "Change the price enter", "Change the enter price", "Confirm", "Cancel"); | |
} | |
case 2: | |
{ | |
if(GetNearestBiz(playerid) != bizid && p_Biz[playerid][LastBizVisited] != bizid) | |
return ErrorMsg(playerid, "You are too far away from your biz."); | |
if(BizInfo[bizid][bOpen]) | |
{ | |
BizInfo[bizid][bOpen] = false; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, RED, "You have locked your biz."); | |
SetBizInfos(bizid, .save = true, .pID = true); | |
} | |
else | |
{ | |
BizInfo[bizid][bOpen] = true; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, GREEN, "You have opened your biz."); | |
SetBizInfos(bizid, .save = true, .pID = true); | |
} | |
} | |
case 3: | |
{ | |
if(p_Biz[playerid][LastBizVisited] != bizid) | |
return ErrorMsg(playerid, NOT_INSIDE_A_BIZ); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.", "Confirm", "Cancel"); | |
} | |
case 4: | |
{ | |
if(p_Biz[playerid][LastBizVisited] != bizid) | |
return ErrorMsg(playerid, NOT_INSIDE_A_BIZ); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Withdraw money", "Set the amount of money to withdraw it.", "Confirm", "Cancel"); | |
} | |
case 5: | |
{ | |
if(p_Biz[playerid][LastBizVisited] != bizid && GetNearestBiz(playerid) != bizid) | |
return ErrorMsg(playerid, NOT_INSIDE_A_BIZ); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_NAME, DIALOG_STYLE_INPUT, "Name your biz", "Enter a name for your biz.", "Confirm", "Cancel"); | |
} | |
default : Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 04", "Ok", ""); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:closestbiz(playerid) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new a = GetNearestBiz(playerid); | |
return a == INVALID_BIZ_ID ? ErrorMsg(playerid, NOT_NEAR_A_BIZ) : AdminMsg(playerid, "The closest biz is ID %i - Name : '%s'", a, BizInfo[a][bName]); | |
} | |
// ============================================================================================================================================================================================ | |
CMD:sellbiz(playerid) | |
{ | |
if(!PlayerHasABiz(playerid)) | |
return ErrorMsg(playerid, PLAYER_HAVE_NOT_BIZ); | |
if(GetNearestBiz(playerid) != GetPlayerBiz(playerid)) | |
return ErrorMsg(playerid, "You need to be near your biz to do that."); | |
new bizid = GetNearestBiz(playerid); | |
BizInfo[bizid][bBought] = false; | |
BizInfo[bizid][bSafe] = | |
BizInfo[bizid][bEnterPrice] = 0; | |
format(BizInfo[bizid][bOwner], MAX_PLAYER_NAME, "None"); | |
if(!BizInfo[bizid][bType]) | |
format(BizInfo[bizid][bName], MAX_BIZ_NAME, "%s", BizInterior[BizInfo[bizid][bInterior]][i_Name]); | |
else | |
format(BizInfo[bizid][bName], MAX_BIZ_NAME, "%s", InteriorName[BizInfo[bizid][bType]][0]); | |
GivePlayerMoney(playerid, BizInfo[bizid][bPrice]/2); | |
AnnonceMsg(playerid, "You have sold your biz for %i$.", BizInfo[bizid][bPrice]/2); | |
SetBizInfos(bizid, true, true, false, true); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:editbiz(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new bizid; | |
if(sscanf(params, "i", bizid)) | |
return SCM(playerid, LBLUE, "[USE] /modifybiz [bizid]"); | |
if(!IsValidBiz(bizid)) | |
return ErrorMsg(playerid, INVALID_BIZ_MSG); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_INFO_BIZ_ADMIN, DIALOG_STYLE_TABLIST, "Info biz", "View informations of the biz\nChange the enter price \t%i\nOpen/Lock the biz\t%s\nChange the balance\nRename the biz\nSell the biz\nChange the interior\nChange the biz's type", "Choose", "Cancel", bizid, BizInfo[bizid][bEnterPrice], OpenFormatBiz[BizInfo[bizid][bOpen]]); | |
return 1; | |
} | |
DIALOG(DIALOG_INFO_BIZ_ADMIN) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 05", "Ok", ""); | |
new bizid = p_Biz[playerid][BizCreating]; | |
if(response) | |
{ | |
switch(listitem) | |
{ | |
case 0: | |
{ | |
new str[350]; | |
format(str, sizeof(str), | |
LGOLD_U"- Biz ID: "WHITE_U"%i\n\ | |
"LGOLD_U"- Owner : "WHITE_U"%s\n\ | |
"LGOLD_U"- Door : "WHITE_U"%s\n\ | |
"LGOLD_U"- Resale price : "WHITE_U"%i$\n\ | |
"LGOLD_U"- Safe : "WHITE_U"%i$\n\ | |
"LGOLD_U"- Name : "WHITE_U"%s\n\ | |
"LGOLD_U"- Investor : "WHITE_U"%s", BizInfo[bizid][bSQLID], BizInfo[bizid][bOwner], OpenFormatBiz[BizInfo[bizid][bOpen]], floatround(BizInfo[bizid][bPrice]/2, floatround_round), BizInfo[bizid][bSafe], BizInfo[bizid][bName], BizInv[bizid][iName]); | |
Dialog_Show(playerid, DIALOG_INFO1, DIALOG_STYLE_MSGBOX, "Info biz", str, "Ok", ""); | |
} | |
case 1: Dialog_Show(playerid, DIALOG_PRICECHANGER, DIALOG_STYLE_INPUT, "Change the price enter", "Change the enter price.\nActually : %i$", "Confirm", "Cancel", BizInfo[bizid][bEnterPrice]); | |
case 2: | |
{ | |
if(BizInfo[bizid][bOpen]) | |
{ | |
BizInfo[bizid][bOpen] = false; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, RED, "You have closed this biz."); | |
SetBizInfos(bizid, .save = true, .pID = true); | |
} | |
else | |
{ | |
BizInfo[bizid][bOpen] = true; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, GREEN, "You have opened this biz."); | |
SetBizInfos(bizid, .save = true, .pID = true); | |
} | |
} | |
case 3: Dialog_Show(playerid, DIALOG_BALANCE, DIALOG_STYLE_INPUT, "Modify balance", "Modify the current balance.\nActually : %i$", "Confirm", "Cancel", BizInfo[bizid][bSafe]); | |
case 4: Dialog_Show(playerid, DIALOG_NAME, DIALOG_STYLE_INPUT, "Name your biz", "Enter a name for the biz ID:%i (Actually : '%s')", "Confirm", "Cancel", bizid, BizInfo[bizid][bName]); | |
case 5: | |
{ | |
if(!BizInfo[bizid][bBought]) | |
return ErrorMsg(playerid, "This biz is free and can't be sell right now."); | |
BizInfo[bizid][bBought] = false; | |
format(BizInfo[bizid][bOwner], MAX_PLAYER_NAME, "None"); | |
format(BizInfo[bizid][bName], MAX_BIZ_NAME, "None"); | |
BizInfo[bizid][bSafe] = 0; | |
GivePlayerMoney(playerid, BizInfo[bizid][bPrice]/2); | |
SetBizInfos(bizid, true, false, false, true); | |
AdminMsg(playerid, "You have correctly sold biz ID:%i", bizid); | |
} | |
case 6: | |
{ | |
new str1[100], str[100]; | |
if(BizInfo[bizid][bType]) | |
{ | |
for(new i, j = sizeof(BizData); i < j; i++) | |
{ | |
if(BizData[i][Type] != BizInfo[bizid][bType]) | |
continue; | |
format(str, sizeof(str), "\n%i - %s", i, BizData[i][Name]); | |
strcat(str1, str); | |
} | |
} | |
else | |
{ | |
if(!NumberOfInterior) | |
return ErrorMsg(playerid, "There is no custom interior available. You need to create one at least."); | |
for(new i; i < CurrentMaxCustomInterior; i++) | |
{ | |
if(!IsValidInterior(i)) | |
continue; | |
format(str, sizeof(str), "\n%i - %s", i, BizInterior[i][i_Name]); | |
strcat(str1, str); | |
} | |
} | |
Dialog_Show(playerid, DIALOG_MODIFY_INTERIOR, DIALOG_STYLE_LIST, InteriorName[BizInfo[bizid][bType]][0], str1, "Choose", "Cancel"); | |
} | |
case 7: | |
{ | |
new str[250], | |
str1[120]; | |
for(new i; i < sizeof(InteriorName); i++) | |
{ | |
format(str1, sizeof(str1), LGOLD_U"Type %i : "WHITE_U"%s\n", i, InteriorName[i][0]); | |
strcat(str, str1); | |
} | |
Dialog_Show(playerid, DIALOG_MODIFY_TYPE, DIALOG_STYLE_LIST, "Change the biz's type", str, "Ok", "Cancel"); | |
} | |
default : Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", LBLUE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 06", "Ok", ""); | |
} | |
if(!BizInfo[bizid][bBought]) | |
SCM(playerid, RED, "[Admin] Be careful, nobody bought this biz!"); | |
} | |
else | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
DIALOG(DIALOG_MODIFY_INTERIOR) | |
{ | |
if(!response) | |
return Dialog_Show(playerid, DIALOG_INFO_BIZ_ADMIN, DIALOG_STYLE_TABLIST, "Info biz", "View informations of the biz\nChange the enter price \t%i\nOpen/Lock the biz\t%s\nChange the balance\nRename the biz\nSell the biz\nChange the interior\nChange the biz's type", "Choose", "Cancel", p_Biz[playerid][BizCreating], BizInfo[p_Biz[playerid][BizCreating]][bEnterPrice], OpenFormatBiz[BizInfo[p_Biz[playerid][BizCreating]][bOpen]]); | |
listitem = (listitem) + FirstIntID(BizInfo[p_Biz[playerid][BizCreating]][bType]); | |
BizInfo[p_Biz[playerid][BizCreating]][bInterior] = listitem; | |
if(BizInfo[p_Biz[playerid][BizCreating]][bInterior] >= INVALID_BIZ_ID) | |
{ | |
Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", LBLUE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 11", "Ok", ""); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
BizInfo[p_Biz[playerid][BizCreating]][beX] = BizData[listitem][X]; | |
BizInfo[p_Biz[playerid][BizCreating]][beY] = BizData[listitem][Y]; | |
BizInfo[p_Biz[playerid][BizCreating]][beZ] = BizData[listitem][Z]; | |
if(!BizInfo[p_Biz[playerid][BizCreating]][bBought]) | |
format(BizInfo[p_Biz[playerid][BizCreating]][bName], MAX_BIZ_NAME, "%s", BizInfo[p_Biz[playerid][BizCreating]][bType] ? InteriorName[BizInfo[p_Biz[playerid][BizCreating]][bType]][0] : BizInterior[BizInfo[p_Biz[playerid][BizCreating]][bInterior]][i_Name]); | |
SetBizInfos(p_Biz[playerid][BizCreating], true, true, true, true, true); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
DIALOG(DIALOG_MODIFY_TYPE) | |
{ | |
if(!response) | |
return Dialog_Show(playerid, DIALOG_INFO_BIZ_ADMIN, DIALOG_STYLE_TABLIST, "Info biz", "View informations of the biz\nChange the enter price \t%i\nOpen/Lock the biz\t%s\nChange the balance\nRename the biz\nSell the biz\nChange the interior\nChange the biz's type", "Choose", "Cancel", p_Biz[playerid][BizCreating], BizInfo[p_Biz[playerid][BizCreating]][bEnterPrice], OpenFormatBiz[BizInfo[p_Biz[playerid][BizCreating]][bOpen]]); | |
if(!NumberOfInterior && !listitem) | |
return ErrorMsg(playerid, "There is no custom interior available. You need to create one at least."); | |
BizInfo[p_Biz[playerid][BizCreating]][bType] = listitem; | |
new str1[300], | |
str[200]; | |
if(BizInfo[p_Biz[playerid][BizCreating]][bType]) | |
{ | |
for(new i, j = sizeof(BizData); i < j; i++) | |
{ | |
if(BizData[i][Type] != BizInfo[p_Biz[playerid][BizCreating]][bType]) | |
continue; | |
format(str, sizeof(str), "\n%i - %s", i, BizData[i][Name]); | |
strcat(str1, str); | |
} | |
} | |
else | |
{ | |
foreach(new i : It_Interior) | |
{ | |
format(str, sizeof(str), "\n%i - %s", i, BizInterior[i][i_Name]); | |
strcat(str1, str); | |
} | |
} | |
Dialog_Show(playerid, DIALOG_MODIFY_INTERIOR, DIALOG_STYLE_LIST, InteriorName[BizInfo[p_Biz[playerid][BizCreating]][bType]], str1, "Choose", ""); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:makeinvestor(playerid, params[]) | |
{ | |
if(!PlayerHasABiz(playerid)) | |
return ErrorMsg(playerid, PLAYER_HAVE_NOT_BIZ); | |
new target, bizid = GetPlayerBiz(playerid); | |
if(sscanf(params, "i", target)) | |
return SCM(playerid, LBLUE, "[USE] /makeinvestor [playerid] [-1 : Cancel investor]"); | |
if(!IsPlayerConnected(target) && target != -1) | |
return ErrorMsg(playerid, "This player isn't connected or be more accurate in the name."); | |
if(target == playerid) return ErrorMsg(playerid, "You can't make yourself as an investor."); | |
if(target == -1) | |
{ | |
if(IsPlayerConnected(target)) | |
AnnonceMsg(target, "You are no longer an investor of the %s's biz (%s)", GetName(playerid), BizInfo[bizid][bName]); | |
AnnonceMsg(playerid, "%s has been removed of your investor.", BizInv[bizid][iName]); | |
ResetInvestorData(bizid); | |
SetBizInfos(bizid, true, false, false, true); | |
return 1; | |
} | |
if(BizInv[bizid][iInves]) | |
return ErrorMsg(playerid, "You have already an investor : %s", BizInv[bizid][iName]); | |
format(BizInv[bizid][iName], MAX_PLAYER_NAME, "%s", GetName(target)); | |
BizInv[bizid][iInves] = | |
BizInv[bizid][iSafe] = true; | |
AnnonceMsg(playerid, "%s is now the new investor in your biz ('%s')", GetName(target), BizInfo[bizid][bName]); | |
AnnonceMsg(target, "%s made you the new investor in his/her biz ('%s')", GetName(target), BizInfo[bizid][bName]); | |
SetBizInfos(bizid, true, false, false, true); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:editinvestor(playerid) | |
{ | |
if(!PlayerHasABiz(playerid)) | |
return ErrorMsg(playerid, PLAYER_HAVE_NOT_BIZ); | |
if(!IsValidInvestor(GetPlayerBiz(playerid))) | |
return ErrorMsg(playerid, "You don't have investor."); | |
ShowDialogInvPerm(playerid, GetPlayerBiz(playerid)); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:aeditinvestor(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new bizid; | |
if(sscanf(params, "i", bizid)) | |
return SCM(playerid, LBLUE, "[USE] /amodifinvestor [bizid]"); | |
if(!IsValidBiz(bizid)) | |
return ErrorMsg(playerid, INVALID_BIZ_MSG); | |
if(!IsValidInvestor(bizid)) | |
return ErrorMsg(playerid, "This biz doesn't have an investor."); | |
ShowDialogInvPerm(playerid, bizid); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:ibiz(playerid) | |
{ | |
if(GetInvestorBizID(playerid) == INVALID_BIZ_ID) | |
return ErrorMsg(playerid, "You are not an investor of a biz."); | |
ShowDialogInvestor(playerid, GetInvestorBizID(playerid)); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:asetinvestor(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new bizid, | |
name[MAX_PLAYER_NAME]; | |
if(sscanf(params, "is[24]", bizid, name)) | |
return SCM(playerid, LBLUE, "[USE] /asetinvestor [bizid] [name]"); | |
if(!IsValidBiz(bizid)) | |
return ErrorMsg(playerid, INVALID_BIZ_MSG); | |
format(BizInv[bizid][iName], MAX_PLAYER_NAME, "%s", name); | |
new target = GetIDByName(name); | |
if(IsPlayerConnected(target)) | |
AnnonceMsg(target, "An admin made you investor of the biz %s (Owner: %s) !", BizInfo[bizid][bName], BizInfo[bizid][bOwner]); | |
if(IsPlayerConnected((target = GetIDByName(BizInfo[bizid][bOwner])))) | |
AnnonceMsg(target, "An admin made %s an investor of your biz !", name); | |
SetBizInfos(bizid, true, false, false, true); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:gotobiz(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new bizid; | |
if(sscanf(params, "i", bizid)) | |
return SCM(playerid, LBLUE, "[USE] /gotobiz [bizid]"); | |
if(!IsValidBiz(bizid)) | |
return ErrorMsg(playerid, INVALID_BIZ_MSG); | |
SetPlayerPos(playerid, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ]); | |
#if Streamer_Plugin | |
SetPlayerInterior(playerid, BizInfo[bizid][bEInt]); | |
SetPlayerVirtualWorld(playerid, BizInfo[bizid][bEVW]); | |
#else | |
SetPlayerInterior(playerid, 0); | |
SetPlayerVirtualWorld(playerid, 0); | |
#endif | |
AdminMsg(playerid, "You teleported on biz ID %i.", bizid); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:createinterior(playerid, params[]) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new b_Name[MAX_BIZ_NAME]; | |
if(sscanf(params, "s[50]", b_Name)) | |
return SCM(playerid, LBLUE, "[Use] /createinterior [Name]"); | |
new Float:x, | |
Float:y, | |
Float:z, | |
query[300]; | |
GetPlayerPos(playerid, x, y, z); | |
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `"SQL_TABLE_INTERIOR"` (`Name`, `X`, `Y`, `Z`, `InteriorID`) VALUES ('%e', '%f', '%f', '%f', '%i')", b_Name, x, y, z, GetPlayerInterior(playerid)); | |
mysql_tquery(MySQL, query, "OnPlayerCreateCustomInterior", "iifffs", playerid, GetPlayerInterior(playerid), x, y, z, b_Name); | |
return 1; | |
} | |
PUBLIC:OnPlayerCreateCustomInterior(playerid, interior, Float:x, Float:y, Float:z, name[MAX_BIZ_NAME]) | |
{ | |
CurrentMaxCustomInterior = cache_insert_id(); | |
BizInterior[CurrentMaxCustomInterior][i_SQLID] = CurrentMaxCustomInterior; | |
BizInterior[CurrentMaxCustomInterior][i_X] = x; | |
BizInterior[CurrentMaxCustomInterior][i_Y] = y; | |
BizInterior[CurrentMaxCustomInterior][i_Z] = z; | |
format(BizInterior[CurrentMaxCustomInterior][i_Name], MAX_BIZ_NAME, "%s", name); | |
BizInterior[CurrentMaxCustomInterior][i_Interior] = interior; | |
AnnonceMsg(playerid, "You have created a new interior called %s.", name); | |
Iter_Add(It_Interior, CurrentMaxCustomInterior); | |
NumberOfInterior++; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:editinterior(playerid, params[]) | |
{ | |
if(!CurrentMaxCustomInterior) | |
return ErrorMsg(playerid, "There is no custom interior available. You need to create one at least."); | |
new interior; | |
if(sscanf(params, "i", interior)) | |
{ | |
SCM(playerid, LBLUE, "[Use] /editinterior [interior id]"); | |
SCM(playerid, LBLUE, "[Use] Type -1 as [interior id] to delete all interiors."); | |
cmd_interiorlist(playerid); | |
return 1; | |
} | |
if(!IsValidInterior(interior) && interior != -1) | |
return ErrorMsg(playerid, "This interior id doesn't exist (id: %i).", interior); | |
if(interior == -1) | |
{ | |
AdminMsg(playerid, "All interiors will be deleted. It can take a time."); | |
for(new i; i <= CurrentMaxCustomInterior; i++) | |
{ | |
if(!IsValidInterior(i)) | |
continue; | |
new query[170]; | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_INTERIOR"` WHERE `SQLID` = '%d'", BizInterior[i][i_SQLID]); | |
mysql_pquery(MySQL, query); | |
KickPlayersFromAnInterior(i); | |
ResetInteriorData(i); | |
} | |
AdminMsg(playerid, "You have deleted all interior."); | |
NumberOfInterior = CurrentMaxCustomInterior = 0; | |
return 1; | |
} | |
Dialog_Show(playerid, DIALOG_EDIT_INTERIOR, DIALOG_STYLE_LIST, BizInterior[interior][i_Name], "- Rename the interior\n- Moove the interior's enter at your current position\n- Delete the interior", "Select", "Cancel"); | |
p_Biz[playerid][InteriorCreating] = interior; | |
return 1; | |
} | |
DIALOG(DIALOG_EDIT_INTERIOR) | |
{ | |
if(!response) | |
return 1; | |
new bizid = p_Biz[playerid][InteriorCreating]; | |
switch(listitem) | |
{ | |
case 0 : Dialog_Show(playerid, DIALOG_INTERIOR_RENAME, DIALOG_STYLE_INPUT, BizInterior[bizid][i_Name], "Rename the interior name.", "Ok", "Cancel", BizInterior[bizid][i_Name]); | |
case 1 : | |
{ | |
AdminMsg(playerid, "You moved the interior '%s' at your current positions & interior !", BizInterior[bizid][i_Name]); | |
new Float:x, | |
Float:y, | |
Float:z; | |
GetPlayerPos(playerid, x, y, z); | |
BizInterior[bizid][i_X] = x; | |
BizInterior[bizid][i_Y] = y; | |
BizInterior[bizid][i_Z] = z; | |
BizInterior[bizid][i_Interior] = GetPlayerInterior(playerid); | |
foreach(new i : Player) | |
{ | |
if(p_Biz[i][LastBizVisited] == INVALID_BIZ_ID) | |
continue; | |
if(BizInfo[p_Biz[i][LastBizVisited]][bInterior] == bizid) | |
{ | |
SetPlayerPos(i, x, y, z); | |
SetPlayerInterior(i, BizInterior[bizid][i_Interior]); | |
AnnonceMsg(i, "An administrator changes the interior %s, you have been teleported.", BizInterior[bizid][i_Name]); | |
} | |
} | |
new query[200]; | |
mysql_format(MySQL, query, sizeof(query), "UPDATE `"SQL_TABLE_INTERIOR"` SET `X` = '%f', `Y` = '%f', `Z` = '%f', `InteriorID` = '%i' WHERE `SQLID` = '%i'", x, y, z, BizInterior[bizid][i_Interior], BizInterior[bizid][i_SQLID]); | |
mysql_pquery(MySQL, query); | |
p_Biz[playerid][InteriorCreating] = -1; | |
} | |
case 2: | |
{ | |
AdminMsg(playerid, "You have deleted the interior '%s' !", BizInterior[bizid][i_Name]); | |
Iter_Remove(It_Interior, bizid); | |
KickPlayersFromAnInterior(bizid); | |
NumberOfInterior--; | |
new query[80]; | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_INTERIOR"` WHERE `SQLID` = '%d'", BizInterior[bizid][i_SQLID]); | |
mysql_pquery(MySQL, query); | |
ResetInteriorData(bizid); | |
p_Biz[playerid][InteriorCreating] = -1; | |
} | |
} | |
return 1; | |
} | |
DIALOG(DIALOG_INTERIOR_RENAME) | |
{ | |
if(!response) | |
return 1; | |
if(strlen(inputtext) > MAX_BIZ_NAME) | |
return Dialog_Show(playerid, DIALOG_INTERIOR_RENAME, DIALOG_STYLE_INPUT, BizInterior[p_Biz[playerid][InteriorCreating]][i_Name], "Rename the interior name.\n"RED_U"The name is too long.", "Ok", "Cancel", BizInterior[p_Biz[playerid][InteriorCreating]][i_Name]); | |
SCMF(playerid, X11_PEACH_PUFF_2, "You renamed the interior : '%s' -> '%s'", BizInterior[p_Biz[playerid][InteriorCreating]][i_Name], inputtext); | |
format(BizInterior[p_Biz[playerid][InteriorCreating]][i_Name], MAX_BIZ_NAME, "%s", inputtext); | |
new query[250]; | |
mysql_format(MySQL, query, sizeof(query), "UPDATE `"SQL_TABLE_INTERIOR"` SET `Name` = '%e' WHERE `SQLID` = '%i'", inputtext, BizInterior[p_Biz[playerid][InteriorCreating]][i_SQLID]); | |
mysql_pquery(MySQL, query); | |
foreach(new i : It_Biz) | |
SetBizInfos(i, .lID = true); | |
p_Biz[playerid][InteriorCreating] = -1; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:interiorlist(playerid) | |
{ | |
if(!IsPlayerAdmin(playerid)) | |
return 0; | |
new str[100], | |
str1[250]; | |
foreach(new i : It_Interior) | |
{ | |
format(str, sizeof(str), "ID: %i » %s\n", i, BizInterior[i][i_Name]); | |
strcat(str1, str); | |
} | |
Dialog_Show(playerid, NOTHING, DIALOG_STYLE_MSGBOX, "All custom interiors", str1, "Ok", ""); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
CMD:biz_object(playerid, params[]) | |
{ | |
if(!PlayerHasABiz(playerid)) | |
return ErrorMsg(playerid, "You don't own a biz."); | |
new p_biz = GetPlayerBiz(playerid); | |
if(p_Biz[playerid][LastBizVisited] != p_biz) | |
return ErrorMsg(playerid, "You must be in your own biz."); | |
new s_cmd[7], | |
parameter[10]; | |
if(sscanf(params, "s[7]S()[10]", s_cmd, parameter)) | |
return SCM(playerid, LBLUE, "[Use] /objects [create/move/delete/list]"); | |
if(!strcmp(s_cmd, "create")) | |
{ | |
if((BizInfo[p_biz][bObjects] + 1) >= MAX_OBJECTS_PER_BIZ) | |
return ErrorMsg(playerid, "You can't create more object in your biz."); | |
new modelid, | |
Float:DrawDistance; | |
if(sscanf(parameter, "iF(20.0)", modelid, DrawDistance)) | |
return SCM(playerid, LBLUE, "[Use] /cobject [modelid] [Optional: DrawDistance]"); | |
if(!IsValidObjectModel(modelid)) | |
return ErrorMsg(playerid, "Invalid object model ID."); | |
new Float:x, | |
Float:y, | |
Float:z, | |
vw, int; | |
GetPlayerPos(playerid, x, y, z); | |
#if Streamer_Plugin | |
p_Biz[playerid][ObjectEditing] = CreateDynamicObject(modelid, x, y, z, 0.0, 0.0, 0.0, (vw = GetPlayerVirtualWorld(playerid)), (int = GetPlayerInterior(playerid)), .drawdistance = DrawDistance); | |
SCM(playerid, LBLUE, "» You can edit the object. Press Echap to cancel your edition."); | |
SelectObject(playerid); | |
#else | |
p_Biz[playerid][ObjectEditing] = CreateObject(modelid, x, y, z, 0.0, 0.0, 0.0, DrawDistance); | |
SCM(playerid, LBLUE, "» You can edit the object. Press Echap to cancel your edition."); | |
SelectObject(playerid); | |
#endif | |
new query[450]; | |
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `"SQL_TABLE_OBJECTS"` (`X`, `Y`, `Z`, `rX`, `rY`, `rZ`) VALUES ('%f', '%f', '%f', '%f', '%f', '%f')", x, y, z, 0.0, 0.0, 0.0); | |
mysql_tquery(MySQL, query, "OnObjectCreated", "iiiiif", p_Biz[playerid][ObjectEditing], modelid, p_biz, vw, int, DrawDistance); | |
BizInfo[p_biz][bObjects]++; | |
return 1; | |
} | |
else if(!strcmp("move", s_cmd)) | |
{ | |
if(!BizInfo[p_biz][bObjects]) | |
return ErrorMsg(playerid, "You don't have any objects in your biz."); | |
SCM(playerid, LBLUE, "» You can edit the object. Press Echap to cancel your edition."); | |
SelectObject(playerid); | |
return 1; | |
} | |
else if(!strcmp("delete", s_cmd)) | |
{ | |
if(!BizInfo[p_biz][bObjects]) | |
return ErrorMsg(playerid, "You don't have any objects in your biz."); | |
SCM(playerid, LBLUE, "You can delete any objects"); | |
SelectObject(playerid); | |
p_Biz[playerid][ObjectEditing] = 0; | |
return 1; | |
} | |
else if(!strcmp("list", s_cmd)) | |
{ | |
if(!BizInfo[p_biz][bObjects]) | |
return ErrorMsg(playerid, "You don't have any objects in your biz."); | |
new | |
str[300], | |
s_str[100]; | |
foreach(new i : It_Objects) | |
{ | |
format(s_str, sizeof(s_str), LGOLD_U"» Object ID "WHITE_U"%i "LGOLD_U"\tModel : "WHITE_U"%i\n", i, BizObjects[i][oID]); | |
strcat(str, s_str); | |
} | |
format(s_str, sizeof(s_str), "Biz's object (total: %i)", BizInfo[p_biz][bObjects]); | |
Dialog_Show(playerid, BizInfo[p_biz][bVW], DIALOG_STYLE_MSGBOX, s_str, str, "Ok", "", BizInfo[p_biz][bObjects]); | |
return 1; | |
} | |
else | |
return ErrorMsg(playerid, "Incorrect parameter."); | |
} | |
#if !defined Streamer_Plugin | |
public OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ) | |
{ | |
if(!BizObjects[objectid][oID] && p_Biz[playerid][ObjectEditing] != -1) | |
return ErrorMsg(playerid, "This object cannot be edited by the filterscipt."); | |
if(BizObjects[objectid][oBiz] != GetPlayerBiz(playerid) && p_Biz[playerid][ObjectEditing] != -1) | |
return ErrorMsg(playerid, "You can't select an object which is not from your biz."); | |
if(!p_Biz[playerid][ObjectEditing]) | |
{ | |
new query[60]; | |
DestroyObject(objectid); | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_OBJECTS"` WHERE `SQLID` = '%d'", BizObjects[objectid][oSQLID]); | |
mysql_pquery(MySQL, query); | |
ResetObjectData(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
CancelEdit(playerid); | |
BizInfo[GetPlayerBiz(playerid)][bObjects]--; | |
} | |
else | |
{ | |
p_Biz[playerid][ObjectEditing] = objectid; | |
EditObject(playerid, objectid); | |
} | |
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(!playerobject && p_Biz[playerid][ObjectEditing] > -1) | |
{ | |
if(response == EDIT_RESPONSE_FINAL) | |
{ | |
SetDynamicObjectPos(objectid, x, y, z); | |
SetDynamicObjectRot(objectid, rx, ry, rz); | |
BizObjects[objectid][oX] = x; | |
BizObjects[objectid][oY] = y; | |
BizObjects[objectid][oZ] = z; | |
BizObjects[objectid][oRX] = rx; | |
BizObjects[objectid][oRY] = ry; | |
BizObjects[objectid][oRZ] = rz; | |
SaveObject(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
} | |
if(response == EDIT_RESPONSE_CANCEL) | |
{ | |
GetDynamicObjectPos(objectid, oldX, oldY, oldZ); | |
GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); | |
BizObjects[objectid][oX] = oldX; | |
BizObjects[objectid][oY] = oldY; | |
BizObjects[objectid][oZ] = oldZ; | |
BizObjects[objectid][oRX] = oldRotX; | |
BizObjects[objectid][oRY] = oldRotY; | |
BizObjects[objectid][oRZ] = oldRotZ; | |
SetDynamicObjectPos(objectid, oldX, oldY, oldZ); | |
SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); | |
SaveObject(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
} | |
} | |
} | |
#else | |
public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z) | |
{ | |
if(!BizObjects[objectid][oID] && p_Biz[playerid][ObjectEditing] != -1) | |
return ErrorMsg(playerid, "This object cannot be edited by the filterscipt."); | |
if(BizObjects[objectid][oBiz] != GetPlayerBiz(playerid) && p_Biz[playerid][ObjectEditing] != -1) | |
return ErrorMsg(playerid, "You can't select an object which is not from your biz."); | |
if(!p_Biz[playerid][ObjectEditing]) | |
{ | |
new query[60]; | |
DestroyDynamicObject(objectid); | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_OBJECTS"` WHERE `SQLID` = '%d'", BizObjects[objectid][oSQLID]); | |
mysql_pquery(MySQL, query); | |
ResetObjectData(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
CancelEdit(playerid); | |
BizInfo[GetPlayerBiz(playerid)][bObjects]--; | |
} | |
else | |
{ | |
p_Biz[playerid][ObjectEditing] = objectid; | |
EditDynamicObject(playerid, objectid); | |
} | |
return 1; | |
} | |
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) | |
{ | |
new Float:oldX, Float:oldY, Float:oldZ, | |
Float:oldRotX, Float:oldRotY, Float:oldRotZ; | |
if(p_Biz[playerid][ObjectEditing] > -1) | |
{ | |
if(response == EDIT_RESPONSE_FINAL && p_Biz[playerid][ObjectEditing] > -1) | |
{ | |
SetDynamicObjectPos(objectid, x, y, z); | |
SetDynamicObjectRot(objectid, rx, ry, rz); | |
BizObjects[objectid][oX] = x; | |
BizObjects[objectid][oY] = y; | |
BizObjects[objectid][oZ] = z; | |
BizObjects[objectid][oRX] = rx; | |
BizObjects[objectid][oRY] = ry; | |
BizObjects[objectid][oRZ] = rz; | |
SaveObject(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
} | |
if(response == EDIT_RESPONSE_CANCEL && p_Biz[playerid][ObjectEditing] > -1) | |
{ | |
GetDynamicObjectPos(objectid, oldX, oldY, oldZ); | |
GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); | |
BizObjects[objectid][oX] = oldX; | |
BizObjects[objectid][oY] = oldY; | |
BizObjects[objectid][oZ] = oldZ; | |
BizObjects[objectid][oRX] = oldRotX; | |
BizObjects[objectid][oRY] = oldRotY; | |
BizObjects[objectid][oRZ] = oldRotZ; | |
SetDynamicObjectPos(objectid, oldX, oldY, oldZ); | |
SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ); | |
SaveObject(objectid); | |
p_Biz[playerid][ObjectEditing] = -1; | |
} | |
} | |
} | |
#endif | |
PUBLIC:OnObjectCreated(objectid, modelid, bizid, VirtualWorld, interior, Float:Drawdistance) | |
{ | |
CurrentMaxObjects = cache_insert_id(); | |
BizObjects[objectid][oSQLID] = CurrentMaxObjects; | |
BizObjects[objectid][oID] = modelid; | |
BizObjects[objectid][oBiz] = bizid; | |
BizObjects[objectid][oVirtualWorld] = VirtualWorld; | |
BizObjects[objectid][oInterior] = interior; | |
BizObjects[objectid][oDrawDistance] = Drawdistance; | |
Iter_Add(It_Objects, objectid); | |
} | |
// ============================================================================================================================================================================================ | |
// ALIAS: | |
CMD:b_o(playerid, params[]) | |
return cmd_biz_object(playerid, params); | |
CMD:biz(playerid) | |
return cmd_managebiz(playerid); | |
CMD:cinterior(playerid, params[]) | |
return cmd_createinterior(playerid, params); | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
// =========================================================================================================================================================================================== | |
// Dialogs | |
// =========================================================================================================================================================================================== | |
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
DIALOG(DIALOG_INVESTOR) | |
{ | |
if(!response) return 1; | |
new bizid = GetInvestorBizID(playerid); | |
if(bizid == INVALID_BIZ_ID) | |
return Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 09", "Ok", ""); | |
switch(listitem) | |
{ | |
case 0: | |
{ | |
if(!BizInv[bizid][iSafe]) | |
return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
new str[250]; | |
format(str, sizeof(str), | |
LGOLD_U"- Biz ID: "WHITE_U"%i\n\ | |
"LGOLD_U"- Owner : "WHITE_U"%s\n\ | |
"LGOLD_U"- Door : "WHITE_U"%s\n\ | |
"LGOLD_U"- Resale price : "WHITE_U"%i$\n\ | |
"LGOLD_U"- Safe : "WHITE_U"%i$\n\ | |
"LGOLD_U"- Investor : "WHITE_U"%s", BizInfo[bizid][bSQLID], BizInfo[bizid][bOwner], OpenFormatBiz[BizInfo[bizid][bOpen]], floatround(BizInfo[bizid][bPrice]/2, floatround_round), BizInfo[bizid][bSafe], BizInv[bizid][iName]); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Info biz", str, "Ok", "Back"); | |
} | |
case 2: | |
{ | |
if(!BizInv[bizid][iEnterPrice]) | |
return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_PRICECHANGER, DIALOG_STYLE_INPUT, "Change the price enter", "Change the enter price", "Confirm", "Cancel"); | |
} | |
case 1: | |
{ | |
if(!BizInv[bizid][iLock]) | |
return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
if(GetNearestBiz(playerid) != bizid && p_Biz[playerid][LastBizVisited] != bizid) return ErrorMsg(playerid, "You are too far away from the biz."); | |
if(BizInfo[bizid][bOpen]) | |
{ | |
BizInfo[bizid][bOpen] = false; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, RED, "You have locked the biz."); | |
SetBizInfos(bizid, .pID = true); | |
} | |
else | |
{ | |
BizInfo[bizid][bOpen] = true; | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
SCM(playerid, GREEN, "You have opened the biz."); | |
SetBizInfos(bizid, .pID = true); | |
} | |
} | |
case 4: | |
{ | |
if(!BizInv[bizid][iDeposit]) | |
return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
if(p_Biz[playerid][LastBizVisited] != bizid) | |
return ErrorMsg(playerid, "You need to be inside in the biz to do that."); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.", "Confirm", "Cancel"); | |
} | |
case 5: | |
{ | |
if(!BizInv[bizid][iWithdraw]) return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
if(p_Biz[playerid][LastBizVisited] != bizid) | |
return ErrorMsg(playerid, "You need to be inside in the biz to do that."); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Withdraw money", "Set the amount of money to withdraw it.", "Confirm", "Cancel"); | |
} | |
case 3: | |
{ | |
if(!BizInv[bizid][iRename]) return ShowDialogInvestor(playerid, bizid), ErrorMsg(playerid, "You are not allowed to do that."); | |
if(p_Biz[playerid][LastBizVisited] != bizid && GetNearestBiz(playerid) != bizid) return ErrorMsg(playerid, "You have to far away from the biz."); | |
p_Biz[playerid][BizCreating] = bizid; | |
Dialog_Show(playerid, DIALOG_NAME, DIALOG_STYLE_INPUT, "Name your biz", "Enter a name for your biz.", "Confirm", "Cancel"); | |
} | |
default : Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 10", "Ok", ""); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_MODIFY_INVESTOR) | |
{ | |
if(!response) return 1; | |
new bizid = p_Biz[playerid][BizCreating]; | |
if(p_Biz[playerid][BizCreating] == -1) return Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 08", "Ok", ""); | |
switch(listitem) | |
{ | |
case 0: | |
{ | |
if(!BizInv[bizid][iSafe]) | |
{ | |
BizInv[bizid][iSafe] = true; | |
SCMF(playerid, GREEN, "%s can now access to the biz's informations.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iSafe] = false; | |
SCMF(playerid, RED, "%s can not anymore access to the biz's informations.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
case 1: | |
{ | |
if(!BizInv[bizid][iLock]) | |
{ | |
BizInv[bizid][iLock] = true; | |
SCMF(playerid, GREEN, "%s can lock your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iLock] = false; | |
SCMF(playerid, RED, "%s can not anymore lock your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
case 2: | |
{ | |
if(!BizInv[bizid][iEnterPrice]) | |
{ | |
BizInv[bizid][iEnterPrice] = true; | |
SCMF(playerid, GREEN, "%s can modify the enter price of your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iEnterPrice] = false; | |
SCMF(playerid, RED, "%s can not anymore modify the enter price of your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
case 3: | |
{ | |
if(!BizInv[bizid][iRename]) | |
{ | |
BizInv[bizid][iRename] = true; | |
SCMF(playerid, GREEN, "%s can now rename your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iRename] = false; | |
SCMF(playerid, RED, "%s can not anymore rename your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
case 4: | |
{ | |
if(!BizInv[bizid][iDeposit]) | |
{ | |
BizInv[bizid][iDeposit] = true; | |
SCMF(playerid, GREEN, "%s can deposit in your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iDeposit] = false; | |
SCMF(playerid, RED, "%s can not anymore deposit in your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
case 5: | |
{ | |
if(!BizInv[bizid][iWithdraw]) | |
{ | |
BizInv[bizid][iWithdraw] = true; | |
SCMF(playerid, GREEN, "%s can withdraw in your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
else | |
{ | |
BizInv[bizid][iWithdraw] = false; | |
SCMF(playerid, RED, "%s can not anymore withdraw in your biz.", BizInv[bizid][iName]); | |
ShowDialogInvPerm(playerid, bizid); | |
} | |
} | |
default : return Dialog_Show(playerid, ERROR, DIALOG_STYLE_MSGBOX, "Unknown", WHITE_U"An error occured. Take a screenshoot [F8] and inform Dayrion.\nError ID: 07", "Ok", ""); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_INFO) | |
{ | |
if(response) | |
{ | |
p_Biz[playerid][BizCreating] = -1; | |
} | |
else | |
{ | |
if(!strcmp(BizInv[p_Biz[playerid][BizCreating]][iName], GetName(playerid)) && p_Biz[playerid][BizCreating] != -1) cmd_ibiz(playerid); | |
else cmd_managebiz(playerid); | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_PRICECHANGER) | |
{ | |
if(response) | |
{ | |
if(!BizInfo[p_Biz[playerid][BizCreating]][bBought]) return ErrorMsg(playerid, "Nobody have buy this biz, you can't change the enter price."); | |
if(strval(inputtext) > cellmax || strval(inputtext) < 0) return Dialog_Show(playerid, DIALOG_PRICECHANGER, DIALOG_STYLE_INPUT, "Change the price enter", "Change the enter price\n"RED_U"The value should be between 1$ & %i$", "Confirm", "Cancel", cellmax); | |
SCMF(playerid, X11_NAVAJO_WHITE_2, "You have changed the enter price : %i$ -> %i$", BizInfo[p_Biz[playerid][BizCreating]][bEnterPrice], strval(inputtext)); | |
BizInfo[p_Biz[playerid][BizCreating]][bEnterPrice] = strval(inputtext); | |
SetBizInfos(p_Biz[playerid][BizCreating], true, false, false, true); | |
p_Biz[playerid][BizCreating] = -1; | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_DEPOSIT) | |
{ | |
if(response) | |
{ | |
if(strval(inputtext) == 0) return Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.\n"RED_U"Please use only numeric values or wrong values [Between: 1$-%i$]", "Confirm", "Cancel", cellmax); | |
if(strval(inputtext) > GetPlayerMoney(playerid)) return Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.\n"RED_U"You don't have this amount of money.", "Confirm", "Cancel"); | |
if(strval(inputtext) < 0) return Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.\n"RED_U"Please use only positive values.", "Confirm", "Cancel"); | |
if(strval(inputtext) + BizInfo[p_Biz[playerid][BizCreating]][bSafe] > MAX_BALANCE) return Dialog_Show(playerid, DIALOG_DEPOSIT, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to deposit it.\n"RED_U"This amount exceed the limit.", "Confirm", "Cancel"); | |
BizInfo[p_Biz[playerid][BizCreating]][bSafe] += strval(inputtext); | |
SCMF(playerid, X11_CORNSILK_2, "You deposit %i$. (Balance : %i$)", strval(inputtext), BizInfo[p_Biz[playerid][BizCreating]][bSafe]); | |
GivePlayerMoney(playerid, -strval(inputtext)); | |
SetMoneyGameText(playerid, -strval(inputtext)); | |
if(BizInv[p_Biz[playerid][BizCreating]][iInves]) | |
{ | |
if(!IsPlayerConnectedByName(BizInv[p_Biz[playerid][BizCreating]][iName]) || !IsPlayerConnectedByName(BizInfo[p_Biz[playerid][BizCreating]][bOwner])) | |
{ | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
else | |
{ | |
GivePlayerMoney(GetIDByName(BizInv[p_Biz[playerid][BizCreating]][iName]), floatround(strval(inputtext)*0.1)); | |
if(IsPlayerConnectedByName(BizInfo[p_Biz[playerid][BizCreating]][bOwner])) | |
SCMF(GetIDByName(BizInfo[p_Biz[playerid][BizCreating]][bOwner]), RED, "%s won %i$.", BizInv[p_Biz[playerid][BizCreating]][iName], floatround(strval(inputtext)*0.1), strval(inputtext)); | |
SetMoneyGameText(playerid, strval(inputtext)); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
} | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_WITHDRAW) | |
{ | |
if(response) | |
{ | |
if(strval(inputtext) == 0) return Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to withdraw it.\n"RED_U"Please use only numeric values.", "Confirm", "Cancel"); | |
if(strval(inputtext) > BizInfo[p_Biz[playerid][BizCreating]][bSafe]) return Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to withdraw it.\n"RED_U"You don't have this amount of money in your biz.", "Confirm", "Cancel"); | |
if(strval(inputtext) < 0) return Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to withdraw it.\n"RED_U"Please use only positive values.", "Confirm", "Cancel"); | |
if(BizInfo[p_Biz[playerid][BizCreating]][bSafe] - strval(inputtext) < 0) return Dialog_Show(playerid, DIALOG_WITHDRAW, DIALOG_STYLE_INPUT, "Deposit money", "Set the amount of money to withdraw it.\n"RED_U"You don't have this money on your biz.", "Confirm", "Cancel"); | |
BizInfo[p_Biz[playerid][BizCreating]][bSafe] -= strval(inputtext); | |
SetMoneyGameText(playerid, strval(inputtext)); | |
SCMF(playerid, X11_CORNSILK_2, "You withdraw %i$. (Balance : %i$)", strval(inputtext), BizInfo[p_Biz[playerid][BizCreating]][bSafe]); | |
GivePlayerMoney(playerid, strval(inputtext)); | |
p_Biz[playerid][BizCreating] = -1; | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_NAME) | |
{ | |
if(response) | |
{ | |
if(strlen(inputtext) > MAX_BIZ_NAME && IsPlayerAdmin(playerid)) return Dialog_Show(playerid, DIALOG_NAME, DIALOG_STYLE_INPUT, "Name your biz", "Enter a name for the biz ID:%i (Actually: '%s').\n"RED_U"The name is too long.", "Confirm", "Cancel", p_Biz[playerid][BizCreating], BizInfo[p_Biz[playerid][BizCreating]][bName]); | |
else if(strlen(inputtext) > MAX_BIZ_NAME && !IsPlayerAdmin(playerid)) return Dialog_Show(playerid, DIALOG_NAME, DIALOG_STYLE_INPUT, "Name your biz", "Enter a name for your biz.\n"RED_U"The name is too long.", "Confirm", "Cancel"); | |
SCMF(playerid, X11_PEACH_PUFF_2, "You renamed your biz : '%s' -> '%s'", BizInfo[p_Biz[playerid][BizCreating]][bName], inputtext); | |
format(BizInfo[p_Biz[playerid][BizCreating]][bName], MAX_BIZ_NAME, inputtext); | |
SetBizInfos(p_Biz[playerid][BizCreating], true, false, false, true); | |
p_Biz[playerid][BizCreating] = -1; | |
} | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
DIALOG(DIALOG_BALANCE) | |
{ | |
if(response) | |
{ | |
if(strval(inputtext) == 0) return Dialog_Show(playerid, DIALOG_BALANCE, DIALOG_STYLE_INPUT, "Modify balance", "Modify the current balance.\nActually : %i$\n"RED_U"Please use only numeric values [Between: 1$-%i$].", "Confirm", "Cancel", BizInfo[p_Biz[playerid][BizCreating]][bSafe], cellmax); | |
if(strval(inputtext) < 0) return Dialog_Show(playerid, DIALOG_BALANCE, DIALOG_STYLE_INPUT, "Deposit money", "Modify the current balance.\nActually : %i$\n"RED_U"Please use only positive values.", "Confirm", "Cancel", BizInfo[p_Biz[playerid][BizCreating]][bSafe]); | |
AdminMsg(playerid, "You have changed the current balance of the biz ID:%i » %i$ -> %i$", p_Biz[playerid][BizCreating], BizInfo[p_Biz[playerid][BizCreating]][bSafe], strval(inputtext)); | |
BizInfo[p_Biz[playerid][BizCreating]][bSafe] = strval(inputtext); | |
p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
else p_Biz[playerid][BizCreating] = -1; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
// =========================================================================================================================================================================================== | |
// Functions | |
// =========================================================================================================================================================================================== | |
// ============================================================================================================================================================================================ | |
SaveBizData(bizid) | |
{ | |
if(!IsValidBiz(bizid)) | |
return 1; | |
new query[750]; | |
strcat(query, "UPDATE `"SQL_TABLE_DATA"` SET `Type` = '%i', `Interior` = '%i', `Level` = '%i', `Price` = '%i', `Safe` = '%i', `EnterPrice` = '%i', `VW` = '%i', `Bought` = '%i', `Open` = '%i', `Investor` = '%i', `Objects` = '%i',"); | |
strcat(query, " `X` = '%0.5f', `Y` = '%0.5f', `Z` = '%0.5f', `eX` = '%0.5f', `eY` = '%0.5f', `eZ` = '%0.5f', `eVW` = '%i', `eInter` = '%i', `Owner` = '%e', `BizName` = '%e' WHERE SQLID = '%i'"); | |
mysql_format(MySQL, query, sizeof(query), query, BizInfo[bizid][bType], BizInfo[bizid][bInterior], BizInfo[bizid][bLevel], BizInfo[bizid][bPrice], BizInfo[bizid][bSafe], BizInfo[bizid][bEnterPrice], BizInfo[bizid][bVW], BizInfo[bizid][bBought], | |
BizInfo[bizid][bOpen], BizInfo[bizid][bInvestor], BizInfo[bizid][bObjects], BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], BizInfo[bizid][beX], BizInfo[bizid][beY], BizInfo[bizid][beZ], BizInfo[bizid][bEVW], BizInfo[bizid][bEInt], BizInfo[bizid][bOwner], BizInfo[bizid][bName], BizInfo[bizid][bSQLID]); | |
mysql_pquery(MySQL, query); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
SaveObject(objectid) | |
{ | |
#if Streamer_Plugin | |
if(!IsValidDynamicObject(objectid)) | |
return 1; | |
#else | |
if(!IsValidObject(objectid)) | |
return 1; | |
#endif | |
new query[300]; | |
mysql_format(MySQL, query, sizeof(query), "UPDATE `"SQL_TABLE_OBJECTS"` SET `Biz` = '%i', `ID` = '%i', `Interior` = '%i', `VirtualWorld` = '%i', `X` = '%0.5f', `Y` = '%0.5f', `Z` = '%0.5f', `rX` = '%0.5f', `rY` = '%0.5f', `rZ` = '%0.5f', `DrawDistance` = '%0.5f' WHERE SQLID = '%i'", | |
BizObjects[objectid][oBiz], BizObjects[objectid][oID], BizObjects[objectid][oInterior], BizObjects[objectid][oVirtualWorld], BizObjects[objectid][oX], BizObjects[objectid][oY], BizObjects[objectid][oZ], BizObjects[objectid][oRX], BizObjects[objectid][oRY], BizObjects[objectid][oRZ], | |
BizObjects[objectid][oDrawDistance], BizObjects[objectid][oSQLID]); | |
mysql_tquery(MySQL, query); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
ResetObjectData(objectid) | |
{ | |
new reset_obj[E_OBJECTS]; | |
BizObjects[objectid] = reset_obj; | |
// BizObjects[objectid][oSID] = | |
// BizObjects[objectid][oSQLID] = | |
// BizObjects[objectid][oBiz] = | |
// BizObjects[objectid][oVirtualWorld] = | |
// BizObjects[objectid][oInterior] = | |
// BizObjects[objectid][oID] = 0; | |
// BizObjects[objectid][oX] = | |
// BizObjects[objectid][oY] = | |
// BizObjects[objectid][oZ] = | |
// BizObjects[objectid][oRX] = | |
// BizObjects[objectid][oRY] = | |
// BizObjects[objectid][oRZ] = | |
// BizObjects[objectid][oDrawDistance] = 0.0; | |
} | |
// ============================================================================================================================================================================================ | |
FirstIntID(typeid) | |
{ | |
for(new i, j = sizeof(BizData); i < j; i++) | |
{ | |
if(BizData[i][Type] != typeid) | |
continue; | |
return i; | |
} | |
return INVALID_BIZ_ID; | |
} | |
// ============================================================================================================================================================================================ | |
ResetBizData(bizid, label = true) | |
{ | |
new query[60]; | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_INVESTOR"` WHERE `SQLID` = '%d'", BizInv[bizid][iSQLID]); | |
mysql_pquery(MySQL, query); | |
if(label) | |
{ | |
#if !Streamer_Plugin | |
Delete3DTextLabel(BizInfo[bizid][bLabelID]); | |
Delete3DTextLabel(BizInfo[bizid][bLabelEnterID]); | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
DestroyPickup(BizInfo[bizid][bPickupEnter]); | |
#else | |
DestroyDynamic3DTextLabel(BizInfo[bizid][bLabelID]); | |
DestroyDynamic3DTextLabel(BizInfo[bizid][bLabelEnterID]); | |
DestroyDynamicPickup(BizInfo[bizid][bPickupID]); | |
DestroyDynamicPickup(BizInfo[bizid][bPickupEnter]); | |
#endif | |
} | |
new reset_bizData[E_BIZ_VALUES]; | |
reset_bizData[bSQLID] = bizid; | |
BizInfo[bizid] = reset_bizData; | |
BizInfo[bizid][bInterior] = | |
BizInfo[bizid][bPickupID] = | |
BizInfo[bizid][bPickupEnter] = | |
_:BizInfo[bizid][bLabelID] = | |
_:BizInfo[bizid][bLabelEnterID] = -1; | |
BizInfo[bizid][bOpen] = true; | |
format(BizInfo[bizid][bOwner], MAX_PLAYER_NAME, "None"); | |
format(BizInfo[bizid][bName], MAX_BIZ_NAME, "None"); | |
mysql_format(MySQL, query, sizeof(query), "DELETE FROM `"SQL_TABLE_DATA"` WHERE `SQLID` = '%d'", BizInfo[bizid][bSQLID]); | |
mysql_pquery(MySQL, query); | |
} | |
// ============================================================================================================================================================================================ | |
SaveInvestorData(bizid) | |
{ | |
if(!(IsValidInvestor(bizid) && IsValidBiz(bizid))) | |
return 1; | |
new query[350]; | |
mysql_format(MySQL, query, sizeof(query), "UPDATE `"SQL_TABLE_INVESTOR"` SET `Safe` = '%i', `Lock` = '%i', `EnterPrice` = '%i', `Rename` = '%i', `Deposit` = '%i', `Withdraw` = '%i', `Name` = '%e' WHERE SQLID = '%i'", | |
BizInv[bizid][iSafe], BizInv[bizid][iLock], BizInv[bizid][iEnterPrice], BizInv[bizid][iRename], BizInv[bizid][iDeposit], BizInv[bizid][iWithdraw], BizInv[bizid][iName], BizInv[bizid][iSQLID]); | |
mysql_pquery(MySQL, query); | |
return 1; | |
} | |
ResetInteriorData(interiorid) | |
{ | |
if(!IsValidInterior(interiorid)) | |
return 1; | |
BizInterior[interiorid][i_X] = | |
BizInterior[interiorid][i_Y] = | |
BizInterior[interiorid][i_Z] = 0.0; | |
BizInterior[interiorid][i_SQLID] = | |
BizInterior[interiorid][i_Interior] = 0; | |
format(BizInterior[interiorid][i_Name], MAX_BIZ_NAME, "NoName"); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
bool:PlayerHasABiz(playerid) | |
{ | |
static | |
name[MAX_PLAYER_NAME]; | |
GetPlayerName(playerid, name, sizeof(name)); | |
foreach(new i : It_Biz) | |
{ | |
if(!strcmp(name, BizInfo[i][bOwner])) | |
return true; | |
} | |
return false; | |
} | |
// ============================================================================================================================================================================================ | |
GetName(const playerid, id = false) | |
{ | |
static | |
str[MAX_PLAYER_NAME+9]; | |
GetPlayerName(playerid, str, sizeof(str)); | |
if(id) | |
format(str, sizeof(str), "%s (ID: %i)", str, playerid); | |
return str; | |
} | |
// ============================================================================================================================================================================================ | |
SCMF(playerid, couleur, const msg[], va_args<>) | |
{ | |
static | |
string[145]; | |
va_format(string, sizeof(string), msg, va_start<3>); | |
return SendClientMessage(playerid, couleur, string); | |
} | |
SCM(playerid, color, const msg[]) | |
return SendClientMessage(playerid, color, msg); | |
// ============================================================================================================================================================================================ | |
ErrorMsg(playerid, const msg[], va_args<>) | |
{ | |
new message[190]; | |
static const premsg[] = "[Error] %s"; | |
if(numargs() == 2) | |
return SCMF(playerid, 0xCC0000FF, premsg, msg); | |
va_format(message, sizeof(message), msg, va_start<2>); | |
return SCMF(playerid, 0xCC0000FF, "[Error] %s", message); | |
} | |
AdminMsg(playerid, const msg[], va_args<>) | |
{ | |
new message[190]; | |
static const premsg[] = "» [Admin]{ffb31a} %s"; | |
if(numargs() == 2) | |
return SCMF(playerid, 0xFF0000FF, premsg, msg); | |
va_format(message, sizeof(message), msg, va_start<2>); | |
return SCMF(playerid, 0xFF0000FF, "» [Admin]{ffb31a} %s", message); | |
} | |
AnnonceMsg(playerid, const message[], va_args<>) | |
{ | |
static msg[190]; | |
static const premsg[] = "[Biz info] {b3e0ff}%s"; | |
if(numargs() == 2) return SCMF(playerid, 0x66a3ffff, premsg, message); | |
va_format(msg, sizeof(msg), message, va_start<2>); | |
return SCMF(playerid, 0x66a3ffff, premsg, msg); | |
} | |
// ============================================================================================================================================================================================ | |
SetBizInfos(bizid, bool:save = false, bool:pID = false, bool:pEnter = false, bool:lID = false, bool:lEnter = false) | |
{ | |
if(!BizInfo[bizid][bCreated]) | |
return printf(FPRINT"An error occured during setting infos of the biz ID: %i | Error ID: 07", bizid); | |
static | |
str[120]; | |
#if !Streamer_Plugin | |
if(pID) | |
{ | |
if(BizInfo[bizid][bPickupID] != -1) | |
DestroyPickup(BizInfo[bizid][bPickupID]); | |
if(!BizInfo[bizid][bBought]) | |
{ | |
if(BizInfo[bizid][bOpen]) | |
BizInfo[bizid][bPickupID] = CreatePickup(ICON_BIZ_PENDING_OPEN, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], -1); | |
else | |
BizInfo[bizid][bPickupID] = CreatePickup(ICON_BIZ_PENDING_CLOSED, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], -1); | |
} | |
else | |
{ | |
if(BizInfo[bizid][bOpen]) | |
BizInfo[bizid][bPickupID] = CreatePickup(ICON_BIZ_OPEN, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], -1); | |
else | |
BizInfo[bizid][bPickupID] = CreatePickup(ICON_BIZ_LOCKED, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], -1); | |
} | |
} | |
if(pEnter) | |
{ | |
if(BizInfo[bizid][bPickupEnter] != -1) | |
DestroyPickup(BizInfo[bizid][bPickupEnter]); | |
BizInfo[bizid][bPickupEnter] = CreatePickup(ICON_BIZ_INTERIOR, 1, BizInfo[bizid][beX], BizInfo[bizid][beY], BizInfo[bizid][beZ], BizInfo[bizid][bVW]); | |
} | |
if(lID) | |
{ | |
if(!BizInfo[bizid][bBought]) | |
format(str, sizeof(str), "~ FOR SALE ~\n"LBLUE_U"%s\nLevel : "WHITE_U"%i\n"LBLUE_U"Price : "WHITE_U"%i$", BizInfo[bizid][bName], BizInfo[bizid][bLevel], BizInfo[bizid][bPrice]); | |
else | |
format(str, sizeof(str), "%s\nOwner : "WHITE_U"%s\n"LBLUE_U"Enter price : "WHITE_U"%i$\n"LBLUE_U"Investor : "WHITE_U"%s", BizInfo[bizid][bName], BizInfo[bizid][bOwner], BizInfo[bizid][bEnterPrice], BizInv[bizid][iName]); | |
if(_:BizInfo[bizid][bLabelID] != -1) | |
Delete3DTextLabel(BizInfo[bizid][bLabelID]); | |
BizInfo[bizid][bLabelID] = Create3DTextLabel(str, LBLUE, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], 20.0, 0, 0); | |
} | |
if(lEnter) | |
{ | |
if(_:BizInfo[bizid][bLabelEnterID] != -1) | |
Delete3DTextLabel(BizInfo[bizid][bLabelEnterID]); | |
BizInfo[bizid][bLabelEnterID] = Create3DTextLabel("~ Press F to exit ~", WHITE, BizInfo[bizid][beX], BizInfo[bizid][beY], BizInfo[bizid][beZ], 20.0, BizInfo[bizid][bVW], 0); | |
} | |
#else | |
if(pID) | |
{ | |
if(BizInfo[bizid][bPickupID] != -1) | |
DestroyDynamicPickup(BizInfo[bizid][bPickupID]); | |
if(!BizInfo[bizid][bBought]) | |
{ | |
if(BizInfo[bizid][bOpen]) | |
BizInfo[bizid][bPickupID] = CreateDynamicPickup(ICON_BIZ_PENDING_OPEN, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], .worldid = BizInfo[bizid][bEVW], .interiorid = BizInfo[bizid][bEInt]); | |
else | |
BizInfo[bizid][bPickupID] = CreateDynamicPickup(ICON_BIZ_PENDING_CLOSED, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], .worldid = BizInfo[bizid][bEVW], .interiorid = BizInfo[bizid][bEInt]); | |
} | |
else | |
{ | |
if(BizInfo[bizid][bOpen]) | |
BizInfo[bizid][bPickupID] = CreateDynamicPickup(ICON_BIZ_OPEN, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], .worldid = BizInfo[bizid][bEVW], .interiorid = BizInfo[bizid][bEInt]); | |
else | |
BizInfo[bizid][bPickupID] = CreateDynamicPickup(ICON_BIZ_LOCKED, 1, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], .worldid = BizInfo[bizid][bEVW], .interiorid = BizInfo[bizid][bEInt]); | |
} | |
} | |
if(pEnter) | |
{ | |
if(BizInfo[bizid][bPickupEnter] != -1) | |
DestroyDynamicPickup(BizInfo[bizid][bPickupEnter]); | |
BizInfo[bizid][bPickupEnter] = CreateDynamicPickup(ICON_BIZ_INTERIOR, 1, BizInfo[bizid][beX], BizInfo[bizid][beY], BizInfo[bizid][beZ], .worldid = BizInfo[bizid][bVW]); | |
} | |
if(lID) | |
{ | |
if(!BizInfo[bizid][bBought]) | |
format(str, sizeof(str), "~ FOR SALE ~\n"LBLUE_U"%s\nLevel : "WHITE_U"%i\n"LBLUE_U"Price : "WHITE_U"%i$", BizInfo[bizid][bName], BizInfo[bizid][bLevel], BizInfo[bizid][bPrice]); | |
else | |
format(str, sizeof(str), "%s\nOwner : "WHITE_U"%s\n"LBLUE_U"Enter price : "WHITE_U"%i$\n"LBLUE_U"Investor : "WHITE_U"%s", BizInfo[bizid][bName], BizInfo[bizid][bOwner], BizInfo[bizid][bEnterPrice], BizInv[bizid][iName]); | |
if(_:BizInfo[bizid][bLabelID] != -1) | |
DestroyDynamic3DTextLabel(BizInfo[bizid][bLabelID]); | |
BizInfo[bizid][bLabelID] = CreateDynamic3DTextLabel(str, LBLUE, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ], 20.0, .worldid = BizInfo[bizid][bEVW], .interiorid = BizInfo[bizid][bEInt]); | |
} | |
if(lEnter) | |
{ | |
if(_:BizInfo[bizid][bLabelEnterID] != -1) | |
DestroyDynamic3DTextLabel(BizInfo[bizid][bLabelEnterID]); | |
BizInfo[bizid][bLabelEnterID] = CreateDynamic3DTextLabel("~ Press F to exit ~", WHITE, BizInfo[bizid][beX], BizInfo[bizid][beY], BizInfo[bizid][beZ], 20.0, .worldid = BizInfo[bizid][bVW]); | |
} | |
#endif | |
if(save) | |
SaveBizData(bizid); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
GetNearestBiz(playerid) | |
{ | |
new near = INVALID_BIZ_ID, | |
p_int = GetPlayerInterior(playerid), | |
p_vw = GetPlayerVirtualWorld(playerid); | |
foreach(new i : It_Biz) | |
{ | |
#if Streamer_Plugin | |
if(BizInfo[i][bEInt] != p_int || BizInfo[i][bEVW] != p_vw) | |
continue; | |
#endif | |
if(!IsPlayerInRangeOfPoint(playerid, 3.0, BizInfo[i][bX], BizInfo[i][bY], BizInfo[i][bZ])) | |
continue; | |
near = i; | |
} | |
return near; | |
} | |
// ============================================================================================================================================================================================ | |
IsNearABiz(playerid) | |
return GetNearestBiz(playerid) == INVALID_BIZ_ID ? false : true; | |
// ============================================================================================================================================================================================ | |
EnterInABiz(playerid, bizid) | |
{ | |
new IntA = BizInfo[bizid][bInterior]; | |
if(BizInfo[bizid][bType]) | |
{ | |
SetPlayerPos(playerid, BizData[IntA][X], BizData[IntA][Y], BizData[IntA][Z]); | |
SetPlayerInterior(playerid, BizData[IntA][Interior]); | |
} | |
else | |
{ | |
SetPlayerPos(playerid, BizInterior[IntA][i_X], BizInterior[IntA][i_Y], BizInterior[IntA][i_Z]); | |
SetPlayerInterior(playerid, BizInterior[IntA][i_Interior]); | |
} | |
SetPlayerVirtualWorld(playerid, BizInfo[bizid][bVW]); | |
p_Biz[playerid][LastBizVisited] = bizid; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
ExitABiz(playerid, bizid) | |
{ | |
#if Streamer_Plugin | |
SetPlayerInterior(playerid, BizInfo[bizid][bEInt]); | |
SetPlayerVirtualWorld(playerid, BizInfo[bizid][bEVW]); | |
#else | |
SetPlayerInterior(playerid, 0); | |
SetPlayerVirtualWorld(playerid, 0); | |
#endif | |
SetPlayerPos(playerid, BizInfo[bizid][bX], BizInfo[bizid][bY], BizInfo[bizid][bZ]); | |
p_Biz[playerid][LastBizVisited] = INVALID_BIZ_ID; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
GetPlayerBiz(playerid) | |
{ | |
new biz = INVALID_BIZ_ID; | |
foreach(new i : It_Biz) | |
{ | |
if(!strcmp(BizInfo[i][bOwner], GetName(playerid))) | |
biz = i; | |
else | |
continue; | |
} | |
return biz; | |
} | |
// ============================================================================================================================================================================================ | |
forward TeleChecking(playerid); | |
public TeleChecking(playerid) | |
{ | |
if(GetPlayerInterior(playerid) > 0 && GetPlayerVirtualWorld(playerid) > 214799999) | |
return 1; | |
SCMF(playerid, RED, "An error occured. You left a biz by teleportation."); | |
printf(FPRINT"Admin | %s left a biz by teleportation | p_Biz ID:[LastBizVisited]%i", GetName(playerid, true), p_Biz[playerid][LastBizVisited]); | |
p_Biz[playerid][LastBizVisited] = INVALID_BIZ_ID; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
IsPlayerConnectedByName(const name[]) | |
{ | |
foreach(new i : Player) | |
{ | |
if(strcmp(name, GetName(i))) continue; | |
return true; | |
} | |
return false; | |
} | |
// ============================================================================================================================================================================================ | |
GetIDByName(const name[]) | |
{ | |
foreach(new i : Player) | |
{ | |
if(!strcmp(GetName(i), name)) | |
return i; | |
} | |
printf("[FS] Error : No player found for the name '%s'.", name); | |
return INVALID_PLAYER_ID; | |
} | |
// ============================================================================================================================================================================================ | |
ShowDialogInvPerm(playerid, bizid) | |
{ | |
new final[1000], str[150]; | |
if(BizInv[bizid][iSafe]) format(str, sizeof(str), "Access to biz's informations : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), WHITE_U "Access to biz's informations : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iLock]) format(str, sizeof(str), "\nCan lock the biz : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan lock the biz : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iEnterPrice]) format(str, sizeof(str), "\nModfiy the enter price : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nModfiy the enter price : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iRename]) format(str, sizeof(str), "\nRename the biz : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nRename the biz : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iDeposit]) format(str, sizeof(str), "\nCan deposit : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan deposit : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iWithdraw]) format(str, sizeof(str), "\nCan withdraw : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan withdraw : "RED_U"Unauthorized"), strcat(final, str); | |
format(str, sizeof(str), WHITE_U "Modify investor's rights of %s", BizInv[bizid][iName]); | |
Dialog_Show(playerid, DIALOG_MODIFY_INVESTOR, DIALOG_STYLE_LIST, str, final, "Choose", "Cancel"); | |
p_Biz[playerid][BizCreating] = bizid; | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
ShowDialogInvestor(playerid, bizid) | |
{ | |
new final[1000], str[150]; | |
if(BizInv[bizid][iSafe]) format(str, sizeof(str), "Access to biz's informations : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), WHITE_U "Access to biz's informations : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iLock]) format(str, sizeof(str), "\nCan lock the biz : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan lock the biz : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iEnterPrice]) format(str, sizeof(str), "\nModfiy the enter price : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nModfiy the enter price : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iRename]) format(str, sizeof(str), "\nRename the biz : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nRename the biz : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iDeposit]) format(str, sizeof(str), "\nCan deposit : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan deposit : "RED_U"Unauthorized"), strcat(final, str); | |
if(BizInv[bizid][iWithdraw]) format(str, sizeof(str), "\nCan withdraw : "GREEN_U"Authorized"), strcat(final, str); | |
else format(str, sizeof(str), "\nCan withdraw : "RED_U"Unauthorized"), strcat(final, str); | |
format(str, sizeof(str), WHITE_U "Info the %s's biz.", BizInfo[bizid][bOwner]); | |
Dialog_Show(playerid, DIALOG_INVESTOR, DIALOG_STYLE_LIST, str, final, "Choose", "Cancel"); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
ResetInvestorData(bizid) | |
{ | |
format(BizInv[bizid][iName], MAX_PLAYER_NAME, "Nobody"); | |
new reset_investor[E_INVESTOR_VALUES]; | |
BizInv[bizid] = reset_investor; | |
SaveInvestorData(bizid); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
GetInvestorBizID(playerid) | |
{ | |
foreach(new i : It_Investor) | |
{ | |
if(strcmp(GetName(playerid), BizInv[i][iName])) | |
continue; | |
return i; | |
} | |
return INVALID_BIZ_ID; | |
} | |
// ============================================================================================================================================================================================ | |
SetMoneyGameText(playerid, amount) | |
{ | |
new str[10]; | |
if(amount < 0) | |
format(str, sizeof(str), "~r~%-i$", amount); | |
else | |
format(str, sizeof(str), "~g~+%i$", amount); | |
GameTextForPlayer(playerid, str, 1, 1); | |
return 1; | |
} | |
// ============================================================================================================================================================================================ | |
KickPlayersFromAnInterior(interiorid) | |
{ | |
new id; | |
foreach(new i : It_Biz) | |
{ | |
if(BizInfo[i][bInterior] != interiorid) | |
continue; | |
foreach(new p : Player) | |
{ | |
if(p_Biz[p][LastBizVisited] == i) | |
{ | |
SetPlayerPos(p, BizInfo[p_Biz[p][LastBizVisited]][bX], BizInfo[p_Biz[p][LastBizVisited]][bY], BizInfo[p_Biz[p][LastBizVisited]][bZ]); | |
#if Streamer_Plugin | |
SetPlayerInterior(p, BizInfo[p_Biz[p][LastBizVisited]][bEInt]); | |
SetPlayerVirtualWorld(p, BizInfo[p_Biz[p][LastBizVisited]][bEVW]); | |
#else | |
SetPlayerInterior(p, 0); | |
SetPlayerVirtualWorld(p, 0); | |
#endif | |
ErrorMsg(p, "An administrator has deleted this interior, you have been teleported out of the biz."); | |
printf(FPRINT"%s has been teleported out of the biz : %i - An admin deleted an interior", GetName(p, true), p_Biz[i][LastBizVisited]); | |
p_Biz[p][LastBizVisited] = -1; | |
} | |
} | |
BizInfo[i][bInterior] = BizInfo[i][bType] = 1; | |
BizInfo[i][beX] = BizData[1][X]; | |
BizInfo[i][beY] = BizData[1][Y]; | |
BizInfo[i][beZ] = BizData[1][Z]; | |
format(BizInfo[i][bName], MAX_BIZ_NAME, "Deleted_Interior"); | |
SetBizInfos(i, true, _, true, true, true); | |
if(BizInfo[i][bBought]) | |
if(IsPlayerConnected((id = GetIDByName(BizInfo[i][bOwner])))) | |
AnnonceMsg(id, "The interior of your biz has been deleted. Contact an administrator to change it. The new interior is %s.", BizData[1][Name]); | |
} | |
} | |
// ============================================================================================================================================================================================ | |
bool:IsValidObjectModel(modelid) | |
{ | |
switch(modelid) | |
{ | |
case 615 .. 661 : return true; | |
case 664 : return true; | |
case 669 .. 698 : return true; | |
case 700 .. 792 : return true; | |
case 800 .. 906 : return true; | |
case 910 .. 964 : return true; | |
case 966 .. 998 : return true; | |
case 1000 .. 1193 : return true; | |
case 1207 .. 1325 : return true; | |
case 1327 .. 1572 : return true; | |
case 1574 .. 1698 : return true; | |
case 1700 .. 2882 : return true; | |
case 2885 .. 3135 : return true; | |
case 3167 .. 3175 : return true; | |
case 3178 : return true; | |
case 3187 : return true; | |
case 3193 : return true; | |
case 3214 : return true; | |
case 3221 : return true; | |
case 3241 .. 3244 : return true; | |
case 3246 : return true; | |
case 3249 .. 3250 : return true; | |
case 3252 .. 3253 : return true; | |
case 3255 .. 3265 : return true; | |
case 3267 .. 3347 : return true; | |
case 3350 .. 3415 : return true; | |
case 3417 .. 3428 : return true; | |
case 3430 .. 3609 : return true; | |
case 3612 .. 3783 : return true; | |
case 3785 .. 3869 : return true; | |
case 3872 .. 3882 : return true; | |
case 3884 .. 3888 : return true; | |
case 3890 .. 3973 : return true; | |
case 3975 .. 4541 : return true; | |
case 4550 .. 4762 : return true; | |
case 4806 .. 5084 : return true; | |
case 5086 .. 5089 : return true; | |
case 5105 .. 5375 : return true; | |
case 5390 .. 5682 : return true; | |
case 5703 .. 6010 : return true; | |
case 6035 .. 6253 : return true; | |
case 6255 .. 6257 : return true; | |
case 6280 .. 6347 : return true; | |
case 6349 .. 6525 : return true; | |
case 6863 .. 7392 : return true; | |
case 7415 .. 7973 : return true; | |
case 7978 .. 9193 : return true; | |
case 9205 .. 9267 : return true; | |
case 9269 .. 9478 : return true; | |
case 9482 .. 10310 : return true; | |
case 10315 .. 10744 : return true; | |
case 10750 .. 11417 : return true; | |
case 11420 .. 11753 : return true; | |
case 12800 .. 13563 : return true; | |
case 13590 .. 13667 : return true; | |
case 13672 .. 13890 : return true; | |
case 14383 .. 14528 : return true; | |
case 14530 .. 14554 : return true; | |
case 14556 : return true; | |
case 14558 .. 14643 : return true; | |
case 14650 .. 14657 : return true; | |
case 14660 .. 14695 : return true; | |
case 14699 .. 14728 : return true; | |
case 14735 .. 14765 : return true; | |
case 14770 .. 14856 : return true; | |
case 14858 .. 14883 : return true; | |
case 14885 .. 14898 : return true; | |
case 14900 .. 14903 : return true; | |
case 15025 .. 15064 : return true; | |
case 16000 .. 16790 : return true; | |
case 17000 .. 17474 : return true; | |
case 17500 .. 17974 : return true; | |
case 17976 : return true; | |
case 17978 : return true; | |
case 18000 .. 18036 : return true; | |
case 18038 .. 18102 : return true; | |
case 18104 .. 18105 : return true; | |
case 18109 : return true; | |
case 18112 : return true; | |
case 18200 .. 18859 : return true; | |
case 18862 .. 19198 : return true; | |
case 19200 .. 19274 : return true; | |
case 19277 .. 19595 : return true; | |
case 19597 .. 19999 : return true; | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Dont work... crash my pawn compiler :(