if(GetVehicleModel(vehicleid) != 515)
Beiträge von Simon
-
-
ich kann mal die komplette Debug senden, da steht drinne das er die Tankstellen für Fahrzeuge alle sauber reinsetzt, was ich auch dann hinterher in der Datenbank sehe aber dann bei den Flugzeug Tankstellen nicht.
OnGameModeInit()
{
for(new i = 0; i < sizeof Tanken; i++)
{
new dstr[300],zeitstr[20],bstr[30];
if(!mysql_CheckAutoTanke(i)) mysql_CreateAutoTanke(i);
else
{
format(Tanken[i][Besitzer],MAX_PLAYER_NAME,"%s",mysql_GetString("Tankstelle_Fahrzeug", "Besitzer", "PSName", Tanken[i][PSName]));
format(Tanken[i][robname],MAX_PLAYER_NAME,"%s",mysql_GetString("Tankstelle_Fahrzeug", "robname", "PSName", Tanken[i][PSName]));
Tanken[i][Kasse] = mysql_GetInt("Tankstelle_Fahrzeug", "Kasse", "PSName", Tanken[i][PSName]);
Tanken[i][Literpreis] = mysql_GetInt("Tankstelle_Fahrzeug", "Literpreis", "PSName", Tanken[i][PSName]);
Tanken[i][Benzin] = mysql_GetInt("Tankstelle_Fahrzeug", "Benzin", "PSName", Tanken[i][PSName]);
Tanken[i][Zeit] = mysql_GetInt("Tankstelle_Fahrzeug", "Zeit", "PSName", Tanken[i][PSName]);
Tanken[i][robtime] = mysql_GetInt("Tankstelle_Fahrzeug", "robtime", "PSName", Tanken[i][PSName]);
Tanken[i][nextrobtime] = mysql_GetInt("Tankstelle_Fahrzeug", "nextrobtime", "PSName", Tanken[i][PSName]);
}
}
for(new i = 0; i < sizeof Flugzeugtanken; i++)
{
new dstr[300],zeitstr[20],bstr[30];
if(mysql_CheckFlugTanke(i) == 0) mysql_CreateFlugTanke(i);
else
{
format(Flugzeugtanken[i][Besitzer],MAX_PLAYER_NAME,"%s",mysql_GetString("Tankstelle_Flugzeug", "Besitzer", "PSName", Flugzeugtanken[i][PSName]));
format(Flugzeugtanken[i][robname],MAX_PLAYER_NAME,"%s",mysql_GetString("Tankstelle_Flugzeug", "robname", "PSName", Flugzeugtanken[i][PSName]));
Flugzeugtanken[i][Kasse] = mysql_GetInt("Tankstelle_Flugzeug", "Kasse", "PSName", Flugzeugtanken[i][PSName]);
Flugzeugtanken[i][Literpreis] = mysql_GetInt("Tankstelle_Flugzeug", "Literpreis", "PSName", Flugzeugtanken[i][PSName]);
Flugzeugtanken[i][Benzin] = mysql_GetInt("Tankstelle_Flugzeug", "Benzin", "PSName", Flugzeugtanken[i][PSName]);
Flugzeugtanken[i][Zeit] = mysql_GetInt("Tankstelle_Flugzeug", "Zeit", "PSName", Flugzeugtanken[i][PSName]);
Flugzeugtanken[i][robtime] = mysql_GetInt("Tankstelle_Flugzeug", "robtime", "PSName", Flugzeugtanken[i][PSName]);
Flugzeugtanken[i][nextrobtime] = mysql_GetInt("Tankstelle_Flugzeug", "nextrobtime", "PSName", Flugzeugtanken[i][PSName]);
}
}
return 1;
} -
Guten Tag
Ich habe Tankstellen für Fahrzeuge und Tankstellen für Flugobjekte.
Beide sind im prinzip gleich aufgebaut, haben aber 2 verschiedene Tabellen.
Die Tabelle mit den Fahrzeug Tankstellen wird vernünftig gefüllt, die mit den Flugzeug Tankstellen nicht.
Warum? Mir ein Rätsel.Folgendes steht in der Debug:
Code[14:48:37] >> mysql_num_rows( Connection handle: 1 ) [14:48:37] CMySQLHandler::NumRows() - You cannot call this function now. (Reason: Dead Connection) [14:48:37] >> mysql_real_escape_string( Connection handle: 1 ) [14:48:37] CMySQLHandler::EscapeString(Las Venturas Airport Petrol Station); - Escaped 35 characters to Las Venturas Airport Petrol Station. [14:48:37] >> mysql_query( Connection handle: 1 ) [14:48:37] CMySQLHandler::Query(INSERT INTO Tankstelle_Flugzeug (PSName) VALUES ('Las Venturas Airport Petrol Station')) - An error has occured. (Error ID: 2014, Commands out of sync; you can't run this command now)
folgend füge ich das in meine Tabelle ein:
stock mysql_CreateAutoTanke(tankenid)
{
new query[512];
mysql_real_escape_string(Tanken[tankenid][PSName], Tanken[tankenid][PSName]);
format(query, sizeof(query), "INSERT INTO Tankstelle_Fahrzeug (PSName) VALUES ('%s')", Tanken[tankenid][PSName]);
mysql_query(query);
return true;
}stock mysql_CreateFlugTanke(tankenid)
{
new query[512];
mysql_real_escape_string(Flugzeugtanken[tankenid][PSName], Flugzeugtanken[tankenid][PSName]);
format(query, sizeof(query), "INSERT INTO Tankstelle_Flugzeug (PSName) VALUES ('%s')", Flugzeugtanken[tankenid][PSName]);
mysql_query(query);
return true;
}Liebe Grüße
-
OnPlayerCommandText(playerid, cmdtext[])
{
if(/*Abfrage*/)
{
SendClientMessage(playerid,farbe,"TEXT");
return 0;
}
//Commands:
return 1;
} -
format(string8, sizeof(string8), "Rang: %d", PlayerInfo[playerid][pRank]);
und wenn du das schon so umständlich machst benutze trotzdem bitte "format" -
Guten Tag
Ich bin mir nicht sicher ob dies der richtige Bereich ist...
Ich bräuchte einmal eure Hilfe bezüglich Beziehungen in SQL via phpMyAdmin.
Meine Datenbank bezieht sich auf SAMP, falls Beziehungen unnötig oder störend sind dann hat sich das eigentlich erledigt.Und zwar habe ich als Beispiel 2 Datenbanken: Tankstellen und User.
In der Tabelle user wird halt alles mögliche vom User gespeichert. in der Tabelle Tankstellen wird alles mögliche zu der jeweiligen Tankstelle gespeichert, zum Beispiel der Besitzer der Tankstelle.Ich möchte nun eine Beziehung zwischen 2 Tabellen hinzufügen. Und zwar soll sich der Besitzer auf den Primär Schlüssel der User (Nickname) beziehen.
Dies soll bewirken das ich den besitzer jederzeit löschen kann, jedoch nicht den User, falls dieser irgentwo als Besitzer steht, zumindest nicht ohne ihn vorher als Besitzer zu löschen.Das erste was ich mich frage: Wie müssen die Beziehnung eigentlich genau gemacht werden. ich kenne mich da nicht so super aus.
Die nächste Frage wäre dann: ist es möglich, das wenn ich den User lösche und dieser als Besitzer einer Tanke eingetragen ist und sich somit auf den Primary vom User bezieht, dass ich dann den Wert vom Besitzer auf einen bestimmten Wert setze?Ich hoffe ihr habt verstanden was ich meine und könnt mir helfen.
Liebe Grüße
-
achsoo da war der haken..
Du musst die die normale X-Y-Z-Achse ändern damit sich die rotation bei MoveObject langsam bewegt und nicht setzt? Was ein scheiß
Auch wieder was dazu gelernt. -
Man versteht kein Wort von dem was du sagst.
Also ich glaube du willst das Objekt nicht nur auf x,y,z-Achse Bewegen sondern auch rotieren lassen, das heißt die Rot. Achsen von einer Position in eine andere bewegen lassen, zum beispiel eine Schranke öffnen oder schließen.
Ich weiß nicht ob es bisher ein Fehler meinerseits war oder es von SAMP so gemacht ist aber du kannst zwar in der Funktion MoveObject die rot-x,y,z angeben aber bewegen tut er sie nicht sondern "setzen" wie bei SetObjectRot.
Ich habe das damals mit einer eigenen Funktion gelöst wo die Objekte dann auch rotiert sind und nicht auf ein schlag gesetzt wurden, indem ich immer wieder die rot-Achsen um ein kleines Stück in Richtung "Ziel" gesetzt habe.Ich hoffe ich habe dich richtig verstanden und das war was du meinst
-
Wenn du das in deinem GameMode haben möchtest musst du das sowieso einbauen und all sowas.
Ich gebe dir mal ein Tipp in dem ich dir sage wie ich das gelöst habe:
Ich habe in meiner MySQL Datenbank folgende Spalten erstellt: tBanTime & tBanDate.
Nun habe ich InGame ein Befehl geschrieben in dem man mit /tban jemand für eine gewisse Anzahl von Stunden bannt.
Ich habe dann 2 eigene Funtkionen geschrieben, die mir errechnen wann der Bann aufgehoben sein wird.
Beispiel:gebannt: 20:00 am 01.01.2013 Für 50 Stunden.
Meine Funktionen rechnen nun:20:00 + 50 = 70:00
70:00 > 24 also 70-24 = 46
46 > 24 also 46-24 = 22
22 < 24 also ist er um 22:00 Uhr wieder entbannt.Nun das Datum:
er rechnet mit einer while Schleife immer eine Stunde auf die aktuelle Zeit und sobald die Zeit auf 24 ist, wird sie auf 0 gesetzt und der Tag um ein höher. das selbe dann auch mit Monaten und Jahren. Bis die Stundenzahl auf 0 ist.
So hast du dann ein Datum und eine Uhrzeit wann der Spieler entbannt ist. du musst also nur noch beim connecten Abfragen ob die jetztige Zeit "vor" oder "nach" der gebannten Zeit ist, was ich ebenfalls mit einer eigenen Funktion gelöst habe.Im ganzen einfach nur ein bisschen Rechnen.
-
Oder wenn der Spieler den Punkt ruhig "sehen" darf kannst du dir die ganze Timer- "Scheisse" sparen und es entweder mit einem Pickup machen oder mit einem Checkpoint.
Mit dem Pickup wäre es ganz einfach, du müsstes als Spawn Typ nur vernünftig anpassen, d.h. wenn das nur kommen soll wenn er in einem Fahrzeug sitzt wäre es Spawn Typ 14.
Ansonsten halt einen Checkpoint setzen.Wenn du Tatsächlich einfach ein Punkt haben willst, wo weder ein Checkpoint, ein Pickup oder sonst irgentetwas angezeigt wird, wäre das hier eine Lösung:
forward PointCheck();
OnGameModeInit()
{
SetTimer("PointCheck", 500, 1) //Die 500 sind millisekunden, jenachdem wie groß die range ist kann man die verändern und anpassen.
return 1;
}public PointCheck()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) /*Weitere Verbindungs Abfragen */) continue;
if(IsPlayerInRangeOfPoint(i,x,y,z,range)) //Was passieren soll
else if(IsPlayerInRangeOfPoint(i, x, y, z, range)) //Ein anderer Punkt wo was passieren kann dafür brauchste keinen 2. Timer
}
return 1;
} -
funktioniert sowas auch bei dcmd?
Mein Compiler motzt aufjedenfall wenn ich da die Parameter anpasse.
Dort muss ich ja auch noch unter OnPlayerCommandText den Befehl angeben. -
Ich denke mal auch das der entweder 1 returned oder irgentetwas was mit dem Text der gesendet wird zu tun hat.
Naja dankeschön
-
Dachte ich mir das es daran liegt.
Was returned der bei meiner Schreibweise?
-
Ich mag den Lokalen Chat nicht
Also habe versucht den Lokalen Chat auszuschalten und anstelle davon einen sozusagen "Selfmade" lokalen chat zu machen.
hat ja auch geklappt nur habe ich eine Zeile eingeügt, die bei einem "Mute" dem Spieler das schreiben verhindern soll.
Das klappt auch, nur wird jetzt der standard lokale Chat wieder gesendetHier mal mein Code:
public OnPlayerText(playerid, text[])
{
if(Spieler[playerid][Mute] > 0) return SendClientMessage(playerid,COLOR_GREY,"Sie sind gemutet!"); //Die Zeile wurde eingefügt
new Float:x, Float:y, Float:z, String[150];
GetPlayerPos(playerid, x, y, z);
format(String, sizeof String, "%s sagt: %s", pName[playerid], text);
SetPlayerChatBubble(playerid, text, 0xFF0000FF, 31.0, 10000);
SendClientMessage(playerid, COLOR_DISTANCE_1, String);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || !GetPVarBool(i,"LoggedIn") || IsPlayerNPC(i) || i == playerid) continue;
if(GetPlayerInterior(i) != GetPlayerInterior(playerid) || GetPlayerVirtualWorld(i) != GetPlayerVirtualWorld(playerid)) continue;
if(IsPlayerInRangeOfPoint(i, 5.0, x, y, z)) SendClientMessage(i, COLOR_DISTANCE_1, String);
else if(IsPlayerInRangeOfPoint(i, 10.0, x, y, z)) SendClientMessage(i, COLOR_DISTANCE_2, String);
else if(IsPlayerInRangeOfPoint(i, 16.0, x, y, z)) SendClientMessage(i, COLOR_DISTANCE_3, String);
else if(IsPlayerInRangeOfPoint(i, 23.0, x, y, z)) SendClientMessage(i, COLOR_DISTANCE_4, String);
else if(IsPlayerInRangeOfPoint(i, 31.0, x, y, z)) SendClientMessage(i, COLOR_DISTANCE_5, String);
}
return 0; //Damit er den Lokalen Chat nicht senden
} -
Ach das genau
habe ich nie ganz verstanden wie das gemeint ist.
Wie ist das gemeint "who reported the vehicle dead". -
Neu? Klär mich bitte auf.
Dann halt abfragen ob es diese id überhaupt gibt.
-
wenn das auto nicht durch einen spieler kaputt geht kommt da meistens eine unfassbare killerid raus. Musst vorher abfragen ob killerid != INVALID_PLAYER_ID ist. Oder wenn das nicht klappt, ob die killerid eigentlich aufn Server ist.
-
cash ist anscheinend ein integer
mach einfach:
Cash = floatround(Cash*1.6); -
hat sehr sehr viel mit mathe zu tun
-
Okay vielen Dank.
Warum funktioniert es in 0.3e nicht? zumindest die Sitting.
Oder ich bin zu blöd die Includes von 0.3e einzufügen...