"Dini" ist eine "Speicherungs" Art!
Wie viel zahlst du denn Dominik ?
mfg
"Dini" ist eine "Speicherungs" Art!
Wie viel zahlst du denn Dominik ?
mfg
Ist denn die Karte noch zu haben?
mfg
Wie sieht der aktuelle Code aus?
Hast du auch Daten in der Datenbank?
Du könntest auch einfach den Code von deinem ersten Post nehmen und die Änderungen machen, die ich dir gesagt habe, dann sollte es gehen.
Jap Jeffry, in der Tat es funkt!
Print:
[21:09:16] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 0 | content: Ballas
Screen:
IPrototypeI
Dein Code war auch Sinngemäß, aber leider nicht funktional!
mfg
[16:02:03] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 0 | content: Ballas
Schau dir doch die Koordinaten hier an. Zuerst kommen die großen, dann die kleinen. Es muss aber genau anders herum sein. Erst die kleinen, dann dir großen.
Versuche es doch einfach mal.
Habe ich gemacht, aber es kommt aktuell kein Print.
mfg
Habs mir mal angeschaut Jeffry!
Die Cords sollten passen (habe das mal ohne auslesen der db prob) sprich zone=GangZoneCreate(...
Und dazu kommt es dass ich dafür den Editor hier geschrieben habe!
ocmd:czone(playerid)
{
if(GetPlayerAdmin(playerid) < 7)return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht berechtigt für diesen Befehl!");
if(!GetPVarInt(playerid, "cturf"))
{
SendClientMessage(playerid, Orange, "Zone-Creator: {FFFFFF}Du bist in den Zone Modus gegangen!");
SendClientMessage(playerid, Gruen, "Info: {FFFFFF}Makiere auf der Karte 2 Punkte und gebe erneut /czone ein!");
SetPVarInt(playerid, "cturf", 1);
}
else if(GetPVarInt(playerid, "cturf")>=1)
{
if(GetPVarInt(playerid, "cturf") != 3)return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du hast keine 2 Punkte auf der Karte gewählt!");
static Float:tmp_pos[5];
for(new i;i<5;i++)
{
format(string, sizeof(string), "turf_%d", i);
tmp_pos[i] = GetPVarFloat(playerid, string);
SetPVarFloat(playerid, string, 0.0);
}
SendClientMessage(playerid, Orange, "Zone-Creator: {FFFFFF}Du hast erfolgreich eine Zone erstellt!");
format(string, sizeof(string), "Info: {FFFFFF}Die Daten wurden in /%s/%s.%s gespeichert!", ZONE_FOLDER, ZONE_FILENAME, ZONE_FILETYPE);
SendClientMessage(playerid, Gruen, string);
format(string, sizeof(string), "/%s/%s.%s", ZONE_FOLDER, ZONE_FILENAME, ZONE_FILETYPE);
new File:zFile = fopen(string, io_append);
SetPVarInt(playerid, "cturf", 0);
if(zFile)
{
static str[128] = "";
format(str, sizeof(str), "Zone: %f,%f,%f,%f\r\n", tmp_pos[3], tmp_pos[1], tmp_pos[0], tmp_pos[4]);
fwrite(zFile, str);
fclose(zFile);
}
}
return 1;
}
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
switch(GetPVarInt(playerid, "cturf"))
{
case 1:
{
SendClientMessage(playerid, Orange, "Zone - Creator: {FFFFFF}Du hast den 1. Punkt makiert, makiere nun den 2. Punkt!");
format(string, sizeof(string), "Info: {FFFFFF}Position des 1. Punktes (%f,%f,%f)", Float:fX, Float:fY, Float:fZ);
SendClientMessage(playerid, Gruen, string);
SetPVarInt(playerid, "cturf", 2);
SetPVarFloat(playerid, "turf_0", fX),SetPVarFloat(playerid, "turf_1", fY),SetPVarFloat(playerid, "turf_2", fZ);
}
case 2:
{
SendClientMessage(playerid, Orange, "Zone - Creator: {FFFFFF}Du hast den 2. Punkt makiert, gebe nun erneut /cturf ein!");
format(string, sizeof(string), "Info: {FFFFFF}Position des 2. Punktes (%f,%f,%f)", Float:fX, Float:fY, Float:fZ);
SendClientMessage(playerid, Gruen, string);
SetPVarInt(playerid, "cturf", 3);
SetPVarFloat(playerid, "turf_3", fX),SetPVarFloat(playerid, "turf_4", fY),SetPVarFloat(playerid, "turf_5", fZ);
}
}
return 1;
}
mfg
Gut, wenn es richtig lädt passt es ja mal soweit.
Dein Print zeigt jetzt, dass die Variablen vertauscht sind.
Mach es so:
gZone[j][zID] = GangZoneCreate(gZone[j][zPos][2], gZone[j][zPos][3], gZone[j][zPos][0], gZone[j][zPos][1]);
Jeffry die Cords passen soweit (Da muss nichts verändert werden)
Das klappt genau so wenig!
Ich weis dass man das so machen kann, dies hatte ich vorher so! - Ich kenne mich mit der Version recht "gut" aus.
mfg
Dein Print ist falsch, da fehlt die 4. Koordinate.
printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3], j, gZone[j][zName]);
So.
Dies habe ich bereits ausgebessert.
Jetzt printet er es richtig, halt 2x.
1x wurde die Zone sogar erstellt, jetzt iwi nicht mehr!
Quellcode:
public LoadGFZonesFromDB()
{
cache_get_data(num[0], num[1], dbhandle);
if(num[0]!=-1&&num[0]!=0)
{
static j;
for(;j<sizeof(gZone);j++)
{
if(gZone[j][zCreated])continue;
if(!strcmp(gZone[j][zName], "Ballas", true))continue;
gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);
gZone[j][zID] = GangZoneCreate(gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3]);
format(gZone[j][zName], 45 + 5, "Ballas");
gZone[j][zCreated] = true;
printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3], j, gZone[j][zName]);
if(j == num[0])break;
}
}
return 1;
}
Print:
[16:02:03] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 0 | content: Ballas
[16:02:03] Created: 1 | ID: 1 | pos: 1520.010009,-1592.219970,1422.010009,-1718.219970 | j: 1 | content: Ballas
mfg
Warum speicherst du nur 3 Variablen für die Positionen? Im Grunde brauchst du doch XY für 1 und XY für 2.. wären 4 für die Zone, an Stelle des "Namens" mach dir ne ID und dann sollte das funktionieren..
Ich hab das bei mir als stock:
Ich weis nicht was du hast!
gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);
mfg
Guten Tag,
Mein Name lautet CIBERKILLER.
Und zwar habe ich ein Problem mit meinem Gangzonen "System".
Quellcode:
(OnGameModeInit)
//Gangzonen
for(new j, i = sizeof(gZone); j<i; j++) {gZone[j][zCreated] = false; if(j == sizeof(gZone))break;}
mysql_pquery(dbhandle, "SELECT * FROM `Gangzones` WHERE `Frakname` = 'Ballas'", "LoadGFZonesFromDB", "");
public LoadGFZonesFromDB()
{
cache_get_data(num[0], num[1], dbhandle);
if(num[0]!=-1&&num[0]!=0)
{
for(new j;j<sizeof(gZone);j++)
{
if(gZone[j][zCreated])continue;
gZone[j][zPos][0] = cache_get_field_content_float(0, "zX", dbhandle);
gZone[j][zPos][1] = cache_get_field_content_float(0, "zY", dbhandle);
gZone[j][zPos][2] = cache_get_field_content_float(0, "zZ", dbhandle);
gZone[j][zPos][3] = cache_get_field_content_float(0, "zA", dbhandle);
gZone[j][zID] = GangZoneCreate(gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], gZone[j][zPos][3]);
format(gZone[j][zName], 45 + 5, "Ballas");
gZone[j][zCreated] = true;
printf("Created: %d | ID: %d | pos: %f,%f,%f,%f | j: %d | content: %s", gZone[j][zCreated], gZone[j][zID], gZone[j][zPos][0], gZone[j][zPos][1], gZone[j][zPos][2], j, gZone[j][zName]);
if(j == num[0])break;
}
}
return 1;
}
Print:
[15:13:55] Created: 1 | ID: 0 | pos: 1520.010009,-1592.219970,1422.010009,0.000000 | j: 66 | content:
[15:13:55] Created: 1 | ID: 1 | pos: 1520.010009,-1592.219970,1422.010009,0.000000 | j: 66 | content:
mfg
Mach das ganze doch in onplayerspawn rein!
mfg
Hast du die Recording Dateien hochgeladen?
Zeig mal OnPlayerConnect & OnPlayerDisconnect
mfg
SetPlayerPosEx(playerid, GetPlayerTeam(playerid), SpielerInfo[playerid][sKleidung], 1309.9963, -1367.8828, 13.5416, 181.6391, 0, 0, 0, 0, 0, 0);
So mache ich das ganze!
mfg
Da haben wir unseren Fehler
255 ist doch NO_TEAM oder ?
und NO_TEAM ist sobald ich gelesen habe standart oder ?
mfg
Guten Abend,
Mein Name lautet CIBERKILLER.
Und zwar bräuchte ich mal hilfe hierbei.
test wird geprintet, aber die sachen unten drunter werden nicht aufgerufen!
ocmd:test(playerid)
{
print("test");
if(GetPlayerTeam(playerid) == 1)SetPlayerTeam(playerid, 255),SendClientMessage(playerid, Weis, "deaktiviert");
else if(GetPlayerTeam(playerid) == 255)SetPlayerTeam(playerid, 1),SendClientMessage(playerid, Weis, "aktiviert");
return 1;
}
mfg
Das ganze klappt aktuell nicht so wie es "klappen" soll.
Quellcode:
ocmd:changemusic(playerid, params[])
{
if(!GetPVarInt(playerid, "Eingeloggt"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht eingeloggt!");
if(!GetPVarInt(playerid, "gblaster"))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du hast keinen Ghettoblaster aufgestellt!");
GetObjectPos(GetPVarInt(playerid, "gobject"), pPos[0], pPos[1], pPos[2]);
if(GetPlayerDistanceFromPoint(playerid, pPos[0], pPos[1], pPos[2]) >= 3.6)return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}Du bist nicht in der nähe deines Ghettoblasters");
if(sscanf(params, "s", usage))return SendClientMessage(playerid, Orange, "Fehler: {FFFFFF}/changemusic [Link]");
for(new i;i<sizeof(Stream);i++)
{
if(!strlen(Stream[i][url]))continue;
printf("url: %s | pos: %f,%f,%f | id: %d | usage: %s",Stream[i][url],Stream[i][sPos][0],Stream[i][sPos][1],Stream[i][sPos][2], i, usage);
format(Stream[i][url], 128, usage);
Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
if(i==sizeof(Stream))break;
}
/*for(new i;i<GetMaxPlayers();i++)
{
if(!IsPlayerConnected(i))continue;
if(IsPlayerNPC(i))continue;
if(!GetPVarInt(playerid, "Eingeloggt"))continue;
if(GetPlayerDistanceFromPoint(i, pPos[0], pPos[1], pPos[2]) >= 45.1)continue;
SetPVarString(i, "stream_played", usage);
}*/
return 1;
}
public OnPlayerUpdate(playerid)
{
static str[128];
GetPVarString(playerid, "stream_played", str, sizeof(str));
for(new i;i<sizeof(Stream);i++)
{
if(strcmp(Stream[i][url], "leer", true)&& strlen(str) != 0 && strcmp(str, Stream[i][url], true) && Stream[i][sPos][0] == 0.0)
{
if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) <= 45.0)
{
PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
return SetPVarString(playerid, "stream_played", Stream[i][url]);
}
}
}
return 1;
}
mfg
Alles anzeigendcmd_o(playerid, params[]) // Versuch es mal so []
{
if(!strlen(params)) return SendClientMessage(playerid, COLOR_HGRAD, "Benutze: /o [Text]"); // Zeile 1971
new str[144];
switch(AdminLevelVariableHierEinsetzen) // Zeile 1973
{
case 0: format(str, sizeof(str), "{FFFFFF}(( {00FF00}Mitbürger %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 1: format(str, sizeof(str), "{FFFFFF}(( {FFFF00}Supporter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 2: format(str, sizeof(str), "{FFFFFF}(( {04B404}Moderator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 1336: format(str, sizeof(str), "{FFFFFF}(( {848484}Fraktionsverwalter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 1337: format(str, sizeof(str), "{FFFFFF}(( {0000FF}Administrator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 1338: format(str, sizeof(str), "{FFFFFF}(( {FA5858}Head Administrator %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 1339: format(str, sizeof(str), "{FFFFFF}(( {990000}Stellv. Projektleiter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
case 2000: format(str, sizeof(str), "{FFFFFF}(( {FF0000}Projektleiter %s{FFFFFF}: %s ))", nSpieler(playerid), params);
}
SendClientMessageToAll(-1, str);
return 1;
}
Setzt es so ein
Edit: Jeffry: Mach ich doch gerne, jedem passieren mal Fehler
Du brauchst aber am anfang kein {FFFFFF} da das sowie weis beginnst.
mfg
Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.
Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.
Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.
Ich habe es mal so geschrieben!
SetPVarString(playerid, "stream_played", usage);
for(new i;i<sizeof(Stream);i++){
if(!strcmp(Stream[i][url], "leer", true))continue;
format(Stream[i][url], 128, "%s", usage),
Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
}
public OnPlayerUpdate(playerid)
{
GetPVarString(playerid, "stream_played", string, sizeof(string));
for(new i;i<sizeof(Stream);i++)
{
if(!strcmp(Stream[i][url], "leer", true))continue;
if(!strcmp(string, Stream[i][url], true))continue;
if(Stream[i][sPos][0] == 0.0)continue;
if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) >= 45.1)continue;
PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
}
return 1;
}
Habs noch nicht getestet, sollte aber soweit passen!
mfg
Guten Tag,
Mein Name lautet CIBERKILLER.
Und zwar wollte ich euch mal fragen ob es eine möglichkeit gibt Streamadressen herauszufinden.
Natürlich verbunden mit PlayAudioStreamForPlayer.
Also eine genaue abfrage ob der Spieler einen bestimmten stream hat!
mfg
Alles anzeigenDas Grundprinzip ist einfach:
Zu Deutsch:
Der Alkoholpegel verringert sich bei 50 FPS um 50 pro Sekunde.
Anhand dieses Faktums lässt sich mittels dieser Funktion die FPS Anzahl berechnen.
Vielen Dank für diese Erklärung!
Klappt übrigens nun wunderbar !
mfg
@NicoWiss
Liest du auch mal ?
Und zwar wollte ich mal fragen, ob mir jemand erklären kann wie ich die Frames pro Second eines Spielers ermitteln kann!
Ich habe mir diesen Thread schon angeschauen, wollte nur die genaue erklärung haben. (Wie dies überhaupt funktionieren kann)
mfg