All pastes #625204 Raw Edit

BankingScript

public cpp v1 · immutable
·published 2007-07-18 20:29 UTC
rendered paste body
// simple banking script//// thanks to jerbob 1992// for bank stuff// this script needs >> scriptfiles/banks.txt << to exist#include <a_samp>#include <core>#include <float>#pragma tabsize 0#define CP_BANK 		0#define CP_BANK_2 		2#define CP_BANK_3   	3#define COLOR_GREY 0xAFAFAFAA  //---MAFIA#define COLOR_GREEN 0x33AA33AA  //---NEWS#define COLOR_RED 0xAA3333AA  //--ZOMBI#define COLOR_YELLOW 0xFFFF00AA //---PIMPS#define COLOR_WHITE 0xFFFFFFAA  //---civillian#define COLOR_WHITE2 0xFF4080AA  //---#define COLOR_LIGHTBLUE 0x33CCFFAA //---ARMY#define COLOR_ORANGE 0xFF9900AA  //---GANGSTAS#define BANKFILE "banks.txt"new bmsg[250];new bmsg_s[250];new File:bfileh;new b_name[MAX_PLAYER_NAME];new str_b[256];forward fcreate(filename[]);forward getCheckpointType(playerID);forward checkpointUpdate();forward SendPlayerFormattedText(playerid, const str[], define);forward SendAllFormattedText(playerid, const str[], define);forward isPlayerInArea(playerID, Float:data[4]);new bank[MAX_PLAYERS];new playerCheckpoint[MAX_PLAYERS];#define MAX_POINTS 3new Float:checkCoords[MAX_POINTS][4] = {	{-36.5483,-57.9948, -17.2655,-49.2967},    	//BANK	{-37.2183,-91.8006, -14.1099,-74.6845},      	//BANK_2	{-34.6621,-31.4095, -2.6782,-25.6232}     		//BANK_3};new Float:checkpoints[MAX_POINTS][3] = {	{-22.2549,-55.6575,1003.5469},	{-23.0664,-90.0882,1003.5469},	{-33.9593,-29.0792,1003.5573}};new checkpointType[MAX_POINTS] = {	CP_BANK,	CP_BANK_2,	CP_BANK_3};#define MAX_GANGS 			20new gangBank[MAX_GANGS];new playerGang[MAX_PLAYERS];main(){	print("\n--------------------------------------");	print("    Corpse's Simple Banking FilterScript 0.1   ");	print("--------------------------------------\n");}//-----/*GetVal(numb, str[]) { new bmsg[256], idx; for(new i=0; i<numb; i++) {  tmp=strtok(str, idx);//			GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);//			format(bmsg,sizeof(bmsg),"%s $%d\r\n",b_name,bank[playerid]);	   		bfileh = fopen(BANKFILE,io_read);				while(fread(bfileh, bmsg)) {	 			if(strcmp(str_b, b_name, false, strlen(b_name))==0) {				format(bmsg, sizeof(bmsg), "%s you have $%d banked",b_name,bank[playerid]);				SendClientMessage(playerid, COLOR_YELLOW, bmsg);				fclose(bfileh);			  }  			else if(strcmp(str_b, b_name, false, strlen(b_name))!=0) { // Its NOT true				fclose(bfileh);				}		}		return 1;	}// } return strval(tmp);}//-----ReadConf(){			GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);			format(bmsg,sizeof(bmsg),"%s $%d\r\n",b_name,bank[playerid]);	   		bfileh = fopen(BANKFILE,io_append);				while(fread(bfileh, bmsg)) {  			if(strcmp(str_b, b_name, false, strlen(b_name))==0) {			    str_replace(BANKFILE, bmsg, bmsg);				fwrite(bfileh,bmsg);  			}//  			else if(strcmp(str_b, b_name, false, strlen(b_name))!=0) { // Its NOT true   			 fwrite(bfileh,bmsg);//				}				fclose(bfileh);			}		return 1;   	}*///-----public fcreate(filename[]) {	if (fexist(filename)){return false;}	new File:fhandle = fopen(filename,io_write);	fclose(fhandle);	return true;}//----str_replace(search[], replace[], source[]){	new i = 0, len, j = 0;	new retstr[256] = "";	len = strlen(search);	while ((i = strfind(source, search, true, j)) != -1)	{		strcat(retstr, strpart(source, j, i));		strcat(retstr, replace);		j = i + len;	}	strcat(retstr, source[j]);	return retstr;}strpart(string[], start, end){	new retstr[256];	strmid(retstr, string, start, end);	return retstr;}public isPlayerInArea(playerID, Float:data[4]){	new Float:X, Float:Y, Float:Z;	GetPlayerPos(playerID, X, Y, Z);	if(X >= data[0] && X <= data[2] && Y >= data[1] && Y <= data[3]) {		return 1;	}	return 0;}public checkpointUpdate(){	for(new i=0; i<MAX_PLAYERS; i++)	{	    if(IsPlayerConnected(i)) {	        for(new j=0; j < MAX_POINTS; j++) {	            if(isPlayerInArea(i, checkCoords[j])) {	                if(playerCheckpoint[i]!=j) {	                    DisablePlayerCheckpoint(i);						SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],2);						playerCheckpoint[i] = j;					}	            } else {	            	if(playerCheckpoint[i]==j) {	            	    DisablePlayerCheckpoint(i);	            	    playerCheckpoint[i] = 999;         	    	}	            }	        }		}	}}//-----	public getCheckpointType(playerID) {	return checkpointType[playerCheckpoint[playerID]];}//------public OnPlayerCommandText(playerid, cmdtext[]){	new string[256];	new cmd[256];	new moneys, idx;	cmd = strtok(cmdtext, idx);		if(strcmp(cmd, "/bank", true) == 0 || strcmp(cmd, "/gbank", true) == 0) {	    new gang;	    if(strcmp(cmd, "/gbank", true) == 0)	        gang = 1;	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK && getCheckpointType(playerid) != CP_BANK_2 && getCheckpointType(playerid) != CP_BANK_3) {	        SendClientMessage(playerid, COLOR_YELLOW, "You must be at a bank area to use this. ATMs are located in convenience stores.");			return 1;		}		if(gang && playerGang[playerid]==0) {			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");			return 1;		}		new tmp[256];	    tmp = strtok(cmdtext, idx);	    if(!strlen(tmp)) {			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /(g)bank [amount]");			return 1;	    }	    moneys = strval(tmp);	    if(moneys < 1) {			SendClientMessage(playerid, COLOR_YELLOW, "Hey what are you trying to pull here.");			return 1;		}		if(GetPlayerMoney(playerid) < moneys) {			moneys = GetPlayerMoney(playerid);		}		GivePlayerMoney(playerid, 0-moneys);		if(gang)		    gangBank[playerGang[playerid]]+=moneys;		else			bank[playerid]+=moneys;		if(gang)			format(string, sizeof(string), "You have deposited $%d, your gang's balance is $%d.", moneys, gangBank[playerGang[playerid]]);		else			GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);			format(bmsg,sizeof(bmsg),"%s $%d\r\n",b_name,bank[playerid]);	   		bfileh = fopen(BANKFILE,io_readwrite);			new File:fhandle;			fhandle = fopen("banks.txt",io_read);				while(fread(fhandle,bmsg_s,sizeof(bmsg_s))) {  			if(strcmp(str_b, bmsg_s, false, strlen(b_name))==0) {			    str_replace(BANKFILE, bmsg_s, bmsg);				fwrite(bfileh,bmsg);//				fclose(bfileh);  			}//   			else if(strcmp(str_b, b_name, false, strlen(b_name))!=0) { // Its NOT true   			 fwrite(bfileh,bmsg);//				}				fclose(bfileh);				SendClientMessage(playerid, COLOR_YELLOW, string);				format(string, sizeof(string), "You have deposited $%d, your current balance is $%d.", moneys, bank[playerid]);			}		return 1;	}	//------------------- /withdraw	if(strcmp(cmd, "/withdraw", true) == 0 || strcmp(cmd, "/gwithdraw", true) == 0) {	    new gang;	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK && getCheckpointType(playerid) != CP_BANK_2 && getCheckpointType(playerid) != CP_BANK_3) {	        SendClientMessage(playerid, COLOR_YELLOW, "You must be at a bank area to use this. ATMs are located in convenience stores.");			return 1;		}		if(strcmp(cmd, "/gwithdraw", true) == 0)		    gang = 1;		if(gang && playerGang[playerid]==0) {			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");			return 1;		}	    new tmp[256];	    tmp = strtok(cmdtext, idx);	    if(!strlen(tmp)) {			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /(g)withdraw [amount]");			return 1;	    }	    moneys = strval(tmp);	    if(moneys < 1) {			SendClientMessage(playerid, COLOR_YELLOW, "Hey what are you trying to pull here.");			return 1;		}	    if(gang) {			if(moneys > gangBank[playerGang[playerid]])			    moneys = gangBank[playerGang[playerid]];	    } else {		    if(moneys > bank[playerid])		        moneys = bank[playerid];     	}		GivePlayerMoney(playerid, moneys);		if(gang)			gangBank[playerGang[playerid]] -= moneys;		else			bank[playerid] -= moneys;		if(gang)			format(string, sizeof(string), "You have withdrawn $%d, your gang's balance is $%d.", moneys, gangBank[playerGang[playerid]]);		else			format(string, sizeof(string), "You have withdrawn $%d, your current balance is $%d.", moneys, bank[playerid]);			SendClientMessage(playerid, COLOR_YELLOW, string);			GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);			format(bmsg,sizeof(bmsg),"%s $%d\r\n",b_name,bank[playerid]);	   		bfileh = fopen(BANKFILE,io_append);				while(fread(bfileh, bmsg)) {  			if(strcmp(str_b, b_name, false, strlen(b_name))==0) {			    str_replace(BANKFILE, bmsg, bmsg);				fwrite(bfileh,bmsg);  			}//  			else if(strcmp(str_b, b_name, false, strlen(b_name))!=0) { // Its NOT true   			 fwrite(bfileh,bmsg);//				}				fclose(bfileh);			}		return 1;   	}	//------------------- /balance	if(strcmp(cmd, "/balance", true) == 0 || strcmp(cmd, "/gbalance", true) == 0) {		new gang;		if(strcmp(cmd, "/gbalance", true) == 0)			gang = 1;	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK && getCheckpointType(playerid) != CP_BANK_2 && getCheckpointType(playerid) != CP_BANK_3) {	        SendClientMessage(playerid, COLOR_YELLOW, "You must be at a bank area to use this. ATMs are located in convenience stores.");			return 1;		}		if(gang && playerGang[playerid]==0) {			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");			return 1;		}		if(gang)			format(string, sizeof(string), "Your gang has $%d in the bank.", gangBank[playerGang[playerid]]);		else			GetPlayerName(playerid, b_name, MAX_PLAYER_NAME);//			format(bmsg,sizeof(bmsg),"%s $%d\r\n",b_name,bank[playerid]);	   		bfileh = fopen(BANKFILE,io_read);				while(fread(bfileh, bmsg)) {	 			if(strcmp(str_b, b_name, false, strlen(b_name))==0) {				format(bmsg, sizeof(bmsg), "%s you have $%d banked",b_name,bank[playerid]);				SendClientMessage(playerid, COLOR_YELLOW, bmsg);				fclose(bfileh);			  }  			else if(strcmp(str_b, b_name, false, strlen(b_name))!=0) { // Its NOT true				fclose(bfileh);				}		}		return 1;	}	return 0;}public OnPlayerEnterCheckpoint(playerid){	switch(getCheckpointType(playerid))	{		case CP_BANK: {			SendClientMessage(playerid, COLOR_YELLOW, "You are at an ATM. To store money use '/bank amount', to withdraw");			SendClientMessage(playerid, COLOR_YELLOW, "money use '/withdraw amount', and '/balance' to see your balance.");		}		case CP_BANK_2: {			SendClientMessage(playerid, COLOR_YELLOW, "You are at an ATM. To store money use '/bank amount', to withdraw");			SendClientMessage(playerid, COLOR_YELLOW, "money use '/withdraw amount', and '/balance' to see your balance.");		}		case CP_BANK_3: {			SendClientMessage(playerid, COLOR_YELLOW, "You are at an ATM. To store money use '/bank amount', to withdraw");			SendClientMessage(playerid, COLOR_YELLOW, "money use '/withdraw amount', and '/balance' to see your balance.");		}	}}//--//--public OnFilterScriptInit(){	SetTimer("checkpointUpdate", 1100, 1);	if(!bfileh) {fcreate(BANKFILE);}	print("\n--------------------------------------");	print("  corpse's simple banking filterscript 0.1 ");	print("--------------------------------------\n");	return 1;}//---public SendPlayerFormattedText(playerid, const str[], define){	new tmpbuf[256];	format(tmpbuf, sizeof(tmpbuf), str, define);	SendClientMessage(playerid, 0xFFFF00AA, tmpbuf);}public SendAllFormattedText(playerid, const str[], define){	new tmpbuf[256];	format(tmpbuf, sizeof(tmpbuf), str, define);	SendClientMessageToAll(0xFFFF00AA, tmpbuf);}//--strtokstrtok(const string[], &index){	new length = strlen(string);	while ((index < length) && (string[index] <= ' '))	{		index++;	}	new offset = index;	new result[20];	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))	{		result[index - offset] = string[index];		index++;	}	result[index - offset] = EOS;	return result;}//--public OnFilterScriptExit(){	return 1;}