Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: KaTacTpOqpa  
Урок создания меню.
Atikinx Сообщение # 1  | 15:40:42
Пользователи
Сообщений: 6
Репутация: 1
Начнём урок от AtikinnA smile :) smile

При в вводе /dmzones У вас появляется меню и выбираете куда вам надо))

В начало встовляем код

Code
#define DIALOGID 1111

Затем в паблик OnPlayerCommandText(playerid, cmdtext[])
добавляем ещё один код
Code

if(!strcmp("/dmzones", cmdtext, true))    
{    
ShowPlayerDialog(playerid, DIALOGID, DIALOG_STYLE_LIST, "Дм-зоны", "Первая Дм-зона\nВторая Дм-зона\nДм на М4\nДм на Deagle\nДм на Shotgun", "Принять", "Отменить"); //естественно команда при которой будет вызыватся меню    
return 1;    
}

Потом создаем паблик
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])    
{
switch(dialogid)
{
case DIALOGID:    
{
switch(response)
{
case 1:
{    
switch(listitem)
{
case 0: //Ну типо в каком порядке будет стоять пункт    
{    
new string[256];    
SetPlayerPos(playerid,1691.4250,-1396.2572,88.0043);//кто не понимает это координаты X,,Y,Z    
GetPlayerName(playerid,sendername,sizeof(sendername));    
format(string, sizeof(string), "%s зашёл на Big Death Match.(/dmzones)",sendername);// текст который будет выводиться в чат и показываться игрокама мол ты зашел на DM    
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);//Звук который будет при тлепорте    
SendClientMessageToAll(COLOR_WHITE, string);//Цвет    
ResetPlayerWeapons(playerid);    
SetPlayerHealth(playerid, 100);    
GivePlayerWeapon(playerid, 31, 999999);//ну это то что будет выдаватся при телепорте    
GivePlayerWeapon(playerid, 25, 999999);    
GivePlayerWeapon(playerid, 24, 999999);    
GivePlayerWeapon(playerid, 31, 999999);    
GivePlayerWeapon(playerid, 16, 6);    
}    
case 1:   
{    
new string[256];    
GetPlayerName(playerid,sendername,sizeof(sendername));    
SetPlayerPos(playerid,1325.7030,319.7862,19.4063);    
format(string, sizeof(string), "%s зашёл на Big Death Match2.(/dmzones)",sendername);    
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);    
SendClientMessageToAll(COLOR_WHITE, string);    
ResetPlayerWeapons(playerid);    
SetPlayerHealth(playerid, 100);    
GivePlayerWeapon(playerid, 16, 6);    
GivePlayerWeapon(playerid, 31, 999999);    
GivePlayerWeapon(playerid, 25, 999999);    
GivePlayerWeapon(playerid, 24, 999999);    
GivePlayerWeapon(playerid, 31, 999999);    
GivePlayerWeapon(playerid, 34, 999999);    
}    
case 2:   
{    
new string[256];    
SetPlayerPos(playerid,2341.8887,77.8236,26.3368);    
GetPlayerName(playerid,sendername,sizeof(sendername));    
format(string, sizeof(string), "%s зашёл на M4 Death Match.(/dmzones)",sendername);    
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);    
SendClientMessageToAll(COLOR_WHITE, string);    
ResetPlayerWeapons(playerid);    
SetPlayerHealth(playerid, 100);    
GivePlayerWeapon(playerid, 31, 9999);    
}    
case 3:
{    
new string[256];    
SetPlayerPos(playerid,2357.2329,-195.6700,18.5439);    
GetPlayerName(playerid,sendername,sizeof(sendername));    
format(string, sizeof(string), "%s зашёл на Deagle Death Match.(/dmzones)",sendername);    
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);    
SendClientMessageToAll(COLOR_WHITE, string);    
ResetPlayerWeapons(playerid);    
SetPlayerHealth(playerid, 100);    
GivePlayerWeapon(playerid, 24, 9999);    
}    
case 4:
{    
new string[256];    
SetPlayerPos(playerid,1410.4371,1001.9703,10.8203);    
GetPlayerName(playerid,sendername,sizeof(sendername));    
format(string, sizeof(string), "%s зашёл на Shotgun Death Match.(/dmzones)",sendername);    
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);    
SendClientMessageToAll(COLOR_WHITE, string);    
ResetPlayerWeapons(playerid);    
SetPlayerHealth(playerid, 100);    
GivePlayerWeapon(playerid, 25, 200);    
}
}
}    
}    
}

}

return 0;    
}

Ну вот и всё

Спасибо за просмотор
p.s. каму помогло ставь +

//Редактированно, Причина: Упростил код, исправил несколько багов
by BJIADOKC

