Du setzt das "Found" nie auf einen anderen Wert als 0.
Am besten du machst es etwas einfacher, so:
cmd:aufbrechen(playerid,params[])
{
if(!IstSpielerInFrak(playerid,5)) return SendClientMessage(playerid,COLOR_RED,"Du bist nicht beim ADAC!");
new Float:vX, Float:vY, Float:vZ, p_vid = GetPlayerVehicleID(playerid);
for(new vid = 0; vid < MAX_VEHICLES; vid++)
{
if(vid == p_vid) continue;
GetVehiclePos(vid,vX,vY,vZ);
if(GetPlayerDistanceFromPoint(playerid, vX, vY, vZ) < 7.0)
{
PutPlayerInVehicle(playerid, vid, 0);
return SendClientMessage(playerid, COLOR_GREEN, "Du hast das Fahrzeug aufgebrochen");
}
}
return SendClientMessage(playerid, COLOR_RED, "Es befindet sich kein Fahrzeug in der Nähe!");
}
Beiträge von Jeffry
-
-
Ja, nach dem gleichen Prinzip wie in dem Tutorial:
public AlleHauserSpeichern()
{
new query[256];
for(new i=0; i<MAX_PLAYER_HAUS; i++)
{
if(Hauser[i][IntID] >= 1 && Hauser[i][IntID] <= 19)
{
//Und wir erstellen das Query:
format(query, sizeof(query), "UPDATE Hauser SET IntID = '%d', H_X = '%f', H_Y = '%f', H_Z = '%f', H_R = '%f', Besitzer = '%d' WHERE ID = '%d'",
Hauser[i][IntID], Hauser[i][H_X], Hauser[i][H_y], Hauser[i][H_Z], Hauser[i][H_R], Hauser[i][Besitzer], i);
//handle = die Connection Handle ID die vor mysql_connect steht.
mysql_tquery(handle, query);
}
}
return 1;
}(Gegebenenfalls %f zu %d ändern, wenn du die Positionen als Integer speicherst.)
-
Poste bitte mal deinen Code, ab ca. oberhalb Zeile 400, irgendwo ab wo es Sinn macht (nicht mittendrin in einer Funktion).
Bis ca. Zeile 450. -
Am Ende der Zeile muss ein Backslash stehen, wenn du im String im Quellcode eine neue Zeile anfängst.
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == smweapon)
{
ShowPlayerDialog(playerid, Dialog_Weapons, DIALOG_STYLE_LIST,"Waffen:","Messer 100$\nRosen Gratis\
\nMolotov Cocktail 10x 10.000$\nMP5 200x 10.000$\nSniper 20x 10.000$\nRPG 10x 100.000$\
\nHaftbombe 10x 100.000$","Accept","decline");
return 1;
}
return 1;
}
Außerdem hat am Ende eine Klammer und ein return gefehlt. -
if(!(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 5 || Spieler[playerid][pFraktion] == 3))
und
if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 5 && Spieler[playerid][pFraktion] != 3)
ist das Gleiche.Letzteres finde ich allerdings übersichtlicher.
Siehe hierzu: https://de.wikipedia.org/wiki/De_Morgansche_Gesetze
-
Ahh, natürlich.
So sollte es passen:
CMD:mv(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, 2260.21875, 2032.12817, 10.49372)) //Ordnungsamt Schranke
{
if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 5 && Spieler[playerid][pFraktion] != 3)return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Staatsbeamter.");
static bool:OamtTorS;
if(!OamtTorS)
{
MoveDynamicObject(OamtTor, 2260.21875, 2032.12817, 10.49372, 0.02, 0.00000, 0.00000, 0.00000);
OamtTorS = true;
}
else
{
MoveDynamicObject(OamtTor, 2260.19238, 2032.12610, 10.52340, 0.02, 2.93070, -90.20000, 0.90000);
OamtTorS = false;
}
}
return 1;
}Du hattest die Objekt-Variable in der Abfrage verwendet, ist mir auch nicht aufgefallen.
-
Rufst du denn "CreateHVTable();" bei OnGameModeInit überhaupt auf, und lädt das Plugin?
-
26errors aber habe vor dem return 1; noch ne klammer weg gemacht dann kamen keine errors.
Dann hast du vergessen eine Klammer am Ende zu ersetzen, so wie beim Post, da hat nämlich auch eine gefehlt.
gibt es noch ne bessere version den getöteten spieler wieder in die arena zu moven
Ja, bei OnPlayerSpawn abfragen, ob der Spieler in der Arena ist, wenn ja, SetPlayerPos.
Dann ist er direkt wieder drin, wenn die Tot-Kamera vorbei ist. -
Versuche es so:
Function OnPlayerDeath(playerid, killerid, reason)
{
M_OnPlayerDeath(playerid,killerid,reason);
if(impb[playerid] == 1)
{
SetTimerEx("pbweiter", 4000, false, "i", playerid);
if(pbrang[playerid] == 1)
{
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, 24, 500);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
}
else if(pbrang[playerid] == 2)
{
ResetPlayerWeapons(playerid);
GivePlayerWeapon(playerid, 25, 500);
SetPlayerHealth(playerid,100);
SetPlayerArmour(playerid,100);
}
}
if(killerid != INVALID_PLAYER_ID)
{
if(impb[killerid] == 1)
{
if(pbrang[killerid] == 1)
{
ResetPlayerWeapons(killerid);
pbrang[killerid] = 2;
GivePlayerWeapon(killerid, 25, 500);
GameTextForPlayer(killerid, "~r~>>>Waffenbeförderung<<<", 1000,4);
}
}
}
return 1;
} -
Wie sieht denn dein ganzes OnPlayerDeath aus?
Möglicherweise hast du es falsch verschachtelt, oder ein return schon davor gesetzt. -
Kannst dir mal dieses System hier anschauen, vielleicht erfüllt das deine Wünsche:
Dynamisches Fraktionssystem V1 | SQLite -
Jein (in diesem Fall würde es sogar klappen, aber wenn eine weitere Schranke dazu kommt nicht mehr), wenn du es innerhalb haben willst, dann wäre es so korrekt:
CMD:mv(playerid, params[])
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, 2260.21875, 2032.12817, 10.49372)) //Ordnungsamt Schranke
{
if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 5 && Spieler[playerid][pFraktion] != 3)return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Staatsbeamter.");
if(OamtTor == 0)
{
MoveDynamicObject(OamtTor, 2260.21875, 2032.12817, 10.49372, 0.02, 0.00000, 0.00000, 0.00000);
OamtTor = 1;
}
else if(OamtTor == 1)
{
MoveDynamicObject(OamtTor, 2260.19238, 2032.12610, 10.52340, 0.02, 2.93070, -90.20000, 0.90000);
OamtTor = 0;
}
}
return 1;
} -
Versuche es so:
CMD:mv(playerid, params[])
{
if(Spieler[playerid][pFraktion] != 1 && Spieler[playerid][pFraktion] != 5 && Spieler[playerid][pFraktion] != 3)return SendClientMessage(playerid, COLOR_GREY, "** Du bist kein Staatsbeamter.");
if(IsPlayerInRangeOfPoint(playerid, 10.0, 2260.21875, 2032.12817, 10.49372)) //Ordnungsamt Schranke
{
if(OamtTor == 0)
{
MoveDynamicObject(OamtTor, 2260.21875, 2032.12817, 10.49372, 0.02, 0.00000, 0.00000, 0.00000);
OamtTor = 1;
}
else if(OamtTor == 1)
{
MoveDynamicObject(OamtTor, 2260.19238, 2032.12610, 10.52340, 0.02, 2.93070, -90.20000, 0.90000);
OamtTor = 0;
}
}
return 1;
}Verändere die 0.02 (Speed) falls es zu langsam/schnell ist.
-
Du musst die Rotation der Schranke auch mit angeben, wenn diese sich verändern soll.
Wenn es nur die Rotation ist, die sich ändert, dann musst du das Objekt ganz langsam minimal bewegen.Poste bitte mal die Koordinaten von:
Schranke offen
Schranke zuJeweils als CreateDynamicObject-Code (im Map Editor einmal offen und einmal zu erstellen).
-
Ok. Textdokument = Dini?
Wenn ja, dann versuche doch mal, dich an diesem Tutorial ([jTuT] Fraktions-Fahrzeug-System mit Dini 1.6) entlang zu hangeln. Du musst nur Teile davon übernehmen (z.B. ein Timer um alles zu Speichern brauchst du ja nicht, oder einen /parken Befehl).
Was zu eigentlich erst mal brauchst:
Lade-Funktion bei OnGameModeInit
Erstellen Befehl
(gegebenenfalls Löschen Befehl)Dinge wie Model und Fraktion kannst du alles weg lassen, du brauchst ja nur die Koordinaten.
Fange am besten so an, dass du eine Datei manuell erstellst, mit den Koordinaten des ersten Pakets, dann erstellst du die Lade-Funktion, und wenn die klappt, den Befehl zum Erstellen von Paketen. Danach dann den zum Löschen, falls gewünscht.Versuche mal ob du damit klar kommst.
-
Das Problem liegt hier:
if(PlayerInfo[i][pReady] = 1)continue;Das müsste dir auch eine Warnung 211 geben (possibly unintended assignment) [=Möglicherweise ungewollte Zuweisung].
Ändere das zu:
if(PlayerInfo[i][pReady] == 1) continue;
Das war somit auch das Problem, dass alle Spieler immer bereit waren.
-
Existiert immer nur eine Geschenk-Box, oder mehrere/alle gleichzeitig?
-
Alternativ kannst du, wenn du die ganzen SetPlayerPos' schon bei OnPlayerSpawn drin hast, auch einfach bei
//Spieler aus dem Jail lassen.
das machen:
SpawnPlayer(i);Das würde dann auf's gleiche raus kommen, hättest den Code halt dann nicht doppelt da stehen.
-
Ist mir zuvor am Handy nicht aufgefallen, dass du die Falschen Anführungszeichen nutzt, so passt es:
CreateHVTable()
{
new query[512];
format(query,sizeof(query),"CREATE TABLE IF NOT EXISTS `HAUSER` (");
format(query,sizeof(query)," %s `ID` int(12) NOT NULL PRIMARY KEY, ",query);
format(query,sizeof(query), " %s `IntID` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), " %s `H_X` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Y` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_Z` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), " %s `H_R` float NOT NULL DEFAULT '0'," ,query);
format(query,sizeof(query), "%s `Mieter` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query), "%s `Mietpreis` int(11) NOT NULL DEFAULT '0',",query);
format(query,sizeof(query)," %s `Hauskasse` int(11) NOT NULL DEFAULT '0')",query);
mysql_tquery(handle,query);
return 1;
}Außerdem hattest du dich bei DEFAULT mal verschrieben.
-
Wenn es bei dir trotzdem nicht geht, poste bitte deine Version von Befehl und Timer nochmal komplett hier, und beschreibe ganz genau was du und der andere Spieler Schritt für Schritt machen.
Wäre gut, wenn du das machen könntest, damit wir hier wieder einen einheitlichen Stand haben.