Ctrl + клавиши 1 и 7, 6 и 4, 8 и 2 на дополнительной клавиатуре - вращение обьекта в различных плоскостях
Чёта не получается
Жмёшь ctrl+стрелочки
Добавлено (07.03.2011, 12:17) --------------------------------------------- У меня вопрос: Я сделал объекты в МТА Мар Editor,нашол их,а кампилировать в kod pawno не могу. Что делать?
Добавлено (07.03.2011, 19:38) --------------------------------------------- А теперь уже найти не могу. Поиск не юзается
Добавлено (09.03.2011, 07:10) --------------------------------------------- Привет всем,помогите мне? Вот код открытия шлакбаума у АШ. Но команда /vorota не работает(pawno выдаёт 8 warning'ов) Скрипт работает(появляются объекты),но не появляется текст и не открываются ворота. Warningi под кодом pawno.Пожалуйста,помогите. | | КОД ПАВНО
Code
//Шлакбаум у АШ.
#include <a_samp>
#pragma tabsize 0 #define COLOR_YELLOW 0xFFFF00AA #define FILTERSCRIPT forward lockgate(); //--------------------------------------------условие и проверка------------------------------------- forward IsNearGates(playerid); forward Check(); //-------------------------------------------------------------------------------------------------------------------- #if defined FILTERSCRIPT new gate; //============================================Добавление новой функции============================ stock IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) //By Sacky { if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius) { return 1; } return 0; } stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) //By Sacky { new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis); } //=========================================================================================================== public OnFilterScriptInit() { gate = CreateObject(968,-2043.6840820313,-79.887886047363,35.171875,0,270,0) ;//сюда вставляете координаты ворот в закрытом виде из Advance Convertera SetTimer("Check",100,1);//через какое время(100мс) проверка условия print("\n--------------------------------------"); print(" Gate by Pcix"); print("--------------------------------------\n"); return 1; }
public OnFilterScriptExit() { return 1; } #endif
//-------------------------------------проверка находится ли игрок рядом с воротами------------------- public IsNearGates(playerid) { if(IsPlayerConnected(playerid)) { if(IsPlayerInSphere(playerid,999.401,-645.460,120.628, 20))//координаты центра сферы , 20 - радиус {return 1;} } return 0; } //-------------------------------------------------------------------------------------------------------------------------------------- //--------------если проверка дала положительный результат то высвечивается надпись--------------------------- public Check() { new string[256]; for (new i=0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(IsNearGates(i)) { format(string, sizeof(string), " ~p~ВВЕДИТЕ ~g~/vorota ~r~~y~Чтобы открыть BOPOTA");//чтобы надпись выводилась на русском ее необходимо сначала конвертировать с помощью PAWNO GameText converter качать тут: http://www.samp-rus.com/load/7-1-0-153 GameTextForPlayer(i, string, 5000, 3);//5000 - время которое надпись будет на экране(мс), 3 - тип текста(подробнее о типах текста вы можете узнать в теме Стили текста: http://www.samp-rus.com/forum/42-4320-1) } }} return 1; } //------------------------------------------------------------------------------------------------------------- public OnPlayerCommandText(playerid, cmdtext[]) { if (IsPlayerInSphere(playerid,999.401,-645.460,120.628,20))//благодаря этому условию ворота открываются только когда игрок находиться рядом, 999.401,-645.460,120.628 - координаты центра сферы, 20 - радиус сферы { if (strcmp(cmdtext, "/vorota", true)==0)// вместо vorota можете написать любую команду, которая будет открывать ворота { MoveObject(gate,968,-2043.6948242188,-80.051834106445,35.171875,0,358,0, 3.5);//сюда вставляете координаты ворот в открытом виде (уже без id), 3.5 -скорость движения ворот SetTimer("lockgate", 7000, 0);//7000 - время через которое ворота автоматически закроются в мс SendClientMessage(playerid, COLOR_YELLOW,"Ворота закроются в течении 7сек, Поторопитесь!");//надпись которую получит игрок открывшии ворота return 1; } } return 0; }
public lockgate() { MoveObject (gate,968,-2043.6840820313,-79.887886047363,35.171875,0,270,0, 3.5);//сюда снова координаты закрытых ворот, 3,0 скорость движения ворот
return 1;
}
//CreateObject (Шлакбаум у АШ) public OnGameModeInit() { CreateObject(966,-2043.6990966797,-80.093696594238,34.171875,0,0,0); return 1; }
| | Warning's
Code
C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(83) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(83) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(83) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(83) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(94) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(94) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(94) : warning 202: number of arguments does not match definition C:\Users\Lil_BS\Desktop\Для мап\Мапки\Vorota.pwn(94) : warning 202: number of arguments does not match definition Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Можете помочь? Поставил я свои объекты в Map Editor. Гружу карту в Advanced Converter, нажимаю конвертировать, прогрес бар заполняется, а в поле код не появляется! Что это может быть?
Добавление анимации к обьекту. Я раскажу как добавлять анимации к обьекту на примере ворот. Сначала с помошью MTA Race создаем 2 обьекта: 1.Ворота в закрытом состоянии 2.Ворота в открытом состоянии рисунок Конвертируем в Advance Converterе и получаем 2 обьекта, например: CreateObject(969,999.401,-645.460,120.628,-0.859,1.719,24.924); CreateObject(969,999.466,-645.369,124.934,3.438,1.719,24.924);
Открываем Pawno вставляем код(дальше все ваши действия будут написаны в коментариях к коду):
Code #include <a_samp>
#pragma tabsize 0 #define COLOR_YELLOW 0xFFFF00AA #define FILTERSCRIPT forward lockgate(); #if defined FILTERSCRIPT new gate;
public OnFilterScriptInit() { gate = CreateObject(969,999.401,-645.460,120.628,-0.859,1.719,24.924) ;//сюда вставляете координаты ворот в закрытом виде из Advance Convertera print("\n--------------------------------------"); print(" Gate by Pcix"); print("--------------------------------------\n"); return 1; }
public OnFilterScriptExit() { return 1; } #endif
public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp(cmdtext, "/vorota", true)==0)// вместо vorota можете написать любую команду, которая будет открывать ворота { MoveObject(gate,999.466,-645.369,124.934, 3.5);//сюда вставляете координаты ворот в открытом виде (уже без id), 3.5 -скорость движения ворот SetTimer("lockgate", 7000, 0);//7000 - время через которое ворота автоматически закроются в мс SendClientMessage(playerid, COLOR_YELLOW,"Ворота закроются в течении 7сек, Поторопитесь!");//надпись которую получит игрок открывшии ворота return 1; } return 0; }
public lockgate() { MoveObject (gate,999.401,-645.460,120.628, 3.0);//сюда снова координаты закрытых ворот, 3,0 скорость движения ворот return 1; }
итак, вот вы и написали простой ФС с воротами, компилируем, кидаем в папку filterscripts, и дописываем в server.cfg название вашего ФС например: filterscripts gate Но некоторым может не понравится что ворота открываются из любой точки карты, для этого нужно немного изменить наш ФС, теперь он будет выглядеть так:
Code #include <a_samp>
#pragma tabsize 0 #define COLOR_YELLOW 0xFFFF00AA #define FILTERSCRIPT forward lockgate(); #if defined FILTERSCRIPT new gate; //============================================Добавление новой функции============================ stock IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) //By Sacky { if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius) { return 1; } return 0; } stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) //By Sacky { new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis); } //=========================================================================================================== public OnFilterScriptInit() { gate = CreateObject(969,999.401,-645.460,120.628,-0.859,1.719,24.924) ;//сюда вставляете координаты ворот в закрытом виде из Advance Convertera print("\n--------------------------------------"); print(" Gate by Pcix"); print("--------------------------------------\n"); return 1; }
public OnFilterScriptExit() { return 1; } #endif
public OnPlayerCommandText(playerid, cmdtext[]) { if (IsPlayerInSphere(playerid,999.401,-645.460,120.628,20))//благодаря этому условию ворота открываются только когда игрок находиться рядом, 999.401,-645.460,120.628 - координаты центра сферы, 20 - радиус сферы { if (strcmp(cmdtext, "/vorota", true)==0)// вместо vorota можете написать любую команду, которая будет открывать ворота { MoveObject(gate,999.466,-645.369,124.934, 3.5);//сюда вставляете координаты ворот в открытом виде (уже без id), 3.5 -скорость движения ворот SetTimer("lockgate", 7000, 0);//7000 - время через которое ворота автоматически закроются в мс SendClientMessage(playerid, COLOR_YELLOW,"Ворота закроются в течении 7сек, Поторопитесь!");//надпись которую получит игрок открывшии ворота return 1; } } return 0; }
public lockgate() { MoveObject (gate,999.401,-645.460,120.628, 3.0);//сюда снова координаты закрытых ворот, 3,0 скорость движения ворот return 1; } Также можно добавить надпись которая высвечивается, когда игрок подьезжает к воротам, для этого нужно добавить в ФС следующее:
Code #include <a_samp>
#pragma tabsize 0 #define COLOR_YELLOW 0xFFFF00AA #define FILTERSCRIPT forward lockgate(); //--------------------------------------------условие и проверка------------------------------------- forward IsNearGates(playerid); forward Check(); //-------------------------------------------------------------------------------------------------------------------- #if defined FILTERSCRIPT new gate; //============================================Добавление новой функции============================ stock IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) //By Sacky { if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius) { return 1; } return 0; } stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) //By Sacky { new Float:x1,Float:y1,Float:z1; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+floatpower(floatabs(floatsub(y,y1)),2)+floatpower(floatabs(floatsub(z,z1)),2)); return floatround(tmpdis); } //=========================================================================================================== public OnFilterScriptInit() { gate = CreateObject(969,999.401,-645.460,120.628,-0.859,1.719,24.924) ;//сюда вставляете координаты ворот в закрытом виде из Advance Convertera SetTimer("Check",100,1);//через какое время(100мс) проверка условия print("\n--------------------------------------"); print(" Gate by Pcix"); print("--------------------------------------\n"); return 1; }
public OnFilterScriptExit() { return 1; } #endif
//-------------------------------------проверка находится ли игрок рядом с воротами------------------- public IsNearGates(playerid) { if(IsPlayerConnected(playerid)) { if(IsPlayerInSphere(playerid,999.401,-645.460,120.628, 20))//координаты центра сферы , 20 - радиус {return 1;} } return 0; } //-------------------------------------------------------------------------------------------------------------------------------------- //--------------если проверка дала положительный результат то высвечивается надпись--------------------------- public Check() { new string[256]; for (new i=0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(IsNearGates(i)) { format(string, sizeof(string), " ~w~BBEѓ…TE ~g~/vorota ~n~~w~ЌTOЂ‘ OTKP‘T’ BOPOTA");//чтобы надпись выводилась на русском ее необходимо сначала конвертировать с помощью PAWNO GameText converter качать тут: http://www.samp-rus.com/load/7-1-0-153 GameTextForPlayer(i, string, 5000, 3);//5000 - время которое надпись будет на экране(мс), 3 - тип текста(подробнее о типах текста вы можете узнать в теме Стили текста: http://www.samp-rus.com/forum/42-4320-1) } }} return 1; } //------------------------------------------------------------------------------------------------------------- public OnPlayerCommandText(playerid, cmdtext[]) { if (IsPlayerInSphere(playerid,999.401,-645.460,120.628,20))//благодаря этому условию ворота открываются только когда игрок находиться рядом, 999.401,-645.460,120.628 - координаты центра сферы, 20 - радиус сферы { if (strcmp(cmdtext, "/vorota", true)==0)// вместо vorota можете написать любую команду, которая будет открывать ворота { MoveObject(gate,999.466,-645.369,124.934, 3.5);//сюда вставляете координаты ворот в открытом виде (уже без id), 3.5 -скорость движения ворот SetTimer("lockgate", 7000, 0);//7000 - время через которое ворота автоматически закроются в мс SendClientMessage(playerid, COLOR_YELLOW,"Ворота закроются в течении 7сек, Поторопитесь!");//надпись которую получит игрок открывшии ворота return 1; } } return 0; }
public lockgate() { MoveObject (gate,999.401,-645.460,120.628, 3.0);//сюда снова координаты закрытых ворот, 3,0 скорость движения ворот return 1; } ВСЕ, теперь вы умеете( я надеюсь) добавлять анимацию к обьектам, с помощью этого можно делать не только ворота, но например лифты Все вопросы задавайте в этой теме
а не поможешь делать проверку на то что бы только игрок с определённым ником мог открыть ворота? Заранее спасибо.