Demetrius Сообщение # 2  | 14:54:06
VIP-пользователи
Сообщений: 1192
Репутация: 158
второй код может неработать на некоторых сервах, поэтому ставьте вместо "if(response)", вот это - if(response == 1), вот пример всего кода:
Code
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])   
{   
if(dialogid == DIALOGID)   
{   
if(response == 1)   
{   
if(listitem == 0) //Ну типо в каком порядке будет стоять пункт   
{   
new string[256];   
SetPlayerPos(playerid,1691.4250,-1396.2572,88.0043);//кто не понимает это координаты X,,Y,Z   
GetPlayerName(playerid,sendername,sizeof(sendername));   
format(string, sizeof(string), "%s зашёл на Big Death Match.(/dmzones)",sendername);// текст который будет выводиться в чат и показываться игрокама мол ты зашел на DM   
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);//Звук который будет при тлепорте   
SendClientMessageToAll(COLOR_WHITE, string);//Цвет   
ResetPlayerWeapons(playerid);   
SetPlayerHealth(playerid, 100);   
GivePlayerWeapon(playerid, 31, 999999);//ну это то что будет выдаватся при телепорте   
GivePlayerWeapon(playerid, 25, 999999);   
GivePlayerWeapon(playerid, 24, 999999);   
GivePlayerWeapon(playerid, 31, 999999);   
GivePlayerWeapon(playerid, 16, 6);   
}   
if(listitem == 1)   
{   
new string[256];   
GetPlayerName(playerid,sendername,sizeof(sendername));   
SetPlayerPos(playerid,1325.7030,319.7862,19.4063);   
format(string, sizeof(string), "%s зашёл на Big Death Match2.(/dmzones)",sendername);   
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);   
SendClientMessageToAll(COLOR_WHITE, string);   
ResetPlayerWeapons(playerid);   
SetPlayerHealth(playerid, 100);   
GivePlayerWeapon(playerid, 16, 6);   
GivePlayerWeapon(playerid, 31, 999999);   
GivePlayerWeapon(playerid, 25, 999999);   
GivePlayerWeapon(playerid, 24, 999999);   
GivePlayerWeapon(playerid, 31, 999999);   
GivePlayerWeapon(playerid, 34, 999999);   
}   
if(listitem == 2)   
{   
new string[256];   
SetPlayerPos(playerid,2341.8887,77.8236,26.3368);   
GetPlayerName(playerid,sendername,sizeof(sendername));   
format(string, sizeof(string), "%s зашёл на M4 Death Match.(/dmzones)",sendername);   
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);   
SendClientMessageToAll(COLOR_WHITE, string);   
ResetPlayerWeapons(playerid);   
SetPlayerHealth(playerid, 100);   
GivePlayerWeapon(playerid, 31, 9999);   
}   
if(listitem == 3)   
{   
new string[256];   
SetPlayerPos(playerid,2357.2329,-195.6700,18.5439);   
GetPlayerName(playerid,sendername,sizeof(sendername));   
format(string, sizeof(string), "%s зашёл на Deagle Death Match.(/dmzones)",sendername);   
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);   
SendClientMessageToAll(COLOR_WHITE, string);   
ResetPlayerWeapons(playerid);   
SetPlayerHealth(playerid, 100);   
GivePlayerWeapon(playerid, 24, 9999);   
}   
if(listitem == 4)   
{   
new string[256];   
SetPlayerPos(playerid,1410.4371,1001.9703,10.8203);   
GetPlayerName(playerid,sendername,sizeof(sendername));   
format(string, sizeof(string), "%s зашёл на Shotgun Death Match.(/dmzones)",sendername);   
PlayerPlaySound(playerid,1139, 0.0, 0.0, 0.0);   
SendClientMessageToAll(COLOR_WHITE, string);   
ResetPlayerWeapons(playerid);   
SetPlayerHealth(playerid, 100);   
GivePlayerWeapon(playerid, 25, 200);   
}   
}   
return 1;   
}   
return 0;   
}

Вот так)))

Добавлено (30.06.2010, 14:54)
---------------------------------------------
и только это не меню а диалоговые окна)))


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Polcar Сообщение # 3  | 11:14:14
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
хе, уже немного соображаете в скриптинге, [NPSS]Armin, тут ты прав на счёт if(response == 1), может ктото пример не диологовых окон, а через меню покажет?



Demetrius Сообщение # 4  | 12:14:17
VIP-пользователи
Сообщений: 1192
Репутация: 158
я знаю как меню делать но не пробовал, долго я искал нормального объяснения как его сделать, и обнаружил его у меня буквально под носом)) хехе...
Так вот что нашел:
Сначала нужно создать глобальную переменную:

Code
new Menu:menu1;

