Natürlich hast du es gekauft ;D: Würde mich ja über die Rechnung freuen,kannst auch Namen zensieren ;).
//edit by RFT: Die würde mich allerdings auch intressieren.
//edit by Neo: Jop mich auch
Natürlich hast du es gekauft ;D: Würde mich ja über die Rechnung freuen,kannst auch Namen zensieren ;).
//edit by RFT: Die würde mich allerdings auch intressieren.
//edit by Neo: Jop mich auch
Zeig den Code ganz oder gar nicht.
Entweder du hast dort einige Zeilen gelöscht oder ... Naja, du kannst es sowieso nicht kompilieren .
http://wiki.sa-mp.com/wiki/OnPlayerDeath
Schau dir lieber nochmal OnPlayerDeath an.
public OnPlayerDeath(playerid, killerid, reason)
{
if( killerid != INVALID_PLAYER_ID ) // Ganz wichtig!
{
if (Gang[playerid] == Gang[killerid])
{
// Teamkills[playerid] = Teamkills[killerid] + 1;
// Du änderst immer von playerid die Teamkills.
// Ist natürlich falsch, denn du musst sie bei killerid ändern
Teamkills[killerid] = Teamkills[killerid] + 1;
if(Teamkills[killerid] > 4)
{
// SendClientMessage(playerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
// Kick(playerid);
// Du sendest die Nachricht an playerid und kickst auch diesen
// Ist natürlich ebenfalls falsch
SendClientMessage(killerid,DUNKELROT,"Teamkill ist Verboten! Bitte Unterlasse das!");
Kick(killerid);
}
}
}
return 1;
}
Unnötiger Beitrag von dir Mr.Langer, der hilft niemanden.
Function LoadProperty()
Der sollte zwar nicht abstürzen,aber wieso schreibst du dort Function?
Er wird bald alles zerstören.
Außer seine eigenen Zukunft zu zerstören passiert da sicherlich nichts.
Lieber nicht.
SetTimer("robbanktimer", 60000, 0);
Du musst SetTimerEx benutzen,wenn du Parameter übergeben willst.
http://wiki.sa-mp.com/wiki/SetTimerEx
Heisst also,
SetTimerEx("robbanktimer", 60000, 0,"d",playerid);
Leider ist der Test nicht richtig aufgebaut bzw du hast nicht überall die gleichen Vorraussetzungen.
Das sind Beides Nachteile für die for() Schleife.
Zitat--- Unten 5x Durchläufe ---
Hier mein Code.
http://pastebin.com/AJh01BBj
//Edit:
Pastebin war falsch :-X
ZitatAlles anzeigen[14:43:56] while Loop 9104ms
[14:43:56] for Loop 7873ms
[14:43:56] do while 9140ms
[14:44:22] while Loop 9071ms
[14:44:22] for Loop 7875ms
[14:44:22] do while 8996ms
[14:44:48] while Loop 9145ms
[14:44:48] for Loop 7994ms
[14:44:48] do while 9172ms
[14:45:14] while Loop 9021ms
[14:45:14] for Loop 7903ms
[14:45:14] do while 8957ms
[14:45:40] while Loop 8947ms
[14:45:40] for Loop 7863ms
[14:45:40] do while 9043ms
if(strcmp(cmd, "/dance", true) == 0)//Der CMD
{
if (!strlen(cmdtext[8])) return SendClientMessage(playerid,0xEFEFF7AA,"Benutzung: /dance [1-4]");
switch (cmdtext[8])
{
case '1': SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE1);
case '2': SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE2);
case '3': SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE3);
case '4': SetPlayerSpecialAction(playerid,SPECIAL_ACTION_DANCE4);
default: SendClientMessage(playerid,0xEFEFF7AA,"Benutzung: /dance [1-4]");
}
return 1;
}
Hast dich wohl verzählt.
"/dance" sind 6.
/ d a n c e <Leerzeichen> <Zahl>
0 1 2 3 4 5 6 7
//Edit:
Nimmt irgendwie die vielen Leerzeichen nicht an bzw. zeigt sich nicht richtig an .
Bei dem Mathe-Script gibt es auch kein reset der Variablen.
Ich kann also die Gute / Schlechte Punktzahl von dem Spieler übernehmen, der vor mir mit dieser SpielerID online war.
OnPlayerCommandText(playerid,"/mathe");
Das bringt doch überhaupt nichts :-0.
Das kann gar nicht funktionieren,denn dann wäre es 4.Dimensionales Array und das geht nicht in PAWN.
ZitatPlayerCar[playerid][x][Plate][ ]
Die letzte Klammer wäre nicht möglich.
Zeig also mal,wie du es bis hin zu Plate definiert hast.
Falls es so ist,
ZitatPlayerCar[playerid][x][Plate]
dann kannst du jedenfalls keinen String/Array hinter Plate speichern.
Nein.Besonders nicht,weil es die falsche Sektion ist.
Zitaty <= -1722 && y >= -1628 )
Das ist nicht möglich.
<= -1722 ist z.B. -1800
>= -1628 ist z.B. -1500
Bei negativen Zahlen bedeutet "Größer", dass es näher an der 0 ist.
Was ist denn größer bzw mehr.
Schulden von 5€ oder 100€ ?
ZitatMir hat es niemand beigebracht
Mir auch nicht.
ZitatDie Videos die ich gesehen haben haben es mir auch nicht gezeigt.
Scheiss Videos oder du hast "nur" geguckt.
Zitat
Und wenn ich es noch nie benutzt habe, musste ich es ja auch nicht wissen.
Du benutzt doch if() Abfragen in dem von dir gezeigtem Codeschnipsel. Die Nutzung von GetPlayerMoney nicht zu beherrschen ist nochmal eine ganz Andere Baustelle.Denn dazu steht alles hier.
Wenn du sowas nicht kannst,fehlen dir definitiv die Grundlagen.
if( GetPlayerMoney(playerid ) < 0 ) {
// Kann kein Artikel kaufen,da kein Geld
return 1; // Damit der nachfolgende Code nicht ausgeführt wird.
}
// Besitzt mehr als 0$
Solltest auch noch Abfragen,ob "Kaufen" oder "Abbrechen" gedrückt wurde.
http://wiki.sa-mp.com/wiki/OnDialogResponse
Sicher,dass das überhaupt kompiliert? SSCANF fehlt nämlich.
Andere Frage,findest du dich selber überhaupt zurecht in dem Code?
http://pastebin.com/M6J9drtM
Sieht doch viel besser aus.
Zu deinem Problem.Was du defintiv machen solltest,beim Verlassen oder betreten des Servers,dass Adminlevel unbedingt zurücksetzen auf 0.
Außerdem ist deine Verarbeitung mit accSpeicherung sehr anfällig.Schau dir mal den ersten Teil folgendes Post'san.
Bei /AKILL und /KICK wird accSpeicherung nicht mal neu formatiert,bevor du es überhaupt nutzt .
Warum du überhaupt beim einloggen folgendes machst,
dini_Set(accSpeicherung,"IP",ip);
dini_Get(accSpeicherung,"AdminLevel");
ist mir auch ein Rätsel.
Die passende Gegenfrage dazu wäre,kannst du nicht lesen ?
ZitatHeisst also,es funktioniert nicht aus einem Gamemode herraus. Du musst es in ein Filterscript schreiben.
Siehst ja wohl auch im Screenshot,dass es ein Filterscript ist und kein Gamemode.
Etwas mehr Übersicht kann nie schaden.
dcmd_akill(playerid,params[]) {
new
pID,
pname[MAX_PLAYER_NAME];
// Wieso 'accSpeicherung' ?
// Wird nirgendwo formatiert, hier liegt bestimmt schon mal ein Fehler vor.
if(!fexist(accSpeicherung) && Admin[playerid][Loggedin]== 0) {
return SendClientMessage(playerid,0xFFFFFFFF,"Du bist kein Admin.");
}
if(sscanf(params, "u",pID)) {
return SendClientMessage(playerid,COLOR_RED,"Benutze: /akill [ID]");
}
if (pID == INVALID_PLAYER_ID) {
return SendClientMessage(playerid,COLOR_RED," Kein Spieler mit angegebener ID Online");
}
if(Admin[playerid][AdminLevel] > 1336) {
printf("DEBUG: playerid(%d) , AdminLebel(%d)",playerid,Admin[playerid][AdminLevel]); // Testzwecke
GetPlayerName(pID, pname, sizeof(pname));
format(string1, sizeof(string1), " Du hast %s getötet!", pname );
SendClientMessage(playerid, INFO, string1);
SetPlayerHealth(pID, 0);
}
return 1;
}
Im Befehl scheint mir nichts falsch zu sein. Die Abfrage ist richtig. Gut möglich,dass an Anderer Stelle die falscher SpielerID Adminrechte bekommt.
Dafür gibt es ein Callback.
OnRconCommand