Lade dir das MySQL Plugin nochmal herunter, dort findest du dann im Ordner eine mysql_static.so. Nimm das, da dort diese Library bereits eingebaut ist.
Beiträge von Jeffry
-
-
if(dialogid==DIALOG_ARANG)
{
if(response==0)
{
SendClientMessage(playerid,Rot,"Abgebrochen");
}
if(response==1)
{
SetPVarInt(playerid, "gewRang", listitem+1);
ShowPlayerDialog(playerid, DIALOG_ARANG_NAME, DIALOG_STYLE_INPUT, "Name", "Gebe den Name ein:", "Ok", "Abbrechen");
}
return 1;
}if(dialogid == DIALOG_ARANG_NAME)
{
if(response == 1)
{
format(aRangName[GetPVarInt(playerid, "gewRang")], 32, inputtext);
//dann ein Query, das musst du an deine Datenbank anpassen:
new query[128];
format(query, sizeof(query), "UPDATE tabelle SET rangname = '%s' WHERE rangid = %d", aRangName[GetPVarInt(playerid, "gewRang")], GetPVarInt(playerid, "gewRang"));
mysql_query(query);
}
return 1;
}Nach diesem Prinzip. Das query musst du wie gesagt anpassen, da ich den exakten Aufbau deiner Datenbank nicht kenne. Das wirst du aber hinbekommen.
-
Poste dann einfach mal den Code mit dem du den Spieler timebanst und mit dem er automatisch entbannt wird.
-
Das kann ich dir leider auch nicht sagen, ich kann ja nicht hellsehen, wie deine Datenbank bzw Tabelle heißt und aufgebaut ist.
Wenn du diese Informationen postest, dann kann ich oder jemand anderes dir auch helfen. -
Ein Spieler der gebannt ist kann ja schlecht online sein.
Also so:
ocmd:unban(playerid,params[])
{
new name[50],string[128];
if(SpielerInfo[playerid][pAdminlevel] < 3) return SendClientMessage(playerid,Rot,"Möglich ab: "COLO" Adminrank 3");
if(sscanf(params,"s[50]",name))return SendClientMessage(playerid,Rot,""COLO"Verwendung: "COLR"/unban [Name]");
mysql_SetInt(Tabelle_Spieler,"Ban",0,"Name",name);
format(string,sizeof(string),"Du hast den Spieler %s ungebannt!",name);
SendClientMessage(playerid,Rot,string);
return 1;
} -
Solche Fragen gehören eigentlich in einen eigenen Thread, da das keine "kleine Frage" ist (so viel Code macht diesen Thread sehr unübersichtlich, vor allem wenn es nicht gleich klappt).
Ich erkläre dir mal wie du vorgehen musst:
Du erstellst global unter den Includes folgende Variable:
new Float:totenKopfPos[MAX_PLAYERS][3];Beim Erstellen des Totenkopfs speicherst du dann x in totenKopfPos[playerid][0], y in [1] und z in [2].
Beim /wiederbeleben dann in das IsPlayerInRangeOfPoint die totenKopfPos[i][0] bis 3 packen.
Wenn du Fragen hast, kannst du natürlich gerne nachfragen.
-
Okay, und wie wär dass mit den Timeban? Das der Timeban entfertn wird?
Je nach dem wie deine Spalte für den Timeban heißt.
format(query,sizeof(query),"UPDATE user SET TimeBanned = 0 WHERE Name='%s'",unbanname); -
Das richtige query wäre:
format(query,sizeof(query),"UPDATE user SET Banned = 0 WHERE Name='%s'",unbanname); -
Du könntest ja die ID des aktiven Checkpoints in eben so eine Variable speichern, dann kannst du ihn so löschen.
Da ich deinen Code nicht kenne kann ich es dir nicht genauer sagen. -
Mit:
DestroyDynamicCP(GetPVarInt(playerid, "PlayerCarThief_Checkpoint0"));Je nach dem wie der Rest deines Systems aufgebaut ist.
-
Vor:
if((checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")
die "{" muss "}" sein. Sonst gehen zwei Klammern auf und keine zu.
und:
if((checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")
zu:
if(checkpointid == GetPVarInt(playerid, "PlayerCarThief_Checkpoint0")) -
Der Teil hier muss unter OnPlayerEnterDynamicCP:
if(checkpointid == cp1)
{
DestroyDynamicCP(checkpointid);
SendClientMessage(playerid, COLOR_RED, "Du hast den Checkpoint erreicht");
return 1;
}new cp1;
muss unter die Includes. -
Du musst es genau andersherum machen, weil wenn du Level 1337 bist, dann bist du ja auch Level 1 (du prüfst auf level >=).
public OnPlayerSpawn(playerid)
{
if(IstSpielerAdmin(playerid, 1337))
{
new Text3D:ownerlabel = Create3DTextLabel("Server Owner", COLOR_PURPLE, 30.0, 40.0, 50.0, 20.0, 0);
Attach3DTextLabelToPlayer(ownerlabel, playerid, 0.0, 0.0, 0.7);
return 1;
}
else if(IstSpielerAdmin(playerid, 3))
{
new Text3D:adminlabel = Create3DTextLabel("Administaror", COLOR_YELLOW, 30.0, 40.0, 50.0, 20.0, 0);
Attach3DTextLabelToPlayer(adminlabel, playerid, 0.0, 0.0, 0.7);
return 1;
}
else if(IstSpielerAdmin(playerid, 2))
{
new Text3D:modlabel = Create3DTextLabel("Moderator", COLOR_YELLOW, 30.0, 40.0, 50.0, 20.0, 0);
Attach3DTextLabelToPlayer(modlabel, playerid, 0.0, 0.0, 0.7);
return 1;
}
else if(IstSpielerAdmin(playerid, 1))
{
new Text3D:supportlabel = Create3DTextLabel("Supporter", COLOR_YELLOW, 30.0, 40.0, 50.0, 20.0, 0);
Attach3DTextLabelToPlayer(supportlabel, playerid, 0.0, 0.0, 0.7);
return 1;
}
return 1;
} -
OnPlayerEnterDynamicPickup()
Er hat einen Checkpoint erstellt, kein Pickup.
DeaN Hunter:
Du musst den Checkpoint so erstellen:
cp1=CreateDynamicCP(1480.8396,-1770.6718,18.7958,5.0,-1,-1,-1,10000.0);
und global, unter den Includes:
new cp1;
Dann siehst du ihn von überall. Hast du aber mehrere Checkpoints, dann zeigt es dir nur den dir am nächsten Checkpoint an, da SA-MP pro Spieler nur einen Checkpoint anzeigen kann. Wenn du diese auf der Karte markieren willst, dann nimm dafür Map Icons.Löschen kannst du einen Checkpoint beim betreten in:
OnPlayerEnterDynamicCP
if(checkpointid == cp1) DestroyDynamicCP(checkpointid); -
Meh.
Dann nimm das hier:
http://forum.sa-mp.com/showpost.php?p=1819909&postcount=6Somit speicherst du R G B A jeweils einzeln (Werte von 0 - 255).
-
if(tmp_doors==1){
tmp_doors = 0;
SendClientMessage(playerid, 0xFFFFFFFF, "Aufgeschlossen.");
}else{
tmp_doors = 1;
SendClientMessage(playerid, 0xFFFFFFFF, "Abgeschlossen.");
} -
Nutzt du das Plugin oder die stock Funktion?
Versuch es ggf. mal so:
ocmd:news(playerid, params[])
{
if(!isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,-1,"Du bist kein News Reporter!");
new Nachricht[145];
if(sscanf(params,"s[145]", Nachricht))return SendClientMessage(playerid, COLOR_GREEN, "INFO: /news [Nachricht]");
format(Nachricht,sizeof Nachricht,"{FFAC00}*Journalist {FFFFFF} %s:{FFAC00} %s*", GetName(playerid), Nachricht);
SendClientMessageToAll(COLOR_ORANGE, Nachricht);
return 1;
} -
Mach das zweite return 1 weg und schreib den ganzen Code-Block als erstes unter OnPlayerDeath.
Falls es immer noch nicht geht, poste dein OnPlayerSpawn. -
Ändere das mal zu:
for(new vehSlot=0;vehSlot<MAX_PLAYER_VEHICLES;vehSlot++)
{
LoadPlayerVehicles(playerid, vehSlot);
}Und :
mysql_query("SELECT * FROM script_vehicles WHERE Name='%s'",SpielerInfo[playerid][pName]);
zu:
mysql_query("SELECT * FROM script_vehicles WHERE vehBesitzer='%s' AND Slot = '%d'",SpielerInfo[playerid][pName], slot); -
Der Log passt nicht zu dem Code den du da gepostet hast.
Poste mal den Code, der dieses Query beinhaltet:Damit rufst du nämlich das public LoadPlayerVehicles auf, also so wie das aussieht, nutzt du möglicherweise doch ein Plugin mit Cache Funktionen.
Welches Plugin verwendest du denn eigentlich?