Ну плз очень прошу тебя
Вопросы по созданию гейммодов
Сообщений 241 страница 270 из 703
Поделиться2422007-05-08 09:03:45
Как сделать так, когда я сажусь в в определенную машину (напиример под ID 566), в чат выкидывался определенный текст?
Когда в машину (напиример под ID 567), то другой и т.д. ?
Короче нужен код отвечающий за ID машины. Типо того:
i
f(GetPlayerVehicleID(playerid) == 566)
SendClientMessage(playerid, COLOR_GREEN,"да да да да!");
Поделиться2432007-05-08 14:16:24
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)
Поделиться2442007-05-08 18:00:18
кароче:
Вот мод - скачать
Команды:
/color [coloid 1-8] - для игроков
/acolor [playerid] [colorid 1-100] - для админа
/xregister - регистрация
/xlogin - заход в аккаунт
/xlogout - выход из аккаунта
В конфиг сервера (server.cfg) добавь строчку: filterscripts xadmin
Все, что в папке копируй в сервер.
Я думаю ты разберешься.
Подробные команды смотри тут
Деньги сохраняются. Цвета меняются. Фраги показываются.
Поделиться2452007-05-08 18:04:15
ЛЮКСЮРИ МОД ЗАВТРА БУИТ ГОТОВ? Очень надо...все достали уже
епт как мастерская прям =)
сапоги будут завтра готовы?
Поделиться2462007-05-08 20:31:25
Можно ли перебрать всех игроков, находящихся на сервере с помощью такой конструкции:
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)
Поделиться2472007-05-08 20:55:05
Можно ли перебрать всех игроков, находящихся на сервере с помощью такой конструкции:
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 вопрос: ты изучаешь с++?
Поделиться2482007-05-08 22:21:30
и скажи мне пожалуйста для чего ты используешь эту функцию?
Для определения, находится ли игрок в квадрате с определенными координатами. Если да, то его команде прибавляется очко. Эта проверка у меня повешена на таймер. То есть с определенной периодичностью проверяется местоположение каждого игрока и его команды.
не забывай в 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)
Поделиться2492007-05-09 02:17:11
Вот это не работает:
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?
Поделиться2502007-05-09 02:23:16
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)
Поделиться2512007-05-09 02:24:27
Да я уже пробывал и 0 ставить и 1 не работает!
Поделиться2522007-05-09 12:13:26
В смысле ко всем онлайн игрокам?? То есть не только к тем, кто играет на данном сервере? Или как? Но в любом случае у меня сервер LAN и играют там обычно 2 игрока...
ну значит это будет относиться к двум игрокам
Поделиться2532007-05-09 12:55:24
ну значит это будет относиться к двум игрокам
С этим я уже разобрался, о чем написал в предыдущем посте. Но у меня появились новые вопросы, которые написаны там же. Если не трудно, скачайте вторую версию моего мода и протестируйте. В городке Форт Карсон должны прибавляться со временем очки той команде, чей игрок там находится. Помогите разобраться плиз!
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)
Поделиться2542007-05-09 17:26:23
Luxury я не знаю, как счетчик фрагов сделать,блин
Поделиться2552007-05-09 19:13:21
mcdog
счетчик фрагов?
можно так:
прописываешь глобальную переменную
new frags[MAX_PLAYERS];
потом в функции OnPlayerDeath
пишешь строчку
frags[killerid]++;
Поделиться2562007-05-10 01:58:15
А как сделать вот в точности такое:
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; и т.п.) ?
Поделиться2572007-05-10 12:44:05
Luxury я не знаю, как счетчик фрагов сделать,блин
зачем тебе счетчик фрагов? он и так есть score - это и есть те фраги
он уже есть, чтобы узнать кол-во очков у игрока достаточно написать
GetPlayerScore(playerid);
все команды описаны в павно
А как сделать вот в точности такое:
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
я не помню
Поделиться2582007-05-10 17:29:17
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?
Поделиться2592007-05-10 17:42:01
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 CompuPhase1 Error.
u mena takaja o6ibka v pawno 6to delatj?
скачай этот файл
==================================
http://www.dracoblue.net/Downloads/DUDB_2_2.zip
==================================
помести его в папку: */samp-server/pawno/includes/
и в начале скрипта напиши строку #include dudb
А ВООБЩЕ, КОГДА ЕСТЬ ОШИБКИ ВЫКЛАДЫВАЙ СКРИПТ
Поделиться2602007-05-10 20:13:13
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
Поделиться2612007-05-10 20:24:31
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
Поделиться2622007-05-10 20:27:07
Luxury eto ja vrodibi ponal no tam eti X Y Z ih gadatj nado ili mozna kakto 4erez samp_debug?
Поделиться2632007-05-10 20:36:58
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
Поделиться2642007-05-11 00:24:58
а дайте пример скрипта чтоб фраги сохранялись а то я что то не соа=всем понял ....
Поделиться2652007-05-11 00:34:00
помогите, как убрать перво начальные раставлиные по карте оружие ?
Поделиться2662007-05-11 01:46:49
Ну, если есть *.pwn файл, то просто стереть там строчки
AddStaticPickup(...,...,...,...,...);
А если только AMX, то не знаю
Поделиться2672007-05-11 07:59:24
строчек с пиколами нету а оружие серовно стоит чё делать ?
наверно ктонить встречался сэтой проблемой я захожу в pawno нажимаю news и наченаю делать мод чтоб полностью сомаму неписать и время тратить вот кто сам с начала начинает писать есть такаефигня насчёт оружия ?
Поделиться2682007-05-11 16:02:50
Hotelbi uznatj odnu ve6j mozna li sozdatj botov dlja SA-mp nu 6tob hotjab hodilbi daze ne strelalbi
Поделиться2692007-05-11 16:41:22
а дайте пример скрипта чтоб фраги сохранялись а то я что то не соа=всем понял ....
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; }
попробуй это, правда я не проверял, сразу написал.
если будут ошибки сообщи, исправим.
Поделиться2702007-05-11 16:43:29
помогите, как убрать перво начальные раставлиные по карте оружие ?
открыть файл *.pwn с модом и удалить строчки типа:
AddStaticPickup(***,*****,*****,*****);
P.S. удалятся все вещи, которые можно подобрать
Похожие темы
Общие вопросы | Вопросы по созданию скриптов | 2008-06-24 |
Помогите Ля Sm1l-у :)))) | Вопросы по созданию скриптов | 2007-06-06 |
телепортация | Вопросы по созданию скриптов | 2007-11-26 |
Новый класс! | Вопросы по созданию скриптов | 2007-05-14 |