Quote:
Originally Posted by jhonyxakep
А вы скажите как себе это представляете, посмотрю, подумаю
|
Ну честно говоря я только пришёл с другой игры, где всё работало на скриптах, которые запускались из других файлов. К примеру
Code:
CreateUnit();
sleep 2;
PutUnitInCar();
Т.е. такой вариант не останавливал работу всего сервера. Собстно многопоточность я представлял в таком виде: останавливаем код, берём всё что ниже Sleep, посылаем в другой поток (взяв что осталось от времени Sleep'a), где собстно и идёт время, а тем временем основной код идёт своим ходом. Но сколько ни читал - самп\павн NotThreadSafe, что даёт задуматься, что всё это нереально реализовать.
А вообще в павне мечтал использовать sleep например так:
pawn Code:
if (strcmp(cmd, "/callgundrop", true)==0)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
MapAndreas_FindZ_For2DCoord(x,y,z);
new tempobj = CreateObject(18849, x, y, z+150, 0.0, 0.0, 0.0, 100);
new movetime = MoveObject(tempobj, x, y, z+7.2, speed + random(5));
//SetTimerEx("DropPackage", movetime + SECONDS(2), 0, "ddfff", _p, per, x, y, z+1);
//SetTimerEx("TimedObjectDelete", movetime + SECONDS(4), 0, "i", tempobj);
SFCM(playerid,COLOR_GREEN,"Доставка посылки займёт примерно %d c", movetime / 1000);
Sleep(movetime);
SFCM(playerid, COLOR_GREEN, "Посылка доставлена через %d c", movetime / 1000);
return 1; // и во время всего этого сервер не стоит, и не недо добавлять таймер с функцией.
}