Enum Information returns C? -
knackworst - 01.10.2011
hi, I made my first enum ever...
an enum to easly make missions in my script, instead of adding 50 lines per mission, I try to do it with maybe 5 lines per mission...
anyways this is what I have:
pawn Code:
enum DMissions
{
mission_name[200],
person_name[200],
pick_place[50],
deliver_place[50],
mission_type,
Float:pick_x,
Float:pick_y,
Float:pick_z,
Float:deliver_x,
Float:deliver_y,
Float:deliver_z
};
new Mission[6][DMissions]=
{
//==============================================================================
//Mission TYPE 1
//==============================================================================
{"Travis Pastrana Is Going to participate the X-games", "Travis Pastrana", "The Hollywood Hotel", "The Stadium", 1, \
334.4390,-1519.8026,35.7015,
2732.6616,-1841.6346,9.9145},
{"Chris Martin is back from his smash concert in the Stadium VIVA LA VIDA man!", "Chris Martin", "The Stadium", "Chris Martin's Hotel", 1, \
2732.6616,-1841.6346,9.9145,
1737.9714,-1270.4094,13.5441},
//==============================================================================
//Mission TYPE 2
//==============================================================================
{"The Pope has a meeting with Barack Obama", "The Pope", "The Airport", "The White House", 2, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
{"Herman Van Rompuy, President of Europe has a meeting with Barack Obama", "Herman Van Rompuy", "The Airport", "The White House", 2, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
//==============================================================================
//Mission TYPE 3
//==============================================================================
{"Barack Obama has arrived from his trip to Mexico", "Barack Obama", "The Airport", "The White House", 3, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
{"Rob Dyredek has arrived at the airport", "Rob Dyredek", "The Airport", "Dyrdek's House", 3, \
1682.4960,-2290.7954,13.0821,
974.4201,-819.5055,96.6825}
};
ok, so I did not try to make extremely hard functions at the beginning, just some easy stuff to test if I fully understand the way to use this stuff...
ok so the little test code:
pawn Code:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new
string[200],
mName = Mission[1][mission_name],
mPName = Mission[1][person_name];
format(string,sizeof(string),"%s",mName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",mPName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Ok, I compile, and get no errors, so I think that I'm on the good way
but when I go in game i get the following message when I type /mission1
C
CCC
so that means that my first string returned as C
and the second as CCC
... I have no Idea why it gets C...
and why it does not do what it should do...
Thanks in advance
Re: Enum Information returns C? -
[MWR]Blood - 01.10.2011
pawn Code:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new
string[200],
mName = Mission[sizeof(Mission)][mission_name],
mPName = Mission[sizeof(Mission)][person_name];
format(string,sizeof(string),"%s",mName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",mPName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Re: Enum Information returns C? -
kacper55331 - 01.10.2011
pawn Code:
format(string,sizeof(string),"%s",Mission[id or int][mission_name]);
pawn Code:
new Mission[6][DMissions]=
{
//==============================================================================
//Mission TYPE 1
//==============================================================================
{"Travis Pastrana Is Going to participate the X-games", "Travis Pastrana", "The Hollywood Hotel", "The Stadium", 1, \
334.4390,-1519.8026,35.7015,
2732.6616,-1841.6346,9.9145},
{"Chris Martin is back from his smash concert in the Stadium VIVA LA VIDA man!", "Chris Martin", "The Stadium", "Chris Martin's Hotel", 1, \
2732.6616,-1841.6346,9.9145,
1737.9714,-1270.4094,13.5441},
//==============================================================================
//Mission TYPE 2
//==============================================================================
{"The Pope has a meeting with Barack Obama", "The Pope", "The Airport", "The White House", 2, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
{"Herman Van Rompuy, President of Europe has a meeting with Barack Obama", "Herman Van Rompuy", "The Airport", "The White House", 2, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
//==============================================================================
//Mission TYPE 3
//==============================================================================
{"Barack Obama has arrived from his trip to Mexico", "Barack Obama", "The Airport", "The White House", 3, \
1682.4960,-2290.7954,13.0821,
1122.9896,-2036.9480,69.8938},
{"Rob Dyredek has arrived at the airport", "Rob Dyredek", "The Airport", "Dyrdek's House", 3, \
1682.4960,-2290.7954,13.0821,
974.4201,-819.5055,96.6825}
};
I am surprised that the errors do not pop up using: "\"
Re: Enum Information returns C? -
knackworst - 01.10.2011
EDIT: to the first poster
Code:
C:\Users\William\Documents\Famous' World\Famous' World\gamemodes\Famous.pwn(4482) : error 032: array index out of bounds (variable "Mission")
C:\Users\William\Documents\Famous' World\Famous' World\gamemodes\Famous.pwn(4483) : error 032: array index out of bounds (variable "Mission")
lines:
pawn Code:
mName = Mission[sizeof(Mission)][mission_name],
mPName = Mission[sizeof(Mission)][person_name];
to the second poster:
well the \ stands for new line in PAWN, doesn't it?
I did it because otherwise it's kinda annoying and hard to insert the chords and stuff...
and I don't get the [id or int]
thing...
Re: Enum Information returns C? -
[MWR]Blood - 01.10.2011
Do this:
pawn Code:
new sMission = sizeof(Mission)
and then replace sizeof(Mission) with sMission.
This will fix it.
Re: Enum Information returns C? -
knackworst - 01.10.2011
:O now it returns as serverUnknownCommand ingame...
wtf?
pawn Code:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new sMission = sizeof(Mission);
new
mName = Mission[sMission][mission_name],
mPName = Mission[sMission][person_name];
format(string,sizeof(string),"%s",mName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",mPName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Re: Enum Information returns C? -
[MWR]Blood - 01.10.2011
pawn Code:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new sMission = sizeof(Mission);
format(string,sizeof(string),"%s",Mission[sMission][mission_name]);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",Mission[sMission][person_name]);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Re: Enum Information returns C? -
knackworst - 01.10.2011
still unknown command thing :/
pawn Code:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new sMission = sizeof(Mission);
format(string,sizeof(string),"%s",Mission[sMission][mission_name]);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",Mission[sMission][person_name]);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Re: Enum Information returns C? -
[MWR]Blood - 01.10.2011
Well, you have to do this like that:
pawn Code:
new Mission[6][DMissions]=
{
//==============================================================================
//Mission TYPE 1
//==============================================================================
{var1},
{var2},
{var3},
{var4},
//and so on!
Re: Enum Information returns C? -
knackworst - 01.10.2011
but how to i put the info in the variables then? so I can use them later on?
Re: Enum Information returns C? -
MadeMan - 01.10.2011
You can remove the '\' from the end of the line. It's used for strings.
Re: Enum Information returns C? -
knackworst - 01.10.2011
Thanks but i still get the
c
and
ccc
pawn Код:
if (strcmp("/mission1", cmdtext, true) == 0)
{
new
mName = Mission[1][mission_name],
mPName = Mission[1][person_name];
format(string,sizeof(string),"%s",mName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",mPName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
return 1;
}
Re: Enum Information returns C? -
[MWR]Blood - 01.10.2011
Just input the info you have in the enum....
pawn Код:
mission_name[200],
person_name[200],
pick_place[50],
deliver_place[50],
mission_type,
Float:pick_x,
Float:pick_y,
Float:pick_z,
Float:deliver_x,
Float:deliver_y,
Float:deliver_z
Something like
pawn Код:
{"Mission name"},
{"This is the person name"},
{"Pick place..."},
and so on, you got it.
Re: Enum Information returns C? -
knackworst - 01.10.2011
But how do i differ the info from mission with the others f.e
Re: Enum Information returns C? -
MadeMan - 01.10.2011
mName and mPName should be strings.
pawn Код:
new
mName[200],
mPName[200];
strmid(mName, Mission[1][mission_name], 0, 200);
strmid(mPName, Mission[1][person_name], 0, 200);
Re: Enum Information returns C? -
knackworst - 01.10.2011
Thanks alot!
it works : )
just a little question
how can I get f.e the name of all the missions with type 1?
i know its with a loop
and its something like this:
pawn Код:
for(new im; im < mission; im++)
and then an if statement to check the type
but i don't know what exactly to put instead of that < missions
:/
Re: Enum Information returns C? -
MadeMan - 01.10.2011
pawn Код:
for(new im; im < sizeof(Mission); im++)
Re: Enum Information returns C? -
knackworst - 01.10.2011
Thanks + rep!
but for the new command I'm stuck :/
pawn Код:
if (strcmp("/mission1", cmdtext, true) == 0)
{
for(new im; im < sizeof(Mission); im++)
{
if(Mission[][mission_type]//stuck here )
{
new
mName[200],
mPName[200];
strmid(mName, Mission[1][mission_name], 0, 200);
strmid(mPName, Mission[1][person_name], 0, 200);
format(string,sizeof(string),"%s",mName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
format(string,sizeof(string),"%s",mPName);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, string);
}
}
return 1;
}
I don't get what to do next :/
AW: Enum Information returns C? -
Nero_3D - 01.10.2011
pawn Код:
// indentation
if(strcmp("/mission", cmdtext, true, 8) == 0) {
new
i = 0,
tmp[128],
type = strval(cmdtext[8]);
for( ; i != sizeof Mission; ++i) {
if(Mission[i][mission_type] == type) {
format(tmp, sizeof tmp, "Mission: \"%s\" Person: \"%s\"", Mission[i][mission_name], Mission[i][person_name]);
SendClientMessage(playerid, COLOR_YELLOW_LABEL, tmp);
}
}
if(tmp[0]) {
return true;
}
}
I used tmp because I dont know if the string variable is global or created in OnPlayerCommandText
Re: Enum Information returns C? -
knackworst - 01.10.2011
O.o
Now that's what I call professional structure...
I do not fully understand lol
um, the string variable is under the commandtext callback