Wenn ich ehrlich bin, steige ich selbst nicht durch dein Code durch.
Aber versuch das mal: http://pastebin.com/DMnnW8TT und http://pastebin.com/V9q5K0ti
Beiträge von malE
-
-
Dann heißt es vielleicht Funtion OnPlayerDeath
-
Kannst du mir komplett dein public OnPlayerDeath bitte senden.
-
Kannst du es selbst beheben? Ansonsten sag bitte wo genau der Fehler ist.
-
-
Müsste theoretisch so klappen.
Code
Alles anzeigenstock ReturnPlayerID(l_PlayerName[]) //©Jeffry { new l_name[MAX_PLAYER_NAME]; for(new i=0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { GetPlayerName(i, l_name, MAX_PLAYER_NAME); if(!strcmp(l_name,l_PlayerName, true)) return i; } } return INVALID_PLAYER_ID; } // Deklarier bitte in deinem Player Enum pAuftraggeber[MAX_PLAYER_NAME] if(strcmp(cmd, "/contract", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]"); return 1; } giveplayerid = ReturnUser(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]"); return 1; } moneys = strval(tmp); if(moneys < 50000 || moneys > 1000000) { SendClientMessage(playerid, COLOR_GREY, " Die Vertragssumme muss mindestens $50000-, aber nicht mehr als $1.000.000 betragen!"); return 1; } if(PlayerInfo[playerid][pLevel] < 3) { SendClientMessage(playerid, COLOR_GRAD1, "Du musst mindestens Level 3 haben um einen Vertrag zu erstellen."); return 1; } if (IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8) { SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!"); return 1; } else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8) { SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!"); return 1; } else if(PlayerInfo[giveplayerid][pMember] == 8||PlayerInfo[giveplayerid][pLeader] == 8) { SendClientMessage(playerid, COLOR_GREY, " Du kannst keinen Hitman unter Vertrag nehmen !"); return 1; } if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!"); return 1; } GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); playermoney = GetPlayerMoney(playerid); if (moneys > 0 && playermoney >= moneys) { GivePlayerMoney(playerid, (0 - moneys)); format(PlayerInfo[giveplayerid][pAuftraggeber], MAX_PLAYER_NAME, "%s", sendername); // Neu PlayerInfo[giveplayerid][pHeadValue]+=moneys; format(string, sizeof(string), "%s möchte das ein Hitman die Zielperson: %s für $%d tötet.",sendername, giveplayer, moneys); SendFamilyMessage(8, COLOR_YELLOW, string); format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys); SendClientMessage(playerid, COLOR_LIGHTBLUE, string); PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); } else { SendClientMessage(playerid, COLOR_GRAD1, " Falsche Angaben!"); } } } else { format(string, sizeof(string), " %d ist kein Aktiver Spieler.", giveplayerid); SendClientMessage(playerid, COLOR_GRAD1, string); } } return 1; } // OnPlayerDeath if(PlayerInfo[playerid][pHeadValue] > 0) { if(IsPlayerConnected(killerid)) { if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8) { ConsumingMoney[killerid] = 1; new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2; GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2); // Neu if(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]) != INVALID_PLAYER_ID && IsPlayerConnected(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]))){ format(string, 128, "Hitman %s hat dein Contract %s getötet.", killer, name); SendClientMessage(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]), COLOR_YELLOW, string); } format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2); SendFamilyMessage(8, COLOR_YELLOW, string); PlayerInfo[playerid][pHeadValue] = 0; } } }
edit:
@DerFamer ändere bitte den alten Code zu dem hierCode
Alles anzeigen// Bei OnPlayerDeath if(PlayerInfo[playerid][pHeadValue] > 0) { if(IsPlayerConnected(killerid)) { if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8) { ConsumingMoney[killerid] = 1; new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2; GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2); // Neu if(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]) != INVALID_PLAYER_ID){ format(string, 128, "Hitman %s hat dein Contract %s getötet.", killer, name); SendClientMessage(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]), COLOR_YELLOW, string); format(PlayerInfo[playerid][pAuftraggeber], MAX_PLAYER_NAME, ""); } format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2); SendFamilyMessage(8, COLOR_YELLOW, string); PlayerInfo[playerid][pHeadValue] = 0; } } }
-
Wie soll man diesen Satz verstehen? Lese doch bitte noch einmal deinen Satz bevor du auf "Absenden" drückst.
-
So, nun müsste die Fraktionskasse und der Spieler 50% des Kopfgeldes erhalten.
Code
Alles anzeigenif(PlayerInfo[playerid][pHeadValue] > 0) { if(IsPlayerConnected(killerid)) { if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8) { ConsumingMoney[killerid] = 1; new killer[MAX_PLAYER_NAME]; GetPlayerName(killerid, killer, sizeof(killer)); FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2; GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2); format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2); SendFamilyMessage(8, COLOR_YELLOW, string); PlayerInfo[playerid][pHeadValue] = 0; } } }
-
So wie ich dich verstanden habe, soll der Spieler 50% und die Fraktionskasse 50% des Contracts Geld bekommen?
Poste mal OnPlayerDeath, wenn möglich nur den Part welches das Contract System beinhaltet.
-
Wie hast du es nun gemacht?
-
Ich habe persönlich davon keine Ahnung aber, vielleicht können dir diese Personen helfen:
@Jeffry, @Kaliber, @[DT]midomen, @IPrototypeI. -
Sehr schön erklärt. Bin gespannt auf die nächsten Parts.
-
Deine Abfrage stimmt so nicht.
Es wird nämlich abgefragt ob der Spieler Wheelman ist ( richtig ), nun wird aber die Funktion beendet wenn der Spieler Wheelman ist ( falsch ).Codeif (PlayerInfo[playerid][pMember] != 21 || PlayerInfo[playerid][pLeader] != 21)//Wheelman { SendClientMessage(playerid, -1, "Du bist kein Wheelman"); return 1; }
Als kleine Hilfe dafür.
"==" = ist gleich
"!=" = ist nicht gleich
">" = mehr als
"<" = weniger als
"=>" = gleich oder mehr als
"=<" = gleich oder weniger als
"++" = addiert 1
"--" = subtrahiert 1Ich hoffe ich habe jetzt auch alles richtig aufgelistet.
-
Dein zweiten Bug habe ich mit der Abfrage behoben.
Kannst du bitte dein ersten Bug genauer Erläutern. -
Uff...
Dann füge es dort ein. Wenn du nicht weiß wie es geht dann zeig mal die komplette Function oder ein Teil. -
Das kann nicht sein.
Bist du dir sicher das du es richtig kopiert hast und keine Leerzeichen irgendwie noch dahinter / davor sind? -
habe dies jetzt mal so gemacht
if (PlayerInfo[playerid][pMember] == 21 || PlayerInfo[playerid][pLeader] == 21)//Wheelman
Gut! Das sind schon mal die richtigen Variablen.
Dann suche nach public OnPlayerCommandText und füge dein Befehl dort mit ein.
-
Dann brauchst du das: if(IsPlayerInFrac(playerid, FRAKID) return SendClientMessage(playerid, FARBE, "Du bist kein Mitglied der Wheelman");
Falsch. So würde diese Meldung kommen, wenn playerid Wheelman ist.
Du hast ! vergessen. !IsPlayerInFrac(playerid, frakid). Außerdem fehlt dort auch noch eine Klammer.
-
Ok dann ändere
Codeif(Player[playerid][Fraktion] != 21)return SendClientMessage(playerid, -1, "Du bist kein Wheelman.");
zu
Codeif(!IsPlayerInFrac(playerid, 21) || PlayerInfo[playerid][pLeader] != 21)return SendClientMessage(playerid, -1, "Du bist kein Wheelman.");
-
Hast du es nun in OnPlayerCommandText eingefügt? Wenn nicht dann mach das bitte. -
Nein. Hast du es in OnPlayerCommandText nun eingefügt oder nicht?
Weißt du überhaupt wie deine Variable heißt? Wenn nicht dann schau mal nach ob du irgendwie sowas findest: stock IsPlayerInFraktion. -
Hast du in OnPlayerCommandText eingefügt?
Außerdem musst du die Variable: Player[playerid][Fraktion] zu deiner anpassen.