Здравствуйте, хотите научиться скриптингу? пишите сюда, помoжем!(С)[PZ]KYZ[AIR]. Старая Тема уже достаточно полна ответов, это продолжение первой темы.
Убедительная просьба к Новичкам:
К большому сожалению, на этом форуме экстрасенсы не сидят,поэтому убедительно просим объяснять ваш вопрос/проблему ТАК,чтобы её поняли другие участники, не забывайте приписывать ваш код к своему сообщению(в тег pwn). Радость
Получается если не прописать туда pltojoin*--; То при выходе из игры его уход не защитается?
да
Quote (Shaman-dj)
Сделал так всё вписал и когда пишу /joinfigth 1 ничего не происходит Я думаю это из-за 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
Такой вопрос, я создал смены спавна трех фракций, но почему то, только фракция медиков (IsMed) работает более менее правильно, она сменяет респаун игрока при команде /spawnchange, а армия (IsArm) и лицензеры (IsAnInstructor) не работают, при вводе команды пишет "Вы не имеете достпуного дома" уже всю голову обламал, есть подозрение опять же на return и {} , может где неправильно закрыты, так как в другом ошибки не может! Ведь должен он присваивать должен...
У меня данная команда пашет :), поэтому следующие вопросы: где у тебя стоял/стоит этот самый ретён 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; }
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
Да, кстати, сделай проверку на то, чтобы один и тот же игрок не зашел несколько раз в первую команду, а потом еще несколько раз во вторую, иначе и этому игроку будет скучно одному там прыгать, и другие не поиграют
Как можно сделать чтоб при наборе команды /car вызывалась машина на место игрока и игрок был в ней за рулем? Жизнь - огромный скрипт, написанный Богом на не известном мне языке программирования!
А хоть примерно можешь показать как ето будет выглядеть? Т.к я понял чтоб добавить AddStaticVehicle на место игрока нужно перед этим записать его координаты в переменные по осям Y,X,Z, а только потом пихать игрока в машину..
Жизнь - огромный скрипт, написанный Богом на не известном мне языке программирования!
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
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
//нахера пихать 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
ZirkiN, с учетем того что даже замухрышный пентиум 4 делает за секунду триллиарды операций, ты щаз чущь сморозил И создал Бог женщину!.. Существо получилось злобное, но симпатичное...