Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Aktiensystem by ErikSon
- #include <a_samp>
- #include <dini>
- #define MAX_AKTIEN 15
- //Farben
- #define Schwarz 0x000000FF
- #define Rot 0xE10000FF
- #define Gelb 0xFFE600FF
- #define HBlau 0x00FFFFFF
- #define DBlau 0x0000FFFF
- #define Blau 0x2E9AFEFF
- #define HGruen 0x00FF00FF
- #define Orange 0xFFAB00FF
- #define Weiss 0xFFFFFFFF
- #define Grau 0xDCDCDCFF
- #define Gold 0xD4A017AA
- #define Lila 0x7800FFFF
- #define Pink 0xFF00CDFF
- #define Gruen 0x009F32FF
- enum
- {
- dAktien = 3000,
- dAktien2 = 3001,
- dAktieKaufen = 3002,
- dAktieVerkaufen = 3003,
- dEditAktie = 3004,
- dEAktienName = 3005,
- dEAktienProzentsatz = 3006,
- dEAktienKosten = 3007,
- dCAktienName = 3008,
- dCAktienProzentsatz = 3009,
- dCAktienKosten = 3010
- }
- enum EEA
- {
- aname[16],
- Float:prozentsatz,
- kosten,
- erstellt
- };
- new Aktie[MAX_AKTIEN][EEA];
- enum lEA
- {
- aname[16],
- kosten,
- prozentsatz
- };
- new EA[MAX_PLAYERS][lEA];
- enum ES
- {
- aid,
- menge
- };
- new Spieler[MAX_PLAYERS][ES][MAX_AKTIEN];
- new akt[MAX_PLAYERS],
- au[MAX_PLAYERS];
- forward update();
- new fmex[128];
- #define SendClientMessageToAllF(%0,%1,%2) format(fmex,128,%1,%2) && SendClientMessageToAll(%0, fmex)
- #define SendClientMessageF(%0,%1,%2) format(fmex,128,%2) && SendClientMessage(%0,%1,fmex)
- //////////////////////////////////////////////////////
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print("Aktiensystem by ErikSon");
- print("--------------------------------------\n");
- new ad[64]; format(ad,64,"/Aktien/Aktien.ini");
- if(!dini_Exists(ad))dini_Create(ad);
- SetTimer("update",888*15,true);
- return LoadAktien(),SaveAktien();
- }
- public OnFilterScriptExit()return SaveAktien();
- public OnPlayerConnect(playerid)return LPAktien(playerid),au[playerid] = 0;
- public OnPlayerDisconnect(playerid, reason)return SPAktien(playerid);
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/aktien", cmdtext, true, 10) == 0)
- {
- new string[1024],buffer[1024],i = 0;
- for(; i<MAX_AKTIEN; i++)if(Aktie[i][erstellt] == 1)format(buffer,1024,"%i| %s | %.2f%% | %i$%c",i,Aktie[i][aname],Aktie[i][prozentsatz],Aktie[i][kosten],(i == MAX_AKTIEN) ? '\0' : '\n'),strins(string,buffer,strlen(string),sizeof(string));
- ShowPlayerDialog(playerid,dAktien,DIALOG_STYLE_LIST,"Aktien",string,"Auswählen","Abbrechen");
- return au[playerid] = 1;
- }
- if(strcmp("/caktie",cmdtext,true,10) == 0)
- {
- if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,Rot,"Du bist kein RCON-Admin!");
- for(new i = 0; i<MAX_AKTIEN; i++)
- {
- if(Aktie[i][erstellt] == 1)continue;
- akt[playerid] = i;
- break;
- }
- return ShowPlayerDialog(playerid,dCAktienName,DIALOG_STYLE_INPUT,"Aktie erstellen - Aktienname","Bitte gebe einen Namen für die Aktie ein.","Weiter","Abbrechen");
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- new header[64],text[256],i = 0;
- switch(dialogid)
- {
- case dAktien:
- {
- if(response)
- {
- format(header,64,"Aktie - %s",Aktie[listitem][aname]);
- if(IsPlayerAdmin(playerid))format(text,256,"Aktien kaufen (%i$ / Aktie)\nAktien verkaufen (Besitz: %i Aktien | %i$ / Aktie)\nAktie bearbeiten",Aktie[listitem][kosten],Spieler[playerid][menge][listitem],Aktie[listitem][kosten]);
- else format(text,256,"Aktien kaufen (%i$ / Aktie)\nAktien verkaufen (Besitz: %i Aktien | %i$ / Aktie)",Aktie[listitem][kosten],Spieler[playerid][menge][listitem],Aktie[listitem][kosten]);
- akt[playerid] = listitem;
- ShowPlayerDialog(playerid,dAktien2,DIALOG_STYLE_LIST,header,text,"Auswählen","Abbrechen");
- return au[playerid] = 0;
- }
- return au[playerid] = 0;
- }
- case dAktien2:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- format(header,64,"Aktie kaufen - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Bitte gebe die Anzahl der Aktien ein,\ndie du kaufen möchtest.\n\nEine Aktie kostet %i$.",Aktie[akt[playerid]][kosten]);
- return ShowPlayerDialog(playerid,dAktieKaufen,DIALOG_STYLE_INPUT,header,text,"Kaufen","Abbrechen");
- }
- case 1:
- {
- format(header,64,"Aktie verkaufen - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Bitte gebe die Anzahl der Aktien ein,\ndie du verkaufen möchtest.\n\nEine Aktie kannst du für %i$ verkaufen.",Aktie[akt[playerid]][kosten]);
- return ShowPlayerDialog(playerid,dAktieVerkaufen,DIALOG_STYLE_INPUT,header,text,"Verkaufen","Abbrechen");
- }
- case 2:
- {
- if(!IsPlayerAdmin(playerid))return 1;
- format(header,64,"Aktie bearbeiten - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Aktienname: '%s'\nKosten / Aktie: %i$",Aktie[akt[playerid]][aname],Aktie[akt[playerid]][kosten]);
- return ShowPlayerDialog(playerid,dEditAktie,DIALOG_STYLE_LIST,header,text,"Bearbeiten","Abbrechen");
- }
- }
- }
- }
- case dAktieKaufen:
- {
- if(response)
- {
- if(!strval(inputtext))return SendClientMessage(playerid,Rot,"Bitte gebe eine Zahl ab 1 ein!");
- if(GetPlayerMoney(playerid) < (Aktie[akt[playerid]][kosten] * strval(inputtext)))return SendClientMessage(playerid,Rot,"Du hast nicht genug Geld!");
- Spieler[playerid][menge][akt[playerid]] = strval(inputtext);
- GivePlayerMoney(playerid,-(Aktie[akt[playerid]][kosten] * strval(inputtext)));
- return SendClientMessageF(playerid,Blau,"Du hast dir %i '%s' Aktien für %i$ gekauft.",strval(inputtext),Aktie[akt[playerid]][aname],(Aktie[akt[playerid]][kosten] * strval(inputtext)));
- }
- }
- case dAktieVerkaufen:
- {
- if(response)
- {
- if(!strval(inputtext))return SendClientMessage(playerid,Rot,"Bitte gebe eine Zahl ab 1 ein!");
- if(Spieler[playerid][menge][akt[playerid]] < strval(inputtext))return SendClientMessage(playerid,Rot,"Du hast nicht genug Aktien!");
- Spieler[playerid][menge][akt[playerid]] -= strval(inputtext);
- GivePlayerMoney(playerid,(Aktie[akt[playerid]][kosten] * strval(inputtext)));
- return SendClientMessageF(playerid,Blau,"Du hast %i '%s' Aktien für %i$ verkauft.",strval(inputtext),Aktie[akt[playerid]][aname],(Aktie[akt[playerid]][kosten] * strval(inputtext)));
- }
- }
- case dEditAktie:
- {
- if(response)
- {
- switch(listitem)
- {
- case 0:
- {
- format(header,64,"Aktienname bearbeiten - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Bitte gebe einen neuen Namen für die Aktie ein.\n\nDie Aktie heißt zur Zeit '%s'.",Aktie[akt[playerid]][aname]);
- return ShowPlayerDialog(playerid,dEAktienName,DIALOG_STYLE_INPUT,header,text,"Aktualisieren","Abbrechen");
- }
- case 1:
- {
- format(header,64,"Aktienpreis bearbeiten - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Bitte gebe einen neuen Preis für die Aktie '%s' ein.\n\nDie Aktie kostet zur Zeit %i$.",Aktie[akt[playerid]][aname],Aktie[akt[playerid]][kosten]);
- return ShowPlayerDialog(playerid,dEAktienKosten,DIALOG_STYLE_INPUT,header,text,"Aktualisieren","Abbrechen");
- }
- case 2:
- {
- format(header,64,"Aktienprozentsatz bearbeiten - %s",Aktie[akt[playerid]][aname]);
- format(text,256,"Bitte gebe einen neuen Prozentsatz für die Aktie '%s' ein.\n\nDer Prozentsatz beträgt zur Zeit %.2f.",Aktie[akt[playerid]][aname],Aktie[akt[playerid]][prozentsatz]);
- return ShowPlayerDialog(playerid,dEAktienProzentsatz,DIALOG_STYLE_INPUT,header,text,"Aktualisieren","Abbrechen");
- }
- }
- }
- }
- case dEAktienName:
- {
- if(response)
- {
- if(!strlen(inputtext))return SendClientMessage(playerid,Rot,"Bitte gebe einen neuen Namen für die Aktie ein!");
- format(Aktie[akt[playerid]][aname],16,"%s",inputtext);
- return SendClientMessageF(playerid,Orange,"Du hast die Aktie in '%s' umbenannt.",inputtext),SaveAktien();
- }
- }
- case dEAktienKosten:
- {
- if(response)
- {
- if(!strval(inputtext))return SendClientMessage(playerid,Rot,"Bitte gebe einen neuen Preis für die Aktie ein!");
- Aktie[akt[playerid]][kosten] = strval(inputtext);
- return SendClientMessageF(playerid,Orange,"Du hast den Preis der Aktie auf %i$ gesetzt.",strval(inputtext));
- }
- }
- case dEAktienProzentsatz:
- {
- if(response)
- {
- if(!strval(inputtext))return SendClientMessage(playerid,Rot,"Bitte gebe einen neuen Prozentsatz für die Aktie ein!");
- Aktie[akt[playerid]][prozentsatz] = strval(inputtext);
- return SendClientMessageF(playerid,Orange,"Du hast den Prozentsatz der Aktie auf %.2f gesetzt.",strval(inputtext));
- }
- }
- case dCAktienName:
- {
- if(response)
- {
- if(!strlen(inputtext))return ShowPlayerDialog(playerid,dCAktienName,DIALOG_STYLE_INPUT,"Aktie erstellen - Aktienname","Bitte gebe einen Namen für die Aktie ein.","Weiter","Abbrechen");
- format(EA[playerid][aname],16,"%s",inputtext);
- return ShowPlayerDialog(playerid,dCAktienKosten,DIALOG_STYLE_INPUT,"Aktie erstellen - Kosten","Bitte gebe den Preis für die Aktie ein.","Weiter","Abbrechen");
- }
- }
- case dCAktienKosten:
- {
- if(response)
- {
- if(!strval(inputtext))return ShowPlayerDialog(playerid,dCAktienKosten,DIALOG_STYLE_INPUT,"Aktie erstellen - Kosten","Bitte gebe den Preis für die Aktie ein.","Weiter","Abbrechen");
- EA[playerid][kosten] = strval(inputtext);
- return ShowPlayerDialog(playerid,dCAktienProzentsatz,DIALOG_STYLE_INPUT,"Aktie erstellen - Prozentsatz","Bitte gebe den Prozentsatz für die Aktie ein.","Weiter","Abbrechen");
- }
- }
- case dCAktienProzentsatz:
- {
- if(response)
- {
- if(!strval(inputtext))return ShowPlayerDialog(playerid,dCAktienProzentsatz,DIALOG_STYLE_INPUT,"Aktie erstellen - Prozentsatz","Bitte gebe den Prozentsatz für die Aktie ein.","Weiter","Abbrechen");
- EA[playerid][prozentsatz] = strval(inputtext);
- SendClientMessage(playerid,Blau,"Du hast die Aktie erfolgreich erstellt.");
- for(; i<MAX_AKTIEN; i++)
- {
- if(Aktie[i][erstellt] == 1)continue;
- format(Aktie[i][aname],16,"%s",EA[playerid][aname]);
- Aktie[i][kosten] = EA[playerid][kosten];
- Aktie[i][prozentsatz] = EA[playerid][prozentsatz];
- Aktie[i][erstellt] = 1;
- SaveAktien();
- break;
- }
- //return SaveAktien();
- //Aktie[akt[playerid]][erstellt] = 1;
- //return SaveAktien(),LoadAktien();
- }
- }
- }
- return 0;
- }
- stock SaveAktien()
- {
- new i,ad[64],str[64]; format(ad,64,"/Aktien/Aktien.ini");
- if(!dini_Exists(ad))dini_Create(ad);
- for(i = 0; i<MAX_AKTIEN; i++)
- {
- format(str,64,"Aktie%i",i);
- dini_Set(ad,str,Aktie[i][aname]);
- format(str,64,"Aktie%i_Prozentsatz",i);
- dini_FloatSet(ad,str,Aktie[i][prozentsatz]);
- format(str,64,"Aktie%i_Kosten",i);
- dini_IntSet(ad,str,Aktie[i][kosten]);
- format(str,64,"Aktie%i_Erstellt",i);
- dini_IntSet(ad,str,Aktie[i][erstellt]);
- }
- return 1;
- }
- stock LoadAktien()
- {
- new i,ad[64],str[64]; format(ad,64,"/Aktien/Aktien.ini");
- if(!dini_Exists(ad))dini_Create(ad);
- for(i = 0; i<MAX_AKTIEN; i++)
- {
- format(str,64,"Aktie%i",i);
- format(Aktie[i][aname],16,dini_Get(ad,str));
- format(str,64,"Aktie%i_Prozentsatz",i);
- Aktie[i][prozentsatz] = dini_Float(ad,str);
- format(str,64,"Aktie%i_Kosten",i);
- Aktie[i][kosten] = dini_Int(ad,str);
- format(str,64,"Aktie%i_Erstellt",i);
- Aktie[i][erstellt] = dini_Int(ad,str);
- }
- return 1;
- }
- stock LPAktien(playerid)
- {
- new pa[64],str[64],i; format(pa,64,"/Aktien/%s.ini",Name(playerid));
- if(!dini_Exists(pa))dini_Create(pa);
- for(i = 0; i<MAX_AKTIEN; i++)
- {
- format(str,64,"Aktie%i",i);
- Spieler[playerid][aid][i] = dini_Int(pa,str);
- format(str,64,"Aktie%i_Menge",i);
- Spieler[playerid][menge][i] = dini_Int(pa,str);
- }
- return 1;
- }
- stock SPAktien(playerid)
- {
- new pa[64],str[64],i; format(pa,64,"/Aktien/%s.ini",Name(playerid));
- if(!dini_Exists(pa))dini_Create(pa);
- for(i = 0; i<MAX_AKTIEN; i++)
- {
- format(str,64,"Aktie%i",i);
- dini_IntSet(pa,str,Spieler[playerid][aid][i]);
- format(str,64,"Aktie%i_Menge",i);
- dini_IntSet(pa,str,Spieler[playerid][menge][i]);
- }
- return 1;
- }
- stock Name(playerid)
- {
- new name[MAX_PLAYERS];
- GetPlayerName(playerid,name,sizeof(name));
- return name;
- }
- public update()
- {
- new i = 0;
- for(; i<MAX_AKTIEN; i++)
- {
- if(Aktie[i][erstellt] == 1)
- {
- new div = random(200)+500;
- new rand = random(10)+10;
- new pm = random (30)+1;
- new Float:ergebnis,Float:ergebnis2,Float:ku;
- switch(pm)
- {
- case 1,5,8,12,15,18,22,24,27,29:
- {
- if(Aktie[i][kosten] == 0)Aktie[i][kosten] = 100;
- //Prozentsatz
- ergebnis = (div / rand);
- ku = (ergebnis / 100);
- ergebnis2 = 1 + ku;
- if(Aktie[i][prozentsatz] < 0)Aktie[i][prozentsatz] -= ergebnis2;
- else Aktie[i][prozentsatz] += ergebnis2;
- //Kosten
- ku = (Aktie[i][kosten] * (Aktie[i][prozentsatz] / 10000));
- if(Aktie[i][kosten] <= 0) Aktie[i][kosten] -= floatround(ku);
- else Aktie[i][kosten] += floatround(ku);
- }
- case 2,3,4,9,13,17,20,23,25,28,30:
- {
- if(Aktie[i][kosten] == 0)Aktie[i][kosten] = 100;
- //Prozentsatz
- ergebnis = (div / rand);
- ku = (ergebnis / 100);
- ergebnis2 = 1 - ku;
- if(Aktie[i][prozentsatz] < 0)Aktie[i][prozentsatz] += ergebnis2;
- else Aktie[i][prozentsatz] -= ergebnis2;
- //Kosten
- ku = (Aktie[i][kosten] * (Aktie[i][prozentsatz] / 10000));
- if(Aktie[i][kosten] <= 0) Aktie[i][kosten] += floatround(ku);
- else Aktie[i][kosten] -= floatround(ku);
- }
- }
- printf("%s / %.2f / %i$",Aktie[i][aname],Aktie[i][prozentsatz],floatround(Aktie[i][kosten]));
- }
- }
- printf("\n\n");
- for(i = 0; i<MAX_PLAYERS; i++)
- {
- if(!IsPlayerConnected(i))continue;
- if(au[i] == 0)continue;
- new string[1024],buffer[1024],a = 0;
- for(; a<MAX_AKTIEN; a++)if(Aktie[a][erstellt] == 1)format(buffer,1024,"%i| %s | %.2f%% | %i$%c",a,Aktie[a][aname],Aktie[a][prozentsatz],Aktie[a][kosten],(a == MAX_AKTIEN) ? '\0' : '\n'),strins(string,buffer,strlen(string),sizeof(string));
- return ShowPlayerDialog(i,dAktien,DIALOG_STYLE_LIST,"Aktien",string,"Auswählen","Abbrechen");
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement