Was genau meinst du jetzt was geändert zeig mal.
[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
-
-
Was genau meinst du jetzt was geändert zeig mal.
[/quote]return SendClientMessage(playerid,Weiss,"Wir haben diesen Befehl nicht in der Datenbank!{0xFFFFFFFF}/help");
Das habe ich eingegeben.
-
also hast du das return 0; weggemacht?
new string[126];
format(string,sizeof(string),"Wir haben den Befehl (%s) nicht in der Datenbank! "{FF2800}" '/help'",cmdtext);
return SendClientMessage(playerid,Weiss,string);TIPP: Wenn du ein Text schreibst und z.B.
SendClientMessage(playerid, COLOR_NAME, "Benutzt "/Help" um weitere Befehle zu sehen."); // FALSCH
SendClientMessage(playerid, COLOR_NAME, "Benutzt '/Help' um weitere Befehle zu sehen.");//RICHTIGMit " bricht du den text ab um z.B Farben codes einzufügen oder weiteres.
-
-
Danke Jungs ;D
-
Und das man mit " unterbrechen muss für Farbcodes wäre mir neu.
Dummheits fehler
meine z.B.""#DUNKELROT" Test sagt: .... "
-
Dummheits fehler
meine z.B.Für defines muss man unterbrechen. Stimmt.
-
moin,
kleine frage, wie kann ich befehle verhindern, wenn man zb bewusstlos ist ?derzeit habe ich es so was leider aber nicht geht
public OnPlayerCommandText(playerid, cmdtext[])
{
if(InBehandlung[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "Du bist bewusstlos und kannst derzeit keine Befhele benutzen!");
return false;
}
return true;
} -
Anstelle des return false setzt du einfach dein SendClientMessage drauf.
Das returnt nämlich im Normalfall 1.Ansonsten kommt: SERVER: Unknown command
e:/ Das muss aber übrigens auch ganz oben stehen.

Bei anderen Dingen wie ocmd zcmd dcmd müsste man in deren interne Callbacks eingreifen. -
wie kann ich den ocmd blocken ?
-
Könntest du eben den Inhalt der Include auf Pastebin posten?
Bin leider nicht zu Hause, kann es dir so spontan nicht sagen
-
jo hier https://pastebin.com/bKXn7ASf

-
Probiere mal folgendes:
Returne in BeforePlayerCommandText 0 - ist wie OnPlayerCommandText aufgebaut - wenn der Spieler gemutet sein soll, ansonsten 1.
Du brauchst kein forward, definiere lediglich#define OCMD_BEFORE_CALLBACK
LG

-
öh jetzt bin ich überfragt
meinst du
#define OCMD_BEFORE_CALLBACKpublic BeforePlayerCommandText 0()
{}
-
Soweit ja, nur meine ich das Callback so:
#define XYZ zu viel Schreibarbeit x)
public BeforePlayerCommandText(playerid, cmdtext[]) { //siehst beim compilen obs da einen Fehler gibt xD
//wenn muted -> return 0
return 1;
}Melde dich mal, wenn du es ingame getestet hast.

-
okay habs drin er sagt mir das ich es doch mit forward machen soll
39301) : warning 235: public function lacks forward declaration (symbol "BeforePlayerCommandText")
39309) : error 010: invalid function or declarationderzeitig habe ich es so wenn ich es recht verstehe ;D
public BeforePlayerCommandText(playerid, cmdtext[])
{ //siehst beim compilen obs da einen Fehler gibt xD if(InBehandlung[playerid] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "Du bist bewusstlos und kannst derzeit keine Befhele benutzen!");
return 0;
}
return 1;
}//wenn muted -> return 0 -
Das return 0 zum SendClientMessage und an der derzeitigen Stelle ein return 1.
Setze mal das define über #incluce <ocmd> -
danke dir
daran lag es
und hatte gesehen das return 1 am ende kommt und in der abfrage return 0; also den callback für nein
wie kann ich eigendtlich 2 cordinaten so abfragen das man ein raum von mehren orten beträten kann ?
mit virtuelworld habe ich schon gemacht geht auch prob ist nur das der 2te eingang mich immer beim 1ten wieder raus haut habe auch mit veriable versucht wie zb welchegarage[playerid] = 1;//erster eingang
welchegarage[playerid] = 2; und diese beim ausgang abgefragt von wo er halt raus geht um ihn den richtigen ausgang zu geben jedoch ohne erfolg er gibt im immer den 1ten ausgang und ich habe kein plan warum obwohl ich es voher abfrage dammit er den richtigen bekommt -
Dann zeig uns doch Mal deinen Code wie du es versucht hast.
-
@Karox das ist eigentlich ganz einfach!
Wenn du einen Ort mehrfach nutzen willst, ohne dass die Spieler sich gegenseitig sehen, musst du mit virtuellen Welten für einen Interior arbeiten.Dafür kannst du dir die Enumeration mal genauer anschauen
enum INTERIOR_DETAILS {
Float:entryX,
Float:entryY,
Float:entryZ,
entryVW,
entryInt,
/* Die Koordinaten für den Eingang, entryVW steht hierbei für die virtuelle Welt und entryInt für den Interior */
Float:exitX,
Float:exitY,
Float:exitZ,
exitVW,
exitInt,
/* das gleiche wie oben nur für den Ausgang */
pickupID,
Pickup:pEntry,
Pickup:pExit,
/* Optional kannst du Pickups für den Ein- und Ausgang erstellen und mit pickupID eine ID direkt festlegen.
Natürlich funktioniert das genauso auch mit 3D-Texten. :) */
};
new InteriorData[MAX_GARAGEN][INTERIOR_DETAILS];
Grundsätzlich musst du nur mit einer Schleife arbeiten und folgendes beachten:
Ist der Spieler an einem Eingangpunkt? Falls ja -> Interior und Virtuelle Welt setzen, danach die Koordinaten
Ist der Spieler an einem Ausgangspunkt? Falls ja -> gleiches SpielACHTUNG!!!:
Du musst dringend prüfen, ob der Spieler auch am richtigen Ausgang ist, indem du die virtuelle Welt und den Interior mit den Werten aus den Interior-Daten vergleichst!
Ist dieser gleich, dann befindet er sich am richtigen Ein- oder Ausgang.
Versuche es erstmal selbst, das ist grundsätzlich ein etwas komplexeres System. Nur wenn man ausgiebig selbst auf die Schnauze fällt, lernt man es am Ende.

