if(strcmp(cmd,"/kaufen",true)==0) { for(new i=0;i<MAX_HOUSES;i++) { if(IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[i][eX], HausInfo[i][eY], HausInfo[i][eZ])) { if(GetPlayerMoney(playerid) < HausInfo[i][Preis]) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); GivePlayerMoney(playerid, - HausInfo[i][Preis]); strmid(HausInfo[i][Besitzer], Name, 0, strlen(Name), 24); HausInfo[i][Vergeben] = 1; SendClientMessage(playerid, FARBE_WEIЯ,"Du hast das Haus gekauft, um Befehle anzusehen schreibe /hauscmds !"); return 1; } else { SendClientMessage(playerid,FARBE_WEIЯ,"Du hast zu wenig Geld, du musst zuerst das Geld auf der Hand haben."); return 1; } } else { SendClientMessage(playerid, FARBE_WEIЯ,"Du befindest dich nicht an einem Haus das zum Verkauf steht!"); return 1; } } return 1; }
if(strcmp(cmd,"/kaufen",true)==0) { for(new i=0;i<MAX_HOUSES;i++) { if(!IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[i][eX], HausInfo[i][eY], HausInfo[i][eZ])) continue; if(GetPlayerMoney(playerid) < HausInfo[i][Preis]) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); GivePlayerMoney(playerid, - HausInfo[i][Preis]); strmid(HausInfo[i][Besitzer], Name, 0, strlen(Name), 24); HausInfo[i][Vergeben] = 1; SendClientMessage(playerid, FARBE_WEIЯ,"Du hast das Haus gekauft, um Befehle anzusehen schreibe /hauscmds !"); return 1; } else { SendClientMessage(playerid,FARBE_WEIЯ,"Du hast zu wenig Geld, du musst zuerst das Geld auf der Hand haben."); return 1; } } return 1; }
Originally Posted by KuHS
Simply the command checks for all houses within for() looping with returns, so it's wrong. Example: 1 house, it checks, and it's not found, it sends a message, when returns and don't check for 2 house... am i right? I suggest you to use continue; function in for() loops. In for() loops return stops looping, continue just ends variable looping.
BTW. If you want to send end message, send it before for() looping. Код:
if(strcmp(cmd,"/kaufen",true)==0) { for(new i=0;i<MAX_HOUSES;i++) { if(!IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[i][eX], HausInfo[i][eY], HausInfo[i][eZ])) continue; if(GetPlayerMoney(playerid) < HausInfo[i][Preis]) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); GivePlayerMoney(playerid, - HausInfo[i][Preis]); strmid(HausInfo[i][Besitzer], Name, 0, strlen(Name), 24); HausInfo[i][Vergeben] = 1; SendClientMessage(playerid, FARBE_WEIЯ,"Du hast das Haus gekauft, um Befehle anzusehen schreibe /hauscmds !"); return 1; } else { SendClientMessage(playerid,FARBE_WEIЯ,"Du hast zu wenig Geld, du musst zuerst das Geld auf der Hand haben."); return 1; } } return 1; } |
new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); GivePlayerMoney(playerid, - HausInfo[i][Preis]); strmid(HausInfo[i][Besitzer], Name, 0, strlen(Name), 24); HausInfo[i][Vergeben] = 1; SendClientMessage(playerid, FARBE_WEIЯ,"Du hast das Haus gekauft, um Befehle anzusehen schreibe /hauscmds !"); return 1;
strmid(HausInfo[i][Besitzer], Name, 0, strlen(Name), 24); HausInfo[i][Vergeben] = 1;
enum hInfo { Float:eX, Float:eY, Float:eZ, Float:aX, Float:aY, Float:aZ, Preis, Besitzer[24], Vergeben, Miete, }; new HausInfo[MAX_HOUSES][hInfo];
if(HausInfo[i][Vergeben] == 1) { format(bString, 64, "Preis%d", i); HausInfo[i][Preis] = INI_ReadInt(bString); format(bString, 64, "Besitzer%d", i); INI_ReadString(HausInfo[i][Besitzer],bString,24); format(bString,sizeof(bString),"~g~.:Haus Informationen:.~n~~w~Mietkosten: %d ~y~~n~Besitzer: %s~n~~w~Tippe /mieten um ein Zimmer zu mieten ~b~",HausInfo[i][Preis],HausInfo[i][Besitzer]); GameTextForPlayer(playerid,bString,2500,3); } else { format(bString, 64, "Preis%d", i); HausInfo[i][Preis] = INI_ReadInt(bString); format(bString, 64, "Besitzer%d", i); INI_ReadString(HausInfo[i][Besitzer],bString,24); format(bString,sizeof(bString),"~g~.:Haus Informationen:.~n~~w~Haus Preis: %d ~y~~n~Besitzer: %s ~b~~n~~w~Tippe /kaufen um das Haus zu kaufen",HausInfo[i][Preis],HausInfo[i][Besitzer]); GameTextForPlayer(playerid,bString,2500,3); }