Ohne das können wir nicht sehen, wo der Fehler ist. Suche den Code, der den Spieler speichert. Suche ggf nach GetPlayerMoney oder ACNewMoney.
Generell müsste das Problem aber überall auftreten, wo du dem Spieler Geld abziehst.
Ohne das können wir nicht sehen, wo der Fehler ist. Suche den Code, der den Spieler speichert. Suche ggf nach GetPlayerMoney oder ACNewMoney.
Generell müsste das Problem aber überall auftreten, wo du dem Spieler Geld abziehst.
Das einzige was ich gefunden habe ist bei OnPlayerUpdate.
Also so schaut das bei OnPlayerUpdate aus
Function PlayerUpdate(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
new string3[64];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "/Accounts/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new var[32];
format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
...
...
format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);
Ich glaube aber ich weis woran das liegen könnte.
Bei Function OnPlayerLogin(playerid,password[])
Sehen die Zeilen so aus:
PlayerInfo[playerid][pCash] = dini_Int(string2, "Money");
Und da du meintest das es 2 Systeme sind, kann es sein das es da buggt.
Oder ?
public GivePlayerMoneyEx(playerid,money)
{
ACNewMoney[playerid] = GetPlayerMoney(playerid) + money;
PlayerInfo[playerid][pCash] = ACNewMoney[playerid];
stopAC[playerid] = 15;
return GivePlayerMoney(playerid,money);
}
Dann sollte alles klappen.
Habe es nun so gemacht, aber wenn ich das Passwort eingegeben habe, und dann auf Weiter mache, passiert garnix, also der zweite Dialog wird nicht aufgerufen.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case Dialog_Register:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Die Registrierung wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 24))
{
ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen nicht in unserer Datenbank gefunden.\nUm einen Charakter auf unserem Server zu Erstellen\nbenötigen wir einige Informationen von Ihnen.\nAls erstes tragen Sie Bitte ein Passwort in das untere Feld ein.\n\nGeben Sie Ihr Passwort niemals an andere Personen weiter!.","Annehmen","Abbrechen");
return 1;
}
Spieler[playerid][pPasswort] = inputtext[24];
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
case Dialog_Geburtsdatum:
{
if(response == 0)return Kick(playerid);
else
{
Spieler[playerid][pAlter] = GetAge(inputtext);
if(Spieler[playerid][pAlter] == 0)
{
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
format(Spieler[playerid][pGeburtsdatum],20,inputtext);
if(Spieler[playerid][pAlter] == 0)
{
ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
return 1;
}
ShowPlayerDialog(playerid,Dialog_Geschlecht,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Geschlecht","{FFFFFF}Als letztes möchten wir Ihr Geschlecht wissen\nWählen Sie für die Angabe bitte Ihr Geschlecht welches unten zutrifft.","Männlich","Weiblich");
return 1;
}
}
case Dialog_Geschlecht:
{
new string[128];
if(response == 0)
{
format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Weiblich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
SendClientMessage(playerid,0x00D2D2FF,string);
new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeburtsdatum`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pWarns`, `pLeben`) VALUES ('%e','%e','%d','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",
Spieler[playerid][pName],Spieler[playerid][pPasswort],Spieler[playerid][pAlter],Spieler[playerid][pGeburtsdatum],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWarns],Spieler[playerid][pLeben]);
mysql_tquery(DBHandle, query, "", "");
Spieler[playerid][pLeben] = 100.0;
Spieler[playerid][pGeschlecht] = 2;
Spieler[playerid][pLogged] = true;
SavePlayerData(playerid);
SpawnPlayer(playerid);
return 1;
}
if(response == 1)
{
format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Männlich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
SendClientMessage(playerid,0x00D2D2FF,string);
new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
getdate(Tag,Monat,Jahr);
gettime(Stunde,Minute,Sekunde);
format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeburtsdatum`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pWarns`, `pLeben`) VALUES ('%e','%e','%d','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",
Spieler[playerid][pName],Spieler[playerid][pPasswort],Spieler[playerid][pAlter],Spieler[playerid][pGeburtsdatum],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWarns],Spieler[playerid][pLeben]);
mysql_tquery(DBHandle, query, "", "");
Spieler[playerid][pGeschlecht] = 1;
Spieler[playerid][pLogged] = true;
SavePlayerData(playerid);
SpawnPlayer(playerid);
return 1;
}
return 1;
}
case Dialog_Login:
{
if(!response)
{
SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
SetTimerEx("KickPlayer",250,0,"i",playerid);
return 1;
}
if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
{
ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Einloggen","{0xA70000FF}Das Passwort darf nur 3-25 Zeichen enthalten!{FFFFFF}\n\nSie müssen von unserem System {0xFFFFFF}Identifiziert{FFFFFF} werden.\nGeben Sie dafür Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschlie�end auf Einloggen, damit Ihre Daten kontrolliert werden können.","Einloggen","Abbrechen");
return 1;
}
new query[180 + MAX_PLAYER_NAME];
mysql_format(DBHandle, query,sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` ='%e' AND `pPasswort` ='%e'",Spieler[playerid][pName],inputtext);
mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,2);
Spieler[playerid][pLogged] = true;
return 1;
}
}
return 1;
}
Schreibe das so:
Spieler[playerid][pPasswort] = inputtext[24];
zu
format(Spieler[playerid][pPasswort], 24, inputtext);
pPasswort im enum als "pPasswort[24]," deklarieren.
PS: Erstelle für sowas nächstes mal einen eigenen Thread, da das keine kleine Scripting Frage ist, das sagt die Länge des Codes bereits aus.
Wie kann ich die random Farben von spielern abschalten?
Wie kann ich die random Farben von spielern abschalten?
Indem du z.B. unter OnPlayerConnect SetPlayerColor(playerid,-1); schreibst
mfg.
Wie kann ich die random Farben von spielern abschalten?
In dem du den Spieler beim Connecten oder Spawnen eine Farbe gibst.
Jeffry: Dann wird das Passwort als t18.11.1994 gespeichert, also das Geburtsdatum O.o und das "t" ist der Anfangsbuchstabe vom Passwort, hatte test eingegeben.
Hast du pGeburtsdatum im enum als "pGeburtsdatum[11]" deklariert? Wenn nicht, das denke ich, dann mache das so. Oder hast du das Array beim Passwort vergessen?
Wie kann ich ein Random auslosen welches zwischen 1200 und 1500 ist?
Warum können Admins die lvl 1 sind da nichts lesen?
if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
{
if(IsPlayerConnected(playerid))
{
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "NUTZE: (/a)dmin [admin chat]");
return 1;
}
if(PlayerInfo[playerid][pAdmin] == 1)
{
format(string, sizeof(string), "*%d Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 2)
{
format(string, sizeof(string), "*%d Super-Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 3)
{
format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 4)
{
format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 1337)
{
format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 1338)
{
format(string, sizeof(string), "*%d FrakManager %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 2000)
{
format(string, sizeof(string), "*%d High-Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 2001)
{
format(string, sizeof(string), "*%d stelv.Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
if(PlayerInfo[playerid][pAdmin] == 2002)
{
format(string, sizeof(string), "*%d Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
}
else if(PlayerInfo[playerid][pSupporter] >= 1)
{
format(string, sizeof(string), "*%d Supporter %s[%d]: %s", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
}
else return 1;
for(new i=0; i<GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pSupporter] >= 1 || PlayerInfo[i][pAdmin] >= 1)
{
SendClientMessage(i,COLOR_YELLOW4,string);
}
}
}
Log("OA-Chat.txt",string);
}
return 1;
}
Also wenn ich /a Hallo eingebe und Admin level 1 bin seh ich die nachricht nicht also niemand sieht das.
Wenn ich aber Admin lvl 2002 bin dann geht das :>
Warum?
Du hast die else's vor den Abfragen vergessen:
Jo Moin, ich hab schon frakspawns mit interiors erstellt.
wie stelle ich es jetzt so ein, das auch nur diese fraktion ins interior gelangen kann?
Wie kann ich das machen das nur unbesetzte Cars zurück gespawnt werden ?
Oder Cars wo jemand nicht drin ist nicht zurück gespawnt werden?
Also an dem Beispiel:
if(strcmp(cmd, "/frakrc", true) == 0 || strcmp(cmd, "/frc", true) == 0)
{
if(PlayerInfo[playerid][pLeader] == 1)
{
for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
{
if(!IsPlayerInAnyVehicle(playerid))
{
SetVehicleToRespawn(PolizeiVehs[pv]);
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
{
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
{
if(!IsPlayerInAnyVehicle(playerid))
{
DestroyAndCreateFactionCar(fc);
}
}
}
}
SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast deine Fraktionsfahrzeuge erfolgreich respawnt.");
return 1;
}
Mfg Saphire
Nutze:
stock IsAnyPlayerInVehicle(vehicleid)
{
for(new i=0; i<MAX_PLAYERS; i++) if(GetPlayerVehicleID(i) == vehicleid) return 1;
return 0;
}
Und dann:
if(!IsAnyPlayerInVehicle(PolizeiVehs[pv]))
Gleich bei den Fraktions-Fahrzeugen, eben mit der Carid Variable.
for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
{
if(!IsPlayerInAnyVehicle(playerid))
{
SetVehicleToRespawn(PolizeiVehs[pv]);
}
}
for(new fc;fc<sizeof(FactionCars);fc++)
{
if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
{
if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
{
if(!IsPlayerInAnyVehicle(playerid))
{
DestroyAndCreateFactionCar(fc);
}
}
}
}
ich habe das ja so aber wenn jemand drin sitzt werden die trotzdem zurück gespawnnt.
Wie kann ich das ändern ?
Nein, du hast:
if(!IsPlayerInAnyVehicle(playerid))
du sollst machen:
if(!IsAnyPlayerInVehicle(PolizeiVehs[pv]))
Erkennst du den Unterschied?