Dann hast du zwei Möglichkeiten.
Möglichkeit 1: Du upgradest dein Plugin.
Möglichkeit 2: Du nutzt
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format
Oder
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_field_row
Beispiele sind jeweils dabei.
Dann hast du zwei Möglichkeiten.
Möglichkeit 1: Du upgradest dein Plugin.
Möglichkeit 2: Du nutzt
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format
Oder
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_field_row
Beispiele sind jeweils dabei.
Das geht so nicht. Wenn du das nach diesem Prinzip machen willst, dann nutze die Cache Funktionen:
http://wiki.sa-mp.com/wiki/MyS…che_get_field_content_int
(Beispiel ist dabei.)
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_int
Gibt dir nur den Wert des ganzen Results als Integer aus, das macht für dich hier wenig Sinn. Arbeite mit den Cache Funktionen, dann bist du auf der besseren Seite.
format(string,sizeof string,"*{FFFFFF}Journalist %s:{ED8D2D} %s", GetName(playerid), Nachricht);
Dann hast du string nicht global deklariert, das kann ich leider nicht wissen.
ocmd:news(playerid, params[])
{
if(!isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,-1,"Du bist kein News Reporter!");
new Nachricht[128], string[145];
if(sscanf(params,"s", Nachricht))return SendClientMessage(playerid, COLOR_GREEN, "INFO: /news [Nachricht]");
format(string,sizeof string,"*Journalist %s: %s", GetName(playerid), Nachricht);
SendClientMessageToAll(COLOR_ORANGE, string);
return 1;
}
ocmd:news(playerid, params[])
{
if(!isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,-1,"Du bist kein News Reporter!");
new Nachricht[128];
if(sscanf(params,"s", Nachricht))return SendClientMessage(playerid, COLOR_GREEN, "INFO: /news [Nachricht]");
format(string,sizeof string,"*Journalist %s: %s", GetName(playerid), Nachricht);
SendClientMessageToAll(COLOR_ORANGE, string);
return 1;
}
Falls du das Plugin von sscanf verwendest, setze noch ein [128] hinter das s in sscanf.
Dann musst du das Wanted Level in die Spielerdatei oder die Datenbank speichern, und beim Login musst du das Textdraw dem Spieler anzeigen und den string zum geladenen Wanted Level setzen.
Was meinst du mit "es speichert nicht im Textdraw"?
Siehst du das Textdraw? Kommt der print im Log?
if(IsACop(playerid))
{
if(OnDuty[playerid] != 1)
{
SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht im Dienst!");
return 1;
}
ShowPlayerDialog(playerid,DIALOG_COP,DIALOG_STYLE_LIST,"Verbrechen klicken","Nitro\nStVO\nBesitz von Mats/Drogen\nVersuchtes Kidnapping\nFlucht\nversuchte Flucht\nBeihilfe zur Flucht\nVerweigerung\nBehinderung der Justiz\nWaffenhandel\nEinsperren ins GangJail\nBeamten/Zivilistenangriff\nEntführung\nBeamten-/Zivilistenbeschuss\nAnschlag\nMord\nBankraub\nPräsidentenbeschuss\nPräsidentenmord\nAusbruch aus Alcatraz\nAusbruchshilfe aus Alcatraz","Auswählen","Beenden");
pVerbrecher[playerid] = clickedplayerid;
new str[128];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
//for(new i = 0; i < GetMaxPlayers(); i++)
format(str,sizeof(str),"Info\n_________________\nWantedlevel: %d",GetPlayerWantedLevel(playerid));
WantedLabel[playerid] = CreatePlayer3DTextLabel(playerid,str,COLOR_RED,0.0,0.0,0.0,40.0);
}
else if (PlayerInfo[playerid][pLeader] == 7 || PlayerInfo[playerid][pMember] == 7)
{
ShowPlayerDialog(playerid,DIALOG_COP,DIALOG_STYLE_LIST,"Verbrechen klicken","Nitro\nStVO\nBesitz von Mats/Drogen\nVersuchtes Kidnapping\nFlucht\nversuchte Flucht\nBeihilfe zur Flucht\nVerweigerung\nBehinderung der Justiz\nWaffenhandel\nEinsperren ins GangJail\nBeamten/Zivilistenangriff\nEntführung\nBeamten-/Zivilistenbeschuss\nAnschlag\nMord\nBankraub\nPräsidentenbeschuss\nPräsidentenmord\nAusbruch aus Alcatraz\nAusbruchshilfe aus Alcatraz","Auswählen","Beenden");
pVerbrecher[playerid] = clickedplayerid;
new str[128];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
//for(new i = 0; i < GetMaxPlayers(); i++)
format(str,sizeof(str),"Info\n_________________\nWantedlevel: %d",GetPlayerWantedLevel(playerid));
WantedLabel[playerid] = CreatePlayer3DTextLabel(playerid,str,COLOR_RED,0.0,0.0,0.0,40.0);
//new str[64];
format(str, sizeof(str), "Wanteds: %d", GetPlayerWantedLevel(playerid));
printf("str: %s", str);
PlayerTextDrawSetString(playerid, StatusAnrufe[playerid], str);
}
return 1;
}
Bist du in Fraktion 7? Kommt der print?
Was passiert wenn du es eingibst?
else if(sInfo[playerid][fraktion] == 7)
{
static bool:isOpen;
if(!IsPlayerInRangeOfPoint(playerid,20,2347.23779, 2723.17090, 11.41084))return SendClientMessage(playerid,COLOR_YELLOW, "Du bist nicht an dem Tor deiner Base");
if(!isOpen)
{
isOpen = true;
MoveObject(HitmanTor, 2347.23779, 2723.17090, -5, 1.5, 0.00000, 0.00000, -1.80000);
SendClientMessage(playerid,COLOR_GREEN, "Tor geöffnet");
}
else
{
isOpen = false;
MoveObject(HitmanTor, 2347.23779, 2723.17090, 11.41084, 1.5, 0.00000, 0.00000, -1.80000);
SendClientMessage(playerid,COLOR_GREEN, "Tor geschlossen");
}
return 1;
}
Ich habe nicht gesehen, dass das CreateObject stand. So passt es.
EDIT:
Jetzt hat es dann auch jeder kommentiert. ![]()
Du brauchst eine Datenbank mit einer Tabelle, in der die Ranks stehen.
Dann brauchst du einen Befehl, des in etwa so aussieht: /arang [rangID] [neuer Name]
Die Ränge speicherst du in einer Variable die so aussieht:
new aRangName[10][32]; //Angenommen du hast 10 Ränge, die maximal 32 Buchstaben lang sind.
Wie jedes mal, solltest du natürlich erst mal einen Code haben, damit wir dir weiterhelfen können, da wir dir nicht das ganze System schreiben können/werden. ![]()
Wenn du das Objekt so erstellst, und nach unten haben willst:
CreateObject(980, 2347.23779, 2723.17090, 11.41084, 0.00000, 0.00000, -1.80000);
muss du die "11.41084" kleiner machen, also zum Beispiel "-5.0" (je nach dem wo es hin soll).
Bei MoveObject musst du dann (da du ja die Position änderst) die Geschwindigkeit wieder hochsetzen, zum Beispiel zu 1.5.
Von den veralteten Menüs ist abzuraten, weil:
Quelle: http://wiki.sa-mp.com/wiki/CreateMenu_DE
Zudem sind sie komplizierter zu handhaben.
Außerdem sind sie, wie schon gesagt, veraltet.
Wenn du nicht mehr brauchst als 12 Items und nicht mehr als 128 Menüs hast ist es kein Problem, allerdings solltest du wissen was du machst.
Das kannst du so machen:
else if(sInfo[playerid][fraktion] == 7)
{
static bool:isOpen;
if(!IsPlayerInRangeOfPoint(playerid,20,2347.23779, 2723.17090, 11.41084))return SendClientMessage(playerid,COLOR_YELLOW, "Du bist nicht an dem Tor deiner Base");
if(!isOpen)
{
isOpen = true;
MoveObject(HitmanTor, 2347.23779, 2723.17090, 1.40084, 0.010, 0.00000, 0.00000, -1.80000);
SendClientMessage(playerid,COLOR_GREEN, "Tor geöffnet");
}
else
{
isOpen = false;
//MoveObject...
SendClientMessage(playerid,COLOR_GREEN, "Tor geschlossen");
}
return 1;
}
Setze oben, unter deine Includes:
new gateOfFrak7;
Das Objekt:
gateOfFrak7 = CreateObject(980, 2347.23779, 2723.17090, 11.41084, 0.00000, 0.00000, -1.80000); //Hitman Tor
Und Die Bewegung:
MoveObject(gateOfFrak7, 2347.23779, 2723.17090, 11.40084, 0.005, 0.00000, 0.00000, -11.80000);
Du musst, wenn du nur die Rotation änderst, ein bisschen was an der Position verändern (ich habe dir es um 0.01 tiefer gesetzt), damit es geht. Außerdem musst du es dann gaaaanz langsam (0.005 hab ich mal gemacht) bewegen lassen. Das kannst du natürlich anpassen, aber 5 war die viel zu viel, da es sich ja nur um 0.01 bewegt.
Du gibst die Model ID an, nicht die Objekt ID.
Poste mal, wie du das Objekt erstellst, welches bewegt werden soll.
Dort wo du ihm das Wanted gibst:
new str[64];
format(str, sizeof(str), "Wanteds: %d", GetPlayerWantedLevel(playerid));
PlayerTextDrawSetString(playerid, StatusAnrufe[playerid], str);
Schau doch mal ins Include, man gibt lediglich das Datum als String an die Funktion, sie macht das alles schon selber.
Die Include hast du nach meinem Post reineditiert, die war noch nicht da als ich gepostet habe. ![]()
Logisch, wenn man die Include nutzt, die einem die Arbeit nimmt, ist es natürlich geschickter.
Wieso bitte den Umstand machen, wenn man es direkt in einen Timestamp umwandelt?
So musste halte den Timestamp wieder zu einem Datum konvertieren, das kommt auf's gleiche raus.
Beim Timestamp musste halt auch immer das Schaltjahr beachten, da geht es mit dem split leichter, das Alter herauszufinden.
Außerdem gibt ja keiner einen Timestamp ein, sprich du musst das Geburtsdatum erst splitten und konvertieren, das ist im Endeffekt mehr Aufwand. ![]()
Jetzt hast du ja meine Fragen nicht beantwortet.
Und wo ist der Code vom Noobspawn? ![]()
Wenn ich deine Koordinaten richtig interpretiere, muss es so sein:
SetPlayerWorldBounds(playerid, 1055.975341, 919.975341, -1417.751831, -1489.751831);
http://wiki.sa-mp.com/wiki/SetPlayerWorldBounds
xmax, xmin, ymax, ymin