Moinsen Breadfish,
Diesmal handelt es sich um ein AuswahlGUI, wie die Überschrift auch schon verrät. Es basiert auf der ClassSelection von SAMP
Funktionen:
ShowPlayerChooseMenu(playerid,menuid,maxitems,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ);
SetPlayerCam(playerid,Float:CamX,Float:CamY,Float:CamZ,Float:LookX,Float:LookY,Float:LookZ); // vgl. SetPlayerCameraPos & LookAt
LinkTextDrawToMenu(Text:TextdrawID,forplayerid,menuid,itemid); // "Attache" einen Textdraw zu einem Menü
DelinkTextDrawFromMenu(Text:TextdrawID,fromplayerid,menuid,itemid); // "Detache" einen Textdraw von einem Menü
//-----ShowPlayerChooseMenu ist wiefolgt aufgebaut:
playerid // Der Spieler, wem das Menü gezeigt werden soll
menuid // Die MenüID, welche für die Callbacks benötigt wird (vgl. DialogIDs)
maxitems // Maximale Anzahl an Menüpunkten
CamX // Die Koordinate X, wo die Kamera des Spielers platziert werden soll
CamY // Die Koordinate Y, wo die Kamera des Spielers platziert werden soll
CamZ // Die Koordinate Z, wo die Kamera des Spielers platziert werden soll
lookx // Die Koordinate X, auf die der Spieler schauen soll
looky // Die Koordinate X, auf die der Spieler schauen soll
lookz // Die Koordinate X, auf die der Spieler schauen soll
//------Callbacks-------
OnChooseMenuResponse(playerid,menuid,itemid); // Wenn diese Funktion 1 returnt, schließt sich das GUI, andernfalls bleibt es offen
OnPlayerSwitchMenuItem(playerid,menuid,itemid);
Beispiel:
/* SA-MP ShowPlayerChooseMenu Testscript
*
* (c) Copyright 20011-2012, RealGamer
*
*/
#include a_samp
#include ChooseMenu
main(){}
new Text:Textdraw7,Text:Textdraw6,Text:Textdraw5;
public OnGameModeInit()
{
Textdraw7 = TextDrawCreate(247.000000, 339.000000, "Zeile1");
Textdraw5 = TextDrawCreate(245.000000, 315.000000, "Zeile2");
Textdraw6 = TextDrawCreate(246.000000, 327.000000, "Zeile3");
return 1;
}
public OnPlayerCommandText(playerid,cmdtext[])
{
if(!strcmp(cmdtext,"/test"))
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
ShowPlayerChooseMenu(playerid,0,3,x,y,z+4.0,x+5.0,y+1.0,z+4.0);
LinkTextDrawToMenu(Textdraw7,playerid,0,0);
LinkTextDrawToMenu(Textdraw6,playerid,0,1);
LinkTextDrawToMenu(Textdraw5,playerid,0,2);
LinkTextDrawToMenu(Textdraw5,playerid,0,1);
SendClientMessage(playerid,0xFFFFFFFF,"Menü geöffnet!");
return 1;
}
if(!strcmp(cmdtext,"/testing"))
{
DelinkTextDrawFromMenu(Textdraw7,playerid,0,0);
DelinkTextDrawFromMenu(Textdraw6,playerid,0,1);
DelinkTextDrawFromMenu(Textdraw5,playerid,0,2);
DelinkTextDrawFromMenu(Textdraw5,playerid,0,1);
SendClientMessage(playerid,0xFFFFFFFF,"Textdraws entfernt!");
return 1;
}
return 1;
}
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid,0xFFFFFFFF,"Moinsen!");
return 1;
}
public OnPlayerSpawn(playerid)
{
// if(GetPVarInt(playerid,"SpawnInclude")) return SetPVarInt(playerid,"SpawnInclude",0);
SendClientMessage(playerid,0xFFFFFFFF,"YES!");
return 1;
}
public OnPlayerSwitchMenuItem(playerid, menuid, itemid)
{
new str[128];
format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
SendClientMessage(playerid,0xFFFFFFFF,str);
if(menuid == 0)
{
switch(itemid)
{
case 0:
{
SetPlayerCam(playerid,233.9133,-100.6737,1.4297+4.0,233.9133+5.0,-100.6737+1.0,1.4297+4.0);
}
case 1:
{
SetPlayerCam(playerid,233.3902,-128.8838,1.4297+4.0,233.3902+5.0,-128.8838+1.0,1.4297+4.0);
}
case 2:
{
SetPlayerCam(playerid,229.3171,-181.3029,1.4297+4.0,233.229+5.0,-181.3029+1.0,1.4297+4.0);
}
}
}
return 1;
}
public OnChooseMenuResponse(playerid, menuid, itemid)
{
new str[128];
format(str,sizeof str,"Menü %d, Item %d",menuid,itemid);
SendClientMessage(playerid,0xFFFFFFFF,str);
if(itemid == 2) // Nur, wenn er das Item 2 gewählt hat, kommt er aus dem GUI raus
return 1;
return 0;
}
Vorschau:
Installation:
Platziert die eben heruntergeladene Datei "ChooseMenu" in eurem
PAWNO/includes Ordner.
Am Anfang des Scriptes schreibt ihr: #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 Beschreibung
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