Kaufen kann ich @Kaliber
Aber nur die ID 2 aus der DB und die ID 3 aus der DB mehr auch nicht ID 1 buggt irgendwie rum.
Kaufen kann ich @Kaliber
Aber nur die ID 2 aus der DB und die ID 3 aus der DB mehr auch nicht ID 1 buggt irgendwie rum.
Soweit alles korrekt richtig.
So das ist der Log beim laden:
[22:16:01] [INFO] query "SELECT * FROM `server_biz`" successfully executed within 3.379 milliseconds
[22:16:01] [DEBUG] CResultSet::Create(connection=0x6c87618, query_str='SELECT * FROM `server_biz`')
[22:16:01] [DEBUG] created new resultset '0x6cd6ea0'
[22:16:01] [DEBUG] fetched MySQL result '0x27130d8'
[22:16:01] [DEBUG] allocated 588 bytes for PAWN result
[22:16:01] [DEBUG] CConnection::Execute(query=0x6cc55a8, this=0x6ef7020, connection=0x6c87618)
[22:16:01] [DEBUG] CQuery::Execute(this=0x6cc55a8, connection=0x6c87618)
[22:16:01] [DEBUG] mysql_tquery(1, "SELECT * FROM `server_biz`", "LoadBizes", "")
[22:16:01] [DEBUG] CCallback::Create(amx=0x4a93070, name='LoadBizes', format='', params=0x6a9fc88, param_offset=5)
[22:16:01] [DEBUG] CCallback::Create - callback index for 'LoadBizes': 118
[22:16:01] [DEBUG] CQuery::Execute(this=0x27157a8, connection=0x6c90800)
[22:16:01] [INFO] Callback 'LoadBizes' set up for delayed execution.
[22:16:01] [DEBUG] created delayed callback with 0 parameter
[22:16:01] [DEBUG] CHandle::Execute(this=0x6c37c40, type=1, query=0x6cc4470)
[22:16:01] [DEBUG] CHandle::Execute - return value: true
[22:16:01] [DEBUG] mysql_tquery: return value: '1'
//E:
Der Befehl zum kaufen. eigentlich funktioniert der weil ID 2 und ID 3 kann ich damit ja auch kaufen. Seltsam hatte sowas noch nie.
ocmd:buybiz(playerid)
{
new string[128];
for(new i=1;i<MAX_BIZ;i++)
{
if(Biz[i][bCreated] == 1)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, Biz[i][bEnterX], Biz[i][bEnterY], Biz[i][bEnterZ]))
{
if(PlayerInfo[playerid][pPersonalausweis] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt keinen Personalausweis.");
if(strcmp(Biz[i][bBesitzer], GetName(playerid), false) == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Geschäft gehört bereits dir.");
if(strcmp(Biz[i][bBesitzer], "-", false))return SendClientMessage(playerid, COLOR_GREY, "Dieses Geschäft ist bereits verkauft.");
new count = CountPlayerBizes(playerid);
if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Geschäft.");
if((GetPlayerMoneys(playerid) - Biz[i][bPreis]) < 0)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
format(string, sizeof(string), "Herzlichen Glückwunsch zu deinem neuen Geschäft. (-$%d)", Biz[i][bPreis]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
GivePlayerMoneys(playerid, -Biz[i][bPreis]);
DestroyPickup(Biz[i][bPickup]);
Biz[i][bPickup] = CreatePickup(BIZ_OWNER_PICKUP, 1, Biz[i][bEnterX], Biz[i][bEnterY], Biz[i][bEnterZ], -1);
strmid(Biz[i][bBesitzer], GetName(playerid), 0, strlen(GetName(playerid)), 24);
Biz[i][bOwned] = 1;
UpdateBizLabel(i, Biz[i][bOwned]);
SaveBiz(i);
PlayerUpdate(playerid);
return 1;
}
}
}
return 1;
}
Alles anzeigen
Das Problem besteht darin das man kein Biz mit der Datenbank ID 1 Kaufen kann.
Das Zweite ist das man erst ab ID 2 kaufen kann. Warum auch immer
Habe mal jedes einzelne Printen lassen:
[22:09:04] ID: 1
[22:09:04] Type: 1
[22:09:04] Eingang X: 1368.130004
[22:09:04] Eingang Y: -1279.969970
[22:09:04] Eingang Z: 13.546899
[22:09:04] Ausgang Z: 285.899993
[22:09:04] Ausgang Z: -40.729698
[22:09:04] Ausgang Z: 1001.520019
[22:09:04] Interior: 1
[22:09:04] Level: 3
[22:09:04] Preis: 800000
[22:09:04] Owned: 0
[22:09:04] Kasse: 0
[22:09:04] Lock: 1
[22:09:04] Eintritt: 0
[22:09:04] Produkte: 100
[22:09:04] MaxProdukte: 100
[22:09:04] ProdPreis: 0
[22:09:04] Besitzer: -
[22:09:04] Teilhaber: -
[22:09:04] Beschreibung: Ammunation LS
[22:09:04] ID: 2
[22:09:04] Type: 1
[22:09:04] Eingang X: -2288.030029
[22:09:04] Eingang Y: -79.102203
[22:09:04] Eingang Z: 35.320301
[22:09:04] Ausgang Z: 285.899993
[22:09:04] Ausgang Z: -40.729698
[22:09:04] Ausgang Z: 1001.520019
[22:09:04] Interior: 1
[22:09:04] Level: 3
[22:09:04] Preis: 800000
[22:09:04] Owned: 0
[22:09:04] Kasse: 0
[22:09:04] Lock: 1
[22:09:04] Eintritt: 0
[22:09:04] Produkte: 100
[22:09:04] MaxProdukte: 100
[22:09:04] ProdPreis: 0
[22:09:04] Besitzer: -
[22:09:04] Teilhaber: -
[22:09:04] Beschreibung: Ammunation SF
[22:09:04] ID: 3
[22:09:04] Type: 1
[22:09:04] Eingang X: 2158.620117
[22:09:04] Eingang Y: 943.315002
[22:09:04] Eingang Z: 10.820300
[22:09:04] Ausgang Z: 285.899993
[22:09:04] Ausgang Z: -40.729698
[22:09:04] Ausgang Z: 1001.520019
[22:09:04] Interior: 1
[22:09:04] Level: 3
[22:09:04] Preis: 800000
[22:09:04] Owned: 0
[22:09:04] Kasse: 0
[22:09:04] Lock: 1
[22:09:04] Eintritt: 0
[22:09:04] Produkte: 100
[22:09:04] MaxProdukte: 100
[22:09:04] ProdPreis: 0
[22:09:04] Besitzer: -
[22:09:04] Teilhaber: -
[22:09:04] Beschreibung: Ammunation LV
Alles anzeigen
Hey,
Habe das Problem immer mit der ID 1. also mit der ersten ID in der Datenbank an was kann das liegen?
ID 2, ID 3, use funktioniert aber warum spinnt ID 1 so rum?
public LoadBizes()
{
new rows, count;
cache_get_row_count(rows);
for(new i=0;i<rows;i++)
{
if(i < MAX_BIZ)
{
Biz[i][bCreated] = 1;
cache_get_value_name_int(i, "id", Biz[i][bdbID]);
cache_get_value_name_int(i, "Type", Biz[i][bType]);
cache_get_value_name_float(i, "EnterX", Biz[i][bEnterX]);
cache_get_value_name_float(i, "EnterY", Biz[i][bEnterY]);
cache_get_value_name_float(i, "EnterZ", Biz[i][bEnterZ]);
cache_get_value_name_float(i, "ExitX", Biz[i][bExitZ]);
cache_get_value_name_float(i, "ExitY", Biz[i][bExitY]);
cache_get_value_name_float(i, "ExitZ", Biz[i][bExitZ]);
cache_get_value_name_int(i, "Interior", Biz[i][bInterior]);
cache_get_value_name_int(i, "Level", Biz[i][bLevel]);
cache_get_value_name_int(i, "Preis", Biz[i][bPreis]);
cache_get_value_name_int(i, "Owned", Biz[i][bOwned]);
cache_get_value_name_int(i, "Kasse", Biz[i][bKasse]);
cache_get_value_name_int(i, "Lock", Biz[i][bLock]);
cache_get_value_name_int(i, "Eintritt", Biz[i][bEintritt]);
cache_get_value_name_int(i, "Produkte", Biz[i][bProdukte]);
cache_get_value_name_int(i, "MaxProdukte", Biz[i][bMaxProdukte]);
cache_get_value_name_int(i, "ProdPreis", Biz[i][bProdPreis]);
cache_get_value_name(i, "Besitzer", Biz[i][bBesitzer], MAX_PLAYER_NAME);
cache_get_value_name(i, "Teilhaber", Biz[i][bTeilhaber], MAX_PLAYER_NAME);
cache_get_value_name(i, "Beschreibung", Biz[i][bBeschreibung], 64);
Biz[i][bText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Biz[i][bEnterX], Biz[i][bEnterY], Biz[i][bEnterZ], 20.0);
if(Biz[i][bOwned] == 1)
{
Biz[i][bPickup] = CreatePickup(BIZ_OWNER_PICKUP, 1, Biz[i][bEnterX], Biz[i][bEnterY], Biz[i][bEnterZ], 0);
}
else if(Biz[i][bOwned] == 0)
{
Biz[i][bPickup] = CreatePickup(NO_BIZ_OWNER_PICKUP, 1, Biz[i][bEnterX], Biz[i][bEnterY], Biz[i][bEnterZ], 0);
}
UpdateBizLabel(i, Biz[i][bOwned]);
count++;
}
}
printf("[LOAD] BIZes geladen: %d/%d", count, MAX_BIZ);
return 1;
}
Alles anzeigen
Weiß nicht weil das andere ganz anders aussieht.
Aber wen das möglich ist warum nicht danke
g_Object[2] = CreateObject(18646, 1525.9505, 1491.9825, 10.7901, 0.0000, 0.0000, 0.0000); //PoliceLight1
g_Object[9] = CreateObject(19797, 1525.8603, 1491.8580, 11.1536, 0.0000, 0.0000, 0.0000); //PoliceVisorStrobe1
g_Object[10] = CreateObject(19797, 1526.9223, 1492.6074, 11.2252, 0.0000, 0.0000, 0.0000); //PoliceVisorStrobe1
g_Object[12] = CreateObject(19797, 1526.4981, 1492.0527, 11.1787, 0.0000, 0.0000, 0.0000); //PoliceVisorStrobe1
AttachObjectToVehicle(g_Object[2], g_Vehicle[1], -0.4000, 0.2500, 0.7200, 0.0000, -3.0000, 0.0000);
AttachObjectToVehicle(g_Object[9], g_Vehicle[1], 0.0000, 0.5500, 0.5400, -63.0000, 0.0000, 180.0000);
AttachObjectToVehicle(g_Object[10], g_Vehicle[1], 0.3499, -0.8798, 0.5550, -64.0000, 0.0000, 0.0000);
AttachObjectToVehicle(g_Object[12], g_Vehicle[1], -0.3499, -0.8798, 0.5500, -64.0000, 0.0000, 0.0000);
Hey,
Habe kurz eine frage kann ich das so übernehmen wen ich ein befehl eingebe das zu attachen?
Weiß sonst nicht wie ich das am besten machen soll.
hast du eine idee @Kaliber
C:\Users\ASUS\Desktop\Coming Soon\gamemodes\CS.pwn(14442) : warning 213: tag mismatch
Sagt der mir immer wieder,
Ja das habe ich verstanden max minus liter war von mir ein fehler
new int = Tanke[it][tMaxLiter] - Tanke[it][tLiter];
Meinst du so?
new int = Tanke[it][tLiter] -= Tanke[it][tMaxLiter];
Ich hoffe das stimmt so & ja ich möchte das alleine hin bekommen
Will nur auf nummer sicher gehn ob idas so richtig ist?
Danke @Kaliber
Wollte kurz fragen wie kann ich machen das er keine menge mehr angeben muss um das abzuladen?
Das heißt er fährt einfach dahin gibt /unload ein dann wird die menge abgegeben die im Truck sind falls das zuviel sind wird nur das angeliefert was benötigt wird und der rest bleibt dann ja drinnen wen es zuviel war..
CMD:unload(playerid, params[])
{
new vehicleid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(GetVehicleTrailer(vehicleid)) == 584)
{
new string[128], int;
if(sscanf(params, "i", int))return SendClientMessage(playerid, COLOR_GREY, "{247BA6}* Benutze {33AA33}/unload [Menge]");
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du befindest dich in keinem Tanker.");
if(!(Spieler[playerid][pFraktion] == 13))return SendClientMessage(playerid, COLOR_GREY, "Du bist kein Member der Transport GmbH.");
if(int < 1 || int > 2500)return SendClientMessage(playerid, COLOR_GREY, "** Du kannst nur maximal 2500 Liter abladen.");
if(int > Vehicle[GetVehicleTrailer(vehicleid)][vehProds])return SendClientMessage(playerid, COLOR_GREY, "** Soviel Liter hast du nicht dabei.");
for(new it=1;it<MAX_TANKEN;it++)
{
if(Tanke[it][tCreated] == 1)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, Tanke[it][tPickupX], Tanke[it][tPickupY], Tanke[it][tPickupZ]))
{
if(Tanke[it][tLiter] == Tanke[it][tMaxLiter])return SendClientMessage(playerid, COLOR_GREY, "** Diese Tankstelle hat bereits die maximale Anzahl an Benzin.");
new cash = Tanke[it][tKasse];
new kosten = (Tanke[it][tBenzinAnkauf]*int);
if(cash < kosten)return SendClientMessage(playerid, COLOR_GREY, "** Die Kasse hat nicht genügend Geld für das Benzin.");
if(int > (Tanke[it][tMaxLiter]-Tanke[it][tLiter]))return SendClientMessage(playerid, COLOR_GREY, "** Soviel Liter kann diese Tankstelle nicht haben.");
Vehicle[GetVehicleTrailer(vehicleid)][vehProds] -= int;
new Float:intfloat = float(int);
new Float:add = floatadd(intfloat, Tanke[it][tLiter]);
Tanke[it][tLiter] = add;
format(string, sizeof(string), "* Du hast der Tankstelle %d Liter für $%d verkauft.", int, kosten);
Tanke[it][tKasse] -= kosten;
GiveMoney(playerid, kosten);
SendClientMessage(playerid, COLOR_GREEN, string);
UpdateTankLabel(it, Tanke[it][tOwned]);
}
}
}
}
return 1;
}
Alles anzeigen
Habe ich verstanden werde so nun auch weiter arbeiten.
Dachte halt nur das es sein muss das man den nochmal auslesen muss dachte aber nicht das es überschrieben wird?
Habe das nun beim Haus system auch ausgebessert.
Klar möchte ich damit arbeiten aber irgendwie spinnt das bei mir bei mir wird das alles 5 mal ausgegeben ?
ocmd:lieferung(playerid)
{
new string[1024];
for(new i; i<sizeof(Tanke); i++)
{
#define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
format(string,sizeof(string),"Tankstelle\tBenötigt\tBezugspreis\n %s\n%s\t%d/%d Liter", string, Tanke[i][tName], getProdukts(i), floatround(Tanke[i][tMaxLiter]));
}
ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_TABLIST_HEADERS,"Transport GmbH - Tankstellen Übersicht", string,"GPS","Schließen");
#undef getProdukts
return 1;
}
Alles anzeigen
Liegt das eventuell am string oder an was kann das liegen?
Es stand ja immer da das 6/6 Tankstellen geladen wurden wen ich ingame gehe sind die Tankstellen auch da an der Richtigen Position der Name ect.
public LoadTanken()
{
new rows, count;
cache_get_row_count(rows);
for(new i=0;i<rows;i++)
{
new tankeID = cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
if(tankeID < MAX_TANKEN)
{
Tanke[tankeID][tCreated] = 1;
cache_get_value_name_int(i, "id", Tanke[tankeID][tdbID]);
cache_get_value_name_float(i, "PickupX", Tanke[tankeID][tPickupX]);
cache_get_value_name_float(i, "PickupY", Tanke[tankeID][tPickupY]);
cache_get_value_name_float(i, "PickupZ", Tanke[tankeID][tPickupZ]);
cache_get_value_name(i, "Besitzer", Tanke[tankeID][tBesitzer], MAX_PLAYER_NAME);
cache_get_value_name(i, "Name", Tanke[tankeID][tName], 64);
cache_get_value_name(i, "Teilhaber", Tanke[tankeID][tTeilhaber], MAX_PLAYER_NAME);
cache_get_value_name_int(i, "Preis", Tanke[tankeID][tPreis]);
cache_get_value_name_int(i, "Lock", Tanke[tankeID][tLock]);
cache_get_value_name_int(i, "PreisProLiter", Tanke[tankeID][tPreisProLiter]);
cache_get_value_name_float(i, "Liter", Tanke[tankeID][tLiter]);
cache_get_value_name_float(i, "MaxLiter", Tanke[tankeID][tMaxLiter]);
cache_get_value_name_int(i, "Kasse", Tanke[tankeID][tKasse]);
cache_get_value_name_int(i, "BenzinAnkauf", Tanke[tankeID][tBenzinAnkauf]);
cache_get_value_name_int(i, "Owned", Tanke[tankeID][tOwned]);
Tanke[tankeID][tText] = CreateDynamic3DTextLabel("Laedt ...", COLOR_WHITE, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 20.0);
if(Tanke[tankeID][tOwned] == 1)
{
Tanke[tankeID][tPickup] = CreatePickup(TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
}
else if(Tanke[tankeID][tOwned] == 0)
{
Tanke[tankeID][tPickup] = CreatePickup(NO_TANK_OWNER, 1, Tanke[tankeID][tPickupX], Tanke[tankeID][tPickupY], Tanke[tankeID][tPickupZ], 0);
}
UpdateTankLabel(tankeID, Tanke[tankeID][tOwned]);
count++;
}
}
printf("[LOAD] Tankstellen geladen: %d/%d", count, MAX_TANKEN);
return 1;
}
Alles anzeigen
So sieht das aus es wird alles erstellt alles geladen laut den Sprint auch die Namen. Es steht überall der Name richtig von den Tankstellen.
Hallo,
Habe das Problem habe ingesamt momentan 6 Tankstellen.
Werden geladen alles kein Problem.
Die Sache ist nun wen ich /lieferung ausführe wird mir kaum was angezeigt außer von der letzten Tankstelle die ich in der DB drinnen habe.
ocmd:lieferung(playerid)
{
new string[1024];
for(new i; i<sizeof(Tanke); i++)
{
#define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
format(string,sizeof(string),"%s\n%s\t\t\t\tBenötigt: %d/%d Liter", string, Tanke[i][tName], getProdukts(i), floatround(Tanke[i][tMaxLiter]));
}
ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht", string,"GPS","Schließen");
#undef getProdukts
return 1;
}
Alles anzeigen
Datenkbank:
Dialog:
Ja,
Ich habe es falsch ausgedrückt bin total müde sry.
ocmd:lieferung(playerid)
{
#define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
#define getTankName(%0) (Tanke[%0][tName])
new string[550];
format(string,sizeof(string),"%s\t\t\t\tBenötigt: %d Liter\n%s\t\t\t\tBenötigt: %d Liter\n%s\t\t\tBenötigt: %d Liter\n",
getTankName(1), getProdukts(1), getTankName(2), getProdukts(2), getTankName(3), getProdukts(3));
format(string,sizeof(string),"%sVerona Oil Tanke\t\t\tBenötigt: %d Liter\nTemple Tanke\t\t\t\tBenötigt: %d Liter\nFlint County\t\t\t\tBenötigt: %d Liter\n",
string, getProdukts(4), getProdukts(5), getProdukts(6));
format(string,sizeof(string),"%sEaster Basin Tanke\t\t\tBenötigt: %d Liter\nDoherty Tanke\t\t\t\tBenötigt: %d Liter\nJuniper Hollow Tanke\t\t\tBenötigt: %d Liter",
string, getProdukts(7), getProdukts(8), getProdukts(9));
ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht",string,"GPS","Schließen");
#undef getProdukts
#undef getTankName
return 1;
}
Alles anzeigen
Habe das nun so gemacht
Hey,
Habe kurz eine Frage wie lasse ich am besten von jeder tankstelle den Namen auslesen lasse also nach ID nach?
enum:
enum e_Tanke
{
tCreated,
Float:tPickupX,
Float:tPickupY,
Float:tPickupZ,
tPickup,
tBesitzer[MAX_PLAYER_NAME],
tOwned,
tName[32],
tPreis,
tTeilhaber[MAX_PLAYER_NAME],
tLock,
tPreisProLiter,
Float:tLiter,
Float:tMaxLiter,
tdbID,
tKasse,
Text3D:tText,
tBenzinAnkauf,
}
new Tanke[MAX_TANKEN][e_Tanke];
Alles anzeigen
ocmd:lieferung(playerid)
{
new vehicleid = GetPlayerVehicleID(playerid);
if((GetVehicleModel(vehicleid) == 515) && GetVehicleModel(GetVehicleTrailer(vehicleid)) == 435)
{
#define getProdukts(%0) (Biz[%0][bMaxProdukte]-Biz[%0][bProdukte])
new string[550];
format(string,sizeof(string),"Ammunation LS\t\t\t\tBenötigt: %i Produkte\nBurgershot Hauptsitz\t\t\tBenötigt: %i Produkte\nClucking Bell Hauptsitz\t\t\tBenötigt: %i Produkte\n",
getProdukts(1), getProdukts(2), getProdukts(3));
format(string,sizeof(string),"%sPizza Stack Hauptsitz\t\t\tBenötigt: %i Produkte\n24/7 Supermarkt Hauptsitz\t\tBenötigt: %i Produkte\nPaintball Arena\t\t\t\tBenötigt: %i Produkte\nAdvertise Biz\t\t\t\tBenötigt: %i Produkte\n",
string, getProdukts(4), getProdukts(5), getProdukts(6), getProdukts(7));
ShowPlayerDialog(playerid, DIALOG_FIRMEN, DIALOG_STYLE_LIST,"Transport GmbH - Firmen Übersicht",string,"GPS","Schließen");
#undef getProdukts
}
else
{
if((GetVehicleModel(vehicleid) == 514) && GetVehicleModel(GetVehicleTrailer(vehicleid)) == 584)
{
#define getProdukts(%0) (floatround(Tanke[%0][tMaxLiter]-floatround(Tanke[%0][tLiter])))
new string[550];
format(string,sizeof(string),"Polizei LS\t\t\t\tBenötigt: %d Liter\nIdlewood Tanke\t\t\t\tBenötigt: %d Liter\nLS Airport Tanke\t\t\tBenötigt: %d Liter\n",
getProdukts(1), getProdukts(2), getProdukts(3));
format(string,sizeof(string),"%sVerona Oil Tanke\t\t\tBenötigt: %d Liter\nTemple Tanke\t\t\t\tBenötigt: %d Liter\nFlint County\t\t\t\tBenötigt: %d Liter\n",
string, getProdukts(4), getProdukts(5), getProdukts(6));
format(string,sizeof(string),"%sEaster Basin Tanke\t\t\tBenötigt: %d Liter\nDoherty Tanke\t\t\t\tBenötigt: %d Liter\nJuniper Hollow Tanke\t\t\tBenötigt: %d Liter",
string, getProdukts(7), getProdukts(8), getProdukts(9));
ShowPlayerDialog(playerid, DIALOG_TANKSTELLEN, DIALOG_STYLE_LIST,"Transport GmbH - Tankstellen Übersicht",string,"GPS","Schließen");
#undef getProdukts
}
}
return 1;
}
Alles anzeigen
Der Befehl dafür.
Hä? Die Erkärung ist auch komisch.
Es per befehl also /Confighouse zeigt er mir alles an die Kategorie die ich anklicke sollte dann alles anzeigt werden per msgbox wer alles eingemietet ist??
Habe es so drinne jz
if(dialogid == DIALOG_CONFIGHOUSE)
{
if(response)
{
new haus = IsPlayerHouse(playerid);
if(haus != INVALID_HOUSE_KEY)
{
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Haus[haus][EnterX], Haus[haus][EnterY], Haus[haus][EnterZ]))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht an deinem Haus (außerhalb).");
if(listitem == 0) //Haus Verkaufen
{
ShowPlayerDialog(playerid, DIALOG_SELLHOUSE, DIALOG_STYLE_MSGBOX, "Hausbearbeitung","Möchtest du wirklich dein Haus verkaufen?\nWen du dir sicher bist drücke auf Bestätigen um das Haus zu verkaufen!\nDu erhältst die hälfte des Kaufpreises.", "Bestätigen", "Abbrechen");
}
if(listitem == 1) //Haustür
{
if(Haus[haus][hLock] == 1)
{
Haus[haus][hLock] = 0;
GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
UpdateHouseLabel(haus, Haus[haus][hOwned]);
}
else if(Haus[haus][hLock] == 0)
{
Haus[haus][hLock] = 1;
GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
UpdateHouseLabel(haus, Haus[haus][hOwned]);
}
}
if(listitem == 2) //Mietbar
{
new i = IsPlayerHouse(playerid);
if(Haus[i][hMieten] == 1)
{
Haus[i][hMieten] = 0;
GameTextForPlayer(playerid, "~w~Miete ~r~deaktiviert", 3000, 6);
UpdateHouseLabel(i, Haus[i][hOwned]);
SaveHouse(i);
}
else if(Haus[i][hMieten] == 0)
{
Haus[i][hMieten] = 1;
GameTextForPlayer(playerid, "~w~Miete ~g~aktiviert", 3000, 6);
UpdateHouseLabel(i, Haus[i][hOwned]);
SaveHouse(i);
}
}
if(listitem == 3) //Mietbar
{
ShowPlayerDialog(playerid, DIALOG_SET_RENT, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe den neuen Mietpreis an.", "Bestätigen", "Abbrechen");
}
if(listitem == 5) //Mieter Auflisten
{
for(new i;i<MAX_HOUSES;i++)
{
if(strcmp(Haus[i][hBesitzer],GetName(playerid),true)==0)
{
break;
}
}
new string[1024];
if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
{
for(new x;x<MAX_PLAYERS;x++)
{
if(IsPlayerConnected(x)
{
if(PlayerInfo[x][pHouseKey]==i&&if(strcmp(GetName(x),Haus[i][hBesitzer]!=0)
{
format(string,sizeof(string),"%s\nSpieler: %s ist Mieter dieses Hauses",string,GetName(x));
}
}
}
}
ShowPlayerDialog(playerid,dialogidselbereinfügen,DIALOG_STYLE_MSGBOX,"Mieter",string,"Weiter","");
}
if(listitem == 6) //Hauskasse
{
ShowPlayerDialog(playerid, DIALOG_HAUSKASSE, DIALOG_STYLE_LIST, "Hausbearbeitung", "Geld einzahlen\nGeld auszahlen\nAktueller Stand\nHeal Upgrade", "Bestätigen", "Abbrechen");
}
if(listitem == 7) //Beschreibung
{
ShowPlayerDialog(playerid, DIALOG_HAUS_BESCHREIBUNG, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe eine neue Beschreibung an.\nDieser Vorgang kostet dich 1.000.000$.\nDie Headadministration behält es sich vor, die Beschreibung bei Missbrauch zu entfernen.", "Bestätigen", "Abbrechen");
}
}
}
}
Alles anzeigen
if(dialogid == DIALOG_CONFIGHOUSE)
{
if(response)
{
new haus = IsPlayerHouse(playerid);
if(haus != INVALID_HOUSE_KEY)
{
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Haus[haus][EnterX], Haus[haus][EnterY], Haus[haus][EnterZ]))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht an deinem Haus (außerhalb).");
if(listitem == 0) //Haus Verkaufen
{
ShowPlayerDialog(playerid, DIALOG_SELLHOUSE, DIALOG_STYLE_MSGBOX, "Hausbearbeitung","Möchtest du wirklich dein Haus verkaufen?\nWen du dir sicher bist drücke auf Bestätigen um das Haus zu verkaufen!\nDu erhältst die hälfte des Kaufpreises.", "Bestätigen", "Abbrechen");
}
if(listitem == 1) //Haustür
{
if(Haus[haus][hLock] == 1)
{
Haus[haus][hLock] = 0;
GameTextForPlayer(playerid, "~w~Haus ~g~aufgeschlossen", 3000, 6);
UpdateHouseLabel(haus, Haus[haus][hOwned]);
}
else if(Haus[haus][hLock] == 0)
{
Haus[haus][hLock] = 1;
GameTextForPlayer(playerid, "~w~Haus ~r~abgeschlossen", 3000, 6);
UpdateHouseLabel(haus, Haus[haus][hOwned]);
}
}
if(listitem == 2) //Mietbar
{
new i = IsPlayerHouse(playerid);
if(Haus[i][hMieten] == 1)
{
Haus[i][hMieten] = 0;
GameTextForPlayer(playerid, "~w~Miete ~r~deaktiviert", 3000, 6);
UpdateHouseLabel(i, Haus[i][hOwned]);
SaveHouse(i);
}
else if(Haus[i][hMieten] == 0)
{
Haus[i][hMieten] = 1;
GameTextForPlayer(playerid, "~w~Miete ~g~aktiviert", 3000, 6);
UpdateHouseLabel(i, Haus[i][hOwned]);
SaveHouse(i);
}
}
if(listitem == 3) //Mietbar
{
ShowPlayerDialog(playerid, DIALOG_SET_RENT, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe den neuen Mietpreis an.", "Bestätigen", "Abbrechen");
}
if(listitem == 5) //Mieter Auflisten
{
for(new i;i<MAX_HOUSES;i++)
{
if(strcmp(Haus[i][hBesitzer],SpielerName(playerid),true)==0)
{
break;
}
}
}
if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
{
for(new x;x<MAX_PLAYERS;x++)
{
if(IsPlayerConnected(x)
{
if(PlayerInfo[x][pHouseKey] == i && if(strcmp(SpielerName(x), Haus[i][hBesitzer]! = 0)
{
format(string, sizeof string, "%s\nSpieler: %s (ID: %d)", string, SpielerName(x), playerid);
ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST,DIALOG_STYLE_MSGBOX, "Mieter", string, "Schließen", "");
}
}
}
}
if(listitem == 6) //Hauskasse
{
ShowPlayerDialog(playerid, DIALOG_HAUSKASSE, DIALOG_STYLE_LIST, "Hausbearbeitung", "Geld einzahlen\nGeld auszahlen\nAktueller Stand\nHeal Upgrade", "Bestätigen", "Abbrechen");
}
if(listitem == 7) //Beschreibung
{
ShowPlayerDialog(playerid, DIALOG_HAUS_BESCHREIBUNG, DIALOG_STYLE_INPUT, "Hausbearbeitung","Gebe eine neue Beschreibung an.\nDieser Vorgang kostet dich 1.000.000$.\nDie Headadministration behält es sich vor, die Beschreibung bei Missbrauch zu entfernen.", "Bestätigen", "Abbrechen");
}
}
}
}
Alles anzeigen
Habe das jetzt eingefügt
if(listitem == 5) //Mieter Auflisten
{
for(new i;i<MAX_HOUSES;i++)
{
if(strcmp(Haus[i][hBesitzer],SpielerName(playerid),true)==0)
{
break;
}
}
if(i!=MAX_HOUSES&&i!=INVALID_HOUSE_KEY)
{
for(new x;x<MAX_PLAYERS;x++)
{
if(IsPlayerConnected(x)
{
if(PlayerInfo[x][pHouseKey]==i&&if(strcmp(GetName(x),Haus[i][hBesitzer]!=0)
{
format(mstring, sizeof mstring, "%s\nSpieler: %s (ID: %d)", string, SpielerName(x), playerid);
ShowPlayerDialog(playerid, DIALOG_HOUSE_MIETERLIST,DIALOG_STYLE_MSGBOX, "Mieter", string, "Schließen", "");
}
}
}
}
Alles anzeigen
Es stürzt ab wen ich Kompeilen.
stock GetNextHouseID(playerid)
{
new houseID = INVALID_HOUSE_KEY;
for(new i=1;i<MAX_HOUSES;i++)
{
if(Haus[i][hCreated] != 0)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ]) || (IsPlayerInRangeOfPoint(playerid, 10.0, Haus[i][ExitX], Haus[i][ExitY], Haus[i][ExitZ]) && GetPlayerVirtualWorld(playerid) == i))
{
houseID = i;
}
}
}
return houseID;
}
Alles anzeigen
ocmd:buyhouse(playerid)
{
if(PlayerInfo[playerid][pHouseKey] != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du bist in einem Haus eingemietet. Benutze /unrent.");
new string[128];
for(new i=1;i<MAX_HOUSES;i++)
{
if(Haus[i][hCreated] == 1)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ]))
{
if(PlayerInfo[playerid][pPersonalausweis] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt keinen Personalausweis.");
if(strcmp(Haus[i][hBesitzer], SpielerName(playerid), false) == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Haus gehört bereits dir.");
if(strcmp(Haus[i][hBesitzer], "-", false))return SendClientMessage(playerid, COLOR_GREY, "Das Haus ist bereits verkauft.");
new count = CountPlayerHouses(playerid);
if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
if((GetPlayerMoneys(playerid) - Haus[i][hPreis]) < 0)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
format(string, sizeof(string), "Herzlichen Glückwunsch zu deinem neuen Haus. (-$%d)", Haus[i][hPreis]);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
GivePlayerMoneys(playerid, -Haus[i][hPreis]);
DestroyPickup(Haus[i][hPickup]);
Haus[i][hPickup] = CreatePickup(OWNER_PICKUP, 1, Haus[i][EnterX], Haus[i][EnterY], Haus[i][EnterZ], -1);
strmid(Haus[i][hBesitzer], GetName(playerid), 0, strlen(GetName(playerid)), 24);
Haus[i][hOwned] = 1;
UpdateHouseLabel(i, Haus[i][hOwned]);
PlayerInfo[playerid][pHouseKey] = i;
SaveHouse(i);
PlayerUpdate(playerid);
return 1;
}
}
}
return 1;
}
Alles anzeigen
ocmd:renthouse(playerid)
{
if(PlayerInfo[playerid][pHouseKey] != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du bist bereits in einem Haus eingemietet!");
new count = CountPlayerHouses(playerid);
if(count > 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
if(IsPlayerHouse(playerid) != INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt bereits ein Haus.");
new i = GetNextHouseID(playerid);
if(i == INVALID_HOUSE_KEY)return SendClientMessage(playerid, COLOR_GREY, "Es befindet sich kein Haus zum mieten in deiner Nähe!");
if(Haus[i][hMieten] == 0)return SendClientMessage(playerid, COLOR_GREY, "Dieses Haus lässt das Mieten nicht zu.");
if(GetPlayerMoneys(playerid) < Haus[i][hMietPreis])return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld dabei.");
PlayerInfo[playerid][pHouseKey] = i;
GivePlayerMoneys(playerid, -Haus[i][hMietPreis]);
Haus[i][hKasse] += Haus[i][hMietPreis];
SendClientMessage(playerid, COLOR_GREEN, "Du hast dich erfolgreich in dieses Haus eingemietet.");
return 1;
}
Alles anzeigen
Das ist der befehl sich einzumieten.
Das heißt wen er sich einmietet wird im der HouseKey gegeben.
Ebernso wen er sich ausmietet wird ihm der HouseKey entzogen
das hängt ebenso mit Buyhouse zusammen die frage ist nun soll man MieterKey anlegen das es getrennt läuft?