LuxurY forum (scripting SA-MP)

Объявление

с 29 марта 2007 года
LuxurY forum - крупнейший российский форум скриптинга в PAWNO
Новый форум
Задавайте свои вопросы

Архив скриптов


Наша кнопка:
LuxurY forum :: Scripting SA-MP
Код:

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » LuxurY forum (scripting SA-MP) » Вопросы по созданию скриптов » Вопросы по созданию гейммодов


Вопросы по созданию гейммодов

Сообщений 241 страница 270 из 703

241

Ну плз очень прошу тебя

0

242

Как сделать так, когда я сажусь в  в определенную машину (напиример под ID 566), в чат выкидывался определенный текст?
Когда в машину (напиример под ID 567), то другой и т.д. ?

Короче нужен код отвечающий за ID машины. Типо того:
i
f(GetPlayerVehicleID(playerid) == 566)
SendClientMessage(playerid, COLOR_GREEN,"да да да да!");

0

243

public OnplayerStateChange (playerid, newstate, oldstate) {
new vehicleid;
if(newstate == PLAYER_STATE_DRIVER)
{
    vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 567){
SendClientMessage(playerid, COLOR_GREEN, " da da da da!");
}
}
return 1;
}
Только здесь нужно использовать не id модели транспорта, а id транспорта в игре, т.е. того, который ты расставил. В этом случае 567 быть не может, их всего 200 с хером можно поставить. Так что не перепутай.

Отредактировано ChelSea (2007-05-08 14:18:48)

0

244

кароче:
Вот мод - скачать

Команды:
/color [coloid 1-8] - для игроков
/acolor [playerid] [colorid 1-100] - для админа
/xregister - регистрация
/xlogin - заход в аккаунт
/xlogout - выход из аккаунта

В конфиг сервера (server.cfg) добавь строчку: filterscripts xadmin

Все, что в папке копируй в сервер.
Я думаю ты разберешься.
Подробные команды смотри тут

Деньги сохраняются. Цвета меняются. Фраги показываются.

0

245

mcdog написал(а):

ЛЮКСЮРИ МОД ЗАВТРА БУИТ ГОТОВ? Очень надо...все достали уже

епт как мастерская прям =)
сапоги будут завтра готовы?  :lol:

0

246

Можно ли перебрать всех игроков, находящихся на сервере с помощью такой конструкции:

for(i=0;i<playercount;i++){}

где playercount - количество присутствующих игроков?
Т.е. можно ли использовать для обращения к каждому конкретному игроку переменную i вместо playerid, например для проверки местоположения игрока.
Например вот так:

public TimerMain()
{
  new i;
  new float:x;
  new float:y;
  new float:z;
  new plteam;

    for(i=0;i<playercount;i++){
plteam=GetPlayerTeam(i);
switch(plteam){
  case 1:{
        GetPlayerPos(i,x,y,z);
        if ((x>-275)&&(x<46)&&(y>1001)&&(y<1214)&&(z>17)&&(z<25)){
      bscore++;
        }
  }
  case 2:{
        GetPlayerPos(i,x,y,z);
        if ((x>-275)&&(x<46)&&(y>1001)&&(y<1214)&&(z>17)&&(z<25)){
      gscore++;
        }
  }
    }
  }
}

Отредактировано Чупакабра (2007-05-08 20:37:02)

0

247

Чупакабра написал(а):

Можно ли перебрать всех игроков, находящихся на сервере с помощью такой конструкции:

for(i=0;i<playercount;i++){}где playercount - количество присутствующих игроков?
Т.е. можно ли использовать для обращения к каждому конкретному игроку переменную i вместо playerid, например для проверки местоположения игрока.
Например вот так:

public TimerMain()
{
  new i;
  new float:x;
  new float:y;
  new float:z;
  new plteam;
    for(i=0;i<playercount;i++){
plteam=GetPlayerTeam(i);
switch(plteam){
  case 1:{
        GetPlayerPos(i,x,y,z);
        if ((x>-275)&&(x<46)&&(y>1001)&&(y<1214)&&(z>17)&&(z<25)){
      bscore++;
        }
  }
  case 2:{
        GetPlayerPos(i,x,y,z);
        if ((x>-275)&&(x<46)&&(y>1001)&&(y<1214)&&(z>17)&&(z<25)){
      gscore++;
        }
  }
    }
  }
}Отредактировано Чупакабра (Сегодня 20:37:02)

