richtig ?
Ja, so ist das richtig.
und so bekommt jeder der aufn server ein fahrer ist den punkt ?
Nein, nur jeder der in diesem Fahrzeug ist, bekommt den Checkpoint angezeigt.
richtig ?
Ja, so ist das richtig.
und so bekommt jeder der aufn server ein fahrer ist den punkt ?
Nein, nur jeder der in diesem Fahrzeug ist, bekommt den Checkpoint angezeigt.
wo der Spieler hinschaut?
Gibt es da eine Möglichkeit?
Na klar, musst nur etwas rumspielen, wie groß die Distanz ca ist.
const Float:distance = 5.0; //Hier anpassen, musst schauen, wann es passt (kannst ja zur Probe ein Pickup oder so an der Position erstellen, ob es die richtige ist)
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z), GetPlayerFacingAngle(playerid,a);
x += distance * floatsin(-a, degrees);
y += distance * floatcos(-a, degrees);
//x,y,z = Die Position, die du suchst
Oder wenn es immer unterschiedlich ist, auf SynonymousZ hören!
Die Idee gefällt mir, ist eine nette Funktionalität
stock SetVehicleCheckpoint(vehicleid, Float:x, Float:y, Float:z, Float:size)
{
for(new i=GetPlayerPoolSize(); i!=-1; i--)
{
if(IsPlayerConnected(i) && IsPlayerInVehicle(i,vehicleid)) SetPlayerCheckpoint(i,x,y,z,size);
}
return 1;
}
Jetzt kannst du einfach anstatt den Checkpoint für den Spieler und für das Fahrzeug zu setzen, einfach für das Fahrzeug setzen, dann bekommt jeder (auch der Fahrer), der in dem Fahrzeug ist, den Checkpoint angezeigt!
Ich will ein Flugzeug in der Luft rumfliegen lassen, wie mache ich das?
Welche Möglichkeiten gibt es, die nichts mit NPC zutun haben
PS: [wiki]SetVehicleVelocity[/wiki] klappt leider nicht.
Ansonsten muss man wohl NPCs nutzen
Wenn ich jemanden ein Textdraw anzeige (Textdrawshow...) und der Spieler disconnected,
wird für den nächsten Spieler mit der ID das Textdraw auch angezeigt oder ist es pflicht es beim disconnect wieder zu hiden?
Um die Aussage von Skeezy nochmal zu verdeutlichen auf dein Beispiel.
Würde der Spieler disconnectet werden z.B. durch einen Kick, dann würde er die TextDraws noch weiter sehen (es sei denn du würdest sie hiden).
Connectet ein Spieler mit der selben ID, wird das TextDraw ihm nicht automatisch angezeigt
Bei mir findet er in der Include aber trotzdem nicht pInfo von meinem Gamemode.
Ja, inkludiere das Include erst unter dem new pInfo von deinem Gamemode.
Und da ist ein Formatierungsfehler in Zeile 30 und 31....einfach das eine Leerzeichen davor löschen
PS: GetMySpec ist zwar eine nette Idee, allerdings müsste sie ein Array an Spielern zurückgeben. Da du ja nicht zwingend nur eine Person hast, die jmd spectatet.
Jaaa, Actors fallen durch das Interior, wenn keiner in der Nähe ist (weil clientseitig gestreamt)
Das ist ziemlich nervig, die müssen neu erstellt oder hingeportet werden, wenn jemand das Interior betritt
Gerade mal Langeweile gehabt, hab dir quasi mal n Include dafür geschrieben, was das alles aktualisiert:
//------------------------------- Quasi das Include ----------------------------
//Die Konstanten
enum
{
SPECTATE_MODE_DEFAULT,
SPECTATE_MODE_INTERIOR,
SPECTATE_MODE_VIRTUAL_WORLD
};
//A simple hook
forward OnPlayerVirtualWorldChange(playerid, newworld, oldworld); //Gibt es leider nicht nativ
stock SetPlayerVirtualWorldEx(playerid, worldid)
{
return OnPlayerVirtualWorldChange(playerid, worldid, GetPlayerVirtualWorld(playerid)),
SetPlayerVirtualWorld(playerid, worldid);
}
#if defined _ALS_SetPlayerVirtualWorld
#undef SetPlayerVirtualWorld
#else
#define _ALS_SetPlayerVirtualWorld
#endif
#define SetPlayerVirtualWorld SetPlayerVirtualWorldEx
//Die Haupt-Funktion
stock UpdateSpectateMode(playerid, value=0, const mode=SPECTATE_MODE_DEFAULT)
{
switch(mode)
{
case SPECTATE_MODE_DEFAULT:
{
new vehicle = GetPlayerVehicleID(playerid);
if(!vehicle)
{
for(new i = GetPlayerPoolSize(); i !=-1; i--)
{
if(IsPlayerConnected(i) && pInfo[i][pSpec] == 1 && pInfo[i][pSpecID] == playerid) PlayerSpectatePlayer(i, playerid, SPECTATE_MODE_NORMAL);
}
}
else
{
for(new i = GetPlayerPoolSize(); i !=-1; i--)
{
if(IsPlayerConnected(i) && pInfo[i][pSpec] == 1 && pInfo[i][pSpecID] == playerid) PlayerSpectateVehicle(i, vehicle, SPECTATE_MODE_NORMAL);
}
}
}
case SPECTATE_MODE_INTERIOR:
{
for(new i = GetPlayerPoolSize(); i !=-1; i--)
{
if(IsPlayerConnected(i) && pInfo[i][pSpec] == 1 && pInfo[i][pSpecID] == playerid) SetPlayerInterior(i,value);
}
}
case SPECTATE_MODE_VIRTUAL_WORLD:
{
for(new i = GetPlayerPoolSize(); i !=-1; i--)
{
if(IsPlayerConnected(i) && pInfo[i][pSpec] == 1 && pInfo[i][pSpecID] == playerid) SetPlayerVirtualWorld(i,value);
}
}
}
return 1;
}
//------------------------------- Quasi das Include ----------------------------
//Und dann nur noch im Gamemode anwenden:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER || oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
{
UpdateSpectateMode(playerid);
}
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
UpdateSpectateMode(playerid, newinteriorid, SPECTATE_MODE_INTERIOR);
return 1;
}
public OnPlayerVirtualWorldChange(playerid, newworld, oldworld)
{
UpdateSpectateMode(playerid, newworld, SPECTATE_MODE_VIRTUAL_WORLD);
return 1;
}
Alles anzeigen
...gibt es einen MySQL Log?
Wenn nicht, diesen mal aktivieren, je nach MySQL Version: https://wiki.sa-mp.com/wiki/MySQL/R40#mysql_log
Wo muss ich diese einfügen, damit sie auf dem Server läuft?!
Du musst das in CreateDynamicObject konvertieren
Hiermit z.B.: https://convertffs.com/
Da reinpacken und dann bekommst du die CreateDynamicObjects raus
Das Passwort sollt sehrwohl gehast werden. Oder was hab ich vergessen?
Steht es denn gehasht in der Datenbank? Kannste doch einfach testen.
Edit: Ich hab jetzt mal bcrypt verwendet, jedoch wie mach ich das? Ich hab jetzt ma die Aleitug be deiem Lin befolgt, jedoch weiß ich nicht wie es weitergeht.
Dann lass es jetzt erstmal so, aktuell habe ich keine Zeit oder experimentiere etwas rum, oder evlt ist jemand so nett und erläutert das etwas
Wo genau hängst du denn?
Bei der Registrierung wird dein Passwort nicht gehasht?
Steht das denn in Klartext in der Datenbank? (Oh nooooo )
Generell ist aber auch von MD5 abzuraten: https://breadfish.de/index.php…ren-genauer-erkl%C3%A4rt/
@deklaN: Das beantwortet nur eine meiner zwei Fragen...
Die Andere war, wie du das zuweist bzw welchen Wert die Variable hat.
Kannst es dir ja mal printen lassen (da wo du das TextDraw erstellst und wo du es nutzt jeweils printen lassen und vergleichen).
printf("%d", _:MSGTextdrawPlayer[playerid]);
Wie deklarierst du die Variable (also das mit new) und wie setzt du den Wert der Variable?
Hallöchen,
dieses Thema wurde hier schon oft erörtert
Um es kurz zu machen, der Boden verschwindet kurzzeitig wenn da keiner ist und dann fallen die Fahrzeuge durch den Boden und dann passiert eben genau das
Lösungsvorschläge (für den berühmten Grove Street Bug):
Hab mir mal eben das JSDoc geholt und getestet.
So klappt es:
/**
* Prints an info message to the console, that the specified module has been loaded
* @param {string} module Loaded module
* @author LeonMrBonnie
* @function
* @name moduleLoaded
*/
global.moduleLoaded = (module) =>
{
console.log(`[DEBUG] `.bold.blue + `Module ` + `${module}`.grey + " loaded");
}
Alles anzeigen
Kann ich das irgendwie anders machen?
Habe mit JSDoc noch nie gearbeitet, aber sieht nice aus.
Mir würden 2 Dinge einfallen, die du ausprobieren könntest.
Kurz zur Erklärung, warum er sagt, dass das eine anonyme Funktion ist...überraschung, weil es eine ist
Du gibst der Funktion nämlich keinen Namen und weist diese direkt zu -> ergo anonym.
Versuch es entweder mal über die Kommentare:
/**
* Prints an info message to the console, that the specified module has been loaded
* @author LeonMrBonnie
* @param {string} module Loaded module
* @name global.moduleLoaded
*/
global.moduleLoaded = (module) =>
{
console.log(`[DEBUG] `.bold.blue + `Module ` + `${module}`.grey + " loaded");
}
Falls das nicht geht könnte man der Funktion auch einen Namen geben und sie erst dann zuweisen.
Das aber etwas umständlicher, also versuch es erstmal so
kriege immer den VID Wert returnt.
Schreib das alles mal so:
ist das doch nicht sinnvoll, oder?
Doch schon...
Halt sobald niemand in der Virtuellen Welt ist, Actor zerstören, ansonsten syncen.
Syncen musst du die ja so oder so, sonst spacken die dir komplett ab xD
-1 heißt ja in allen virtuellen Welten oder nicht?
Nein.
Ein Actor kann nur in einer virtuellen Welt sichtbar sein.
Musst ihn für jede virtuelle Welt separat erstellen