Du musst den Kick um ein paar Millisekunden verzögern, dann dürfte es wieder funktionieren.
Dafür gibt es sogar ein Include: Kick/Ban Fix
Daran liegt es nicht, die Prints erscheinen ja auch nicht.
Du musst den Kick um ein paar Millisekunden verzögern, dann dürfte es wieder funktionieren.
Dafür gibt es sogar ein Include: Kick/Ban Fix
Daran liegt es nicht, die Prints erscheinen ja auch nicht.
Daran liegt es nicht, die Prints erscheinen ja auch nicht.
Daran liegt es nicht, wie JustMe.77 bereits gesagt hat. Verwende bereits einen Timer um die Kick / Ban Funktion um 1ms zu verzögern.
Hab 'n Problem mit Animationen (ApplyAnimation), die funktioniert einfach beim 1. mal nicht.. z.B.
Wenn man stirbt sollte man nach seinem Spawn in eine Animation kommen, klappt aber beim 1. Mal nicht, beim 2. Mal geht es dann auf einmal.. Ist bei allen anderen Animationen die ich verwende genau so.
Du musst die Animation "laden". Führe zum Beispiel beim connecten alle Animationen aus. Oder Google mal nach "PreLoadAnims".
Wieso wird der Spieler direkt gekickt? Außerdem erscheinen die Prints nicht..
forward OnPlayerCBug(playerid);public OnPlayerCBug(playerid){CheckCrouch[playerid] = 0;cbugwarn[playerid]++;new string[144];format(string, sizeof(string),"{FFFFFF}Hör auf{FF0000} C-Bug {FFFFFF}zu benutzen. Warn {FF0000}%d/3", cbugwarn[playerid]);SendClientMessage(playerid, COLOR_RED, string);print("Cbug Warn aufgerufen");if(cbugwarn[playerid] == 3){new str2[128];format(str2, sizeof(str2), "{FF0000}System{FFFFFF} hat {%06x}%s{FFFFFF} für Cbug mit der Waffe {FF0000}(%s) gekickt.", GetPlayerColor(playerid) >>> 8, GetName(playerid), aWeaponNames[WeaponID[playerid]]);SendClientMessageToAll(COLOR_RED, str2);Kick(playerid);print("Kick aufgerufen");return 1;}return 1;}
Sicher, daß diese Funktion bzw. Callback aufgerufen wird und nicht KickPlayer von woanderst passiert?
Habe ich etwas falsch gemacht?
UpdateWeedTextDraws(playerid)
{
new str[48], str2[48];
//Updating Level & Weed TextDraw
format(str, sizeof(str),"Level: ~g~%d", GetPlayerScore(playerid));
PlayerTextDrawSetString(playerid, Weed0, str); //Level
format(str2, sizeof(str2),"Weed: ~g~%d", pData[playerid][P_Weed]);
PlayerTextDrawSetString(playerid, Weed1, str2); //Weed
}
Server Log:
[17:47:09] [join] [LnD]JustMe.77 has joined the server (0:127.0.0.1)
[17:47:19] [debug] Run time error 4: "Array index out of bounds"
[17:47:19] [debug] Accessing element at index 65535 past array upper bound 999
[17:47:19] [debug] AMX backtrace:
[17:47:19] [debug] #0 00094d20 in UpdateWeedTextDraws (playerid=65535) at ../Modules/Player/Weed-TextDraws.pwn:51
Setze vor die new's:
if(!IsPlayerConnected(playerid)) return 1;
Problem gelöst, letzte Frage:
Habe verschiedene Textdraws (Leben/Armour Anzeige & Level/Geld Anzeige, beide nutzen jeweils PlayerTextDrawSetOutline.
Wenn ich die Level / Geld Anzeige Textdraws ins Gamemode einfüge, dann fehlt bei den Leben/Armour Anzeige die Outline, wieso? Ich bezweifle zwar das ich hierfür eine Problemlösung finde, aber vielleicht weiß ja einer bescheid woran das liegt..
Edit:
Nein, die Health/Armour Anzeige (nur Health) verschwindet hinter meiner Health-Bar..)
Bild:
Guten Mittag,
weiß jemand wie ich den Farbcode (z.B.: 0x007600FF) in einer Variable speichere?
Wozu in einer Variable speichern?
Das könntest du so machen:
new farbe = 0x007600FF;
Aber als define (Makro) wäre es besser ![]()
Ich möchte das dynamisch machen. Ich lese es aus der Datenbank aus weiß aber grad ned wie ich es Speicher.
Du kannst es als Integer Wert (ganz normale Zahl) speichern und laden.
Um die Zahl in einen Color-Code zu bekommen, falls notwendig:
format(str, sizeof (str), "{%06x}", farbe >>> 8);
1. Ich hab es als Hex-Wert in der DB gespeichert also als String
Speichere es als Integer, dann kannst du einfacher damit umgehen.
Hier kannst du es umwandeln: http://www.binaryconvert.com/convert_signed_int.html
2. Ist das so möglich?
Dann kannst du es nämlich so machen:
SendClientMessage(playerid, farbe, "Hi");
farbe entspricht dem geladenen Integer aus der Datenbank.
geht das auch für SetPlayerColor?
Danke dir!
Ich habe mich einmal ein bisschen im Wiki umgesehen und finde keine Info's zu multiblen Eingaben.
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, COLOR_WHITE, "WoW, du hast /mycommand eingegeben");
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "Der gesuchte Befehl wurde nicht gefunden oder du hast keinen Zugriff auf den Befehl.");
return 1;
}
return 1;
if (strcmp("/deagle", cmdtext, true, 20) == 0)
{
GivePlayerWeapon(playerid, 24, 50);
SendClientMessage(playerid, COLOR_INFO, "CHEATER: FairPlay ist was anderes");
return 1;
}
return 1;
}
Bei meinem letzten Command bekomme ich den Fehler das der Befehl eben nicht vorhanden ist!
So funktioniert das nicht ![]()
Am besten, du nutzt einen "CMD-Prozessor" wie ocmd/zcmd oder sonst was...
Ansonsten wäre es so richtig:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/mycommand", cmdtext, true))
{
SendClientMessage(playerid, COLOR_WHITE, "WoW, du hast /mycommand eingegeben");
return 1;
}
else if(!strcmp("/deagle", cmdtext, true))
{
GivePlayerWeapon(playerid, 24, 50);
SendClientMessage(playerid, COLOR_INFO, "CHEATER: FairPlay ist was anderes");
return 1;
}
return SendClientMessage(playerid, COLOR_RED, "Der gesuchte Befehl wurde nicht gefunden oder du hast keinen Zugriff auf den Befehl.");
}
Alles anzeigen
Joa danke dir, war wohl ein wenig verwirrt ![]()