Ja.
Macht es einen Unterschied ob ichs so mache oder mit strcat?
Ja.
Macht es einen Unterschied ob ichs so mache oder mit strcat?
Macht es einen Unterschied ob ichs so mache oder mit strcat?
Ja, mit strcat hast du zwei weitere Coding-Zeilen.
Format ist schon die bessere Wahl.
Ich habe meinen Befehl jetzt so:
CMD:admins(playerid, params[])
{
new iString[512] = "Name\tRang\tStatus\n";
foreach(new i : Player)
{
if(Player[i][Level] > 0 && Player[i][IsOnDuty] == true)q
{
format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{00FF7F}Im Dienst\n", iString, Player[i][Name], GetRang(i));
}
if(Player[i][Level] > 0 && Player[i][IsOnDuty] == false && Player[i][IsAFK] == false)
{
format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{FECDCA}Online\n", iString, Player[i][Name], GetRang(i));
}
if(Player[i][Level] > 1 && Player[i][IsAFK] == true)
{
format(iString, sizeof(iString), "%s{00c5ff}%s\t{84758A}%s\t{E8702A}AFK\n", iString, Player[i][Name], GetRang(i));
}
}
if(strlen(iString) < 1) ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_MSGBOX,"{FFFF00}Teammitglieder Online", "Keine Teammitglieder Online","Ok","");
else ShowPlayerDialog(playerid,DIALOG_HELPS,DIALOG_STYLE_TABLIST_HEADERS,"{FFFF00}Teammitglieder Online", iString,"Ok","");
return 1;
}
Wie kann ich es machen das wenn man auf irgendeine der Zeilen(Personen) klickt dass man auf einen weiteren Dialog weitergeleitet wird? Bei OnDialogResponse mit listitem?
Ist mir schon bewusst aber wen ich für jeden bus 1 erstelle wird das zu viel?
for(new i=0;i<sizeof(Busfahrer);i++){Create3DTextLabel( "Leerfahrt", 0x33CCFFFF, 50.0, 60.0, 110.0, 20.0);Attach3DTextLabelToVehicle(Vehicle[Busfahrer[i]][vehText], 0, -1, -1, -1, 100.0);}
Nein da du ja einen Streamer dafür nutzt, solange nicht zu viele gleichzeitig geladen werden ist alles im Rahmen. Ich empfehle dir aber dir die Befehle des Incognito Streamers anzuschauen und das nicht im SA.MP Wiki da Bezeichnung, Position der Parameter usw. gerne mal vertauscht sind.
Wenn ich was im Chat schreibe, bin ich dann gefreezt. Habe auch SuFu benutzt aber bin nicht weiter gekommen.
OnPlayerText
if(sInfo[playerid][Einstellung][2] == 1)
{
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
ApplyAnimation(playerid, "ped", "Idle_Chat", 4.1, 0, 0, 0, 0, ((strlen(text) * 100) + 1000), 0);
return 1;
}
}
Wie kann ich es machen das wenn man auf irgendeine der Zeilen(Personen) klickt dass man auf einen weiteren Dialog weitergeleitet wird? Bei OnDialogResponse mit listitem?
if(dialogid == DIALOG_HELPS)
{
if(!response) return 1;
new count = -1;
foreach(new i : Player)
{
if(Player[i][Level] > 0) count++;
if(count == listitem)
{
//Player "i" wurde angeklickt
//z.B. für weitere Verwendung:
//SetPVarInt(playerid, "ClickedPlayer", i);
return 1;
}
}
return 1;
}
Außerdem solltest du die im Befehl das zweite "if" zu einem "else if" machen, und das letzte "if" zu einem "else", sonst kann es zu doppelten Einträgen kommen.
Warum wird SpielerLaden nicht aufgerufen?
public OnUserLogin(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows == 0)
{
new d_info[512];
format(d_info, sizeof(d_info), ""HTML_WEIS"Willkommen "SERVER_HTML"%s"HTML_WEIS", \nBitte gebe dein Passwort ein um dich einzuloggen:\nDeine IP: "SERVER_HTML"%s", sI[playerid][pName], Spielerip(playerid));
SPD(playerid, D_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Login", d_info, "Weiter", "Abbrechen");
SCM(playerid, COLOR_ROT, "Du hast ein falsches Passwort eingegeben!");
}
else
{
printf("OnUserLogin wird aufgerufen");
KillTimer(PlayerLoginTimer[playerid]);
SpielerLaden(playerid);
sI[playerid][pLoggedIn] = true;
SpawnPlayer(playerid);
SCM(playerid, COLOR_LIGHTBLUE, "Du hast dich erfolgreich eingeloggt!");
if(GetPlayerScore(playerid) < 2) return SetPlayerColor(playerid, COLOR_NEULING);
}
return 1;
}
Alles anzeigen
stock SpielerLaden(playerid)
{
printf("Spielerladen aufgerufen");
cache_get_value_name_int(0, "ID", sI[playerid][p_ID]);
cache_get_value_name_int(0, "Geschlecht", sI[playerid][pGeschlecht]);
cache_get_value_name(0, "Geburtsdatum", sI[playerid][pGeburtsdatum], 11);
cache_get_value_name_int(0, "Tutorial", sI[playerid][pTutorial]);
cache_get_value_name_int(0, "Level", sI[playerid][pLevel]);
SetPlayerScore(playerid, sI[playerid][pLevel]);
cache_get_value_name_int(0, "Geld", sI[playerid][pBarGeld]);
GiveMoney(playerid, sI[playerid][pBarGeld]);
cache_get_value_name_int(0, "SpawnChange", sI[playerid][pSpawnChange]);
cache_get_value_name_int(0, "Skin", sI[playerid][pSkin]);
cache_get_value_name_int(0, "Admin", sI[playerid][pAdmin]);
cache_get_value_name_int(0, "Perso", sI[playerid][pPerso]);
cache_get_value_name_int(0, "Fraktion", sI[playerid][pFraktion]);
cache_get_value_name_int(0, "FraktionRang", sI[playerid][pFraktionRang]);
return 1;
}
Alles anzeigen
printf("OnUserLogin wird aufgerufen");
Wird das ausgegeben?
Ja das andere funktioniert jetzt. Hab da bisschen rumprobiert, aber der Timer wird nicht gekillt
Oben im Script:
new LoginTimer[MAX_PLAYERS];
OnUserCheck:
public OnUserCheck(playerid)
{
{
new d_info[512];
format(d_info, sizeof(d_info), ""HTML_WEIS"Willkommen "SERVER_HTML"%s"HTML_WEIS", \nBitte gebe dein Passwort ein um dich einzuloggen:\nDeine IP: "SERVER_HTML"%s", sI[playerid][pName], Spielerip(playerid));
SPD(playerid, D_LOGIN, DIALOG_STYLE_PASSWORD, ""SERVER_HTML""SERVER_TAG""HTML_WEIS": Login", d_info, "Weiter", "Abbrechen");
LoginTimer[playerid] = SetTimer("LoginTimerPublic", 30000, false);
}
return 1;
}
Das Public:
public LoginTimerPublic(playerid)
{
KickWithMessage(playerid, COLOR_KICK, "Server: Du wurdest gekickt, Grund: Zeitüberschreitung");
return 1;
}
Unter OnUserLogin:
KillTimer(LoginTimer[playerid]);
Du killst den Timer "LoginTimer" aber der Timer den du benutzt heißt "LoginTimerPublic"... Und dazu solltest du auch SetTimerEx benutzen um die playerid zu übergeben sonst wird nämlich auch niemand gekickt.
LoginTimer[playerid] = SetTimer("LoginTimerPublic", 30000, false);
zu:
LoginTimer[playerid] = SetTimerEx("LoginTimerPublic", 30000, false, "d", playerid);
Du killst den Timer "LoginTimer" aber der Timer den du benutzt heißt "LoginTimerPublic"
Das ist schon richtig so, denn LoginTimer ist die Variable mit der ID des Timers.
Nein der Timer heißt nicht LoginTimerPublic, da ich im Script den LoginTimer defeniert habe. Wie meinst du dass mit SetTimerEx?
Man wird gekickt aber dass Problem liegt darin dass wenn man eingeloggt ist, der Timer tzdm weiterläuft
Wie meinst du dass mit SetTimerEx?
LoginTimer[playerid] = SetTimerEx("LoginTimerPublic", 30000, false, "d", playerid);
Wo liegt mein Fehler? Es wird kein Textlabel erstellt und kein Pickup
OnPlayerDisconnect:
public OnPlayerDisconnect(playerid, reason)
{
new Float:dx, Float:dy, Float:dz;
SpielerSpeichern(playerid);
if(reason == 0)
{
LogoutPickup[playerid] = CreatePickup(1314, 0, dx, dy, dz, GetPlayerVirtualWorld(playerid));
LogoutText[playerid] = Create3DTextLabel("Timeout / Crash", COLOR_ROT, dx, dy, dz, 2.0, GetPlayerVirtualWorld(playerid));
SetTimerEx("LogoutInfo", 60000, false, "d", playerid);
} else if(reason == 1)
{
LogoutPickup[playerid] = CreatePickup(1314, 0, dx, dy, dz, GetPlayerVirtualWorld(playerid));
LogoutText[playerid] = Create3DTextLabel("Verlassen", COLOR_ROT, dx, dy, dz, 2.0, GetPlayerVirtualWorld(playerid));
SetTimerEx("LogoutInfo", 60000, false, "d", playerid);
} else if(reason == 2)
{
LogoutPickup[playerid] = CreatePickup(1314, 0, dx, dy, dz, GetPlayerVirtualWorld(playerid));
LogoutText[playerid] = Create3DTextLabel("Kick / Ban", COLOR_ROT, dx, dy, dz, 2.0, GetPlayerVirtualWorld(playerid));
SetTimerEx("LogoutInfo", 60000, false, "d", playerid);
}
return 1;
}
Alles anzeigen
Timer Public:
Du hast GetPlayerPos vergessen.
new Float:dx, Float:dy, Float:dz;
GetPlayerPos(playerid, dx, dy, dz);
Ich versuche momentan das Discord Connector Plugin von maddinator zu benutzen aber irgendwie find ich den Fehler nicht?
public DCC_OnChannelMessage(DCC_Channel:channel, const author[], const message[])
{
if(author == "SAMP Bot") return 0; //FEHLER
if(channel != g_WelcomeChannelId) return 0;
new channel_name[48];
DCC_GetChannelName(channel, channel_name);
new str[160];
format(str, sizeof str, "[Discord] {FFFF00}%s: {FFFFFF}%s", author, message);
SendClientMessageToAll(COLOR_BLUEGREEN, str);
return 1;
}
Ich krieg die Fehlermeldung: "error 033: array must be indexed (variable "author")
if(author == "SAMP Bot") return 0; //FEHLER
Schreib es so:
if(!strcmp(author, "SAMP Bot")) return 0;
Wie kann man bei getTime die Deutsche Zeitzone wählen
Wird da nicht das genommen das am Server eingestellt ist? Also wenn du auf deinem Linux Server / Windows PC die richtige Zeit eingestellt hast sollte auch die richtige genommen werden denk ich
Keine Ahnung, kenne mich damit nicht aus.