23:23
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Dima-kun  
[tutorial] Скрипт 0.2х->0.3
Dima-kunДата: Пятница, 30.10.2009, 15:19 | Сообщение # 1
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Автор:Joe Staff Перевод:DizeL[ZR] Арригинал статьи

Туториал создан для новичков в скриптинге, которые не могут понять как перевести Скрипт(или GM) на sa-mp 0.3

В этом уроке Автор собирается показать на примере, не навистной для профессиональных скриптеров, Public Enemy Number 1 A.K.A. The Godfather, автор которого Astro (Denver).

ШАГ 1:
Для начала скачаем со страницы загрузок новый сервер Страница загрузок

Выбирай, для какой платформы тебе нужен сервер, автор выбрал для windows:

Открывай это Архиватором RAR, например, можно скачать отсюда www.RarLabs.com
Скопируй все новые файлы в папку сервера.

Убедитесь, что твой ".pwn" файл aka твой скрипт в папке gamemodes.

Теперь заходим в папку "pawno" и открываем "pawno.exe", и убедитесь что у тебя инклуды с 0.3a, старые больше не нужны.

Открывай твой файл ".pwn"



Теперь если ты попытаешься скомплировать тебе выдаст 1 ворнинг

Этот ворнинг из-за того что в sa-mp 0.3 удалили функцию "OnPlayerPrivmsg"

Но Мы самостоятельно "возродим" ее к жизни..
Для начала создадим "forward" к функции Командную строку, лучше помещать "forward" вверху скрипта под линиями "define"
Функция должна иметь параметры:playerid,receiverid,text[]
Должно выглядеть примерно так:

Code
forward OnPlayerPrivmsg(playerid,receiverid,text[]);

"playerid" это тот кто отсылает сообщение(ПМ),"receiverid" это тот кто получает сообщение и "text[]"-это само сообщение, отправленное от "playerid" для "receiverid".

Теперь создадим команду /pm
вот скрипт придлагает Нам Автор:

[pwn]if(!strcmp(cmdtext[1],"pm",true,2))
{
if(!cmdtext[3]||!cmdtext[4])return SendClientMessage(playerid,0xF8DA07FF,"USAGE: /pm [playerid] [text]");
new receiverid = strval(cmdtext[4]);
if(!IsPlayerConnected(receiverid))return SendClientMessage(playerid,0xF8DA07FF," Не правильный ИД игрока!");
new begintext = strfind(cmdtext[4]," ")+1;
if(!strlen(cmdtext[begintext]))return SendClientMessage(playerid,0xF8DA07FF,"USAGE: /pm [playerid] [text]");
OnPlayerPrivmsg(playerid, receiverid, cmdtext[begintext]);
return 1;
}[/pwn]

Сейчас я напишу свой вариант:
[pwn]if(strcmp(cmd,"/pm",true)==0)
{
new tmpid[256],receiverid,mess[256],text,idx;
tmpid=strtok(cmdtext,idx);
if(!strlen(tmpid)) return SendClientMessage(playerid,0xfff, "-- /pm [targetid] [message]");
}
receiverid=strval(tmpid);
mess=strtok(cmdtext,idx);
if(!strlen(mess)) return SendClientMessage(playerid,0xfff, "-- /pm [targetid] [message]");
}
text=strval(mess);
OnPlayerPrivmsg(playerid, receiverid, text);
return 1;
}[/pwn]

Ладно продолжение туториала:Эта команда будет установлена под возвратом "OnPlayerCommandText" с остальной частью команд (предположим, Вы имеете любое) Автор объясняет это построчно.

if(!strcmp(cmdtext[1],"pm",true,2))
Это сравнивает, что игрок ввел, чтобы отослать это сочетается по "/pm"
"cmdtext" - Это какую команду ввел игрок, Я добавил "[1]" поскольку "[ 0 ]" - первый символ, который - конечно правый слэш "/", Это не захочет называть возврат OnPlayerCommandText если это не было первым символом

if(!cmdtext[3]||!cmdtext[4])return SendClientMessage(playerid,0xF8DA07FF,"USAGE: /pm [playerid] [text]");
Если утверждение видит если 3-е и 4-е символы в "cmdtext" существует, это будет пространством немедленно после "/pm " и ID перечисляется, игрок вкладывает,А если не ввел ID игрока то ему вернет сообщение как использовать команду . "/pm 3"

new receiverid = strval(cmdtext[4]);
Эта линия создает стандартную переменную ID'а игрока, которому будет отправлено сообщение "/pm "
if(!IsPlayerConnected(receiverid))return SendClientMessage(playerid,0xF8DA07FF," Нет такого пользователя!");
Это условие проверяет подключен ли игрок, который должен получить сообщение, если такого нету игрока то ему вернет " Нет такого пользователя!".

new begintext = strfind(cmdtext[4]," ")+1+4;
Это дает знать, о том какое сообщение ввел игрок
+1 - там поскольку возвращанное число - прежде, чем символьный strfind будет поискать +4 - там поскольку поиск начинался в символе 4 и нужно компенсировать это отсутствие.

if(!strlen(cmdtext[begintext]))return SendClientMessage(playerid,0xF8DA07FF,"USAGE: /pm [playerid] [text]");
Эта линия говорит о том "Если игрок не ввел текст, то написать как использовать команду".

OnPlayerPrivmsg(playerid, receiverid, cmdtext[begintext]);
Теперь мы посылаем команду что мы сделали команду /pm от playerid до receiverd и сообщение

return 1;
Эта строка нужна для того, чтобы при вводе команды /pm не отвечало игроку "SERVER: unrecognized command"

ШАГ 3:
Удалите возврат "OnPlayerInfoChange"
Может быть его и не будет уже, но все равно введите в поиске CTRL+F "OnPlayerInfoChange" и удалите полностью эту функцию.

