Вопросы по скриптингу
admin Дата: Понедельник, 13.12.2010, 05:15:01 | Сообщение # 166
Группа: Администраторы
Сообщений: 3869
Code
#define GM_LS 0 #define GM_SF 1 #define GM_LV 2
Code
#define COLOR_GREEN 0x33AA43AA
Code
new playerCheckpoint[MAX_PLAYERS];
Code
new Float:checkpoints[MAX_POINTS][3] = { {1026.3391,-1923.1871,12.8086}, {-2134.4451,263.0450,38.9768}, {2001.1454,1538.6256,13.5859} };
Code
new checkpointType[MAX_POINTS] = { GM_LS, GM_SF, GM_LV };
Code
forward CheckpointUpdate(); forward PirateShipScoreUpdate(); forward PayPlayerInArea(Float:radi, playerid, Float:x, Float:y, Float:z, cash);
Code
public OnFilterScriptInit() { SetTimer("CheckpointUpdate",1000,1);//Чекпоинт апдейт SetTimer("PirateShipScoreUpdate", 5000, 1);//А это таймер для того чтобы давать деньги 5000 это время в мили секундах return 1; } public OnPlayerEnterCheckpoint(playerid) //а это если войдёшь в чекпоинт { if(getCheckpointType(playerid)==GM_LS) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 100$ каждые 5сек."); } if(getCheckpointType(playerid)==GM_SF) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 200$ каждые 5сек."); } if(getCheckpointType(playerid)==GM_LV) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 300$ каждые 5сек."); } return 1; }
Code
public CheckpointUpdate()//Паблик таймера для чеков { for(new i; i<MAX_PLAYERS; i++) { for(new j=0; j < 1; j++) { if(PlayerToPoint(25,i,checkpoints[j][0],checkpoints[j][1],checkpoints[j][2])) { if(playerCheckpoint[i]!=j) { DisablePlayerCheckpoint(i); SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],5); playerCheckpoint[i] = j; } } else { if(playerCheckpoint[i]==j) { DisablePlayerCheckpoint(i); playerCheckpoint[i] = 999; } } } } }
Code
public PirateShipScoreUpdate()//вот сам паблик. сюда пихать коорды. { for(new i=0; i<MAX_PLAYERS; i++) { PayPlayerInArea(15, i, checkpoints[0][0],checkpoints[0][1],checkpoints[0][2], 100); PayPlayerInArea(15, i, checkpoints[1][0],checkpoints[1][1],checkpoints[1][2], 200); PayPlayerInArea(15, i, checkpoints[2][0],checkpoints[2][1],checkpoints[2][2], 300); } } //остальные функции stock getCheckpointType(playerID) { if(playerCheckpoint[playerID] != 999) return checkpointType[playerCheckpoint[playerID]]; else return -1; } stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } return 0; }
Code
public PayPlayerInArea(Float:radi, playerid, Float:x, Float:y, Float:z, cash) { if(IsPlayerConnected(playerid)) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)) { GivePlayerMoney(playerid, cash); return 1; } } return 0; }
вот пробуй...
zm-jail.ru Разработка сайта samp-pawno.ru
Сообщение
Code
#define GM_LS 0 #define GM_SF 1 #define GM_LV 2
Code
#define COLOR_GREEN 0x33AA43AA
Code
new playerCheckpoint[MAX_PLAYERS];
Code
new Float:checkpoints[MAX_POINTS][3] = { {1026.3391,-1923.1871,12.8086}, {-2134.4451,263.0450,38.9768}, {2001.1454,1538.6256,13.5859} };
Code
new checkpointType[MAX_POINTS] = { GM_LS, GM_SF, GM_LV };
Code
forward CheckpointUpdate(); forward PirateShipScoreUpdate(); forward PayPlayerInArea(Float:radi, playerid, Float:x, Float:y, Float:z, cash);
Code
public OnFilterScriptInit() { SetTimer("CheckpointUpdate",1000,1);//Чекпоинт апдейт SetTimer("PirateShipScoreUpdate", 5000, 1);//А это таймер для того чтобы давать деньги 5000 это время в мили секундах return 1; } public OnPlayerEnterCheckpoint(playerid) //а это если войдёшь в чекпоинт { if(getCheckpointType(playerid)==GM_LS) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 100$ каждые 5сек."); } if(getCheckpointType(playerid)==GM_SF) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 200$ каждые 5сек."); } if(getCheckpointType(playerid)==GM_LV) { SendClientMessage(playerid,COLOR_GREEN," Удерживай точку для получения 300$ каждые 5сек."); } return 1; }
Code
public CheckpointUpdate()//Паблик таймера для чеков { for(new i; i<MAX_PLAYERS; i++) { for(new j=0; j < 1; j++) { if(PlayerToPoint(25,i,checkpoints[j][0],checkpoints[j][1],checkpoints[j][2])) { if(playerCheckpoint[i]!=j) { DisablePlayerCheckpoint(i); SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],5); playerCheckpoint[i] = j; } } else { if(playerCheckpoint[i]==j) { DisablePlayerCheckpoint(i); playerCheckpoint[i] = 999; } } } } }
Code
public PirateShipScoreUpdate()//вот сам паблик. сюда пихать коорды. { for(new i=0; i<MAX_PLAYERS; i++) { PayPlayerInArea(15, i, checkpoints[0][0],checkpoints[0][1],checkpoints[0][2], 100); PayPlayerInArea(15, i, checkpoints[1][0],checkpoints[1][1],checkpoints[1][2], 200); PayPlayerInArea(15, i, checkpoints[2][0],checkpoints[2][1],checkpoints[2][2], 300); } } //остальные функции stock getCheckpointType(playerID) { if(playerCheckpoint[playerID] != 999) return checkpointType[playerCheckpoint[playerID]]; else return -1; } stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } return 0; }
Code
public PayPlayerInArea(Float:radi, playerid, Float:x, Float:y, Float:z, cash) { if(IsPlayerConnected(playerid)) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); if(PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)) { GivePlayerMoney(playerid, cash); return 1; } } return 0; }
вот пробуй...
Автор - admin Дата добавления - 13.12.2010 в 05:15:01
MaNb9K Дата: Четверг, 16.12.2010, 16:33:37 | Сообщение # 167
Группа: Пользователи
Сообщений: 220
Как сделать ворота, чтоб они открывались по команде.не для gf а просто так можно?
[img]http://sa-mp-fail.at.ua/premium.gif[/img]
Сообщение Как сделать ворота, чтоб они открывались по команде.не для gf а просто так можно? Автор - MaNb9K Дата добавления - 16.12.2010 в 16:33:37
Nik_Ull Дата: Пятница, 17.12.2010, 21:50:35 | Сообщение # 168
Группа: Пользователи
Сообщений: 184
admin , спасибо!!!Добавлено (17.12.2010, 21:50) --------------------------------------------- Скажите, как сделать TDM на сервере??? И как сделать, чтобы спавн этой банды??? Например, чтоб она появлялась у клуба.
Сообщение admin , спасибо!!!Добавлено (17.12.2010, 21:50) --------------------------------------------- Скажите, как сделать TDM на сервере??? И как сделать, чтобы спавн этой банды??? Например, чтоб она появлялась у клуба.
Автор - Nik_Ull Дата добавления - 17.12.2010 в 21:50:35
Сообщение Nik_Ull , качаешь простой tdm сервер и смотришь и все себе в мод суешь)Автор - admin Дата добавления - 17.12.2010 в 23:48:49
admin Дата: Суббота, 18.12.2010, 00:02:38 | Сообщение # 170
Группа: Администраторы
Сообщений: 3869
MaNb9K , вот смотри Словарь: Code
closed_x - X-координата закрытых ворот opened_x - X-координата открытых ворот closed_y - Y-координата закрытых ворот opened_y - Y-координата открытых ворот closed_z - Z-координата закрытых ворот opened_z - Z-координата открытых ворот speed - скорость перемещения объекта model - модель ворот
В начало:
Code
forward GatesClose();//таймер на закрытие ворот forward CheckPlayers();//если не хотите автоматического открытия, без команд - не используйте эту строку new gates;//переменная для ворот new gopened = 0;//открыты ворота или нет new gtimer; //переменная для таймера закрытия
В
Code
gates = CreateObject(model, closed_x, closed_y, closed_z, rX, rY, rZ); //создаем объект. SetTimer("CheckPlayers", 1000, true); //ставим повторяющийся таймер на 1 секунду
В конец мода: Code
public CheckPlayers()//если не хотите открытия без команд, тогда не используйте этот паблик { for(new i=0;i<MAX_PLAYERS;i++) { if(IsPlayerConnected(i)) { if(PlayerToPoint(15.0, i, X, Y, Z) && !gopened) //проверка на местонахождение игрока, и открыты ли ворота (заменить X, Y, Z координатами ОТКРЫТЫХ ворот) { MoveObject(gates, opened_x, opened_y, opened_z, speed);//передвигаем объект. gopened = 1;//ворота открыты gtimer = SetTimer("GateClose", 3000, false); //ставим таймер на 3 секунды, без повторов } } } }
Code
public GatesClose()//таймер на закрытие ворот. { MoveObject(gates, closed_x, closed_y, closed_z, speed);//передвигаем объект gopened = 0;//ворота закрыты KillTimer(gtimer);//"убиваем" таймер }
Для открытия по команде: в Code
if (!strcmp("/gate",cmdtext,true,10) && IsPlayerConnected(playerid)) { if(!gopened) //если ворота закрыты { MoveObject(gates, opened_x, opened_y, opened_z, speed);//передвигаем объект. gopened = 1;//ворота открыты gtimer = SetTimer("GateClose", 3000, false); //ставим таймер на 3 секунды, без повторов return 1; } else { MoveObject(gates, closed_x, closed_y, closed_z, speed);//передвигаем объект gopened = 0;//ворота закрыты KillTimer(gtimer);//"убиваем" таймер return 1 } return 1; }
Функция PlayerToPoint (если нету):
Code
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { if(IsPlayerConnected(playerid)) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } } return 0; }
zm-jail.ru Разработка сайта samp-pawno.ru
Сообщение MaNb9K , вот смотри Словарь: Code
closed_x - X-координата закрытых ворот opened_x - X-координата открытых ворот closed_y - Y-координата закрытых ворот opened_y - Y-координата открытых ворот closed_z - Z-координата закрытых ворот opened_z - Z-координата открытых ворот speed - скорость перемещения объекта model - модель ворот
В начало:
Code
forward GatesClose();//таймер на закрытие ворот forward CheckPlayers();//если не хотите автоматического открытия, без команд - не используйте эту строку new gates;//переменная для ворот new gopened = 0;//открыты ворота или нет new gtimer; //переменная для таймера закрытия
В
Code
gates = CreateObject(model, closed_x, closed_y, closed_z, rX, rY, rZ); //создаем объект. SetTimer("CheckPlayers", 1000, true); //ставим повторяющийся таймер на 1 секунду
В конец мода: Code
public CheckPlayers()//если не хотите открытия без команд, тогда не используйте этот паблик { for(new i=0;i<MAX_PLAYERS;i++) { if(IsPlayerConnected(i)) { if(PlayerToPoint(15.0, i, X, Y, Z) && !gopened) //проверка на местонахождение игрока, и открыты ли ворота (заменить X, Y, Z координатами ОТКРЫТЫХ ворот) { MoveObject(gates, opened_x, opened_y, opened_z, speed);//передвигаем объект. gopened = 1;//ворота открыты gtimer = SetTimer("GateClose", 3000, false); //ставим таймер на 3 секунды, без повторов } } } }
Code
public GatesClose()//таймер на закрытие ворот. { MoveObject(gates, closed_x, closed_y, closed_z, speed);//передвигаем объект gopened = 0;//ворота закрыты KillTimer(gtimer);//"убиваем" таймер }
Для открытия по команде: в Code
if (!strcmp("/gate",cmdtext,true,10) && IsPlayerConnected(playerid)) { if(!gopened) //если ворота закрыты { MoveObject(gates, opened_x, opened_y, opened_z, speed);//передвигаем объект. gopened = 1;//ворота открыты gtimer = SetTimer("GateClose", 3000, false); //ставим таймер на 3 секунды, без повторов return 1; } else { MoveObject(gates, closed_x, closed_y, closed_z, speed);//передвигаем объект gopened = 0;//ворота закрыты KillTimer(gtimer);//"убиваем" таймер return 1 } return 1; }
Функция PlayerToPoint (если нету):
Code
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) { if(IsPlayerConnected(playerid)) { new Float:oldposx, Float:oldposy, Float:oldposz; new Float:tempposx, Float:tempposy, Float:tempposz; GetPlayerPos(playerid, oldposx, oldposy, oldposz); tempposx = (oldposx -x); tempposy = (oldposy -y); tempposz = (oldposz -z); if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) { return 1; } } return 0; }
Автор - admin Дата добавления - 18.12.2010 в 00:02:38
MaNb9K Дата: Суббота, 18.12.2010, 14:54:49 | Сообщение # 171
Группа: Пользователи
Сообщений: 220
admin , О_о спс
[img]http://sa-mp-fail.at.ua/premium.gif[/img]
Сообщение admin , О_о спсАвтор - MaNb9K Дата добавления - 18.12.2010 в 14:54:49
Сообщение MaNb9K , одобрять надо в репу в следущий раз замечание)Автор - admin Дата добавления - 18.12.2010 в 15:30:04
Nik_Ull Дата: Воскресенье, 19.12.2010, 12:10:49 | Сообщение # 173
Группа: Пользователи
Сообщений: 184
Блин, пробовал TDM создать, как ты говорил вырезать откуда нибудь, вырезал, а вот только ничего не получилось.
Сообщение Блин, пробовал TDM создать, как ты говорил вырезать откуда нибудь, вырезал, а вот только ничего не получилось. Автор - Nik_Ull Дата добавления - 19.12.2010 в 12:10:49
Сообщение Nik_Ull , что вырезал с какого мода?Автор - admin Дата добавления - 19.12.2010 в 12:19:32
Nik_Ull Дата: Пятница, 24.12.2010, 14:46:16 | Сообщение # 175
Группа: Пользователи
Сообщений: 184
Как сделать рандомный спавн только для некоторых скинов??? И как сделать рандомную выдачу оружия???
Сообщение Как сделать рандомный спавн только для некоторых скинов??? И как сделать рандомную выдачу оружия??? Автор - Nik_Ull Дата добавления - 24.12.2010 в 14:46:16
admin Дата: Пятница, 24.12.2010, 15:58:14 | Сообщение # 176
Группа: Администраторы
Сообщений: 3869
Nik_Ull , так я вылаживал урок...смотри на wiki-samp........
Code
public fwHamPlayerSpawnPost(id) { new rand = random_num(1,5) //выкидываем рандомное число if(cs_get_user_team(id)==CS_TEAM_T) //проверяем команду игрока { switch(rand) { //выдаем оружие case 1: give_item(id,"weapon_usp") case 2: give_item(id,"weapon_glock18") case 3: give_item(id,"weapon_deagle") case 4: give_item(id,"weapon_p228") case 5: give_item(id,"weapon_elite") } } else { //Если игрок не за террористов, значит за контров. Выдаем оружие контрам switch(rand) { case 1: give_item(id,"weapon_usp") case 2: give_item(id,"weapon_glock18") case 3: give_item(id,"weapon_deagle") case 4: give_item(id,"weapon_p228") case 5: give_item(id,"weapon_fiveseven") } } }
zm-jail.ru Разработка сайта samp-pawno.ru
Сообщение Nik_Ull , так я вылаживал урок...смотри на wiki-samp........
Code
public fwHamPlayerSpawnPost(id) { new rand = random_num(1,5) //выкидываем рандомное число if(cs_get_user_team(id)==CS_TEAM_T) //проверяем команду игрока { switch(rand) { //выдаем оружие case 1: give_item(id,"weapon_usp") case 2: give_item(id,"weapon_glock18") case 3: give_item(id,"weapon_deagle") case 4: give_item(id,"weapon_p228") case 5: give_item(id,"weapon_elite") } } else { //Если игрок не за террористов, значит за контров. Выдаем оружие контрам switch(rand) { case 1: give_item(id,"weapon_usp") case 2: give_item(id,"weapon_glock18") case 3: give_item(id,"weapon_deagle") case 4: give_item(id,"weapon_p228") case 5: give_item(id,"weapon_fiveseven") } } }
Автор - admin Дата добавления - 24.12.2010 в 15:58:14
Nik_Ull Дата: Суббота, 25.12.2010, 17:16:49 | Сообщение # 177
Группа: Пользователи
Сообщений: 184
У меня там какая-то проблема образовалась, когда в чат пишу, сообщение на экране не выводится
Сообщение У меня там какая-то проблема образовалась, когда в чат пишу, сообщение на экране не выводится Автор - Nik_Ull Дата добавления - 25.12.2010 в 17:16:49
Сообщение Nik_Ull , 1.Что добавил после того что у тебя в чат не пишиться?2.Ты на хосте сразу пробуешь или на своем локальном компьютере?Автор - admin Дата добавления - 26.12.2010 в 01:21:01
MaNb9K Дата: Воскресенье, 26.12.2010, 10:31:13 | Сообщение # 179
Группа: Пользователи
Сообщений: 220
как сделать чтоб привыборе скина над ним писалось пример:Police team.И чтоб он поевлялся где ты укозал
[img]http://sa-mp-fail.at.ua/premium.gif[/img]
Сообщение как сделать чтоб привыборе скина над ним писалось пример:Police team.И чтоб он поевлялся где ты укозал Автор - MaNb9K Дата добавления - 26.12.2010 в 10:31:13
Nik_Ull Дата: Воскресенье, 26.12.2010, 16:21:31 | Сообщение # 180
Группа: Пользователи
Сообщений: 184
На своем компьютере. Что добавил, не знаю, я просто делал мод, банды сделал, рандомный спавн, уровни поставил, да много чего, но не писал сообщения в чат. Но потом, когда друган зашел, я пишу в чат, ничего не выводится, и когда он мне пишет, тоже ничего не выводится
Сообщение На своем компьютере. Что добавил, не знаю, я просто делал мод, банды сделал, рандомный спавн, уровни поставил, да много чего, но не писал сообщения в чат. Но потом, когда друган зашел, я пишу в чат, ничего не выводится, и когда он мне пишет, тоже ничего не выводится Автор - Nik_Ull Дата добавления - 26.12.2010 в 16:21:31
Загрузка страницы, займет меньше минуты...
Статистика Форума
Последнии темы
Читаемые темы
Лучшие пользователи
Новые пользователи