zusätzlich die funktion über nen dialog die zeit zu bestimmen wäre nett
ansonsten 8/10
klein aber fein
zusätzlich die funktion über nen dialog die zeit zu bestimmen wäre nett
ansonsten 8/10
klein aber fein
habe das mal nach vielem hin und her umgesetzt.
möchte dem Admin der versucht zu unbannen eine Nachricht senden wenn der Spieler nicht Existiert oder nicht gebannt ist wie mache ich das jetzt?
danke für eure hilfe
der jetzige CODE
DANKE DANKE
und nun mit den obigen zeilen bitte was konstruktives creieren da ich wenig ahnung von mysql habe
ja überprüfen ob der spieler existiert danach überprüfen ob er gebannt ist und wenn das alles der fall ist dann entbannen ansonsten nur meldungen geben
mir entfällt diese geniale idee wie ich es umsetzten soll
bitte helft mir weil ich kaum ahnung von mysql habe
einfach nur wo muss was hin
danke erstmal habe es jetzt mal so probiert aber fraglich ob das funktioniert
ocmd:unban(playerid,params[])
{
if(sInfo[playerid][alevel]>=5)
{
new name[128],query[128],wert;
if(sscanf(params,"s",name))return SendClientMessage(playerid,CL_HGRÜN,"Info: /unban [SpielerName] versuche es erneut.");
{
format(query,sizeof(query),"SELECT 'BANED' FROM `Benutzer` WHERE `Name`='%s'",name);
mysql_function_query(dbhandle,query,true,"BANED","is",wert,name);
//hier alle namen abrufen die eingegeben wurden=1 name
return 1;
}
}
//Ansonsten
return 1;
}
forward BANED(playerid,wert,name);
public BANED(playerid,wert,name)
{
new num_rows;
if(num_rows==1)
{
new query[128];
if(wert==0)return SendClientMessage(playerid,CL_KNALLROT,"Der Spieler ist nicht gebannt.");
format(query,sizeof(query),"UPDATE 'BANED'='0' FROM `Benutzer` WHERE `Name`='%s'",name);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
else if(num_rows==0)
{
SendClientMessage(playerid,CL_KNALLROT,"Der Spieler existiert nicht");
return 1;
}
return 1;
}
danke schonmal für die erste hilfe
MFG Nils
edit aktueller code ohne funktion bzw wir bekommen gar keine meldung...
Hallo Communuty,
ich möchte gerne einen Unban befehl machen.
ich kann den spieler schon bannen und auch wird er beim nächsten login vom server geschmissen wenn er gebannt ist nun ist die frage.
wie unbanne ich ihn also ich möchte ja alle namen abrufen die im (inputtext) eingegeben wurden also /unban [XYNAME] wenn dieser existiert soll dieser unbanned werden ansonsten soll kommen dieser spieler existiert nicht und wenn er nicht gebannt ist. dieser spieler ist nicht gebannt
habe mal angefangen komme aber nicht ganz weiter...
ocmd:unban(playerid,params[])
{
if(sInfo[playerid][alevel]>=5)
{
new name[128];
if(sscanf(params,"s",name))return SendClientMessage(playerid,CL_HGRÜN,"Info: /unban [SpielerName] versuche es erneut.");
{
//hier alle namen abrufen die eingegeben wurden=1 name
return 1;
}
}
//Ansonsten
return 1;
}
mal schauen ob ihr mir helfen könnt
MFG Nils
PS: rechtschreibung kostet geld also entschuldigt bitte
ein klammerfehler schliesse ich schonmal aus aber versetze mal die klammern und returne eventuell
Ist getestet und Nico war so nett und hat es mit mir getestet und hat mir auch noch geholfen,
was soll ich zu was ändern
ja die clickedid wird ja aus dem public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
if(sInfo[playerid][alevel]==0)return 1;
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
ShowPlayerDialog(playerid,DIALOG_CLICK_FROM_ADMIN,DIALOG_STYLE_LIST,name,"Goto\nGethere\nKick\nBan\nHealth","OK","Abbrechen");
clickedid = clickedplayerid;
return 1;
}
genommen und gespeichert wenn das dann funktioniert?
das heisst?
erklär mal was das ist...
kann ich es auf meiner domain verwenden =?
forum.marsrl.de
marsrl.de
Hallo Communuty,
ich habe versucht ein kleines Dynamisches und einfaches Teleportsystem für Admins zu Creaieren.
Es scheiterte an dem problem das ich mich(id = 0) zuerst versuche zu jemand anderen zu porten (id=1) aber dahin komme und anschlissend versuche mich zu mir selber zu porten ich aber zu id 1 komme
hier der Code
new Float:X,Float:Y,Float:Z,pID;
clickedid = pID;
GetPlayerPos(pID,Float:X,Float:Y,Float:Z);
SetPlayerInterior(playerid,GetPlayerInterior(pID));
SetPlayerPosFindZ(playerid,Float:X+1,Float:Y,Float:Z);
new nachricht[129];
format(nachricht,sizeof(nachricht),"ADMCMD: Du hast dich zu %s Teleportiert.",SpielerName(clickedid));
SendClientMessage(playerid,CL_HROT,nachricht);
new nachricht2[127];
format(nachricht2,sizeof(nachricht2),"ADMCMD: Admin %s hat sich zu dir Teleportiert. ",SpielerName(playerid));
SendClientMessage(pID,CL_HROT,nachricht2);
printf("ID=%i",clickedid);
return 1;
Danke im vorraus
zudem habe ich keine errors und warnings
also so habe ich es beim speichern....
saveplayer(playerid)
{
if(sInfo[playerid][eingeloggt]==0) return 1;
//Speichern level,money,(alevel)
new query[128];
sInfo[playerid][geld] = GetPlayerMoney(playerid);
format(query,sizeof(query),"UPDATE Benutzer SET LEVEL='%i', GELD='%i',ALEVEL=%i WHERE DB_ID='%i' ",sInfo[playerid][level],sInfo[playerid][geld],sInfo[playerid][alevel],sInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
return 1;
}
abgesehen das bei dir andere sachen stehen
viel Glück
ich sage nur ich habe angefangen was zu machen am nächsten tag vergessen weiter zu machen
das
format(query,sizeof(query),"UPDATE user SET level='%i',Money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo,sInfo[playerid][db_id]);
zu
format(query,sizeof(query),"UPDATE user SET level='%i',Money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
und jetzt findet den fehler
auflösung es war ein ,sInfo, und da hatte ich nicht weitergemacht aber danke
MFG Nils
Mein Problem ist, dass ich ingame zwar z.B geld bekommen kann, diese aktualisierung aber nicht in die DB geschrieben wird. bitte um Hilfe
Danke vorerst
savePlayer(playerid)
{
if(sInfo[playerid][eingeloggt]==0)return 1;
//Speichern level,money
new query[256];
format(query,sizeof(query),"UPDATE user SET level='%i',Money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo,sInfo[playerid][db_id]);
mysql_function_query(dbhandle,query,false,"","");
printf("savePlayer Wurde aufgerufen");
printf("Level = %i, Money = %i,alevel = %i, fraktion=%i",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion]);
return 1;
}
in der Console wird das aktualiesierte bereits geprintet aber es liegt am UPDATE....
MFG
Nils24
das habe ich bereits im script nun die frage was muss ich am ende der formatierung ändern
hier ma der komplette Code der damit zu tun hat
Bei OnPlayerClickPlayer
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
if(PlayerInfo[playerid][pAdmin] == 0 || PlayerInfo[playerid][pAdmin] == 1) return 1;
if(PlayerInfo[playerid][pAdmin] >= 2)
{
ShowPlayerDialog(playerid,DIALOG_CLICKEN_PLAYER_ADMIN,DIALOG_STYLE_LIST,PlayerInfo[playerid][pName],"Goto\nGethere\nKick\nBan\nHealth\nSlap\nTV\nInterior","OK","Abbrechen");
pClicked[playerid] = clickedplayerid;
return 1;
}
return 1;
}
Dann bei OnDialogResponse
new sendername[MAX_PLAYER_NAME];
new Float:leben;
GetPlayerName(playerid,sendername,sizeof(sendername));
if(dialogid == DIALOG_CLICKEN_PLAYER_ADMIN)
{
switch(listitem)
{
case 0:
{
new Float:X,Float:Y,Float:Z;
new nachricht[129];
new string[128];
new pID;
new pname[128];
GetPlayerName(pID,pname,sizeof(pname));
GetPlayerPos(pClicked[playerid],X,Y,Z);
SetPlayerPos(playerid,X+1,Y+1,Z);
format(string,sizeof(string),"ADMCMD: Du hast dich zu %s Teleportiert. ",pname);
SendClientMessage(playerid,knallrot,string);
format(nachricht,sizeof(nachricht),"ADMCMD: Admin %s hat sich zu dir teleportiert!",PlayerInfo[playerid][pName]);
SendClientMessage(pClicked[playerid],knallrot,nachricht);
return 1;
}
case 1:
{
new Float:X,Float:Y,Float:Z;
new nachricht[129];
new string[128];
new pname[MAX_PLAYER_NAME];
new name[128];
new pID;
if(PlayerInfo[playerid][pAdmin] < PlayerInfo[pID][pAdmin]) return SendClientMessage(pID,knallrot,"ADMCMD-Fehler: Du hast dazu keine berechtigung !");
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(pID,pname,sizeof(pname));
GetPlayerPos(playerid,X,Y,Z);
SetPlayerPos(pClicked[playerid],X+1,Y+1,Z);
format(string,sizeof(string),"ADMCMD: Du hast %s zu dir Teleportiert. ",pname);
SendClientMessage(playerid,knallrot,string);
format(nachricht,sizeof(nachricht),"ADMCMD: Du wurdest von dem Admin %s zu sich teleportiert !",name);
SendClientMessage(pClicked[playerid],knallrot,nachricht);
return 1;
}
case 2: return ShowPlayerDialog(playerid,DIALOG_KICKINPUT,DIALOG_STYLE_INPUT,"Gebe einen Grund an:","Um den Spieler Kicken zu können, musst du zunächst einen Grund angeben!","Kicken","Abbrechen");
case 3:
{
}
case 4:
{
}
case 5:
{
}
case 6:
{
}
case 7:
{
}
}
return 1;
}
und den Kick Dialog der eig nichts damit zu tun hat
if(dialogid == DIALOG_KICKINPUT)
{
if(!response) return 1;
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,DIALOG_KICKINPUT,DIALOG_STYLE_INPUT,"Gebe einen Grund an:","Um den Spieler Kicken zu können, musst du zunächst einen Grund angeben!","Kicken","Abbrechen");
new kicktext[200];
format(kicktext, 200, "ADMCMD: %s wurde von %s vom Server gekickt! Grund: %s", PlayerInfo[pClicked[playerid]][pName],PlayerInfo[playerid][pName],inputtext);
SendClientMessage(playerid, COLOR_ORANGE, kicktext);
KickedPlayer(pClicked[playerid]);
return 1;
}
Danke schonmal