Beiträge von Jeffry
-
-
Das laggt am Anfang so, weil diese Funktionen die du da verwendest (mysql_GetInt etc) sehr sehr schlecht sind (ressourcenlastig).
Ändere außerdem das OnGameModeInit zu:
public OnGameModeInit()
{
Connect_To_Database();
mysql_debug(1);
LoadHouses();
return 1;
}
Sonst erstellt es dir keine Labels/Pickups.Wie lange lädt es denn eigentlich?
Schreibe den Befehl so, und warte dann ab, bis die Erfolgs-Meldung im Chat kommt. Siehst du dann auch das Pickup und das Label?
Die Zeit die du warten musst ist die Zeit, die du auch zum Server-Start warten musst, plus ein Haus.
ocmd:hauserstellen(playerid,params[])
{
if(SpielerInfo[playerid][pAlevel] >= 5)
{
new Preis,Level,AZimmer = 0, MZimmer,Beschreibung[MaxHausBeschreibung];
if(sscanf(params,"iiis[100]",Preis, Level, MZimmer, Beschreibung))return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Benutze: /Hauserstellen [Preis] [Level] [M.Zimmeranzahl] [Beschreibung]");
if(strlen(Beschreibung) < MinHausBeschreibung || strlen(Beschreibung) > MaxHausBeschreibung)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Beschreibung ist zu kurz oder zu lang!(Mind. 4 Zeichen || Max. 12 Zeichen)");
if(Preis < MinHausPreis || Preis > MaxHausPreis)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Preis ist zu hoch oder zu tief!(Mind. 1$ || Max. 1000000$)");
if(MZimmer < MinHausZimmer || MZimmer > MaxHausZimmer)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Zimmer sind zu wenig oder zu viel!(Mind. 1 Zimmer || Max. 100 Zimmer)");
if(Level < MinHausLevel || Level > MaxHausLevel)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Level ist zu hoch oder zu niedrig!(Mind. Level 1 || Max. Level 99)");
{
new Float:x,Float:y,Float:z,SQL[300];
GetPlayerPos(playerid, x, y, z); //Die Hauspostion/Spielerpostion wird geholt.
format(SQL, sizeof(SQL), "INSERT INTO hauser (Beschreibung, Preis, AZimmer, MZimmer , Level, HausPosX, HausPosY, HausPosZ) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f')",Beschreibung, Preis, AZimmer, MZimmer, Level, x, y, z);
mysql_query(SQL);
for(new Var; Var < MaxHaus; Var++)
{
DestroyHouse(Var);
}
LoadHouses();
SendClientMessage(playerid, 0xFF0000FF, "[H-INFO] {FFFFFF}Das Haus wurde erfolgreich erstellt!");
printf("[H-INFO]Es wurde ein Haus erstellt!");
}
}
return 1;
} -
Ok, dann versuche es so. Du musst eigentlich nichts speichern, da du mit GetPlayerName den Name ja bekommst.
Löschen:
Spoiler anzeigen for(new i = 0; i < 3; i++)
{
new Autodatei[100],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",name,i);
if(dini_Exists(Autodatei))
{
new Float:vhp;
GetVehicleHealth(Spielercar[playerid][i],vhp);
dini_IntSet(Autodatei,"Farbe1",Autos[playerid][i][Farbe1]);
dini_IntSet(Autodatei,"Farbe2",Autos[playerid][i][Farbe2]);
dini_IntSet(Autodatei,"Paintjob",Autos[playerid][i][Paintjob]);
dini_FloatSet(Autodatei,"posx",Autos[playerid][i][posx]);
dini_FloatSet(Autodatei,"posy",Autos[playerid][i][posy]);
dini_FloatSet(Autodatei,"posz",Autos[playerid][i][posz]);
dini_FloatSet(Autodatei,"posa",Autos[playerid][i][posa]);
dini_FloatSet(Autodatei,"HP",vhp);
dini_IntSet(Autodatei,"Spoiler",GetVehicleComponentInSlot(Spielercar[playerid][i],0));
dini_IntSet(Autodatei,"Hood",GetVehicleComponentInSlot(Spielercar[playerid][i],1));
dini_IntSet(Autodatei,"Roof",GetVehicleComponentInSlot(Spielercar[playerid][i],2));
dini_IntSet(Autodatei,"Sideskirt",GetVehicleComponentInSlot(Spielercar[playerid][i],3));
dini_IntSet(Autodatei,"Lamps",GetVehicleComponentInSlot(Spielercar[playerid][i],4));
dini_IntSet(Autodatei,"Nitro",GetVehicleComponentInSlot(Spielercar[playerid][i],5));
dini_IntSet(Autodatei,"Exhaust",GetVehicleComponentInSlot(Spielercar[playerid][i],6));
dini_IntSet(Autodatei,"Wheels",GetVehicleComponentInSlot(Spielercar[playerid][i],7));
dini_IntSet(Autodatei,"Stereo",GetVehicleComponentInSlot(Spielercar[playerid][i],8));
dini_IntSet(Autodatei,"Hydraulics",GetVehicleComponentInSlot(Spielercar[playerid][i],9));
dini_IntSet(Autodatei,"FrontBumper",GetVehicleComponentInSlot(Spielercar[playerid][i],10));
dini_IntSet(Autodatei,"RearBumper",GetVehicleComponentInSlot(Spielercar[playerid][i],11));
dini_IntSet(Autodatei,"VentRight",GetVehicleComponentInSlot(Spielercar[playerid][i],12));
dini_IntSet(Autodatei,"VentLeft",GetVehicleComponentInSlot(Spielercar[playerid][i],13));
DestroyVehicle(Spielercar[playerid][i]);
}
}Laden:
Spoiler anzeigen for(new i = 0; i < 3; i++)
{
new Autodatei[100],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",name,i);
if(dini_Exists(Autodatei))
{
Autos[playerid][i][modelid] = dini_Int(Autodatei,"modelid");
Autos[playerid][i][HP] = dini_Int(Autodatei,"HP");
Autos[playerid][i][Farbe1] = dini_Int(Autodatei,"Farbe1");
Autos[playerid][i][Farbe2] = dini_Int(Autodatei,"Farbe2");
Autos[playerid][i][Paintjob] = dini_Int(Autodatei,"Paintjob");
Autos[playerid][i][posx] = dini_Int(Autodatei,"posx");
Autos[playerid][i][posy] = dini_Int(Autodatei,"posy");
Autos[playerid][i][posz] = dini_Int(Autodatei,"posz");
Autos[playerid][i][posa] = dini_Int(Autodatei,"posa");
Autos[playerid][i][Spoiler] = dini_Int(Autodatei,"Spoiler");
Autos[playerid][i][Wheels] = dini_Int(Autodatei,"Wheels");
Autos[playerid][i][Nitro] = dini_Int(Autodatei,"Nitro");
Autos[playerid][i][Roof] = dini_Int(Autodatei,"Roof");
Autos[playerid][i][Hood] = dini_Int(Autodatei,"Hood");
Autos[playerid][i][Sideskirt] = dini_Int(Autodatei,"Sideskirt");
Autos[playerid][i][Lamps] = dini_Int(Autodatei,"Lamps");
Autos[playerid][i][Exhaust] = dini_Int(Autodatei,"Exhaust");
Autos[playerid][i][Stereo] = dini_Int(Autodatei,"Stereo");
Autos[playerid][i][Hydraulics] = dini_Int(Autodatei,"Hydraulics");
Autos[playerid][i][VentRight] = dini_Int(Autodatei,"VentRight");
Autos[playerid][i][VentLeft] = dini_Int(Autodatei,"VentLeft");
Autos[playerid][i][FrontBumper] = dini_Int(Autodatei,"FrontBumper");
Autos[playerid][i][RearBumper] = dini_Int(Autodatei,"RearBumper");
Spielercar[playerid][i] = CreateVehicle(Autos[playerid][i][modelid],Autos[playerid][i][posx],Autos[playerid][i][posy],Autos[playerid][i][posz]+1.5,Autos[playerid][i][posa],-1,-1,-1);
SetVehicleNumberPlate(Spielercar[playerid][i],name);
SetVehicleToRespawn(Spielercar[playerid][i]);
SetVehicleParamsForPlayer(Spielercar[playerid][i],playerid,0,0);
if(Autos[playerid][i][HP] > 250)
{
SetVehicleHealth(Spielercar[playerid][i],Autos[playerid][i][HP]);
}
else
{
SetVehicleHealth(Spielercar[playerid][i],255.0);
}
if(Autos[playerid][i][Paintjob] >= 0)
{
ChangeVehiclePaintjob(Spielercar[playerid][i],Autos[playerid][i][Paintjob]);
}
if(Autos[playerid][i][Farbe1] >= 0 || Autos[playerid][i][Farbe2] >= 0)
{
ChangeVehicleColor(Spielercar[playerid][i],Autos[playerid][i][Farbe1],Autos[playerid][i][Farbe2]);
}
if(Autos[playerid][i][Spoiler] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Spoiler]); }
if(Autos[playerid][i][Hood] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Hood]); }
if(Autos[playerid][i][Roof] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Roof]); }
if(Autos[playerid][i][Sideskirt] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Sideskirt]); }
if(Autos[playerid][i][Lamps] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Lamps]); }
if(Autos[playerid][i][Nitro] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Nitro]); }
if(Autos[playerid][i][Exhaust] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Exhaust]); }
if(Autos[playerid][i][Wheels] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Wheels]); }
if(Autos[playerid][i][Stereo] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Stereo]); }
if(Autos[playerid][i][Hydraulics] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][Hydraulics]); }
if(Autos[playerid][i][FrontBumper] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][FrontBumper]); }
if(Autos[playerid][i][RearBumper] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][RearBumper]); }
if(Autos[playerid][i][VentRight] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][VentRight]); }
if(Autos[playerid][i][VentLeft] >= 1000) { AddVehicleComponent(Spielercar[playerid][i],Autos[playerid][i][VentLeft]); }
}
}Erstellen:
Spoiler anzeigen public AutoKaufenneu(playerid,autoid)
{
for(new i = 0; i < sizeof Buycars; i++)
{
if(GetPlayerVehicleID(playerid) == kaufauto[i])
{
for(new j = 0; j < sizeof Autohausneu; j++)
{
if(!strcmp(Autohausneu[j][Name],Buycars[i][Autohausname],true))
{
new Autodatei[100],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Autodatei,sizeof(Autodatei),"/Autos/%s_Auto_%d.ini",name,autoid);
dini_Create(Autodatei);
dini_Set(Autodatei,"Name",Buycars[i][Name]);
dini_IntSet(Autodatei,"modelid",Buycars[i][modelid]);
dini_FloatSet(Autodatei,"HP",1000.00);
dini_FloatSet(Autodatei,"posx",Autohausneu[j][spawnx]);
dini_FloatSet(Autodatei,"posy",Autohausneu[j][spawny]);
dini_FloatSet(Autodatei,"posz",Autohausneu[j][spawnz]);
dini_FloatSet(Autodatei,"posa",Autohausneu[j][spawna]);
dini_IntSet(Autodatei,"Farbe1",1);
dini_IntSet(Autodatei,"Farbe2",1);
dini_IntSet(Autodatei,"Paintjob",1);
Spielercar[playerid][autoid] = CreateVehicle(Buycars[i][modelid],Autohausneu[j][spawnx],Autohausneu[j][spawny],Autohausneu[j][spawnz],Autohausneu[j][spawna],1,1,-1);
SetVehicleNumberPlate(Spielercar[playerid][autoid],name);
SetVehicleToRespawn(Spielercar[playerid][autoid]);
dini_IntSet(Autodatei,"Spoiler",GetVehicleComponentInSlot(Spielercar[playerid][autoid],0));
dini_IntSet(Autodatei,"Hood",GetVehicleComponentInSlot(Spielercar[playerid][autoid],1));
dini_IntSet(Autodatei,"Roof",GetVehicleComponentInSlot(Spielercar[playerid][autoid],2));
dini_IntSet(Autodatei,"Sideskirt",GetVehicleComponentInSlot(Spielercar[playerid][autoid],3));
dini_IntSet(Autodatei,"Lamps",GetVehicleComponentInSlot(Spielercar[playerid][autoid],4));
dini_IntSet(Autodatei,"Nitro",GetVehicleComponentInSlot(Spielercar[playerid][autoid],5));
dini_IntSet(Autodatei,"Exhaust",GetVehicleComponentInSlot(Spielercar[playerid][autoid],6));
dini_IntSet(Autodatei,"Wheels",GetVehicleComponentInSlot(Spielercar[playerid][autoid],7));
dini_IntSet(Autodatei,"Stereo",GetVehicleComponentInSlot(Spielercar[playerid][autoid],8));
dini_IntSet(Autodatei,"Hydraulics",GetVehicleComponentInSlot(Spielercar[playerid][autoid],9));
dini_IntSet(Autodatei,"FrontBumper",GetVehicleComponentInSlot(Spielercar[playerid][autoid],10));
dini_IntSet(Autodatei,"RearBumper",GetVehicleComponentInSlot(Spielercar[playerid][autoid],11));
dini_IntSet(Autodatei,"VentRight",GetVehicleComponentInSlot(Spielercar[playerid][autoid],12));
dini_IntSet(Autodatei,"VentLeft",GetVehicleComponentInSlot(Spielercar[playerid][autoid],13));
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid,1);
GivePlayerMoney(playerid,-Buycars[i][Preis]);
Autohausneu[j][Kasse]+=Buycars[i][Preis];
Autos[playerid][autoid][modelid] = dini_Int(Autodatei,"modelid");
Autos[playerid][autoid][HP] = dini_Int(Autodatei,"HP");
Autos[playerid][autoid][Farbe1] = dini_Int(Autodatei,"Farbe1");
Autos[playerid][autoid][Farbe2] = dini_Int(Autodatei,"Farbe2");
Autos[playerid][autoid][Paintjob] = dini_Int(Autodatei,"Paintjob");
Autos[playerid][autoid][posx] = dini_Int(Autodatei,"posx");
Autos[playerid][autoid][posy] = dini_Int(Autodatei,"posy");
Autos[playerid][autoid][posz] = dini_Int(Autodatei,"posz");
Autos[playerid][autoid][posa] = dini_Int(Autodatei,"posa");
Autos[playerid][autoid][Spoiler] = dini_Int(Autodatei,"Spoiler");
Autos[playerid][autoid][Wheels] = dini_Int(Autodatei,"Wheels");
Autos[playerid][autoid][Nitro] = dini_Int(Autodatei,"Nitro");
Autos[playerid][autoid][Roof] = dini_Int(Autodatei,"Roof");
Autos[playerid][autoid][Hood] = dini_Int(Autodatei,"Hood");
Autos[playerid][autoid][Sideskirt] = dini_Int(Autodatei,"Sideskirt");
Autos[playerid][autoid][Lamps] = dini_Int(Autodatei,"Lamps");
Autos[playerid][autoid][Exhaust] = dini_Int(Autodatei,"Exhaust");
Autos[playerid][autoid][Stereo] = dini_Int(Autodatei,"Stereo");
Autos[playerid][autoid][Hydraulics] = dini_Int(Autodatei,"Hydraulics");
Autos[playerid][autoid][VentRight] = dini_Int(Autodatei,"VentRight");
Autos[playerid][autoid][VentLeft] = dini_Int(Autodatei,"VentLeft");
Autos[playerid][autoid][FrontBumper] = dini_Int(Autodatei,"FrontBumper");
Autos[playerid][autoid][RearBumper] = dini_Int(Autodatei,"RearBumper");
}
}
}
}
return 1;
}Wobei auch hier wieder zu beachten ist, dass du einmal Spielercar und einmal Autos verwendest.
-
Wie sieht denn so ein Nummernschild aus? Was für ein Text steht da drin?
-
Ändere den Befehl hierzu ab:
if(!strcmp("/park", cmdtext, true))
{
new Float:x,Float:y,Float:z,Float:a,Autodatei[100];
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Grau,"Du sitzt in keinem Fahrzeug.");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid,Grau,"Du bist nicht der Fahrer dieses Fahrzeugs.");
for(new i = 0; i < sizeof(Spielercar[]); i++)
{
if(IsPlayerInVehicle(playerid,Spielercar[playerid][i]))
{
GetVehiclePos(Spielercar[playerid][i],x,y,z);
GetVehicleZAngle(Spielercar[playerid][i],a);
Autos[playerid][i][posx] = x;
Autos[playerid][i][posy] = y;
Autos[playerid][i][posz] = z;
Autos[playerid][i][posa] = a;
//Hier musst du noch den Pfad angeben!
format(Autodatei, sizeof(Autodatei), "..."); //<=
dini_FloatSet(Autodatei,"posx",Autos[playerid][i][posx]);
dini_FloatSet(Autodatei,"posy",Autos[playerid][i][posy]);
dini_FloatSet(Autodatei,"posz",Autos[playerid][i][posz]);
dini_FloatSet(Autodatei,"posa",Autos[playerid][i][posa]);
SendClientMessage(playerid,Grün,"Fahrzeug erfolgreich umgeparkt.");
return 1;
}
}
return SendClientMessage(playerid,Grau,"Dieser Wagen gehört dir nicht.");
}Was ich mich halt frage, warum du einmal Spielercar und einmal Autos verwendest.
-
Nein, im Timer. Einfach nach oben verschieben, dass es das erste ist, was der Timer macht.
-
Hast du es mal mit einem anderen Material-Index außer 0 versucht?
Zum Beispiel mit 1:
SetObjectMaterial(CreateObject(3994, 1479.55469, -1592.28906, 12.45310, 0.00000, 0.00000, 0.00000), 1, 6322, "law2_roadsb", "ws_nicepave", 0xFFFFFFFF);
SetObjectMaterial(CreateObject(4150, 1532.05469, -1662.28906, 12.46090, 0.00000, 0.00000, 0.00000), 1, 6322, "law2_roadsb", "ws_nicepave", 0xFFFFFFFF);
SetObjectMaterial(CreateObject(4163, 1469.33594, -1732.28906, 12.46090, 0.00000, 0.00000, 0.00000), 1, 6322, "law2_roadsb", "ws_nicepave", 0xFFFFFFFF);
SetObjectMaterial(CreateObject(4148, 1427.05469, -1662.28906, 12.46090, 0.00000, 0.00000, 0.00000), 1, 6322, "law2_roadsb", "ws_nicepave", 0xFFFFFFFF);Der Material-Index ist der Parameter nach dem CreateObject-Teil, also der vor der 6322.
Gehe da mal von 0 bis 9 alle durch und schaue ob und mit welchem es klappt. -
Kannst du den Code bitte richtig posten? Vor allem der erste Teil ist nicht lesbar.
Der Pawn BB Code - Die richtige Anwendung -
Ja, aber wie du an den fehlenden prints erkennen kannst wird ShowBusTextDraw nicht aufgerufen, sprich es wird nicht herunter gezählt.
Wenn du das ganz oben einfügst klappt es vielleicht schon.
-
Also das sieht für mich so aus, als wird OnPlayerTimer nicht aufgerufen, oder zumindest die Stelle nicht, an der heruntergezählt werden soll.
Füge den Teil, der herunterzählt mal ganz oben in dem Timer ein, als erstes in der Schleife.
Kommen dann mehrere prints?Wenn nicht, dann müssen wir den ganzen Timer mal debuggen.
-
Zeige bitte den Befehl.
-
// if(SpritArt..... != SPRIT_NONE)continue;
if(!MotorOn(i) continue;
zu:
if(!MotorOn(i) continue;
new model = GetVehicleModel(i);
if(model >= 400 && model <= 611) if(sprit[model-400] == SPRIT_NONE) continue;Wenn ich das Prinzip des Tanks dort richtig verstanden habe.
-
Achso. Dann so:
public LoadPresents()
{
new query[128];
query = "SELECT * FROM `presents`";
new DBResult:result = db_query(xmasdb, query);
if(db_num_rows(result) > 0)
{
do
{
new xid=getFreeXMasID();
db_get_field(result, 1, query, 24);
Present[xid][xp_X] = floatstr(query);
db_get_field(result, 2, query, 24);
Present[xid][xp_Y] = floatstr(query);
db_get_field(result, 3, query, 24);
Present[xid][xp_Z] = floatstr(query);
Present[xid][xp_ID] = CreateObject(19055, Present[xid][xp_X], Present[xid][xp_Y], Present[xid][xp_Z], 0.0, 0.0, 0.0, 100.0);
}
while(db_next_row(result));
}
return 1;
} -
public LoadPresents()
{
new query[128];
query = "SELECT * FROM `presents`";
new DBResult:result = db_query(xmasdb, query);
if(db_num_rows(result) > 0)
{
new xid=getFreeXMasID();
db_get_field(result, 1, query, 24);
Present[xid][xp_X] = floatstr(query);
db_get_field(result, 2, query, 24);
Present[xid][xp_Y] = floatstr(query);
db_get_field(result, 3, query, 24);
Present[xid][xp_Z] = floatstr(query);
Present[xid][xp_ID] = CreateObject(19055, Present[xid][xp_X], Present[xid][xp_Y], Present[xid][xp_Z], 0.0, 0.0, 0.0, 100.0);
}
return 1;
}Du musst es erst in einen String auslesen.
-
Hast du einen Code wo das angezeigt werden soll?
-
-
new art;
zu:
new art[16]; -
Schreibe die Funktion so und poste dann was im Server Log steht, wenn du in den Checkpoint fährst und sich nichts ändert.
stock ShowBusTextDraw(playerid)
{
if(IsPlayerConnected(playerid))
{
if(Spieler[playerid][pLoggedIn])
{
new string[32];
format(string, sizeof(string), "~b~Haltestelle: ~w~%d", Spieler[playerid][pBusTime]);
printf("Spieler %d: string: %s", playerid, string);
PlayerTextDrawSetString(playerid, pTextBus[playerid][0], string);
PlayerTextDrawShow(playerid, pTextBus[playerid][0]);
}
}
return 1;
}Möglicherweise wird es gar nicht aufgerufen.
-
Wie hast du diese SPRIT_GAS denn alle definiert? Poste die bitte mal.
-
Unten in mein Thread ist ein Debug code, das wird ausgegeben, daran sieht man auch das der Ordner Name nicht ganz geladen wird.
Ach ich dachte das Ding heißt so.Hast du mal versucht, die 256 von loadstr, überall wo das verwendet wird, auf 512 zu ändern?
Wenn das nicht geht, zeig mal wie du das Property setzt.Alternativ kannst du auch einfach über ein ganz normales Array arbeiten.