Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Создание Stunt мода с new.pwn(Урок 1) - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Создание Stunt мода с new.pwn(Урок 1)
Оценка: -----

#1
Пользователь офлайн   mayo 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Всем привет!Каждую неделю я буду выпускать по 1 уроку, в этих уроках вы научитесь создавать stunt мод, а по его основам другие.
В этом уроке:
1.Создание дефайнов(цвета)
2.Настройка приветствия
3.Создание простых команд.
4.Создание диалогов
5.3D Text
6.Создание телепортов
И так начнем!
1.Создание дефайнов
Для чего нам дефайны? - Ну например если нам нужны цвета, то нам не придется писать "0xFFFFFFF or {FF0000}" , а мы просто напишем "red" or "gкeen"
Дефайны создаются так:
#define RED {FF0000}
#define LGREEN {00FF00}
#define BLUE {0080FF}
#define WHITE {FFFFFF} 
#define BLACK {000000}

Эти цвета пригодятся нам когда мы будет использовать их в {}!
Давайте настроим дефайны под 0x
#define 0xBLACK 0x000000C8
#define 0xWHITE 0xFFFFFFFF
#define 0xRED 0xFF0000C8
#define 0xLGREEN 0x00FF00C8
#define 0xBLUE 0x0080FFC8

Дефайны готовы!
2.Начнем настраивать приветствие для нашего сервера.
Идем в OnPlayerConnect
И пишем там код -
SendClientMessage(playerid,0xBLUE,"Приветствую на своем сервере samp!");
SendClientMessage(playerid,0xBLUE,"Вы можете просмотреть список команд в /cmds");
SendClientMessage(playerid,0xBLUE,"А также список телепортов в /teles");


Готово!Это очень просто!
3.Давайте уж чтоле сделаем простенькую команду /help или /teles
Итак идем в OnPlayerCommandText
Пишем там:
if(!strcmp(cmdtext, "/help", true))
{
SendClientMessage(playerid,0xLGREEN,"Что-бы связаться с администрацией, напишите в /report") ;
SendClientMessage(playerid,0xLGREEN,"Что-бы отремонтировать машину нажмите'2'") ;
SendClientMessage(playerid,0xLGREEN,"Что-бы подпрыгнуть нажмите 'H'") ;
SendClientMessage(playerid,0xLGREEN,"Что-бы включить нитро нажмите 'Клик' на мышке") ;
SendClientMessage(playerid,0xLGREEN,"Ваш текст , бла бла бла") ;
return 1;
}

Таким же образом создаем /teles!

Создадим телепорты, это очень просто, в OnPlayerCommandText мы пишем это
if(!strcmp(cmdtext, "/stunt 1", true))
{
SetPlayerPos(playerid,2494.7852,-1686.4911,13.5135);
SendClientMessage(playerid,0xFFFFFFC8,"Вы телепортированы на стант зону 1");
return 1;
}

Заместь 2494.7852,-1686.4911,13.5135, свои координаты в формате x,y,z
Приступим к созданию диалога, есть 4 типа диалогов
0 - DIALOG_STYLE_MSGBOX - обычный диалог с 2мя кнопками
1 - DIALOG_STYLE_INPUT - диалог с полем для ввода
2 - DIALOG_STYLE_LIST - список из нескольких элементов
3 - DIALOG_STYLE_PASSWORD - позволяет игрокам вводить пароль не раскрывая его
Скриншоты к ним - http://wiki.sa-mp.co...ialog_Styles_RU
Создадим простой DIALOG_STYLE_LIST и добавим туда наши телепорты, в OnPlayerCommandText мы пишем это
if(strcmp(cmdtext, "/teles", true) == 0)
 {
 if(IsPlayerConnected(playerid))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST,"{0000FF}Te{00FF00}les","{00FF00}/stunt 1\n{FF0000}/stunt 2","Применить","Выйти");
}
return 1;
}

