Willkommen auf Breadfish und frohe Weihnachten!
Poste bitte den dazugehörigen Code (Befehl etc...), sonst können wir dir nicht wirklich helfen, da wir ja nicht sehen, was falsch ist, bzw. sein könnte.
Willkommen auf Breadfish und frohe Weihnachten!
Poste bitte den dazugehörigen Code (Befehl etc...), sonst können wir dir nicht wirklich helfen, da wir ja nicht sehen, was falsch ist, bzw. sein könnte.
So, ich habe deinen Code mal bei mir laufen lassen.
Dein Code funktioniert, die Fehler hatte ich auch, habe sie aber wegbekommen.
(Du kannst mit SendClientMessage übrigens 144 Zeichen anzeigen, sprich einen String von [145] (wegen EOS)).
Wie?
Mach diese zwei defines weg:
#define SendClientMessage SendClientMessageEx
#define SendClientMessageToAll SendClientMessageToAllEx
Warum?
Wenn du es so definierst, überschreibst du auch die SendClientMessages in den stocks, sprich du hast eine rekursive Funktion (ruft sich selbst auf).
Um alle SendClientMessages (außer die in den stocks) zu ersetzen, nutze STRG+H, pass aber auf, dass du die in den stocks nicht änderst.
Ich kanns ja mal versuchen. Poste mal den Filterscript den du versucht hast, in dem nur die zwei Stocks und der Befehl sind.
Ist das VID die Vehicle ID, oder eine andere ID? Welchen Wert bekommt diese Variable zugewiesen?
Poste zudem dann mal deine CreateTunedCar Funktion.
Funktioniert es eigentlich, wenn du den Server neu startest? Sind dann alle Fahrzeuge wieder auf 0?
Und wenn du dir den SA-MP Server komplett neu herunterlädst, einen neuen Gamemode nimmst, in dem nichts drin ist, außer deine zwei Stocks und der Befehl?
Ist es dann weg, oder kommt es auch dann noch?
Na du bist gut. Das dürften sowas um die 0.1 sein, kann es aber auch nur abschätzen. Probiere es mal aus, den Z Wert im 0.1 kleiner zu machen, also zu 8.2858. Wenn es immer noch schwebt mach es noch etwas kleiner.
Dann mach den Z Wert etwas kleiner.
Ja, und dann auf das OK ganz rechts unten.
Oder du drückst auf INSERT und gibst die Werte da direkt ein, das geht natürlich auch. Wie es dir lieber ist.
Schreibe das mal nach
Carlist[playerid][h][Carid] = CreateTunedCar(playerid, h);
so hin:
Meters[Carlist[playerid][h][Carid]] = 0;
Wenn das nicht geht, zeige bitte den Code mit dem du die Meter dem Spieler anzeigst.
In der Leiste oben zwischen Struktur und Suche müsste das sein, wenn du die Daten in der Tabelle siehst.
Wenn nicht, mach mal einen kompletten Screenshot von deinem phpMyAdmin.
In der Datenbank, Tabelle Saveboxen.
Mit phpMyAdmin reicht zum ändern ein Doppelklick in die Spalte, oder eben über bearbeiten.
Zum hinzufügen müsste unter den ganzen Daten Zeilen hinzufügen stehen, oder sowas in der Art.
Möglicherweise musst du im Code noch die Anzahl bei
new SaveBoxInfo...
ändern, wenn du in der Datenbank welche hinzufügst.
Schalte mal den MySQL Debug Modus an, sodass dir alles was über das Plugin passiert geprintet wird. Was wird da ausgegeben, wenn du versuchst, die Autos zu speichern?
Klappt das Laden und Löschen?
Dann schreibe es so:
if(strcmp(cmd, "/clothes", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pMember] >= 0 || PlayerInfo[playerid][pLeader] >= 0)
{
if(IsAtClothShop(playerid))
{
if(PlayerInfo[playerid][pMember] == 0) { ChosenSkin[playerid] = SKIN_ID_VON_ZIVI; SetPlayerSkin(playerid, SKIN_ID_VON_ZIVI); }
else if(PlayerInfo[playerid][pMember] == 1) { ChosenSkin[playerid] = 280; SetPlayerSkin(playerid, 280); }
else if(PlayerInfo[playerid][pMember] == 2) { ChosenSkin[playerid] = 280; SetPlayerSkin(playerid, 280); }
else if(PlayerInfo[playerid][pMember] == 3) { ChosenSkin[playerid] = 287; SetPlayerSkin(playerid, 287); }
else if(PlayerInfo[playerid][pMember] == 4) { ChosenSkin[playerid] = 70; SetPlayerSkin(playerid, 70); }
else if(PlayerInfo[playerid][pMember] == 5) { ChosenSkin[playerid] = 258; SetPlayerSkin(playerid, 120); }
else if(PlayerInfo[playerid][pMember] == 6) { ChosenSkin[playerid] = 294; SetPlayerSkin(playerid, 294); }
else if(PlayerInfo[playerid][pMember] == 7) { ChosenSkin[playerid] = 164; SetPlayerSkin(playerid, 164); }
else if(PlayerInfo[playerid][pMember] == 8) { ChosenSkin[playerid] = 250; SetPlayerSkin(playerid, 250); }
else if(PlayerInfo[playerid][pMember] == 9) { ChosenSkin[playerid] = 187; SetPlayerSkin(playerid, 187); }
else if(PlayerInfo[playerid][pMember] == 10) { ChosenSkin[playerid] = 255; SetPlayerSkin(playerid, 255); }
else if(PlayerInfo[playerid][pMember] == 11) { ChosenSkin[playerid] = 240; SetPlayerSkin(playerid, 240); }
else if(PlayerInfo[playerid][pMember] == 12) { ChosenSkin[playerid] = 118; SetPlayerSkin(playerid, 118); }//Triaden
else if(PlayerInfo[playerid][pMember] == 13) { ChosenSkin[playerid] = 105; SetPlayerSkin(playerid, 105); }//Grove
else if(PlayerInfo[playerid][pMember] == 14) { ChosenSkin[playerid] = 102; SetPlayerSkin(playerid, 102); }//Bloods
else if(PlayerInfo[playerid][pMember] == 15) { ChosenSkin[playerid] = 185; SetPlayerSkin(playerid, 185); }//Sf Biker Club
else if(PlayerInfo[playerid][pMember] == 16) { ChosenSkin[playerid] = 108; SetPlayerSkin(playerid, 108); }//Los Santos MaraSalvatrucha
else if(PlayerInfo[playerid][pMember] == 17) { ChosenSkin[playerid] = 114; SetPlayerSkin(playerid, 114); }//Varios Los Crips
else if(PlayerInfo[playerid][pMember] == 18) { ChosenSkin[playerid] = 173; SetPlayerSkin(playerid, 173); }//San Fiero Rifa
else if(PlayerInfo[playerid][pMember] == 19) { ChosenSkin[playerid] = 234; SetPlayerSkin(playerid, 234); }//West Coust Customs
else if(PlayerInfo[playerid][pMember] == 20) { ChosenSkin[playerid] = 220; SetPlayerSkin(playerid, 220); }
else if(PlayerInfo[playerid][pMember] == 21) { ChosenSkin[playerid] = 286; SetPlayerSkin(playerid, 286); }
else if(PlayerInfo[playerid][pMember] == 22) { ChosenSkin[playerid] = 277; SetPlayerSkin(playerid, 277); }
else if(PlayerInfo[playerid][pMember] == 23) { ChosenSkin[playerid] = 133; SetPlayerSkin(playerid, 133); }
else if(PlayerInfo[playerid][pMember] == 24) { ChosenSkin[playerid] = 255; SetPlayerSkin(playerid, 255); }
else { return 1; }
GetPlayerPos(playerid, ChangePos[playerid][0],ChangePos[playerid][1],ChangePos[playerid][2]);
ChangePos2[playerid][0] = GetPlayerInterior(playerid);
ChangePos2[playerid][1] = 1;
SetPlayerInterior(playerid,0);
new rand = random(sizeof(gInviteSpawns));
SetPlayerPos(playerid, gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]); // Warp the player
SetPlayerFacingAngle(playerid, gInviteSpawns[rand][3]);
SetPlayerCameraPos(playerid,gInviteSpawns[rand][0] + 3, gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
SetPlayerCameraLookAt(playerid,gInviteSpawns[rand][0], gInviteSpawns[rand][1], gInviteSpawns[rand][2]);
FreezePlayer(playerid);
SelectChar[playerid] = 255;
SelectCharID[playerid] = PlayerInfo[playerid][pMember];
SelectCharPlace[playerid] = 1;
PlayerInfo[playerid][pModel] = ChosenSkin[playerid];
PlayerInfo[playerid][pChar] = ChosenSkin[playerid];
SendClientMessage(playerid, COLOR_LIGHTRED, "* Gib 'weiter' ein um den Charakter auszusuchen den du gerne nutzen möchtest.");
SendClientMessage(playerid, COLOR_LIGHTRED, "* Wenn du den richtigen gefunden hast gib 'fertig' ein.");
}
else
{
SendClientMessage(playerid, COLOR_GRAD2, "Du bist in keinem Bekleidungsgeschäft !");
return 1;
}
}
else
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, 205.2583,-134.0106,1002.8672) || IsPlayerInRangeOfPoint(playerid, 10.0, 207.2777,-105.8812,1005.1328))
{
AtClothes[playerid] = 1;
ForceClassSelection(playerid);
TogglePlayerSpectating(playerid, 0);
return 1;
}
}
}
return 1;
}
SKIN_ID_VON_ZIVI mit der ID des Skins der Zivis ersetzen.
Unter den Includes:
new bombTime[MAX_PLAYERS];
Beim Setzen der Bombe:
SetTimerEx("BombCountdown", 1000, 0, "d", playerid);
bombTime[playerid] = 60*5;
Ganz unten im Gamemode:
forward BombCountdown(playerid);
public BombCountdown(playerid)
{
bombTime[playerid]--;
new str[16];
format(str, sizeof(str), "%02d:%02d", bombTime[playerid]/60, bombTime[playerid]%60);
PlayerTextDrawSetString(playerid,Bombe[playerid],str);
if(bombTime > 0) SetTimerEx("BombCountdown", 1000, 0, "d", playerid);
else
{
//BOOM!
}
return 1;
}
Super!
ocmd:oban(playerid, params[])
{
new query[256], name[MAX_PLAYER_NAME], grund[64];
if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
if(sscanf(params,"ss",name,grund))return SendClientMessage(playerid,-1,"Tippe: /oban [name] [grund]");
mysql_format(mysqlHandle, query, sizeof(query), "UPDATE accounts SET Banned = '1', Bangrund = '%e', Banadmin = '%e' WHERE Name = '%e'", grund, NamePlayer(playerid), name);
mysql_tquery(mysqlHandle, query, "", "");
return 1;
}
Den ban-Befehl schreibst du lieber auch so:
ocmd:ban(playerid, params[])
{
new query[256], string[128], pID, grund[64];
if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
if(sscanf(params,"ds",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
SendClientMessage(pID,ROT,string);
mysql_format(mysqlHandle, query, sizeof(query), "UPDATE accounts SET Banned = '1', Bangrund = '%e', Banadmin = '%e' WHERE Name = '%e'", grund, NamePlayer(playerid), NamePlayer(pID));
mysql_tquery(mysqlHandle, query, "", "");
Kick(pID);
return 1;
}
Teste es mal so:
ocmd:multiaccount(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,-1,"Du hast kein Admin Level 4");
new query[256],gip[16];
if(sscanf(params,"s",gip))return SendClientMessage(playerid,-1,"Tippe : /multiaccount [IP]");
SendClientMessage(playerid,-1,"Benutze: /getip [Spieler] um die IP herauszufinden!");
format(query, sizeof(query), "SELECT name FROM accounts WHERE ip = '%s'", gip); //=================ANPASSEN!!====================
mysql_tquery(MySQL, query, "OnMultiaccountCheck", "d", playerid);
return 1;
}
forward OnMultiaccountCheck(playerid);
public OnMultiaccountCheck(playerid)
{
SendClientMessage(playerid,-1,"Folgende Accounts existieren unter der IP:");
new rows = cache_get_row_count(), string[145];
for(new i=0; i < rows; i++)
{
cache_get_row(i, 0, string);
SendClientMessage(playerid,-1,string);
}
return 1;
}
Nicht vergessen die markierte Zeile anzupassen, an deinen Tabellenname und die Tabellenspalten!
Ich weiß doch nicht mehr welches Plugin ich dir irgendwann mal geschickt habe.
Poste mal deine LoginPlayer (Spieler Laden) Funktion, daran nehm ich mir dann ein Beispiel.
Das was du mit dem Code machst ist eine Prüfung der online gleichen IPs.
Du willst alle Accounts durchschauen, oder?
Welches Plugin verwendest du, wie sieht deine Datenbank-/Tabellenstruktur aus? (Spalte IP?)
Schau dir mal diesen Thread an, da sind wir das mal ausführlich durchgegangen, wie das mit der Box sein muss:
Anklickbare TextDraws Funktionieren nicht
Die Box kannst du natürlich, wenn es mit dem Anklicken klappt auf TextDrawUseBox false setzen, aber zum anpassen des anklickbaren Bereichs eignet sich eine Box gut.
Aufpassen: Die Y-Größe (Höhe) sieht man an der Box nicht, die musst du abschätzen!