Hey Leute
Ich habe da mal eine Frage und zwar möchte ich einen /work Befehl machen der random eine ID aus der Datenbank herausnimmt, nun wollte ich eigentlich nur noch einmal eine Bestätigung ob meine Vorstellung wie ich es machen möchte so schon richtig ist oder ob ich da etwas vergessen habe oder etwas komplett falsches mache.
Hier einmal wie ich mir es gedacht habe:
CMD:work(playerid,params[])
{
new str[128],DBResult:Result
new RandomMission = random(100); //Wird noch bei mir angepasst, ist jetzt nur um ein beispiel zu erschaffen
if(pInfo[playerid][IsInMission]==0)
{
format(str,sizeof(str),"SELECT `ID`FROM`PizzaMissionStart`WHERE`ID`='%d'",RandomMission)
Result=db_query(database,str);
if(db_num_rows(Result)>0)
{
db_get_field_assoc(Result,"Name",str,sizeof(str));
pInfo[playerid][StartName]=str;
db_get_field_assoc(Result,"X",str,sizeof(str));
pInfo[playerid][StartX]=floatstr(str);
db_get_field_assoc(Result,"Y",str,sizeof(str));
pInfo[playerid][StartY]=floatstr(str);
db_get_field_assoc(Result,"Z",str,sizeof(str));
pInfo[playerid][StartZ]=floatstr(str);
CreateDynamicCP(pInfo[playerid][StartX],pInfo[playerid][StartY],pInfo[playerid][StartZ],5,-1,-1,playerid,100);
pInfo[playerid][IsInMission]=1;
new str2[128],DBResult:ResultEnd;
format(str,sizeof(str),"SELECT `ID`FROM`PizzaMissionEnd`WHERE`ID`='%d'",RandomMission)
ResultEnd=db_query(database,str);
if(db_num_rows(ResultEnd)>0)
{
//Wird dann wieder benutzt wenn er im ersten/start Checkpoint ist
db_get_field_assoc(Result,"Name",str,sizeof(str));
pInfo[playerid][EndName]=str;
db_get_field_assoc(Result,"X",str,sizeof(str));
pInfo[playerid][EndX]=floatstr(str);
db_get_field_assoc(Result,"Y",str,sizeof(str));
pInfo[playerid][EndY]=floatstr(str);
db_get_field_assoc(Result,"Z",str,sizeof(str));
pInfo[playerid][EndZ]=floatstr(str);
}
else
{
//Hier hänge ich derzeitig noch etwas fest. Siehe letzter Satz ausserhalb des Codes.
}
}
else
{
return cmd_work(playerid,params);
}
}
else
{
SendClientMessage(playerid,red,"You can't start 2 missions at once. Type /cancel to stop the current mission!");
}
return 1;
}
Zudem bleibt bei mir noch jetzt die Frage, wie mache ich es nun wenn ResultEnd nicht >0 ist, damit er dann noch einen durchlauf startet?