getdate(Date,Month,Year);
zu
getdate(Year,Month,Date);
Ansonsten ist alles in Ordnung.
//edit Das Datum kannst du dann gang einfach wie beim Login ausgeben.
getdate(Date,Month,Year);
zu
getdate(Year,Month,Date);
Ansonsten ist alles in Ordnung.
//edit Das Datum kannst du dann gang einfach wie beim Login ausgeben.
123marvin123: Du hast vergessen deine Masse anzuzeigen.
ZitatThe string you want to convert to an integer.
Beispiel:
new string[4] = "250";
new iValue = strval(string); // iValue is now '250'
Quelle: https://wiki.sa-mp.com/wiki/Strval
Nach einem Restart werden alle Werte resettet.
Desweiterem funktioniert dein System bisher so:
Spieler 1: connected.
Spieler 2: connected.
Spieler 1: disconnected.
Spieler 2: reconnected und Spawn an der Stelle wo sich Spieler 1 ausgeloggt hat.
Du musst die Daten bei OnPlayerDisconnect/OnGameModeExit speichern und löschen und beim Login laden
//edit
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
new filnemae[64], name[MAX_PLAYER_NAME], Float:pX, pY, pZ;
GetPlayerName(playerid, name, sizeof(name));
format(filename, sizeof(filename), "Pfad/%s.???", name);
GetPlayerPos(playerid, pX, pY, pZ);
dini_FloatSet(filename, "logoutx", pX);
dini_FloatSet(filename, "logouty", pY);
dini_FloatSet(filename, "logoutz", pZ);
dini_IntSet(filename, "interior", GetPlayerInterior(playerid));
}
return 1;
}
if(pInfo[playerid][pSpawn] == 1)
{
SetTimerEx("SpielerUnfreeze", 5000, 0, "playerid", playerid);
FreezePlayer(playerid);
new filnemae[64], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(filename, sizeof(filename), "Pfad/%s.???", name);
SetPlayerPos(playerid,dini_Float(filename, "logoutx"),dini_Float(filename, "logouty"),dini_Float(filename, "logoutz"));
SetPlayerInterior(playerid,dini_Int(filename, "interior"));
}
Hier aktualisierst du die Koordinaten
stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
pInfo[playerid][pInterior] = GetPlayerInterior(playerid);
GetPlayerPos(playerid, pX, pY, pZ);
pInfo[playerid][pTx] = pX;
pInfo[playerid][pTy] = pY;
pInfo[playerid][pTz] = pZ;
}
return 1;
}
aber du speicherst Sie nicht in der Datenbank oder in einer Datei ab.
Dementsprechend werden die Daten nach einem restart nicht geladen.
//edit1 bzw. lädst du die Daten überhaupt nach einem restart/wenn man sich einloggt ?
//edit2 Und welche Speicherart verwendest du ?
ocmd:schranke(playerid)
{
if(!IsPlayerInFrac(playerid, 24))return SendClientMessage(playerid, -1, "Du bist nicht in der Fraktion");
static bool:schrankeStatus;
if(!schrankeStatus)MoveDynamicObject(meineSchranke, 2255.72876, 2032.46387+0.05, 10.78,0.10,0,0,0); //auf
else MoveDynamicObject(meineSchranke, 2255.72876, 2032.46387, 10.78,0.10,0,90,0); //Zu
schrankeStatus = !schrankeStatus;
return 1;
}
Dafür musst du den Code unter OnPlayerStateChange oder OnPlayerExitVehicle ändern.
Dort müsstest du soetwas (StopAudioStreamForPlayer(playerid);) entfernen, damit der Stream weiter läuft.
Falls du nicht weißt was du entfernen muss Poste den mal den Code.
Hast du mal deinen Code mit meinem verglichen ...?
Siehst du in meinem Code in irgendeinem Timer oder forward wo ein Parameter übergeben wird ? Ich nicht!
//edit Besser Formatiert
@Jorska: Hast du auch das Public im Script ?
public SpielerinnaeheTextZwei(Float:radi, Float:x, Float:y, Float:z, string[],col1,col2,col3,col4,col5)
{
return 1;
}
//edit bzw. wenn es eine Abfrage werden soll brauchst du kein forward sondern einen 'stock'
Wie soll die Funktion den Funktionieren, bzw. was soll Sie machen ?
Damit ist gemeint, das du da noch mehr reinschreiben kannst/solltest.
Hier sind ein paar Links die dir evtl. helfen sollte.
http://wiki.sa-mp.com/wiki/Scripting_Basics_DE
https://wiki.sa-mp.com/wiki/SendClientMessage
http://wiki.sa-mp.com/wiki/Function:TogglePlayerControllable (könnte Sein das sich das in der 'Spezial Animation' schon befindet')
http://wiki.sa-mp.com/wiki/Fast_Commands
public OnPlayerCommandText(playerid, cmdtext[]){
if (strcmp("/cuff", cmdtext, true, 5) == 0){
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
SetPlayerAttachedObject(playerid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
// Do something here
return 1;
}
return 0;
}
Lies doch mal dein Anderes Thema durch! Da habe ich dir schon geantwortet bevor du dieses Thema erstellt hast!
http://forum.sa-mp.de/gta-mult…2104-problem-mit-command/
Alles anzeigennew sprenung;
new trsodoor ;
public OnGameModeInit(){
trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
return 1;
}
forward Explosion();
public Explosion()
{
CreateExplosion(1551.63159, -1801.69556, 26.47590, 0, 3);
DestroyObject(sprenung);//tnt
DestroyObject(trsodoor);//tresortür
sprenung=-1;//tnt
trsodoor = -1;
SetTimer("TresorTuer", 1000*60*3, false);
return 1;
}
forward TresorTuer();
public TresorTuer(){
if(IsValidObject(trsodoor))return 1;
trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
return 1;
}
ocmd:transporttresorsprengen(playerid,params[])
{
if(IsValidObject(sprenung))return SendClientMessage(playerid, -1, "Die Tür wird bereits gesprengt.");
if(!IsValidObject(trsodoor))return SendClientMessage(playerid, -1, "Die Tür steht offen.");
sprenung=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//tnt
SendClientMessage(playerid,-1,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");
SetTimer("Explosion", 2000, false);
return 1;
}
//edit1 Abfrage hinzugefügt ob die Tür existiert
//edit2 Abfrage hinzugefügt ob die Tresortür bereits gesprengt wird
//edit3 Hatte vergessen an einer stelle die Objectid einzutragen
//edit4 CreateExplosion hinzugefüt
//edit malE war schneller
for(new player = 0; player <= GetPlayerPoolSize(); player++){
if(!IsPlayerConnected(player))continue;
if(!IsPlayerInAnyVehicle(player))continue;
if(IsPlayerInVehicle(player, veh)){
//Was soll passieren wenn der Spieler im Fahrzeug ist ?
}
}
if(listitem ==0)
{
new veh = GetPlayerVehicleID(playerid);
if(dialogid==DIALOG_BUSFAHRER)
{
for(new i = 0; i<sizeof(bus); i++)
{
if(veh == bus[i])
{
Busfahrer[playerid][bus_Route] = 0;
Busfahrer[playerid][bus_Checkpoint]=0;
Busfahrer[playerid][bus_Aktiv]=true;
new route = Busfahrer[playerid][bus_Route];
SetPlayerCheckpoint(playerid,Bus_Stationen[route][0][b_x],Bus_Stationen[route][0][b_y],Bus_Stationen[route][0][b_z],Bus_Stationen[route][0][b_g]);
SendClientMessage(playerid,0xFFFF00FF,"Du hast den Dienst als Busfahrer begonnen!");
SendClientMessage(playerid,0xFFFF00FF,"Fahre nun die Checkpoint's ab!");
Busfahrer[playerid][bust] = 10;
Update3DTextLabelText(Busl[i], Blau, "LS 1");//i und nich veh
return 1;
}
}
}
}
Probier das mal:
for(new veh = 0; veh < sizeof(bus); veh++){
if(bus[veh] != GetPlayerVehicleID(playerid))continue;
Update3DTextLabelText(Busl[veh], Blau, "LS 1.");
break;
}
//edit Sonst zeig mal bitte wie du deine Busse erstellst.
new sprenung;
new trsodoor ;
public OnGameModeInit(){
trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
return 1;
}
forward Explosion();
public Explosion()
{
CreateExplosion(1551.63159, -1801.69556, 26.47590, 0, 3);
DestroyObject(sprenung);//tnt
DestroyObject(trsodoor);//tresortür
sprenung=-1;//tnt
trsodoor = -1;
SetTimer("TresorTuer", 1000*60*3, false);
return 1;
}
forward TresorTuer();
public TresorTuer(){
if(IsValidObject(trsodoor))return 1;
trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
return 1;
}
ocmd:transporttresorsprengen(playerid,params[])
{
if(IsValidObject(sprenung))return SendClientMessage(playerid, -1, "Die Tür wird bereits gesprengt.");
if(!IsValidObject(trsodoor))return SendClientMessage(playerid, -1, "Die Tür steht offen.");
sprenung=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//tnt
SendClientMessage(playerid,-1,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");
SetTimer("Explosion", 2000, false);
return 1;
}
//edit1 Abfrage hinzugefügt ob die Tür existiert
//edit2 Abfrage hinzugefügt ob die Tresortür bereits gesprengt wird
//edit3 Hatte vergessen an einer stelle die Objectid einzutragen
//edit4 CreateExplosion hinzugefüt
Werden deine Plugins auch richtig geladen (bzw. überhaupt geladen) ?
Hast du deine Plugins in die server.cfg hinzugefügt ?
Ungetestet, sollte aber funktionieren.
ocmd:carrespawn(playerid, params[]){
if(SpielerInfo[playerid][Adminlevel] < 5)return SendClientMessage(playerid,ROT,"Du darfst diesen Befehl nicht verwenden.");
for(new veh = 1; veh <= GetVehiclePoolSize(); veh++){
if(!IsValidVehicle(veh))continue;
for(new player = 0; player <= GetPlayerPoolSize()+1; player++){
if(player == GetPlayerPoolSize()+1)SetVehicleToRespawn(veh);
if(!IsPlayerConnected(player))continue;
if(!IsPlayerInAnyVehicle(player))continue;
if(IsPlayerInVehicle(player, veh))break;
}
}
new string[128];
format(string,sizeof(string),"Alle unbenutzen Fahrzeuge wurden von %s respawnet!",GetName(playerid));
SendClientMessageToAll(ROSA,string);
Adminlog(string);
return 1;
}
Solltest du einen Fehler wegen diesem (IsValidVehicle) befehl haben so füge folgendes oben ins Script ein.
native IsValidVehicle(vehicleid);
Ja, da muss 'i' rein, da habe ich mich wohl auf der schnelle vertan.
Du benötigst diesen (https://wiki.sa-mp.com/wiki/CreatePickup) Befehl um Pickups zu erstellen.
Abfragen ob er Enter drückt kannst du mit diesem (http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange) Callback,
dort musst du dann Abfragen ob er die Taste (KEY_SECONDARY_ATTACK) drückt.
Um das Tor zu erstellen benötigst du diesen (https://wiki.sa-mp.com/wiki/CreateObject) Befehl,
um anschliesend abzufragen ob er H (KEY_CTRL_BACK) drückt benötigst du wieder dieses (http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange) Callback.
Alles Keys findest du hier (http://wiki.sa-mp.com/wiki/Keys).