ого, тыже вроде 2 дня назад FAQ читал.
где такого набрался? :)

естественно можно использовать переменную i
ее очень часто используют.
не забывай в OnPlayerConnect писать playercount++;
а в OnPlayerDisconnect playercount--;
чтобы у тебя playercount соответствовал реальному количеству онлайн игроков.

и скажи мне пожалуйста для чего ты используешь эту функцию?

в данном случае i относится ко всем онлайн игрокам, т.е. если ты определяешь позицию всех игроков. что нереально. я себе этого не представляю как можно это определить.
например можно использовать переменную i для дачи всем игрокам на сервере очков, денег, оружия итд.

1 вопрос: ты это сам написал или откуда-то взял?
2 вопрос: ты изучаешь с++?

0

248

и скажи мне пожалуйста для чего ты используешь эту функцию?

Для определения, находится ли игрок в квадрате с определенными координатами. Если да, то его команде прибавляется очко. Эта проверка у меня повешена на таймер. То есть  с определенной периодичностью проверяется местоположение каждого игрока и его команды.

не забывай в OnPlayerConnect писать playercount++;
а в OnPlayerDisconnect playercount--;
чтобы у тебя playercount соответствовал реальному количеству онлайн игроков

так и сделал

1 вопрос: ты это сам написал или откуда-то взял?

сам написал, для этого не нужны специфические знания, достаточно знать какой-нибудь язык программирования на школьном уровне))

вопрос: ты изучаешь с++?

нет, я немного программирую в Delphi, но ведь принципиальной разницы в синтаксисе языков нет?

Ну так вот: я этот вопрс задал потому, что этот участок программы не работает.
Я сделал две глобальные переменные bscore и gscore - очки соответственно синей и зеленой команды. Их значения с периодичностью в 10 секунд выводятся на экран, так я могу их контролировать. По идее, когда я заезжаю в один городок около Вентураса, очки моей команды должны начать возрастать, но этого не происходит. Возможно,я просто не разобрался, что такое playerid. Я понял это так: когда первый игрок подключается к серверу, у него  playerid=0, у второго подключившегося playerid=1 и т.д. Исходя из этой логики я и написал тот кусок скрипта.
Так что вопрос остается: В ЧЕМ КОСЯК?
З.Ы. Могу весь скрипт скинуть, он небольшой. http://chupacabra-sa-mp.narod.ru  ссылка че-то тормозит только((
З.З.Ы.

в данном случае i относится ко всем онлайн игрокам, т.е. если ты определяешь позицию всех игроков. что нереально. я себе этого не представляю как можно это определить.

В смысле ко всем онлайн игрокам?? То есть не только к тем, кто играет на данном сервере? Или как? Но в любом случае у меня сервер LAN и играют там обычно 2 игрока...

Отредактировано Чупакабра (2007-05-08 22:50:09)

0

249

Вот это не работает:

public OnplayerStateChange (playerid, newstate, oldstate) {
new vehicleid;
if(newstate == PLAYER_STATE_DRIVER)
{
    vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 1){
SendClientMessage(playerid, COLOR_GREEN, " da da da da!");
}
}

