Undzwar möchte ich ein Neues System einbauen für Premium Spieler.
Dies ist wenn sie /pboombox machen das sie dann eine Stream URL eingeben müssen.
Wenn sie das Gemacht habe wird eine Kleine Musikbox gespawnt und darüber lauft der Stream und man kann es In Game hören.
Boombox Streaming
- Smokey.
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Hallo,
Ich habe mich mal kurz hingesetzt und dir was gecodet. Info ( Ich habe es noch nicht getestet.)
Oben im Script unter Incudes:
#define DIALOG_RadioBox 344
ocmd:pboombox(playerid)
{
// Hier musst du halt noch abfragen ob der User Premium hat oder nicht.
ShowPlayerDialog(playerid,DIALOG_RadioBox,DIALOG_STYLE_INPUT,"Radio","Bitte gebe einen Link ein um\nden Radiosender abzuspielen:","Okay","Abbrechen");
return 1;
}Das noch unter OnDialogResponse:
if(dialogid==DIALOG_RadioBox)
{
new string[128],Float:x,Float:y,Float:z;
if(!response)return 1;
PlayAudioStreamForPlayer(playerid,strval(inputtext));
SendClientMessage(playerid,-1,"Du hast folgenden Link eingegeben:");
format(string,sizeof(string),"%s",strval(inputtext));
SendClientMessage(playerid,-1,string);
GetPlayerPos(playerid,x,y,z);
CreateObject(1841,x,y,z,0.0,0.0,0.0);
return 1;
}Mfg
-
strval(inputtext)
strval formiert den String in einer Zahl um, daher reicht nur inputtext. -
strval formiert den String in einer Zahl um, daher reicht nur inputtext.@ Mencet
Danke, habe es selber übersehen.Probier es mal so
if(dialogid==DIALOG_RadioBox)
{
new string[128],Float:x,Float:y,Float:z;
if(response)
{
if(strlen(inputtext)>8)
{
PlayAudioStreamForPlayer(playerid,inputtext);
SendClientMessage(playerid,-1,"Du hast folgenden Link eingegen:");
format(string,sizeof(string),"%s",inputtext);
SendClientMessage(playerid,-1,string);
GetPlayerPos(playerid,x,y,z);
CreateObject(1841,x,y,z,0.0,0.0,0.0);
}
else
{
SendClientMessage(playerid,-1,"Fehler! (Ungültiger Link)");
}
}
return 1;
}Mfg
-
Beitrag von SLaYz ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Beitrag von Smokey. ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar. -
Wie meinst du das? Ich Arbeite gerade an dem Script, da dies einige Fehler enthält
-
Hallo,
Ich habe mich mal kurz hingesetzt und dir was gecodet. Info ( Ich habe es noch nicht getestet.)
Oben im Script unter Incudes:
#define DIALOG_RadioBox 344
ocmd:pboombox(playerid)
{
// Hier musst du halt noch abfragen ob der User Premium hat oder nicht.
ShowPlayerDialog(playerid,DIALOG_RadioBox,DIALOG_STYLE_INPUT,"Radio","Bitte gebe einen Link ein um\nden Radiosender abzuspielen:","Okay","Abbrechen");
return 1;
}Das noch unter OnDialogResponse:
if(dialogid==DIALOG_RadioBox)
{
new string[128],Float:x,Float:y,Float:z;
if(!response)return 1;
PlayAudioStreamForPlayer(playerid,strval(inputtext));
SendClientMessage(playerid,-1,"Du hast folgenden Link eingegeben:");
format(string,sizeof(string),"%s",strval(inputtext));
SendClientMessage(playerid,-1,string);
GetPlayerPos(playerid,x,y,z);
CreateObject(1841,x,y,z,0.0,0.0,0.0);
return 1;
}Mfg
Ich habs jetzt mal auf die Art gemacht.
Aber es Kommt kein Object und es wird auch keine Musik gestreamt. -
Morgen werde ich dir den Code nochmal Schicken, ich habe nun einige Fehler behoben.
-
Morgen werde ich dir den Code nochmal Schicken, ich habe nun einige Fehler behoben.
Ok, Danke dir. -
Soo, es ist nicht Perfekt und nicht zu 100% komplett Getestet, es sollte aber so ohne Probleme gehen.
#include <a_samp>
#include <streamer>
#include <ocmd>/**
* Enum der Dialoge
*
* DLG_MusikBox | Definiertes Dialog für die MusikBox um eine zu Erstellen
* DLG_MusikBox_HAS_DELETE | Definiertes Dialog für das Löschen der MusikBox falls eine Vorhanden ist
* DGL_MusikBox_DELETE | Definiertes Dialog für das Löschen der MusikBox falls eine Vorhanden ist
* DGL_Info | Definiertes Dialog um eine Information an den Spieler zu geben
**/
enum{
DLG_MusikBox = 1,
DLG_MusikBox_HAS_DELETE,
DLG_MusikBox_DELETE,
DLG_Info,
DLG_PWREQ,
}/**
* Enum für die MusikBoxen
*
* MB_Created | Prüft ob die MusikBox erstellt ist oder nicht | true/false
* MB_URL | StreamURL der MusikBox (StreamURL)
* MB_Pos | Position der MusikBox (X, Y, Z)
* MB_AreaID | ID der Arena
* MB_CadMdl | Erstelltes Objekt der MusikBox
* MB_Label | Label der MusikBox
**/
enum MusikBoxen {
bool:MB_Created = false,
MB_URL[120],
Float:MB_Pos[3],
MB_AreaID,
MB_CadMdl,
Text3D:MB_Label[50],
}
new MusikBox[MAX_PLAYERS][MusikBoxen];/**
* Befehl um eine MusikBox zu Erstellen
**/
ocmd:cmb(playerid, params[])
{
/**
* Prüfen ob Spieler Premium hat
*/
if(!SpielerInfo[playerid][HasPremium]) return SendClientMessage(playerid, -1, "Du hast kein Premium, und kannst keine MusikBox erstellen!");
/**
* Prüfen ob der Spieler eine MusikBox erstellt hat oder nicht | Ausgabe eines Dialoges mit der Frage auf Entfernung der MusikBox
**/
if(MusikBox[playerid][MB_Created]) return ShowPlayerDialog(playerid, DLG_MusikBox_HAS_DELETE, DIALOG_STYLE_MSGBOX, "Ihre MusikBox", "Sie haben bereits eine Musikbox, wollen Sie die Musikbox entfernen?", "Entfernen", "Ausblenden");
/**
* Sollte der Spieler keine MusikBox haben, und die Schleife ist nicht am Ende, wird der Durchlauf abgebrochen
**/
else if(!MusikBox[playerid][MB_Created]) return ShowPlayerDialog(playerid, DLG_MusikBox, DIALOG_STYLE_INPUT, "Ihre MusikBox", "Bitte geben Sie die URL an, die die MusikBox abspielen soll", "Erstellen", "Ausblenden");
return 1;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DLG_MusikBox:
{
if(!response) return 1;
if(response)
{
/**
* Der Musikbox die Position des Spielers geben
**/
GetPlayerPos(playerid, MusikBox[playerid][MB_Pos][0], MusikBox[playerid][MB_Pos][1], MusikBox[playerid][MB_Pos][2]);
/**
* Der MusikBox die URL zuweisen, die nachher Gestreamt wird
**/
format(MusikBox[playerid][MB_URL], 120, "%s", inputtext);
/**
* MusikBoxLabel erstellen
**/
new Label[50];
format(Label, 50, "MusikBox von %s", returnName(playerid));
MusikBox[playerid][MB_Label] = CreateDynamic3DTextLabel(Label, 0xE46343FF, MusikBox[playerid][MB_Pos][0], MusikBox[playerid][MB_Pos][1], MusikBox[playerid][MB_Pos][2], 50.0);
/**
* Spieler ein Dialog ausgeben, das er eine MusikBox erstellt hat
**/
ShowPlayerDialog(playerid, DLG_Info, DIALOG_STYLE_MSGBOX, "Ihre MusikBox", "Sie haben Erfolgreich eine MusikBox erstellt.", "Ausblenden", "");
/**
* Erstellen der MusikBox
**/
MusikBox[playerid][MB_CadMdl] = CreateDynamicObject(2226, MusikBox[playerid][MB_Pos][0], MusikBox[playerid][MB_Pos][1], MusikBox[playerid][MB_Pos][2]-1, 0, 0 , 0);
AttachDynamicAreaToPlayer(MusikBox[playerid][MB_CadMdl], playerid);
/**
* Erstellen Der Arena, wenn Spieler diesen Bereich betreten wird der Stream abgespielt, verlässt Er ihn wird er Gestoppt
**/
MusikBox[playerid][MB_AreaID] = CreateDynamicCircle(MusikBox[playerid][MB_Pos][0], MusikBox[playerid][MB_Pos][1], 20.0);
/**
* Variabele setzen, das die MusikBox erstellt wurde
**/
MusikBox[playerid][MB_Created] = true;
}
}
case DLG_MusikBox_HAS_DELETE:
{
if(!response) return 1;
/**
* Sollte der Spieler die MusikBox löschen wollen, wird Sie nun gelöscht
**/
if(response)
{
/**
* URL der MusikBox resetten
**/
format(MusikBox[playerid][MB_URL], 120, "%s", "");
/**
* Variabele resetten das die MusikBox nicht mehr Erstellt ist
**/
MusikBox[playerid][MB_Created] = false;
/**
* MusikBox Label entfernen
**/
DestroyDynamic3DTextLabel(MusikBox[playerid][MB_Label]);
/**
* Area der MusikBox entfernen
**/
DestroyDynamicArea(MusikBox[playerid][MB_AreaID]);
/**
* Entfernen des MusikBox Objektes
**/
DestroyDynamicObject(MusikBox[playerid][MB_CadMdl]);
/**
* Nachricht an den Spieler ausgeben, das die MusikBox entfernt wurde
**/
ShowPlayerDialog(playerid, DLG_Info, DIALOG_STYLE_MSGBOX, "Ihre MusikBox", "Sie haben Erfolgreich eine MusikBox entfernt.", "Ausblenden", "");
/**
* Schleife für jeden Spieler durchgehen
**/
for(new i = 0; i < MAX_PLAYERS; i++)
{
/**
* Prüfen ob ein Spieler in der Area ist
**/
if(IsPlayerInRangeOfPoint(playerid, 50.0, MusikBox[playerid][MB_Pos][0], MusikBox[playerid][MB_Pos][1], MusikBox[playerid][MB_Pos][2]))
{
/**
* AudioStram für den Spieler stoppen, wenn er in der Area ist
**/
StopAudioStreamForPlayer(i);
}
}
/**
* Position der MusikBox resetten
**/
MusikBox[playerid][MB_Pos][0] = 0.0;
MusikBox[playerid][MB_Pos][1] = 0.0;
MusikBox[playerid][MB_Pos][2] = 0.0;
}
}
}
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
if(MusikBox[playerid][MB_Created])
{
/**
* Position der MusikBox resetten
**/
MusikBox[playerid][MB_Pos][0] = 0.0;
MusikBox[playerid][MB_Pos][1] = 0.0;
MusikBox[playerid][MB_Pos][2] = 0.0;
/**
* URL der MusikBox resetten
**/
format(MusikBox[playerid][MB_URL], 120, "%s", "");
/**
* Variabele resetten das die MusikBox nicht mehr Erstellt ist
**/
MusikBox[playerid][MB_Created] = false;
/**
* MusikBox Label entfernen
**/
DestroyDynamic3DTextLabel(MusikBox[playerid][MB_Label]);
/**
* Area der MusikBox entfernen
**/
DestroyDynamicArea(MusikBox[playerid][MB_AreaID]);
/**
* Entfernen des MusikBox Objektes
**/
DestroyDynamicObject(MusikBox[playerid][MB_CadMdl]);
/**
* Nachricht an den Spieler ausgeben, das die MusikBox entfernt wurde
**/
ShowPlayerDialog(playerid, DLG_Info, DIALOG_STYLE_MSGBOX, "Ihre MusikBox", "Sie haben Erfolgreich eine MusikBox entfernt.", "Ausblenden", "");
/**
* Schleife für jeden Spieler durchgehen
**/
for(new i = 0; i < MAX_PLAYERS; i++)
{
StopAudioStreamForPlayer(i);
}
}
return 1;
}public OnPlayerEnterDynamicArea(playerid, areaid)
{
/**
* Schleife durch alle MusikBoxen machen
**/
for(new i = 0; i < MAX_PLAYERS; i++)
{
/**
* Prüfen ob der Spieler in der richtigen Area ist, wenn ja wird der AudioStream gestartet
**/
if(MusikBox[i][MB_AreaID] == areaid && MusikBox[i][MB_Created])
{
PlayAudioStreamForPlayer(playerid,MusikBox[i][MB_URL]);
break;
}
}
return 1;
}public OnPlayerLeaveDynamicArea(playerid, areaid)
{
/**
* Schleife durch alle MusikBoxen machen
**/
for(new i = 0; i < MAX_PLAYERS; i++)
{
/**
* Prüfen ob der Spieler die Area verlassen hat, wenn ja wird der AudioStream gestoppt
**/
if(MusikBox[i][MB_AreaID] == areaid && MusikBox[i][MB_Created])
{
StopAudioStreamForPlayer(playerid);
}
break;
}
return 1;
}returnName(playerid)
{
new name[24];
GetPlayerName(playerid, name, 24);
return name;
} -
Danke kann man das in ein filterscript rein tun.?
-
Klar kann man das, wenn du magst kann ich dir auf Pastebin hauen^^ oder als PWN hochladen
-
-
Du hast im Script deine Dialoge definiert z.b. Mit #define dialog_login 5, such es und füge die beiden DLG... Dort hinzu, die nummern dürfen nicht gleich sein
-
Du hast im Script deine Dialoge definiert z.b. Mit #define dialog_login 5, such es und füge die beiden DLG... Dort hinzu, die nummern dürfen nicht gleich sein
Jetzt habe ich nur noch ein fehler
enum{
DLG_MusikBox = 1, //Hier ist der fehler.
DLG_MusikBox_HAS_DELETE,
DLG_MusikBox_DELETE,
DLG_Info,
DLG_PWREQ,
}Hier das Error.
error 001: expected token: "-identifier-", but found "-integer value-"/e User Hinzu.
-
Zeig mal deine Dialog defines, die anderen die im Skript sind
-
Zeig mal deine Dialog defines, die anderen die im Skript sind
Ich habe das jetzt so definert#define DIALOG_BANKICK 19471
#define DLG_MusikBox 360007
#define DLG_MusikBox_HAS_DELETE 360006
#define DLG_Info 360005Hier habe ich auch nochmal ein enum drüber.
enum
{
DIALOG_REGISTER,
DIALOG_LOGIN,
} -
Dialog IDs über enums zu steuern ist nicht gut, da die immer von vorne anfangen, sprich bei zwei enums hast du auch zwei mal die gleichen Werte, das führt zu Fehlern.
Schreibe alle Dialoge in defines und gebe die ID dahinter an. -
Dialog IDs über enums zu steuern ist nicht gut, da die immer von vorne anfangen, sprich bei zwei enums hast du auch zwei mal die gleichen Werte, das führt zu Fehlern.
Schreibe alle Dialoge in defines und gebe die ID dahinter an.Das sind aber sehr viele #definerte Dialoge dann.
-