Потом в паблике OnGameModeInit прописать:

Code
menu1 = CreateMenu("Menu", 1, 200.0, 100.0, 150.0, 150.0);

Объясняю:

Code
menu1 = CreateMenu("Название меню", Кол-во колон, Положение по Х-координате, Положение по У-координате,  
Ширина первой колонны, Ширина второй колонны);

Потом прописываем:

Code
menu1 = AddMenuItem(menu1, 0, "Item");

Вот что это все означает:

Code
AddMenuItem(ID меню, Номер колонны (начинается с нуля), Название);

Этих Item'ов можно поместить сколько угодно.

Теперь прописываем действия, которые происходят при выборе Item'а, они прописаны в паблике OnPlayerSelectMenuRow,
в этом паблике создаем переменную new:

Code
pmenu == GetPlayerMenu(playerid);

Далее делаем пару проверок:

Code
if(pmenu == menu1)  
{  
switch(row)  
{

Тут делаем различные кейсы, соответствующие Item'ам, все ID case'ов начинаются с нуля,
например:

Code
case 0:  
{  
//функции, которые будут выполняться при выбора Item'а  
return 1;  
}  
}  
}

повторяю, я меню делать не пробывал, так что не ручаюсь за достовернось материала.


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Polcar Сообщение # 5  | 12:17:15
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
на правильно всё, молодец, так и делают меню



Polcar Сообщение # 6  | 12:17:29
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
конечно диологовые окна куда легче сделать



Demetrius Сообщение # 7  | 12:25:12
VIP-пользователи
Сообщений: 1192
Репутация: 158
да диалоговые окна легче, намного...

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
ANGEL Сообщение # 8  | 22:25:02
Глав. Модераторы
Сообщений: 503
Репутация: 228
[off]Народ, пишите по русски...
//Редактированно, Причина: Оффтоп
by BJIADOKC



Можете задавать вопросы в личку на сайте...
Demetrius Сообщение # 9  | 11:46:03
VIP-пользователи
Сообщений: 1192
Репутация: 158
[off]в смысле по-русски, в прямом: тут все на русском языке, в переносном: вроде все понято, или не все...?
//Редактированно, Причина: Оффтоп
by BJIADOKC


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
ANGEL Сообщение # 10  | 11:52:43
Глав. Модераторы
Сообщений: 503
Репутация: 228
Ни куя не понятно...



Можете задавать вопросы в личку на сайте...
Polcar Сообщение # 11  | 12:28:26
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
ANGEL, ты если несмыслишь в скриптинге pawno то конечно ничего понятно небудет



Гость Сообщение # 12  | 15:10:30
Гости
плиз напишите как должно всё это вылядить!!!!!!!
Demetrius Сообщение # 13  | 16:32:55
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (Гость)
плиз напишите как должно всё это вылядить!!!!!!!

тут и так все написано, тупо копипасть в свой скрипт или мод и проверяй на работо способность)


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Гость Сообщение # 14  | 18:28:12
Гости
ну просто там написано вставте туда а потом туда а потом вставте в ту строчку......просто не понятно((((((((((
Demetrius Сообщение # 15  | 22:19:56
VIP-пользователи
Сообщений: 1192
Репутация: 158
ну так и делай что написано, по порядку, или ты совсем павно не понимаешь?

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Lion_Hils Сообщение # 16  | 11:36:54
Пользователи
Сообщений: 162
Репутация: 11
biggrin Неплохо +

================================
Разрабатываю моды писать в лс
Делаю проект Most People RolePlay
В аську неотвечаю по SAMP вопросам
================================
Mafia Сообщение # 17  | 12:18:47
Пользователи
Сообщений: 7
Репутация: 0
cry
Неа не разбираюсь(


Главарь клана мафии
Demetrius Сообщение # 18  | 14:44:56
VIP-пользователи
Сообщений: 1192
Репутация: 158
ну тогда читай вот это:

и вот это:


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Mafia Сообщение # 19  | 22:04:05
Пользователи
Сообщений: 7
Репутация: 0
Мда...... wacko crazy shok umnik
Я чуть.... blink
Там ваще не понятно....А есть какинибудь файлы по обучение pawno?????
Свит ты можешь написать как должны выглядеть коды


Главарь клана мафии
Demetrius Сообщение # 20  | 22:07:48
VIP-пользователи
Сообщений: 1192
Репутация: 158
Quote (Mafia)
Там ваще не понятно....А есть какинибудь файлы по обучение pawno?????

Pawno Tool - там есть базовые туториалы, и дам еще сайт, который знают все скриптеры:

Quote (Mafia)
Свит ты можешь написать как должны выглядеть коды

то что в сереньких рамочках это и есть код, почитай туториалы и поймешь


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск: