Wie sieht zudem denn das pBanGrund und pBanAdmin im enum zu pInfo aus? Poste das bitte mal.
Beiträge von Jeffry
-
-
Wand 1 bis 3 würde so aussehen:
SetObjectMaterial(CreateObject(19362, 1320.5771, -878.0583, 40.3257, 0.0000, 0.0000, 0.0000), 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);
SetObjectMaterial(CreateObject(19362, 1320.5771, -881.2683, 40.3257, 0.0000, 0.0000, 0.0000), 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);
SetObjectMaterial(CreateObject(19362, 1320.5771, -884.4783, 40.3257, 0.0000, 0.0000, 0.0000), 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);Das CreateObject gibt ja die ObjectID zurück. Anstatt diese in einer Variable zwischen zu speichern, wird sie direkt an SetObjectMaterial übergeben.
-
Ist doch identisch zu meinem Code, oder?
Nein, du erstellst ja jedes mal eine neue Variable:
new wand1 ...
new wand2 ...Ich würde dir aber sowieso die vorgeschlagene Variante 1 empfehlen.
-
Wir die Nachricht nicht angezeigt, oder nur der Grund und der Admin nicht?
Poste bitte dazu einen Screenshot aus der Datenbank, auf dem man den Grund und den Admin sieht, sowie das zu pInfo gehörende enum. -
Wenn du die Variable nie wieder brauchst, dann kannst du es so machen:
Ohne:
SetObjectMaterial(CreateObject(19362, 1327.0876, -876.3626, 40.3257, 0.0000, 0.0000, 90.0000), 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);
//...oder nur einmal deklarieren:
new tmp;
tmp = CreateObject(19362, 1327.0876, -876.3626, 40.3257, 0.0000, 0.0000, 90.0000);
SetObjectMaterial(tmp, 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);
//...
tmp = CreateObject(19362, 1327.0876, -876.3626, 40.3257, 0.0000, 0.0000, 90.0000);
SetObjectMaterial(tmp, 0, 4570, "stolenbuild03", "sl_dtbuild2wall1", 0xFFFFFFFF);Die Koordinaten musst du ohnehin irgendwo einfügen, sonst weiß der Code ja nicht wo er die Objekte erstellen soll.
-
Die Nachricht kommt aber schon, oder?
format(Banstring, sizeof(Banstring), "%s schreiben Sie ein Entbannantrag im Forum "FORUMNAME"\nDie Daten des Bannes\nDauer: Permanent\nGrund: %s\nVon: %s",Banstring,pBanGrund,pBanAdmin);
Zu
format(Banstring, sizeof(Banstring), "%s schreiben Sie ein Entbannantrag im Forum "FORUMNAME"\nDie Daten des Bannes\nDauer: Permanent\nGrund: %s\nVon: %s",Banstring,pInfo[playerid][pBanGrund],pInfo[playerid][pBanAdmin] );Da hättest du eigentlich auch zwei Warnungen bekommen sollen.
Versuche es mal so. -
@Jeffry wird immer noch nicht angezeigt

Dann erstelle bitte einen neuen Thread, und poste dort die aktuelle Version deines Ban Befehls, sowie die Login Funktion.
Prüfe auch, ob in der Datenbank der Grund und der Admin drin stehen. Steht das nicht drin, poste bitte zudem noch deine Speicherfunktion. -
Setze mal einen Print in die beiden Callbacks und schaue, ob der Print im Server Log steht, wenn du den Server verlässt bzw betrittst.
-
Ganz aussuchen kann er sich das nicht, es muss schon Sinn geben.

