Skip to content

Instantly share code, notes, and snippets.

@jasarsoft
Last active June 26, 2017 08:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jasarsoft/f0733549d5ba8f2e958354ccf20d892a to your computer and use it in GitHub Desktop.
Save jasarsoft/f0733549d5ba8f2e958354ccf20d892a to your computer and use it in GitHub Desktop.
ATM System (old code)
//--- DIRECTIVES -------------------------------------------------------------//
//max
#define ATM_MAX 40
//object
#define ATM_OBJECT 2942
//id
#define ATM_ID_NONE -1
//default
#define ATM_DEFAULT_ID -1
#define ATM_DEFAULT_POSITION 0.0
#define ATM_DEFAULT_ANGLE 0.0
#define ATM_DEFAULT_INTERIOR 0
#define ATM_DEFAULT_VWORLD 0
#define ATM_DEFAULT_MONEY 0
//message
#define ATM_MSG_TYPE_INFO 0
#define ATM_MSG_TYPE_ERROR 1
//dialog
#define DIALOGID_ATM 500
#define DIALOGID_ATM_TAKE 501
//----------------------------------------------------------------------------//
//--- VARIABLES --------------------------------------------------------------//
//database
new DB:atmDbase;
//parameters
enum paramAtm
{
//id
atmId, // redni broj bankomata
//position
Float:atmPosX, // pozicija x
Float:atmPosY, // pozicija y
Float:atmPosZ, // pozicija z
Float:atmAngle, // rotacija
//interior
atmInterior, // interijer
atmVworld, // virtual word
//money
atmMoney //kolicina novca
}
static atmInfo[ATM_MAX][paramAtm];
//max value
//new atmMaxValue = 10000;
//object
static atmObject[ATM_MAX];
static atmLabel[ATM_MAX];
//player use
//new atmUseId[MAX_PLAYERS];
stock AtmDefault(atmid)
{
atmInfo[atmid][atmId] = ATM_DEFAULT_ID;
//position
atmInfo[atmid][atmPosX] = ATM_DEFAULT_POSITION;
atmInfo[atmid][atmPosX] = ATM_DEFAULT_POSITION;
atmInfo[atmid][atmPosX] = ATM_DEFAULT_POSITION;
//angle
atmInfo[atmid][atmAngle] = ATM_DEFAULT_ANGLE;
//
atmInfo[atmid][atmInterior] = ATM_DEFAULT_INTERIOR;
atmInfo[atmid][atmVworld] = ATM_DEFAULT_VWORLD;
//kolicina novca
atmInfo[atmid][atmMoney] = ATM_DEFAULT_MONEY;
return 1;
}
stock AtmNextId()
{
new atmid = MAX_ATMS + 1;
//new DBResult:result, query[128];
for(new i = 0; i < MAX_ATMS; i++)
{
if(iatm[i][aatmid] == ATM_ID_NONE)
return i;
}
DebugWrite("AtmNextId(); Error: AtmId is maximum / not search free id");
return atmid;
}
stock AtmCreate()
{
for(new i = 0; i < ATM_MAX; i++)
{
if(atmInfo[i][atmId] != ATM_ID_NONE)
{
new string[128];
atmObject[i] = CreateDynamicObject(ATM_OBJECT, atmInfo[i][atmPosX], atmInfo[i][atmPosY], atmInfo[i][atmPosZ], 0.0, 0.0, atmInfo[i][atmAngle], atmInfo[i][atmVworld], atmInfo[i][atmInterior], -1, 200.0);
format(string,sizeof(string),"{33CCFF}BANKOMAT (%d)\n{FFFFFF}'/atm'", i);
atmLabel[i] = CreateDynamic3DTextLabel(string, COLORLONG_GREENYELLOW, atmInfo[i][atmPosX], atmInfo[i][atmPosY], atmInfo[i][atmPosZ], 25, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, -1, -1, -1, 20.0);
print("[SERVER] Bankomati ucitani.");
}
}
}
stock AtmMessage(playerid, type, const text[], va_args<>)
{
new string[128], message[128];
va_format(string, sizeof(string), text, va_start<3>);
if(type == ATM_MSG_TYPE_INFO)
format(message, sizeof(message), ""COLORSHORT_YELLOW"[INFO|BAKOMAT]"COLORSHORT_LAVENDER" %s", string);
else
format(message, sizeof(message), ""COLORSHORT_RED"[GRESKA|BANKOMAT]"COLORSHORT_LAVENDER" %s", string);
return SendClientMessage(playerid, -1, message);
}
stock AtmLoad()
{
new DBResult:result, query[128];
for(new i = 0; i < ATM_MAX; i++)
{
format(query, sizeof(query), "SELECT * FROM `main` WHERE `atm_id` = %d LIMIT 1", i);
result = db_query(atmDbase, query);
if(db_num_rows(result))
{
atmInfo[i][atmId] = db_get_field_assoc_int(result, "atm_id");
//position
atmInfo[i][atmPosX] = db_get_field_assoc_float(result, "pos_x");
atmInfo[i][atmPosY] = db_get_field_assoc_float(result, "pos_y");
atmInfo[i][atmPosZ] = db_get_field_assoc_float(result, "pos_z");
//angle
atmInfo[i][atmAngle] = db_get_field_assoc_float(result, "angle");
//interior
atmInfo[i][atmInterior] = db_get_field_assoc_int(result, "interior");
atmInfo[i][atmVworld] = db_get_field_assoc_int(result, "vworld");
//money
atmInfo[i][atmMoney] = db_get_field_assoc_int(result, "money");
}
else
AtmDefault(i);
db_free_result(result);
}
return 1;
}
stock AtmDatabase()
{
new query[640] = "";
atmDbase = db_open("atm.db");
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `main` (\
`id` INTEGER PRIMARY KEY AUTOINCREMENT, \
`atm_id` INTEGER, \
`pos_x` FLOAT DEFAULT 0.0, \
`pos_y` FLOAT DEFAULT 0.0, \
`pos_z` FLOAT DEFAULT 0.0, \
`angle` FLOAT DEFAULT 0.0, \
`interior` INTEGER DEFAULT 0, \
`vworld` INTEGER DEFAULT 0, \
`money` INTEGER DEFAULT 0)");
return db_free_result(db_query(atmDbase, query));
}
stock AtmIdPlayer(playerid)
{
for(new i = 0; i < ATM_MAX; i++)
{
if(atmInfo[i][atmId] != ATM_ID_NONE)
if(IsPlayerInRangeOfPoint(playerid, 5.0, atmInfo[i][atmPosX], atmInfo[i][atmPosY], atmInfo[i][atmPosZ]))
return i;
}
return ATM_ID_NONE;
}
stock AtmMenu(playerid/*, atmid*/)
{
new info[160], line[80], title[32];
format(line, sizeof(line), ""COLORSHORT_LAVENDER"Podigni\t\t\t"COLORSHORT_SILVER"$10.000\n");
strcat(info, line, sizeof(line));
if(playerData[playerid][BankovniRacun] == 0)
strcat(info, ""COLORSHORT_LAVENDER"Stanje\t\t\t"COLORSHORT_SILVER"Nemate racun\n", sizeof(line));
else
{
format(line, sizeof(line), ""COLORSHORT_LAVENDER"Stanje\t\t\t"COLORSHORT_SILVER"$%i\n", playerData[playerid][Banka]);
strcat(info, line, sizeof(line));
}
//---title
format(title, sizeof(title), ""COLORSHORT_GOLD"BANKOMAT SISTEM");
return ShowPlayerDialog(playerid, DIALOGID_ATM, DIALOG_STYLE_TABLIST, title, info, DialogButton1("ODABERI"), DialogButton2("IZLAZ"));
}
stock AtmMenuTake(playerid/*, atmid*/)
{
new info[320] = "";
new line[128], title[32];
strcat(info, ""COLORSHORT_LAVENDER"Unesite vrijednost koju zelite podici sa racuna.\n", sizeof(info));
strcat(info, ""COLORSHORT_LAVENDER"Vrijednost ne moze biti veca od max. dozvoljene.\n\n", sizeof(info));
format(line, sizeof(line), ""COLORSHORT_YELLOWGREEN"Dozvoljena max. vrijednost:\t$10.000\n");
strcat(info, line, sizeof(info));
//---notice
strcat(info, ""COLORSHORT_SILVER"_____________________________________________\n", sizeof(info));
strcat(info, ""COLORSHORT_SILVER"Za vise informacija koristite komandu /atmpomoc.", sizeof(info));
//---title
format(title, sizeof(title), ""COLORSHORT_GOLD"BANKOMAT: Podizanje");
return ShowPlayerDialog(playerid, DIALOGID_ATM_TAKE, DIALOG_STYLE_INPUT, title, info, DialogButton1("UZMI"), DialogButton3("NAZAD"));
}
stock AtmDialog(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOGID_ATM:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(playerData[playerid][BankovniRacun] == 0)
{
MessageError(playerid, "Nemate otvoren bankovni racun i ne mozete podizati novac.");
return AtmMenu(playerid/*, atmUseId[playerid]*/);
}
else return AtmMenuTake(playerid/*, atmUseId[playerid]*/);
}
}
return AtmMenu(playerid/*, atmUseId[playerid]*/);
}
}
case DIALOGID_ATM_TAKE:
{
if(response)
{
new value = strval(inputtext);
if(value <= 0)
{
AtmMessage(playerid, ATM_MSG_TYPE_ERROR, "Unijeli ste negativnu vrijednost.");
return AtmMenuTake(playerid/*, atmUseId[playerid]*/);
}
if(playerData[playerid][Banka] < value)
{
AtmMessage(playerid, ATM_MSG_TYPE_ERROR, "Nemate dovoljno novca na vasem racunu.");
return AtmMenuTake(playerid/*, atmUseId[playerid]*/);
}
if(value > 10000)
{
AtmMessage(playerid, ATM_MSG_TYPE_ERROR, "Ne mozete podici vrijednost vecu od dozovljene.");
return AtmMenuTake(playerid/*, atmUseId[playerid]*/);
}
MoneyAdd(playerid, value);
playerData[playerid][Banka] -= value;
AtmMessage(playerid, ATM_MSG_TYPE_INFO, "Podigli ste vrijednost novca od $%i.", value);
}
return AtmMenu(playerid/*, atmUseId[playerid]*/);
}
}
return 0;
}
YCMD:atm(playerid, params[], help)
{
if(CheckPlayerConnected(playerid))
{
for(new i = 0; i < ATM_MAX; i++)
{
if(atmInfo[i][atmId] != ATM_ID_NONE && IsPlayerInRangeOfPoint(playerid, 5.0, atmInfo[i][atmPosX], atmInfo[i][atmPosY], atmInfo[i][atmPosZ]))
{
if(IsPlayerInAnyVehicle(playerid)) return MessageError(playerid, "Ne mozete koristiti bankomat dok ste u vozilu.");
//if(atmUseId[playerid] == i) MessageError(playerid, "Ne mozete koristiti ponovo isti bankomat, pokusajte kasnije.");
//atmUseId[playerid] = i;
return AtmMenu(playerid/*, atmUseId[playerid]*/);
}
}
MessageError(playerid, "Potrebno je da se nalazite ispred bankomata");
}
return 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment