Jetzt werden alle als Offline angezeigt obwohl man Online ist und bei dem ersten in der Liste wird der Rang nicht angezeigt
Beiträge von Allrounder18
-
-
Code
Alles anzeigenocmd:aduty(playerid) { new nachricht[128],string[128],SERVERTAG[500]; format(SERVERTAG,sizeof(SERVERTAG),"%s",ServerInfo[0][server_Tag]); if(!IsAdmin(playerid,2))return SendNoPerms(playerid); if(!SpielerDaten[playerid][player_AdminDienst]) { format(string,50,"[%s]%s",SERVERTAG,SpielerDaten[playerid][player_Name]); SetPlayerName(playerid,string); format(nachricht,128,"<< %s hat sich als %s angemeldet! >>",SpielerDaten[playerid][player_Name],GetAdminRang(playerid)); SendClientMessageToAll(WEISS , nachricht); //SetPlayerScore(playerid,GetPlayerLevel(playerid)); SendInfoMessage(playerid,"Du bist nun im Admindienst"); SpielerDaten[playerid][player_AdminDienst] = true; //TextDrawShowForPlayer(playerid,Reportdraw[0]); //extDrawShowForPlayer(playerid,Reportdraw[1]); switch(SpielerDaten[playerid][player_Admin]) { case 2: aDuty[playerid] = Create3DTextLabel("Probe Supporter",0xFE2EF7FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); case 3: aDuty[playerid] = Create3DTextLabel("Supporter",0xFE2EF7FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); case 4: aDuty[playerid] = Create3DTextLabel("Administrator",0x585858FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); case 5: aDuty[playerid] = Create3DTextLabel("Developer",0xDF01A5FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); case 6: aDuty[playerid] = Create3DTextLabel("Manager",0x00a4b3FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); case 7: aDuty[playerid] = Create3DTextLabel("Projektleiter",0xFF0000FF,30.0,40.0,50.0,MAX_STREAM_NAME_DISTANCE,-1,1), SetPlayerColor(playerid, ROT); } Attach3DTextLabelToPlayer(aDuty[playerid],playerid,0.0,0.0,0.6); } else if(SpielerDaten[playerid][player_AdminDienst]) { format(string,24,"%s",SpielerDaten[playerid][player_Name]); SetPlayerName(playerid,string); SetPlayerColor(playerid, WEISS); format(nachricht,128,"<< %s hat sich als %s abgemeldet! >>",SpielerDaten[playerid][player_Name], GetAdminRang(playerid)); SendClientMessageToAll(WEISS, nachricht); SendInfoMessage(playerid,"Du bist nun nicht mehr im Admindienst"); Delete3DTextLabel(aDuty[playerid]); //TextDrawHideForPlayer(playerid,Reportdraw[0]); //TextDrawHideForPlayer(playerid,Reportdraw[1]); SpielerDaten[playerid][player_AdminDienst] = false; } return 1; }
-
Es funktioniert leider mit deiner Funktion auch nicht. @Kaliber
-
Hallo, @Kaliber!
1. Was muss ich machen damit ich wenn ich aduty bin in /admins neben dem Namen "Im Dienst" stehn hab?
2. Ich habe wenn ich aduty bin [ARP] vor dem Namen stehn übr dem Kopf und in der Tabliste, daher steht dann immer in /admins das ich offline bin. Die Listekennt den Namen nicht wegen dem {ARP].
3. mein GetPlayerStatus
Code
Alles anzeigenstock GetPlayerStatus(playerid) { new string[500]; if (IsPlayerConnected(playerid) && SpielerDaten[playerid][player_Eingeloggt]) { if(SpielerDaten[playerid][player_AFK]) { format(string, 32, "{FF0048}AFK"); return string;} if(SpielerDaten[playerid][player_AdminDienst]) { format(string, 32, "{FFFF00}Im Dienst"); return string;} format(string, 32, "{40FF00}Online"); return string; } else { format(string,32,"{FF0000}Offline"); return string; } }
Edit: Weitere Frage: Kann man O.3.DL Skins in einem Textdraw anzeigen lassen?
Edit: Es wird in dem Textdraw immer der Skin angezeigt den ich mit dem 0.3.L Skin ersetzt habe. ZB. habe ich mir die Skinnummer 20008 erstellt und hab dafür die Skin ID 287 genommen. -
Was muss ich machen, wenn ich bei /admins angezeigt bekommen möchte , das der Admin Duty ist
Also folgendermaßen Projektleitung Allrounder18 Im Dienst. So sieht es im Dialog aus.
Ich habe wenn ich aduty bin ein [ARP] vor dem Namen stehn, dadurch kennt mein System dass ich online bin. Wie kann ich das fixen?Code
Alles anzeigenpublic AdminList(playerid) { new string[1000],header[1001],adminrang,name[MAX_PLAYER_NAME],pID; new rows; 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",name,255); pID = GetPlayerIdFromName(name); if(adminrang > 2 && adminrang < 8) { format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, GetPlayerStatus(pID)); format(header,sizeof(header),"{FFFFFF}Rang\t{FFFFFF}Name\t{FFFFFF}Onlinestatus\n%s",string); } } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Team",header,"{FFFFFF}Abbrechen",""); return 1; }
-
Funktioniert. Aber irgendwie führt er OnPlayerSpawn nicht mehr aus.
Code
Alles anzeigenpublic OnUserLogin(playerid) { new rows,string[500]; cache_get_row_count(rows); if(rows == 0) { format(string,sizeof(string), "Dieses Passwort ist falsch."); SendErrorMessage(playerid,string); ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen"); } else { cache_get_value_name_int(0, "ID", SpielerDaten[playerid][player_ID]); cache_get_value_name_int(0, "Level", SpielerDaten[playerid][player_Level]); cache_get_value_name_int(0, "Euro", SpielerDaten[playerid][player_Euro]); cache_get_value_name_int(0, "Cent", SpielerDaten[playerid][player_Cent]); cache_get_value_name_int(0, "Skin", SpielerDaten[playerid][player_Skin]); cache_get_value_name_int(0, "Admin", SpielerDaten[playerid][player_Admin]); cache_get_value_name_float(0, "SpawnX", SpielerDaten[playerid][player_Spawn][0]); cache_get_value_name_float(0, "SpawnY", SpielerDaten[playerid][player_Spawn][1]); cache_get_value_name_float(0, "SpawnZ", SpielerDaten[playerid][player_Spawn][2]); cache_get_value_name_float(0, "SpawnR", SpielerDaten[playerid][player_Spawn][3]); cache_get_value_name_int(0, "SpawnInt", SpielerDaten[playerid][player_Interior]); cache_get_value_name_int(0, "SpawnWorld", SpielerDaten[playerid][player_World]); cache_get_value_name(0, "RPName",SpielerDaten[playerid][player_RPName],265); HideLoginScreen(playerid); SpielerDaten[playerid][player_Eingeloggt] = true; SpawnPlayer(playerid); format(string,sizeof(string),"{FFFFFF}Willkommen zurück %s {FF0000}[%d]",SpielerDaten[playerid][player_Name],playerid); SendClientMessage(playerid,WEISS,string); new query1[500]; mysql_format(handle, query1, sizeof(query1), "SELECT * FROM `verwalter` WHERE `SpielerID` = '%d'", SpielerDaten[playerid][player_ID]); mysql_pquery(handle, query1, "OnVerwalterCheck", "d", playerid); } return 1; }
Code
Alles anzeigenpublic OnPlayerSpawn(playerid) { print("1"); if(IsPlayerConnected(playerid)) { print("2"); SetPlayerColor(playerid, WEISS); SetPlayerPos(playerid, SpielerDaten[playerid][player_Spawn][0], SpielerDaten[playerid][player_Spawn][1], SpielerDaten[playerid][player_Spawn][2]); SetPlayerFacingAngle(playerid, SpielerDaten[playerid][player_Spawn][3]); SetPlayerInterior(playerid, SpielerDaten[playerid][player_Interior]); SetPlayerVirtualWorld(playerid, SpielerDaten[playerid][player_World]); SetCameraBehindPlayer(playerid); SetPlayerSkin(playerid, SpielerDaten[playerid][player_Skin]); PlayerTextDrawShow(playerid,Geldanzeige[playerid][0]); PlayerTextDrawShow(playerid,Geldanzeige[playerid][1]); UpdateMoney(playerid); print("3"); } return 1; }
Edit: Auf Windows funktoniert es, jedoch auf Linux nicht.
-
-
Code
Alles anzeigenstock GetPlayerIdFromName(playername[]) { for(new i = 0; i <= MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { new playername2[MAX_PLAYER_NAME]; GetPlayerName(i, playername2, sizeof(playername2)); if(strcmp(playername2, playername, true, strlen(playername)) == 0) { return i; } } } return INVALID_PLAYER_ID; }
-
Jetzt wird der Dialog garnicht mehr angezeigt
Code
Alles anzeigenpublic AdminList(playerid) { new string[1000],header[1001],adminrang,name[MAX_PLAYER_NAME],pID; new rows; 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",name,255); pID = GetPlayerIdFromName(name); if(!IsPlayerConnected(pID)) continue; if(adminrang > 2 && adminrang < 8) { format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, GetPlayerStatus(pID)); format(header,sizeof(header),"Rang\tName\tOnlinestatus\n%s",string); } } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Team",header,"Abbrechen",""); return 1; }
-
Code
Alles anzeigenpublic AdminList(playerid) { new string[1000],header[1001],adminrang,name[MAX_PLAYER_NAME],pID; new rows; 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",name,255); pID = GetPlayerIdFromName(name); if(adminrang > 2 && adminrang < 8) { format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, GetPlayerStatus(pID)); format(header,sizeof(header),"Rang\tName\tOnlinestatus\n%s",string); print(header); } } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "{FF0000}Austrian Roleplay {FFFFFF}- Team",header,"Abbrechen",""); return 1; }
Code
Alles anzeigenstock GetPlayerStatus(playerid) { new string[500]; if(SpielerDaten[playerid][player_Eingeloggt]) { if(IsPlayerAFK(playerid)) { format(string, 32, "{FF0048}AFK"); return string;} if(SpielerDaten[playerid][player_AdminDienst]) { format(string, 32, "Im Dienst"); return string; } format(string, 32, "{40FF00}Online"); return string; } else { format(string,32,"{FF0000}Offline"); return string; } }
Momentan wirft das Script folgende Errors:
[17:52:47] [debug] Run time error 4: "Array index out of bounds"
[17:52:47] [debug] Attempted to read/write array element at index 65535 in array of size 1000
[17:52:47] [debug] AMX backtrace:
[17:52:47] [debug] #0 0000e944 in ?? (65535) in arp.amx
[17:52:47] [debug] #1 000108c0 in public AdminList (0) in arp.amxEdit: Hab mal mit -d3 compiled, jetzt komt folgendes
[18:50:11] [debug] Run time error 4: "Array index out of bounds"
[18:50:11] [debug] Attempted to read/write array element at index 65535 in array of size 1000
[18:50:11] [debug] AMX backtrace:
[18:50:11] [debug] #0 00011d10 in GetPlayerStatus (playerid=65535) at C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/stocks.inc:671
[18:50:11] [debug] #1 0001455c in public AdminList (playerid=0) at C:\Users\Alexander\Documents\meinserver\ARP2.0\pawno\include\../include/core/daten.inc:160 -
Code
Alles anzeigenpublic AdminList(playerid) { new string[512],header[2000],adminrang,name[MAX_PLAYER_NAME]; new rows; 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",name,MAX_PLAYER_NAME); if(adminrang > 1 && adminrang < 8) { format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name, (IsPlayerConnected(playerid))?("{40FF00}Online"):("{FF0000}Offline")); format(header,sizeof(header),"Rang\tName\tOnlinestatus\n%s",string); } } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "test - Team",header,"Abbrechen",""); return 1; }
Jetzt werden alle Spieler als online angezeigt, obwohl nur einr online ist.
-
Hallo!
Bei meinem /admins wird nicht angezeigt ob der User Online ist sobald er online ist.
Code
Alles anzeigenpublic AdminList(playerid) { new string[512],header[2000],adminrang,name[MAX_PLAYER_NAME],onlinestatus[500]; new rows; 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",name,MAX_PLAYER_NAME); if(adminrang > 1 && adminrang < 8) { GetPlayerStatus(name,onlinestatus); format(string, sizeof(string), "%s\n%s\t%s\t%s",string, GetAdminName(adminrang), name,onlinestatus); format(header,sizeof(header),"Rang\tName\tOnlinestatus\n%s",string); } } ShowPlayerDialog(playerid, DIALOG_ADMINS, DIALOG_STYLE_TABLIST_HEADERS, "test - Team",header,"Abbrechen",""); return 1; }
Was ist hier falsch?
Code
Alles anzeigenstock GetPlayerStatus(const name[],out[]) { static const status[][] = {"{FF0000}Offline","{40FF00}Online","{FF0048}AFK"}; for(new i=GetPlayerPoolSize(),n[MAX_PLAYER_NAME]; i!=-1; i--) { if(!IsPlayerNPC(i) || !GetPlayerName(i,n,MAX_PLAYER_NAME) || strcmp(name,n) != 0) continue; if(SpielerDaten[i][player_AdminDienst]) { return format(out, 32, status[1]); } return format(out,32,status[IsPlayerAFK(i) ? 2 : 1]); } return format(out,32,status[0]); }
-
danke, funktioniert.
Was muss ich bei SendClientToChat ändern, damit ich SendRangeColorMessage( für verschiedenen Chats mit verschiedenen Faben nehmen kann? zb wie oben geschrieben der chat in grautänen und /me in violetttönen?Edit: bei /me solls wieder so sein
Edit: Problem hat sich erledigt.
Was muss ich machen wenn ich ein % schreibe, dass anstatt von # das % kommt im Text?
Muss ich dass dann zu OnPlayer Text geben? -
Code
Alles anzeigenstock SendClientToChat(color, string[], playerid = -1) { new count, length = 72; for(new i, l = strlen(string); i != l; i++) { if(string[i] == '{' && string[i+7] == '}')count += 8; } if(strlen(string) > (length+count)) { new text[2][152]; strmid(text[0], string, 0, length+count); strmid(text[1], string, length+count, strlen(string)); format(text[0], 152, "{FFFFFF}%s...", text[0]); format(text[1], 152, "...%s", text[1]); if(~playerid) { SendClientMessage(playerid, color, text[0]); SendClientMessage(playerid, color, text[1]); } else { SendClientMessageToAll(color, text[0]); SendClientMessageToAll(color, text[1]); } return 1; } if(~playerid) SendClientMessage(playerid, color, string); else SendClientMessageToAll(color, string); return 1; }
Wenn ich es mit der Funktion mache, dann is der name in der erstenzeile und der text weiß und die 2. zeile wo ur text steht in den graufarben. Was mus ich da ändern, damit name in grufarben und der rest alles weiß ist??
-
Was meinst du mit Quatsch?
1. Hab ich es so gemacht, weil ich mit der Funktion ja nur genau die Nachricht machen kann udn ich dis aber auch bei /me machen mlchte mt violettfarben
2. Was genau meinst du?
Edit: ginge s folgendermaßen?
Color_Chat für den Chat und VIOLETT für die /me?
-
Die Farben zeigt er mir ja an aber ich mein folgendes
Jedoch möchte ich nun haben, dass wenn die Zeile zu lange ist ein Umbruch kommt und in der näcsten Zeile der Text weitergeht.
Code
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new text1[2][128],inputtext[128],msg[152]; if(strlen(inputtext) > 128) { strmid(text1[0],inputtext,0,127,128); strmid(text1[1],inputtext,128,strlen(inputtext),128); } format(msg, 152, "%s sagt: {FFFFFF}%s...",RemoveUnderscore(SpielerDaten[playerid][player_RPName]), text1[0]); format(msg, 152, "...%s",text1[1]); new chat_color; for(new i=0; i<MAX_PLAYERS; i++) { if(!SpielerDaten[playerid][player_Eingeloggt])continue; if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue; new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance < CHAT_RADIUS / CHAT_FADES) { chat_color = COLOR_CHAT; } else if(distance < CHAT_RADIUS / CHAT_FADES * 2) { chat_color = COLOR_FADE1; } else if(distance < CHAT_RADIUS / CHAT_FADES * 3) { chat_color = COLOR_FADE2; } else if(distance < CHAT_RADIUS / CHAT_FADES * 4) { chat_color = COLOR_FADE3; } else if(distance <= CHAT_RADIUS / CHAT_FADES * 5) { chat_color = COLOR_FADE4; } SendClientMessage(i, chat_color, msg); } return 0; }
So habe ich es versucht, jedoch kommt egal was ich schreibe nur ...
-
@Kaliber wie meint du das? Ich hab oben was reinedtiert.
-
Ich hab ne Lösung gefunden, wie es funktioniert.
Jedoch möchte ich nun haben, dass wenn die Zeile zu lange ist ein Umbruch kommt und in der näcsten Zeile der Text weitergeht.
Code
Alles anzeigenpublic OnPlayerText(playerid, text[]) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); new text1[2][128],inputtext[128],msg[152]; if(strlen(inputtext) > 128) { strmid(text1[0],inputtext,0,127,128); strmid(text1[1],inputtext,128,strlen(inputtext),128); } format(msg, 152, "%s sagt: {FFFFFF}%s...",RemoveUnderscore(SpielerDaten[playerid][player_RPName]), text1[0]); format(msg, 152, "...%s",text1[1]); new chat_color; for(new i=0; i<MAX_PLAYERS; i++) { if(!SpielerDaten[playerid][player_Eingeloggt])continue; if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue; new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z); if(distance < CHAT_RADIUS / CHAT_FADES) { chat_color = COLOR_CHAT; } else if(distance < CHAT_RADIUS / CHAT_FADES * 2) { chat_color = COLOR_FADE1; } else if(distance < CHAT_RADIUS / CHAT_FADES * 3) { chat_color = COLOR_FADE2; } else if(distance < CHAT_RADIUS / CHAT_FADES * 4) { chat_color = COLOR_FADE3; } else if(distance <= CHAT_RADIUS / CHAT_FADES * 5) { chat_color = COLOR_FADE4; } SendClientMessage(i, chat_color, msg); } return 0; }
So habe ich es versucht, jedoch kommt egal was ich schreibe nur ...
-
Ich hab jetzt mit SendClientMessage(i,chat_color,string); probiert, jedoch geht das leider auch nicht.
-
Die sind so:
#define COLOR_CHAT 0x505050DD
#define COLOR_FADE1 0x505050FF
#define COLOR_FADE2 0x50505095
#define COLOR_FADE3 0x50505060
#define COLOR_FADE4 0x50505032Edit: Das SendClientToChat
Code
Alles anzeigenstock SendClientToChat(color, string[], playerid = -1) { new count, length = 72; for(new i, l = strlen(string); i != l; i++) { if(string[i] == '{' && string[i+7] == '}')count += 8; } if(strlen(string) > (length+count)) { new text[2][152]; strmid(text[0], string, 0, length+count); strmid(text[1], string, length+count, strlen(string)); format(text[0], 152, "{FFFFFF}%s...", text[0]); format(text[1], 152, "...%s", text[1]); if(~playerid) { SendClientMessage(playerid, color, text[0]); SendClientMessage(playerid, color, text[1]); } else { SendClientMessageToAll(color, text[0]); SendClientMessageToAll(color, text[1]); } return 1; } if(~playerid) SendClientMessage(playerid, color, string); else SendClientMessageToAll(color, string); return 1; }