[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
-
-
Habe das so..
Codespeed = ErmittleGeschwindigkeit(playerid,true); if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) { strafe = (speed*2) - Blitzer[BlitzerObj][BlitzerGeschwindigkeit];
Codestock ErmittleGeschwindigkeit(playerid,bool:kmh) { new Float:x,Float:y,Float:z,Float:rtn; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z); rtn = floatsqroot(x*x+y*y+z*z); return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100); }
Aber irgednwie haut das nicht ganz hin Pro km/h zu schnell 400$ -
Habe das so..
Codespeed = ErmittleGeschwindigkeit(playerid,true); if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) { strafe = (speed*2) - Blitzer[BlitzerObj][BlitzerGeschwindigkeit];
Codestock ErmittleGeschwindigkeit(playerid,bool:kmh) { new Float:x,Float:y,Float:z,Float:rtn; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z); rtn = floatsqroot(x*x+y*y+z*z); return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100); }
Aber irgednwie haut das nicht ganz hin Pro km/h zu schnell 400$
Dann solltest Du die Systeme wenigstens mal verstehen, und nicht nur straight drauf los Copy & Pasten.
-
-
Das ist kein C&P das ist das erste Blitzer System was ich versuche zu bauen mit strafe und Punkte.
Das was fehlt ist nur das mit den Punkten ab 6 km/h zu schnell das habe ich jetzt auch schon raus gefunden wie das funktioniert @Janes
Wäre ja eig nur
Cnew punkte = floatround((speed - Blitzer[BlitzerObj][BlitzerGeschwindigkeit])/6), floatround_ceil);
Wenn ich mich nicht täusche
Bzw du wendest floatround_floor an, dann kriegt er auch nur Punkte wenn er bspw. 56km/h fährt, anstatt 54 oderso.
Obwohl ich dir sowieso raten würde, eine Art "Toleranz" einzufügen von 3-5km/h. -
Das hab ich tatsächlich bereitd getan kann einstellen von 1 - 10 Die Toleranz.
Das Heißt der Präsident kann es ändern zwischen 1 - 10 die Toleranz.
Other[BlitzerToleranz]; -
Hab ein kleines Problem mit meinem Würfeltisch..
CMD:wurfeltisch(playerid, params[])
{
if(IsPlayerConnected(playerid) && IsPlayerInRangeOfPoint(playerid, 2, 1670.2463,-1234.6539,15.1847))
{
new zahl,einsatz;
if(sscanf(params,"ud",zahl,einsatz)) return SendCommandParams(playerid, "/wurfeltisch [Zahl] [Einsatz]");
if(GetPlayerMoney(playerid) >= einsatz)
{
new dice = random(6);
if(zahl > 1 && zahl < 6)
{
SendClientMessage(playerid, COLOR_RED, "Die geschätzte Zahl muss unter 1-6 liegen.");
return 1;
}
if(einsatz < 5000 || einsatz > 99999)
{
SendClientMessage(playerid, COLOR_RED, "Der Einsatz muss zwischen $5000 und $99999 liegen.");
return 1;
}
if(zahl == dice)
{
new string[258];
format(string,sizeof(string), "Du hast auf die %d getippt und gewonnen. Dein Einsatz verdreifacht sich.",zahl);
SendClientMessage(playerid,COLOR_GREEN,string);
GivePlayerMoney(playerid, einsatz+einsatz+einsatz);
}
else
{
new string[258];
format(string,sizeof(string), "Du hast auf die %d getippt, doch die richtige lautete %d. Dein Einsatz hat sich in Luft aufgelöst.", zahl,dice);
GivePlayerMoney(playerid,-einsatz);
SendClientMessage(playerid,COLOR_RED,string);
}
}
else
{
new string[128];
format(string,sizeof(string),"Du benötigst mehr Geld für deinen Einsatz (%d) oder Du setzt einen niedrigeren ein.",einsatz);
SendClientMessage(playerid,COLOR_RED,string);
}
}
return 1;
}Ich Würfel zwar aber nicht meine Zahl..
Du hast auf die 65535 getippt, doch die richtige lautete 2. Dein Einsatz hat sich in Luft aufgelöst.Das kommt dann raus
-
In sscanf ist dein erster Parameter der Parameter (z.B. "dd" oder "ud", du weißt was ich ich meine) der Parameter u. U steht für einen Spieler, und weil es den Spieler nicht gibt den du angibst ist der Wert INVALID_PLAYER_ID (65535).
Ändere es zu "dd" und es sollte klappen. -
In sscanf ist dein erster Parameter der Parameter (z.B. "dd" oder "ud", du weißt was ich ich meine) der Parameter u. U steht für einen Spieler, und weil es den Spieler nicht gibt den du angibst ist der Wert INVALID_PLAYER_ID (65535).
Ändere es zu "dd" und es sollte klappen.Ok jetzt klappt das zwar aber ich kann nur noch die Zahl 1 Würfel
-
aber ich kann nur noch die Zahl 1 Würfel
Versuch es mal so zu schreiben:
C
Alles anzeigenCMD:wurfeltisch(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 2, 1670.2463,-1234.6539,15.1847)) return 1; new zahl,einsatz; if(sscanf(params,"dd",zahl,einsatz)) return SendCommandParams(playerid, "/wurfeltisch [Zahl] [Einsatz]"); new dice = random(6)+1,string[144]; if(zahl < 0 || zahl > 6) return SendClientMessage(playerid, COLOR_RED, "Die geschätzte Zahl muss unter 1-6 liegen."); if(einsatz < 5000 || einsatz > 99999) return SendClientMessage(playerid, COLOR_RED, "Der Einsatz muss zwischen $5000 und $99999 liegen."); if(GetPlayerMoney(playerid) < einsatz) { format(string,sizeof(string),"Du benötigst mehr Geld für deinen Einsatz (%d) oder Du setzt einen niedrigeren ein.",einsatz); return SendClientMessage(playerid,COLOR_RED,string); } if(zahl == dice) { format(string,sizeof(string), "Du hast auf die %d getippt und gewonnen. Dein Einsatz verdreifacht sich.",zahl); SendClientMessage(playerid,COLOR_GREEN,string); GivePlayerMoney(playerid, einsatz+einsatz+einsatz); } else { format(string,sizeof(string), "Du hast auf die %d getippt, doch die richtige lautete %d. Dein Einsatz hat sich in Luft aufgelöst.", zahl,dice); GivePlayerMoney(playerid,-einsatz); SendClientMessage(playerid,COLOR_RED,string); } return 1; }
-
Versuch es mal so zu schreiben:
C
Alles anzeigenCMD:wurfeltisch(playerid, params[]) { if(!IsPlayerInRangeOfPoint(playerid, 2, 1670.2463,-1234.6539,15.1847)) return 1; new zahl,einsatz; if(sscanf(params,"dd",zahl,einsatz)) return SendCommandParams(playerid, "/wurfeltisch [Zahl] [Einsatz]"); new dice = random(6)+1,string[144]; if(zahl < 0 || zahl > 6) return SendClientMessage(playerid, COLOR_RED, "Die geschätzte Zahl muss unter 1-6 liegen."); if(einsatz < 5000 || einsatz > 99999) return SendClientMessage(playerid, COLOR_RED, "Der Einsatz muss zwischen $5000 und $99999 liegen."); if(GetPlayerMoney(playerid) < einsatz) { format(string,sizeof(string),"Du benötigst mehr Geld für deinen Einsatz (%d) oder Du setzt einen niedrigeren ein.",einsatz); return SendClientMessage(playerid,COLOR_RED,string); } if(zahl == dice) { format(string,sizeof(string), "Du hast auf die %d getippt und gewonnen. Dein Einsatz verdreifacht sich.",zahl); SendClientMessage(playerid,COLOR_GREEN,string); GivePlayerMoney(playerid, einsatz+einsatz+einsatz); } else { format(string,sizeof(string), "Du hast auf die %d getippt, doch die richtige lautete %d. Dein Einsatz hat sich in Luft aufgelöst.", zahl,dice); GivePlayerMoney(playerid,-einsatz); SendClientMessage(playerid,COLOR_RED,string); } return 1; }
Danke hat geklappt
-
Moin,
Wie konnte man nochmal beim Formatieren sagen ob es z.b Grün oder Rot ist bei einer Varriable ?
Hat Jemand mal ein bsp -
Wie konnte man nochmal beim Formatieren sagen ob es z.b Grün oder Rot ist bei einer Varriable ?
Ich bin mir nicht wirklich sicher was du genau meinst
Eventuell das hier: https://wiki.sa-mp.com/wiki/Colour_Embedding#Color_embedding
Falls nicht, versuche es präziser zu erklären, am Besten mit einem fiktiven Code Beispiel, wie du dir das vorstellst
-
Moin,
Wie konnte man nochmal beim Formatieren sagen ob es z.b Grün oder Rot ist bei einer Varriable ?
Hat Jemand mal ein bsp"{FFFF00}Gelb {FFFFFF}und {FF0000}Rot"
Meinst du das? -
Derzeit sieht der Code so aus wen er geblitzt wird:
Code
Alles anzeigenstock UpdatePlayer(playerid) { new string[256], speed, strafe, vehicleid = GetPlayerVehicleID(playerid); for(new BlitzerObj=0;BlitzerObj<MAX_BLITZER;BlitzerObj++) { if(Blitzer[BlitzerObj][Erstellt] == 1) { if(IsVehicleInRangeOfPoint(vehicleid, 12.5, Blitzer[BlitzerObj][sperreX], Blitzer[BlitzerObj][sperreY], Blitzer[BlitzerObj][sperreZ]) && gettime() > Spieler[playerid][pBlitzerTime]) { if(Blitzer[BlitzerObj][BlitzerHP] > 0) { if(GetVehicleSpeed(vehicleid) > (Blitzer[BlitzerObj][BlitzerGeschwindigkeit] + Others[BlitzerToleranz])) { speed = ErmittleGeschwindigkeit(playerid,true); if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) { strafe = (speed - Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) * 400; Spieler[playerid][pBlitzerTime] = gettime() + 10; PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0); GiveMoney(playerid, -strafe); format(string,sizeof(string),"{FBB420}Sie haben die zulässige Höchstgeschwindigkeit überschritten! Erlaubt waren %d km/h, Sie fuhren %d km/h! (%d km/h zu schnell)", Blitzer[BlitzerObj][BlitzerGeschwindigkeit], GetVehicleSpeed(GetPlayerVehicleID(playerid)), GetVehicleSpeed(GetPlayerVehicleID(playerid))-Blitzer[BlitzerObj][BlitzerGeschwindigkeit]); SendClientMessage(playerid, COLOR_WHITE, string); format(string,sizeof(string),"{AA3333}Ordnungsgeld %d$, Anzahl der Strafpunkte %d auf ihren Auto Führerschein", strafe); SendClientMessage(playerid, COLOR_WHITE, string); if(Spieler[playerid][pFraktion] == 2)format(string, sizeof(string), "{1916ED}HQ: Blitzer %i: %s (ID: %i) wurde wegen einer überhöhter Geschwindigkeit (%i/%i Km/h) geblitzt.", BlitzerObj, GetName(playerid), playerid, GetVehicleSpeed(GetPlayerVehicleID(playerid)), Blitzer[BlitzerObj][BlitzerGeschwindigkeit]); SendFraktionMessage(2, COLOR_WHITE, string); if(Spieler[playerid][pFraktion] == 3)format(string, sizeof(string), "{1916ED}HQ: Blitzer %i: %s (ID: %i) wurde wegen einer überhöhter Geschwindigkeit (%i/%i Km/h) geblitzt.", BlitzerObj, GetName(playerid), playerid, GetVehicleSpeed(GetPlayerVehicleID(playerid)), Blitzer[BlitzerObj][BlitzerGeschwindigkeit]); SendFraktionMessage(3, COLOR_WHITE, string); if(Spieler[playerid][pFraktion] == 4)format(string, sizeof(string), "{1916ED}HQ: Blitzer %i: %s (ID: %i) wurde wegen einer überhöhter Geschwindigkeit (%i/%i Km/h) geblitzt.", BlitzerObj, GetName(playerid), playerid, GetVehicleSpeed(GetPlayerVehicleID(playerid)), Blitzer[BlitzerObj][BlitzerGeschwindigkeit]); SendFraktionMessage(4, COLOR_WHITE, string); if(Spieler[playerid][pFraktion] == 6)format(string, sizeof(string), "{1916ED}HQ: Blitzer %i: %s (ID: %i) wurde wegen einer überhöhter Geschwindigkeit (%i/%i Km/h) geblitzt.", BlitzerObj, GetName(playerid), playerid, GetVehicleSpeed(GetPlayerVehicleID(playerid)), Blitzer[BlitzerObj][BlitzerGeschwindigkeit]); SendFraktionMessage(6, COLOR_WHITE, string); } } } } } } return 1; }
Natürlich wen der Blitzer Kaputt ist kann er halt nicht Blitzen.
So die Frage ist wie ich ihn ab 6 km/h zuschnell 1 Punkt eintragen lasse.
Da ich da eine BlitzerToleranz drinnen habe. -
@Kaliber:
Jetzt würde mich Ja der Name angezeigt werden in weiß.
Mein vorhaben ist dass ich beim Format ohne zwei unterschiedliche Strings zu Formatieren abfrage ob bizInfo[i][biz_Waffem][0] 0 ist dann soll es Rot sein und wenn es Größer als 0 soll es Weiß bzw Grün sein.
Oder vertue ich mich da gerade das sowas ging ?// Sowas z.b
-
Hä? Aktuelle Geschwindigkeit - Höchstgeschwindigkeit - Toleranz = km/h drüber
-
Soweit bin ich auch aber wie kann ich genau setzen wen er 6 km/h zu schnell ist das 1 Punkt bekommt pro 6km/h zu schnell 1 Punkt heißt ist er 12 km/h zu schnell 2 Punkte das addiert sich ja logischerweiße.
Das habe ich mittlerweile ja auch raus gefunden. -
Beispiel:
Du fährst 136 Kmh, erlaubt sind aber 80 (+3 Toleranz). Demnach ziehst du von deiner Geschwindigkeit die 83 Kmh ab.
136 - 83 sind demnach 53 Kmh, die du zuschnell gefahren bist. Um so die Punktevergabe zu errechnen musst durch erst einmal schauen ab wie viele kmh jedes Mal ein Punkt dazu kommen soll.
Beispielsweise man soll immer ab 6 kmh einen neuen Punkt bekommen, teilst du die 53 kmh durch 6.53 / 6 = 8.8
dabei würde ich an deiner Stelle noch einen Grenzwert festlegen, nicht wenn du mit Shamal durch nen Blitzer mit ~ 300 kmh rast, dass du 20 Punkte oder so bekommst.
-
Danke klingt logisch,
Kann man irgednwie eine GF größe von einer Karte ablesen? Mit ein editor oder so??