[TuT] Pfandflaschen System

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [TuT] Pfandflaschen System

      Kleine Info vorweg dies ist mein 1 Tutorial.
      Was brauchen wir:
      1. Enum
      2. news
      3. erstellen der Objecte
      4.Timer
      5. Befehl
      6. Dialog


      1.enum
      Als aller erstes erstellen wir ein enum.

      PAWN-Quellcode

      1. enum muellEnum{
      2. }


      Nun befüllen wir den/das Enum mit:
      Pfand Dies bewirkt das wir diese Anzahl an Pfandflaschen finden.
      Float:m_x Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
      Float:m_y Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
      Float:m_z Dies sind die Koordinaten des Objectes und wird für den Befehl verwendet
      Float:m_rx Dies sind die Rotations Koordinaten des Objectes
      Float:m_ry Dies sind die Rotations Koordinaten des Objectes
      Float:m_rz Dies sind die Rotations Koordinaten des Objectes


      PAWN-Quellcode

      1. enum muellEnum{
      2. pfand,
      3. Float:m_x,
      4. Float:m_y,
      5. Float:m_z,
      6. Float:m_rx,
      7. Float:m_ry,
      8. Float:m_rz
      9. }



      So nun haben wir schon mal das enum aber um es zu benutzen brauchen wir noch ein new.

      2.news

      So das muell steht für das wir es einfach muell genannt haben ihr könnt es auch anders nennen z.b flaschen.
      muellEnum steht dafür das das Script weiß von welchen enum wir das gerade abziehen/benutzen.

      PAWN-Quellcode

      1. new muell[][muellEnum] = {
      2. };


      jetzt fehlen natürlich noch die Informationen.

      PAWN-Quellcode

      1. new muell[][muellEnum] = {
      2. { 2,-2271.85278, -116.37270, 34.94200, 0.00000, 0.00000, 0.00000},
      3. { 2,-2278.18530, -116.31293, 34.94200, 0.00000, 0.00000, 0.00000},
      4. { 2,-2285.54272, -116.49574, 34.94200, 0.00000, 0.00000, 0.00000}
      5. };

      Die 2 steht für die anfangs Pfandflaschen in der Mülltonne mann kann auch die Mülltonnen mit unterschiedlichen Pfandflaschen spawnen/startenlassen
      Danach kommen die Koordinaten eures Objectes hier habe ich nur 3 neben einander erstellt.
      Am besten erstellt ihr die Mülltonnen mit einen Editor.
      Dies sollte kein Problem sein.

      Nun erstellen wir noch ein new

      PAWN-Quellcode

      1. new Flaschen[MAX_PLAYERS];

      Dies brauchen wir um unsere Pfandflaschen die wir schon gesammelt haben abzufragen.
      Ihr könnt die Pfandflaschen die ihr schon gesammelt habt abspeichern lassen aber das mache ich nicht in diesem Tutorial mit rein.

      So der Grundbaustein ist schon gesetzt.

      3.Erstellen der Mülltonnen
      Dazu gehen wir unter OnGameModeInit.
      Nun was brauchen wir wir brauchen eine Schleife die die Mülltonnen abfragt die wir oben alle zu stehen haben.
      Das geht so.

      PAWN-Quellcode

      1. for(new i=0; i<sizeof(muell); i++)
      2. {
      3. }


      Dafür steht muell für unser new was wir oben erstellt haben.
      Nun müssen wir das Object noch erstellen lassen.
      Die 1337 steht für die ID des Objectes hier ist es die blaue Mülltonne.
      muell[m_x],muell[m_y],muell[m_z] Stehen für die Koordinaten des Objectes.
      muell[m_rx],muell[m_ry],muell[m_rz] Stehen für die Rotation des Objectes

      PAWN-Quellcode

      1. CreateDynamicObject(1337,muell[i][m_x],muell[i][m_y],muell[i][m_z],muell[i][m_rx],muell[i][m_ry],muell[i][m_rz]);//man kann auch CreateObject benutzen


      Dann sollte es so aussehen

      PAWN-Quellcode

      1. for(new i=0; i<sizeof(muell); i++)
      2. {
      3. CreateDynamicObject(1337,muell[i][m_x],muell[i][m_y],muell[i][m_z],muell[i][m_rx],muell[i][m_ry],muell[i][m_rz]);//man kann auch CreateObject benutzen
      4. }


      So nun lassen wir die Objecte schon erstellen.

      4.Timer
      Wir brauchen einen Timer damit die Mülltonne ja Pfandflaschen dazu bekommen.
      Dafür brauchen wir ein forward das wir einfach oben im Script erstellen.

      PAWN-Quellcode

      1. forward Pfanddazu();

      Den Timer lassen wir am besten auch unter
      OnGameModeInit starten lassen.

      Das Pfanddazu ist einfach der Name des aufgerufenen Publics das wir noch erstellen werden.
      Die 30000 steht dafür das der Timer/Public nach 30 Sekunden abgerufen wird.
      Das False steht dafür das er nur ein mal Läuft.Warum seht ihr noch.Ihr könnt ihn auch Natürlich auf true setzen.

      PAWN-Quellcode

      1. SetTimer("Pfanddazu", 30000, false);



      So was soll passieren wen der Timer/Public abgerufen wird nun ja wir brauchen wieder eine schleife.

      PAWN-Quellcode

      1. public Pfanddazu()
      2. {
      3. for(new i=0; i<sizeof(muell); i++)
      4. {
      5. }
      6. return 1;
      7. }

      So was soll dann passieren?
      wir setzen den pfand den wir oben beim enum zu stehen haben +1 oder +eure zahl die ihr wollt das bedeutet das in der Mülltonne nun 1 Pfandflasche dazu kommt.

      PAWN-Quellcode

      1. public Pfanddazu()
      2. {
      3. for(new i=0; i<sizeof(muell); i++)
      4. {
      5. muell[i][pfand]+=1;
      6. }
      7. return 1;
      8. }


      Da wir aber oben den timer mit False gestzt haben machen wir nun das Noch.
      Wir setzen den Timer Random damit es nicht immer einheitlich ist wie Pfand dazu kommt.
      Das machen wir so.

      PAWN-Quellcode

      1. new randomsekunden[]=
      2. {
      3. 30,
      4. 60,
      5. 90,
      6. 180,
      7. 240,
      8. 300
      9. };

      Die zahlen stehen für die Sekunden zeit z.b 30 das bedeutet das der Timer/Public in 30 Sekunden abgerufen wird bei 60 in 60 Sekunden.
      Wann Pfandflaschen dazu kommen sollen ist euch überlassen.Einfach nur die zahlen ändern.

      Damit es aber auch gerandomt wird brauchen wir noch das hier.

      PAWN-Quellcode

      1. new randomtime = random(sizeof(randomsekunden));

      Die randomsekunden stehen für das new was wir gerade gemacht haben mit den random zahlen.

      Schön und Gut was ist aber mit dem Timer??
      Der Timer ist ganz einfach den setzt ihr unter dem random.

      PAWN-Quellcode

      1. SetTimer("Pfanddazu", 1000*randomsekunden[randomtime], false);

      So das randomsekunden[randomtime] ist einfach eine zahl von allen zahlen die wir eingetragen haben rausgesucht also gerandomt.
      Die 1000* steht dafür dass wir schon 1 Sekunde haben und das mal der random zahl. Da ja der Timer in Millisekunden geht.


      So sollte es dann zum Schluss aussehen.

      PAWN-Quellcode

      1. public Pfanddazu()
      2. {
      3. for(new i=0; i<sizeof(muell); i++)
      4. {
      5. muell[i][pfand]+=1;
      6. }
      7. new randomsekunden[]=
      8. {
      9. 30,
      10. 60,
      11. 90,
      12. 180,
      13. 240,
      14. 300
      15. };
      16. new randomtime = random(sizeof(randomsekunden));
      17. SetTimer("Pfanddazu", 1000*randomsekunden[randomtime], false);
      18. return 1;
      19. }
      Alles anzeigen


      5.Befehl
      Nun zum befehl den befehl erstelle ich mit einem ocmd den nennen wir mal pfandsuchen.
      als erstes brauchen wir wieder eine schleife das Heist.

      PAWN-Quellcode

      1. ocmd:pfandsuchen(playerid,params[])
      2. {
      3. for(new i=0; i<sizeof(muell); i++)
      4. {
      5. }
      6. }


      So nun müssen wir abfragen ob der Spieler in Reichweite ist das geht so.

      PAWN-Quellcode

      1. if(IsPlayerInRangeOfPoint(playerid,3,muell[i][m_x], muell[i][m_y], muell[i][m_z]))


      Dann müssen wir abfragen ob noch Pfandflaschen in der Mülltonne sind.

      PAWN-Quellcode

      1. if(muell[i][pfand]>=1)

      Ihr könnt die 1 auch verändern je nach dem mann erst Pfandflaschen finden soll z.b erst nach 5 soll man welche finden.

      Falls Pfandflaschen drinne sin lassen wir unsere Flaschen[] die wir oben definiert haben + die Pfandflaschen die in der mülltonne sind setzen.

      PAWN-Quellcode

      1. Flaschen[playerid]+=muell[i][pfand];


      Wir können auch noch eine Nachicht schicken lassen das wir welche gefunden haben z.b so

      PAWN-Quellcode

      1. new string[150];
      2. format(string,sizeof(string), "~w~Du hast ~g~%i ~w~Pfandflschen gefunden", muell[i][pfand]);
      3. GameTextForPlayer(playerid, string, 3000, 4);

      Dann Müssen wir die Pfandflaschen der Mülltonne wieder auf 0 setzten das geht so.

      PAWN-Quellcode

      1. muell[i][pfand]=0;

      Das wärs auch schohn
      Hier seht ihr wie ich es gemacht habe.
      Spoiler anzeigen

      PAWN-Quellcode

      1. ocmd:pfandsuchen(playerid,params[])
      2. {
      3. for(new i=0; i<sizeof(muell); i++)
      4. {
      5. if(IsPlayerInRangeOfPoint(playerid,3,muell[i][m_x], muell[i][m_y], muell[i][m_z]))
      6. {
      7. if(muell[i][pfand]>=1)//kann man verändern z.b da man erst ab 5 flaschen diese findet
      8. {
      9. Flaschen[playerid]+=muell[i][pfand];
      10. new string[150];
      11. format(string,sizeof(string), "~w~Du hast ~g~%i ~w~Pfandflschen gefunden", muell[i][pfand]);
      12. GameTextForPlayer(playerid, string, 3000, 4);
      13. muell[i][pfand]=0;
      14. // mann kann noch eine Animation hinzufügen
      15. return 1;
      16. }
      17. else
      18. {
      19. SendClientMessage(playerid,rot,"Die Mülltonne ist leer");// müsst ihr selber anpassen
      20. return 1;
      21. }
      22. }
      23. }
      24. return SendClientMessage(playerid,rot,"Du bist bei keiner Mülltonne");//falls alle i durch sind kommt dass man an keiner mülltonne ist
      25. }
      Alles anzeigen


      6.Dialog
      Jetzt brauchen wir noch einen Ort wo mann die Pfandflaschen verkaufen kann. Dies kann mann mit befehl oder Dialog machen ich mache es hier mit Dialog.
      Aber dafor müssen wir noch den Dialog definieren.

      PAWN-Quellcode

      1. #define DIALOG_LADEN 0


      Die Zahl müsst ihr anpassen.

      Nun müsst ihr ihn noch anzeigen lassen wo müsst ihr selber wissen.

      PAWN-Quellcode

      1. ShowPlayerDialog(playerid,DIALOG_LADEN,DIALOG_STYLE_LIST,"24/7 Laden","Pfandflaschen verkaufen","Auswählen","Abbrechen");

      Nun gehen wir unter OnDialogResponse
      und erstellen ihn.
      was müssen wir alles abfragen wir müssen abfragen welcher dialog??

      PAWN-Quellcode

      1. if(dialogid==DIALOG_LADEN)


      ob er überhaupt Flaschen dabei hat das machen wir mit

      PAWN-Quellcode

      1. if(Flaschen[playerid]>=1)


      wenn er welche dabei hat rechnen wir nun seine Flaschen die er dabei hat mal irgend eine zahl die ihr wollt ich nehme mal 5.

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]*5;//preis kann angepass werden das *25 steht für mal 25 also anzahl deiner pfanflschen mal 25


      Nun geben wir ihn das geld und setzen seine Flaschen wieder auf 0.Euren System anpasse.

      PAWN-Quellcode

      1. sInfo[playerid][geld]+=pfandgeld;
      2. Flaschen[playerid]=0;

      Nun kann man noch eine Message senden lassen das ist euch aber überlassen.

      So sieht es bei mir aus
      Spoiler anzeigen

      PAWN-Quellcode

      1. if(dialogid==DIALOG_LADEN)
      2. {
      3. if(response)
      4. {
      5. if(listitem==0)//bei pfand
      6. {
      7. if(Flaschen[playerid]>=1)
      8. {
      9. new string[180];
      10. new pfandgeld=Flaschen[playerid]*5;//preis kann angepass werden das *25 steht für mal 25 also anzahl deiner pfanflschen mal 25
      11. sInfo[playerid][geld]+=pfandgeld;
      12. format(string, sizeof(string), "-------------Kassenbong---------------");
      13. SendClientMessage(playerid,weiss,string);
      14. format(string, sizeof(string), "{FAFAFA}Du hast %d Flaschen für %d{00BB00}$ {FAFAFA}verkauft",Flaschen[playerid],pfandgeld);
      15. SendClientMessage(playerid,weiss,string);
      16. Flaschen[playerid]=0;
      17. }
      18. else
      19. {
      20. SendClientMessage(playerid,rot,"Du hast keine Pfandflaschen");
      21. }
      22. }
      23. else
      24. {
      25. SendClientMessage(playerid,weiss,"Beären sie uns bald wieder");
      26. }
      27. }
      28. }
      Alles anzeigen


      Ich hoffe ich konnte euch Helfem :thumbsup: :thumbsup:
      MFG. Mogly1


      Du willst scripten Lernen hier...
      TuTorial

      (vom Register und Login bis zum eigenen Multichar-system)
    • aber muss das pfandgeld nicht so ?

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]/5;


      weil *5 da gibt er mir bei 6 Flaschen nur 30


      //edit und hie rnoch ein vorschlag von mir ;)

      PAWN-Quellcode

      1. for(new i=0; i<sizeof(muell); i++)
      2. {
      3. CreateDynamicObject(1337,muell[i][m_x],muell[i][m_y],muell[i][m_z],muell[i][m_rx],muell[i][m_ry],muell[i][m_rz]);//man kann auch CreateObject benutzen
      4. Create3DTextLabel("/pfandsuchen", 0x6495EDFF,muell[i][m_x],muell[i][m_y],muell[i][m_z], 15.0,0);
      5. }
      Scripter aus leidenschaft! und nicht aus profitgier!
    • @Trafico
      das mit dem Pfandgeld
      also

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]*5;

      kannst du anpasswen wie du willst
      aber

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]/5;

      würde doch heissen seine Flaschen druch 5 also für 5 flaschen kriegt er ein Euro z.b
      aber jeder wie er will

      und dein vorschlag ist klasse habe ich wohl vergessen ;D
      MFG. Mogly1


      Du willst scripten Lernen hier...
      TuTorial

      (vom Register und Login bis zum eigenen Multichar-system)
    • Mogly1 schrieb:

      @Trafico
      das mit dem Pfandgeld
      also

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]*5;

      kannst du anpasswen wie du willst
      aber

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]/5;

      würde doch heissen seine Flaschen druch 5 also für 5 flaschen kriegt er ein Euro z.b
      aber jeder wie er will

      und dein vorschlag ist klasse habe ich wohl vergessen ;D
      beides geht irgend wie nicht
      6X25 = 150
      bekomme aber 30 bei metode *5
      und 1 bei /5 ^^

      ich weiß auch nciht mehr weiter
      Scripter aus leidenschaft! und nicht aus profitgier!

    • Trafico schrieb:

      Mogly1 schrieb:

      @Trafico
      das mit dem Pfandgeld
      also

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]*5;

      kannst du anpasswen wie du willst
      aber

      PAWN-Quellcode

      1. new pfandgeld=Flaschen[playerid]/5;

      würde doch heissen seine Flaschen druch 5 also für 5 flaschen kriegt er ein Euro z.b
      aber jeder wie er will

      und dein vorschlag ist klasse habe ich wohl vergessen ;D
      beides geht irgend wie nicht6X25 = 150
      bekomme aber 30 bei metode *5
      und 1 bei /5 ^^

      ich weiß auch nciht mehr weiter
      ja natürlich kirgest du bei *5 nur 30 raus das must du dann zu *25 machen ;D

      PAWN-Quellcode

      1. x=Zahl die mal gerechnet werden soll...
      2. 6x5=30 (x=5)
      3. 6x25=150 (x=25)
      4. new pfandgeld=Flaschen[playerid]*x;

      verstehste?
      MFG. Mogly1


      Du willst scripten Lernen hier...
      TuTorial

      (vom Register und Login bis zum eigenen Multichar-system)