Das 1500 ist die Geschwindigkeit. Je kleiner desto langsamer. Setze das mal zu 1.0 oder so, dann wird es eher in die Richtung gehen, die du haben willst.
[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
-
-
Wie kann ich die Waffe eines Spielers auf die Faust umswitchen und nach einer bestimmten Zeit wieder zur alten?
-
https://wiki.sa-mp.com/wiki/GetPlayerWeapon
https://wiki.sa-mp.com/wiki/SetPlayerArmedWeapon zu 0
=>
SetTimerEx mit playerid und dem aus GetPlayerWeapon
=>
Im public -> SetPlayerArmedWeapon zu der aus GetPlayerWeaponpublic SetWeaponAgain(playerid, weapon)
Versuche, ob du soweit damit klar kommst. Wenn nicht, poste den Code, den du bis dahin hast.
-
@Jeffry Hmm, also ich habe das nicht komplett verstanden. Ich schieße mit meiner Waffe => frage ab welche ich habe => setze sie auf 0 => und mit dem Timer gebe ich ihn die alte Waffe zurück, richtig?
Wofür ist der Public public SetWeaponAgain(playerid, weapon) da?
Habe zurzeit den Code so aufgebaut:
forward OldWeapon(playerid);
public OldWeapon(playerid)
{
//Hier ist irgendwas falsch.
SetWeaponAgain(playerid, weapon);
return 1;
}public SetWeaponAgain(playerid, weapon)
{
//Was mache ich hier?
}public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new Float:FloatValue;
new Value = 0;
FloatValue = float(Value);if(fX != FloatValue && hittype == 0)
{
if(Teleportgun[playerid] == 1)
if(weaponid == 24) //Deagle
{
if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
GetPlayerWeapon(playerid);
SetPlayerArmedWeapon(playerid,0);
SetPlayerPos(playerid,fX,fY,fZ+1);
SetTimerEx("OldWeapon", 1500, false, "playerid",playerid);
}
}
else
{
//SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
}
return 1;
} -
SetTimerEx("OldWeapon", 1500, false, "playerid",playerid);
Zu
SetTimerEx("SetWeaponAgain", 1500, false, "dd",playerid, GetPlayerWeapon(playerid));Und im SetWeaponAgain (forward-Funktion nicht vergessen) dann wieder SetPlayerArmedWeapon.
-
Klappt nicht Ganz, habe wohl was falsch gemacht.
Error:
public function lacks forward declaration (symbol "SetWeaponAgain") LnD15.pwn 1091 /*
forward OldWeapon(playerid);
public OldWeapon(playerid)
{
return 1;
}
*/public SetWeaponAgain(playerid, weapon)
{
SetPlayerArmedWeapon(playerid,weapon);
return 1;
}public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new Float:FloatValue;
new Value = 0;
FloatValue = float(Value);if(fX != FloatValue && hittype == 0)
{
if(Teleportgun[playerid] == 1)
if(weaponid == 24) //Deagle
{
if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
GetPlayerWeapon(playerid);
SetPlayerArmedWeapon(playerid,0);
SetPlayerPos(playerid,fX,fY,fZ+1);
SetTimerEx("SetWeaponAgain", 1500, false, "dd",playerid, GetPlayerWeapon(playerid));
}
}
else
{
//SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
}
return 1;
} -
Für SetWeaponAgain fehlt das forward, das musst du noch drüber einfügen.
-
Achso, nun funktioniert's perfekt. Du hattest mich verwirrt weil das oben gefehlt hat, deswegen hatte ich gefragt wofür dieses Public gut ist

Noch eine kleine Frage, ich möchte das mit mehreren Waffen ermöglichen können, aber ich möchte ungerne immer wieder die Funktion dafür neu erstellen. Kann ich das nicht irgendwie besser umsetzen, irgendwie mit case 24..35 (Waffe 24-35) ? Oder vielleicht auch eine andere Methode
-
Der Timer kann so mit jeder Waffe verwendet werden, da du die Waffen ID ja variabel mitgibst (GetPlayerWeapon).
-
Achso habe mich nicht gut ausgedrückt, die Frage hat weniger mit dem Timern zu tun. Ich habe ja ein Befehl womit ich mit per Schuss teleportieren kann, hier z.B. siehst du das ID 24 (Deagle) definiert wurde. if(weaponid ==24) //Deagle
Doch anstatt jetzt die Funktion jedes mal neu zu erstellen mit einer Waffen ID, möchte ich das in einem machen und dort angeben mit welchen Waffen das erlaubt wird.
Beispielsweise von ID 24 - 30. -
Achso.
Dann so:
if(weaponid >= 24 && weaponid <= 30) -
-
Prüfen ob die Eingabe eine korrekte E-Mail ist? Das ist ziemlich komplex, aber mit sscanf kann man es grob machen:
http://forum.sa-mp.com/showthread.php?t=547789 -
Mit strfind kannt du den Code/Text auf Zeichen(-ketten) prüfen
-
Hi, kann ich mit einer Funktion auflisten welche FilterScripts geladen sind? Und kann ich auflisten welche FilterScripts sich im FilterScripts Ordner befinden?
-
welche FilterScripts geladen sind?
Da müsstest du beim Laden jedes Filterscripts (jeweils bei OnFilterScriptInit/-Exit) einen Eintrag in eine Datei/Datenbank machen, damit du es daraus auslesen kannst, ob geladen oder nicht. Direkt abfragen kann man das nicht.
auflisten welche FilterScripts sich im FilterScripts Ordner befinden?
Hiermit sollte das gehen: http://forum.sa-mp.com/showthread.php?t=92246
-
Wie kann ich in MySQL eine Tabelle erstellen, die nur eine Spalte haben soll, da ich nur Server-Variablen abspeichern möchte.
So wie ich die Tabelle erstellt habe kommt diese Meldung von MySQL.ZitatDie aktuelle Markierung enthält keine eindeutige ("unique") Spalte. Gitter-Bearbeitungsfunktion, Kontrollkästchen, Bearbeiten, Kopieren und Löschen von Links sind nicht verfügbar.
-
Du brauchst eine zweite Spalte, du musst in dem Query ja irgendwo angeben, welche Zeile aktualisiert werden soll.
1=Steuern
2=Staatskasse
...Sonst weiß die Datenbank ja nicht, welcher Wert zu aktualisieren ist.
-
-
Ah, so rum hast du es gemacht.
Aber auch da brauchst du - wenn auch nur Dummy-Weise - eine "ID" Spalte, damit phpMyAdmin weiß, wo es den Wert aktualisieren soll.Füge eine Spalte ID hinzu, setze sie auf UNIQUE und schreibe eine 1 rein. Kannst sie auch Dummy nennen. Hauptsache du hast eine Unique-Spalte.

