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..