Если предположем у меня в моде всего одна машина, то что писать тут if (vehicleid == 1){   ??
Кокое ID?

0

250

sneg
если vehicleid и modelid не одно и то же, то при одной машине vehicleid==0 - попробуй так

По поводу моей траблы: если увеличить период срабатывания таймера и заменить plteam=GetPlayerTeam(i); на plteam=gTeam[i];, то все как бы начинает работать, но опять с глюками. Условие срабатывает не вов всех местах, где должно срабатывть. Насчет увеличения времени таймера еще понятно: при малом периоде условия не успевали проверяться (то ли из-за лагов сети, то ли из-за тормознутости скриптовых фнкций). Но что оно не хочет по нормальному работать при большом периоде таймера - непонятно. Вторая версия скрипта здесь: http://www.chupacabra-sa-mp.narod.ru/new71.pwn

Отредактировано Чупакабра (2007-05-09 02:34:15)

0

251

Да я уже пробывал и 0 ставить и 1 не работает!

0

252

Чупакабра написал(а):

В смысле ко всем онлайн игрокам?? То есть не только к тем, кто играет на данном сервере? Или как? Но в любом случае у меня сервер LAN и играют там обычно 2 игрока...

ну значит это будет относиться к двум игрокам

0

253

LuxurY написал(а):

ну значит это будет относиться к двум игрокам

С этим я уже разобрался, о чем написал в предыдущем посте. Но у меня появились новые вопросы, которые написаны там же. Если не трудно, скачайте вторую версию моего мода и протестируйте. В городке Форт Карсон должны прибавляться со временем очки той команде, чей игрок там находится. Помогите разобраться плиз!

P.S. Я решил и эту проблему. Оказывется, всё дело в глючности Pawno, а именно есть баг при сравнении отрицательных вещественных чисел.
Очень важно: два вещественных отрицательных числа сравниваются по модулю.
Пример:
  у вас есть такое условие:

if (x>-100.0) {}

Так вот, оно будет выполняться  при

x=67.5

,
но не будет выполняться при

x=-50.2

.
Но зато будет выполняться при

x=-101.0

!!!
Так что кусок кода

if (x>-100) {}

нужно заменить на

if (x>=0)
{
  //необходимые действия
}
else
{
  if (x<-100)
  {
    //необходимые действия
  }
}

Такая вот особенность.
Обратите на это внимание!!!!!

Отредактировано Чупакабра (2007-05-09 15:13:51)

0

254

Luxury я не знаю, как счетчик фрагов сделать,блин

0

255

mcdog
счетчик фрагов?
можно так:
прописываешь глобальную переменную
new frags[MAX_PLAYERS];
потом в функции OnPlayerDeath
пишешь строчку
frags[killerid]++;

0

256

А как сделать вот в точности такое:

public OnPlayerStateChange(playerid, newstate, oldstate)
{
new vehicleid;
if(IsPlayerConnected(playerid) && newstate == PLAYER_STATE_DRIVER)
{
vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 1){ // Транспорт (ID).
idv =1;
}
return 1;
}

Только чтоб это происходило не тогда когда игрок сел за руль (if(GetPlayerState(playerid) == 2)), а тогда, когда он сел в машину как посажир (if(GetPlayerState(playerid) == 3)) ????

В общем нужно - когда игрок садиться рядом с шовером, в определенную модель машины, то происходить следущие (типа например - idv =1; и т.п.) ?

0

257

mcdog написал(а):

Luxury я не знаю, как счетчик фрагов сделать,блин

зачем тебе счетчик фрагов? он и так есть score - это и есть те фраги
он уже есть, чтобы узнать кол-во очков у игрока достаточно написать

Код:
GetPlayerScore(playerid);

все команды описаны в павно

sneg написал(а):

А как сделать вот в точности такое:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
new vehicleid;
if(IsPlayerConnected(playerid) && newstate == PLAYER_STATE_DRIVER)
{
vehicleid = GetPlayerVehicleID(playerid);
if (vehicleid == 1){ // Транспорт (ID).
idv =1;
}
return 1;
}
Только чтоб это происходило не тогда когда игрок сел за руль (if(GetPlayerState(playerid) == 2)), а тогда, когда он сел в машину как посажир (if(GetPlayerState(playerid) == 3)) ????
В общем нужно - когда игрок садиться рядом с шовером, в определенную модель машины, то происходить следущие (типа например - idv =1; и т.п.) ?

блин я не помню поробуй
newstate=PLAYER_STATE_PASSENGER
или
newstate=PLAYER_STATE_PASSANGER

я не помню

0

258

D:\Games\GTA4\samp01b-server\pawno\RPG.pwn(16) : fatal error 100: cannot read from file: "dudb"

Compilation aborted.Pawn compiler 3.0.3367    Copyright (c) 1997-2005, ITB CompuPhase

1 Error.

u mena takaja o6ibka v pawno  6to delatj? :(

0

259

Xaoc написал(а):

D:\Games\GTA4\samp01b-server\pawno\RPG.pwn(16) : fatal error 100: cannot read from file: "dudb"
Compilation aborted.Pawn compiler 3.0.3367    Copyright (c) 1997-2005, ITB CompuPhase

1 Error.

u mena takaja o6ibka v pawno  6to delatj?

скачай этот файл
==================================
http://www.dracoblue.net/Downloads/DUDB_2_2.zip
==================================

помести его в папку: */samp-server/pawno/includes/

и в начале скрипта напиши строку #include dudb

А ВООБЩЕ, КОГДА ЕСТЬ ОШИБКИ ВЫКЛАДЫВАЙ СКРИПТ

0

260

U Mena i6e 1 vopros kak zdelatj pickupi nu 6tobi primeru oruzeje valjalosj na zemlje i evo mozna bilo podnjat :) prosta ja delaju takije mapi kak Counter Strike 1.6 :)