Объясню все поподробнее, ШовПлеерДИалог отвечает за открывание нашего диалога когда мы пишем /teles
playerid - это думаю понятно, 1 - ид диалога,DIALOG_STYLE_LIST - стайл нашего диалога,затем идет название диалога в ""и содержимое в ""
Ну и понятные кнопки в "Применить" "Выйти", не забывайте ставить запятые после каждого значения!
Ну вот, диалог мы сделали - добавим выполнение телепорта.Идем в OnDialogResponse
if(response)
{
switch(dialogid)
{
case 1: // dialog id
{
switch(listitem)
{
case 0:
{
SetPlayerPos(playerid,Координаты);
SendClientMessage(playerid,0xFFFFFFC8,"Вы телепортированы в стант зону 1");
}
case 0:
{
SetPlayerPos(playerid,Координаты);
SendClientMessage(playerid,0xFFFFFFC8,"Вы телепортированы в стант зону 2");
}
}
}
}

case 0,1 - это то что мы выбрали в списке, 0 это /stunt 1 , 1 это /stunt 2
Если вы хотите сделать одну функцию без SendClientMessage
case 0:SetPlayerPos(playerid,Координаты);

Без
{
Фунции
}

С диалогами разобрались, давайте добавим простейший 3DTextLable.Идем в OnGameModeInit
Добавим туда:
Create3DTextLabel("Ваш текст",0x008080FF,X,Y,Z,40.0);

Create3DTextLabell - создает 3дтекс, "Ваш текст" - понятно,0x008080FF - цвет, затем координаты X,Y,Z
Больше менять ничего не надо.Готово!
УРОК 2(СКОРО)
Дом инфа. -
b - backspae - забой
\f - Form feed - перевод страницы
\n - new line - новая строка
\r - возврат каретки
\' - одиночная кавычка
\" - двойные кавычки
\? - вопросительный знак

Сообщение отредактировал mayo: 28 Октябрь 2012 - 10:58

1

#2
Пользователь офлайн   Rock & Roll 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Коряво описал. Переделай оформление и больше информации.

Сообщение отредактировал ex.Jord: 28 Октябрь 2012 - 03:04

0

#3
Пользователь офлайн   Stich 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
И это весь урок? Нам на информатике в школе лучше объясняли.
0

#4
Пользователь офлайн   mayo 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
обновил первый пост :rolleyes:

Сообщение отредактировал mayo: 28 Октябрь 2012 - 10:54

0

#5
Пользователь офлайн   Rock & Roll 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Вот сейчас более менее! Продолжай развивать тему
0

#6
Пользователь офлайн   Quiz 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Спасибо за урок, всё подробно описано и очень внятно. Буду ждать 2 урок.
0

#7
Пользователь офлайн   Quiz 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию

Цитата

Давайте настроим дефайны под 0x
#define 0xBLACK 0x000000C8
#define 0xWHITE 0xFFFFFFFF
#define 0xRED 0xFF0000C8
#define 0xLGREEN 0x00FF00C8
#define 0xBLUE 0x0080FFC8


Тут ошибочка в написании define для цветов.
Ошибка в том что начинаются название цветов с 0x, например 0xBLACK - не правильно, нужно писать BLACK.
Может быть у кого то и пашет с такими названиями, но у меня выбивает ошибку.
0

#8
Пользователь офлайн   mayo 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияkostyanjkeee (28 Октябрь 2012 - 17:32) писал:

Тут ошибочка в написании define для цветов.
Ошибка в том что начинаются название цветов с 0x, например 0xBLACK - не правильно, нужно писать BLACK.
Может быть у кого то и пашет с такими названиями, но у меня выбивает ошибку.

Я писал для примера, можно заменять :steep:
0

#9
Пользователь офлайн   mayo 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Новый урок завтра
0

#10
Пользователь офлайн   Djjemson 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
C:\Users\user\Desktop\My ProJect\gamemodes\new.pwn(36) : error 029: invalid expression, assumed zero
C:\Users\user\Desktop\My ProJect\gamemodes\new.pwn(36) : error 029: invalid expression, assumed zero
C:\Users\user\Desktop\My ProJect\gamemodes\new.pwn(36) : error 029: invalid expression, assumed zero
C:\Users\user\Desktop\My ProJect\gamemodes\new.pwn(36) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


4 Errors.


Что теперь делать?
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей