Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Das Script erstellt immer neue Geschenke, nachdem es die alten gelöscht hat, die nicht aufgehoben wurden.
- //Wenn ein Geschenk nicht aufgehoben wurde, kann der Spawn nochmal verwendet werden.
- #include <a_samp>
- #define MAX_GESCHENK_SPAWNS 10 //Anzahl an möglichen Spawns
- #define MAX_GESCHENK_TYPES 5 //Anzahl an Geschenkarten
- #define MAX_GESCHENK 4 //Anzahl der Geschenke, die neu geladen werden
- #define MAX_BOXES 5 //Anzahl der verschiedenen Box-Modelle
- new TOTAL_USED; //Anzahl der Spawns, die benutzt wurden
- new GeschenkTimer;
- #define GESCHENK_TIMER_MIN 180 //Anzahl an Minuten, nachdem neue Geschenke erstellt werden
- forward SpawnGeschenke(); //Erstellt neue Geschenke.
- forward GiveGeschenk(playerid,geschenkid); //Gibt einem Spieler das Geschenk
- ////////////////////////////////////////////////////////////////////////////////
- enum boxenum
- {
- bModel
- };
- new Box[MAX_BOXES][boxenum]= //ObjectIDs der Weihnachtsgeschenke
- {
- {19054},
- {19055},
- {19056},
- {19057},
- {19058}
- };
- ////////////////////////////////////////////////////////////////////////////////
- enum geschenkenum
- {
- gPickup,
- bool:gPickedUp,
- gPickupTyp,
- bool:gCreated,
- Text3D:gLabel
- };
- new Geschenk[MAX_GESCHENK][geschenkenum];
- ////////////////////////////////////////////////////////////////////////////////
- enum geschenkspawnenum
- {
- Float:sXPos,
- Float:sYPos,
- Float:sZPos,
- bool:sUsed
- };
- new GeschenkSpawn[MAX_GESCHENK_SPAWNS][geschenkspawnenum]=
- {
- {2043.5789,1344.7294,10.6719}, //Beispiel - Ist im Bare-Script auf der Straße vor dem Spawn
- {2043.8452,1333.0012,10.6719},
- {2035.4619,1332.7726,10.8203},
- {2035.2000,1343.6503,10.8203},
- {2033.5392,1358.7091,10.8203},
- {2027.8721,1367.9391,10.8130},
- {2036.6246,1376.5812,10.8203},
- {2050.3552,1377.8884,10.6719},
- {2061.3201,1369.0537,10.6719},
- {2067.5522,1380.6266,10.6719}
- };
- ////////////////////////////////////////////////////////////////////////////////
- public OnFilterScriptInit()
- {
- for(new i; i < MAX_GESCHENK; i++)//Setzt alle Vars
- Geschenk[i][gPickedUp]=false, Geschenk[i][gCreated]=false;
- for(new i; i < MAX_GESCHENK_SPAWNS; i++)
- GeschenkSpawn[i][sUsed]=false;
- printf("-Geschenke-CFG- Max. Geschenke: %d - Geschenkespawns: %d - Box-Models: %d",MAX_GESCHENK,MAX_GESCHENK_SPAWNS,MAX_BOXES);
- TOTAL_USED=0;
- SpawnGeschenke(); //Erste Erstellung
- GeschenkTimer=SetTimer("SpawnGeschenke",GESCHENK_TIMER_MIN*1000,1);
- print("-Geschenke- Filterscript geladen!");
- return 1;
- }
- public OnFilterScriptExit()
- {
- KillTimer(GeschenkTimer);
- for(new i; i < MAX_GESCHENK; i++)
- DestroyPickup(Geschenk[i][gPickup]),Delete3DTextLabel(Geschenk[i][gLabel]);
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(!IsPlayerNPC(playerid))
- {
- for(new i; i < MAX_GESCHENK; i++)
- {
- if(pickupid == Geschenk[i][gPickup])
- GiveGeschenk(playerid,i);
- }
- }
- return 1;
- }
- public GiveGeschenk(playerid,geschenkid)
- {
- DestroyPickup(Geschenk[geschenkid][gPickup]);
- Geschenk[geschenkid][gPickedUp]=true;
- Delete3DTextLabel(Geschenk[geschenkid][gLabel]);
- switch(Geschenk[geschenkid][gPickupTyp]) //Die verschiedenen Pickup-Typen, sprich Geld, Waffen, RP, etc.
- {
- case 0:
- {
- //Hier kommt rein, was passiert
- }
- case 1:
- {
- //Hier kommt rein, was passiert
- }
- case 2:
- {
- //Hier kommt rein, was passiert
- }
- case 3:
- {
- //Hier kommt rein, was passiert
- }
- case 4:
- {
- //Hier kommt rein, was passiert
- }
- }
- return 1;
- }
- public SpawnGeschenke() //Lädt neue Geschenke & löscht die nicht aufgehobenen
- {
- if(TOTAL_USED >= MAX_GESCHENK_SPAWNS)
- return print("-Geschenk- WARNUNG: Alle moeglichen Spawns wurden verbraucht!");
- new rand,model,label[128];
- for(new i; i < MAX_GESCHENK; i++)
- {
- if(Geschenk[i][gCreated]==true && Geschenk[i][gPickedUp]==false)
- DestroyPickup(Geschenk[i][gPickup]),Delete3DTextLabel(Geschenk[i][gLabel]),TOTAL_USED--;
- model=random(MAX_BOXES);
- Geschenk[i][gPickupTyp]=random(MAX_GESCHENK_TYPES);
- Geschenk[i][gPickedUp]=false;
- if(TOTAL_USED >= MAX_GESCHENK_SPAWNS-MAX_GESCHENK) //Wenn weniger Spawns als zu erstellende Geschenke vorhanden sind.
- {
- print("-Geschenk- Limit erreicht! Suche...");
- new found=0;
- for(new z; z < MAX_GESCHENK_SPAWNS && found==0; z++)
- {
- if(GeschenkSpawn[z][sUsed]==false)
- {
- Geschenk[i][gCreated]=true;
- Geschenk[i][gPickup]=CreatePickup(Box[model][bModel],1,GeschenkSpawn[z][sXPos],GeschenkSpawn[z][sYPos],GeschenkSpawn[z][sZPos]);
- format(label,sizeof(label),"{00FF00}Weihnachtsgeschenk\n{FFFFFF}Nummer %d",z+1); //+1 deswegen, weil es dumm aussieht, wenn "Nummer 0" dort steht.
- Geschenk[i][gLabel]=Create3DTextLabel(label, 0xFFFFFFFF, GeschenkSpawn[z][sXPos],GeschenkSpawn[z][sYPos],GeschenkSpawn[z][sZPos]+1.5, 15.0, 0, 0);
- TOTAL_USED++;
- printf("-Geschenk- %d geladen (Gefunden: %d)!",i, z);
- found=1;
- }
- }
- }
- else
- {
- newspawn:
- rand=random(MAX_GESCHENK_SPAWNS);
- if(GeschenkSpawn[rand][sUsed]==true)
- goto newspawn;
- Geschenk[i][gCreated]=true;
- Geschenk[i][gPickup]=CreatePickup(Box[model][bModel],1,GeschenkSpawn[rand][sXPos],GeschenkSpawn[rand][sYPos],GeschenkSpawn[rand][sZPos]);
- format(label,sizeof(label),"{00FF00}Weihnachtsgeschenk\n{FFFFFF}Nummer %d",rand+1); //+1 deswegen, weil es dumm aussieht, wenn "Nummer 0" dort steht.
- Geschenk[i][gLabel]=Create3DTextLabel(label, 0xFFFFFFFF, GeschenkSpawn[rand][sXPos],GeschenkSpawn[rand][sYPos],GeschenkSpawn[rand][sZPos]+1.5, 15.0, 0, 0);
- TOTAL_USED++;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement