Am besten du überprüfst beim Spawnen ob er Level 1 ist also eine Abfrage, falls er Level 1 ist, wird der Checkpoint gesetzt, falls nicht wird keiner gesetzt.
if (GetPlayerScore(playerid) == 1) {
SetPlayerCheckpoint(........);
}
usw.
Am besten du überprüfst beim Spawnen ob er Level 1 ist also eine Abfrage, falls er Level 1 ist, wird der Checkpoint gesetzt, falls nicht wird keiner gesetzt.
if (GetPlayerScore(playerid) == 1) {
SetPlayerCheckpoint(........);
}
usw.
Es ist einfach so ich frage mich wieso sowas gescriptet wird wenn es sowas bereits gibt. Deswegen frage ich immer nach. Tut mir leid. Ich möchte einfach immer auf dem neuesten Stand bleiben, was das beste, was das schnellste ist Ich hoffe das stört nicht.
Nun gut da es nur einfacher ist, werde ich es wohl nicht benutzen. Aber trotzdem für deine Mühe und für deine leichtere Bedienbarkeit ein großes Lob. Denke schon das dies einige verwenden werden
Wie auch bei deinem File Cached Base Include interessiert mich hier, was nun besser an deinem ist als bei dem Includes von Strickenkid oder G-Stylzes. Also wie kamst du darauf das überhaupt zu scripten. Also großes Lob das ist mal was neues. Aber ist es auch besser oder schneller?
Mfg
Ich würde hier mit der Methode GetDistanceFromMeToPoint arbeiten. Das bedeutet du prüfst den Punkt des jeweiligen Krankenhaus und vergleichst dann welcher Wert kleiner ist und dort spawnst du dann. Verstehst du meine Logik?
Also erstmal gute Arbeit von dir dafür. Nun ist meine Frage, warum sollten wir dein Filesystem nehmen? Was ist an deinem besser als Dini, SII oder vieles andere?
Würde mich halt interessieren
Hattest du bei dir nicht "Death" anstatt "Tode" im Script stehen?
Schau mal in dein enum nochmal
Aus den zwei Werten kommt kein Float-Wert heraus sondern ein dezimale Zahl deswegen %d.
Außerdem kannst du nicht zwei Werte bei einem Format berechnen lassen.
mach es einfach so
new zahl = Spieler[playerid][Kill]/Spieler[playerid][Tode];
format(string,sizeof(string),"%d",zahl);
Welcher Warning-code kommt denn?
Ja ok, hast du Skype oder TS?
Das ist aber jetzt echt komisch. Stimmt auch dein enum?
Hast du die Variable str2 deklariert?
new str2[5];
Falls es bei dir auch die richtige position ist. Sollte es stimmen.
if(fbi == false)
{
SendClientMessage(playerid, COLOR_GREEN, "Tor geöffnet!");
MoveObject(FBITor, 2933, -2431.69, 497.52, 30.42, 0.00, 0.00, 25.17), // HIER
fbi = true;
}
Du hast immernoch bei der MoveObject-Zeile einen Beistrich stehen. Bitte ändern
Hahaha mir ist der Fehler aufgefallen xD
Spieler[killerid][Kill] ++;
TextDrawHideForPlayer(killerid, Killsa[killerid]);
format(str2,sizeof(str2),"%i",Spieler[killerid][Kill]);
TextDrawSetString(Killsa[killerid],str2);
TextDrawShowForPlayer(killerid, Killsa[killerid]);
du hast das Textdraw dem gestorbenen geupdatetet und nicht dem der einen Kill mehr gemacht hat. So sollte es gehen
Spieler[killerid][Kill] ++;
Probier mal anstatt dem
Spieler[killerid][Kill] += 1;
Hmm glaube aber nicht das es an dem liegt. Aber probiers mal.
Updatet es sonst immernoch nicht?
Erstellst du dein Tor auf der Position. Wenn du das Tor öffnen möchtest. Kann es nicht funktionieren wenn die Koordinaten genau gleich sind. Vergleich die mal. Erst bei der unteren Bedingung sind die Koordinaten anders.
FBITor=CreateObject(2933, -2431.69, 497.52, 30.42, 0.00, 0.00, 25.17);
MoveObject(FBITor, 2933, -2431.69, 497.52, 30.42, 0.00, 0.00, 25.17);
// Fällt dir was auf?
if(IsPlayerInFrac(playerid, 21))
{
if(fbi == false)
{
SendClientMessage(playerid, COLOR_GREEN, "Tor geöffnet!");
MoveObject(FBITor, 2933, -2431.69, 497.52, 30.42, 0.00, 0.00, 25.17); // hattest hier einen Beistrich anstatt einen Strick-Punkt |||| Außerdem die gleichen koordinaten beim Tor aufmachen wie beim Tor erstellen. Verändere die Koordinaten beim Erstellen oder hier
fbi = true;
}
else if(fbi == true) //
{
SendClientMessage(playerid, COLOR_RED, "Tor geschlossen!");
MoveObject(FBITor, 2933, -2431.69, 497.52, 26.92, 0.00, 0.00, 25.17);
fbi = false;
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Du bist kein Mitglied vom F.B.I..!");
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
Killsa[i] = TextDrawCreate(78.0,426.0,"0");
TextDrawLetterSize(Killsa[i],0.5,1.2);
TextDrawFont(Killsa[i],2);
TextDrawSetProportional(Killsa[i],1);
TextDrawSetOutline(Killsa[i],1);
TextDrawSetShadow(Killsa[i],4);
}
So gehört es auch
Unter OnPlayerDeath das hier einbauen
TextDrawHideForPlayer(playerid, Killsa);
TextDrawSetString(Killsa,str2);
TextDrawShowForPlayer(playerid, Killsa);
EDIT:
Ich würde dir PlayerTextdraws empfehlen die extra dafür geschaffen sind. Erklärungen findest du auf Wiki
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
if(classid >= LSPD[0] && classid <= LSPD[2])
{ // Du hast diese schwellige Klammer bei der ersten Abfrage vergessen
Siehe letzte Zeile hier oben
Ok dann danke ich euch beiden für eure Scriptvorschläge, ich bleibe bei meinem, da ich meines einfach am einfachsten finde und auch leicht verständlich. Ihr könnt ruhig eure Scripte da stehen haben. Mich stört das nicht. Jeder kann sich selbst entscheiden welches er nimmt
Ok jedem das seine, ich sagte ja es gibt viele Datumsmöglichkeiten
Wünsche dir viel Glück
Kein Problem
Sieht ja soweit gut aus.
Aber wieso immer wieder eine Schleife benutzen um herauszufiltern welches Wort es genau war ?
Meiner Meinung nach eine Schleife zuviel. Allgemein würde ich die Wörter niemals in einem Array auflisten eher auf aus einer Database auslesen lassen.
Ich kann dir ja bei Bedarf mal meine CensorString funktion zukommen lassen und dir dazu nen kleinen COde für die DB schreiben.
LG RFT
Ich finde nicht das eine Schleife zuviel ist. Ich möchte es ja zensiert haben und nicht einfach weggelassen haben.
Das mit dem aus der Datenbank auslesen habe ich bereits geplant fürs nächste Update. Keine Sorge, dafür brauche ich keinen Code, das kann ich selber
Aber danke für deine Hilfe.
@ |-|auke
Sie möchten es aber unter OnPlayerText und nicht unter der main-methode
Ja stimmt man müsste dann bei OnPlayerText das return auf 1 setzen. Für mein Script ist deine Version leider unbrauchbar, da ich eben noch was dazubearbeite und dann erst der Text ausgegeben wird. Aber trotzdem danke für deine Hilfe. Vielleicht nutzen ja manche deinen Code z.B. Stunt-Server