Guten tag liebe Leute,
Nach reichlichem überlegen beschließe ich hiermit mein Werk (DBS.amx/DBS.pwn) [Dynamisches Business System] zu veröffentlichen.
Die Screens:
Bilder
Link: http://img7.imagebanana.com/img/g2ffaje8/bizzsystem.jpg
http://www.imagebanana.com/view/53rxioqj…ystemUPDATE.jpg
Die Funktionen sind:
/bizzkasse // Bizzkasse
/bizzkaufen und /bizzverkaufen // Das Ich dem Business icon stehe,
vorraussetzung : Level , Geld und es darf nicht verkauft sein, man darf keins besitzen.
/cbizz // erstellt ein bizz -> /cbizz [NAME] [preis] [Score] -> Name = Name des Bizzes
/dbizz -> Löscht ein bizz , /dbizz [id] -> Die ID wird gelöscht
/bizzcredits -> Die credits
[ROT = RCON]
Ich hoffe ihr werdet das System gut benutzen , etc...
Wenn ich zeit habe werde ich dazu auch updates machen.
Der Code:
#define FILTERSCRIPT
#include <a_samp>
#include <ocmd>
#include <dini>
/* Credits: */
/*
Die Credits gehen an : Myname1997
Die Credits dürfen nicht entfernt werden.
*/
#define MAX_BIZZES 100
enum binfo
{
bname[64],
Float:bx,
Float:by,
Float:bz,
bkasse,
bpreis,
blevel,
bizz_pickup,
Text3D:bizz_label,
bBesitzt,
bBesitzer[MAX_PLAYER_NAME],
pProds
}
new BizzInfo[MAX_BIZZES][binfo];
new Produkte[MAX_PLAYERS];
new Key[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("Bizz-System by Myname1997\n");
print("Bizzes Geladen...");
print("--------------------------------------\n");
CreatePickup(1279,1,0,0,0,-1);
for(new i=0;i<MAX_BIZZES;i++)
{
LB(i);
}
return 1;
}
public OnFilterScriptExit()
{
for(new i=0;i<MAX_BIZZES;i++)
{
SB(i);
KB(i);
}
return 1;
}
public OnPlayerConnect(playerid)
{
LP(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SP(playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/bhelp",true)==0)
{
SendClientMessage(playerid,0xff554455,"Kommand's: /bizzcredits , /bizzkaufen , /bizzverkaufen , /bizzkasse");
if(IsPlayerAdmin(playerid))
{
SendClientMessage(playerid,0xff5444,"/cbizz , /dbizz");
}
return 1;
}
if (strcmp("/bizzcredits", cmdtext, true) == 0)
{
SendClientMessage(playerid,0xfff00ff,"Credits gehen an: Myname1997");
return 1;
}
if(strcmp(cmdtext,"/produkte",true)==0)
{
new string[256];
format(string,sizeof(string),"Produkte: %d",Produkte[playerid]);
SendClientMessage(playerid,0xfffffffff,string);
return 1;
}
return 1;
}
ocmd:beliefern(playerid,params[])
{
for(new bizzid=1;bizzid<MAX_BIZZES;bizzid++)
{
if(IsPlayerInRangeOfPoint(playerid,1,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz]))
{
new anzahl;
if(Produkte[playerid] == 0) return SendClientMessage(playerid,0xffff0000,"keine Produkte bei ihnen!");
if(BizzInfo[bizzid][pProds] == 500) return SendClientMessage(playerid,0xffff0000,"Diese Bizz hat volle Prods");
if(sscanf(params,"i",anzahl)) return SendClientMessage(playerid,0xffff0000,"Benutzung: /beliefern [Prods]");
if(anzahl > Produkte[playerid]) return SendClientMessage(playerid,0xffff0000,"nicht genug Produkte dabei");
new string[256];
format(string,sizeof(string),"Die Bizz kann nur 500Produkte lagern\n Derzeit: %d/500",BizzInfo[bizzid][pProds]);
if(anzahl + BizzInfo[bizzid][pProds] > 500) return SendClientMessage(playerid,0xffffffff,string);
BizzInfo[bizzid][pProds] += anzahl;
Produkte[playerid] -= anzahl;
SB(bizzid);
KB(bizzid);
LB(bizzid);
}
}
return 1;
}
ocmd:prodsholen(playerid,params[])
{
if(IsPlayerInRangeOfPoint(playerid,1,749.6315,-1333.1493,12.9859)) // coords müssen geändert werden (Abholpunkt für Produkte!)
{
new anzahl;
if(Produkte[playerid] == 500) return SendClientMessage(playerid,0xffff0000,"du kannst keine Produkte mehr bei dir führen!");
if(sscanf(params,"i",anzahl)) return SendClientMessage(playerid,0xffff0000,"Benutzung: /prodsholen [Prods]");
if(GetPlayerMoney(playerid) < anzahl*50) return SendClientMessage(playerid,0xffffff,"Nicht genug Geld!! , Kosten pro Prod: 50$");
new Geld = anzahl*50;
new string[256];
format(string,sizeof(string),"Zu Viele Produkte! , Derzeit: %d/500",Produkte[playerid]);
if(anzahl + Produkte[playerid] > 500) return SendClientMessage(playerid,0xffffffff,string);
Produkte[playerid] += anzahl;
GivePlayerMoney(playerid,-Geld);
}
return 1;
}
ocmd:bizzkasse(playerid,params[])
{
for(new bizzid=1;bizzid<MAX_BIZZES;bizzid++)
{
if(IsPlayerInRangeOfPoint(playerid,1,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz]))
{
new name[MAX_PLAYER_NAME],aktion,geld;
GetPlayerName(playerid,name,sizeof name);
if(strcmp(BizzInfo[bizzid][bBesitzer],name,false) == 1)return SendClientMessage(playerid,0x00FF00,"Dieses Bizz gehört dir nicht!");
if(sscanf(params,"ii",aktion,geld)) return SendClientMessage(playerid,0xffff0000,"Benutzung: /bizzkasse [Aktion] [Geld] --->>> 1 = Auszahlen , 2 = Einzahlen");
new Kassengeld = BizzInfo[bizzid][bkasse];
new string[256];
if(aktion == 1) // Auszahlen
{
if(Kassengeld < geld) return SendClientMessage(playerid,0xfffff,"Soviel Geld haben sie nicht in ihrer Kasse");
if(geld > 1000000 || geld <= 0) return SendClientMessage(playerid,0xfffff,"Bitte Summen von 1$ bis 1Mio$");
GivePlayerMoney(playerid,geld);
BizzInfo[bizzid][bkasse] -= geld;
format(string,sizeof(string),"Geld Ausgezahlt\nGeld in der Kasse: $%d",BizzInfo[bizzid][bkasse]);
SendClientMessage(playerid,0xffffff,string);
SB(bizzid);
KB(bizzid);
LB(bizzid);
return 1;
}
else if(aktion == 2) // Einzahlen
{
if(GetPlayerMoney(playerid) < geld) return SendClientMessage(playerid,0xfffff,"Soviel Geld haben sie nicht auf ihrer Hand");
if(geld > 1000000 || geld <= 0) return SendClientMessage(playerid,0xfffff,"Bitte Summen von 1$ bis 1Mio$");
GivePlayerMoney(playerid,-geld);
BizzInfo[bizzid][bkasse] += geld;
format(string,sizeof(string),"Geld Eingezahlt\nGeld in der Kasse: $%d",BizzInfo[bizzid][bkasse]);
SendClientMessage(playerid,0xffffff,string);
SB(bizzid);
KB(bizzid);
LB(bizzid);
return 1;
}
}
}
return 1;
}
ocmd:bizzkaufen(playerid,params[])
{
for(new bizzid=1;bizzid<MAX_BIZZES;bizzid++)
{
if(IsPlayerInRangeOfPoint(playerid,1,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz]))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(BizzInfo[bizzid][bBesitzt] == 1)return SendClientMessage(playerid,0x00FF00,"Dieses Bizz steht nicht zum Verkauf!");
if(Key[playerid] == 1) return SendClientMessage(playerid,0xfffff00,"Sie haben bereits ein Bizz");
if(GetPlayerMoney(playerid) < BizzInfo[bizzid][bpreis]) return SendClientMessage(playerid,0xff00ff00,"Du hast nicht genug Geld für dieses Bizz");
if(GetPlayerScore(playerid) < BizzInfo[bizzid][blevel]) return SendClientMessage(playerid,0xff00ff00,"Du hast nicht genug Score für dieses Bizz");
GivePlayerMoney(playerid,-BizzInfo[bizzid][bpreis]);
new BDatei[64];
format(BDatei,50,"/bizzs/%d.txt",bizzid);
dini_Set(BDatei,"Besitzer",name);
dini_IntSet(BDatei,"Besitzt",1);
BizzInfo[bizzid][bBesitzer] = name;
BizzInfo[bizzid][bBesitzt] = 1;
Key[playerid] = 1;
SP(playerid);
SB(bizzid);
KB(bizzid);
LB(bizzid);
}
}
return 1;
}
ocmd:bizzverkaufen(playerid,params[])
{
for(new bizzid=1;bizzid<MAX_BIZZES;bizzid++)
{
if(IsPlayerInRangeOfPoint(playerid,1,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz]))
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof name);
if(strcmp(BizzInfo[bizzid][bBesitzer],name,false) == 1)return SendClientMessage(playerid,0x00FF00,"Dieses Bizz gehört dir nicht!");
if(Key[playerid] == 0) return SendClientMessage(playerid,0xfffff00,"Sie haben kein Bizz");
new Geld = BizzInfo[bizzid][bkasse];
new BDatei[64];
format(BDatei,50,"/bizzs/%d.txt",bizzid);
dini_Set(BDatei,"Besitzer","Zu Verkaufen");
BizzInfo[bizzid][bBesitzt] = 0;
format(BizzInfo[bizzid][bBesitzer],32,"Zu Verkaufen");
new string[256];
format(string,sizeof(string),"Bizz für $%d verkauft",Geld);
GivePlayerMoney(playerid,Geld);
SendClientMessage(playerid,0xffff0000,string);
Key[playerid] = 0;
SP(playerid);
SB(bizzid);
KB(bizzid);
LB(bizzid);
}
}
return 1;
}
ocmd:cbizz(playerid,params[])
{
new name[32],preis,level;
if(sscanf(params,"sii",name,preis,level)) return SendClientMessage(playerid,0xffff0000,"Benutzung: /cbizz [Name] [Preis] [Level(score)]");
if(preis == 0 || level == 0) return SendClientMessage(playerid,0xffff0000,"Benutzung: /cbizz [Name] [Preis] [Level(score)]");
if(!IsPlayerAdmin(playerid)) return 1;
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
CB(x,y,z,name,level,preis);
return 1;
}
ocmd:dbizz(playerid,params[])
{
if(!IsPlayerAdmin(playerid)) return 1;
new id;
if(sscanf(params,"i",id)) return SendClientMessage(playerid,0xff000ff,"Benutzung: /dbizz [ID] -> Löscht ein bizz");
DB(id);
return 1;
}
stock KB(bizzid)
{
SB(bizzid);
DestroyPickup(BizzInfo[bizzid][bizz_pickup]);
Delete3DTextLabel(BizzInfo[bizzid][bizz_label]);
return 1;
}
stock SB(bizzid) /* Speichert ein Bizz */
{
new BDatei[64];
format(BDatei,50,"/bizzs/%d.txt",bizzid);
dini_Set(BDatei,"Name",BizzInfo[bizzid][bname]);
dini_Set(BDatei,"Besitzer",BizzInfo[bizzid][bBesitzer]);
dini_IntSet(BDatei,"Besitzt",BizzInfo[bizzid][bBesitzt]);
dini_FloatSet(BDatei,"X",BizzInfo[bizzid][bx]);
dini_FloatSet(BDatei,"Y",BizzInfo[bizzid][by]);
dini_FloatSet(BDatei,"Z",BizzInfo[bizzid][bz]);
dini_IntSet(BDatei,"Level",BizzInfo[bizzid][blevel]);
dini_IntSet(BDatei,"Preis",BizzInfo[bizzid][bpreis]);
dini_IntSet(BDatei,"Kasse",BizzInfo[bizzid][bkasse]);
dini_IntSet(BDatei,"Produkte",BizzInfo[bizzid][pProds]);
return 1;
}
stock DB(bizzid) /* Löscht ein Bizz */
{
new pfad[256];
format(pfad,50,"/bizzs/%d.txt",bizzid);
DestroyPickup(BizzInfo[bizzid][bizz_pickup]);
Delete3DTextLabel(BizzInfo[bizzid][bizz_label]);
new string[256];
format(string,sizeof(string),"Bizz: %d wurde gelöscht",bizzid);
print(string);
dini_Remove(pfad);
return 1;
}
stock CB(Float:x,Float:y,Float:z,name[],level,preis) /* Erstellt ein Bizz */
{
new BDatei[64];
for(new bizzid=1;bizzid<MAX_BIZZES;bizzid++)
{
format(BDatei,50,"/bizzs/%d.txt",bizzid);
if(!fexist(BDatei))
{
dini_Create(BDatei);
dini_Set(BDatei,"Name",name);
dini_Set(BDatei,"Besitzer","Zu Verkaufen");
dini_IntSet(BDatei,"Besitzt",0);
dini_FloatSet(BDatei,"X",x);
dini_FloatSet(BDatei,"Y",y);
dini_FloatSet(BDatei,"Z",z);
dini_IntSet(BDatei,"Level",level);
dini_IntSet(BDatei,"Preis",preis);
dini_IntSet(BDatei,"Kasse",0);
dini_IntSet(BDatei,"Produkte",300);
return LB(bizzid);
}
}
return 1;
}
stock LB(bizzid) /* Läd ein Bizz */
{
new BDatei[64];
format(BDatei,50,"/bizzs/%d.txt",bizzid);
if(!fexist(BDatei))return 0;
format(BizzInfo[bizzid][bname],32,"%s",dini_Get(BDatei,"Name"));
format(BizzInfo[bizzid][bBesitzer],32,"%s",dini_Get(BDatei,"Besitzer"));
BizzInfo[bizzid][bx] = dini_Float(BDatei,"X");
BizzInfo[bizzid][by] = dini_Float(BDatei,"Y");
BizzInfo[bizzid][bz] = dini_Float(BDatei,"Z");
BizzInfo[bizzid][blevel] = dini_Int(BDatei,"Level");
BizzInfo[bizzid][bpreis] = dini_Int(BDatei,"Preis");
BizzInfo[bizzid][bkasse] = dini_Int(BDatei,"Kasse");
BizzInfo[bizzid][bBesitzt] = dini_Int(BDatei,"Besitzt");
BizzInfo[bizzid][pProds] = dini_Int(BDatei,"Produkte");
BizzInfo[bizzid][bizz_pickup] = CreatePickup(1273 ,23,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz],0);
new s[128];
if(BizzInfo[bizzid][bBesitzt] == 0)
{
format(s,128,"****[%s]****\nBesitzer: %s\nPreis: %d$\nLevel: %d\nProdukte: %d/500",BizzInfo[bizzid][bname],BizzInfo[bizzid][bBesitzer],BizzInfo[bizzid][bpreis],BizzInfo[bizzid][blevel],BizzInfo[bizzid][pProds]);
//BizzInfo[bizzid][bizz_pickup] = CreatePickup(1273 ,23,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz],0);
}
else
{
format(s,128,"****[%s]****\nBesitzer: %s\nProdukte: %d/500",BizzInfo[bizzid][bname],BizzInfo[bizzid][bBesitzer],BizzInfo[bizzid][pProds]);
//BizzInfo[bizzid][bizz_pickup] = CreatePickup(1239 ,23,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz],0);
}
BizzInfo[bizzid][bizz_label] = Create3DTextLabel(s,0xFF00FF,BizzInfo[bizzid][bx],BizzInfo[bizzid][by],BizzInfo[bizzid][bz],20,0,1);
return 1;
}
stock SP(playerid)
{
new SDatei[64],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(SDatei,50,"/bizzs/player/%s.txt",name);
if(fexist(SDatei))
{
if(Key[playerid] == 1)
{
dini_IntSet(SDatei,"Key",1);
}
else
{
dini_IntSet(SDatei,"Key",0);
}
}
else
{
dini_Create(SDatei);
if(Key[playerid] == 1)
{
dini_IntSet(SDatei,"Key",1);
}
else
{
dini_IntSet(SDatei,"Key",0);
}
}
return 1;
}
stock LP(playerid)
{
new SDatei[64],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(SDatei,50,"/bizzs/player/%s.txt",name);
if(fexist(SDatei))
{
Key[playerid] = dini_Int(SDatei,"Key");
}
else
{
SP(playerid);
}
return 1;
}
stock sscanf(sstring[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(sstring))
#else
if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
sstringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
{
sstringPos++;
}
while (paramPos < paramCount && sstring[sstringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = sstring[sstringPos];
if (ch == '-')
{
neg = -1;
ch = sstring[++sstringPos];
}
do
{
sstringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = sstring[sstringPos];
do
{
sstringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, sstring[sstringPos++]);
}
case 'f':
{
new changestr[16], changepos = 0, strpos = sstringPos;
while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
{
changestr[changepos++] = sstring[strpos++];
}
changestr[changepos] = '\0';
setarg(paramPos,0,_:floatstr(changestr));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
sstringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = sstringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = sstring[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
sstring[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - sstringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, sstring[sstringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
sstring[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
sstringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = sstring[sstringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = sstring[sstringPos++]))
{
setarg(paramPos, i++, ch);
}
}
sstringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
{
sstringPos++;
}
while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
{
sstringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}
Folgende Ordner müssen erstellt werden:
- Bizzs
- bizzs -> player (unterordner)
Nun Hoffe ich ihr genißt es dieses System zu benutzen,
Support per PN, ob ich es beantworte ne andere sache (:P)
MFG