Ich habe eine kurze Frage an euch:
Momentan besitze ich ein englisches Selfmade Script welches komplett dynamisch ist, das Problem ist
allerdings das ich das Script nicht auf den Server Online bekomme.. kann mir bitte jemand helfen und das machen denn ich
will das Script übersetzen..
Pn oder skype: operatorarts
[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
-
-
Wo liegt mein Fehler ?
Code[spoiler][/spoiler][13:02:49] [DEBUG] mysql_query - connection: 1, query: "INSERT INTO `accounts_scheine` (`userID`,'Username') VALUES ('1'", use_cache: true [13:02:49] [DEBUG] CMySQLQuery::Execute - starting query execution [13:02:49] [ERROR] CMySQLQuery::Execute - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Username') VALUES ('1','reaL.')' at line 1 [13:02:49] [DEBUG] mysql_query - connection: 1, query: "INSERT INTO `accounts_settings` (`userID`,'Username') VALUES ('1", use_cache: true [13:02:49] [DEBUG] CMySQLQuery::Execute - starting query execution [13:02:49] [ERROR] CMySQLQuery::Execute - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Username') VALUES ('1','reaL.')' at line 1
Codenew query[500]; format(query, sizeof(query), "INSERT INTO `accounts_scheine` (`userID`,'Username') VALUES ('%i','%s')", sInfo[playerid][db_id],sInfo[playerid][pName]); mysql_query(dbhandle, query); format(query, sizeof(query), "INSERT INTO `accounts_settings` (`userID`,'Username') VALUES ('%i','%s')", sInfo[playerid][db_id],sInfo[playerid][pName]); mysql_query(dbhandle, query);
-
Ändere bei Username die ' zu `.
-
hallo,
ich habe eine Frage und zwar ist es möglich abzurufen vom Fahrzeug was er für Schaden hat.
Also Reifen sind platt, motorschaden etc?
Wenn ja wie würde das Grundgerüst aufgebaut sein? -
wenn ich es richtig im kopf habe ist es
GetVehicleHealth(vehicleid,health); -
abzurufen vom Fahrzeug was er für Schaden hat
Ja, hiermit:
https://wiki.sa-mp.com/wiki/GetVehicleDamageStatusBeispiele für den Aufbau der Abfragen zum Auslesen der Informationen sind
@Nils24hero Damit kann man nur die Health des Fahrzeugs abfragen, nicht die Details der einzelnen Teile.
-
Weist du zufällig was ich falsch mache ? Wenn ich den befehl eingebe dann deaktiviert oder aktiviert er alle Befehle statt das er diese einzelnd macht..
Code
Alles anzeigenCOMMAND:abwehrsystem(playerid,params[]) { #pragma unused params if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist."); if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!"); if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back"); if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison."); if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot."); if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt."); if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis."); if(Spieler[playerid][pGangJailed] == 1)return SendClientMessage(playerid,GRAU,"Du befindest dich im GangJail."); if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert."); if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt."); new cmd[10],cmd2[10]; if(sscanf(params,"s[25]s[6]",cmd,cmd)) { return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /abwehrsystem [Area|SFLuft|SFSee|AlkaLuft|AlkaSee|Alle] [an|aus(nur bei \"Alle\")]"); } if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,6) || isPlayerInFrakt(playerid,16) || isPlayerAnAdmin(playerid,6) && Spieler[playerid][pAdminOnduty] == true) { if(strcmp(cmd2, "Area", true)==0) { if(AbwehrsystemTog[Area] == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung der Area51 {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[Area]=1; } else { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung der Area51 {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[Area]=0; } } if(strcmp(cmd2, "SFLuft", true)==0) { if(AbwehrsystemTog[Luft_SF] == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung des Flugzeugträgers {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[Luft_SF]=1; } else { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung des Flugzeugträger {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[Luft_SF]=0; } } if(strcmp(cmd2, "SFSee", true)==0) { if(AbwehrsystemTog[See_SF] == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Seeüberwachung des Flugzeugträgers {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[See_SF]=1; } else { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Seeüberwachung des Flugzeugträger {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[See_SF]=0; } } if(strcmp(cmd2, "AlkaLuft", true)==0) { if(AbwehrsystemTog[Luft_Alka] == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung des Gefängnisses Alkatraz {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[Luft_Alka]=1; } else { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Luftüberwachung des Gefängnisses Alkatraz {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[Luft_Alka]=0; } } if(strcmp(cmd2, "AlkaSee", true)==0) { if(AbwehrsystemTog[See_Alka] == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Seeüberwachung des Gefängnisses Alkatraz {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[See_Alka]=1; } else { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Seeüberwachung des Gefängnisses Alkatraz {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[See_Alka]=0; } } if(strcmp(cmd2, "Alle", true)==0) { if(strcmp(cmd2, "an", true) == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Alle Abwehrsysteme {00CC00}aktiviert{FFFFFF}!"); AbwehrsystemTog[Area]=1; AbwehrsystemTog[Luft_SF]=1; AbwehrsystemTog[See_SF]=1; AbwehrsystemTog[Luft_Alka]=1; AbwehrsystemTog[See_Alka]=1; } if(strcmp(cmd2, "aus", true) == 0) { SendClientMessage(playerid, COLOR_WHITE, "{CC0000}WARNUNG: {FF0000}Alle Abwehrsysteme {CC0000}deaktiviert{FFFFFF}!"); AbwehrsystemTog[Area]=0; AbwehrsystemTog[Luft_SF]=0; AbwehrsystemTog[See_SF]=0; AbwehrsystemTog[Luft_Alka]=0; AbwehrsystemTog[See_Alka]=0; } else { SendClientMessage(playerid,WRONGCMD,"BENUTZE: /abwehrsystem Alle [an|aus]"); return 1; } } else { SendClientMessage(playerid,WRONGCMD,"BENUTZE: /abwehrsystem [Area|SFLuft|SFSee|AlkaLuft|AlkaSee|Alle] [an|aus|(nur bei Alle)]"); return 1; } } return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion."); }
[(code]
-
-
if(dialogid == 2100)
{
if(response)
{
if(inputtext == "text")
{}
}
}
Wieso geht das nicht?
Ziel ist es, abzufragen ob "text" eingegeben wurde.C:\Users\Curious\Desktop\Mapping SAMP\SAMP Server\gamemodes\South-Coast.pwn(12187) : error 033: array must be indexed (variable "inputtext")
-
Schau dir mal folgende Funktion an [wiki] strcmp[/wiki]
-
-
Ich habe eine Frage bezüglich des folgenden Stockes:
Code
Alles anzeigenstock Check_If_Point_In_Triangle(playerid,Float:X,Float:Y,Float:Z,Float:R,Float:MAX_Z) // (c)IPrototypeI { new const Float:Winkel = 60.0; new const Float:Weite = 30.0; new Float:Pos[8]; GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]); Pos[4] = Y+(Weite*floatsin(Winkel+R,degrees)); Pos[5] = Y-(Weite*floatsin(R-Winkel,degrees)); Pos[6] = X+(Weite*floatcos(Winkel+R,degrees)); Pos[7] = X-(Weite*floatcos(R-Winkel,degrees)); return (((Y-Pos[4])*(Pos[0]-X) + (Pos[6]-X)*(Pos[1]-Y)) <0 ||((Pos[4]-Pos[5])*(Pos[0]-Pos[6]) + (Pos[7]-Pos[6])*(Pos[1]-Pos[4])) <0 ||((Pos[5]-Y)*(Pos[0]-Pos[7]) + (X-Pos[7])*(Pos[1]-Pos[5])) <0 || Pos[2] > MAX_Z || Pos[2] < Z) ? 0:1; }
Wofür stehtFloat:R und Float:MAX_Z ?
( Float:R könnte ich mir denken für Radius ... ) -
R ist eigentlich die falsche Bezeichnung der Variable, die sollte "A" heißen, da es sich hier um den Drehwinkel (Angle) handelt (GetPlayerFacingAngle).
MAX_Z ist die maximale Höhe die in das Dreieck fällt.http://forum.sa-mp.com/showpost.php?p=2538995&postcount=3961
Ein Code könnte also so aussehen:
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
if(Check_If_Point_In_Triangle(andereID, x, y, z-3.0, a, z+10.0))
{
//Im Bereich
}z-3 damit der Spieler auch etwas unterhalb der playerid sein kann, und z+10 damit er auch oberhalb sein kann.
PS: Es ist übrigens nicht nur einfacher zu lesen, sondern auch von besserer Performance, wenn man auf Arrays bei Berechnungen von Positionen verzichtet. Ein Code wie die "return" Zeile des stocks geht an jeglicher Lesbarkeit vorbei und bringt keinen Performancevorteil, eher gegenteilig.
-
Hi, wie überprüfe ich korrekt ob eine Animation ausgeführt wird?
Keines meiner Beispiele funktioniert..
if(GetPlayerAnimationIndex(i))
{
new animlib[32];
new animname[32];
GetAnimationName (GetPlayerAnimationIndex(i), animlib, 128, animname, 128);
//if(strcmp(animlib, "Swim_Breast || SWIM_crawl || Swim_Tread", true) == 0)
if(strcmp(animlib, "SWIM_BREAST", true) == 0) -
Nutze im strcmp den animname anstatt der animlib.
-
R ist eigentlich die falsche Bezeichnung der Variable, die sollte "A" heißen, da es sich hier um den Drehwinkel (Angle) handelt (GetPlayerFacingAngle).
MAX_Z ist die maximale Höhe die in das Dreieck fällt.http://forum.sa-mp.com/showpost.php?p=2538995&postcount=3961
Ein Code könnte also so aussehen:
new Float:x, Float:y, Float:z, Float:a;GetPlayerPos(playerid, x, y, z);GetPlayerFacingAngle(playerid, a);if(Check_If_Point_In_Triangle(andereID, x, y, z-3.0, a, z+10.0)){ //Im Bereich}z-3 damit der Spieler auch etwas unterhalb der playerid sein kann, und z+10 damit er auch oberhalb sein kann.
PS: Es ist übrigens nicht nur einfacher zu lesen, sondern auch von besserer Performance, wenn man auf Arrays bei Berechnungen von Positionen verzichtet. Ein Code wie die "return" Zeile des stocks geht an jeglicher Lesbarkeit vorbei und bringt keinen Performancevorteil, eher gegenteilig.
Gilt das jetzt für Blitzer?Und die Faceing Angle muss vom Player gemessen werden und nicht vom Blitzer?
-
Wenn du abfragen willst, ob ein Spieler in dem Sichtfeld des Blitzers ist, dann musst du die x, y, z vom Blitzer nehmen, sowie die Angle vom Blitzer. Nur die playerid ist dann die ID des Spielers, der Überprüft werden soll.
-
Ich habe eine kurze Frage bezüglich der "for-Schleife".
Zurzeit arbeite ich an meinem AntiAFK System, nur wird mir die folgende Nachricht mehr mals gesenden ("Bitte bestätige deine Anwesenheit mit '/confirmafk'.")
Normal könnte man es ja mit einem return lösen, jedoch klappt das ja nicht in der "for-Schleife" da sonnst der Code beendet wird.
Wie kann ich den Code umschreiben das ich nur einmal die Nachricht gesendet bekomme?Ausschnitt aus dem Code:
C
Alles anzeigenif(ServerData[sAntiAfk] == false){ if(pData[i][pAfk] == false){ GetPlayerPos(i, Pos[0], Pos[1], Pos[2]); if(Pos[0] == pData[i][pAfkPos][0] && Pos[1] == pData[i][pAfkPos][1] && Pos[2] == pData[i][pAfkPos][2]) { if(pData[i][pAfkCount] > ANTICHEAT_AFKTIME){ SCM(i,COLOR_RED, "["ANTICHEAT"]: Bitte bestätige deine Anwesenheit mit '/confirmafk'."); pData[i][pAfkKickTimer] = SetTimerEx("AwayFromKeyboardKick", 20000, 0, "i", i); }else{ pData[i][pAfkCount]++; } } pData[i][pAfkPos][0] = Pos[0]; pData[i][pAfkPos][1] = Pos[1]; pData[i][pAfkPos][2] = Pos[2]; } }
-
Ein break; beendet die Schleife und führt den Code nach der Schleife weiter aus.
Füge also ein break nach der Nachricht ein. -
Ein break; beendet die Schleife und führt den Code nach der Schleife weiter aus.
Füge also ein break nach der Nachricht ein.Stimmt da war ja was
Vielen Dank -
bei einer for-Schleife kannst du auch continue verwenden.
Damit kannst du die schleife elegant stoppen bzw. überspringen wenn diese durchgelaufen ist.break wäre in dem Fall nicht gut da das genauso wie return 1; ist.
-