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

 



 
          





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





Последние Файлы 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
Модератор форума: AXE, Weddew  
[Архив] Помощь новичкам по скриптингу ! #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, создай их crazy


Ололо, чем сложнее подпись - тем интересней*)
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 делает за секунду триллиарды операций, ты щаз чущь сморозил mda


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Поиск:





 


 


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