Danke, aber finde die Schreibweise etwas kompliziert und etwas "überflüssig" da es sowieso nicht mehr als 33 TextDraws werden.
Trotzdem gut zu wissen
Danke, aber finde die Schreibweise etwas kompliziert und etwas "überflüssig" da es sowieso nicht mehr als 33 TextDraws werden.
Trotzdem gut zu wissen
Schreibweise etwas kompliziert
Makros sind nice
//Hier paar Makros:
#define LoopTextDraws(%0,%1,%2) new __@tmp=_:(%2);for(new %0=_:(%1); (%0) < __@tmp; (%0)++)
//Und zur Deklaration:
new PlayerText:x = CreatePlayerTextDraw(..); //Es reicht hier nur x zu nutzen
//Unter das erste TextDraw:
LoginTextDraw[playerid][0] = x;
//Unter das letzte TextDraw:
LoginTextDraw[playerid][1] = x;
//Loop:
LoopTextDraws(textid, LoginTextDraw[playerid][0], LoginTextDraw[playerid][1])
{
PlayerTextDrawHide(playerid, PlayerText:textid);
}
//Oder mit PVars:
#define LoopTextDraws(%0,%1,%2,%3) new __@tmp=GetPVarInt(%0,%3);for(new %1=GetPVarInt(%0,%2); (%1) < __@tmp; (%1)++)
#define SetPointer(%0,%1,%2) SetPVarInt(%0,%1,_:(%2))
#define DeletePointer(%0,%1) DeletePVar(%0,%1)
//zur Deklaration:
new PlayerText:x = CreatePlayerTextDraw(..); //Es reicht hier nur x zu nutzen
//Unter das erste TextDraw:
SetPointer(playerid, "Start", x);
//Unter das letzte TextDraw:
SetPointer(playerid, "Ende", x);
LoopTextDraws(playerid, textid, "Start", "Ende")
{
PlayerTextDrawHide(playerid, PlayerText:textid);
PlayerTextDrawDestroy(playerid, PlayerText:textid);
}
DeletePointer(playerid, "Start");
DeletePointer(playerid, "Ende");
Alles anzeigen
Hahah xD
Aber ist okay, dein Skript
Gelöst.
Guten Abend,
ich möchte gerne das ich im Dialog alle Befehle anzeigen lassen wenn er den Rang dazu hat.
Entspricht:
Rang 1: Alle Befehle für Rang 1
Rang 2: Alle Befehle von Rang 1 und dazu dann die von Rang 2.
So wie ich es habe, klappt es leider nur mit dem Aktuellen Rang den man hat.
CMD:ahelp(playerid, params[])
{
if(!sInfo[playerid][sEingeloggt])return 1;
new string[512];
switch(sInfo[playerid][sAdminrang])
{
case 0: SendClientMessage(playerid, -1, "["#FARBE_WEISS"SERVER"#FARBE_WEISS"]: Du hast "#FARBE_ROT"nicht die Rechte "#FARBE_WEISS"diesen Befehl zu nutzen!");
case 1:
{
format(string, sizeof(string), "Porbe Supporter haben noch keine Befehle!");
}
case 2:
{
format(string, sizeof(string), "%s"#FARBE_TÜRKIS"/kick", string);
}
}
ShowPlayerDialog(playerid, DIALOG_ADMIN_HILFE, DIALOG_STYLE_MSGBOX, "Admin Befehle", string, "OK", "");
return 1;
}
Mit freundlichen Grüßen,
if(checkpointid == bmxo[playerid])
{
SetPlayerAttachedObject(playerid,0,1264,6,0.165999,0.003000,-0.184999,0.000000,0.000000,0.000000,0.498999,0.466999,0.489000);
ApplyAnimation(playerid,"CARRY","liftup",4.1,0, 0, 0, 1, 1);
ClearAnimations(playerid,1);
SetPlayerSpecialAction(playerid,25);
new Float:vX,Float:vY,Float:vZ;
GetPosVorVeh(pMuellAuto[playerid], -5.0, vX, vY, vZ);
DestroyDynamicCP(bmxo[playerid]);
bmxo[playerid] = -1;
fahrzeug[playerid] = CreateDynamicCP(vX,vY,vZ,4.0,-1,-1,playerid,30.0);
TogglePlayerDynamicCP(playerid,fahrzeug[playerid],1);
new rand1 = 5+random(3);
muellsacke[pMuellAuto[playerid]] = rand1;
return 1;
}
else if(checkpointid == fahrzeug[playerid])
{
if(kubik[pMuellAuto[playerid]] == 5.0)
{
SendClientMessage(playerid,COLOR_RED,"Das Fahrzeug ist voll, benutze /garbagestop");
ClearAnimations(playerid,1);
SetPlayerSpecialAction(playerid,0);
RemovePlayerAttachedObject(playerid, 0);
kubik[pMuellAuto[playerid]] = 0;
DestroyDynamicCP(fahrzeug[playerid]);
fahrzeug[playerid] = -1;
}
else
{
if(muellsacke[pMuellAuto[playerid]] == 1)
{
muellsacke[pMuellAuto[playerid]] = 0;
ClearAnimations(playerid,1);
SetPlayerSpecialAction(playerid,0);
RemovePlayerAttachedObject(playerid, 0);
DestroyDynamicCP(fahrzeug[playerid]);
fahrzeug[playerid] = -1;
kubik[pMuellAuto[playerid]] += 0.5;
new rand = random(sizeof(bmx1));
bmxo[playerid] = SetPlayerCheckpointEx(bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],5.0,-1,-1,playerid,1000.0); //14089
return 1;
}
else
{
new string[123],string2[123];
ClearAnimations(playerid,1);
SetPlayerSpecialAction(playerid,0);
kubik[pMuellAuto[playerid]] += 0.5;
muellsacke[pMuellAuto[playerid]] -= 1;//HIER
RemovePlayerAttachedObject(playerid, 0);
format(string,sizeof(string),"Kubik: %0.1f/15.0",kubik[pMuellAuto[playerid]]);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
format(string2,sizeof(string2),"Müllsäcke: %d",muellsacke[pMuellAuto[playerid]]);
SendClientMessage(playerid,COLOR_LIGHTBLUE,string2);
DestroyDynamicCP(fahrzeug[playerid]);
fahrzeug[playerid] = -1;
new globalVar[MAX_PLAYERS][3];
bmxo[playerid] = DisablePlayerCheckpointEx(globalVar[playerid][0],globalVar[playerid][1],globalVar[playerid][2],4.0,-1,-1,playerid,30.0); //14107
return 1;
}
}
}
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14089) : warning 213: tag mismatch
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14089) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(14107) : warning 202: number of arguments does not match definition
warum errors?
-
Alles anzeigenGuten Abend,
ich möchte gerne das ich im Dialog alle Befehle anzeigen lassen wenn er den Rang dazu hat.
Entspricht:
Rang 1: Alle Befehle für Rang 1
Rang 2: Alle Befehle von Rang 1 und dazu dann die von Rang 2.
So wie ich es habe, klappt es leider nur mit dem Aktuellen Rang den man hat.
CMD:ahelp(playerid, params[]){ if(!sInfo[playerid][sEingeloggt])return 1; new string[512]; switch(sInfo[playerid][sAdminrang]) { case 0: SendClientMessage(playerid, -1, "["#FARBE_WEISS"SERVER"#FARBE_WEISS"]: Du hast "#FARBE_ROT"nicht die Rechte "#FARBE_WEISS"diesen Befehl zu nutzen!"); case 1: { format(string, sizeof(string), "Porbe Supporter haben noch keine Befehle!"); } case 2: { format(string, sizeof(string), "%s"#FARBE_TÜRKIS"/kick", string); } } ShowPlayerDialog(playerid, DIALOG_ADMIN_HILFE, DIALOG_STYLE_MSGBOX, "Admin Befehle", string, "OK", ""); return 1;}
Mit freundlichen Grüßen,
Dafür musst du bei jedem case die format Zeile des vorherigen case einfügen, sprich:
CMD:ahelp(playerid, params[])
{
if(!sInfo[playerid][sEingeloggt])return 1;
new string[512];
switch(sInfo[playerid][sAdminrang])
{
case 0: SendClientMessage(playerid, -1, "["#FARBE_WEISS"SERVER"#FARBE_WEISS"]: Du hast "#FARBE_ROT"nicht die Rechte "#FARBE_WEISS"diesen Befehl zu nutzen!");
case 1:
{
format(string, sizeof(string), "Porbe Supporter haben noch keine Befehle!");
}
case 2:
{
format(string, sizeof(string), "%s\n"#FARBE_TÜRKIS"/kick", string);
}
case 3:
{
format(string, sizeof(string), "%s\n"#FARBE_TÜRKIS"/kick", string);
format(string, sizeof(string), "%s\n"#FARBE_TÜRKIS"Befehle für Admin-Rang 3",string);
}
}
ShowPlayerDialog(playerid, DIALOG_ADMIN_HILFE, DIALOG_STYLE_MSGBOX, "Admin Befehle", string, "OK", "");
return 1;
}
(und natürlich ein"\n" für die nächste Zeile)
@TheOneBehindYou1 Danke, das klappt fast richtig!
Mir wird aber noch nicht das Angezeigt von case 1.
MfG.
Weiß jemand zufällig, warum nichts in die Datenbank eingetragen wird?
switch(type)
{
case 0:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', Server betreten, '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 1:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', Server verlassen, '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 2:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', Account eingeloggt, '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 3:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', Falsches Passwort, '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 4:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', Registriert, '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
}
mysql_pquery(MySQL, query);
switch(type)
{
case 0:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', 'Server betreten', '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 1:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', 'Server verlassen', '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 2:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', 'Account eingeloggt', '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 3:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', 'Falsches Passwort', '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
case 4:
{
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (Spieler, Methode, Uhrzeit, IP) VALUES ('%s', 'Registriert', '%s', '%s')", SpielerInfo[playerid][sName], time, pIP);
}
}
mysql_pquery(MySQL, query);
Alles anzeigen
Hey, @ShinoX! Sollte jetzt funktionieren - Probier es aus.
Mit freundlichen Grüßen
Paymon
Kurze Frage noch anbei, wäre das Schwachsinn mit cache_insert_id()?
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (ID, Spieler, Methode, Uhrzeit, IP) VALUES ('%d', '%s', 'Registriert', '%s', '%s')",cache_insert_id(), SpielerInfo[playerid][sName], time, pIP);
//e: Ja ist es, merke ich gerade selber.
Wie mache ich das mit der ID, die immer einen hochgeht in der Datenbank?
Kurze Frage noch anbei, wäre das Schwachsinn mit cache_insert_id()?
mysql_format(MySQL, query, sizeof(query), "INSERT INTO `script_playerinfo` (ID, Spieler, Methode, Uhrzeit, IP) VALUES ('%d', '%s', 'Registriert', '%s', '%s')",cache_insert_id(), SpielerInfo[playerid][sName], time, pIP);
//e: Ja ist es, merke ich gerade selber.
Wie mache ich das mit der ID, die immer einen hochgeht in der Datenbank?
Hey, @ShinoX! Hier schau dir diesen Screenshot an: http://prntscr.com/dhj3tf
Mit freundlichen Grüßen
Paymon
Für den Fall dass du phpMyAdmin verwendest sieht das ganze folgendermaßen aus:
Hier dann einfach den Hacken bei "A_I" setzen, den aktuellen Autoincrement-Index kannst du im Reiter "Operationen noch anpassen
CAlles anzeigennew File:f = fopen("logs/Bugreports.txt",io_read); if(!f) return 1; //Keine Berechtigung const rows = 10; //Wie viele Namen du angezeigt bekommen möchtest new buffer[256],tmp[128],stack[MAX_PLAYER_NAME*rows],x,y,counter,n[16]; while(fread(f, buffer)) { x = strfind(buffer,"]"), y = strfind(buffer,":",false,x); strmid(tmp,buffer,x+1,y,sizeof(tmp)); strcat(tmp,"\n"),strcat(stack, tmp); strmid(tmp,buffer,y+2,strlen(buffer),sizeof(tmp)); format(n,sizeof(n),"bug_%d",counter++); SetPVarString(playerid,n,tmp); } SetPVarInt(playerid,"bug_length",counter); fclose(f); ShowPlayerDialog(playerid,DIALOG_BUSREPORTS,DIALOG_STYLE_LIST,"Log",stack,"Bestätigen",""); //Und dann unter OnDialogResponse if(dialogid == DIALOG_BUSREPORTS) { if(!response) return DeleteBugCache(playerid); new string[128],n[16]; format(n,sizeof(n),"bug_%d",listitem); GetPVarString(playerid,n,string,sizeof(string)); ShowPlayerDialog(playerid,999,DIALOG_STYLE_MSGBOX,"Log",string,"Bestätigen",""); DeleteBugCache(playerid); return 1; } //Und unten ganz wichtig: stock DeleteBugCache(playerid) { new max=GetPVarInt(playerid,"bug_length"); for(new i,n[16]; i<max; i++) { format(n,sizeof(n),"bug_%d",i); DeletePVar(playerid, n); } DeletePVar(playerid,"bug_length"); return 1; }
Ich habe es so Probiert funktioniert wunderbar bis auf das Löschen ich klicke drauf aber es wird nicht gelöscht.
He?
Da ist nirgens ein Lösch button..wo drückst n auf löschen? xD
Wie schreibe ich den Befehl auf R41-2 um?
public GetAdmins(playerid)
{
new string[512], adminrang, name[MAX_PLAYER_NAME], online, OnlineString[32];
new rows = cache_num_rows();
for(new i=0;i<rows;i++)
{
adminrang = cache_get_field_content_int(i, "Admin");
cache_get_field_content(i, "Name", name, myCon, MAX_PLAYER_NAME);
if(adminrang > 0 && adminrang < 6)
{
online = cache_get_field_content_int(i, "playerOnline");
if(online == 0)OnlineString=""COLOR_HEX_RED"Offline";
else if(online == 1)OnlineString=""COLOR_HEX_GREEN"Online";
format(string, sizeof(string), "%s%s %s - %s\n", string, GetAdminName(adminrang), name, OnlineString);
}
}
ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_LIST, "Team-Mitglieder", string, "Schließen", "");
return 1;
}
@TheOneBehindYou1 Danke, das klappt fast richtig!
Mir wird aber noch nicht das Angezeigt von case 1.
MfG.
Du musst einfach von case 1 in die anderen cases eintragen, sprich:
format(string, sizeof(string), "Porbe Supporter haben noch keine Befehle!");
mit einem \n zwischen " und ! in case 2, 3, usw. einfügen
Wie schreibe ich den Befehl auf R41-2 um?
Versuche es mal so:
public GetAdmins(playerid)
{
new string[512], adminrang, name[MAX_PLAYER_NAME], online, OnlineString[32], rows, str[50];
cache_get_row_count(rows);
for(new i=0;i<rows;i++)
{
cache_get_value_name_int(i, "Admin", adminrang);
cache_get_value_name(i, "Name", str);
format(name,sizeof str,"%s",str);
if(adminrang > 0 && adminrang < 6)
{
cache_get_value_name_int(i, "playerOnline", online);
if(online == 0)OnlineString=""COLOR_HEX_RED"Offline";
else if(online == 1)OnlineString=""COLOR_HEX_GREEN"Online";
format(string, sizeof(string), "%s%s %s - %s\n", string, GetAdminName(adminrang), name, OnlineString);
}
}
ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_LIST, "Team-Mitglieder", string, "Schließen", "");
return 1;
}
Alles anzeigen
Es gab mal jemand der diese CreateActor funktion mit einem Tutorial erklärt hat, kann mir jemand den link schicken finde den nicht mehr..