Kannst du es selbst beheben? Ansonsten sag bitte wo genau der Fehler ist.
Beiträge von malE
-
-
-
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. -
Du brauchst nur einmal SendClientMessage. Wenn du nur einmal dem Spieler ein Nachricht senden willst.
Ansonsten war es schon nicht schlecht.Habe es für dich mehr oder weniger Simple bearbeitet.
Code
Alles anzeigenif(!strcmp("/whequip", cmdtext)) { if(Player[playerid][Fraktion] != 21) { SendClientMessage(playerid, -1, "Du bist kein Wheelman"); return 1; } if(IsPlayerInRangeOfPoint(playerid, 7.0, 1076.5974,-345.5101,73.9922)) { GivePlayerWeapon(playerid, 24, 999); // Deagle GivePlayerWeapon(playerid, 25, 999); // Shotgun GivePlayerWeapon(playerid, 29, 999); // MP5 GivePlayerWeapon(playerid, 31, 999); // M4 GivePlayerWeapon(playerid, 34, 999); // Sniper SetPlayerArmour(playerid, 100.0); SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid, COLOR_RED, "Du hast dich Ausgerüstet"); return 1; }else return SendClientMessage(playerid, -1, "Du bist nicht am Equip Point!"); return 1; }
Es kommt das selbe bei her raus, egal welche Version du nimmst.Code
Alles anzeigenif(!strcmp("/whequip", cmdtext)) { if(Player[playerid][Fraktion] != 21)return SendClientMessage(playerid, -1, "Du bist kein Wheelman"); if(!IsPlayerInRangeOfPoint(playerid, 7.0, 1076.5974,-345.5101,73.9922))return SendClientMessage(playerid, -1, "Du bist nicht am Equip Point!"); GivePlayerWeapon(playerid, 24, 999); // Deagle GivePlayerWeapon(playerid, 25, 999); // Shotgun GivePlayerWeapon(playerid, 29, 999); // MP5 GivePlayerWeapon(playerid, 31, 999); // M4 GivePlayerWeapon(playerid, 34, 999); // Sniper SetPlayerArmour(playerid, 100.0); SetPlayerHealth(playerid, 100.0); SendClientMessage(playerid, COLOR_RED, "Du hast dich Ausgerüstet"); return 1; }
-
-
Erstell ein Befehl und frage ab ob der Spieler Wheelman ist, dann ob der Spieler an der Position ist ( IsPlayerInRangeOfPoint ).
In den Klammern von IsPlayerInRangeOfPoint gibst du Ihm dann die Waffen und ggf. eine Nachricht ( SendCLientMessage ).Wenn du es dann nicht hinkriegst mache ich dir das schnell.