Am besten sind die SSD Festplatten. Haben zwar nicht viel Speicher, sollte aber ausreichen, und schreiben sehr schnell.
Beiträge von Ap0llinaris
-
-
Also so, wie ich es bereits habe?
sscanf(data, "p<|>e<iiffffii>", PrivateVehicle[playerid][i]); -
In was ändern?
-
@RedJoker
Ich habe den Enum aber so erstellt:
new PrivateVehicle[MAX_PLAYERS][MAX_PRIVATE_VEHICLES][PrivateVehicles];Also seit neuem.
-
Habe es jetzt so im Script:
stock LoadPlayerVehicles(playerid){
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++){
if(!CarSlotInUse[playerid][i]){
new sql[128], data[128];
format(sql, sizeof(sql), "SELECT * FROM `PrivateCars` WHERE `Besitzer` = '%s'", GetName(playerid));
mysql_query(sql);
mysql_store_result();
while(mysql_fetch_row_format(sql, "|")){
sscanf(data, "p<|>e<iiffffii>", PrivateVehicle[playerid][i]);
printf("%d", PrivateVehicle[playerid][i][vModelID]);
}
}
}
return 1;
}In der Datenbank stehen auch 2 Einträge, es erscheint aber nichts in der Console.
-
Hunger, Energie, Harndrang, Hygiene, Spaß, Kontakt.
-
Heißt, so?
stock LoadPlayerVehicles(playerid){
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++){
if(!CarSlotInUse[playerid][i]){
new sql[128], data[128];
format(sql, sizeof(sql), "SELECT * FROM `PrivateCars` WHERE `Besitzer` = '%s'", GetName(playerid));
mysql_query(sql);
mysql_store_result();
if(mysql_num_rows() > 0){
while(mysql_fetch_row(data)){
sscanf(data, "e<p<|>iiffffii>", PrivateVehicle[playerid][i]);
}
mysql_free_result();
}
}
}
return 1;
}
?^^ -
Hallo.
Ich bin noch nicht so gut in Sachen MySQL, kriege aber ein Login/Registrations-Script locker hin.Ich möchte ein Fahrzeug-System erstellen, worin ein Spieler je nach Definierung mehr oder weniger Fahrzeuge haben kann.
Derzeit soll ein Spieler maximal 5 Private Fahrzeuge besitzen können.
Das habe ich folgendermaßen erstellt:
#define MAX_PRIVATE_VEHICLES 5enum PrivateVehicles
{
vCarID,
vModelID,
Float:vPosX,
Float:vPosY,
Float:vPosZ,
Float:vPosRot,
vColor1,
vColor2
}
new PrivateVehicle[MAX_PRIVATE_VEHICLES][PrivateVehicles];Und nun möchte ich die Fahrzeuge beim connecten laden lassen, wo ich aber Probleme mit den MySQL Abfragen habe.
Ich möchte ja, dass wenn der Spieler z.B. 2/5 Fahrzeuge hat, nur diese erstellt werden und nur diese geladen werden.
Das habe ich folgendermaßen:
stock LoadPlayerVehicles(playerid){
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++){
if(!CarSlotInUse[playerid][x]){
new string[128];
format(string, sizeof(string), "SELECT * FROM `PrivateVehicles` WHERE `Besitzer` = '%s'", GetName(playerid));
mysql_query(string);
mysql_store_result();
if(mysql_num_rows() != 0){
PrivateVehicle[i][vModelID] = mysql_GetInt("PrivateVehicles", "ModelID", "Besitzer", GetName(playerid));
}
}
}
return 1;
}Nur ich weiß jetzt nicht, ob es richtig ist, und wie ich ggf. weiter machen soll.
Ich hoffe ihr könnt helfen.
//Edit
Habs mal geändert, wäre es so richtig?
stock LoadPlayerVehicles(playerid){
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++){
if(!CarSlotInUse[playerid][i]){
new sql[128], data[128];
format(sql, sizeof(sql), "SELECT * FROM `PrivateCars` WHERE `Besitzer` = '%s'", GetName(playerid));
mysql_query(sql);
mysql_store_result();
if(mysql_num_rows() > 0){
mysql_fetch_field_row(data, "ModelID");
PrivateVehicle[playerid][i][vModelID] = strval(data);
}
}
}
return 1;
}Danke.. ._.
-
Bald kriegt DayZ seine eigene Engine, heißt aber nicht dass Arma dann nicht mehr benutzt wird.
Das wird weiterhin online sein.
Aber eine zweite Version von DayZ wird auch entwickelt, welche 10€ kosten soll. Keine Neben-Kosten o.ä, soll auf dem gleichen Verkaufs-Verfahren wie bei Minecraft laufen. -
Hier, habe mal was für dich gemacht.
new bool:duty[MAX_PLAYERS];// <- Ein Bool ist immer besser, wenn du nur Werte abspeichern willst, die entweder "0 (false)" oder "1 (true)" enthalten.public OnPlayerConnect(playerid){
duty[playerid] = false;// <- Beim Connecten muss der bool wieder auf "false" gesetzt werden.
return 1;
}public OnPlayerSpawn(playerid){
duty[playerid] = false;// <- Hier sollte der bool ebenfalls wieder auf "false" gesetzt werden.
return 1;
}if(strcmp("/duty", cmdtext, true) == 0){
new string[128];
if(IsPlayerInRangeOfPoint(playerid,2.0,217.3575,184.1517,1003.0313)){
if(isPlayerInFrakt(playerid, 1){
if(duty[playerid] == false){
duty[playerid] = true;
format(string, sizeof(string), "* Officer %s nimmt seine Dienst-Kleidung aus dem Schrank und beginnt den Dienst!", SpielerName(playerid));// <- Eventuell noch anpassen.
SendClientMessage(playerid, viulet, string);// <- Ich empfehle dir, eine "SendRangeMessage"-Funktion zu erstellen, sodass Spieler in der Nähe es lesen können. Zudem heißt es "Violett" und nicht "viulet".
SetPlayerColor(playerid, Dunkelblau);
}else if(duty[playerid] == true){
duty[playerid] = false;
format(string, sizeof(string), "* Officer %s legt seine Dienst-Kleidung in den Schrank, und macht Feierabend.", SpielerName(playerid));// <- Eventuell noch anpassen.
SendClientMessage(playerid, viulet, string);
SetPlayerColor(playerid, 0xFFFFFF);// Die Farbe von Dunkelblau auf Weiß ändern, kannst du ändern, wenn du willst.
}
}
}else if(IsPlayerInRangeOfPoint(playerid, 2.0, position-X, position-y, position-z)){ // Die Armee-Position, musst du selbst noch eintragen.
if(isPlayerInFrakt(playerid, armee-ID){ // Hier muss die Fraktions-ID der Armee eingetragen werden
if(duty[playerid] == false){
duty[playerid] = true;
format(string, sizeof(string), "* Soldat %s nimmt seine Ausrüstung aus dem Waffen-Arsenal!", SpielerName(playerid));// <- Eventuell noch anpassen.
SendClientMessage(playerid, viulet, string);
SetPlayerColor(playerid, 0x33AA33AA);// <- Ich habe jetzt mal irgendwo einfach ein Grün-Ton hergenommen.
}else if(duty[playerid] == true){
duty[playerid] = false;
format(string, sizeof(string), "* Soldat %s legt seine Ausrüstung zurück, und macht Feierabend.", SpielerName(playerid));// <- Eventuell noch anpassen.
SendClientMessage(playerid, viulet, string);
SetPlayerColor(playerid, 0xFFFFFF);// Die Farbe von Grün auf Weiß ändern, kannst du ändern, wenn du willst.
}
}
}else{
SendClientMessage(playerid, 0xFFFFFF, "Du bist an keinem Dienst-Punkt.");
return 1;
}
return 1;
} -
Piranha
Im Haupt-Script wird bei OnDialogResponse "return 1;" am ende abgegeben, im Filterscript aber" return 0;" -
Habe es jetzt so:
SetCameraBehindPlayer(playerid);
GetPlayerCameraFrontVector(playerid, Store[playerid][0], Store[playerid][1], Store[playerid][2]);Wenn ich nun bei meinem SetPlayerToSpawn-Stock folgendes anwende:
InterpolateCameraPos(playerid, 1730.956542, -1895.548950, 345.042388, Store[playerid][0], Store[playerid][1], Store[playerid][2], 8000);
InterpolateCameraLookAt(playerid, 1731.450805, -1895.550048, 340.066864, 1763.896972, -1895.619262, 15.272540, 6000);
SetPlayerPos(playerid,1763.4453,-1895.7362,13.5621);
SetPlayerFacingAngle(playerid, 269.5315);Geht die Kamera nach 0.0, 0.0, 0.0 ._.
-
Warum sollte es mit der Zahl zusammenhängen?
Ich lasse den Dialog per ShowPlayerDialog mit der Dialog-ID 1337 anzeigen, und bei OnDialogResponse aufrufen.
Zudem würde OnDialogResponse auch so aufgerufen werden, was es aber komischerweise nicht tut.... -
Hallo.
Ich möchte gerne die Position herausfinden, die bei SetCameraBehindPlayer berechnet wird.
Ich möchte es nämlich so machen, wenn man spawnt, dass die Kamera im Himmel ist, nach unten fährt, und dann bei der Position von "SetCameraBehindPlayer" ist.
Weil derzeit ist es so, dass die Camera etwas fail gesetzt wird...Danke im voraus.
-
Ich hab bei OnVehicleSpawn "valueOne[vehicleid] = 0;" stehen, und in meinen stocks (CreateVehicleEx, AddStaticVehicle_V, AddStaticVehicleEx_V) steht "OnVehicleSpawn" drin.
stock CreateVehicleEx(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawn_delay){
new vID = CreateVehicle(vehicletype, x, y, z, rotation, color1, color2, respawn_delay);
OnVehicleSpawn(vID);
return vID;
} -
Und jetzt nochmal so, dass ich es verstehe?
-
valueOne[vehicleid] = 0;
Hab ich auch bereits drin...^^ -
new valueOne[MAX_VEHICLES]; // <- Already done .. ;DGoldkiller
Ist mir auch aufgefallen, habs eben direkt behoben. -
ocmd:find(playerid, params[]){
new type, pID;
if(IsACop(playerid)){
if(!sscanf(params, "iu", type, pID)){
switch(type){
case 1: playerCPTimer[playerid] = SetTimerEx("FindTimer", 1000, true, "ii", playerid, pID);
case 2: KillTimer(playerCPTimer[playerid]);
}
}
}else{
SendClientMessage(playerid, COLOR_GREY, "Du bist kein Polizist.");
return 1;
}
return 1;
}public FindTimer(playerid, forplayerid){
new Float:pos[3];
if(IsPlayerConnected(forplayerid)){
GetPlayerPos(forplayerid, pos[0], pos[1], pos[2]);
SetPlayerCheckpoint(playerid, pos[0], pos[1], pos[2], 6.0);
}else{
KillTimer(playerCPTimer[playerid]);
SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist nichtmehr online.");
return 1;
}
return 1;
} -
public OnVehicleDeath(vehicleid, killerid){
for(new i=0;i<sizeof(lspdcars);i++){
if(vehicleid == lspdcars[i]){
SetVehicleToRespawn(vehicleid);
return 1;
}
}
DestroyVehicle(vehicleid);
return 1;
}