Ich bin irgendwie neugierig, um was handelt es sich denn? ![]()
Beiträge von Kaliber
-
-
Jetzt mal no joke...aaaaaber fahr doch einfach in die Werkstatt

-
Mal ne frage mit dem return bei stocks
Nun, generell ist das egal.
Die Regel besagt aber, mach lieber überall ein return, zur Not einfach return 0 oder so.
Damit die Funktion in returns (oder Statements) verwendet werden kann.
Aber im Endeffekt, wenn sie keinen Wert zurückgeben soll, ist es egal.
-
Give it a try:
C
Alles anzeigenstock IsPlayerTargetATM(playerid, objectid) { new r,a,Float:t; GetObjectRot(objectid,t,t,t),r=floatround(t); GetPlayerFacingAngle(playerid,t),a=floatround(t); new Float:x,Float:y,Float:z; GetObjectPos(objectid,x,y,z),GetPlayerPos(playerid,z,z,z); x -= 0.6 * floatsin(-a, degrees); y -= 0.6 * floatcos(-a, degrees); if(GetPlayerDistanceFromPoint(playerid,x,y,z) > 0.2) return 0; //Er steht nicht direkt davor! return (((a-45)%360) >= ((r-45)%360)) || (((a+45)%360) <= ((r+45)%360)); //Er schaut den ATM nicht an } -
Wenn du schon ewig googelst, dann musst du ja auf was ganz besonderes aus sein...oooder?
Weil, wenn ich google, finde ich hunderte von Filterscripts...
https://forum.sa-mp.com/showthread.php?t=314827
https://forum.sa-mp.com/showthread.php?t=139954
https://forum.sa-mp.com/showthread.php?t=493603Was missfällt dir an diesen?
Zur Not musst du schon noch selbst etwas Hand anlegen und evtl die Positionen ändern...oder die Sprache

-
erlaubt auf 532 gesetzt werden und nee gar nicht besetzt weil es auf 0 steht?
Dieses !! verwandelt eine Zahl einfach nur in einen boolschen Typ.
Alle Zahlen außer 0 werden zu true und die 0 wird zu false.
Ergo wird 532 (sowie jede andere Zahl auch) zu true (bzw 1) und die 0 wird zu false (bzw bleibt 0).
-
Nur, für leute die keinen Kegel haben, funktioniert es nicht.
Ich frage mich eher, wieso dies der Fall ist

Hmmmm....
Hast du mal probiert, den Actor zu löschen und wieder neu zu erstellen während du davor stehst (also schon im Interior bist)?
Ändert sich da was?
Ich könnte mir höchstens vorstellen, da diese Clientseitig gestreamt werden, dass da was buggt mit der syncro xD
Evtl also mal neu spawnen lassen oder sowas...denn generell sollte das ja schon klappen

-
Das mache ich immer so hatte es in einem Tutorial gelernt.
Das macht nur Sinn, wenn du es dann auch verwendest, ansonsten kannst du das lassen.
Im Log ist die Rede von den cache Funktionen, diese werden hier allerdings gar nicht aufgerufen...
Rufst du irgendwo denn noch diese auf in einem Callback?
-
Das mysql_p/tquery fehlt

In SaveUserStats

-
Drück mal F5 und zeig uns das Bild direkt nach dem Teleportieren, wo die Objekte noch nicht geladen sind

-
Gibt es beim Scripten eine bestimmte Reihenfolge die man einhalten muss? Z.B. wenn ich über OnPlayerConnect selber eine Funktion erstelle, könnte dass anschliessend irgendwelche Auswirkungen haben?
Prinzipiell nein.
Ausnahmen gibt es, z.B. Funktionen mit Tags, wie Float oder bool, da müsste man ein forward verwenden, aber das sagt dir schon der Compiler, ansonsten, nein.
Oder Markos (also diese Dinge mit #define) oder auch #include.(Innerhalb einer Funktion hingegen ist es natürlich sehr wichtig, dass du erst eine Variable deklarierst, bevor du sie nutzt).
-
Zum Üben kann man so ein Design von 0 anfangen.
Allerdings empfehle ich dir Aufgrund von mobilen Ansichten (bzw generell unterschiedlichen screen-sizes) etc. auf Templates/Frameworks zurückzugreifen, wie Bootstrap etc.
//Edit:
Pack lieber ein ul { margin: 0; } hinzu. -
PlayerInfo[playerid][pFraktionrang]
Als was ist das denn definiert?
Benutze mal z. B new const copRank[] [] und frage es mittels copRank(id) ab.. Und wieso eigentlich - 1? Sorry bin erst am Freitag am PC über Handy ist das doof aber schauen wir mal
Ne, das stimmt schon so, der Code stammt von mir

-1 weil jemand der einen Rang von 0 hat, ja keinen Rang hat, allerdings das Array bei 0 beginnt, somit -1

//Edit: Eventuell gibt es schon eine Funktion oder so mit dem Namen?
-
wenn der Server Crasht
Na, sowas sollte jetzt nicht jeden Tag passieren

Ansonsten kannst du die Leute ja zwischenspeichern...alle 10-15min...
Und eventuell vermehrt darauf achten, nichts zu skripten, was deinen Server crasht

-
Man kann auch einfach einen freundlichen Stop Befehl in den Server einbauen, der alle User speichert und dann den Server mit einer kurzen Verzögerung über [wiki]SendRconCommand[/wiki] ausschaltet. (dort dann exit oder gmx verwenden)
-
Nutz doch bspw. Textdraws die du nur ganz kurz anzeigen lässt. Dann Spammst du den Chat damit nicht voll.
Das wäre auch mein Vorschlag gewesen, das Keyword hier lautet "InfoBox samp"

-
Hey,
Kann ich abfragen, ob die letzte Nachricht im Chat == einer Nachricht ist?
Habe nichts gefunden im guten InternetSowas brauch man auch eigentlich nicht.
Gehe smarter an die Sache ran.
Wenn es um eine Nachricht geht, die ein Spieler geschrieben hat, dann nutze einfach [wiki]OnPlayerText[/wiki].
Ist es eine spezielle Info Nachricht, gesendet vom Server (dann schau, wo diese gesendet wird und dann weißt du ja, dass diese gesendet wurde...)

Theoretisch kann man SCM und SCMTA hooken und dann immer die letzte Nachricht zwischenspeichern. Dann weiß man, was die letzte Nachricht war.
Aber das muss man ja theoretisch nicht, da es smarter wäre, einfach die Aktion, die man ausführen mag, an die Gegebenheiten im Skript anzupassen. -
Kann auch sein, dass deine Festplatte in mehrere Bereiche partitioniert ist.
Einfach mal auf Computerverwaltung > Datenspeicher > Datenträgerverwaltung gehen und schauen, ob da mehrere Partitionen angezeigt werden

-
Hmmm, bei dem Befehl stimmt so einiges nicht.
Schau dir eventuell nochmal ein paar Tutorials zu format etc an.
if(sscanf(params, "us", PID, str, rank))
"us" sagt du hast 2 Variablen. Eine die was mit einer spielerid zu tun hat und einen string. Dann gibst du aber 3 an...wozu das mit dem str?
Und wieso rank als String, wenn du es als Integer nutzen magst?
Dann fragst du per switch & case den Rang ab, noch bevor du ihn überhaupt gesetzt hast.
Und im Format unten, hast du wieder unnötig str stehen.
und dann weist du einer Integer Variable...einen String mit dem Inhalt "Moderator" z.B. zu.........
Also, dass dir da keine Errors/Warnings angezeigt werden grenzt schon nahezu an ein Wunder

Besser wäre sowas (orientiert sich an der 2. Version von dem, was ich oben geschrieben hatte):
C
Alles anzeigenCMD:setadmin(playerid,params[]) { if(PlayerInfo[playerid][pAdmin] < 1)return SendClientMessage(playerid, -1,"Du bist kein Admin. Du kannst den Befehl nicht nutzen!"); new PID, str[128], rank; if(sscanf(params, "ud", PID, rank))return SendClientMessage(playerid, -1 ,"[Benutze] /setadmin [playerid][rank]"); if(!PlayerInfo[PID][pLoggedIn])return SendClientMessage(playerid, -1, "Spieler ist nicht eingeloggt!"); format(str, sizeof(str), "'%s' wurde zu einem Admin ernannt mit dem Rank: %s",getName(PID),GetAdminRangName(rank)); SendClientMessageToAll(-1, str); PlayerInfo[PID][pAdmin] = rank; SaveUserStats(PID); return 1; } -
Schreibe es mal so:
C
Alles anzeigenCMD:admins(playerid, params[]) { new string[256],rank[22]; for(new i = GetPlayerPoolSize(),name[MAX_PLAYER_NAME+1]; i != -1; i--) { if(!IsPlayerConnected(i) || !PlayerInfo[i][pAdmin]) continue; switch(PlayerInfo[i][pAdmin]) { case 1: rank = "Moderator"; case 2: rank = "Anfänger Admin"; case 3: rank = "Anwärter Admin"; case 4: rank = "Administrator"; case 5: rank = "Server-Administrator"; } GetPlayerName(i, name, sizeof(name)); format(string, sizeof(string), "%s{FFFFFF}%s: {1B8AE4}%s (%d)\n", string, rank, name, i); } if(!string[0]) return SendClientMessage(playerid, -1, "Keine Admins Online"); ShowPlayerDialog(playerid, DIALOG_ADMINONLINE, DIALOG_STYLE_LIST, "Team Online:", string, "Close", ""); return 1; }Oder hier nochmal eine Version, wo die AdminNamen etwas ausgelagert sind:
C
Alles anzeigen#define GetAdminRangName(%0) admin_rang_namen[(%0)-1] stock const admin_rang_namen[][] = { "Moderator", "Anfänger Admin", "Anwärter Admin", "Administrator", "Server-Administrator" }; CMD:admins(playerid, params[]) { new string[256]; for(new i = GetPlayerPoolSize(),name[MAX_PLAYER_NAME+1]; i != -1; i--) { if(!IsPlayerConnected(i) || !PlayerInfo[i][pAdmin]) continue; GetPlayerName(i, name, sizeof(name)); format(string, sizeof(string), "%s{FFFFFF}%s: {1B8AE4}%s (%d)\n", string, GetAdminRangName(PlayerInfo[i][pAdmin]), name, i); } if(!string[0]) return SendClientMessage(playerid, -1, "Keine Admins Online"); ShowPlayerDialog(playerid, DIALOG_ADMINONLINE, DIALOG_STYLE_LIST, "Team Online:", string, "Close", ""); return 1; }