Nach einiger Zeit Entwicklung, die dieses Plugin in Anspruch genommen hat,
päsentiere ich euch hier die erste Testversion dieses wunderbaren Plugins.
Es kann noch nicht sonderlich viel, aber das was es kann muss nunmal durch den Härtetest
und der seid nunmal IHR.
[tabmenu]
[tab=Alpha]
[subtab=Test 2]
Die Umfrage war ja sehr sehr eindeutig.
Das heißt es gibt nun die Möglichkeit die Knöpfe/Buttons auf die Rechte Seite zu bringen.
Ferner ist die Scrollleiste nun fast vollständig vorhanden.
Wieso nur fast?
Nunja es ist leider noch nicht ersichtlich wie weit man vom jeweiligen Ende entfernt ist.
Das merkt man momentan nur dann, wenn sich die Zeilen nicht mehr bewegen.
Soweit so gut, einige haben sich ja auch gewünscht, das man mehr als nur zwei Buttons am Dialog anbringen kann, dies ist nun gesehen,
bisher sind 4 möglich
Weiterhin habe ich einige Limits aufgehoben, z.B. das Limit an möglichen Farben in der Headerline(vorher 30)
Hier eine neue Übersicht über die aktuellen Funktionen:
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]CreateDialog(Float:x, Float:y, CaptionLine[], Body[], Button1[], Button2[], Button1Color=-1, Button2Color=-1); [*] Erstellt einen Listdialog
[*] Float:x, Float:y [*] die Kordinaten auf dem Bildschirm (800 x 600) an der der Dialog angezeigt werden soll
[*] Captionline [*] Die Überschrift des Dialogs. Multicolorinsterion fähig! | Die ~ Funktionen sind hier Blockiert
[*] Body [*] Der Inhalt des Dialogs mit \n wird eine neue Zeile angelegt. Nicht Multicolorinsertionfähig | Die ~ Funktionen sind hier Blockiert
[*] Button1, Button2 [*] Die Inhalte der Knöpfe. Knöpfe passen sich bisher noch nicht den Texten an | Bleibt Button 2 Leer, weird nur der erste Button angezeigt.
[*] Button1Color, Button2Color [*] Optionale Parameter(müssen nicht angegeben werden). Falls sie angegeben werden, müssen sie nach den RGBA Format eingetragen werden.
[*] Rückgabe(return) [*] Die ID des Dialogs im Format Dialog:ID. Sprich es wird ein neuer Tag benötigt. Erstellung der Variable: new Dialog:ID;
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]native DialogShow(Dialog:ID,playerid); [*] Zeigt den Dialog für einen bestimmten Spieler an
[*]Dialog:ID [*] Die ID des Dialogs der Angezeigt werden soll
[*]playerid [*] Der Spieler der den Dialog sehen soll.
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]DialogSetMultiSelectable(Dialog:ID,bool:MultiSelectable); [*] Legt fest ob der Dialog mehr als ein Listitem aufnehmen kann
[*]Dialog:ID [*] Die ID des Dialogs, der Multiselect unterstüzen soll
[*]bool:MultiSelectable [*] True(1) Multiselect | False(0) Singleselect
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]OnListDialogResponse(playerid,Dialog:ID,Button,Listitem[],AnzSelected); [*] Wird aufgerufen, wenn ein auf ein Dialogbutton geklickt wird
[*]playerid [*] Der Spieler, der auf einen der Buttons geklickt hat
[*]Dialog:ID [*] Die ID des Dialogs
[*]Button [*] Button links ist 0 | Button rechts ist 1 | Button unten links ist 2 | Button unten rechts ist 3
[*]Listitem[] [*] Beinhaltet alle Listitems die angeklickt worden sind. Beispiel: 1,2,4,7,
[*]AnzSelected[*] Beinhaltet die Anzahl der angeklickten Listitems
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]DialogChangeButtonPos(Dialog:ID,pos); [*] Ändert die ausrichtung der Buttons
[*]Dialog:ID [*] Die ID des Dialogs
[*]pos [*] Entweder BUTTONS_DOWN oder BUTTONS_RIGHT - sollte selbsterklärend sein
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]CreateButton(Dialog:ID,ButtonText[],Color=-1); [*] Erstellt einen neuen Button
[*]Dialog:ID[*] Die ID des Dialogs
[*]ButtonText[][*]Der Text der auf dem Btton erscheinen soll
[*]Color[*]Optionale Farbe des Buttons
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]DialogDestroy(Dialog:ID);[*] Zerstört einen erstellten Dialog
[*]Dialog:ID[*] Die ID des zu zerstörenden/löschenden Dialogs
[/table]
Später werden die Funktionen DialogChangeButtonPos und CreateButton einen weiteren Parameter erhalten,
damit man die Dialoge auch weiter individualisieren kann.
Zum Source:
Ich weiß das weiter unten steht das es keinen freien Source gibt, aber seis drum,
es gibt nun die Möglichkeit den Source zu erhalten, ihr dürft ihn aber weder verkaufen, verändern, zum Download anbieten oder als euren ausgeben.
Falls ihr den Source haben wollt, meldet euch bei mir, sofern ich euch den anvertraue.
Weiterhin suche ich jemanden, der mir das Plugin auf Linux kompiliert, damit es auch eine Linux version davon gibt
Installation:
Windows:
Zuerst ladet ihr euch das Plugin runter,
das macht ihr einfach hier.
Dann fügt ihr die .dll im Plugin Ordner eurem Pluginsordner hinzu und die .inc in euren Pawno/Includes Ordner.
Wichtig
Zum starten des Servers braucht ihr die beiliegende sampgdk3.dll diese fügt ihr einfach in euren Serverordner hinzu,
also dort wo eure server.exe liegt.
Linux:
Keine Version bzw informationen dafür vorhanden.
[subtab=Test 1]
Ein paar Bilder gibt es natürlich auch
Wenn der Härtetest gut verläuft und wenn nötig die Fehler korrigiert sind, kommen neue Dialogtypen und ein paar neue Extras zu den Listdialogen, z.B. die Scrollbar.
Gut zum eigentlichen Plugin.
Bisher gibt es ein Limit von 80 Dialogen, das sollte definitv vorerst reichen.
Das Limit wird später natürlich noch erhöht bzw entfernt, aber erst wenn die Zeit reif ist.
Das ist sie bisher ja noch nicht
Bisherige Funktionen:
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]CreateDialog(Float:x, Float:y, CaptionLine[], Body[], Button1[], Button2[], Button1Color=-1, Button2Color=-1); [*] Erstellt einen Listdialog
[*] Float:x, Float:y [*] die Kordinaten auf dem Bildschirm (800 x 600) an der der Dialog angezeigt werden soll
[*] Captionline [*] Die Überschrift des Dialogs. Multicolorinsterion fähig! | Die ~ Funktionen sind hier Blockiert
[*] Body [*] Der Inhalt des Dialogs mit \n wird eine neue Zeile angelegt. Nicht Multicolorinsertionfähig | Die ~ Funktionen sind hier Blockiert
[*] Button1, Button2 [*] Die Inhalte der Knöpfe. Knöpfe passen sich bisher noch nicht den Texten an
[*] Button1Color, Button2Color [*] Optionale Parameter(müssen nicht angegeben werden). Falls sie angegeben werden, müssen sie nach den RGBA Format eingetragen werden.
[*] Rückgabe(return) [*] Die ID des Dialogs im Format Dialog:ID. Sprich es wird ein neuer Tag benötigt. Erstellung der Variable: new Dialog:ID;
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]native DialogShow(Dialog:ID,playerid); [*] Zeigt den Dialog für einen bestimmten Spieler an
[*]Dialog:ID [*] Die ID des Dialogs der Angezeigt werden soll
[*]playerid [*] Der Spieler der den Dialog sehen soll.
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]DialogSetMultiSelectable(Dialog:ID,bool:MultiSelectable); [*] Legt fest ob der Dialog mehr als ein Listitem aufnehmen kann
[*]Dialog:ID [*] Die ID des Dialogs, der Multiselect unterstüzen soll
[*]bool:MultiSelectable [*] True(1) Multiselect | False(0) Singleselect
[/table]
[table=2]
[*]Funktion + Parameter [*] Beschreibung
[*]OnListDialogResponse(playerid,Dialog:ID,Button,Listitem[],AnzSelected); [*] Wird aufgerufen, wenn ein auf ein Dialogbutton geklickt wird
[*]playerid [*] Der Spieler, der auf einen der Buttons geklickt hat
[*]Dialog:ID [*] Die ID des Dialogs
[*]Button [*] Button links ist 0 | Button Rechts ist 1
[*]Listitem[] [*] Beinhaltet alle Listitems die angeklickt worden sind. Beispiel: 1,2,4,7,
[*]AnzSelected[*] Beinhaltet die Anzahl der angeklickten Listitems
[/table]
Eine Anmerkung um an die Listitems zu kommen,
dafür könnt ihr wunderbar die Funktion Split und dann strval benutzen.
Ich pack sie unten mit rein
Ich werde natürlich noch eine bessere Lösung dafür kreieren, aber da es erst Alpha T1 ist,
habe ich diese Lösung bevorzugt
Der Downloadlink ist hier zu finden:
Bitte klicken!
[/tabmenu]
Einen Sourcecode dazu gibt es nicht.
Bevor ihr jetzt damit kommt, es MUSS ein Quellcode vorliegen,
sage ich NEIN muss es nicht, wenn es von einem Moderator abgesegnet wurde.
Aber ich hoffe ihr vertraut mir soweit, das ich euch keine Viren einschleusen will.
Virustotal:
https://www.virustotal.com/fil…23b6/analysis/1342959722/
BTW:
Weitere Infos und Updates sind immer hier zu finden
stock split(const strsrc[], strdest[][], delimiter = '|')
{
new i, li, aNum, len, srclen = strlen(strsrc);
while(i <= srclen)
{
if (strsrc[i] == delimiter || i == srclen)
{
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i + 1;
aNum++;
}
i++;
}
}
Dialog Plugin von BlackAce steht unter einer Creative Commons Namensnennung-NichtKommerziell-KeineBearbeitung 3.0 Unported Lizenz.
Beruht auf einem Inhalt unter https://github.com/Zeex/sampgdk.