[Help]With a code

06/18/2010 02:59 Jay10291#1
Trying to get this NPC to check if your a trojan. If your not its supposed to say "Only trojans can buy this blah blah" But it doesn't. It wont sell you anything if your not trojan but it doesnt say what i want it to. Whats wrong with my code? To me it looks right but I SUCK AT THIS SHIT -.-
Code:
if (Control == 1)
                                    {
                                        if (GC.MyChar.Job == 15)
                                        {
                                            if (GC.MyChar.CPs >= 2000000)
                                            {
                                                GC.MyChar.CPs -= 2000000;

                                                GC.MyChar.StatEff.Add(StatusEffectEn.TopTrojan);
                                                GC.Message(2005, GC.MyChar.Name + " has bought the Top Trojan Halo");
                                            }
                                            else
                                            {
                                                GC.AddSend(Packets.NPCSay("Only Trojans can buy the Top Trojan Halo"));
                                                GC.AddSend(Packets.NPCLink("Oops", 255));
                                                GC.AddSend(Packets.NPCSetFace(N.Avatar));
                                                GC.AddSend(Packets.NPCFinish());
                                            }
                                        }
                                    }
P.S I already tried if (GC.MyChar.CPs >= 2000000 || GC.MyChar.Job == 15) Didn't work
06/18/2010 03:13 ~Master#2
Code:
if (Control == 1)
  {
 if (GC.MyChar.Job == 15)
      {
                        if (GC.MyChar.CPs >= 2000000)
                        {
                        GC.MyChar.CPs -= 2000000;
		        GC.MyChar.StatEff.Remove(StatusEffectEn.Flashy);
                        GC.MyChar.StatEff.Add(StatusEffectEn.TopTrojan);
                        GC.Message(2005, GC.MyChar.Name + "has bought the Top Trojan Halo");
                        GC.MyChar.TopsDL = false;
	 	         }
                        else
                           {
                             GC.AddSend(Packets.NPCSay("You don't have enough cps"));
                             GC.AddSend(Packets.NPCLink("Oops", 255));
                             GC.AddSend(Packets.NPCSetFace(N.Avatar));
                             GC.AddSend(Packets.NPCFinish());
                             }
     }
  else
        {
         GC.AddSend(Packets.NPCSay("Only Trojans can buy the Top Trojan Halo"));
         GC.AddSend(Packets.NPCLink("Oops", 255));
         GC.AddSend(Packets.NPCSetFace(N.Avatar));
         GC.AddSend(Packets.NPCFinish());
          }
}
Try this one
06/18/2010 03:13 -Shunsui-#3
Code:
if (Control == 1)
            {
                if (GC.MyChar.Job == 15)
                {
                    if (GC.MyChar.CPs >= 2000000)
                    {
                        GC.MyChar.CPs -= 2000000;

                        GC.MyChar.StatEff.Add(StatusEffectEn.TopTrojan);
                        GC.Message(2005, GC.MyChar.Name + " has bought the Top Trojan Halo");
                    }
                }
                else
                {
                    GC.AddSend(Packets.NPCSay("Only Trojans can buy the Top Trojan Halo"));
                    GC.AddSend(Packets.NPCLink("Oops", 255));
                    GC.AddSend(Packets.NPCSetFace(N.Avatar));
                    GC.AddSend(Packets.NPCFinish());
                }
            }
]

there u go..
06/18/2010 03:17 s.bat#4
Code:
                           
                                    if (Control == 1)
                                    {
                                        if (GC.MyChar.Job == 15)
                                        {
                                            if (GC.MyChar.CPs >= 2000000)
                                            {
                                                GC.MyChar.CPs -= 2000000;

                                                GC.MyChar.StatEff.Add(StatusEffectEn.TopTrojan);
                                                GC.Message(2005, GC.MyChar.Name + " has bought the Top Trojan Halo");
                                            }
                                            else
                                            {
                                                GC.AddSend(Packets.NPCSay("You can't buy glory with a purse like that."));
                                                GC.AddSend(Packets.NPCLink("Alright, guvna!", 255));
                                                GC.AddSend(Packets.NPCSetFace(N.Avatar));
                                                GC.AddSend(Packets.NPCFinish());
                                            }
                                        }
                                        else
                                        {
                                            GC.AddSend(Packets.NPCSay("Only Trojans can buy the Top Trojan Halo"));
                                            GC.AddSend(Packets.NPCLink("Oops", 255));
                                            GC.AddSend(Packets.NPCSetFace(N.Avatar));
                                            GC.AddSend(Packets.NPCFinish());
                                        }
                                    }
You had a bit of the CFC's (control-flow confusion). Hopefully in the future you'll be able to look for it yourself.

Edit: Damn!
06/18/2010 03:38 Jay10291#5
Thanks guys, I'll never f*ck this kinda sh*t up ever again. I already have twice, now I get it lol
@s.bat
that's goin in my siggy rofll
06/18/2010 06:43 Arcо#6
Just for future reference '||' means or and '&&' means and.
06/18/2010 11:25 dodolinobobo#7
maybe use

Code:
if (GC.MyChar.Job >= 10 && GC.MyChar.Job <= 15)
this is the check for all the trojan jobs