Gibt es eine Funktion ungefähr so: SetPlayerCameraLookAt(playerid, x, y, z, rotx, roty, rotz); ?
Beiträge von malE
-
-
Kann mir jemand erklären wie ich diese Funktion benutzen kann, siehe Bild.
Denn ich möchte, dass ein Spieler eine Kamera ( Objekt ) bewegen und rotieren kann.
Damit er letztendlich sozusagen durch die Kamera schauen kann mit SetPlayerCameraPos().Ich hoffe ihr habt verstanden, was ich meine.
-
Du lädst dir auf sa-mp.com ein Server runter und kopierst aus der .zip Datei alle Dinge bis auf die server.cfg in dein Verzeichnis
-
[wiki]GetPlayerKeys[/wiki]
-
Wie funktionierte nochmal, dass man zwischen zwei MySQL-Anbindungen switchen kann.
#if SwitchMySQL == 1
/*#define MYSQL_HOST ""
#define MYSQL_USER ""
#define MYSQL_PASS ""
#define MYSQL_DBSE ""
#endif
#if SwitchMySQL == 2
#define MYSQL_HOST ""
#define MYSQL_USER ""
#define MYSQL_PASS ""
#define MYSQL_DBSE ""
#endif -
Wenn du dir ein Beispiel an meinem Beispiel nimmst, würdest du vielleicht selbst weiter kommen.
Habs nicht getestet.z.B so!
OnGameModeInit
SetTimer("UpdateWeizen", 1000, true);
forward UpdateWeizen();
public UpdateWeizen()
{
for(new i=0; i < sizeof(Weizen); i++)
{
if(Weizen[i][w_Objekt] == -1)continue;
Weizen[i][w_Zustand] +=5;
if(Weizen[i][w_Zustand] 10){
DestroyObject(Weizen[i][w_Objekt]), CreateObject(ID, Weizen[i][w_X], Weizen[i][w_Y], Weizen[i][w_Z]+0.15, 0.0, 0.0, 0.0); // So "wächst" die Pflanze
}
}
}
enum enum_Weizen
{
w_ID,
w_Besitzer[MAX_PLAYER_NAME],
w_Objekt, // Die Pflanze
Float:w_X,
Float:w_Y,
Float:w_Z,
w_Zustand // Dafür das die Pflanzen wachsen
}
new Weizen[100][enum_Weizen]; -
Man läd auf einen Root etc, nie seine .pwn Datei hoch, nur seine .amx.
Außerdem sollte man diesen Schnipsel im Script immer drin haben, der lässt nämlich einen deCompiler crashen.
Unter OnGameModeInit
AntiDeAMX();
Ganz unten im Script
AntiDeAMX()
{
new a[][] =
{
"Unarmed (Fist)",
"Brass K"
};
#pragma unused a
} -
Besitze seit 2 Tagen dort auch einen SA:MP bis zu 500 Slots & 50 NPC Slots, bin bis jetzt auch zufrieden.
Benutze den Server lediglich für private Zwecke. -
ToxicAttidude
-
Schau mal ob die Ränge dir bei SendClientMessage angezeigt werden.
Wenn, weißt du wenigsten, dass es an dem Dialog liegt. -
Es sieht eigentlich alles korrekt aus.
ocmd:showrangnames(playerid)
{
new string[145];
if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid, -1, "Du bist in keiner Fraktion.");
if(sInfo[playerid][rang] != 5)return SendClientMessage(playerid, -1, noaccess);
new fID = sInfo[playerid][fraktion];
format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s", fInfo[fID][frang1], fInfo[fID][frang2], fInfo[fID][frang3], fInfo[fID][frang4], fInfo[fID][frang5], fInfo[fID][frang6]);
ShowPlayerDialog(playerid, DIALOG_RANGNAMES, DIALOG_STYLE_LIST, "Fraktionsränge", string, "Ändern", "Schließen");
return 1;
}
Versuchs mal so. -
public LoadFraktionRangs()
{
print("LoadFraktionRangs - wurde aufgerufen");
new num_fields,num_rows;
cache_get_data(num_rows,num_fields);
if(!num_rows)return print("LoadFraktionRangs - num_rows = 0");
for(new i = 0; i < num_rows; i++)
{
new result[92];
cache_get_field_content(0, "rangname1", result);
format(fInfo[i][frang1], 92, result);
cache_get_field_content(0, "rangname2", result);
format(fInfo[i][frang2], 92, result);
cache_get_field_content(0, "rangname3", result);
format(fInfo[i][frang3], 92, result);
cache_get_field_content(0, "rangname4", result);
format(fInfo[i][frang4], 92, result);
cache_get_field_content(0, "rangname5", result);
format(fInfo[i][frang5], 92, result);
cache_get_field_content(0, "rangname6", result);
format(fInfo[i][frang6], 92, result);
printf("Step 1: LoadFraktionRangs - rangname1: %s",fInfo[i][frang1]);
printf("Step 2: LoadFraktionRangs - rangname2: %s",fInfo[i][frang2]);
printf("Step 3: LoadFraktionRangs - rangname3: %s",fInfo[i][frang3]);
printf("Step 4: LoadFraktionRangs - rangname4: %s",fInfo[i][frang4]);
printf("Step 5: LoadFraktionRangs - rangname5: %s",fInfo[i][frang5]);
printf("Step 6: LoadFraktionRangs - rangname6: %s",fInfo[i][frang6]);
}
return print("LoadFraktionRangs - wurde geladen");
}
Versuchs mal so. -
Lädst du die Rangnamen nicht beim Laden der Fraktion in eine Variable?
Dann könntest du nämlich einfach die Variable benutzen zum auslesen. -
@xCurry
Ich weiß zwar nicht genau was du meinst, aber ich habe mal dir ein Code geschrieben.
So habe ich dich verstanden ( siehe Code ).
Am besten du testest es inGame einmal und sagst mir dann bescheid, wenn musst du es vielleicht noch ein wenig anpassen.
Das Objekt, welches erstellt wird ist eine kleine grüne Pflanze.Es ist nur ein Beispiel Code, d.h es ist auf nichts angepasst.
-
Was soll man darunter verstehen, ist es zu schwer sich richtig auszudrücken?
-
Wenn du ein externes Programm dafür schreiben willst, ist das schon etwas sehr viel aufwändiger
Genau das möchte ich.
Wenn ich per Skript machen wollte, hätte ich es schon getan. -
Es ist ein Abschnitt eines Videos, wo ein Programmier sein Hack / Cheat vorstellt.
Ich möchte aber keinesfalls mir selbst ein Cheat erstellen, ich will lediglich diese Funktion für andere zwecke benutzen.Sein Video
-
SA:MP
Womit kann ich mir sowas anzeigen lassen? -
Du erstellst für jede Arena eine eigene Variable, die du hoch oder runterzählen lasst sobald ein Spieler diese Arena betritt oder verlässt.
Die jeweiligen Variable kannst du dann im auslesen. -
Setze den Thread, anschließend bitte auf Erledigt.
Füge das bitte noch ein, hatte es vergessen.
public OnPlayerDisconnect(playerid)
{
if(PlayerInArena[playerid] == true){
PlayerInArena[playerid] = false;
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, MAX_PLAYER_NAME);
new str[145];
format(str, sizeof(str), "Spieler %s hat die Deagle Arena verlassen.", name), SendClientMessageToAll(-1, str);
}
return 1;
}