ШАГ 4:
Пока что мы создали команду "/pm" но она не определена до конца!
Внутрь public OnPlayerPrivmsg Добавьте код, который приведен ниже, но выше return 1;:

[pwn]new pname[MAX_PLAYER_NAME];
new rname[MAX_PLAYER_NAME];
new tmpstring[256];
GetPlayerName(receiverid,rname,sizeof(rname));
GetPlayerName(playerid,pname,sizeof(pname));
format(tmpstring,sizeof(tmpstring),"PM to %s(%d): %s",rname,receiverid,text);
SendClientMessage(playerid,0xFFCC22FF,tmpstring);
format(tmpstring,sizeof(tmpstring),"PM from %s(%d): %s",pname,playerid,text);
SendClientMessage(receiverid,0xFFFF22FF,tmpstring);
[/pwn]

У Вас должно получится вроде этого:

Теперь все должно быть готово!

Если Ты - все еще имеешь проблемы, это могло быть с вашим сценарием. Помни, 0.3 приходит с этим - собственный вымпел машины так нет необходимости для другого один!

Если что не понятно пишите здесь помогу, чем смогу. И если хотите сделаю Вам собственный скрипт PM гораздо проще.


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
AlodeДата: Пятница, 27.11.2009, 18:30 | Сообщение # 2
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 1
Город: Сахара
Репутация: -5
Замечания: 0%
Статус:
Я ничего не понял... можно попроще???
У меня мод sfrl !

Dima-kunДата: Пятница, 27.11.2009, 18:33 | Сообщение # 3
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
а разница какая просто здесь на примере пена.. все также делаешь у ся и все


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
AlodeДата: Пятница, 27.11.2009, 18:52 | Сообщение # 4
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 1
Город: Сахара
Репутация: -5
Замечания: 0%
Статус:
Просто я не знаю что куда вставлять...
Есть чтоб одной строкой вставить и не париться?

Dima-kunДата: Пятница, 27.11.2009, 19:16 | Сообщение # 5
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
делай до ШАГ3


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
AlodeДата: Пятница, 27.11.2009, 19:21 | Сообщение # 6
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 1
Город: Сахара
Репутация: -5
Замечания: 0%
Статус:
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(8594) : warning 217: loose indentation
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27502) : error 025: function heading differs from prototype
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27505) : warning 217: loose indentation
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27507) : error 017: undefined symbol "receiverid"
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27509) : error 017: undefined symbol "receiverid"
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27512) : error 017: undefined symbol "receiverid"
C:\Users\Alode\Desktop\samp03asvr_win32\gamemodes\sfrl.pwn(27514) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

4 Errors.

теперь такая фигня

Dima-kunДата: Пятница, 27.11.2009, 19:29 | Сообщение # 7
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
ты код делай лесенкой new receiverid; ..


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
AlodeДата: Пятница, 27.11.2009, 19:36 | Сообщение # 8
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 1
Город: Сахара
Репутация: -5
Замечания: 0%
Статус:
ппц нифига не понимаю, ты можешь мне сделать норм sfrl мод?
Я тебе могу его на мыло прислать.. или в асю
очень прошу

MorozzzkoДата: Суббота, 28.11.2009, 10:04 | Сообщение # 9
Мастер джэдай
Группа: Продвинутые
Сообщений: 2179
Награды: 40
Город: Moscow
Репутация: 590
Замечания: 0%
Статус:
бля. назвать PEN1 годфазером - ужас.
GF - переделка пена, но не наоборот



Главный программист в Malefic Entertainment.
Dima-kunДата: Суббота, 28.11.2009, 12:26 | Сообщение # 10
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Morozzzko, де ты гф нашел


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
[ER]ChezДата: Суббота, 28.11.2009, 12:33 | Сообщение # 11
Уверенный в себе
Группа: Пользователи
Сообщений: 250
Награды: 5
Город: Крыжопль
Репутация: 104
Замечания: 100%
Статус:
DizeL-ZR-,
Quote (DizeL-ZR-)
Public Enemy Number 1 A.K.A. The Godfather

сам не знаешь чо пишешь? О_о

Dima-kunДата: Суббота, 28.11.2009, 12:36 | Сообщение # 12
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
[ER]Chez, аа я уже забыл да я забыл уже давно писал. гф >= Pen


Мои работы:
[INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники,
[FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos,
[GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
Nick5Дата: Воскресенье, 29.11.2009, 12:15 | Сообщение # 13
Новенький
Группа: Продвинутые
Сообщений: 36
Награды: 1
Город: Ололо-city
Репутация: 1
Замечания: 0%
Статус:
penls.pwn(28566) : error 025: function heading differs from prototype

незнаете к чему это?

d0lph1nДата: Среда, 02.12.2009, 18:56 | Сообщение # 14
Освоившийся
Группа: Продвинутые
Сообщений: 147
Награды: 5
Город: Нижний Новгород
Репутация: 39
Замечания: 0%
Статус:
Мда, это называется перенес скрипт на 0.3. Если нет ошибок компиляции, это не означает что ошибок нет совсем.


[GM] J-Actio 1.5 r355
[FS] SpeedoMeter 1.1
[FS] SpeedoMeter 2.2
[FS] WarpEngine 0.1
[INC] FastTeleports 1.6
tajgerДата: Воскресенье, 27.12.2009, 21:28 | Сообщение # 15
Новенький
Группа: Пользователи
Сообщений: 42
Награды: 1
Город: eesti
Репутация: 2
Замечания: 0%
Статус:
Помогите, после переноса серва на 0.3 он загружается, потом 5 секунд держится и перезагружается, так повторяется до бесконечности, что делать ?
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua