Hey,
Kann mir kurz einer erklären wie ich in nem Dialog den Spielernamen ermittelt kriege? :X
...
GetPlayerName ist wie ich herausgefunden habe in diesem Fall nicht so hilfreich ... S:
Vielen Dank!
MfG,
Matt
%s im Dialog einsetzten
- Captain Morgan
- 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
-
-
new schinken[32], wurst[32];
GetPlayerName(playerid,wurst,32);
format(schinken,sizeof(schinken),"Ich heiße %s",wurst);
ShowPlayerDialog(playerid,0,0,"Bacon",schinken,"Wunderbar",""); -
Warum dass denn nicht ?
Wenn ein Spieler einen Dialog aufgerufen hat und einen der beiden Buttons drückt, wird das mit dem Callback OnDialogResponse beantwortet.
Dieser verfügt über folgende Parameter:(playerid, dialogid, response, listitem, inputtext[])
Unter Anderen ist auch die playerid desjenigen mitgeliefert, der den dialog beantwortet hat.
Dann kannste die einfach verwenden under per GetPlayerName in eine Variable einlesen.Wenn du schon für den Dialog den Spielernamen brauchst geht das ebenfalls per GetPlayerName, da du für den Native ShowPlayerDialog ja sowieso die playerid brauchst.
Dann einfach folgendes.
new name[20];
GetPlayerName(playerid,name,sizeof(name));
new string[256];
format(string,sizeof(string),"Spieler %s du hast diesen Dialog aufgerufen",name);
ShowPlayerDialog(playerid,dialogid,DIALOG_STYLE_MSGBOX,"Testdialog",string,"Button 0","Button 1"); -
Du musst den String vorher formatieren (format), dort kannst du auch den Spielernamen einsetzen (GetPlayerName), im Dialog musst du dann den Variablennamen des String verwenden.
// Edit: [ eingefügt
-
Dann hab ich noch ne Anfänger Frage: was genau drücken die (in diesem Beispiel) [20] und [256] aus...
Kann man Sie einfach nach belieben ändern?...:Snew name[20];
new string[256];MfG,
Matt -
20 und 256 sind die Stringgröße.
Jenachdem wie viele zeichen du hast dementsprechend kannst du des ändern.
mfg -
Hey, Danke!
Also muss ich das dann immer abzählen?
Mfg,
matt -
Nein.
Du kannst natürlich auch direkt eine Zahl hinschreiben, bei einem Text würde ich immer 256 oder höher nehmen und bei dem string wo du deinen Namen hernimmst würde ich nur 32 nehmen weil das die Größe eines Spieler Namens ist. -
Ah Danke :')
Jetzt hab ich's kapiert.
Könnte von mir aus geclosed werden...
Danke an Alle für die schnellen und tollen Antworten!
MfG,
Matt -
da muss ich ma eben noch ne Information hinterherschieben.
Die maximale Länge eines Names beträgt 20 Zeichen (chars)http://wiki.sa-mp.com/wiki/Limits
Man kann auch alternativ einen String MAX_PLAYER_NAME Zellen zuweisen da MAX_PLAYER_NAME in der a_samp.inc so definiert ist.
#define MAX_PLAYER_NAME (24)
Würde bedeuten , dass es dann für z.B. new name[24] steht, was dasselbe wie new name[MAX_PLAYER_Name] ist. -
-
Die Größe (= Länge) von Spielernamen beträgt 20 (nicht 32), ich würde jedoch die Definition direkt aus der a_samp.inc nutzen, MAX_PLAYER_NAME.
Bei Texten die du im Chat ausgibst sind 128 die perfekte Größe, da SAMP nicht mehr unterstützt, bei Dialogen, Texdraws und Co. gelten wieder andere Werte, siehe hier.
Um die Variablentypen und deren Aufgaben zu verstehen, kannst du auch in meine Signatur schauen, evtl. macht dir mein Tutorial das Ganze etwas klarer.
// Edit: Whoops, da war jemand schneller :O
-
da muss ich ma eben noch ne Information hinterherschieben.
Die maximale Länge eines Names beträgt 20 Zeichen (chars)http://wiki.sa-mp.com/wiki/Limits
Man kann auch alternativ einen String MAX_PLAYER_NAME Zellen zuweisen da MAX_PLAYER_NAME in der a_samp.inc so definiert ist.
#define MAX_PLAYER_NAME (24)
Würde bedeuten , dass es dann für z.B. new name[24] steht, was dasselbe wie new name[MAX_PLAYER_Name] ist.
Nur [MAX_PLAYER_NAME] beschreibt einfach die maximal Länge des Namens, richtig?
Gibt es sowas auch für andere Strings (zum Beispiel [MAX_MESSAGE] o.ä?!)MfG,
Matt -
Sowas in der Art. Das hier steht in der a_samp.inc
// Limits and internal constants
#define MAX_PLAYER_NAME (24)
#define MAX_PLAYERS (500)
#define MAX_VEHICLES (2000)
#define INVALID_PLAYER_ID (0xFFFF)
#define INVALID_VEHICLE_ID (0xFFFF)
#define NO_TEAM (255)
#define MAX_OBJECTS (400)
#define INVALID_OBJECT_ID (0xFFFF)
#define MAX_GANG_ZONES (1024)
#define MAX_TEXT_DRAWS (2048)
#define MAX_MENUS (128)
#define MAX_3DTEXT_GLOBAL (1024)
#define MAX_3DTEXT_PLAYER (1024)
#define MAX_PICKUPS (2048)
#define INVALID_MENU (0xFF)
#define INVALID_TEXT_DRAW (0xFFFF)
#define INVALID_GANG_ZONE (-1)
#define INVALID_3DTEXT_ID (0xFFFF)// Player GUI Dialog
#define DIALOG_STYLE_MSGBOX 0
#define DIALOG_STYLE_INPUT 1
#define DIALOG_STYLE_LIST 2// States
#define PLAYER_STATE_NONE (0)
#define PLAYER_STATE_ONFOOT (1)
#define PLAYER_STATE_DRIVER (2)
#define PLAYER_STATE_PASSENGER (3)
#define PLAYER_STATE_EXIT_VEHICLE (4) // (used internally)
#define PLAYER_STATE_ENTER_VEHICLE_DRIVER (5) // (used internally)
#define PLAYER_STATE_ENTER_VEHICLE_PASSENGER (6) // (used internally)
#define PLAYER_STATE_WASTED (7)
#define PLAYER_STATE_SPAWNED (8)
#define PLAYER_STATE_SPECTATING (9)// Marker modes used by ShowPlayerMarkers()
#define PLAYER_MARKERS_MODE_OFF (0)
#define PLAYER_MARKERS_MODE_GLOBAL (1)
#define PLAYER_MARKERS_MODE_STREAMED (2)// Weapons
#define WEAPON_BRASSKNUCKLE (1)
#define WEAPON_GOLFCLUB (2)
#define WEAPON_NITESTICK (3)
#define WEAPON_KNIFE (4)
#define WEAPON_BAT (5)
#define WEAPON_SHOVEL (6)
#define WEAPON_POOLSTICK (7)
#define WEAPON_KATANA (8)
#define WEAPON_CHAINSAW (9)
#define WEAPON_DILDO (10)
#define WEAPON_DILDO2 (11)
#define WEAPON_VIBRATOR (12)
#define WEAPON_VIBRATOR2 (13)
#define WEAPON_FLOWER (14)
#define WEAPON_CANE (15)
#define WEAPON_GRENADE (16)
#define WEAPON_TEARGAS (17)
#define WEAPON_MOLTOV (18)
#define WEAPON_COLT45 (22)
#define WEAPON_SILENCED (23)
#define WEAPON_DEAGLE (24)
#define WEAPON_SHOTGUN (25)
#define WEAPON_SAWEDOFF (26)
#define WEAPON_SHOTGSPA (27)
#define WEAPON_UZI (28)
#define WEAPON_MP5 (29)
#define WEAPON_AK47 (30)
#define WEAPON_M4 (31)
#define WEAPON_TEC9 (32)
#define WEAPON_RIFLE (33)
#define WEAPON_SNIPER (34)
#define WEAPON_ROCKETLAUNCHER (35)
#define WEAPON_HEATSEEKER (36)
#define WEAPON_FLAMETHROWER (37)
#define WEAPON_MINIGUN (38)
#define WEAPON_SATCHEL (39)
#define WEAPON_BOMB (40)
#define WEAPON_SPRAYCAN (41)
#define WEAPON_FIREEXTINGUISHER (42)
#define WEAPON_CAMERA (43)
#define WEAPON_PARACHUTE (46)
#define WEAPON_VEHICLE (49)
#define WEAPON_DROWN (53)
#define WEAPON_COLLISION (54)// Keys
#define KEY_ACTION (1)
#define KEY_CROUCH (2)
#define KEY_FIRE (4)
#define KEY_SPRINT (8)
#define KEY_SECONDARY_ATTACK (16)
#define KEY_JUMP (32)
#define KEY_LOOK_RIGHT (64)
#define KEY_HANDBRAKE (128)
#define KEY_LOOK_LEFT (256)
#define KEY_SUBMISSION (512)
#define KEY_LOOK_BEHIND (512)
#define KEY_WALK (1024)
#define KEY_ANALOG_UP (2048)
#define KEY_ANALOG_DOWN (4096)
#define KEY_ANALOG_LEFT (8192)
#define KEY_ANALOG_RIGHT (16384)#define KEY_UP (-128)
#define KEY_DOWN (128)
#define KEY_LEFT (-128)
#define KEY_RIGHT (128)Kannst ja mal alle includes /Pawno/Includes durschaun. Überall wo nen #define steht kannst entweder den Wert oder den für den Wert representativen Ausdruck verwenden.
Kannst dir natürlich auch selber #define (s) erstellen.
#define string 256
new string[string]; -
Ok, ich verstehe... :')
Vielen Dank, wirklich! - Habt mich ein kleinen Schritt weiter gebracht im großen Pawn-Universum !
Mfg,
Matt -
-
breadfish.de
Hat das Thema geschlossen.