Return + continue -
bigboy81 - 03.05.2015
How i can return something, and then continue..
Re: Return + continue -
giorgosdim12 - 03.05.2015
In any loop?
Re: Return + continue -
bigboy81 - 03.05.2015
i dont use loop..
Re: Return + continue -
Misiur - 03.05.2015
You mean something like yield in python? I think that's reserved for generators. If you mean something else, please explain what do you exactly mean.
Re: Return + continue -
giorgosdim12 - 03.05.2015
yes please explain what do you exactly mean.
Re: Return + continue -
bigboy81 - 03.05.2015
I making Pocketbook system.
When player die server takes player money.
But if player are member or leader i don't want server takes for him money.
But if i set return when player die server don't respawn him in L.S.P.D spawn or FBI spawn or JSO spawn..
Код:
public ReleaseFromHospital(playerid)
{
KillTimer(stopactimer[playerid]);
Dead[playerid] = 1;
SCM(playerid, COLOR_LIGHT_BLUE, "You were released from hospital.");
TogglePlayerControllable(playerid, 1);
SetCameraBehindPlayer(playerid);
SafeSetPlayerHealth(playerid, 50.0);
if(PlayerInfo[playerid][pPocketbookexpire] < 1)
{
PlayerInfo[playerid][pPocketbook] = 0;
PlayerInfo[playerid][pPocketbookexpire] = 0;
SCM(playerid, COLOR_WHITE, "Your Pocketbook expire buy new!");
}
if(PlayerInfo[playerid][pPocketbook] > 0)
{
SCM(playerid, COLOR_WHITE, "You are insured.");
SafeGivePlayerMoney(playerid, -500);
}
if(PlayerInfo[playerid][pPocketbook] < 1)
{
SCM(playerid, COLOR_WHITE, "You don't have pocketbook");
}
if((PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) && PlayerInfo[playerid][pDuty] == 1)//L.S.P.D spawn
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid,6);
SafeSetPlayerPos(playerid, 216.9725,79.1339,1005.0391);
SetPlayerFacingAngle(playerid, 270.0);
SafeSetPlayerArmor(playerid, 50.0);
return 1;
}
if(PlayerInfo[playerid][pDuty] == 1 || PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1
|| PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2 || PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
{
SCM(playerid, COLOR_WHITE, "Country pay insured for you.");
return 1;
}
else if((PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2) && PlayerInfo[playerid][pDuty] == 1)//FBI spawn
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid,3);
SafeSetPlayerPos(playerid, 299.7097,183.1322,1007.1719);
SetPlayerFacingAngle(playerid, 90);
SafeSetPlayerHealth(playerid, 75.0);
SafeSetPlayerArmor(playerid, 75.0);
return 1;
}
else if((PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3) && PlayerInfo[playerid][pDuty] == 1)//JSO spawn
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid, 0);
SafeSetPlayerPos(playerid, 2731.5229,-2451.3643,17.5937);
SafeSetPlayerHealth(playerid, 100.0);
SafeSetPlayerArmor(playerid, 99.0);
return 1;
}
else
{
new decidehosp = random(2);
switch(decidehosp)
{
case 0:
{
SafeSetPlayerPos(playerid, 1177.4866,-1323.9749,14.0731);
SetPlayerFacingAngle(playerid, 270.0);
SafeSetPlayerInterior(playerid, 0);
SafeResetPlayerWeapons(playerid);
}
case 1:
{
SafeSetPlayerPos(playerid, 2025.1497,-1402.8643,17.2089);
SetPlayerFacingAngle(playerid, 270.0);
SafeSetPlayerInterior(playerid, 0);
SafeResetPlayerWeapons(playerid);
}
}
}
KillTimer(stopactimer[playerid]);
stopactimer[playerid] = SetTimerEx("resumeanticheat", 4000, false, "i", playerid);
return 1;
}
Re: Return + continue -
Misiur - 03.05.2015
Return is final keyword in function, nothing can happen after it. But, you can make it conditional, so it only returns in certain situations. Also, simply moving chunks of code can make your code clearer:
pawn Код:
#define ActiveMemberOnDuty(%0,%1) (PlayerInfo[%0][pDuty] && (PlayerInfo[%0][pMember] == %1 || PlayerInfo[%0][pLeader] == %1))
public ReleaseFromHospital(playerid)
{
KillTimer(stopactimer[playerid]);
Dead[playerid] = 1;
SCM(playerid, COLOR_LIGHT_BLUE, "You were released from hospital.");
TogglePlayerControllable(playerid, 1);
SetCameraBehindPlayer(playerid);
SafeSetPlayerHealth(playerid, 50.0);
if(PlayerInfo[playerid][pPocketbookexpire] < 1)
{
PlayerInfo[playerid][pPocketbook] = 0;
PlayerInfo[playerid][pPocketbookexpire] = 0;
SCM(playerid, COLOR_WHITE, "Your Pocketbook expire buy new!");
}
if(!PlayerInfo[playerid][pPocketbook]) {
SCM(playerid, COLOR_WHITE, "You don't have pocketbook");
SafeGivePlayerMoney(playerid, -500);
}
else {
SCM(playerid, COLOR_WHITE, "You are insured.");
}
KillTimer(stopactimer[playerid]);
stopactimer[playerid] = SetTimerEx("resumeanticheat", 4000, false, "i", playerid);
if(ActiveMemberOnDuty(playerid, 1) || ActiveMemberOnDuty(playerid, 2) || ActiveMemberOnDuty(playerid, 3))
{
SCM(playerid, COLOR_WHITE, "Country pay insured for you.");
}
if(ActiveMemberOnDuty(playerid, 1))//L.S.P.D spawn
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid,6);
SafeSetPlayerPos(playerid, 216.9725,79.1339,1005.0391);
SetPlayerFacingAngle(playerid, 270.0);
SafeSetPlayerArmor(playerid, 50.0);
return 1;
}
if(ActiveMemberOnDuty(playerid, 2)) //FBI spawn
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid,3);
SafeSetPlayerPos(playerid, 299.7097,183.1322,1007.1719);
SetPlayerFacingAngle(playerid, 90);
SafeSetPlayerHealth(playerid, 75.0);
SafeSetPlayerArmor(playerid, 75.0);
return 1;
}
if(ActiveMemberOnDuty(playerid, 3))
{
SetPlayerToTeamColor(playerid);
SafeSetPlayerInterior(playerid, 0);
SafeSetPlayerPos(playerid, 2731.5229,-2451.3643,17.5937);
SafeSetPlayerHealth(playerid, 100.0);
SafeSetPlayerArmor(playerid, 99.0);
return 1;
}
new decidehosp = random(2);
switch(decidehosp)
{
case 0: SafeSetPlayerPos(playerid, 1177.4866,-1323.9749,14.0731);
case 1: SafeSetPlayerPos(playerid, 2025.1497,-1402.8643,17.2089);
}
SetPlayerFacingAngle(playerid, 270.0);
SafeSetPlayerInterior(playerid, 0);
SafeResetPlayerWeapons(playerid);
return 1;
}
I added one macro, it's cleaner that way - it check if player is a member or leader of a fraction, and if he's on duty.
Re: Return + continue -
bigboy81 - 03.05.2015
if i leader or member of LSPD or FBI system takes from me money.
here must be return 1;
but if i set return 1; he wan't spawn on FBI hq or LSPD hq
Код:
if(ActiveMemberOnDuty(playerid, 1) || ActiveMemberOnDuty(playerid, 2) || ActiveMemberOnDuty(playerid, 3))
{
SCM(playerid, COLOR_WHITE, "Country pay insured for you.");
return 1;
}
Re: Return + continue -
Threshold - 03.05.2015
So don't use return 1?
Re: Return + continue -
bigboy81 - 03.05.2015
If i don't use return 1 system will not spawn member & leader in HQ