wie heissen die kopfhörrer bei attachments ?
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
-
-
Guckst du hier.
ShowPlayerDialog(playerid,DEINDIALOG,DIALOG_STYLE_LIST,"Deine Überschrift.","Dein Item\nDein 2tes Item","Button1","Button2"); // \n steht für "Nächste Zeile"
//ONDIALOGRESPONSE
if(dialogid == DEINEDIALOGID)
{
if(response == 1)
{
if(listitem == 0)
{
// WAS PASSIEREN SOLL,WENN ER AUF DAS ERSTGELISTETTE ITEM DRÜCKT
}
}
}
Wenn Error's kommen, posten.lg
Habs so gemacht bekomme die erros
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(208) : error 004: function "UpdateTimeAndWeather" is not implemented
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(216) : error 017: undefined symbol "sscanf"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(227) : error 017: undefined symbol "sscanf"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(236) : error 017: undefined symbol "sscanf"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(547) : warning 217: loose indentation
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : warning 217: loose indentation
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : error 029: invalid expression, assumed zero
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(550) : error 004: function "OnPlayerClickPlayer" is not implemented
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : warning 225: unreachable code
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : error 029: invalid expression, assumed zero
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(555) : error 017: undefined symbol "PlayerToPoint"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(562) : error 017: undefined symbol "x"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(563) : error 017: undefined symbol "y"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(564) : error 017: undefined symbol "z"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(566) : error 017: undefined symbol "radi"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(571) : warning 217: loose indentation
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : warning 225: unreachable code
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 029: invalid expression, assumed zero
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 017: undefined symbol "sscanf"
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : error 029: invalid expression, assumed zero
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(574) : fatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
16 Errors.
Text
if (strcmp("/teleport",cmdtext))
{ShowPlayerDialog(playerid,DIALOG_TELE,DIALOG_STYLE_LIST,"Teleporter.","BaseJump1","Abbrechen","Weiter");
return 1;
}if(dialogid==DIALOG_TELE)
{
if(response==1)
{
if(listitem==0)
{
SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
return 1;
}
}
} -
sieht nachm Klammerfehler aus poste ma au die 5 zeilen darüber
-
Norm eig. 26 errors
Aber brauche Hilfe
/e
Hier hasse mein Public
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_DS)
{
if(response==1)
{
DMLER[playerid] = 0;
new Text3D:DM = Create3DTextLabel("DM'ler!", 0xFF2800FF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(DM, playerid, 0.0, 0.0, 0.7);
}
if(response==0)
{
STUNTLER[playerid] = 1;
new Text3D:Stunt = Create3DTextLabel("Stunt'ler!", BLAU, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(Stunt, playerid, 0.0, 0.0, 0.7);
}
if(dialogid==DIALOG_TELE)
{
if(response==1)
{
if(listitem==0)
{
SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
}
}
}
return 1;
} -
Hallo
Du hast falsch eingerückt, der zweite DialogID Vergleich war im !response. Zum Thema response. Du kannst das durch ein if(response) {} else {} ersetzen. Nimm mal das und sag obs geht:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_DS)
{
if(response==1)
{
DMLER[playerid] = 0;
new Text3D:DM = Create3DTextLabel("DM'ler!", 0xFF2800FF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(DM, playerid, 0.0, 0.0, 0.7);
else
{
STUNTLER[playerid] = 1;
new Text3D:Stunt = Create3DTextLabel("Stunt'ler!", BLAU, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(Stunt, playerid, 0.0, 0.0, 0.7);
}
}
if(dialogid==DIALOG_TELE)
{
if(response==1)
{
if(listitem==0)
{
SetPlayerPos(playerid,1543.7886,-1353.6300,329.4738);
}
}
}
return 1;
}Gruss
Edit: Dumme Tabs
-
C:\Users\Tolik\Desktop\GTA und Richtiges PWN\Stunt\gamemodes\Stunt.pwn(551) : warning 209: function "OnDialogResponse" should return a value
Wie beseitige ich diese Warning
-
Hi
Du willst von 40 bis 80 ? Dann mach es besser so :
new value = random(40);
value += 40;Alternativ auch mit einer do while Schleife zu lösen, ist aber etwas übertrieben. Für 2 Sekunden Freezen brauchste:
http://wiki.sa-mp.com/wiki/SetTimerEx
Die Parameter kannste dann einfach umstellen auf id oder playerid, sollte aber klar sein. Für zum Freezen wie bereits verwendet:
http://wiki.sa-mp.com/wiki/Function:TogglePlayerControllable
Gruss Simon
Funktioniert wunderbar, Danke!Mhm, versuche gerade einen Umgebungschat zu erstellen der mit /uc eingeschaltet werden soll und wenn man nochmal /uc eingibt wieder ausgeschaltet werden soll.
Wie immer bekomme Ich auch dies nicht ohne eure Hilfe hinDenn sobald ich Ingame /uc eingebe und dann etwas schreibe sieht der Chat nämlich so aus wenn ich ein simples "hallo" eingebe:
(([UC]: Mostey: ))
Mostey: hallo
new uc[MAX_PLAYERS]; // variable is oben im scriptpublic OnPlayerText(playerid, text[])
{
if(uc[playerid] == 1)
{
new string[256];
new Float:x, Float:y, Float:z;
new text1[256];
GetPlayerPos(playerid,x,y,z);
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i,25,x,y,z))
{
format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
SendClientMessage(i,weiss,string);
}
}
}
}
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/uc", cmdtext, true, 10) ==0)
{
if (uc[playerid] == 0)
{
uc[playerid] = 1;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
}
else if (uc[playerid] == 1)
{
uc[playerid] = 0;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
}
return 1;
}EDIT: Variante 2, Ergebnis is das selbe:
Spoiler anzeigen if (strcmp("/uc", cmdtext, true, 10) ==0)
{
if (uc[playerid] == 0)
{
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
new string[256];
new Float:x, Float:y, Float:z;
new text1[256];
GetPlayerPos(playerid,x,y,z);
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i,25,x,y,z))
{
format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
SendClientMessage(i,weiss,string);
uc[playerid] = 1;
}
}
}
}
else if (uc[playerid] == 1)
{
uc[playerid] = 0;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
}
return 1;
}
@Travelga
Return vergessen? -
Hallo
Ich würde aus der Spielervariable einen Boolean machen. Dann sähe es so aus (Habe es ein wenig abgeändert). Andere Spieler bekommen die Nachricht nur, wenn auch ihr Umgebungschat an ist.
new bool:uc[MAX_PLAYERS]; // variable is oben im scriptpublic OnPlayerText(playerid, text[])
{
if(uc[playerid]) // 1
{
new string[128]; // Die Messagebox in SA-MP kann maximal 128 Zeichen darstellen
new Float:pos[3]; // Floatarray
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
for(new i = 0; i <MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 25.0, pos[0], pos[1], pos[2]))
{
format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
SendClientMessage(i,weiss,string);
}
}
}
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/uc", cmdtext, true, 10) ==0)
{
if(!uc[playerid]) // Anmachen
{
uc[playerid] = true;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
}
else
{
uc[playerid] = false;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
}
}
return 1;
}Gruss
-
Nabend, ich arbeite gerade an meinem eigenen kleinen Pay'n'Spray.
Klappt alles super, nur die Tastenbelegung spinnt irgendwie..
Was habe ich vor?
Sobald der User in einem Fahrzeug ist, und an einem bestimmten Punkt, soll ein Tor nach oben gehen und sich auf "Alt links" Druck ein Dialog öffnen.
Was tut es?
Es öffnet bei Enter, W, A, S, D ..usw. den Dialog.Spoiler anzeigen public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys && KEY_WALK)
{
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
}
}
Ich wüsste gern warum sich der Dialog einfach öffnet..//e:
Joa, habe das Tor nun hinbekommen, nun soll aber wenn man nicht "IsPlayerInRangeOfPoint" ist, das Tor wieder geöffnet werden.
Ich habe den Code so erstellt:
if(!IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
MoveObject(pnstor,1003.40002441,-1341.59997559,9.10000038,2.00);
return 1;
}
Unter OnGameModeInit kann ich das nicht packen, weil er playerid nicht erkennt.. -
Hallo
Ich würde aus der Spielervariable einen Boolean machen. Dann sähe es so aus (Habe es ein wenig abgeändert). Andere Spieler bekommen die Nachricht nur, wenn auch ihr Umgebungschat an ist.
new bool:uc[MAX_PLAYERS]; // variable is oben im scriptpublic OnPlayerText(playerid, text[])
{
if(uc[playerid]) // 1
{
new string[128]; // Die Messagebox in SA-MP kann maximal 128 Zeichen darstellen
new Float:pos[3]; // Floatarray
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
for(new i = 0; i <MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 25.0, pos[0], pos[1], pos[2]))
{
format(string,sizeof string,"(( [UC]: %s: %s {FFFFFF}))",SpielerName(playerid),text1);
SendClientMessage(i,weiss,string);
}
}
}
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/uc", cmdtext, true, 10) ==0)
{
if(!uc[playerid]) // Anmachen
{
uc[playerid] = true;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat eingeschaltet");
}
else
{
uc[playerid] = false;
SendClientMessage(playerid,gelb,"Du hast den Umgebungschat ausgeschaltet");
}
}
return 1;
}Gruss
Danke für deine schnelle Antwort, der Fehler besteht aber weiterhin
-
-
Nabend, ich arbeite gerade an meinem eigenen kleinen Pay'n'Spray.
Klappt alles super, nur die Tastenbelegung spinnt irgendwie..
Was habe ich vor?
Sobald der User in einem Fahrzeug ist, und an einem bestimmten Punkt, soll ein Tor nach oben gehen und sich auf "Alt links" Druck ein Dialog öffnen.
Was tut es?
Es öffnet bei Enter, W, A, S, D ..usw. den Dialog.Spoiler anzeigen public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys && KEY_WALK)
{
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
}
}
Ich wüsste gern warum sich der Dialog einfach öffnet..
Unter OnGameModeInit kann ich das nicht packen, weil er playerid nicht erkennt..
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
{
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
else //das auch noch hinzufügen, nur um auf Nummer sicher zu gehen.
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
}
}
Ich hoffe, ich konnte dir helfen -
Jetzt geht's garnicht mehr.
-
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_WALK) //überprüfen ob newkeys dem define KEY_WALK entspricht
{
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,ROT,"Du bist in keinem Fahrzeug.");
if(IsPlayerInRangeOfPoint(playerid,0.5,1003.0399,-1352.2534,13.0096))
{
MoveObject(pnstor, 0, 0, 10, 2.00);
ShowPlayerDialog(playerid,DIALOG_PNS,DIALOG_STYLE_LIST,"Pay'n'Spray - Nutzeroberfläche","Fahrzeug reparieren\nFarbe wählen","Ok","Abbrechen");
return 1;
}
}
} -
Geht auch nicht.
-
Setz mal die Range von 0.5 auf 5.0 bitte
-
Guten Abend,
=============================================================================
Bei mir wird das Alter nicht Gespeichert was ich bei der Registration Angegeben habe.
Ich zeige euch mal die sachen. (Der Enum nicht oder?)
public OnPlayerDisconnect(playerid, reason)
{
if(INI_Open(getINI(playerid)))
{
INI_WriteInt("Level",GetPlayerScore(playerid));
INI_WriteInt("Geldboerse",GetPlayerMoney(playerid));
INI_WriteInt("Admin",SpielerInfo[playerid][sAdmin]);
INI_WriteInt("Gebannt",SpielerInfo[playerid][sGebannt]);
INI_WriteInt("Alter",SpielerInfo[playerid][sAlter]);
INI_Save();
INI_Close();
}
return 1;
}
Hier wird alles Gespeichert.
case DIALOG_ALTER:
{
if(!response)return 0;
if(response)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
}
if(INI_Open(getINI(playerid)))
{
INI_WriteInt("Alter",strval(inputtext));
INI_Save();
INI_Close();
}
}
}
Hier ist der DIALOG Wo er es eigentlich Speichern soll.. Was er aber nicht tuht. -
mach es mal so und probier es aus:
case DIALOG_ALTER:
{
if(!response)return 0;
else if(response)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Gruen,"Du musst dein Alter Angeben!");
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{FF8B00}*SENSIERT*","{FFFFFF}Nun sind wir beim Zweiten Schritt der Registration! Hier musst du dein Alter angeben!\n z.B. {FF0000}24","Bestätiegen","Abbruch");
return 1; //Damit unten das Alter nicht überschrieben wird.
}
if(INI_Open(getINI(playerid)))
{
INI_WriteInt("Alter",strval(inputtext));
INI_Save();
INI_Close();
SpielerInfo[playerid][sAlter] = strval(inputtext);
}
}
}//EDIT:
Jetzt habe ich den richtigen Fehler gesehen.
Er liegt darin, dass du die Variable "SpielerInfo[playerid][sAlter]" bei OnDialogResponse nicht setzt und sie beim Logout durch 0 ersetzt wird. siehe oben -
Hab's mit "return 1;" gemacht. In die SpielerDatei steht immer noch "Alter=0"
//e Habe es mit SpielerInfo[playerid][sAlter]=strval(inputtext);
Hinbekommen. -
Setz mal die Range von 0.5 auf 5.0 bitte
Funktioniert auch nicht... -
-