 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
[Архив] Помощь новичкам по скриптингу ! #2
| |
| heufix | Дата: Понедельник, 28.09.2009, 02:59 | Сообщение # 1 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 995
Награды: 22
Репутация: 231
Замечания: 80%
Статус: 
| Здравствуйте, хотите научиться скриптингу? пишите сюда, помoжем!(С)[PZ]KYZ[AIR]. Старая Тема уже достаточно полна ответов, это продолжение первой темы. Убедительная просьба к Новичкам: К большому сожалению, на этом форуме экстрасенсы не сидят,поэтому убедительно просим объяснять ваш вопрос/проблему ТАК,чтобы её поняли другие участники, не забывайте приписывать ваш код к своему сообщению(в тег pwn).
Радость
|
| |
|
|
| AMPER | Дата: Воскресенье, 04.10.2009, 15:22 | Сообщение # 91 |
|
Новенький
Группа:
Продвинутые
Сообщений: 18
Награды: 2
Город: Зима
Репутация: 5
Замечания: 0%
Статус: 
| У меня проблемка. Убрал в моде все стандартные пикапы DisableInteriorEnterExits(); , щас решил вернуть. Удалил эту строчку а пикапов нету всё равно
|
| |
|
|
| GhostTT | Дата: Воскресенье, 04.10.2009, 16:16 | Сообщение # 92 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 998
Награды: 17
Город: Челны
Репутация: 206
Замечания: 100%
Статус: 
| AMPER, создай их
Ололо, чем сложнее подпись - тем интересней*)
|
| |
|
|
| SanSay | Дата: Понедельник, 05.10.2009, 02:01 | Сообщение # 93 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| Quote (Shaman-dj) Получается если не прописать туда pltojoin*--; То при выходе из игры его уход не защитается? да Quote (Shaman-dj) Сделал так всё вписал и когда пишу /joinfigth 1 ничего не происходит Я думаю это из-за return 1; а его убираю команда работает но макс кол во игроков не щитаеца( опечатка вышла if (strcmp("/joinfigth 1", cmdtext, true, 12) == 0) замени на if (strcmp("/joinfigth1", cmdtext, true, 11) == 0)
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
|
| |
|
|
| ZirkiN | Дата: Понедельник, 05.10.2009, 22:10 | Сообщение # 94 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 326
Награды: 15
Город: Новосибирск
Репутация: 144
Замечания: 0%
Статус: 
| Quote (SanSay) опечатка вышла if (strcmp("/joinfigth 1", cmdtext, true, 12) == 0) замени на if (strcmp("/joinfigth1", cmdtext, true, 11) == 0) А разница? Quote (Shaman-dj) Народ выручайте.. if (strcmp("/joinfigth 1", cmdtext, true, 12) == 0) { if(pltojoin >=5) { SendClientMessage(playerid,0xFFFF00AA, "[#] Достигнут предел участников"); return 1; } SendClientMessage(playerid,0xFFFF00AA, "[#] Вы вошли в битву за Team 1"); SetPlayerPos(playerid,1514.8168,-1657.0625,13.5392); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid,33,500); SetPlayerHealth(playerid,20.0); pltojoin++; return 1; } Сделал так всё вписал и когда пишу /joinfigth 1 ничего не происходит Я думаю это из-за return 1; а его убираю команда работает но макс кол во игроков не щитаеца( У меня данная команда пашет :), поэтому следующие вопросы: где у тебя стоял/стоит этот самый ретён 1 :)? и еще ты, случаем, new pltojoin; в калбеки не прописываешь?, чтобы счетало макс кол-во ставь вне функций до первого использования Да, кстати, сделай проверку на то, чтобы один и тот же игрок не зашел несколько раз в первую команду, а потом еще несколько раз во вторую, иначе и этому игроку будет скучно одному там прыгать, и другие не поиграют
all:GMCC ~2% current:GMCC.C.L0 ~49%
Сообщение отредактировал ZirkiN - Понедельник, 05.10.2009, 22:17 |
| |
|
|
| toneysix | Дата: Вторник, 06.10.2009, 19:45 | Сообщение # 95 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| Такой вопрос, я создал смены спавна трех фракций, но почему то, только фракция медиков (IsMed) работает более менее правильно, она сменяет респаун игрока при команде /spawnchange, а армия (IsArm) и лицензеры (IsAnInstructor) не работают, при вводе команды пишет "Вы не имеете достпуного дома" уже всю голову обламал, есть подозрение опять же на return и {} , может где неправильно закрыты, так как в другом ошибки не может! Ведь должен он присваивать должен... Вот вырезки из кодов: Команда /spawnchange Code if(strcmp(cmd, "/spawnchange", true) == 0) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pPhousekey] != 255) { if(Spectate[playerid] != 255 && PlayerInfo[playerid][pAdmin] < 1) { SendClientMessage(playerid, COLOR_GREY, "***Нельзя сменить респ в режиме спектатора***"); return 1; } if(SpawnChange[playerid]) { SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться на общественном респе***"); SpawnChange[playerid] = 0; if(IsAnInstructor(playerid)) { if(SchoolSpawn[playerid] == 0) { SchoolSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться в летной школе***"); } else if(SchoolSpawn[playerid] == 1) { SchoolSpawn[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "***Вы теперь будете возраждатся в автошколе***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете возрождаться в доме***"); SpawnChange[playerid] = 1; } } else { if(IsAnInstructor(playerid)) { if(SchoolSpawn[playerid] == 0) { SchoolSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться в летной школе***"); } else if(SchoolSpawn[playerid] == 1) { SchoolSpawn[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться дома***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Вы не имеете доступного дома***"); } return 1; }
if(IsMed(playerid)) { if(MedSpawn[playerid] == 0) { MedSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться в мед.участке в городе LS***"); } else if(MedSpawn[playerid] == 0) { MedSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляться в главном МЧС участке в SF***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете возрождаться в доме***"); SpawnChange[playerid] = 1; } } else { if(IsMed(playerid)) { if(MedSpawn[playerid] == 0) { MedSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете появляться в мед.участке в городе LS***"); } else if(MedSpawn[playerid] == 1) { MedSpawn[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляться в главном МЧС участке в SF***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Вы не имеете доступного дома***"); } return 1; }
if(IsArm(playerid))//Армия спавны { if(ArmSpawn[playerid] == 0) { ArmSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляется на Авианосце***"); } else if(ArmSpawn[playerid] == 1) { ArmSpawn[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляться на Арее-51***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будете возрождаться в доме***"); SpawnChange[playerid] = 1; } } else { if(IsArm(playerid)) { if(ArmSpawn[playerid] == 0) { ArmSpawn[playerid] = 1; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляется на Авианосце***"); } else if(ArmSpawn[playerid] == 1) { ArmSpawn[playerid] = 0; SendClientMessage(playerid, COLOR_GREY, "***Теперь вы будите появляться на Арее-51***"); } } else { SendClientMessage(playerid, COLOR_GREY, "***Вы не имеете доступного дома***"); } return 1; } return 1; } Вырезки из кода: Code SpawnChange[playerid] = 1; forward IsAnInstructor(playerid); forward IsMed(playerid); forward IsArm(playerid); new SchoolSpawn[MAX_PLAYERS]; new ArmSpawn[MAX_PLAYERS]; new MedSpawn[MAX_PLAYERS]; SchoolSpawn[playerid] = 0; ArmSpawn[playerid] = 0; MedSpawn[playerid] = 0; Код spawnchange: Code else if(house !=255) { if(SpawnChange[playerid]) //If 1, then you get to your house, else spawn somewhere else { SetPlayerToTeamColor(playerid); SetPlayerInterior(playerid,HouseInfo[house][hInt]); [b]SetPlayerPos(playerid, HouseInfo[house][hExitx], HouseInfo[house][hExity],HouseInfo[house][hExitz]); // Warp the player PlayerInfo[playerid][pLocal] = house; PlayerInfo[playerid][pInt] = HouseInfo[house][hInt]; SetPlayerVirtualWorld(playerid,HouseInfo[house][hWorld]); return 1; } } Вырезка кода из спаунов фракций: Code if(IsAnInstructor(playerid)) //Школа инструкторов спавны 1 и 2 { if(SchoolSpawn[playerid] == 0) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, -2032.6810,-117.4816,1035.1719); SetPlayerFacingAngle(playerid, 275.1114); SetPlayerInterior(playerid,3); PlayerInfo[playerid][pInt] = 3; } else if(SchoolSpawn[playerid] == 1) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, 414.4144,2531.9580,19.1565); SetPlayerFacingAngle(playerid, 4.6505); SetPlayerInterior(playerid,0); PlayerInfo[playerid][pInt] = 0; } return 1; }
if(IsArm(playerid)) //Армия спавны 1 и 2 { if(ArmSpawn[playerid] == 0) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, 216.3291,1823.4265,6.4141); SetPlayerFacingAngle(playerid, 275.1114); SetPlayerInterior(playerid,0); PlayerInfo[playerid][pInt] = 0; } else if(ArmSpawn[playerid] == 1) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, -1334.2606,494.2492,11.1953); SetPlayerFacingAngle(playerid, 4.6505); SetPlayerInterior(playerid,0); PlayerInfo[playerid][pInt] = 0; } return 1; }
if(IsMed(playerid)) //МЧС спавны 1 и 2 { if(MedSpawn[playerid] == 0) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, -2654.9346,632.8690,14.4531); SetPlayerFacingAngle(playerid, 275.1114); SetPlayerInterior(playerid,0); PlayerInfo[playerid][pInt] = 0; } else if(MedSpawn[playerid] == 1) { SetPlayerToTeamColor(playerid); SetPlayerPos(playerid, -1334.2606,494.2492,11.1953); SetPlayerFacingAngle(playerid, 4.6505); SetPlayerInterior(playerid,0); PlayerInfo[playerid][pInt] = 0; } return 1; } Вот вроде всё, надеюсь на Вашу помощь.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Вторник, 06.10.2009, 19:50 |
| |
|
|
| Berry | Дата: Вторник, 06.10.2009, 21:14 | Сообщение # 96 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 124
Награды: 1
Город: Башкирия
Репутация: 7
Замечания: 0%
Статус: 
| Quote (ZirkiN) У меня данная команда пашет :), поэтому следующие вопросы: где у тебя стоял/стоит этот самый ретён 1 :)? и еще ты, случаем, new pltojoin; в калбеки не прописываешь?, чтобы счетало макс кол-во ставь вне функций до первого использования Да, кстати, сделай проверку на то, чтобы один и тот же игрок не зашел несколько раз в первую команду, а потом еще несколько раз во вторую, иначе и этому игроку будет скучно одному там прыгать, и другие не поиграют вот как у меня идёт: В самом верху: Code #include <a_samp> new pltojoin; new pltojoin2; В Code public OnPlayerCommandText(playerid, cmdtext[]){ Code if (strcmp("/joinfigth 1", cmdtext, true, 11) == 0) { if(pltojoin >=5) { SendClientMessage(playerid,0xFF0000AA, "[!] Достигнут предел участников"); } return 1; SendClientMessage(playerid,0xFFFF00AA, "[#] Вы вошли в битву за LLIapaH"); SetPlayerPos(playerid,772.0019,-582.3007,16.3359); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid,33,500); SetPlayerHealth(playerid,40.0); pltojoin++; return 1; } if (strcmp("/joinfigth 2", cmdtext, true, 11) == 0) { if(pltojoin2 >=5) { SendClientMessage(playerid,0xFF0000AA, "[!] Достигнут предел участников"); } return 1; SendClientMessage(playerid,0xFFFF00AA,"[#] Вы вошли в битву за 6yxaJIoBka"); SetPlayerPos(playerid,638.2492,-499.8335,16.3359); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid,33,500); SetPlayerHealth(playerid,40.0); pltojoin2++; return 1; } if (strcmp(cmdtext, "/exitfight",true, 12) == 0) { new PlayerName[30], str[256]; GetPlayerName(playerid, PlayerName, 30); format(str, 256, "[i] %s Покинул битву.", PlayerName); SendClientMessageToAll(0x33CCFFAA, str); SetPlayerHealth(playerid,0); SendClientMessage(playerid,0xFFFF00AA, "[!] Вы вышли из битвы"); pltojoin--; pltojoin2--; return 1; } } И проблема в том что когда Code if (strcmp("/joinfigth 1", cmdtext, true, 11) == 0) { if(pltojoin >=5) { SendClientMessage(playerid,0xFF0000AA, "[!] Достигнут предел участников"); } return 1;//вот это убераю у меня заходит на битву и при этом написано "[!] Достигнут предел участников".А когда ставлю этот ретурн и при в ходу на битву мне серв выдаёт типо такой команды не существует SendClientMessage(playerid,0xFFFF00AA, "[#] Вы вошли в битву за LLIapaH"); SetPlayerPos(playerid,772.0019,-582.3007,16.3359); ResetPlayerWeapons(playerid); GivePlayerWeapon(playerid,33,500); SetPlayerHealth(playerid,40.0); pltojoin++; return 1; } Аналагично и для второй команды
|
| |
|
|
| Awm | Дата: Вторник, 06.10.2009, 22:07 | Сообщение # 97 |
|
Группа:
I'm V.I.P.
Сообщений: 3235
Награды: 55
Город: Tallinn
Репутация: 1661
Замечания: 0%
Статус: 
| Shaman-dj, так конечно return 1; закрывает действие команды и всё. ставь SendClientMessage(playerid,0xFF0000AA, "[!] Достигнут предел участников"); return 1; }
"Life is hard... life is harder if you're stupid." - John Wayne
Сообщение отредактировал Awm - Вторник, 06.10.2009, 22:09 |
| |
|
|
| Berry | Дата: Среда, 07.10.2009, 14:00 | Сообщение # 98 |
|
Освоившийся
Группа:
Пользователи
Сообщений: 124
Награды: 1
Город: Башкирия
Репутация: 7
Замечания: 0%
Статус: 
| Awm, Спасиб всё работает Quote (ZirkiN) Да, кстати, сделай проверку на то, чтобы один и тот же игрок не зашел несколько раз в первую команду, а потом еще несколько раз во вторую, иначе и этому игроку будет скучно одному там прыгать, и другие не поиграют Подскажите пожалуста как её сделать?)))
|
| |
|
|
| Spiderxxx | Дата: Среда, 07.10.2009, 15:11 | Сообщение # 99 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 250
Награды: 6
Город: VL Sity
Репутация: 56
Замечания: 0%
Статус: 
| Как можно сделать чтоб при наборе команды /car вызывалась машина на место игрока и игрок был в ней за рулем?
Жизнь - огромный скрипт, написанный Богом на не известном мне языке программирования!
|
| |
|
|
| Morozzzko | Дата: Среда, 07.10.2009, 15:21 | Сообщение # 100 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2179
Награды: 40
Город: Moscow
Репутация: 590
Замечания: 0%
Статус: 
| Spiderxxx, strtok+AddStaticVehicle+PutPlayerInVehicle
Главный программист в Malefic Entertainment.
|
| |
|
|
| Spiderxxx | Дата: Среда, 07.10.2009, 15:34 | Сообщение # 101 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 250
Награды: 6
Город: VL Sity
Репутация: 56
Замечания: 0%
Статус: 
| Quote (Morozzzko) strtok+AddStaticVehicle+PutPlayerInVehicle А хоть примерно можешь показать как ето будет выглядеть? Т.к я понял чтоб добавить AddStaticVehicle на место игрока нужно перед этим записать его координаты в переменные по осям Y,X,Z, а только потом пихать игрока в машину..
Жизнь - огромный скрипт, написанный Богом на не известном мне языке программирования!
|
| |
|
|
| Awm | Дата: Среда, 07.10.2009, 16:29 | Сообщение # 102 |
|
Группа:
I'm V.I.P.
Сообщений: 3235
Награды: 55
Город: Tallinn
Репутация: 1661
Замечания: 0%
Статус: 
| Spiderxxx, new Float:X,Float:Y,Float:Z,Float:A; GetPlayerPos(playerid,X,Y,Z); AddStaticVehicle(идтачи,X,Y,Z,A,цвет,цвет); SetVehiclePos(идтачи,X,Y,Z,A); PutPlayerInVehicle(playerid,идтачи,0); ну думаю ты разберешься дальше сам. Добавлено (07.10.2009, 16:29) --------------------------------------------- strtok уже используй для ида тачи и так далее.
"Life is hard... life is harder if you're stupid." - John Wayne
Сообщение отредактировал Awm - Среда, 07.10.2009, 17:48 |
| |
|
|
| Morozzzko | Дата: Среда, 07.10.2009, 22:05 | Сообщение # 103 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2179
Награды: 40
Город: Moscow
Репутация: 590
Замечания: 0%
Статус: 
| Awm, [pwn]new Float:crd[4]; //нахера пихать 4 переменные если можно одним массивом? GetPlayerPos(playerid, crd[0], crd[1], crd[2]; GetPlayerFacingAngle(playerid, crd[3]); new car = AddStaticVehicle(model, crd[0], crd[1], crd[2], crd[3], -1, -1); //ид тачи надо записывать, детка. и нех её тпшить -.- PutPlayerInVehicle(playerid, car, 0); //переменные не для людей? [/pwn]
Главный программист в Malefic Entertainment.
Сообщение отредактировал Morozzzko - Среда, 07.10.2009, 22:06 |
| |
|
|
| ZirkiN | Дата: Четверг, 08.10.2009, 00:49 | Сообщение # 104 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 326
Награды: 15
Город: Новосибирск
Репутация: 144
Замечания: 0%
Статус: 
| Quote (Morozzzko) //нахера пихать 4 переменные если можно одним массивом? Массивы придуманы для обработки большого количества однотипных данных, а тут всего 4 переменные. И с чего ты взял, что массивы в данном случае - оптимально? Обращение по уже готовому имени переменной (для программы - указателю на адрес ячейки) - 1 операция - получение результата Обращение по массиву (для программы группа рядом стоящих указателей на адреса ячеек) - получение индекса (независимо, указан индекс как явное целое или как переменная), получение размера типа данных, умножение индекса на размер типа данных, переход по индексу, получение результата - 5 операций P.S. в некоторых компиляторах на этапе компиляции varmas[static_index] преобразуется в уже готовый адрес, что переносит замедление на этап компиляции, однако обращение по varmas[variable_index] все равно происходит по выше описанному.
all:GMCC ~2% current:GMCC.C.L0 ~49%
Сообщение отредактировал ZirkiN - Четверг, 08.10.2009, 01:58 |
| |
|
|
| stepmex | Дата: Четверг, 08.10.2009, 01:20 | Сообщение # 105 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| ZirkiN, с учетем того что даже замухрышный пентиум 4 делает за секунду триллиарды операций, ты щаз чущь сморозил
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
|
 |
|
 | |
| |
|