doch es wir nur in der intro erstellt im world nicht
Entschuldigung aber das vertsehe ich jetzt nicht, wie meinst du das? (Schildere dein Problem genauer)
doch es wir nur in der intro erstellt im world nicht
Entschuldigung aber das vertsehe ich jetzt nicht, wie meinst du das? (Schildere dein Problem genauer)
Und wenn man Q oder E drückt werden keine Blinker erstellt, richtig?
Wie werden den die Blinker aktiviert? (Tasten)
Hallo Brotfische,
Ich habe mir ein kleines System geschrieben das man als Administrator Ingame Bankautomaten anlegen kann. Das erstellen der Bankautomaten klappt wunderbar, doch wenn die Position bei einem Bankautomaten geändern werden, dann werden die alten Positionen wieder geladen, das bedeute diese werden darnicht geupdatet. Leider finde ich den Fehler nicht und hoffe nun auf eure Hilfe.
Code:
Befehl:
ocmd:editatm(playerid,params[])
{
for(new i = 1; i < MAX_ATMS; i++)
{
if(!IsPlayerInRangeOfPoint(playerid,3.0,atmInfo[i][atm_x],atmInfo[i][atm_y],atmInfo[i][atm_z]))continue;
AdminEditAtmID[playerid] = atmInfo[i][atm_id];
SendClientMessageEx(playerid,C_Error,"Atmid = %d",atmInfo[i][atm_id]);
AdminEditAtm[playerid] = atmInfo[i][atm_object];
atmInfo[i][atm_x]=0;
atmInfo[i][atm_y]=0;
atmInfo[i][atm_z]=0;
EditObject(playerid,AdminEditAtm[playerid]);
}
return 1;
}
Alles anzeigen
OnPlayerEditObject:
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, move it for other players
{
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
if(AdminEditAtm[playerid]!=0)
{
new query[256];
//format(query,sizeof(query),"INSERT INTO atm (x,y,z,money,disabled) VALUES ('%f','%f','%f','%d','%d') ",fX,fY,fZ,0,0);
format(query,sizeof(query),"UPDATE `atm` SET `x`='%f',`y`='%f',`z`='%f',`rx`='%f',`ry`='%f',`rz`='%f' WHERE `id`='%i'",fX,fY,fZ,fRotX,fRotY,fRotZ,AdminEditAtm[playerid]);
mysql_function_query(dbhandle,query,true,"SendQuery","");
mysql_format(dbhandle, query, 128, "SELECT * FROM atm WHERE id = %d",ExistATM);
mysql_function_query(dbhandle, query, true, "LoadATMS","d",ExistATM);
DestroyObject(AdminEditAtm[playerid]);
AdminEditAtm[playerid]=0;
SendClientMessageEx(playerid,COLOR_GREEN,"Wurde gespeichert. | AdminEditAtm = %d",AdminEditAtm[playerid]);
}
Alles anzeigen
Ja, in Zeile 4 und geprüft in Zeile 16.
Ohh... uppssss jetzt sehe ich es auch.
Danke
wird durch diese Funktion jetzt auch der sitzplatz gezählt?
stock ChangeVehicle(playerid,vmodell)//@Jeffry
{
new Float:pos[4],seed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective, seat[MAX_PLAYERS] = {-1, ...};
new seatcount = GetVehicleSeatCount(GetVehicleModel(vID));
if(!IsPlayerInAnyVehicle(playerid))return 1;
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetVehicleZAngle(vID,pos[3]);
GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
DestroyVehicle(vID);
for(new i = 0; i < MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vID) seat[i] = GetPlayerVehicleSeat(i);
newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(seat[i] != -1)
{
if(seat[i] < seatcount) PutPlayerInVehicle(i, newveh, seat[i]);
else SetPlayerPos(i,pos[0],pos[1],pos[2]);
}
}
PutPlayerInVehicle(playerid,newveh,0);
SetVehicleVelocity(newveh,speed[0],speed[1],speed[2]);
GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
return 1;
}
Alles anzeigen
@Jeffry ich habe es jetzt so geschrieben wie oben erklärt. Aber ich habe mir mal gedanken gemacht wie man die Sitzplätze zählen kann... also wenn angenommen 4 Spieler in einem Fahrzeug sitzen und ich auf ein Motorrad wechsel, das die 2 anderen Spieler einfach an der stelle bleiben wo das Fahrzeug gewechselt wurde... (Leider ist es mir sehr schwer gefallen schon die Sitzplätze eines Fahrzeuges zu zählen und bin auch noch nicht mit dem Code fertig, da ich mit meinen Gedanken am ende bin. Vielleicht kannst du mir ja nochmal helfen Jeffry
stock ChangeVehicle(playerid,vmodell)//@Jeffry
{
new Float:pos[4],seed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective, seat[MAX_PLAYERS] = {-1, ...};
if(!IsPlayerInAnyVehicle(playerid))return 1;
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetVehicleZAngle(vID,pos[3]);
GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
DestroyVehicle(vID);
for(new i = 0; i < MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vID) seat[i] = GetPlayerVehicleSeat(i);
newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
for(new i = 0; i < MAX_PLAYERS; i++) if(seat[i] != -1) PutPlayerInVehicle(i, newveh, seat[i]);
PutPlayerInVehicle(playerid,newveh,0);
SetVehicleVelocity(newveh,speed[0],speed[1],speed[2]);
GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
return 1;
}
Alles anzeigen
[spoiler="ChangeVehicle @German_ScripterHD"]
stock ChangeVehicle(playerid,vmodell)
{
new Float:pos[4],seed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective, bool:pSeatid[0xF],
seatmodel, seatcount, seatx;
seatmodel = GetVehicleModel(vID);
seatcount = GetVehicleSeatCount(seatmodel)+1;
if(!seatmodel) return -1;
if(!IsPlayerInAnyVehicle(playerid))return 1;
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetVehicleZAngle(vID,pos[3]);
GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
DestroyVehicle(vID);
for(new p; p<MAX_PLAYERS; p++)
{
if(!IsPlayerConnected(p) || IsPlayerNPC(p)) continue;
if(GetPlayerVehicleID(p) == vID) pSeatid[GetPlayerVehicleSeat(p)] = true,seatx++;
if(seatx >= seatcount) return -1;
for(new i; i<sizeof pSeatid; i++) if(!pSeatid[i]) return i;
PutPlayerInVehicle(p,newveh,pSeatid[i]);
return -1;
newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
PutPlayerInVehicle(playerid,newveh,0);
SetVehicleVelocity(newveh,speed[0],speed[1],speed[2]);
GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
}
return 1;
}
Alles anzeigen
Okay, aber wie passe ich dann den stock am besten an?
Hallo Brotfische,
Ich habe mir gerade eben eine kleine Funktion gebastelt. Die Funktion ermöglicht das Fahrzeug wärend der fahrt zu ändern. Nun habe ich eine Frage, wie frage ich ab wie viele Personen in einem Fahrzeug sitzen und wie kann ich diese zwischen speichern das sie wieder in das "neue" Fahrzeug gesetzt werden?
stock:
stock ChangeVehicle(playerid,vmodell)
{
new Float:pos[4],speed[3],vID = GetPlayerVehicleID(playerid),newveh, engine, lights, alarm, doors, bonnet, boot, objective;
if(!IsPlayerInAnyVehicle(playerid))return 1;
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
GetVehicleZAngle(vID,pos[3]);
GetVehicleVelocity(vID,speed[1],speed[2],speed[3]);
DestroyVehicle(vID);
newveh = CreateVehicle(vmodell,pos[0],pos[1],pos[2]+0.5,pos[3],1,1,-1);
PutPlayerInVehicle(playerid,newveh,0);
SetVehicleVelocity(Fahrgestell,speed[0],speed[1],speed[2]);
GetVehicleParamsEx(newveh, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(newveh, 1, lights, alarm, doors, bonnet, boot, objective);
return 1;
}
Alles anzeigen
Danke Jeffry für deine Bemühung, aber habe den Fehler selber beheben können. Es lag an der Groß & Kleinschreibung wie du auch geschreiben hast
MfG
Die Tabellen "Tor" und "TimeBan" existieren in deiner Datenbank "sql10" nicht.
Möglicherweise wurden sie nicht exportiert, oder nicht mehr importiert.
Hallo Jeffry,
Das konnte ich dem Fehlercode auch entlesen das die Tabellen fehlen aber sie existieren...
Hallo Brotfische,
Ich habe wie oben schon zu erkennen ist ein Problem mit der Datenbank. In der Mysql-Log.txt Datei werden mir Fehlercodes ausgeworfen, das die Tabellen fehlen, aber habe alle Tabellen via. Import Funktion hochgeladen. Kleine Information : "Habe die server_db.sql von meinem Pc (localhost) exportiert und dann wie schon erläutert mit der Import Funktion auf meinen Gameserver (Mysql) hochgeladen. Verbindung zur Datenbank besteht aber.)
Fehler Code:
[14:16:21] [ERROR] CMySQLQuery::Execute[OnTorLoad] - (error #1146) Table 'sql10.Tor' doesn't exist
[14:17:43] [ERROR] CMySQLQuery::Execute[OnPlayerTimeBanCheck] - (error #1146) Table 'sql10.TimeBan' doesn't exist
Verbindung: (print)
[14:16:21] [MySQL] Verbindungsaufbau...
[14:16:21] [MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: 1
Ich hoffe ihr könnt mir helfen, da ich leider keine Idee habe an was es liegen kann. (auf dem Pc (localhost) klappt alles wunderbar.)
MfG
Hallo Brotfische,
Ich habe ein Problem, leider habe ich den Warning noch nicht gehabt und weis daher auch nicht was der Fehler bedeutet. Nun hoffe ich auf eure Hilfe
Fehlercode:
Code:
C:\Users\EptixYT\Desktop\Infinity Reallife\gamemodes\iRoleplay.pwn(943) : error 017: undefined symbol "i"
C:\Users\EptixYT\Desktop\Infinity Reallife\gamemodes\iRoleplay.pwn(944) : error 017: undefined symbol "carid"
C:\Users\EptixYT\Desktop\Infinity Reallife\gamemodes\iRoleplay.pwn(945) : error 017: undefined symbol "carid"
C:\Users\EptixYT\Desktop\Infinity Reallife\gamemodes\iRoleplay.pwn(940) : warning 203: symbol is never used: "vehicleid"
C:\Users\EptixYT\Desktop\Infinity Reallife\gamemodes\iRoleplay.pwn(963) : warning 213: tag mismatch
Mit den Fehlercodes kann ich wenig anfangen.. schick mal bitten zu den Fehlern den passenden Code.
//e:
Rechtschreibfehler behoben.
Klappt es jetzt? oder brauchst du immer noch hilfe?
Wenn Du ihm vielleicht noch sagst was Du gemacht hast, wird er künftig wissen auf was er sich achten muss, sollte dieser Fehler nochmal auftauchen.
Jo, der Fehler "undefined symobl" heißt übersetzt "undefiniertes Symbol", sollte der Fehler irgendwann nochmal erscheinen z.B "undefined symobl waffe1" dann musst du schauen ob du irgendwo new waffe1; im Script stehen hast, sollte das nicht der Fall sein, wirft der Compiler dir diesen Fehler aus. (Also um es nochmal deutlich zu erklären der Fehlercode weist dich darauf hin, das du eine Variable benutzt die nicht definiert ist.)
Ich hoffe du hast es verstanden.
MfG
So sollte es klappen:
getPlayerSpeed(playerid)
{
new Float:x, Float:y, Float:z, Float:rtn;
if(IsPlayerInAnyVehicle(playerid))
{
GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
}
else
{
GetPlayerVelocity(playerid, x, y, z);
}
rtn = floatsqroot(x*x + y*y + z*z);
return floatround(rtn * 100 * 1.61);
}
Alles anzeigen
MfG
So sollte es klappen:
stock SavePlayerVehicles(carid)
{
new query[400];
GetVehiclePos(cInfo[carid][id_x],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z]);
GetVehicleZAngle(cInfo[carid][id_x],cInfo[carid][c_r]);
format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r],cInfo[carid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
Füge folgende Stocks ins Script ein, und ersetze (unter OnPlayerDisconnect)
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]==0)continue;
if(cInfo[i][besitzer]!=sInfo[playerid][p_id])continue;
GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
new query[128];
format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
mysql_function_query(dbhandle,query,false,"","");
DestroyVehicle(cInfo[i][id_x]);
cInfo[i][id_x]=0;
}
Alles anzeigen
zu
[spoiler='stocks']
stock SavePlayerVehicles(carid)
{
new query[400];
GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
stock ResetVehicle(carid)
{
for(new i=0; i<sizeof(cInfo[]); i++)
{
cInfo[carid][carEnum:i]=0;
}
return 1;
}
stock DestroyPlayerVehicles(playerid)
{
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]!=0)
{
if(cInfo[i][besitzer]==sInfo[playerid][db_id])
{
SavePlayerVehicles(i);
DestroyVehicle(cInfo[i][id_x]);
ResetVehicle(i);
}
}
}
return 1;
}
Alles anzeigen
Der Code sieht soweit richtig aus... schick mal bitte noch savePlayerCar & saveCarToDB
Hallo,
Schick mal bitte den Code wie du die Privaten Autos speicherst.