Bizsystem

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hier das habe ich eben in Forum gefunden ist zwar [DYNAMISCH]
    aber ich finde es sehr schön



    #define FILTERSCRIPT


    #include <a_samp>
    #include <ocmd>
    #include <dini>


    #define MAX_BIZZES 500


    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()
    {
    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,"/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,"{FFD200}Benutzung:{FEFEFE} /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,"{FFD200}Benutzung:{FEFEFE} /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,"{FFD200}Benutzung:{FEFEFE} /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:bizzerstellen(playerid,params[])
    {
    new name[32],preis,level;
    if(sscanf(params,"sii",name,preis,level)) return SendClientMessage(playerid,0xffff0000,"{FFD200}Benutzung:{FEFEFE} /bizzerstellen [Name] [Preis] [Level(score)]");
    if(preis == 0 || level == 0) return SendClientMessage(playerid,0xffff0000,"{FFD200}Benutzung:{FEFEFE} /bizzerstellen [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:bizzloeschen(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid)) return 1;
    new id;
    if(sscanf(params,"i",id)) return SendClientMessage(playerid,0xff000ff,"{FFD200}Benutzung:{FEFEFE} /bizzloeschen [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;
    }

    Hello World