hi @ all,
ich habe ein problem, ich möchte eine routine schreiben, welche jede x-te-position der map die höhe berechnet
ich habe halt angefangen, nur gibt es nun das problem, dass ich 2 mal denselben eintrag bekomme und danach erst wieder den eintrag, welcher um 2 mal x größer ist,
kurz gesagt jeder zweite eintrag ist mit dem vorherigen identisch und der nachfolgende um das 2 fache höher als x.
Code
-3000.000000 -3000.000000 1.477769 2
-3000.000000 -3000.000000 1.477769 3
-3000.000000 -3000.000000 1.477769 4
-3000.000000 -2920.000000 1.500000 5
-3000.000000 -2920.000000 1.500000 6
mein Timer, jener das erstellt soll nun warten bis posy um x nur größer ist als oldposy
Code
enum Position
{
idline,
ap,
bp,
Float:pos_x,
Float:pos_y,
Float:pos_z,
Float:oldpos_x,
Float:oldpos_y,
Float:oldpos_z,
};
new Calculate[MAX_PLAYERS][Position];
forward CalculateTimer(playerid);
if(strcmp(cmd, "/calculate", true) == 0)
{
/*GameTextForPlayer(playerid, "Server is Calculating...", 4000, 5);
SetPlayerCameraPos(playerid,1460.0, -1324.0, 287.2);
SetPlayerCameraLookAt(playerid,1374.5, -1291.1, 239.0);*/
Calculate[playerid][ap]=-3000;
Calculate[playerid][bp]=-3000;
calculatetimer=SetTimerEx("CalculateTimer",1,1,"%d",playerid);
return 1;
}
public CalculateTimer(playerid)
{
new query[512];
while(Calculate[playerid][ap]<=3000)
{
while(Calculate[playerid][bp]<=3000)
{
GetPlayerPos(playerid,Calculate[playerid][pos_x],Calculate[playerid][pos_y],Calculate[playerid][pos_z]);
if(Calculate[playerid][oldpos_x]==Calculate[playerid][pos_x] && Calculate[playerid][oldpos_y]==Calculate[playerid][pos_y] && Calculate[playerid][oldpos_z]==Calculate[playerid][pos_z]){} else{
Calculate[playerid][pos_x] = float(Calculate[playerid][ap]);
Calculate[playerid][pos_y] = float(Calculate[playerid][bp]);
Calculate[playerid][pos_z] = float(0);
GameTextForPlayer(playerid, "Server is Calculating...", 4000, 5);
SetPlayerPos(playerid,Calculate[playerid][pos_x],Calculate[playerid][pos_y],Calculate[playerid][pos_z]);
SetPlayerPosFindZ(playerid,Calculate[playerid][pos_x],Calculate[playerid][pos_y],526.8);
format(query,sizeof(query), "INSERT INTO `hmap` (`x`,`y`,`z`,`id`) VALUES ('%f','%f','%f',%d);",Calculate[playerid][pos_x],Calculate[playerid][pos_y],Calculate[playerid][pos_z],Calculate[playerid][idline]);
mysql_query(query);
Calculate[playerid][bp]+=20;
Calculate[playerid][oldpos_x]=Calculate[playerid][pos_x];
Calculate[playerid][oldpos_y]=Calculate[playerid][pos_y];
Calculate[playerid][oldpos_z]=Calculate[playerid][pos_z];
Calculate[playerid][idline]++;
}
return 1;
}
Calculate[playerid][ap]+=20;
Calculate[playerid][bp]=-3000;
}
return 1;
}
Alles anzeigen
Anmerkung: es wird mit mysql gespeichert um für einen späteren zugriff schnell zur hand zu sein
es wird das Alternative Mysql Plugin verwendet, aber mit "samp_" vor jeden mysql befehl geht es auch mit sampmysql