Ja.
Dort wo du "Dialog" geschrieben hast kommt dann eben das hin was du machen willst. Pauschal kann ich dir das nicht vorhersagen.
Am besten du probierst es einfach mal aus und sagst bei Problemen Bescheid. ![]()
Ja.
Dort wo du "Dialog" geschrieben hast kommt dann eben das hin was du machen willst. Pauschal kann ich dir das nicht vorhersagen.
Am besten du probierst es einfach mal aus und sagst bei Problemen Bescheid. ![]()
IPrototypeI:
Der Inhalt der Schleife würde bei dir nie ausgeführt werden.
for(new i=1; i<sizeof(tank); i++)
{
if(!IsValidVehicle(i))continue;
new vModel = GetVehicleModel(i);
tank[i]=VehicleName[vModel-400][carinfo_tankvolumen];
}
So.
Es können 1999 Fahrzeuge erstellt werden, von 1 bis MAX_VEHICLES-1 (=1999).
Was?
Lass alles so wie es ist.
Du willst doch nur abfragen, wer in das Haus darf. Das machst du genau gleich wie beim PayDay.
Und abfragen ob der Spieler das Haus besitzt: Ebenso gleich wie beim PayDay, nur ohne die Mieter-Abfragen.
Man kann statt Timer auch sleep(ms); benutzen oder ?
Nein, das friert den Server für die angegebene Zeit ein.
EDIT:
Oder du verwendest das hier: [ MAKRO ] Sleep Funktion
Ok, dachte schon ![]()
Zu deiner Frage:
Du hast erst den Wert der Variable ausgelesen (in playercp) und dann hochgesetzt. Das +1 simuliert, dass du es erst hochzählst.
An der Virtual World Abfrage.
Du machst ebenfalls wieder eine Schleife, prüfst welches Haus dem Spieler gehört und zeigst dafür die entsprechenden Dinge an.
Zwecks dem Lock: Gleiches Prinzip wie bei dem PayDay.
Und was ist wenn ein NPC in diesem Fahrzeug ist? Falls man es löschen will, dann hätte der NPC keins mehr.
Du kannst es viel einfacher so schreiben:
stock EmptyVehicle(vID)
{
for(new i=0, j=GetMaxPlayer(); i<j; i++) if(IsPlayerInVehicle(i, vID)) return 0;
return 1;
}
Das erklärt es.
ocmd:exit(playerid, params[])
{
for(new i=0; i<MAX_HOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][IntX],hInfo[i][IntY],hInfo[i][IntZ]) && GetPlayerVirtualWorld(playerid) == hInfo[i][VID])
{
SetPlayerPos(playerid, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
return 1;
}
}
return SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines Hauses!");
}
Aber die Reihenfolge der Koordinaten stimmt doch jetzt, oder?
Wie willst du es dann haben? ![]()
if(SpielerInfo[playerid][pEingeloggt] == 0)return 1;
oder:
if(SpielerInfo[playerid][pEingeloggt] != 1)return 1;
Ja, das stimmt so.
Du darfst es allerdings erst nach dieser Abfrage auf 0 setzen, aber ich denke das ist klar.
Hättest du mir den Link noch? Danke ![]()
EDIT:
Manniac: Ach ja, natürlich. Danke.
if(SpielerInfo[playerid][pEingeloggt] == 0)return 1;
Wie und wo ist denn das "i" deklariert? Und sieht der Code wirklich so "wirr" aus? ![]()
format(query, sizeof(query), "SELECT * FROM script_accounts WHERE Name = '%s' AND Passwort = '%s'", Spielername(playerid), key);
zu:
format(query, sizeof(query), "SELECT * FROM script_accounts WHERE Name = '%s' AND Passwort = MD5('%s')", Spielername(playerid), key);
In Zeile 34 von LoadHouses_Data() hast du vor CreatePickup die Variable vergessen.
Schreibe den Enter Befehl so:
ocmd:enter(playerid, params[])
{
for(new i=0; i<MAX_HOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][PosX],hInfo[i][PosY],hInfo[i][PosZ]))
{
if(hInfo[i][Gekauft] != 1) return SendClientMessage(playerid, error, "Dieses Haus kannst du nicht betreten!");
SetPlayerPos(playerid, hInfo[i][IntX],hInfo[i][IntY],hInfo[i][IntZ]);
SetPlayerInterior(playerid, hInfo[i][IntID]);
SetPlayerVirtualWorld(playerid, hInfo[i][VID]);
return 1;
}
}
return SendClientMessage(playerid, error, "Du bist nicht in der Nähe deines Hauses!");
}
Zwecks dem Problem:
Laut Code kann das nicht sein, außer du hast Haus 1 und Haus 2 dieselben Koordinaten im Interior gegeben.
format(query, sizeof(query), "INSERT INTO script_accounts (Name, Passwort) VALUES ('%s',MD5('%s'))", Spielername(playerid), key);
Dann stimmt es aber.
Hast du das aus einem Tutorial? Wenn ja, kannst du mir den Link schicken? Oder wo hast du den Code her? Den habe ich schon ein paar mal gesehen, mit genau den gleichen Fehlern. Da fehlt der Tabellenname und eine Klammer am Ende.
format(query, sizeof(query), "INSERT INTO (Name, Passwort) VALUES ('%s',MD5('%s')", Spielername(playerid), key);
zu:
format(query, sizeof(query), "INSERT INTO script_accounts (Name, Passwort) VALUES ('%s',MD5('%s'))", Spielername(playerid), key);
format(query, sizeof(query), "%s `Admin` int(2) NOT NULL DEFAULT '0',", query);
zu:
format(query, sizeof(query), "%s `Admin` int(2) NOT NULL DEFAULT '0'", query);
Das Komma am Ende war da zu viel.