RI AuswahlGUI [v0.2.0]

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

    • RI AuswahlGUI [v0.2.0]

      Moinsen Breadfish,

      Diesmal handelt es sich um ein AuswahlGUI, wie die Überschrift auch schon verrät. Es basiert auf der ClassSelection von SAMP
      Funktionen:

      PAWN-Quellcode

      1. ShowPlayerChooseMenu(playerid,menuid,maxitems,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ);
      2. SetPlayerCam(playerid,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ); // vgl. SetPlayerCameraPos & LookAt
      3. LinkTextDrawToMenu(Text:TextdrawID,forplayerid,menuid,itemid); // "Attache" einen Textdraw zu einem Menü
      4. DelinkTextDrawFromMenu(Text:TextdrawID,fromplayerid,menuid,itemid); // "Detache" einen Textdraw von einem Menü
      5. //-----ShowPlayerChooseMenu ist wiefolgt aufgebaut:
      6. playerid // Der Spieler, wem das Menü gezeigt werden soll
      7. menuid // Die MenüID, welche für die Callbacks benötigt wird (vgl. DialogIDs)
      8. maxitems // Maximale Anzahl an Menüpunkten
      9. CamX // Die Koordinate X, wo die Kamera des Spielers platziert werden soll
      10. CamY // Die Koordinate Y, wo die Kamera des Spielers platziert werden soll
      11. CamZ // Die Koordinate Z, wo die Kamera des Spielers platziert werden soll
      12. lookx // Die Koordinate X, auf die der Spieler schauen soll
      13. looky // Die Koordinate X, auf die der Spieler schauen soll
      14. lookz // Die Koordinate X, auf die der Spieler schauen soll
      15. //------Callbacks-------
      16. OnChooseMenuResponse(playerid,menuid,itemid); // Wenn diese Funktion 1 returnt, schließt sich das GUI, andernfalls bleibt es offen
      17. OnPlayerSwitchMenuItem(playerid,menuid,itemid);
      Alles anzeigen

      Beispiel:

      PAWN-Quellcode

      1. /* SA-MP ShowPlayerChooseMenu Testscript
      2. *
      3. * (c) Copyright 20011-2012, RealGamer
      4. *
      5. */
      6. #include a_samp
      7. #include ChooseMenu
      8. main(){}
      9. new Text:Textdraw7,Text:Textdraw6,Text:Textdraw5;
      10. public OnGameModeInit()
      11. {
      12. Textdraw7 = TextDrawCreate(247.000000, 339.000000, "Zeile1");
      13. Textdraw5 = TextDrawCreate(245.000000, 315.000000, "Zeile2");
      14. Textdraw6 = TextDrawCreate(246.000000, 327.000000, "Zeile3");
      15. return 1;
      16. }
      17. public OnPlayerCommandText(playerid,cmdtext[])
      18. {
      19. if(!strcmp(cmdtext,"/test"))
      20. {
      21. new Float:x,Float:y,Float:z;
      22. GetPlayerPos(playerid,x,y,z);
      23. ShowPlayerChooseMenu(playerid,0,3,x,y,z+4.0,x+5.0,y+1.0,z+4.0);
      24. LinkTextDrawToMenu(Textdraw7,playerid,0,0);
      25. LinkTextDrawToMenu(Textdraw6,playerid,0,1);
      26. LinkTextDrawToMenu(Textdraw5,playerid,0,2);
      27. LinkTextDrawToMenu(Textdraw5,playerid,0,1);
      28. SendClientMessage(playerid,0xFFFFFFFF,"Menü geöffnet!");
      29. return 1;
      30. }
      31. if(!strcmp(cmdtext,"/testing"))
      32. {
      33. DelinkTextDrawFromMenu(Textdraw7,playerid,0,0);
      34. DelinkTextDrawFromMenu(Textdraw6,playerid,0,1);
      35. DelinkTextDrawFromMenu(Textdraw5,playerid,0,2);
      36. DelinkTextDrawFromMenu(Textdraw5,playerid,0,1);
      37. SendClientMessage(playerid,0xFFFFFFFF,"Textdraws entfernt!");
      38. return 1;
      39. }
      40. return 1;
      41. }
      42. public OnPlayerConnect(playerid)
      43. {
      44. SendClientMessage(playerid,0xFFFFFFFF,"Moinsen!");
      45. return 1;
      46. }
      47. public OnPlayerSpawn(playerid)
      48. {
      49. // if(GetPVarInt(playerid,"SpawnInclude")) return SetPVarInt(playerid,"SpawnInclude",0);
      50. SendClientMessage(playerid,0xFFFFFFFF,"YES!");
      51. return 1;
      52. }
      53. public OnPlayerSwitchMenuItem(playerid, menuid, itemid)
      54. {
      55. new str[128];
      56. format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
      57. SendClientMessage(playerid,0xFFFFFFFF,str);
      58. if(menuid == 0)
      59. {
      60. switch(itemid)
      61. {
      62. case 0:
      63. {
      64. SetPlayerCam(playerid,233.9133,-100.6737,1.4297+4.0,233.9133+5.0,-100.6737+1.0,1.4297+4.0);
      65. }
      66. case 1:
      67. {
      68. SetPlayerCam(playerid,233.3902,-128.8838,1.4297+4.0,233.3902+5.0,-128.8838+1.0,1.4297+4.0);
      69. }
      70. case 2:
      71. {
      72. SetPlayerCam(playerid,229.3171,-181.3029,1.4297+4.0,233.229+5.0,-181.3029+1.0,1.4297+4.0);
      73. }
      74. }
      75. }
      76. return 1;
      77. }
      78. public OnChooseMenuResponse(playerid, menuid, itemid)
      79. {
      80. new str[128];
      81. format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
      82. SendClientMessage(playerid,0xFFFFFFFF,str);
      83. if(itemid == 2) // Nur, wenn er das Item 2 gewählt hat, kommt er aus dem GUI raus
      84. return 1;
      85. return 0;
      86. }
      Alles anzeigen

      Vorschau:



      Installation:
      Platziert die eben heruntergeladene Datei "ChooseMenu" in eurem
      PAWNO/includes Ordner.
      Am Anfang des Scriptes schreibt ihr:

      PAWN-Quellcode

      1. #include <ChooseMenu>

      Vorschläge?
      Postet sie einfach hier im Thread
      Probleme?
      Support über PN&Thread
      Edit's:
      1. Update: Version 0.1.1
      2. Falsche Beschreibun
      g
      3. Update: Version 0.2.0
      Changelog:
      Rechnung behoben, die maxitems nicht richtig ausgab (v 0.1.1)
      De-/LinkTextDrawFrom-/ToMenu geaddet (v 0.2.0)
      SetPlayerCam geaddet (v 0.2.0)


      Download:
      PasteBin
      Oder Anhang

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von RG_ ()

    • Soo gleich erstes Update:

      Es gab einen Fehler in der Berechnung des nächsten Items, sobald die classid größer als maxitems war...


      Feedback & Vorschläge sind erwünscht :]

      /Edit: Die Anfangsbreschreibung war ja ma fail D:, habs ma berichtigt


      /Edit: v 0.2.0 is draußen...
      Neuerungen:

      PAWN-Quellcode

      1. SetPlayerCam(playerid,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ); // vgl. SetPlayerCameraPos & LookAt
      2. LinkTextDrawToMenu(Text:TextdrawID,forplayerid,menuid,itemid); // "Attache" einen Textdraw zu einem Menü
      3. DelinkTextDrawFromMenu(Text:TextdrawID,fromplayerid,menuid,itemid); // "Detache" einen Textdraw von einem Menü

      SetPlayerCam fügt simplerweise einfach nur SetPlayerCameraPos & SetPlayerCameraLookAt zusammen
      Delink & LinkTextdraw verlinkt einen Textdraw zu einem Menü eines Spielers, sprich, ruft er das Item X vom Menü Y auf, bekommt er den Textdraw Z zu sehen

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von RG_ ()