Das Funktioniert nicht.
Dann so:
format(string, sizeof(string), "%.02f", floatdiv(Tanki[playerid][t_tankp], 1000));
Das Funktioniert nicht.
Dann so:
format(string, sizeof(string), "%.02f", floatdiv(Tanki[playerid][t_tankp], 1000));
Hey gibt es eine Möglichkeit Fahrzeuge tiefer zu legen? Also sozusagen auf den Boden zu drücken habe etwas vor.
http://prntscr.com/l9heir zu http://prntscr.com/l9heof
Habe schon überall geguckt habe nichts gefunden.
So in der Art das manche Fahrzeug wenn sie geschlossen und unbesetzt sind so tief liegen und wenn man es öffnet und einsteigt fährt der Wagen hoch.
In der Art wie der neue Audi A8. Ich bezweifle aber das man so etwas machen kann.
sind so tief liegen und wenn man es öffnet und einsteigt fährt der Wagen hoch.
Also es ist möglich, dass das Auto so tief liegt, das kannst du durch die Gravity erreichen.
Allerdings ist das nicht trivial und hat einiges an Folgen mit sich xD
Musst mal nach SetPlayerGravity suchen, vielleicht findest du ja was, ansonsten teste es mit der globalen xD
Wenn du diese erhöhst, dann zieht sich das auf jeden Fall so runter und wenn die sie normal machst müsste das Fahrzeug wieder hoch gehen.
Aber glaube das ging nur, wenn auch jemand im Fahrzeug saß.
Ansonsten mal schauen wie das ist, wenn du die Reifen kaputt machst, sieht man dann einen Unterschied?
Wenn beide meiner Ideen zu nichts führen, dann fällt mir keine weitere Möglichkeit dafür ein, leider.
Schade, es muss wirklich einer im Fahrzeug sein, sonst wäre das zu geil würde es SetVehicleGravity geben.
Da jemand im Fahrzeug sitzen muss wird das nicht gehen, manchmal hat man so gute Ideen und man kann sie nicht umsetzten.
Trotzdem ein sehr großes Dankeschön das du mir alles erklärt hast.
Moin Leuts,
ich hab mal eine Frage...
stock GetNameFromDB(dbid){
new query[512], rows, dbname[MAX_PLAYER_NAME];
mysql_format(handle, query, sizeof(query), "SELECT * FROM user WHERE id = '%i'", dbid);
mysql_pquery(handle, query);
printf("%s", query);
cache_get_row_count(rows);
if(rows == 1){
cache_get_value_name(0, "name", dbname, 24);
}
return dbname[MAX_PLAYER_NAME], 1;
}
Alles anzeigen
Funktioniert nicht wirklich ... Wenn ich Manuell unter OnGameModeInit:
kommt der richtige Name bei raus, wenn ich allerdings...
nehme, dann funktioniert das mit dem Namen nicht. Letzendlich steht hinter dem bInfo[i][biz_owner] auch eine 1...
MfG
XonarZ
Funktioniert nicht wirklich .
Nutze mysql_query anstatt mysql_pquery. Empfohlen ist das aber nicht, auf Grund der Performance.
Außerdem
return dbname[MAX_PLAYER_NAME], 1;
Zu
return dbname;
Nutze mysql_query anstatt mysql_pquery. Empfohlen ist das aber nicht, auf Grund der Performance
Wenn ich das mit mysql_query mache, dann findet er die Biz namen nicht mehr^^
Mysql Log:
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2105)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2106)
[10:20:48] [ERROR] cache_get_value_name: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2107)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2108)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2109)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2110)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2111)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2112)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2113)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2114)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2115)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2116)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2117)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2118)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2119)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2120)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2121)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2122)
[10:20:48] [ERROR] cache_get_value_name_int: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2123)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2124)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2125)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2126)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2127)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2128)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2129)
[10:20:48] [ERROR] cache_get_value_name_float: invalid row index '1' (number of rows: '0') (...selfmade.pwn:2130)
Alles anzeigen
Das geht bis invalid row index '21' (sind ja 22 Einträge)
for(new i = 0; i < rows; i++){
cache_get_value_name_int(i, "id", bInfo[i][biz_id]);
cache_get_value_name_int(i, "biz_typ", bInfo[i][biz_typ]);
cache_get_value_name(i, "biz_name", bInfo[i][biz_name], 256);
cache_get_value_name_int(i, "biz_owner", bInfo[i][biz_owner]);
cache_get_value_name_int(i, "biz_sowner", bInfo[i][biz_sowner]);
cache_get_value_name_int(i, "biz_level", bInfo[i][biz_level]);
cache_get_value_name_int(i, "int_id", bInfo[i][int_id]);
cache_get_value_name_float(i, "bizkosten", bInfo[i][biz_kosten]);
cache_get_value_name_float(i, "bizkasse", bInfo[i][biz_kasse]);
cache_get_value_name_float(i, "biz_x", bInfo[i][biz_x]);
cache_get_value_name_float(i, "biz_y", bInfo[i][biz_y]);
cache_get_value_name_float(i, "biz_z", bInfo[i][biz_z]);
cache_get_value_name_float(i, "int_x", bInfo[i][int_x]);
cache_get_value_name_float(i, "int_y", bInfo[i][int_y]);
cache_get_value_name_float(i, "int_z", bInfo[i][int_z]);
cache_get_value_name_float(i, "i_x", bInfo[i][i_x]);
cache_get_value_name_float(i, "i_y", bInfo[i][i_y]);
cache_get_value_name_float(i, "i_z", bInfo[i][i_z]);
cache_get_value_name_int(i, "actor_skin", bInfo[i][actor_skin]);
cache_get_value_name_float(i, "actor_x", bInfo[i][actor_x]);
cache_get_value_name_float(i, "actor_y", bInfo[i][actor_y]);
cache_get_value_name_float(i, "actor_z", bInfo[i][actor_z]);
cache_get_value_name_float(i, "actor_r", bInfo[i][actor_r]);
cache_get_value_name_float(i, "liefer_x", bInfo[i][liefer_x]);
cache_get_value_name_float(i, "liefer_y", bInfo[i][liefer_y]);
cache_get_value_name_float(i, "liefer_z", bInfo[i][liefer_z]);
Alles anzeigen
Ich hoffe das dies jetzt keine "Große" Scripting Frage wird ...
MfG
XonarZ
Das ist doch jetzt ein ganz anderer Code. Wie stehen diese in Verbindung miteinander?
Das ist doch jetzt ein ganz anderer Code. Wie stehen diese in Verbindung miteinander?
Ganz Einfach, der Besitzer wird als Integer Gespeichert (Die Datenbank ID vom User). Ich möchte nämlich den Namen nicht als String speichern aus dem Grund, wenn sich jemand bsp. als "Niemand" Registriert und ich frage ab ob der String = Name ist, dann gehört diesem JEDE Biz bzw. ist überall Teilhaber. Somit möchte ich mit der Datenbank ID vom User arbeiten.
Ich lade erst die Bizzen und da bei OnLoadBiz der Name aus der Datenbank (GetNameFromDB) aufgerufen wird um den Namen des eingetragenen Integers abzufragen Sprich welcher Name steckt hinter der Datenbank ID bsp. 1
MfG
XonarZ
Poste bitte den Code dazu, sonst ist das Problem nicht nachvollziehbar.
Ganz Einfach, der Besitzer wird als Integer Gespeichert (Die Datenbank ID vom User). Ich möchte nämlich den Namen nicht als String speichern aus dem Grund, wenn sich jemand bsp. als "Niemand" Registriert und ich frage ab ob der String = Name ist, dann gehört diesem JEDE Biz bzw. ist überall Teilhaber. Somit möchte ich mit der Datenbank ID vom User arbeiten.
Ich lade erst die Bizzen und da bei OnLoadBiz der Name aus der Datenbank (GetNameFromDB) aufgerufen wird um den Namen des eingetragenen Integers abzufragen Sprich welcher Name steckt hinter der Datenbank ID bsp. 1
MfG
XonarZ
Das lässt sich deutlich einfacher mit einem LEFT JOIN verwirklichen. Dann kannst du dir das zusätzliche ermitteln des Namens sparen. Müsste in etwa so aussehen:
SELECT biz_tabelle.*, user.username FROM biz_tabelle LEFT JOIN user ON user.id = biz_tabelle.biz_owner
user.username musst du noch an deinen Spaltennamen anpassen + per cache_get_value_name() dir den username holen.
Das lässt sich deutlich einfacher mit einem LEFT JOIN verwirklichen. Dann kannst du dir das zusätzliche ermitteln des Namens sparen. Müsste in etwa so aussehen:
Ich habs nun so:
new query[512];
mysql_format(handle, query, sizeof(query), "SELECT * FROM geschaefte LEFT JOIN user ON geschaefte.biz_owner = user.id");
mysql_query(handle, query);
cache_get_value_name(0, "name", inhaber, MAX_PLAYER_NAME);
Als ergebnis kommt allerdings "NULL" Raus ... woran könntes das liegen ? Ich hab mir den Query mal printen lassen:
1 // <- das ist die Owner ID sprich in der user tabelle user.id 1 = Mein Name
[13:45:54] SELECT * FROM geschaefte LEFT JOIN user ON geschaefte.biz_owner = user.id
Ich arbeite in PHP selten (vielleicht sollte ich das mal ändern) mit LEFT JOIN daher ist das neuland für mich.
Poste bitte den Code dazu, sonst ist das Problem nicht nachvollziehbar.
Welchen genau meinst du ? von OnLoadBiz?:
public OnLoadBiz(){
new rows, string[256];
cache_get_row_count(rows);
printf("Einträge: %i", rows);
for(new i = 0; i < rows; i++){
cache_get_value_name_int(i, "id", bInfo[i][biz_id]);
cache_get_value_name_int(i, "biz_typ", bInfo[i][biz_typ]);
cache_get_value_name(i, "biz_name", bInfo[i][biz_name], 256);
cache_get_value_name_int(i, "biz_owner", bInfo[i][biz_owner]);
cache_get_value_name_int(i, "biz_sowner", bInfo[i][biz_sowner]);
cache_get_value_name_int(i, "biz_level", bInfo[i][biz_level]);
cache_get_value_name_int(i, "int_id", bInfo[i][int_id]);
cache_get_value_name_float(i, "bizkosten", bInfo[i][biz_kosten]);
cache_get_value_name_float(i, "bizkasse", bInfo[i][biz_kasse]);
cache_get_value_name_float(i, "biz_x", bInfo[i][biz_x]);
cache_get_value_name_float(i, "biz_y", bInfo[i][biz_y]);
cache_get_value_name_float(i, "biz_z", bInfo[i][biz_z]);
cache_get_value_name_float(i, "int_x", bInfo[i][int_x]);
cache_get_value_name_float(i, "int_y", bInfo[i][int_y]);
cache_get_value_name_float(i, "int_z", bInfo[i][int_z]);
cache_get_value_name_float(i, "i_x", bInfo[i][i_x]);
cache_get_value_name_float(i, "i_y", bInfo[i][i_y]);
cache_get_value_name_float(i, "i_z", bInfo[i][i_z]);
cache_get_value_name_int(i, "actor_skin", bInfo[i][actor_skin]);
cache_get_value_name_float(i, "actor_x", bInfo[i][actor_x]);
cache_get_value_name_float(i, "actor_y", bInfo[i][actor_y]);
cache_get_value_name_float(i, "actor_z", bInfo[i][actor_z]);
cache_get_value_name_float(i, "actor_r", bInfo[i][actor_r]);
cache_get_value_name_float(i, "liefer_x", bInfo[i][liefer_x]);
cache_get_value_name_float(i, "liefer_y", bInfo[i][liefer_y]);
cache_get_value_name_float(i, "liefer_z", bInfo[i][liefer_z]);
printf("%i", bInfo[i][biz_owner]);
new teilhaber[MAX_PLAYER_NAME], inhaber[MAX_PLAYER_NAME];
if(bInfo[i][biz_owner] == 0){
bizPickup[i] = CreatePickup(1274, 1, bInfo[i][biz_x], bInfo[i][biz_y], bInfo[i][biz_z], 0);
format(string, sizeof(string), "{00AFFF}%s - Zum Verkauf\n{00AFFF}Kosten: {FFFFFF}%0.0f€\n{00AFFF}Benötigtes Level: {FFFFFF}%i\n\nZum Betreten /enter oder Z", bInfo[i][biz_name], bInfo[i][biz_kosten], bInfo[i][biz_level]);
}else{
if(bInfo[i][biz_sowner] == 0){
teilhaber = "Niemand";
}else{
teilhaber = GetDBName(bInfo[i][biz_sowner]);
}
new query[512];
mysql_format(handle, query, sizeof(query), "SELECT * FROM geschaefte LEFT JOIN user ON geschaefte.biz_owner = user.id");
mysql_query(handle, query);
cache_get_value_name(0, "name", inhaber, MAX_PLAYER_NAME);
printf("%s", query);
bizPickup[i] = CreatePickup(1239, 1, bInfo[i][biz_x], bInfo[i][biz_y], bInfo[i][biz_z], 0);
format(string, sizeof(string), "{00AFFF}%s\nInhaber: {FFFFFF}%s\n{00AFFF}Teilhaber: {FFFFFF}%s\n\nZum Betreten /enter oder Z", bInfo[i][biz_name], inhaber, teilhaber);
}
bizLabel[i] = Create3DTextLabel(string, COLOR_WHITE, bInfo[i][biz_x], bInfo[i][biz_y], bInfo[i][biz_z], 10, 0, 0);
format(string, sizeof(string), "%s - Lieferpunkt\n\n/beliefern", bInfo[i][biz_name]);
lieferLabel[i] = Create3DTextLabel(string, COLOR_RED, bInfo[i][liefer_x], bInfo[i][liefer_y], bInfo[i][liefer_z], 10.0, 0, 0);
CreatePickup(1239, 1, bInfo[i][liefer_x], bInfo[i][liefer_y], bInfo[i][liefer_z], 0);
bizActor[i] = CreateActor(bInfo[i][actor_skin], bInfo[i][actor_x], bInfo[i][actor_y], bInfo[i][actor_z], bInfo[i][actor_r]);
format(string, sizeof(string), "%s - Personal", bInfo[i][biz_name]);
bizActorLabel[i] = Create3DTextLabel(string, COLOR_WHITE, bInfo[i][actor_x], bInfo[i][actor_y], bInfo[i][actor_z]+1, 10.0, bInfo[i][biz_id], 0);
SetActorVirtualWorld(bizActor[i], bInfo[i][biz_id]);
printf("BizID: %i | Biz Name: %s | Inhaber: %s | Teilhaber: %s", bInfo[i][biz_id], bInfo[i][biz_name], inhaber, teilhaber);
if(i == 2) break;
}
print(" ");
printf("|__________%i/%i Geschäfte wurden Geladen__________|", rows, MAX_BIZ);
new query[1024];
//Tankstellen
mysql_format(handle, query, sizeof(query), "SELECT * FROM tankstellen");
mysql_pquery(handle, query, "OnLoadTanke");
return 1;
}
Alles anzeigen
@XonarZ: Das Statement hat weniger mit PHP, sondern mehr etwas mit SQL / mySQL zu tun :).
Den Query den du oben ausgibst muss auch an eine andere Stelle hin. Nämlich dort, wo der Query für OnLoadBiz() aufgerufen bzw. gesendet wird. Irgendwo muss ja ein Code-ähnlicher Teil wie:
mysql_format(handle, query, sizeof(query), "SELECT * FROM geschaefte");
mysql_pquery(handle, query, "OnLoadBiz");
sein, dort den Query mit den oberen ersetzen. Dann kannst du, wie deine anderen Werte gemütlich per cache_get_value_name*() aus den einzelnen rows ziehen.
noch ne idee?
noch ne idee?
Dein Problem musst du schon etwas konkretisieren. Was ist immer 0? cache_get_row_count() oder gibt OnCarKeyCountCheck() immer 0 zurück? Schon mal versucht den Query manuell per phpMyAdmin auszuführen und zu schauen, ob und wie viele Zeilen du zurückbekommst? Alternativ, versuch mal die Funktion cache_num_rows() zu verwenden (weiß nicht, ob es diese Funktion bei deiner MySQL BlueG Version gibt).
Interior ( Ein & Ausgänge ) Probleme
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((RELEASED(KEY_SECONDARY_ATTACK)))
{
if(IsPlayerInAnyVehicle(playerid))return 1; // Fragt ab ob der Spieler in eine Auto sitzt
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.4299,-1690.7727,14.7656)) // Grove Street Eingang vom ICON zum Betretten vom Interior
{
SetPlayerInterior(playerid,3);//Grove Street
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,88.4473);
SetPlayerPos(playerid,2496.049804,-1695.238159,1014.742187);
SetPlayerVirtualWorld(playerid,1);
GameTextForPlayer(playerid,"~b~Los Santos~n~~w~Grove Street",1200,1);
}
else if(IsPlayerInRangeOfPoint(playerid,2.0,2494.0928,-1463.9749,24.0249)) // Ballas Eingang
{
SetPlayerInterior(playerid,3);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,0.4231);
SetPlayerPos(playerid,2496.049804,-1695.238159,1014.742187);
SetPlayerVirtualWorld(playerid,2);
GameTextForPlayer(playerid,"~b~Los Santos~n~~w~Ballas",1200,1);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,2.0,2507.8247,-2020.4296,14.2101)) // Vagos Eingang
{
SetPlayerInterior(playerid,3);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,0.4207);
SetPlayerPos(playerid,2496.049804,-1695.238159,1014.742187);
SetPlayerVirtualWorld(playerid,3);
GameTextForPlayer(playerid,"~b~Los Santos~n~~w~Vagos",1200,1);
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422)) // Grove Street Ausgang
{
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,0.4231);
SetPlayerPos(playerid,2495.4299,-1690.7727,14.7656);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422)) // Ballas Ausgang
{
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,0.4231);
SetPlayerPos(playerid,2494.0928,-1463.9749,24.0249);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422)) // Vagos Ausgang
{
SetPlayerInterior(playerid,0);
SetCameraBehindPlayer(playerid);
SetPlayerFacingAngle(playerid,0.4231);
SetPlayerPos(playerid,2507.8247,-2020.4296,14.2101);
return 1;
}
return 1;
}
Alles anzeigen
Sobald ein Spier das Ballas Interior betritt, welches derzeit ( noch "alle" die ID & Koordinaten vom CJ Interior besitzen, ) spawnt der Spieler beim heraus gehen an der "Grove Street" Base.
Er soll ja "eigentlich" an dem Ballas Icon ( Draußen ) Spawnen, wie es im Code deklariert ist. !!!!!
Muss ich überall noch die VirtuellenWelten auf 0 setzen, oder soll ich das System wie Mr.Monat als "Enum" System schreiben ?
@Jeffry Villeicht kannst du mir ja helfen ?
Muss ich überall noch die VirtuellenWelten auf 0 setzen
Ja, sonst sehen sich die Spieler danach nicht mehr.
Außerdem, und daher der Fehler, musst du zusätzlich beim jeweiligen Ausgang, die virtuelle Welt abfragen.
Beispiel:
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422)) // Grove Street Ausgang
zu:
else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422) && GetPlayerVirtualWorld(playerid) == 1) // Grove Street Ausgang
soll ich das System wie Mr.Monat als "Enum" System schreiben ?
Das wäre natürlich schöner und gegebenenfalls dynamisch aufbaubar, bei den bisher drei Ein-/Ausgängen aber auch nicht wirklich notwendig. Je mehr es werden, desto besser wäre es.
Korrekt danke dir, werde ich später mal testen.
Bei Problemen meld ich mich nochmal.
Sollen ja noch mehr Interiors kommen
als "Enum" System schreiben ?
besser ja