Dann versuchs doch mit
SetPlayerArmour(playerid, 0);
um die automatisch wieder wegzunehmen
Beiträge von Mann im Mond
-
-
Dann versuchs doch mit weiteren prints
public fahrstundefailed(playerid)
{
printf("public fahstundefailed %d", playerid); // zb hier
if(!FAHRSCHULCAR(GetPlayerVehicleID(playerid)))
{ // [...]
Und schau ob es überhaupt aufgerufen wird und was aufgerufen wird, mit Hilfe der Server.cfg
Eigentlich müsstest du mindestens das im Spiel sehenZitat* Du hast 15 Sekunden um zurueck in das Fahrschul-Auto zu steigen !
und das in der Server.logZitatpublic fahstundefailed ID
Dann weisst du schonmal, dass der Timer richtig ausgeführt wird. Wenn die Id noch mit deiner übereinstimmt auf dem Server, dann weisst du , dass auch id übertragen wird usw. -
Eigentlich sollte SetPlayerTeam genau dafür sorgen, allerdings ist/war dies laut der Liste verbuggt (noch nicht ausprobiert)
http://forum.sa-mp.com/index.php?topic=82288.0
// edit: Es funktioniert angeblich,zumindest fastZitatthe only bug with it is not updating the team for inactive player ids
Versuchs einfach mal, obs bei dir funktiniert, falls nicht versuchs mit SetSpawnInfo oder AddPlayerClassEx und gleichen Teamids
-
Na ja mal abgesehen von dem ganzen Code, der irgendwie eine komische Art hat Sachen auszulesen, solltest du zuerst mal schauen wie groß dein Array "Karten" definiert ist. ist das vielleicht nur auf 100?
if (h == 0) { // Gibtn Warning... vll. würde auch if (!h) gehen
Dann versuch doch mal "!h" oder "h == false", wahrscheinlich wird ein boolean zurückgeliefert, ich kann es dir nicht sagen, da ich nicht wirklich mit Dateien arbeite// Ich benutze hier StrTok, da sscanf komischerweise bei sehr vielen Objekten müll liest?? Naja, mit Strtok funzt es ;)
Na ja ich sehe nciht, dass du mit strtok arbeitest, ich sehe auch nciht, dass du irgendwo irgendwelche Werte ausliest von der Datei, sscanf hat allerdings wirklich Probleme mit Floats, allerdings gibt es da einen Fix
http://forum.sa-mp.com/index.p…09431.msg678481#msg678481 -
// [...]
new
vehicle = GetPlayerVehicleID(i);
if(Gas[vehicle] > 0)
{
// if(Gas[vehicle] <= 10) Was macht das hier?
if(!IsAPlane(vehicle) && !IsABoat(vehicle) && !IsATrain(vehicle) && !IsAFahrrad(vehicle)) Gas[vehicle]--;
} //[...]
Nur ein Verbesserungsvorschlag. Wäre es nicht sinnvoller eine Schleife durch die Autos zu machen, anstatt durch alle Spieler die im Auto sitzen? Schließlich verliert das Auto Bezin und Autos verlieren (angenommen der Motor ist an) auch ohne einen Menschen drin Bezin, bei dir allerdings nicht. -
Schade, dass ich solche interessanten Themen erst so spät entdecke.
Na ja wie auch immer, wenn du nicht weißt, wo der fehler liegt und uns nur ein zwei Zeilen Code gibts, musst du nicht denken jeder kennt dein Script und macht es "kurz". Wenn du nicht mehr zeigen willst, dann war der Vorschlag von NachoMan der Richtige. Es war zwar nur ein Schritt, aber umso mehr du machst, desto eher findest du den Fehler. Allerdings so wie ich das anschaue liegt das Problem einzig und allein an diesem komischen mit CAPS geschriebenen Ungetüm
FAHRST(...)
Zeig mal bitte alles was dazu gehört und wie du es definiert hast, dann können wir auch helfen...Es gab erst letzenes ein Thema zu der Schreibweise hier, du bist (nicht böse gemeint) wieder einer der in genau dies raster passt. Wenn man schreibt benutzt man solche Wörter wie "Alta" (sogar mit "a" am Ende, damit es dramatischer klingt - hat auch Ähnlichkeit mit "dia", "mia" usw.) nicht, diese benutzt man wenn überhaupt im "Ghetto"...
-
Da stellt sich die Frage, warum immer ein Timer benutzen wenns auch einfacher geht. Benutze anstatt SetPlayerScore einfach etwas Eigenes, wie das hier
stock SetUserScrore(playerid, amount)
{
SetPlayerScore(playerid, (GetPlayerScore(playerid)+1));
if(GetPlayerScore(playerid) == 10)
{
// was soll passieren?
}
else if(GetPlayerScore(playerid) == 20)
{
// was soll passieren?
}
// ...
}
Einfach SetUserScore anstatt SetPlayerScore verwenden und du kannst auf 5 Integer (bools würden hier genauso reichen) und einen Timer verzichten -
Falsch
Anmerkungen als Kommentar, achte vor Allem auf die Reihenfolge, auf if/else, rcihtige ids, Erstellung von Strings, vergewissere dich, dass du die FUnktion wie sscanf richtig anwendest usw.
dcmd_givecarliz(playerid, params[])
{
if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, ROT, "Du bist nicht eingeloggt (log dich mit /login (Passwort) ein !"); // Wenn der Spieler NICHT eingeloggt
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, ROT, "Du bist nicht kein Admin !"); // Wenn der Spieler kein Admin ist
new
id; // Erstelle einen Integer
if(sscanf(params,"u",id)) return SendClientMessage(playerid,GELB,"Benutze:/givecarliz [ID]"); // Überprüfe die Parameter, falls diese nicht stimmen, gib eine Nachricht aus
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid,GELB," Ungültiger Spieler"); // Exitiert der Spieler nicht, so gib eine nachricht aus
new
lehrling2 [MAX_PLAYER_NAME],
fahrlehrer [MAX_PLAYER_NAME],
string[80]; // Die Erstellung eines Strings mit der Größe 80 reicht für diesen Text vollkommen
GetPlayerName(playerid, fahrlehrer, sizeof(fahrlehrer));
GetPlayerName(playerid, lehrling2, sizeof(lehrling2));
format(string, sizeof(string), "** Du hast %s den Führerschein gegeben.",lehrling2); // formatiere den String und sende diesen anschließend sofort
SendClientMessage(playerid, HELLBLAU, string); // Sende die Nachricht an denjenigen, der den Befehl eingeben hat
format(string, sizeof(string), "** Du hast von %s den Führerschein bekommen!",fahrlehrer); // formatiere den gleichen String, da du den ersten nicht mehr benötigst
SendClientMessage(id, HELLBLAU, string); // Sende die Nachricht an den andeen Spieler, also an "id"
Licenses[id][car] = 1; // Setze den Wert des Scheins von "id" (!) auf 1
return 1;
} -
Wenn die Nachricht nicht automatisch geht, dann füg sie unter OnPlayerRequest Class manuell ein
-
Grunsätzlich gilt, ein return 1; bricht genauso wie ein break; den kompletten Schleifendurchlauf ab. An deiner Stelle könntest du ein continue; verwenden, aber das wäre unnötig. Also wurde deine Schleife auerhaft abgebrochen durch das return 1;
Als ich deinen Code mal eingerückt habe, war eine Klammer zu viel, vielleicht hab ich die versehentlich dazugemacht, ich weiß es nicht. Benutzt du SetTimerEx oder nur SetTimer, um diesen Callback aufzurufen? Ich glaube nur SetTimer so wie ich das sehe, deshalb kann kein playerid Parameter übergeben werden, weshalb dein Code oben nur für playerid 0 funktioniert hat. Außerdem benötigst du GetVehicleHealth nicht, wenn du die Erngie des Autos nur auf 1000 setzt dauerhaft
Merke
1.) Entweder es heisst
public Callback(Parameter) { }
dann benutze SetTimerEx
SetTimerEx("Callback", 1000, 1, "d", deinParameter /* wie playerid z.B.*/)2. ) Oder es heisst
public Callback() { }
dann benutze SetTimer
SetTimer("Callback", 1000, 1);In deinem Fall, da du ALLE Spieler mit einbesziehen willst und unbesiegbar machen willst, benutze die 2. Methode. Um mit der 2. Methode auf Spieler zuzugreifen,musst du wie oben in deinem Code eine Schleife benutzen.
// forward GodCarZone()
// SetTimer("GodCarZone",...);
public GodCarZone()
{
for (new i = 0; i < MAX_PLAYERS; i++) {
new
vehicleid = GetPlayerVehicleID(i);
if(IsPlayerConnected(i)) {
if((IsPlayerInAnyVehicle(i))&&(PlayerToPoint(500, i, -4713.3574, -2038.9917, 246.1165)))) {
TextDrawShowForPlayer(i, Text:Sicheres Gebiet);
SetVehicleHealth(vehicleid, 1000, 1);
}
else TextDrawHideForPlayer(i, Text:Sicheres Gebiet);
}
// } // Wo kommt die her?
}
return 1;
} -
Um was in der Server.log zu speichern
print oder printfAnsonsten schau hier vorbei
http://wiki.sa-mp.com/wiki/File_Functions -
Einmal was im englischen Forum gesucht und schon ein Problem gefunden
http://forum.sa-mp.com/index.php?topic=23931.0
Da steht ganz großZitatsamp_mysql_free_result() => DON'T USE IT, IT WILL CRASH YOUR SERVER !!!
Ich hoffe das ist verständlich genungAußerdem, der Query bringt nichts
mach ihn lieber zu -
Du solltest auch nicht nur kopieren und einfügen, sondern wenn du es schon machst mitdenken.
-
Zitat
[...]Mann in Mond und The Brain ihr denkt wie politiker ... wenn amoklauf passiert wirds gleich wieder auf killerspiele geschoben dabei liegt das problem deutlich wo anderst.
Hat nicht einmal im Entferntesten mit dem zu tun, was ich geschrieben habe. Du machst auch nicht gerade ein super Vorbild mit einem Punkt in tausend Sätzen.Ich denke bei vielen liegt das Problem auch daran, dass sie GENAU so schreiben, wie sie auch reden würden. Also ohne Punkt, Komma etc., Wörter wie "omg", "lol" usw. gerade wild hineingewürfelt, dazu noch falsche Rechtschreibung und Groß- und Kleinschreibung.
@Rainer: Da hast du Recht, Legasthenie ist nicht genau das Selbe wie die Sprachstörung von 8D, allerdings kann man diese genau angehen wie alles andere auch. Und ich glaube das wollte 8D damit auch sagen, nicht dass er das Gleiche hatte
-
Das liegt daran,dass alle mit 12 und 13 Jahren schon GTA spielen.....
Genau in diesem Punkt liegt das Hauptproblem bei ungefähr schätungsweise 70%. Korrigiert mich, wenn ich falsch liege, aber die "Jüngeren" achten einfach weniger auf das, was sie schreiben als Ältere bzw. sie achten drauf, wissen es aber nicht besser, weil sie halt erst in der 7. Klasse oder was weiß ich wo sind.
Abgesehen von der Rechtschreibung fällt auch immer wieder die Groß- und Kleinschreinbung auf. Wenn man das nicht kann, dann sollte man versuchen einen einheitlichen Stil zu wählen und nicht wie wild rumraten. Viele schreiben nämlich genau die Worte groß, die eigentlich klein sind und Wort klein, die groß gehören. Das zu lesen ist dann noch einmal schwerer, verbunden mit der Weisheit von vielen "Wer benutzt schon Satzzeichen", wird es dann fast ganz unmöglich...
Bsp.:Zitat"Ich heisse Max Mustermann und wohne hier. Besucht mich!"
->
"ich Heise max mustermann Und Wone hir besucht Mich"
So ungefähr kann man es sagen.
Außerdem wird es nicht verlangt perfekte Rechtschreibung und alles mögliche hier zu zeigen, aber ich denke mal es ist selbstverständlich Standartworte richtig zu schreiben, dazu gehört wie schon einmal angesprochen viel mit "ie", "s" bzw. "ss" usw. wie das berühmte Wort "hir" oder "wi" oder "di". Alles Mögliche kam schon vor.
Ich denke das Ganze hat dann auch eher weniger mit Legasthenie ( es wird außerdem so (<--) geschrieben), sondern einfach mit der Faulheit, weil mir kann keiner verzählen, dass man diese Standartworte nicht fehlerfrei schreiben kann. Ab und zu kann man sich vertippen, wie man bei manchen Kandidaten aber sieht, ist das kein vertipper. Wer keine Kommas setzen kann, der sollte außerdem lieber auf sie verzichten, dann wirds noch einfacher zu lesen, zumindest besser, als wenn die mitten im Satz stehen.Blitz, nichts gegen dich, aber ich glaube dir zwar, dass du an dieser Krankheit leidest, aber ich glaube nicht, dass du es schon einmal versucht hast diese einigermaßen (besser wie jetzt) in den Griff zu bekommen. Panische Angst klingt für mich eher für eine Ausrede und selbst wenn es war ist, würde ich dir raten gegen diese anzukämpfen, ansonsten wird sich es niemals bessern.
-
hast du das Bild gescriptet oder mit Photoshop gemacht. Ich frage, weil du hier im Showroom vom Scripten bist.
Na ja wie auch immer, als Anfang kann man es doch mal einigermaßen gebrauchen, ist halt ein wenig leer. Der Himmel ist ein wenig zu hart, die Sonne ein bisschen zu "Kinder" mäßig. Der gelbe Streifen unten würde ich auch wegmachen. Also mach noch was dazu und mach es nicht alzu arg im "Kinderstyle".
Nur zur Info, im realen Leben ist die Sonne nicht so leuchtend geld und kugelrund... -
Entweder du machst deinen "Marker" mit SetPlayerMapIcon oder du machst den Marker mit einem Checkpoint, also SetPlayerCheckpoint.
Mit einem Checkpoint könntest du ein bisschen mehr erreichen, da du dann auch gleich mit kontrollieren könntest, wenn ein Gegner in den reinläuft und die Runde beenden oder irgendwas. Das alles und deine Überprüfungen dann bei
public OnPlayerEnterCheckpoint(...)
rein -
Zeig die entsprechenden Fehler, also das was im deinen Code steht.
Bei Zeile 17200 und 30101 erstellst du eine neue Variable "vehicleid", obwohl diese bereits exiiert, da musst du also an den Zeilen irgendwas mit new vehicleid; rauslöschen.
Bei Zeile 76406 ähnlich wie oben, nur dass es sich hierbei um keine Variable handelt, die es bereits gibt...
Bei Zeile 76437 sollte dein Callback "Update Speed" sein. Da machst du vor der "}" (Schlussklammer) ein "return 1;" hin, also
public UpdateSpeed()
{
// Dein Code
return 1; // <- das hier
} -
0/10
ist noch schlechter als das Obere. Das Bild oben rechts wurde nur eingefügt, genauso wie der Rest. Es wurde nichts speziell daran verändert, nur ein paar GTA Figuren und Taxte genommen und diese auf einem schwarzen Hintergrund wahllos zusammengemischt. Die Figur überhalb des GTA Logos passt leider gar nicht zu den sonst 2D Bildern. Außerdem ist die Beleuchtung der Figur total anders als der Rest -
Die Dialog Funktion geht nur ab 0.3, du kannst aber alternativ Menüs benutzen oder einfach nur eine Textausgabe in den Chat mit dann jeweils einem Befehl
/buygun [Waffe]