Hi,
Kann mir einer vllt bisschen erklären wie ich die Klammern im Script richtig zu setzen habe, oder ist das nicht notwendig und dienst allein für die Übersicht?
Hi,
Kann mir einer vllt bisschen erklären wie ich die Klammern im Script richtig zu setzen habe, oder ist das nicht notwendig und dienst allein für die Übersicht?
Klammern sind sehr wichtig.
Aber nur was gibt es da zu erklären?
Was genau willst du wissen?
MfG. zdot
einfach nur so ein Beispiel
if(newkeys == 2) //Prüft ob Taste zum Hupen gedrückt wurde
{
if(IsPlayerInRangeOfPoint(playerid,15,-2051.3999023438, -102.19999694824, 34.200000762939)) { //Prüft ob Spieler in nähe der Schranke
if(pInfo[playerid][member] == 8 || pInfo[playerid][leader] == 8) { //Prüft ob Player Fahrlehrer ist
MoveDynamicObject(fstor,-2043.6999511719, -102.30000305176, 34.900001525879 + 0.01, 0.01, 0, 0, 0); //Objekt bewegen
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Das Tor schließt sich von selbst."); //Nachricht senden
SetTimer("fsclose",5000,0); //Timer für das Schließen der Schranke starten
}
}
}
Dort sind die Klammern ja auch in weiten abständen , die letzten drei z.B
if (strcmp("/Lcninfo", cmdtext, true, 10) ==0 && (strcmp("/Lcninformation", cmdtext, true, 10) ==0)) { SendClientMessage(playerid,allgemein,"~~~~~~~~~~~~~{weiß}[Red Country Server Lcninforamtion]{allgemein}~~~~~~~~~~~~~"); SendClientMessage(playerid,weiß,"Hier siehst du die Informationen über die LCN"); SendClientMessage(playerid,weiß,"Mit /lcn kannst du das Tor öffnen von der LCN!"); SendClientMessage(playerid,weiß,"Mit /gchat schreibst du in den Gangchat!"); SendClientMessage(playerid,allgemein,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**************~~~~~~~~"); SendClientMessage(playerid,allgemein,"Weitere Befehle sind: [/befehle] - [/info] - [/hilfe] - [/waffenladen]"); return 1; }
z.b.
Klammern sind eigentlich das wichtigste überhaupt
Sie fassen div. Dinge zusammen (So steht das in meinem C Buch)
das sie wichtig sind weiß ich inzwichen schon, nur in was für einbem abstand etc. noch net.
Klammerin sind dazu wichtig, die Befehle zusammen zu halten. Beispiel.
// Befehl
if(IsPlayerConnected(i))
{ // Würde ich jeweils einfach die Klammern weglassen, käme es zu Errors und das Script würde nichts mehr checken.
if(IstSpielerAdmin(i,1))
{// Das heisst: Sobald du eine Klammer vergisst, kriegst du meist 26 Errors. (Weisen auf ein Klammerfehler hin)
SendClientMessage(i,Blau,text);
if(GetPVarInt(playerid,"Adminlevel")==0) SendClientMessage(playerid,Rot,"Nutze den /a Chat nicht aus!");
}// Wenn du oben ins Script "#pramga tabsize 0" oder sowas eingibst, eignoriert das Script sämtliche Abstände der Klammern. Beispiel unten.
}
}
return 1;
}
if(IsPlayerConnected(i))
{
if(IstSpielerAdmin(i,1))
{
SendClientMessage(i,Blau,text);
if(GetPVarInt(playerid,"Adminlevel")==0) SendClientMessage(playerid,Rot,"Nutze den /a Chat nicht aus!");
}
}
}
return 1;
}
lg
könnte ich das also auch so machen, wie du es ab zeile 14 gemacht hast, einfach die leertasten weglassen?
Einrücken ist theoritisch nicht wichtig.
Wenn du aber am Script arbeitest, merkst du schnell, wie wichtig die Einrückung zum Arbeiten ist. Dadurch wird es übersichtlicher etc.
Außerdem beschwert Pawno sich beim kompilieren, wenn man irgendwo falsch einrückt.
ok, ich hab das jetzt mal versucht, jedoch kommen errors, wo würde dort mein fehler liegen?
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(!IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265))
{
SetPlayerPos(playerid,2496.0500,-1692.9301,1014.7422);
SetPlayerInterior(playerid,20,296.10000610352,-38.400001525879,836.400002441406);
return 1;
}
}
Kommen Errors, die so heissen: "Loose Indentation"? Das sind Einrückungsfehler, diese kannst du easy mit "TAB" drücken ausbessern.
Und Pupskuchen hat schon gesagt, einrücken ist wichtig damit du nicht den Überbklick verlierst.
lg
#E: Grammar Fail!
Nunja, diese Erros kommen
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6) : error 010: invalid function or declaration
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 3) : error 010: invalid function or declaration
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(5) : error 010: invalid function or declaration
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6) : error 010: invalid function or declaration
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 7) : error 010: invalid function or declaration
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 12) : warning 203: symbol is never used: "SetPlayerInterior"
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 12) : warning 203: symbol is never used: "SetPlayerPos"
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 12) : error 013: no entry point (no public functions)
D:\GTA San andreas\skripten\pawno\teleportinterrior.pwn(6 -- 12) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
7 Errors.
Alles anzeigen
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265)) //Ausrufe Zeichen macht kein Sinn, sont wird er die ganze Zeit teleportiert.
{
SetPlayerPos(playerid,2496.0500,-1692.9301,1014.7422);
SetPlayerInterior(playerid,20); // Coords braucht dieser Befehl nicht.
return 1;
}
}
Und haste auch den CMD in den richtigen Public geschrieben?
lg
Du hattest ja geschrieben "//Coords braucht dieser Befehl nicht,"
Nunja, da ich einen eignenen Interrior gemappte habe unter der Interrior ID 20 und etwas weiter weg bin von den standart punkten, muss ich ja die Coords angeben wo ich hin will
Dann musst du das anders machen.
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265))
{
SetPlayerInterior(playerid,20);
SetPlayerPos(playerid,/*2496.0500,-1692.9301,1014.7422*/); // Hier deine Coords, wo dein Interior ist (Das was ich ausgeklammert habe)
return 1;
}
}
lg
danke dir
//edit: Magste mir noch kurz zeigen wie ich das mache, wenn ich aus dem Interiior raus will?
So hab ich das jetzt mit den richtigen Coords wenn ich rein will
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265))
{
SetPlayerInt(playerid,20);
SetPlayerPos(playerid,2496.0500,-1692.9301,1014.7422);
return 1;
}
}
Alles anzeigenDann musst du das anders machen.
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265))
{
SetPlayerInterior(playerid,20);
SetPlayerPos(playerid,/*2496.0500,-1692.9301,1014.7422*/); // Hier deine Coords, wo dein Interior ist (Das was ich ausgeklammert habe)
return 1;
}
}
lg
korrekt wäre es aber so:
if(strcmp(cmdtext, "/enter", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,1412.6999511719,-1700.4000244141,13.199999809265))
{
SetPlayerInterior(playerid,20);
SetPlayerPos(playerid,/*2496.0500,-1692.9301,1014.7422*/); // Hier deine Coords, wo dein Interior ist (Das was ich ausgeklammert habe)
return 1;
}
}
Hab über den Zitat von Pupskuchen nochma ein Edit gemacht
So ungefähr.
if(strcmp(cmdtext, "/exit", true) == 0)
{
if(IsPlayerInRangeOfPoint(playerid,5.0,/*1412.6999511719,-1700.4000244141,13.199999809265*/)) // Deine Coords wo er stehen soll, damit er rauskommt.
{
SetPlayerInterior(playerid,0); // 0 Ist die Normale Spieler Welt
SetPlayerPos(playerid,/*2496.0500,-1692.9301,1014.7422*/); // Hier deine Coords, wo der Spieler gespawnt werden soll (Das was ich ausgeklammert habe)
return 1;
}
}
lg
#E: lg vergessen und natürlich Exit nicht Enter xD
danke danke