Forum

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Forum » Файловый архив » Object Editor


Object Editor

Сообщений 1 страница 5 из 5

1

Автор:Adain
Автор доработки:Alexander

Скачать
Актуальная версия v 0.20
Старая версия v 0.17

Программа Med

[good]

0

2

up 09/07/20 Багофикс версия 0.20

[good]

0

3

перезалив up 09/07/20 Багофикс версия 0.20 ЯндексДиск #1
перезалив up 09/07/20 Багофикс версия 0.20 ЯндексДиск #2

[good]

0

4

Багофикс.

код
Код:
#include <a_vicemp>
#include <dini>
////////////////////////////////////
const MAX_DECORATIONS = 100;//Выставите на свое кол во

#pragma tabsize 0
#define EDIT_MOVE 0
#define EDIT_ROT 1
#define COLOR_GREEN 0x00FF00FF

#define HOLDING(%0) ((newkeys & (%0)) == (%0)) // Когда игрок удерживает кнопку
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0))) // Когда игрок нажал кнопку
#define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0))) // Когда игрок отпустил нажатую кнопку
// Добыто из wiki.sa-mp.com/wiki/OnPlayerKeyStateChange
///////////////////////////////////
new
Float: X,
Float: Y,
Float: Z,
Float: RX,
Float: RY,
Float: RZ;
new Model_Id[MAX_DECORATIONS];
new Created[MAX_PLAYERS];
new OBJECT[MAX_PLAYERS];
new obj;
new model;
new LoadingObject = 0;
new editMode[MAX_PLAYERS];
new bool: playerInEditMode[MAX_PLAYERS];
new Text:StatsEditTextDraw[MAX_PLAYERS];

new file[128];
new Float:rotateSpeed = 1.0;
new Float:SpeedObject = 2.5;

public OnFilterScriptInit()
{
	LoadObject();
	return 1;
}