Am besten in die letzte Zeile des Gamemodes einfügen, da steht auf jeden Fall nichts im Weg.
-
format(SpielerInfo[playerid][pBanGrund], 32, mysql_GetString("accounts", "pBanGrund", "Name", SpielerName(playerid)));
format(SpielerInfo[playerid][pBanAdmin], MAX_PLAYER_NAME, mysql_GetString("accounts", "pBanAdmin", "Name", SpielerName(playerid)));
Das müsste so aussehen. -
Sorry für die späte Antwort, ich bin gestern Abend nicht mehr dazu gekommen, dir noch zu antworten.
Ich verstehe dein Vorhaben zwar noch immer nicht komplett, aber ich gebe dir jetzt mal einen Befehl, mit dem du die Häuser erstellen kannst. Wenn das nicht das ist, was du dir gedacht hast, dann kannst du es vielleicht auch selbst anpassen, ansonsten musst du nochmal erklären was du gerne haben willst.So würde der Befehl, den ich vorschlage, aussehen:
ocmd:hauserstellen(playerid,params[])
{
new interior;
if(sscanf(params, "d", interior)) return SendClientMessage(playerid, 0xFF0000FF, "Nutze: /hauserstellen [Interior]");
if(interior < 1 || interior > 19) return SendClientMessage(playerid, 0xFF0000FF, "Error: Nur Interiors zwischen 1 und 19 möglich.");
for(new i = 0; i < MAX_PLAYER_HAUS; i++)
{
if(Hauser[i][IntID] != 0) continue;
Hauser[i][IntID] = interior;
GetPlayerPos(playerid, Hauser[i][H_X], Hauser[i][H_Y], Hauser[i][H_Z]);
GetPlayerFacingAngle(playerid, Hauser[i][H_R]);
Hauser[i][ID] = CreatePickup(1273,1,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z],0);
new query[256];
format(query, sizeof(query), "INSERT INTO Hauser (IntID, H_X, H_Y, H_Z, H_R) VALUES ('%d', '%f', '%f', '%f', '%f')", Hauser[i][IntID], Hauser[i][H_X], Hauser[i][H_Y], Hauser[i][H_Z], Hauser[i][H_R]);
mysql_pquery(handle, query);
return 1;
}
return SendClientMessage(playerid, 0xFF0000FF, "Error: Es ist kein Platz mehr für ein weiteres Haus.");
}Dort kannst du dann die Interior ID direkt eingeben, gegebenenfalls auch noch andere Dinge, falls gewünscht, die musst du dann eben hinzufügen.
Schau mal ob du so damit klar kommst.
-
GiftBox[i][e_modelID] = dini_Int(path, "modelID");
Das brauchst du dort nicht, es wurde ja schon zuvor in die Variable geladen, beim Laden.
Entferne die Zeile dort. -
GiftBox[i][e_oID] = CreateDynamicObject(19054, GiftBox[i][e_x], GiftBox[i][e_y], GiftBox[i][e_z]+0.25, 0.0, 0.0, GiftBox[i][e_a]);
zu:
GiftBox[i][e_modelID] = dini_Int(path, "modelID");
GiftBox[i][e_oID] = CreateDynamicObject(GiftBox[i][e_modelID], GiftBox[i][e_x], GiftBox[i][e_y], GiftBox[i][e_z]+0.25, 0.0, 0.0, GiftBox[i][e_a]);So.
Das e_modelID musst du im enum zu GiftBox einfügen.
Vergesse beim Speichern das dini_IntSet von "modelID" mit GiftBox[i][e_modelID] nicht.
dini_IntSet(pfad, "modelID", GiftBox[i][e_modelID]); -
Schau dir mal diesen Code hier an:
MoveObject 360° ?!Wenn du das mit OnPlayerKeyStateChange verbindest, dann kannst du das so machen.
-
ocmd:ban(playerid,params[])
{
if(!isPlayerAnAdmin(playerid,2))return SCM(playerid,TESTFARBE,"Du hast nicht die benötigten Rechte!");
{
new pID, reason[128],string[128], query[144];
if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,ROT,"{FFD200}Benutze:{FEFEFE}/Ban [ID] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_RED,"Diese Spieler ist nicht online");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Bot Bannen !");
format(string,sizeof(string),"[BANNED]: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
SendClientMessageToAll(0x9B0000FF,string);
mysql_SetString("accounts", "pBanGrund", reason, "Name", SpielerName(pID));
mysql_SetString("accounts", "pBanAdmin", SpielerName(playerid), "Name", SpielerName(pID));
format(string,sizeof(string),"~r~Du wurdest gebannt !~n~Grund: %s",reason);
GameTextForPlayer(pID, string, 30000, 4);
TogglePlayerControllable(pID,0);
GetPlayerName(pID, string, MAX_PLAYER_NAME); //Hinzugefügt
format(query,sizeof(query),"UPDATE accounts SET Baned=1 WHERE Name='%s'",string);
mysql_query(query);
pInfo[pID][pBaned] = 1;
format(SpielerInfo[pID][pBanGrund], 32, reason);
format(SpielerInfo[pID][pBanAdmin], MAX_PLAYER_NAME, SpielerName(playerid));
s_Kick(pID);
}
return 1;
}Außerdem musst du das so auch beim Login des Users so in die Variablen eintragen lassen, bzw. dort wo geprüft wird, ob der Spieler gebannt wird, irgendwo vor der Nachricht, falls die nicht durch das s_Kick erzeugt wird.
-
Das kannst du dann relativ einfach so machen:
CMD:giftcreate(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid,RED, "/giftboxcreate [1-5]");
new item = strval(params);
if(item < 1 || item > 5) return SendClientMessage(playerid,RED, "/giftboxcreate [1-5]");
if(!CheckAdminName(playerid)) return SendClientMessage(playerid, RED, "{FF1717}ERROR:{FFFFFF} You have no acces to use this command.");
for(new i=0; i<MaxGifts; i++)
{
if(GiftBox[i][e_x] == 0.0 && GiftBox[i][e_y] == 0.0 && GiftBox[i][e_z] == 0.0)
{
switch(item)
{
case 1: GiftBox[i][e_modelID] = 19054;
case 2: GiftBox[i][e_modelID] = 19055;
//...
}
//Daten werden übergeben
new Float:x, Float:y, Float:z, Float:a;
new pID;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
GiftBox[i][e_x] = x;
GiftBox[i][e_y] = y;
GiftBox[i][e_z] = z - 0.4;
GiftBox[i][e_a] = a;
GiftBox[i][e_oID] = CreateDynamicObject(GiftBox[i][e_modelID],x, y, z+0.05 - 0.4, 0.0, 0.0,a);
GiftBox[i][e_label] = CreateDynamic3DTextLabel("/takegift",0x10F441AA,GiftBox[i][e_x], GiftBox[i][e_y], GiftBox[i][e_z]+0.25,8.0);
GetPlayerPos(pID, x,y,z);
SetPlayerPos(pID, x, y, z+2);
//Zuletzt wird die Datei angelegt und das Giftbox gespeichert.
new path[64];
format(path, sizeof(path), "/GiftBoxes/%d.ini", i);
dini_Create(path);
SaveGiftBoxCheck(i);
new string[100];
format(string, sizeof(string), "{00FFFF}Giftbox {FFFF00}(%i) {00FF00}created.",i);
return SendClientMessage(playerid,WHITE, string);
}
}
return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You reached the Limit of the GiftBoxes");
}Im Enum zu den GiftBox'es musst du dann noch e_modelID, einfügen, und das auch beim Laden und Speichern einbauen, damit die richtige Objekt Model ID geladen wird.
-
Wie speicherst du die Daten, beim Ban und beim Login, in die Variablen?
-
Ändert die Art des Geschenks nur das Objekt, also die Model ID des Objektes?
-
Die bleibt bestehen, da ja kein Timer gestartet wird, die mit der Spieler ID verbunden ist. Das geht ja nicht, denn wenn der Spieler offline ist, dann besteht da ja keine Verbindung mehr, oder wenn der Server neu gestartet wird.
An sich kann man sich das auch zum Vorteil machen, indem man zum Beispiel dort auch Statistiken über die Geschenke speichert, zum Beispiel wie viele Geschenke der User aufgenommen hat, und wie viel Geld er damit verdient hat. Muss man aber nicht. -
pBanGrund,
pBanAdmin,
zu:
pBanGrund[32],
pBanAdmin[MAX_PLAYER_NAME],Und dann:
new Banstring[512];
format(Banstring, sizeof(Banstring), "Ihr Spieler-Account wurde gesperrt!\n\nAufgrund eines Regelverstoßes wurde ihr Spieleraccount gesperrt!\nSollte dies ein Fehlban sein,");
format(Banstring, sizeof(Banstring), "%s schreiben Sie ein Entbannantrag im Forum "FORUMNAME"\nDie Daten des Bannes\nDauer: Immer\nGrund: %s\nVon: %s",Banstring,SpielerInfo[playerid][pBanGrund],SpielerInfo[playerid][pBanAdmin]);
ShowPlayerDialog(playerid,DIALOG_BANG,DIALOG_STYLE_MSGBOX,"Sie wurden Gesperrt",Banstring,"EXIT","");