[Tutorial] Business System
#1

(DISCLAIMER - THIS SHIT PROBABLY WON'T WORK AS IT IS, BUT CAN HELP YOU BUILD YOUR OWN BUSINESS SYSTEM.)

Business System


Introduction

Credits:
Code:
Y_Ini - Y_less
YCMD - Y_Less
Streamer - Incognito
Jack_Leslie - Some functions are based off of his Bone County RP script.
Skills needed:

Code:
You must know how to use YCMD(ZCMD is fine too I guess)
You must be pretty good with y_ini
Items needed:
Code:
YCMD
Y_ini
Incognito Streamer
A register system
Time to learn all of this
Includes/Defines/Code

You will need this included:
pawn Code:
#include <YSI\y_commands>
#include <YSI\y_ini>
You will need this defined:
pawn Code:
#define SCM SendClientMessage //Saves time
#define BPATH "/Business/%i.ini" //Defines the path y_ini will use to find the .ini file we need.
//The below colors do not have to be used, but you will need to edit the script if you choose not to use them.
#define NEWBIE_COLOR        0x7DAEFFFF
#define TCOLOR_WHITE        0xFFFFFF00
#define COLOR_GRAD1         0xB4B5B7FF
#define COLOR_GRAD2         0xBFC0C2FF
#define COLOR_GRAD3         0xCBCCCEFF
#define COLOR_GRAD4         0xD8D8D8FF
#define COLOR_GRAD5         0xE3E3E3FF
#define COLOR_GRAD6         0xF0F0F0FF
#define COLOR_FADE1         0xE6E6E6E6
#define COLOR_FADE2         0xC8C8C8C8
#define COLOR_FADE3         0xAAAAAAAA
#define COLOR_FADE4         0x8C8C8C8C
#define COLOR_FADE5         0x6E6E6E6E
#define COLOR_PURPLE        0xC2A2DAAA
#define COLOR_RED           0xAA3333AA
#define COLOR_GREY          0xAFAFAFAA
#define COLOR_GREEN         0x33AA33AA
#define COLOR_BLACK         0x000001FF
#define COLOR_BLUE          0x007BD0FF
#define COLOR_LIGHTORANGE   0xFFA100FF
#define COLOR_FLASH         0xFF000080
#define COLOR_LIGHTRED      0xFF6347AA
#define COLOR_LIGHTBLUE     0x01FCFFC8
#define COLOR_LIGHTGREEN    0x9ACD32AA
#define COLOR_YELLOW        0xFFFF00AA
#define COLOR_LIGHTYELLOW   0xFFFF91FF
#define COLOR_YELLOW2       0xF5DEB3AA
#define COLOR_WHITE         0xFFFFFFAA
You will need this new Defines:
pawn Code:
new InsideBiz;[MAX_PLAYERS]//This define will be used later to find out what business we are in.
We will need to create a enum:
pawn Code:
enum bInfo {
    bOwned,
    bPrice,
    bOwner[MAX_PLAYER_NAME],
    bType,
    bLocked,
    bMoney,
    Float:bEntranceX,
    Float:bEntranceY,
    Float:bEntranceZ,
    Float:bEntranceA,
    Float:bExitX,
    Float:bExitY,
    Float:bExitZ,
    Float:bExitA,
    bInt,
    bWorld,
    bInsideInt,
    bInsideWorld,
    bInsideIcon,
    bOutsideIcon,
    bName[128]
}
new BusinessInfo[200][bInfo];//We are creating a define to use for our Enum.
Put this under your PlayerInfo enum:
pawn Code:
BizID// You'll also have to save this, and load this..I expect you know how to do this.
Okay now let's get to the actual code.

You will need this under public OnGameModeInit():
pawn Code:
new str[40];
    for(new idx = 1; idx < sizeof(BusinessInfo); idx++)//Creates a loop, that goes through all of the businesses.
    {
        format(str, sizeof(str), BPATH, idx);//formats the file path, with the biz ID
        INI_ParseFile(str, "loadbiz_%s", .bExtra = true, .extra = idx );//This is very hard to explain, but it basically loads the info from the file(More in Y_Less y_ini tutorial.)
        BusinessInfo[idx][bOutsideIcon] = CreateDynamicPickup(1272, 1, BusinessInfo[idx][bEntranceX], BusinessInfo[idx][bEntranceY], BusinessInfo[idx][bEntranceZ], BusinessInfo[idx][bWorld]); //Creates a pickup at the business entrance.
        BusinessInfo[idx][bInsideIcon] = CreateDynamicPickup(1272, 1, BusinessInfo[idx][bExitX], BusinessInfo[idx][bExitY], BusinessInfo[idx][bExitZ], BusinessInfo[idx][bInsideWorld]); //Creates a pickup at the exit(Inside the interior)
    }
You will need this under public OnGameModeExit():
pawn Code:
for(new id = 1; id < sizeof(BusinessInfo); id++)//Loops through the businesses.
    {
        if(BusinessInfo[id][bPrice] == 0) break;//Breaks the loop if the price is 0(Meaning it doesn't exist)
        SaveBusiness(id);//Calls the SaveBusiness function.
    }
You will now need to create a public function(Not going to explain this much, I expect you know how to save stuff using y_ini):
pawn Code:
forward SaveBusiness(id);
public SaveBusiness(id)
{
    new file4[40];
    format(file4, sizeof(file4), BPATH, id);
    new INI:File = INI_Open(file4);
    INI_SetTag(File,"data");
    INI_WriteInt(File,"bOwned", BusinessInfo[id][bOwned]);
    INI_WriteInt(File,"bPrice", BusinessInfo[id][bPrice]);
    INI_WriteString(File,"bOwner", BusinessInfo[id][bOwner]);
    INI_WriteInt(File,"bType", BusinessInfo[id][bType]);
    INI_WriteInt(File,"bLocked", BusinessInfo[id][bLocked]);
    INI_WriteInt(File,"bMoney", BusinessInfo[id][bMoney]);
    INI_WriteFloat(File,"bEntranceX", BusinessInfo[id][bEntranceX]);
    INI_WriteFloat(File,"bEntranceY", BusinessInfo[id][bEntranceY]);
    INI_WriteFloat(File,"bEntranceZ", BusinessInfo[id][bEntranceZ]);
    INI_WriteFloat(File,"bEntranceA", BusinessInfo[id][bEntranceA]);
    INI_WriteFloat(File,"bExitX", BusinessInfo[id][bExitX]);
    INI_WriteFloat(File,"bExitY", BusinessInfo[id][bExitY]);
    INI_WriteFloat(File,"bExitZ", BusinessInfo[id][bExitZ]);
    INI_WriteFloat(File,"bExitA", BusinessInfo[id][bExitA]);
    INI_WriteInt(File,"bInt", BusinessInfo[id][bInt]);
    INI_WriteInt(File,"bWorld", BusinessInfo[id][bWorld]);
    INI_WriteInt(File,"bInsideInt", BusinessInfo[id][bInsideInt]);
    INI_WriteInt(File,"bInsideWorld", BusinessInfo[id][bInsideWorld]);
    INI_WriteString(File,"bName", BusinessInfo[id][bName]);
    INI_Close(File);
    return 1;
}
Now you will need a loading function(As stated above, this tutorial assumes you understand loading/saving in y_ini. If you do not read up on other tutorials):
pawn Code:
forward loadbiz_data(idx, name[], value[]);
public loadbiz_data(idx, name[], value[])
{
    INI_Int("bOwned", BusinessInfo[idx][bOwned]);
    INI_Int("bPrice", BusinessInfo[idx][bPrice]);
    INI_String("bOwner", BusinessInfo[idx][bOwner], 24);
    INI_Int("bType", BusinessInfo[idx][bType]);
    INI_Int("bLocked", BusinessInfo[idx][bLocked]);
    INI_Int("bMoney", BusinessInfo[idx][bMoney]);
    INI_Float("bEntranceX", BusinessInfo[idx][bEntranceX]);
    INI_Float("bEntranceY", BusinessInfo[idx][bEntranceY]);
    INI_Float("bEntranceZ", BusinessInfo[idx][bEntranceZ]);
    INI_Float("bEntranceA", BusinessInfo[idx][bEntranceA]);
    INI_Float("bExitX", BusinessInfo[idx][bExitX]);
    INI_Float("bExitY", BusinessInfo[idx][bExitY]);
    INI_Float("bExitZ", BusinessInfo[idx][bExitZ]);
    INI_Float("bExitA", BusinessInfo[idx][bExitA]);
    INI_Int("bInt", BusinessInfo[idx][bInt]);
    INI_Int("bWorld", BusinessInfo[idx][bWorld]);
    INI_Int("bInsideInt", BusinessInfo[idx][bInsideInt]);
    INI_Int("bInsideWorld", BusinessInfo[idx][bInsideWorld]);
    INI_String("bName", BusinessInfo[idx][bName], 128);
    return 1;
}
Okay now to the actual commands.

The first command we need is "/createbiz":
pawn Code:
YCMD:createbiz(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SCM(playerid, COLOR_GREY, "You aren't authorized to use this command!");//Checks if player is a RCON admin..Change this with your admin system.

    new price, level, id, int, world, string[128], Float:Xi, Float:Yi, Float:Zi, inti;//All the new defines we will need.
    if(sscanf(params, "dddfff", price, level, inti, Xi, Yi, Zi)) return SendClientMessage(playerid, COLOR_GREY, "YCMD: /createbiz [price] [type] [interior] [X] [Y] [Z]");//d stands for integer, f stands for float.

    if(level < 0 || level > 4) return SendClientMessage(playerid, COLOR_GREY, "YCMD: Type cannot go below 0, or above 10.");//

    if(price < 10000) return SendClientMessage(playerid, COLOR_GREY, "YCMD: Price cannot go below $10,000.");// Check if the price is below 1000, if it is it will return a message saying it.

    for(new h = 1;h < sizeof(BusinessInfo);h++)//Loops through all the businesses
    {
        if(BusinessInfo[h][bPrice] == 0)//Checks if the price of a business is 0.
        {
            id = h;
            break;//It stops looping if it is.
        }
    }
    new Float:X,Float:Y,Float:Z,Float:A;//More new defines.
    GetPlayerPos(playerid, X, Y, Z);//Gets your player position, and saves it into floats.
    GetPlayerFacingAngle(playerid, A);//Gets your facing angle, and saves it into a float.
    int = GetPlayerInterior(playerid);//Gets your interior, and saves it into a integer.
    world = GetPlayerVirtualWorld(playerid);//Gets your Virtual World, and saves it into a integer
    BusinessInfo[id][bInsideInt] = inti;
    BusinessInfo[id][bExitX] = Xi;
    BusinessInfo[id][bExitY] = Yi;
    BusinessInfo[id][bExitZ] = Zi;
   
    BusinessInfo[id][bOwned] = 0;
    BusinessInfo[id][bPrice] = price;
    BusinessInfo[id][bType] = level;
    BusinessInfo[id][bEntranceX] = X;
    BusinessInfo[id][bEntranceY] = Y;
    BusinessInfo[id][bEntranceZ] = Z;
    BusinessInfo[id][bEntranceA] = A;
    BusinessInfo[id][bLocked] = 1;

    BusinessInfo[id][bInt] =int;
    BusinessInfo[id][bWorld] =world;
    BusinessInfo[id][bInsideWorld] =id;
   
    format(string, sizeof(string), "None");
    strmid(BusinessInfo[id][bName], string, 0, strlen(string), 255);
   
    if(BusinessInfo[id][bOutsideIcon]) DestroyDynamicPickup(BusinessInfo[id][bOutsideIcon]);
    if(BusinessInfo[id][bInsideIcon]) DestroyDynamicPickup(BusinessInfo[id][bInsideIcon]);
    BusinessInfo[id][bOutsideIcon] = CreateDynamicPickup(1272, 1, BusinessInfo[id][bEntranceX], BusinessInfo[id][bEntranceY], BusinessInfo[id][bEntranceZ], BusinessInfo[id][bWorld]);//Creates a pickup at your location
    BusinessInfo[id][bInsideIcon] = CreateDynamicPickup(1272, 1, BusinessInfo[id][bExitX], BusinessInfo[id][bExitY], BusinessInfo[id][bExitZ], BusinessInfo[id][bInsideWorld]);//Creates a pickup at your location
    new file4[40];
    format(file4, sizeof(file4), BPATH, id);
    new INI:File = INI_Open(file4);
    INI_SetTag(File,"data");
    INI_WriteInt(File,"bOwned", BusinessInfo[id][bOwned]);
    INI_WriteInt(File,"bPrice", BusinessInfo[id][bPrice]);
    INI_WriteString(File,"bOwner", BusinessInfo[id][bOwner]);
    INI_WriteInt(File,"bType", BusinessInfo[id][bType]);
    INI_WriteInt(File,"bLocked", BusinessInfo[id][bLocked]);
    INI_WriteInt(File,"bMoney", BusinessInfo[id][bMoney]);
    INI_WriteFloat(File,"bEntranceX", BusinessInfo[id][bEntranceX]);
    INI_WriteFloat(File,"bEntranceY", BusinessInfo[id][bEntranceY]);
    INI_WriteFloat(File,"bEntranceZ", BusinessInfo[id][bEntranceZ]);
    INI_WriteFloat(File,"bEntranceA", BusinessInfo[id][bEntranceA]);
    INI_WriteFloat(File,"bExitX", BusinessInfo[id][bExitX]);
    INI_WriteFloat(File,"bExitY", BusinessInfo[id][bExitY]);
    INI_WriteFloat(File,"bExitZ", BusinessInfo[id][bExitZ]);
    INI_WriteFloat(File,"bExitA", BusinessInfo[id][bExitA]);
    INI_WriteInt(File,"bInt", BusinessInfo[id][bInt]);
    INI_WriteInt(File,"bWorld", BusinessInfo[id][bWorld]);
    INI_WriteInt(File,"bInsideInt", BusinessInfo[id][bInsideInt]);
    INI_WriteInt(File,"bInsideWorld", BusinessInfo[id][bInsideWorld]);
    INI_WriteString(File,"bName", BusinessInfo[id][bName]);
    INI_Close(File);
    return 1;
}
The "/deletebiz" command:
pawn Code:
YCMD:deletebiz(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return 1; // Checks if a player is a RCON admin, again change this to your admin system.

    new id;

    if(sscanf(params, "d", id)) return SendClientMessage(playerid, COLOR_GREY, "YCMD: /deletebiz [id]");
    if(BusinessInfo[id][bOwned] == 1) return SCM(playerid, COLOR_GREY, "This biz is owned.");//Checks if the biz is owned, if it is it won't allow it to be deleted.
        //Below it resets all the biz enum info.
    BusinessInfo[id][bOwned] = 0;
    BusinessInfo[id][bPrice] = 0;
    BusinessInfo[id][bOwner] = 0;
    BusinessInfo[id][bType] = 0;
    BusinessInfo[id][bLocked] = 0;
    BusinessInfo[id][bName] = 0;
    BusinessInfo[id][bMoney] = 0;
    BusinessInfo[id][bEntranceX] = 0;
    BusinessInfo[id][bEntranceY] = 0;
    BusinessInfo[id][bEntranceZ] = 0;
    BusinessInfo[id][bEntranceA] = 0;
    BusinessInfo[id][bExitX] = 0;
    BusinessInfo[id][bExitY] = 0;
    BusinessInfo[id][bExitZ] = 0;
    BusinessInfo[id][bExitA] = 0;
    BusinessInfo[id][bInt] = 0;
    BusinessInfo[id][bWorld] = 0;

    if(BusinessInfo[id][bOutsideIcon]) DestroyDynamicPickup(BusinessInfo[id][bOutsideIcon]);//Destroys the pickup.

    new string[128];

    format(string, sizeof(string), BPATH, id);
    fremove(string);
    return 1;
}
Now we will need the info of a business to be displayed when you step on the pickup.
pawn Code:
public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
    new string[256];
    for(new b = 1;b < sizeof(BusinessInfo);b++)// Loopd through all the businesses again.
    {
        if(pickupid == BusinessInfo[b][bOutsideIcon])//Checks if it's a biz pickup.
        {
           if(BusinessInfo[b][bOwned] == 0)//Checks if it is owned.
           {
                format(string, sizeof(string), "~g~Name:~w~%s~n~~w~This business is ~g~for sale!~n~~r~Price:~g~%i~n~BizType:~w~%s~n~~g~BizID:~w~%i", BusinessInfo[b][bName], BusinessInfo[b][bPrice], BusinessType(b), b);//Formats a string with all the info.
                GameTextForPlayer(playerid, string, 3000, 3);
           }
           if(BusinessInfo[b][bOwned] == 1)//Checks if it owned.
           {
                format(string, sizeof(string), "~g~Name:~w~%s~n~~g~Owner:~w~%s~n~~g~BizType:~w~%s ~n~~g~BizID:~w~%i", BusinessInfo[b][bName], BusinessInfo[b][bOwner], BusinessType(b), b);//Formats a string with all the info.
                GameTextForPlayer(playerid, string, 3000, 3);
           }
        }
    }
    return 1;
}
We now need to create a stock, to find what businesstype it is:
pawn Code:
stock BusinessType(b)// creates a stock.
{
    new string[30];
    switch(BusinessInfo[b][bType])//You should know what switch is.
    {
        case 4: string = "24/7";
        case 3: string = "Club";
        case 2: string = "Bar";
        case 1: string = "Clothes Shop";
    }
    return string;
}
Okay we will need another important function, to find out if the player is near a business:
pawn Code:
IsPlayerNearBizEnt(playerid)
{
    for(new b = 1; b < sizeof(BusinessInfo); b++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 2.0, BusinessInfo[b][bEntranceX], BusinessInfo[b][bEntranceY], BusinessInfo[b][bEntranceZ])) return b;
    }
    return -1;
}
Heres how you will lock your business:
pawn Code:
YCMD:lockbiz(playerid, params[])
{
    new id = IsPlayerNearBizEnt(playerid);//Uses the function to find if player is near a biz!
    if(id != PlayerInfo[playerid][BizID]) return SCM(playerid, COLOR_GREY, "This isn't your biz!");
    if(BusinessInfo[id][bLocked] == 1)
    {
        BusinessInfo[id][bLocked] = 0;
        GameTextForPlayer(playerid, "Biz ~g~unlocked!", 3000, 3);
    }
    else
    {
        BusinessInfo[id][bLocked] = 1;
        GameTextForPlayer(playerid, "Biz ~r~locked!", 3000, 3);
    }
    return 1;
}
A command to enter the business(Also used to exit):
pawn Code:
YCMD:enter(playerid, params[])
{
    for(new b = 1; b < sizeof(BusinessInfo); b++)//Loops through all the businesses.
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, BusinessInfo[b][bEntranceX], BusinessInfo[b][bEntranceY], BusinessInfo[b][bEntranceZ]))//Checks if player is near the entrance.
        {
            if(BusinessInfo[b][bLocked] == 1) return SendClientMessage(playerid, COLOR_GREY, "This Business is locked!");//Checks it it is locked/
            SetPlayerPos(playerid, BusinessInfo[b][bExitX], BusinessInfo[b][bExitY], BusinessInfo[b][bExitZ]);
            SetPlayerFacingAngle(playerid, BusinessInfo[b][bExitA]);
            SetPlayerInterior(playerid, BusinessInfo[b][bInsideInt]);
            SetPlayerVirtualWorld(playerid, BusinessInfo[b][bInsideWorld]);
            InsideBiz[playerid] = b;
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, BusinessInfo[b][bExitX], BusinessInfo[b][bExitY], BusinessInfo[b][bExitZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bInsideWorld])//Checks if player is in near the exit.
        {
            SetPlayerPos(playerid, BusinessInfo[b][bEntranceX], BusinessInfo[b][bEntranceY], BusinessInfo[b][bEntranceZ]);
            SetPlayerFacingAngle(playerid, BusinessInfo[b][bEntranceA]);
            SetPlayerInterior(playerid, BusinessInfo[b][bInt]);
            SetPlayerVirtualWorld(playerid, BusinessInfo[b][bWorld]);
            InsideBiz[playerid] = 0;
            return 1;
        }
    }
    return 1;
}
Here is the command to buy a business:
pawn Code:
YCMD:buybiz(playerid, params[])
{

    new id = IsPlayerNearBizEnt(playerid);

    if(id == -1 || id == 0) return SendClientMessage(playerid, COLOR_GREY, "You are not near a biz");

    if(BusinessInfo[id][bOwned] != 0 || BusinessInfo[id][bPrice] == 0) return SendClientMessage(playerid, COLOR_GREY, "This biz is not for sale.");

    if(PlayerInfo[playerid][BizID] != 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You already own a biz.");

    if(PlayerInfo[playerid][Money] < BusinessInfo[id][bPrice]) return SendClientMessage(playerid, COLOR_LIGHTRED, "Sorry, you can not afford this biz.");

    PlayerInfo[playerid][BizID] = id;
    PlayerInfo[playerid][Money] -= BusinessInfo[id][bPrice];
    GivePlayerMoney(playerid, -BusinessInfo[id][bPrice]);

    BusinessInfo[id][bLocked] = 0;
    BusinessInfo[id][bOwned] = 1;
    BusinessInfo[id][bOwner] = RemoveUnderScore(playerid);

    SendClientMessage(playerid, COLOR_YELLOW, "Congratulations on your new biz! Use /bizhelp to get help, or /ask!");
    return 1;
}
Here is the command to sell a business:
pawn Code:
YCMD:sellbiz(playerid, params[])
{
    new id = PlayerInfo[playerid][BizID];
    if(PlayerInfo[playerid][BizID] == 0) return SCM(playerid, COLOR_GREY, "You don't own a biz!");
    BusinessInfo[id][bOwned] = 0;
    BusinessInfo[id][bOwner] = 0;
    BusinessInfo[id][bLocked] = 1;
    PlayerInfo[playerid][Money] = BusinessInfo[id][bPrice];
    PlayerInfo[playerid][BizID] = 0;
    SCM(playerid, COLOR_YELLOW, "Business sold!");
    return 1;
}
Command to set the business name:
pawn Code:
YCMD:bizsetname(playerid, params[])
{
    new name[128];
    if(sscanf(params, "s[128]", name)) return SCM(playerid, COLOR_GREY, "/bizsetname [name]");
    if(PlayerInfo[playerid][BizID] == 0) return SCM(playerid, COLOR_GREY, "You don't own a biz!");
    BusinessInfo[PlayerInfo[playerid][BizID]][bName] = name;
    SCM(playerid, COLOR_YELLOW, "Business name changed!");
    return 1;
}
Now heres a example of what you can do with this script, for example a skin change command:
pawn Code:
YCMD:clothes(playerid, params[])
{
    new skin;
    if(sscanf(params, "i", skin)) return SCM(playerid, COLOR_GREY, "YCMD:/skin [skinid]");
    if(PlayerInfo[playerid][Money] < 100) return SCM(playerid, COLOR_GREY, "You need atleast 100%!");
    if(BusinessInfo[InsideBiz[playerid]][bType] != 1) return SCM(playerid, COLOR_GREY, "You need to be in clothes shop!");
    if(1 > skin ||  299 < skin || skin == 288 || skin == 287 || skin == 286 || skin == 285 || skin == 284 || skin == 283 || skin == 282 || skin == 281 || skin == 280 || skin == 279 || skin == 278 || skin == 277 || skin == 276 || skin == 275 || skin == 274) return SCM(playerid, COLOR_GREY, "Invalid skin ID!");
    SetPlayerSkin(playerid, skin);
    PlayerInfo[playerid][Skin] = skin;
    GivePlayerMoney(playerid, -100);
    BusinessInfo[InsideBiz[playerid]][bMoney] += 100;
    return 1;
}
You will need to create a directory in your script files called "Business" for this to work.

Conclusion
Some parts re not explained, this tutorial is not aimed at newbies. If you need anything explained, please post on here.

This script is HIGHLY customisable, You get to choose the interior, price, and type! You can create your own commands to this, such as "/buy" for the 24/7.

Comment/rate.
Reply
#2

wow 10/10 nice tutorial and system good nice
Reply
#3

Thanks mate!
Reply
#4

nice work man, will help out people on RP servers
Reply
#5

I get these error's

pawn Code:
C:\Users\Tiernan\Desktop\Bone County Roleplay\gamemodes\BCRP.pwn(1265) : error 001: expected token: ")", but found "["
C:\Users\Tiernan\Desktop\Bone County Roleplay\gamemodes\BCRP.pwn(1265) : warning 215: expression has no effect
C:\Users\Tiernan\Desktop\Bone County Roleplay\gamemodes\BCRP.pwn(1265) : error 001: expected token: ";", but found "]"
C:\Users\Tiernan\Desktop\Bone County Roleplay\gamemodes\BCRP.pwn(1265) : error 029: invalid expression, assumed zero
C:\Users\Tiernan\Desktop\Bone County Roleplay\gamemodes\BCRP.pwn(1265) : fatal error 107: too many error messages on one line
Line 1265:
pawn Code:
INI_String("bName", BusinessInfo[idx][bName], 128);
Reply
#6

Idiot me, forgot to post the enum. :P..One second.

EDIT:
pawn Code:
enum bInfo
{
    bOwned,
    bPrice,
    bOwner[MAX_PLAYER_NAME],
    bType,
    bLocked,
    bMoney,
    Float:bEntranceX,
    Float:bEntranceY,
    Float:bEntranceZ,
    Float:bEntranceA,
    Float:bExitX,
    Float:bExitY,
    Float:bExitZ,
    Float:bExitA,
    bInt,
    bWorld,
    bInsideInt,
    bInsideWorld,
    bInsideIcon,
    bOutsideIcon,
    bName[128]
}
new BusinessInfo[200][bInfo];
Reply
#7

command to buy and sell bussinesї?
Reply
#8

Totally forgot to post those, it now has /sellbiz, /buybiz, and /setbizname.
Reply
#9

EDIT: Nvm I Fix The Problem Good Tutorial
Reply
#10

Ty much for news commands (buy sell and change name) 10/10 good base for business system
Reply
#11

Yup, my next project is faction system using Y_INI, I don't know if I will release it though(Will just let more idiot RPs in).
Reply
#12

Seems very nice i really like it and i will stick it to my web browser get some +rep from me.
Reply
#13

nice Tutorial
Reply
#14

This code is basicly lines for errors...0.1/10
Reply
#15

This is awesome tutorial
Reply
#16

Quote:

Conclusion
As mentioned before, it is assumed you understand most of this code! So do not cry here, posting a link to Y_Less "How to make a tutorial" thread, because I know I haven't explained it fully. As I said you can still ask me to explain parts you don't understand, I will do my best explaining them.

I thought 'tutorials' were made so everyone could easily understand it, given they have mastered the basics (meaning, they don't go start making a gamemode when they don't even know how to check if a player is connected yet)

I don't want to dis your efforts, you've done a reasonably good job; but the tutorial lacks explaination IMO, and if I were to be a below average scripter i'd probably struggle getting this done. You could really improve on "Put this under X", it takes a few seconds to explain why it should be put under there, and not somewhere else. Same goes for "We need to create a enum" and things like that.

Eventually, the evaluation of your post (Checking it for mistakes, like forgetting your enum thus generating errors, and forgetting commands) can be hindering.
Reply
#17

Quote:
Originally Posted by BuuGhost
View Post
I thought 'tutorials' were made so everyone could easily understand it, given they have mastered the basics (meaning, they don't go start making a gamemode when they don't even know how to check if a player is connected yet)

I don't want to dis your efforts, you've done a reasonably good job; but the tutorial lacks explaination IMO, and if I were to be a below average scripter i'd probably struggle getting this done. You could really improve on "Put this under X", it takes a few seconds to explain why it should be put under there, and not somewhere else. Same goes for "We need to create a enum" and things like that.

Eventually, the evaluation of your post (Checking it for mistakes, like forgetting your enum thus generating errors, and forgetting commands) can be hindering.
Don't like it? Don't use it...

Have a nice day Mr.Don'tContributeOneWordToThisForumButDissEveryon eElsesWork
Reply
#18

Nice work, but could you explain some stuff? I had trouble understanding some stuff.

9/10
Reply
#19

Nice script! repped
Reply
#20

Can you make it

/sellbiztoplayer playerid price

or

/sellbizpublic price and another player comes and buys it and the money goes to the old owner?
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)