Hallo, ich möchte für mein Projekt gerne Passanten haben die durch LS Laufen/Fahren, ist dies mit der neuen Actor Funktion möglich, und wenn ja wie?
Danke für eure hilfe.
Yannik B.
Hallo, ich möchte für mein Projekt gerne Passanten haben die durch LS Laufen/Fahren, ist dies mit der neuen Actor Funktion möglich, und wenn ja wie?
Danke für eure hilfe.
Yannik B.
Nein, das musst du mit den normalen NPC's / Bot's machen.
MfG,
.Fabian!
Ein Actor kann lediglich irgendwo stehen (bleiben) und Animationen ausführen.
https://wiki.sa-mp.com/wiki/CreateActor
Animationen ausführen.
Das schon, aber laufen können die nicht (mehr).
Funktioniert hat das noch während der RC Phase, was aber entfernt wurde.
Es wurde schließlich nicht synchronisiert.
Hier das offizielle Statement von Kalcor, warum dies nicht (mehr) möglich ist:
https://forum.sa-mp.com/showpo…?p=3444259&postcount=1083
Ok, ich verwende jetzt NPCs aber irgendwie klappt das bei mir nicht so recht...
npcmode
#define RECORDING "lifecoast_tut_run"
#define RECORDING_TYPE 2
#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#if RECORDING_TYPE == 1
public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
public OnNPCExitVehicle() StopRecordingPlayback();
#else
public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
und wie er im GM verwendet wird:
ConnectNPC("lifecoast_tut_run","lifecoast_tut_run"); //OnGameModeInit
//OnPlayerConnect
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "lifecoast_tut_run", true))
{
SpawnPlayer(playerid);
}
}
//OnPlayerSpawn
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "lifecoast_tut_run", true))
{
new npcname[MAX_PLAYER_NAME];
GetPlayerName(playerid, npcname, sizeof(npcname));
if(!strcmp(npcname, "lifecoast_tut_run", true))
{
SetPlayerSkin(playerid, 18); // <- The Skin here!
}
}
}
Console:
[21:02:50] [npc:join] lifecoast_tut_run has joined the server (0:127.0.0.1)
[21:03:01] [npc:part] lifecoast_tut_run has left the server (0:0)
PS: ich würde den NPC amliebsten nur im Tut Spawnen und das am besten in einer VR
//OnPlayerConnect
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "lifecoast_tut_run", true))
{
SpawnPlayer(playerid);
}
}
Das musst du löschen.
Und das so schreiben:
//OnPlayerSpawn
if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "lifecoast_tut_run", true))
{
SetPlayerSkin(playerid, 18); // <- The Skin here!
}
}
Kleine Frage nebenbei, wenn schon solch ein Thema offen ist.
Ist es möglich ein 3D Label über den Actor zu platzieren, für seinen Namen z.B?
Natürlich, eben an dessen Position. Da er sich ja nicht bewegt, kannst du es einfach direkt an der Position erstellen (Z vielleicht etwas höher).
Mit folgender Funktion nicht möglich? (https://wiki.sa-mp.com/wiki/Attach3DTextLabelToPlayer)
Nein, da ein Actor kein Player ist.
Erstell ein normales TextLabel und erhöhe Z solange, bis es über dem Kopf des Actors ist.
Habe mal so einen Actor erstellt, jedoch wird mir angezeigt, dass es nicht verwendet wird.
new ActorNeu;
ActorNeu = CreateActor(27,2035.5433,1341.6514,10.8203,90.4857);
Im englischen Forum wird darüber gesprochen, dass
if(IsPlayerNPC(playerid)) return 1;
in der ersten Zeile von OnPlayerConnect hilft. Probiere das mal aus.
Nein, es bleibt immer noch nicht da
Mein OnPlayerConnect sieht in etwa so aus:
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
/*if(IsPlayerNPC(playerid))
{
new botname[MAX_PLAYER_NAME];
GetPlayerName(playerid, botname, sizeof(botname));
if(!strcmp(botname, "lifecoast_tut_run", true))
{
SpawnPlayer(playerid);
}
}*/
StepSpawnPlayer[playerid] = 0;
roleplay[playerid] = CreatePlayerTextDraw(playerid, 317.188934, 349.999725, "G");
PlayerTextDrawLetterSize(playerid, roleplay[playerid], 0.586340, 3.052500);
PlayerTextDrawAlignment(playerid, roleplay[playerid], 2);
PlayerTextDrawColor(playerid, roleplay[playerid], -1);
PlayerTextDrawSetShadow(playerid, roleplay[playerid], -258);
PlayerTextDrawSetOutline(playerid, roleplay[playerid], 0);
PlayerTextDrawBackgroundColor(playerid, roleplay[playerid], -2139062017);
PlayerTextDrawFont(playerid, roleplay[playerid], 1);
PlayerTextDrawSetProportional(playerid, roleplay[playerid], 1);
new vzMessage[128];
format(vzMessage, sizeof(vzMessage), "Welcome to "SERVER_NAME", %s", GetPlayerNameEx(playerid));
SendClientMessage(playerid, -1, vzMessage);
SetTimerEx("OnPlayerConnected", 750, false, "i", playerid);
/* REMOVE BUILDINGS */
//RIESENRAD
RemoveBuildingForPlayer(playerid, 6463, 389.7734, -2028.4688, 19.8047, 0.5);
RemoveBuildingForPlayer(playerid, 3751, 389.8750, -2035.3828, 29.9531, 50);
RemoveBuildingForPlayer(playerid, 6298, 389.7734, -2028.4688, 19.8047, 0.5);
RemoveBuildingForPlayer(playerid, 6461, 389.7734, -2028.5000, 20.1094, 0.5);
RemoveBuildingForPlayer(playerid, 3752, 389.8750, -2028.5000, 32.2266, 50);
return 1;
}
Das musst du überall einbauen wo etwas an Spielern abgefragt wird.
Beim Laden des Spielers, beim Spawnen, etc.
Habe ich überall getan, er disconnectet trotzdem