forward LoadObject();
public LoadObject()
{
	new t;
	for (new i=1;i<=MAX_DECORATIONS;i++)
	{
    format(file, sizeof(file), "Object/%d.ini",i);
    if(dini_Exists(file))
    {
    	LoadingObject++;
    	Model_Id[i] = dini_Int(file,"ObjectID");
    	X = dini_Float(file,"Posx");
    	Y = dini_Float(file,"Posy");
    	Z = dini_Float(file,"Posz");
    	RX = dini_Float(file,"rPosx");
    	RY = dini_Float(file,"rPosy");
    	RZ = dini_Float(file,"rPosz");
    	OBJECT[t] = CreateObject(Model_Id[i], X, Y, Z, RX, RY, RZ);
    }
	}
	printf("Загружено Объектов[%d]", LoadingObject);
	return 1;
}
public OnPlayerConnect(playerid)
{
	StatsEditTextDraw[playerid] = TextDrawCreate(8.00000, 437.00000,"_");
	TextDrawFont(StatsEditTextDraw[playerid],2);
	TextDrawLetterSize(StatsEditTextDraw[playerid],0.25,1.0);
	return 1;
}
public OnPlayerUpdate(playerid)
{
	new str[300];
	GetObjectPos(OBJECT[playerid],X,Y,Z);
	GetObjectRot(OBJECT[playerid],RX,RY,RZ);
	format(str,sizeof(str)," X: %f    Y: %f    Z: %f   RX: %f    RY: %f    RZ: %f    rotateSpeed: 2b_1f",X,Y,Z,RX,RY,RZ,rotateSpeed);
	TextDrawSetString(Text:StatsEditTextDraw[playerid],str);

	return 1;
}
public OnPlayerSpawn(playerid)
{
	playerInEditMode[playerid] = false;

	SendClientMessage(playerid,COLOR_GREEN," * Команды редактора - /cmdred");
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new str[256];
	new cmd[256];
	new tmp[256];

	new idx;
	cmd = strtok(cmdtext, idx);
	if (strcmp(cmd, "/cmdred", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
    {
     	SendClientMessage(playerid,COLOR_GREEN,"Создать объект - /create [ID модели]");
     	SendClientMessage(playerid,COLOR_GREEN,"Редактировать объект - /edit [Тип режима (0-1)] [ID объекта]");
     	SendClientMessage(playerid,COLOR_GREEN,"...Режим 0 редактирование позиции объекта");
     	SendClientMessage(playerid,COLOR_GREEN,"...Режим 1 редактирование ротации объекта");
     	SendClientMessage(playerid,COLOR_GREEN,"Скорость вращения объекта - /rs (0 - 5)");
     	SendClientMessage(playerid,COLOR_GREEN,"Скорость перемещения объекта - /rd (0 - 5)");
	     SendClientMessage(playerid,COLOR_GREEN,"Удалить объект - /delete [ID объекта]");
        SendClientMessage(playerid,COLOR_GREEN,"Создать дубликат объекта с последним объектом - /dublecatea");
        SendClientMessage(playerid,COLOR_GREEN,"Создать дубликат объекта с другим объектом на ваш выбор - /dublecateb [ID объекта]");
    }
	    return 1;
	}
    if (strcmp(cmd, "/rs", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
	    {
    	if ( playerInEditMode[playerid] == true )
        {//---------------------------------------------------------------------

        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN, " * Используйте: /rs [Скорость вращения (0 - 5)]");
        	return 1;
        }//-----------------------------------------------------------------

        new speed = strval( tmp );

        if( speed < 0 || speed > 5 ) return SendClientMessage(playerid, COLOR_GREEN, " * Минимальная скорость: 0, максимальная: 5");

        switch( speed )
        {
        	case 0: rotateSpeed = 0.5;
        	case 1: rotateSpeed = 1.0;
        	case 2: rotateSpeed = 2.5;
        	case 3: rotateSpeed = 5.0;
        	case 4: rotateSpeed = 10.0;
        	case 5: rotateSpeed = 25.0;
        }
        format( str, sizeof( str ), "* Скорость вращения изменена: 2b_1f", rotateSpeed);
        SendClientMessage(playerid, COLOR_GREEN, str);

        TextDrawShowForPlayer(playerid,StatsEditTextDraw[playerid]);
    	}
    	else
    	{
        SendClientMessage(playerid, COLOR_GREEN, " * Сначала создайте объект > /create [ID Модели]");
    	}
    }
    return 1;
	}
	if (strcmp(cmd, "/rd", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
	    {
    	if ( playerInEditMode[playerid] == true )
        {//---------------------------------------------------------------------

        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN, " * Используйте: /rd [Скорость перемещения (0 - 5)]");
        	return 1;
        }//-----------------------------------------------------------------

        new speed = strval( tmp );

        if( speed < 0 || speed > 5 ) return SendClientMessage(playerid, COLOR_GREEN, " * Минимальная скорость: 0, максимальная: 5");

        switch( speed )
        {
        	case 0: SpeedObject = 0.5;
        	case 1: SpeedObject = 1.0;
        	case 2: SpeedObject = 2.5;
        	case 3: SpeedObject = 5.0;
        	case 4: SpeedObject = 10.0;
        	case 5: SpeedObject = 25.0;
        }
        format( str, sizeof( str ), "* Скорость перемещения изменена: 2b_1f", SpeedObject);
        SendClientMessage(playerid, COLOR_GREEN, str);

        TextDrawShowForPlayer(playerid,StatsEditTextDraw[playerid]);
    	}
    	else
    	{
        SendClientMessage(playerid, COLOR_GREEN, " * Сначала создайте объект > /create [ID Модели]");
    	}
    }
    return 1;
	}
    if(strcmp(cmd, "/create", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
	    {
	        if ( playerInEditMode[playerid] == false )
    	{
        new i,Float:x, Float:y, Float:z;

        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN, " * Используйте: /create  [ID модели]");
        	return 1;
        }//-----------------------------------------------------------------
        model = strval(tmp);
        GetPlayerPos(playerid, x, y, z);
        if(GetLasObjectID() != 0)
        {
        	i = GetLasObjectID();
        	obj = CreateObject(model, x, y+10.0, z, 0.0000, 0.0000, 0.0000);

        	OBJECT[playerid] = obj;

        	ToggleObjectArrow(obj, true);

        	TogglePlayerControllable(playerid, false);

        	Model_Id[i] = model;

        	playerInEditMode[playerid] = true;

        	editMode[playerid] = EDIT_MOVE;

        	Created[playerid] = 0;

        	SendClientMessage(playerid, COLOR_GREEN, "* Руководство по использованию ViceEditor");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси X - используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Y - используйте A и D");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Z - зажмите Shift (или любую кнопку бега)..");
        	SendClientMessage(playerid, COLOR_GREEN, ".. и используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, " * Сохранить положение объекта, клавиша *ПРОБЕЛ*");

        	format(str, sizeof(str), "Oбъект создан. ID: %d", obj);
        	SendClientMessage(playerid, COLOR_GREEN, str);

        	TextDrawShowForPlayer(playerid,StatsEditTextDraw[playerid]);
        }
    	}
    }
    return 1;
	}
	if(strcmp(cmd, "/dublecatea", true) == 0)
	{
    /*
    	Команда позволяет создать еще 1 объект как дубликат.
    	Объект появится с тем объектом который вы создавали последний раз...
    	самый последний.
    	Эта команда облегчет вам время, например вам не надо будет снова выстовлять ротацию и позицию.
    */
    if(IsPlayerAdmin(playerid))
    {
        if(IsObject(playerid)) return SendClientMessage( playerid, COLOR_GREEN, " * Вы еще не создавали, ни одного объекта!" );
	        if ( playerInEditMode[playerid] == false )
    	{

        if(GetLasObjectID() != 0)
        {
            new i;
        	i = GetLasObjectID();

        	OBJECT[playerid] = OBJECT[playerid];
        	GetObjectPos(OBJECT[playerid],X,Y,Z);
        	GetObjectRot(OBJECT[playerid],RX,RY,RZ);

        	OBJECT[playerid] = CreateObject(Model_Id[i], X, Y, Z, RX, RY, RZ);

        	ToggleObjectArrow(OBJECT[playerid], true);

        	TogglePlayerControllable(playerid, false);

        	playerInEditMode[playerid] = true;

        	editMode[playerid] = EDIT_MOVE;

        	Created[playerid] = 0;

	                SendClientMessage(playerid, COLOR_GREEN, "* Руководство по использованию ViceEditor");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси X - используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Y - используйте A и D");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Z - зажмите Shift (или любую кнопку бега)..");
        	SendClientMessage(playerid, COLOR_GREEN, ".. и используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, " * Сохранить положение объекта, клавиша *ПРОБЕЛ*");

        	format(str, sizeof(str), "Дубликат создан. ID: %d", OBJECT[playerid]);
        	SendClientMessage(playerid, COLOR_GREEN, str);
        }
    	}
    }
    return 1;
	}
	if(strcmp(cmd, "/dublecateb", true) == 0)
	{
    /*
    	Команда позволяет создать еще 1 объект как дубликат.
    	Объект появится с тем объектом который вы укажите...
    	Эта команда облегчет вам время, например вам не надо будет снова выстовлять ротацию и позицию.
    */
    if(IsPlayerAdmin(playerid))
    {
        if(IsObject(playerid)) return SendClientMessage( playerid, COLOR_GREEN, " * Вы еще не создавали, ни одного объекта!" );
	        if ( playerInEditMode[playerid] == false )
    	{

        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN, " * Используйте: /dublecateb [ID Объекта, с которым хоите сделать дубликат]");
        	return 1;
        }//-----------------------------------------------------------------
        OBJECT[playerid] = strval(tmp);

        if(GetLasObjectID() != 0)
        {
            new i;
        	i = GetLasObjectID();

        	GetObjectPos(OBJECT[playerid],X,Y,Z);
        	GetObjectRot(OBJECT[playerid],RX,RY,RZ);

        	OBJECT[playerid] = CreateObject(Model_Id[i], X, Y, Z, RX, RY, RZ);

        	ToggleObjectArrow(OBJECT[playerid], true);

        	TogglePlayerControllable(playerid, false);

        	playerInEditMode[playerid] = true;

        	editMode[playerid] = EDIT_MOVE;

        	Created[playerid] = 0;

	                SendClientMessage(playerid, COLOR_GREEN, "* Руководство по использованию ViceEditor");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси X - используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Y - используйте A и D");
        	SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Z - зажмите Shift (или любую кнопку бега)..");
        	SendClientMessage(playerid, COLOR_GREEN, ".. и используйте W и S");
        	SendClientMessage(playerid, COLOR_GREEN, " * Сохранить положение объекта, клавиша *ПРОБЕЛ*");

        	format(str, sizeof(str), "Дубликат создан. ID: %d", OBJECT[playerid]);
        	SendClientMessage(playerid, COLOR_GREEN, str);
        }
    	}
    }
    return 1;
	}
	if (strcmp(cmd, "/delete", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
	    {
        if ( playerInEditMode[playerid] == false )
    	{
    	  	tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN, " * Используйте: /delete  [ID Объекта]");
        	return 1;
        }//-----------------------------------------------------------------
        new id = strval(tmp);

        new file_del[32];
        format( file_del, 32, "Object/%d.ini", id);
        if( dini_Exists( file_del ) )
        dini_Remove( file_del );

	            DestroyObject(id);

	            format(str, sizeof(str), "Oбъект удален. ID: %d", id);
        SendClientMessageToAll(COLOR_GREEN, str);
    	}
    }
    return 1;
	}
	if (strcmp(cmd, "/edit", true) == 0)
	{
	    if(IsPlayerAdmin(playerid))
	    {
    	if ( playerInEditMode[playerid] == false )
    	{//---------------------------------------------------------------------
        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN,  " * Используйте: /edit [Тип режима (0-1)] [ID объекта]");
        	return 1;
        }//-----------------------------------------------------------------

        new edittype = strval( tmp );

        if( edittype < 0 || edittype > 1 )
        {
        	SendClientMessage(playerid, COLOR_GREEN, "* Типы режима Редактора Объектов:");
        	SendClientMessage(playerid, COLOR_GREEN, "* 0 - Двигать по Оси X Y Z");
        	SendClientMessage(playerid, COLOR_GREEN, "* 1 - Изменить Ротацию X Y Z");
        	return 1;
        }

        tmp = strtok(cmdtext, idx);

        if (!strlen(tmp))
        {//-----------------------------------------------------------------
        	SendClientMessage(playerid, COLOR_GREEN,  " * Используйте: /edit [Тип режима (0-2)] [ID объекта]");
        	return 1;
        }//-----------------------------------------------------------------
        new dObjID = strval(tmp);

        switch( edittype )
        {
        	case 0: editMode[playerid] = EDIT_MOVE,Created[playerid] = 1, SendClientMessage(playerid, COLOR_GREEN, "* Вы в редактируете позицию объекта");
        	case 1: editMode[playerid] = EDIT_ROT,Created[playerid] = 2, SendClientMessage(playerid, COLOR_GREEN, "* Вы в редактируете ротацию объекта");
        }
        OBJECT[playerid] = dObjID;
        ToggleObjectArrow(dObjID, true);
        TogglePlayerControllable(playerid, false);
        playerInEditMode[playerid] = true;
        format(str, sizeof(str), "Bы редактируете объект с ID: %d", dObjID);
        SendClientMessage(playerid, COLOR_GREEN, str);

        SendClientMessage(playerid, COLOR_GREEN, "* Руководство по использованию ViceEditor");
        SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси X - используйте W и S");
        SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Y - используйте A и D");
        SendClientMessage(playerid, COLOR_GREEN, "* Чтобы передвигать объект по оси Z - зажмите Shift (или любую кнопку бега)..");
        SendClientMessage(playerid, COLOR_GREEN, ".. и используйте W и S");
        SendClientMessage(playerid, COLOR_GREEN, " * Сохранить положение объекта, клавиша *ПРОБЕЛ*");

        TextDrawShowForPlayer(playerid,StatsEditTextDraw[playerid]);

    	}//---------------------------------------------------------------------
    	return 1;
    }
	}
	
	return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) // test
{
	new string[256];
	if( playerInEditMode[ playerid ] == true )
	{
    if( OBJECT[playerid] != 0 )
    {
    	if( editMode[playerid] == EDIT_MOVE )
    	{
        if( newkeys == ONFOOT_KEY_UP )
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X+0.5, Y, Z, SpeedObject);
        }
        if( newkeys == ONFOOT_KEY_DOWN )
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X-0.5, Y, Z, SpeedObject);
        }
        if( newkeys == ONFOOT_KEY_LEFT )
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X, Y+0.5, Z, SpeedObject);
        }
        if( newkeys == ONFOOT_KEY_RIGHT )
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X, Y-0.5, Z, SpeedObject);
        }
        if( HOLDING( ONFOOT_KEY_UP | ONFOOT_KEY_SPRINT ))
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X, Y, Z+0.5, SpeedObject);
        }
        if( HOLDING( ONFOOT_KEY_DOWN | ONFOOT_KEY_SPRINT ))
        {
        	GetObjectPos(OBJECT[playerid], X, Y, Z);
        	MoveObject(OBJECT[playerid], X, Y, Z-0.5, SpeedObject);
        }
        if( newkeys == ONFOOT_KEY_JUMP )
        {
        	playerInEditMode[playerid] = false;

        	SetCameraBehindPlayer(playerid);

        	TogglePlayerControllable(playerid, true);

        	ToggleObjectArrow(OBJECT[playerid], false);

        	TextDrawHideForPlayer(playerid,StatsEditTextDraw[playerid]);
	                if(GetLasObjectID() != 0)
        	{
               new t;
            t = GetLasObjectID();
            format(file, sizeof(file), "Object/%d.ini",OBJECT[playerid]);
            dini_Create(file);
            dini_IntSet(file,"ObjectID",Model_Id[t]);
            dini_FloatSet(file,"Posx",X);
            dini_FloatSet(file,"Posy",Y);
            dini_FloatSet(file,"Posz",Z);
            dini_FloatSet(file,"rPosx",RX);
            dini_FloatSet(file,"rPosy",RY);
            dini_FloatSet(file,"rPosz",RZ);
        	}

        	if(Created[playerid] == 0)
        	{
            format(string, sizeof(string)," * Объект c ID:%d записан в папку Object",OBJECT[playerid]);
            SendClientMessage(playerid, COLOR_GREEN,string);
            printf("Объект c ID:%d записан в папку Object", OBJECT[playerid]);
        	}
        	if(Created[playerid] == 1)
        	{
            format(string, sizeof(string)," * Объект c ID:%d отредактирован",OBJECT[playerid]);
            SendClientMessage(playerid, COLOR_GREEN,string);
            printf("Объект c ID:%d отредактирован", OBJECT[playerid]);
        	}
        }
    	}
    	if(  editMode[playerid] == EDIT_ROT )
    	{
        if( newkeys == ONFOOT_KEY_UP )
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX + rotateSpeed, RY, RZ);
        }
        if( newkeys == ONFOOT_KEY_DOWN )
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX - rotateSpeed, RY, RZ);
        }
        if( newkeys == ONFOOT_KEY_LEFT )
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX, RY + rotateSpeed, RZ);
        }
        if( newkeys == ONFOOT_KEY_RIGHT )
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX, RY - rotateSpeed, RZ);
        }
        if( HOLDING( ONFOOT_KEY_UP | ONFOOT_KEY_SPRINT ))
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX, RY, RZ + rotateSpeed);
        }
        if( HOLDING( ONFOOT_KEY_DOWN | ONFOOT_KEY_SPRINT ))
        {
        	GetObjectRot(OBJECT[playerid], RX, RY, RZ);
        	SetObjectRot(OBJECT[playerid], RX, RY, RZ - rotateSpeed);
        }
        if( newkeys == ONFOOT_KEY_JUMP )
        {
        	playerInEditMode[playerid] = false;

        	SetCameraBehindPlayer(playerid);

        	TogglePlayerControllable(playerid, true);

        	ToggleObjectArrow(OBJECT[playerid], false);

        	TextDrawHideForPlayer(playerid,StatsEditTextDraw[playerid]);
	                if(GetLasObjectID() != 0)
        	{
               new t;
            t = GetLasObjectID();
            format(file, sizeof(file), "Object/%d.ini",OBJECT[playerid]);
            dini_Create(file);
            dini_IntSet(file,"ObjectID",Model_Id[t]);
            dini_FloatSet(file,"Posx",X);
            dini_FloatSet(file,"Posy",Y);
            dini_FloatSet(file,"Posz",Z);
            dini_FloatSet(file,"rPosx",RX);
            dini_FloatSet(file,"rPosy",RY);
            dini_FloatSet(file,"rPosz",RZ);
        	}

        	if(Created[playerid] == 2)
        	{
            format(string, sizeof(string)," * Объект c ID:%d отредактирован",OBJECT[playerid]);
            SendClientMessage(playerid, COLOR_GREEN,string);
            printf("Объект c ID:%d отредактирован", OBJECT[playerid]);
        	}
        }
    	}
    }
	}
	return 1;
}

stock IsObject(id)
{
	return (OBJECT[id] == 0) ? true : false;
}
stock GetLasObjectID()
{
	new i;
	for(i = 1; i <= MAX_DECORATIONS; i++)
    if(!(IsValidObject(OBJECT[i])))
    	break;
	if(i <= MAX_DECORATIONS)
    return i;
	else
    return 0;
}
stock strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
    index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
    result[index - offset] = string[index];
    index++;
	}
	result[index - offset] = EOS;
	return result;
}

0

5

Последняя финальная версия.
Ограничений в создании объектов нет.

Добавлена команда /saveobj она позваляет сохранить все созданные объекты в отдельный файл txt.
Файл создается в папке scriptfiles самостоятельно не чего делать не нужно.

Чтобы начать создавать объект итд, сперва нужно авторизоваться под ркон.
Прописываете в чат /admin ваш пароль тот что указан в server.cfg столбец rcon_password.

Скачать

0

Похожие темы


Вы здесь » Forum » Файловый архив » Object Editor