0

261

Xaoc написал(а):

U Mena i6e 1 vopros kak zdelatj pickupi nu 6tobi primeru oruzeje valjalosj na zemlje i evo mozna bilo podnjat  prosta ja delaju takije mapi kak Counter Strike 1.6

значит

есть такая команда:

Код:
AddStaticPickup(model,type,Float:X,Float:Y,Float:Z);

где
model - модель вещи которая будет "валяться" ( Вопросы по созданию гейммодов )
type - вид модели

Код:
0 	Item does not display
1	Not pickupable and no respawn.
2 	Pickupable and respawns after a few minutes
3 	Pickupable, no respawn
4 	Disappears shortly after creation (used for drops?)
5 	Disappears shortly after creation (used for drops?)
8 	pickupable (no effect) - disappears shortly after creation (used for ?)
11 	Blows Up few seconds of creation*
12 	Blows Up few seconds of creation (car explosion? timer is the burning flame?)
13 	Slowly descends in Z and eventually goes through the floor (parachute?)X
15 	Pickupable, no respawn
19 	Pickupable with no effect (Information icon?)
22 	Pickupable, no respawn

Float:X,Float:Y,Float:Z - координаты по осям X, Y и Z

эту команду вставлять нужно в функцию OnGameModeInit

0

262

Luxury eto ja vrodibi ponal no tam eti X Y Z ih gadatj nado ili mozna kakto 4erez samp_debug?

0

263

Xaoc написал(а):

Luxury eto ja vrodibi ponal no tam eti X Y Z ih gadatj nado ili mozna kakto 4erez samp_debug?

через samp_debug естественно
ставишь игрока в то место где точешь оружие поставить, пишешь /save
и в файле savedpositions.txt у тебя будут координаты этого места
у тебя там будет строчка вида:

Код:
AddPlayerClass(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);

вот из нее вытаскиваешь значения: Float:spawn_x, Float:spawn_y, Float:spawn_z

и эти координаты подставляешь в AddStaticPickup

0

264

а дайте пример скрипта чтоб фраги сохранялись а то я что то не соа=всем понял ....

0

265

помогите, как убрать перво начальные раставлиные по карте оружие ?

0

266

Ну, если есть *.pwn файл, то просто стереть там строчки
  AddStaticPickup(...,...,...,...,...);
А если только AMX, то не знаю

0

267

строчек с пиколами нету а оружие серовно стоит чё делать ?
наверно ктонить встречался сэтой проблемой я захожу в pawno нажимаю news и наченаю делать мод чтоб полностью сомаму неписать и время тратить вот кто сам с начала начинает писать есть такаефигня насчёт оружия ?

0

268

Hotelbi uznatj odnu ve6j mozna li sozdatj botov dlja SA-mp nu 6tob hotjab hodilbi daze ne strelalbi :)

0

269

Roter написал(а):

а дайте пример скрипта чтоб фраги сохранялись а то я что то не соа=всем понял ....

Код:
new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name));
new PS[256]; format(PS,sizeof(PS),"scores/%s.ini",udb_encode(name));
Код:
public OnPlayerDisconnect(playerid) {
new SC = GetPlayerScore(playerid);
if (!dini_Exists(PS)) {
dini_Create(PS);
}
else { 
dini_Set(PS,"score"SC);
}
return 1;
}
Код:
public OnPlayerConnect(playerid) {
if (!dini_Exists(PS)) {
SendClientMessage(playerid,COLOR_RED,"You have no saved scores!");
}
else {
new scoretoset = dini_Int(PF,"score")
SetPlayerScore(playerid,scoretoset);
SendClientMessage(playerid,COLOR_GREEN,"You scores have been restored!");
}
return 1;
}

попробуй это, правда я не проверял, сразу написал.
если будут ошибки сообщи, исправим.

0

270

Mauzer написал(а):

помогите, как убрать перво начальные раставлиные по карте оружие ?

открыть файл *.pwn с модом и удалить строчки типа:
AddStaticPickup(***,*****,*****,*****);

P.S. удалятся все вещи, которые можно подобрать

0


Вы здесь » LuxurY forum (scripting SA-MP) » Вопросы по созданию скриптов » Вопросы по созданию гейммодов