Beiträge von Mike_Traceur
-
-
auch von mir 10/10
-
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
Alles anzeigenenum 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; }
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 -
auch das '%' zeichen im Comfenster wird zu einem '?'