-
-
Save jasarsoft/f0733549d5ba8f2e958354ccf20d892a to your computer and use it in GitHub Desktop.
ATM System (old code)
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
//--- 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