Advertisement
Guest User

Geschenk-FS

a guest
Dec 2nd, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.63 KB | None | 0 0
  1. //Das Script erstellt immer neue Geschenke, nachdem es die alten gelöscht hat, die nicht aufgehoben wurden.
  2. //Wenn ein Geschenk nicht aufgehoben wurde, kann der Spawn nochmal verwendet werden.
  3.  
  4. #include <a_samp>
  5.  
  6. #define MAX_GESCHENK_SPAWNS 10 //Anzahl an möglichen Spawns
  7. #define MAX_GESCHENK_TYPES 5 //Anzahl an Geschenkarten
  8. #define MAX_GESCHENK 4 //Anzahl der Geschenke, die neu geladen werden
  9. #define MAX_BOXES 5 //Anzahl der verschiedenen Box-Modelle
  10.  
  11. new TOTAL_USED; //Anzahl der Spawns, die benutzt wurden
  12.  
  13. new GeschenkTimer;
  14. #define GESCHENK_TIMER_MIN 180 //Anzahl an Minuten, nachdem neue Geschenke erstellt werden
  15. forward SpawnGeschenke(); //Erstellt neue Geschenke.
  16. forward GiveGeschenk(playerid,geschenkid); //Gibt einem Spieler das Geschenk
  17. ////////////////////////////////////////////////////////////////////////////////
  18. enum boxenum
  19. {
  20.     bModel
  21. };
  22. new Box[MAX_BOXES][boxenum]= //ObjectIDs der Weihnachtsgeschenke
  23. {
  24.     {19054},
  25.     {19055},
  26.     {19056},
  27.     {19057},
  28.     {19058}
  29. };
  30. ////////////////////////////////////////////////////////////////////////////////
  31. enum geschenkenum
  32. {
  33.     gPickup,
  34.     bool:gPickedUp,
  35.     gPickupTyp,
  36.     bool:gCreated,
  37.     Text3D:gLabel
  38. };
  39. new Geschenk[MAX_GESCHENK][geschenkenum];
  40. ////////////////////////////////////////////////////////////////////////////////
  41. enum geschenkspawnenum
  42. {
  43.     Float:sXPos,
  44.     Float:sYPos,
  45.     Float:sZPos,
  46.     bool:sUsed
  47. };
  48. new GeschenkSpawn[MAX_GESCHENK_SPAWNS][geschenkspawnenum]=
  49. {
  50.     {2043.5789,1344.7294,10.6719}, //Beispiel - Ist im Bare-Script auf der Straße vor dem Spawn
  51.     {2043.8452,1333.0012,10.6719},
  52.     {2035.4619,1332.7726,10.8203},
  53.     {2035.2000,1343.6503,10.8203},
  54.     {2033.5392,1358.7091,10.8203},
  55.     {2027.8721,1367.9391,10.8130},
  56.     {2036.6246,1376.5812,10.8203},
  57.     {2050.3552,1377.8884,10.6719},
  58.     {2061.3201,1369.0537,10.6719},
  59.     {2067.5522,1380.6266,10.6719}
  60. };
  61. ////////////////////////////////////////////////////////////////////////////////
  62. public OnFilterScriptInit()
  63. {
  64.     for(new i; i < MAX_GESCHENK; i++)//Setzt alle Vars
  65.         Geschenk[i][gPickedUp]=false, Geschenk[i][gCreated]=false;
  66.     for(new i; i < MAX_GESCHENK_SPAWNS; i++)
  67.         GeschenkSpawn[i][sUsed]=false;
  68.     printf("-Geschenke-CFG- Max. Geschenke: %d - Geschenkespawns: %d - Box-Models: %d",MAX_GESCHENK,MAX_GESCHENK_SPAWNS,MAX_BOXES);
  69.     TOTAL_USED=0;
  70.     SpawnGeschenke(); //Erste Erstellung
  71.     GeschenkTimer=SetTimer("SpawnGeschenke",GESCHENK_TIMER_MIN*1000,1);
  72.     print("-Geschenke- Filterscript geladen!");
  73.     return 1;
  74. }
  75.  
  76. public OnFilterScriptExit()
  77. {
  78.     KillTimer(GeschenkTimer);
  79.     for(new i; i < MAX_GESCHENK; i++)
  80.         DestroyPickup(Geschenk[i][gPickup]),Delete3DTextLabel(Geschenk[i][gLabel]);
  81.     return 1;
  82. }
  83.  
  84. public OnPlayerPickUpPickup(playerid, pickupid)
  85. {
  86.     if(!IsPlayerNPC(playerid))
  87.     {
  88.         for(new i; i < MAX_GESCHENK; i++)
  89.         {
  90.             if(pickupid == Geschenk[i][gPickup])
  91.                 GiveGeschenk(playerid,i);
  92.         }
  93.     }
  94.     return 1;
  95. }
  96.  
  97. public GiveGeschenk(playerid,geschenkid)
  98. {
  99.     DestroyPickup(Geschenk[geschenkid][gPickup]);
  100.     Geschenk[geschenkid][gPickedUp]=true;
  101.     Delete3DTextLabel(Geschenk[geschenkid][gLabel]);
  102.     switch(Geschenk[geschenkid][gPickupTyp]) //Die verschiedenen Pickup-Typen, sprich Geld, Waffen, RP, etc.
  103.     {
  104.         case 0:
  105.         {
  106.             //Hier kommt rein, was passiert
  107.         }
  108.         case 1:
  109.         {
  110.             //Hier kommt rein, was passiert
  111.         }
  112.         case 2:
  113.         {
  114.             //Hier kommt rein, was passiert
  115.         }
  116.         case 3:
  117.         {
  118.             //Hier kommt rein, was passiert
  119.         }
  120.         case 4:
  121.         {
  122.             //Hier kommt rein, was passiert
  123.         }
  124.     }
  125.     return 1;
  126. }
  127.  
  128. public SpawnGeschenke() //Lädt neue Geschenke & löscht die nicht aufgehobenen
  129. {
  130.     if(TOTAL_USED >= MAX_GESCHENK_SPAWNS)
  131.         return print("-Geschenk- WARNUNG: Alle moeglichen Spawns wurden verbraucht!");
  132.     new rand,model,label[128];
  133.     for(new i; i < MAX_GESCHENK; i++)
  134.     {
  135.         if(Geschenk[i][gCreated]==true && Geschenk[i][gPickedUp]==false)
  136.             DestroyPickup(Geschenk[i][gPickup]),Delete3DTextLabel(Geschenk[i][gLabel]),TOTAL_USED--;
  137.         model=random(MAX_BOXES);
  138.         Geschenk[i][gPickupTyp]=random(MAX_GESCHENK_TYPES);
  139.         Geschenk[i][gPickedUp]=false;
  140.         if(TOTAL_USED >= MAX_GESCHENK_SPAWNS-MAX_GESCHENK) //Wenn weniger Spawns als zu erstellende Geschenke vorhanden sind.
  141.         {
  142.             print("-Geschenk- Limit erreicht! Suche...");
  143.             new found=0;
  144.             for(new z; z < MAX_GESCHENK_SPAWNS && found==0; z++)
  145.             {
  146.                 if(GeschenkSpawn[z][sUsed]==false)
  147.                 {
  148.                     Geschenk[i][gCreated]=true;
  149.                     Geschenk[i][gPickup]=CreatePickup(Box[model][bModel],1,GeschenkSpawn[z][sXPos],GeschenkSpawn[z][sYPos],GeschenkSpawn[z][sZPos]);
  150.                     format(label,sizeof(label),"{00FF00}Weihnachtsgeschenk\n{FFFFFF}Nummer %d",z+1); //+1 deswegen, weil es dumm aussieht, wenn "Nummer 0" dort steht.
  151.                     Geschenk[i][gLabel]=Create3DTextLabel(label, 0xFFFFFFFF, GeschenkSpawn[z][sXPos],GeschenkSpawn[z][sYPos],GeschenkSpawn[z][sZPos]+1.5, 15.0, 0, 0);
  152.                     TOTAL_USED++;
  153.                     printf("-Geschenk- %d geladen (Gefunden: %d)!",i, z);
  154.                     found=1;
  155.                 }
  156.             }
  157.         }
  158.         else
  159.         {
  160.             newspawn:
  161.             rand=random(MAX_GESCHENK_SPAWNS);
  162.             if(GeschenkSpawn[rand][sUsed]==true)
  163.                 goto newspawn;
  164.             Geschenk[i][gCreated]=true;
  165.             Geschenk[i][gPickup]=CreatePickup(Box[model][bModel],1,GeschenkSpawn[rand][sXPos],GeschenkSpawn[rand][sYPos],GeschenkSpawn[rand][sZPos]);
  166.             format(label,sizeof(label),"{00FF00}Weihnachtsgeschenk\n{FFFFFF}Nummer %d",rand+1); //+1 deswegen, weil es dumm aussieht, wenn "Nummer 0" dort steht.
  167.             Geschenk[i][gLabel]=Create3DTextLabel(label, 0xFFFFFFFF, GeschenkSpawn[rand][sXPos],GeschenkSpawn[rand][sYPos],GeschenkSpawn[rand][sZPos]+1.5, 15.0, 0, 0);
  168.             TOTAL_USED++;
  169.         }
  170.     }
  171.     return 1;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement