Kannst sonst einfach auch [wiki]AttachObjectToVehicle[/wiki] nehmen (extra für Fahrzeuge, somit besser für dich geeignet) und um die Positionen raus zu finden gibt es gute filterscripts, einfach mal googlen
[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
-
-
@Der Lümmel:
Naja das ist nicht so einfach, such ma nach 'SAMP Pathfinder', sowas gibts eig nur für FCNPC bzw NPC Implementationen Das nennt man Pathfinding, dazu kannst du das ColAndreas Plugin oder das Cimulator Plugin nutzen, würde ich auf die schnelle so sagen, da du dazu die SanAndreadMap brauchst, die aktuelle Position und die Position vor dir, mit der du checkst ob es ein Objekt aus SanAndreas gibt. Falls es von dir erstellt wurde, speichere alle Objekte in nem Array und frage die Position ab oder nutze direkt ein StreamerPlugin. -
Hi, weiß jemand warum mein Timer nicht so funktioniert wie gewollt? (Screen im Anhang)
public UpdateRoundTime() {
new sQuery[32];if(RoundStarted == true) {
RoundSeconds --;
if(RoundSeconds == 0)
{
RoundMints--;
if(RoundMints == 0)
{
RoundSeconds = 59;
}
if(RoundMints < 0)
{
RoundSeconds = 59;
RoundMints = R_Mints;
}
}
}format(sQuery, sizeof(sQuery), "TIME: ~b~%02d:%02d", RoundMints, RoundSeconds);
TextDrawSetString(RoundTime, sQuery);format(sQuery, sizeof(sQuery), "ARENA:~b~ %02d", Area);
TextDrawSetString(ArenaTextID, sQuery);
return 1;
}Timer in OnGameModeInit SetTimer("UpdateRoundTime", 800, true);
Das Problem ist das manchmal der Timer nicht mehr runtergezählt wird, sondern hochgezählt wird und das Format ändert sich auch. Standart soll es so sein 9:58.
-
@[LnD]JustMe.77 :
Ich gcke gerade nur mit Handy drüber aber vllt weil du den Textdraw nicht updatest. Du musst nach ner String / Teständerung immer Textdraw.hide() und show() benutzen, genauso bei Farben.//edit okay hab jetzt das problem verstanden, dann sorry meins wird dir nicht helfen
Ein Problem was ich vllt sehe ist dass du gleich am Anfang RoundSeconds runterzählst, wenn nun RoundSeconds standart 0 ist dann wird er beim initialisieren auf -1 verschoben und somit fortan immer weiter runterzählen, da die Bedingung RoundSeconds == 0 nie erfüllt wird. Also Entweder beim Initialize richtig setzen falls es nicht gesetzt ist oder die Abfrage in "if(RoundSeconds <= 0)" ändern. -
seit der neuen Version gibt's einen neuen Sirenen Parameter bei der Carerstellung. Hab mir den noch nicht genauer angeschaut könnte aber dein Problem lösen.
Das ist nur die "Hupe" die den Sound macht, kenn ich schon ^^.
Kannst sonst einfach auch [wiki]AttachObjectToVehicle[/wiki] nehmen (extra für Fahrzeuge, somit besser für dich geeignet) und um die Positionen raus zu finden gibt es gute filterscripts, einfach mal googlen
Werde ich mal testen, Danke
Filterscripts zu finden ist leider schwierig, da die meisten im samp forum sind und dies down/gelöscht ist -
Vom Prinzip her kannst du das so machen:
Unter den Includes:
new sirenID[MAX_VEHICLES] = {-1, ...};Beim hin-machen:
new vehicleid = GetPlayerVehicleID(playerid);
sirenID[vehicleid] = CreateObject(/*...ausfüllen...*/);
AttachObjectToVehicle(sirenID[vehicleid], vehicleid, /*...ausfüllen...*/);Beim entfernen und dort wo das Fahrzeug gelöscht wird:
DestroyObject(sirenID[vehicleid]);
sirenID[vehicleid] = -1; -
Hab bloß noch ne Frage, was ist das hinter MAX_VEHICLES} = {-1, ...} ?
Vom Prinzip her kannst du das so machen:
Unter den Includes:
new sirenID[MAX_VEHICLES] = {-1, ...};Beim hin-machen:
new vehicleid = GetPlayerVehicleID(playerid);sirenID[vehicleid] = CreateObject(/*...ausfüllen...*/);AttachObjectToVehicle(sirenID[vehicleid], vehicleid, /*...ausfüllen...*/);Beim entfernen und dort wo das Fahrzeug gelöscht wird:
DestroyObject(sirenID[vehicleid]);sirenID[vehicleid] = -1;Hey, danke!
-
Hab bloß noch ne Frage, was ist das hinter MAX_VEHICLES} = {-1, ...} ?
Das heißt, dass alle Indizes (von 0 bis MAX_VEHICLES-1) auf -1 gesetzt werden, zum Deklarationszeitpunkt.
Sonst wäre er 0, es gibt ja aber ein Objekt mit der ID 0, daher geht das nicht, sondern man muss eine andere Zahl (in dem Fall -1) nehmen. -
Ok wie mach ich ein Befehl wie /sirene an/aus?
Ich blicke da immer noch nicht durch die strlens und strvals durch -
Welchen Command-Prozessor nutzt du denn?
-
-
Ganz normal bei OnPlayerCommandText if(strcmp...
Wenn ich sowas wie OCMD benutze, gehen die anderen Befehle nicht mehr
-
Dann kannst du es so machen:
if(!strcmp(cmdtext, "/sirene", true, 7))
{
if(strlen(cmdtext) == 7) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /sirene [an/aus]");
else if(cmdtext[7] == ' ')
{
if(!strlen(cmdtext[8])) return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /sirene [an/aus]");
if(!strcmp(cmdtext[8], "an", true))
{
//an
}
else if(!strcmp(cmdtext[8], "aus", true))
{
//aus
}
else return SendClientMessage(playerid, 0xFF0000FF, "Benutze: /sirene [an/aus]");
return 1;
}
} -
Danke
Edit: Wie ändert man nur die Farbe von dem Nametag und nicht dem Namen im Chat?
-
Danke
Edit: Wie ändert man nur die Farbe von dem Nametag und nicht dem Namen im Chat?
-
Das ändert auch die Farbe vom Namen im Chat, habt ihr mir ja gestern schon gesagt. Wollte aber nur dass der Nametag die Farbe welchselt (Name über dem Spielerskin)
-
Wie frage ich ab ob ein Spieler gespawnt ist ?
-
Wie frage ich ab ob ein Spieler gespawnt ist ?
OnPlayerSpawn ist der richtige Public dafür
-
Code
Alles anzeigenstock SaveUserStats(playerid) { //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht if(!PlayerInfo[playerid][pLoggedIn]) return 1; //Ansonsten speichere sie new query[256]; mysql_format(handle, query, sizeof(query), "UPDATE accounts SET level = '%d', kills = '%d', deaths = '%d', $ - cash = '%d', $ - bank = '%d', rp = '%d', spawnhealth = '%d', job id = '%d', frac id = '%d', adminlevel = '%d', paycheck = '%d', payminutes = '%d', fRank = '%d', mute = '%d' WHERE id = '%d'", PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pCash], PlayerInfo[playerid][pBank], PlayerInfo[playerid][pRP], PlayerInfo[playerid][pShealth], PlayerInfo[playerid][pJob], PlayerInfo[playerid][pFrac], PlayerInfo[playerid][pAdminLevel], PlayerInfo[playerid][pPaycheck], PlayerInfo[playerid][pPayminutes], PlayerInfo[playerid][pLeader], PlayerInfo[playerid][pFRank], PlayerInfo[playerid][pMute], PlayerInfo[playerid][p_id]); // ÄNDERN //Das Query wird abgesendet mysql_pquery(handle, query); return 1; }
Codepublic OnPlayerDisconnect(playerid, reason) { //Speichere den Spieler wenn er der Server verlässt SaveUserStats(playerid); return 1; }
Aus Jeffry's MySQL Tutorial, wieso speichert er bei mir die Stats nicht? -
OnPlayerSpawn ist der richtige Public dafür
Ich möchte die Abfrage in einem anderem Public verwenden. -
Dann setzt du ihm eine variable auf 1 unter OnPlayerSpawn wenn er das erste mal spawnt und diese variable auf 0 steht.
Dann kannst du damit weiterarbeiten. -